@xano/sdk 1.0.6 → 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 (215) hide show
  1. package/CHANGELOG.md +20 -5
  2. package/README.md +30 -4
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-67QIX45H.js → agent-file-refresh-DGGSRPJ4.js} +12 -12
  5. package/dist/agent-skill-command-37DFYS7Q.js +414 -0
  6. package/dist/{answer-shape-UCDUKPAN.js → answer-shape-RBFDCNZ7.js} +4 -4
  7. package/dist/{backend-dir-3LIL6SCT.js → backend-dir-KDD43X7K.js} +14 -14
  8. package/dist/{backend-slot-JREP27UD.js → backend-slot-TBOVZXDE.js} +3 -3
  9. package/dist/bin.js +48 -47
  10. package/dist/{branch-2IPHOAYS.js → branch-7PIKNUD7.js} +11 -10
  11. package/dist/{branch-commands-KTKAXBAN.js → branch-commands-EGY7ZEZE.js} +23 -22
  12. package/dist/bundle.js +4 -4
  13. package/dist/{chunk-GWTFI3GA.js → chunk-26LHXLD3.js} +2 -2
  14. package/dist/{chunk-ENMBEXOP.js → chunk-2ACWDSAQ.js} +3 -3
  15. package/dist/{chunk-GOLFAEUV.js → chunk-2SD4LA22.js} +2 -2
  16. package/dist/{chunk-GZHLCUZ6.js → chunk-2XWVZRL6.js} +7 -7
  17. package/dist/{chunk-IF4PEGVD.js → chunk-2YER2J47.js} +11 -11
  18. package/dist/{chunk-N5I37JFB.js → chunk-3FRGNBOC.js} +2 -2
  19. package/dist/{chunk-YKP4ZKVO.js → chunk-46PATL23.js} +3 -3
  20. package/dist/{chunk-QJM5XZ4K.js → chunk-47XT6WQL.js} +8 -8
  21. package/dist/{chunk-AWQ7BQTQ.js → chunk-4GPIOIAC.js} +6 -1
  22. package/dist/{chunk-ND43ZOS3.js → chunk-567KK6XF.js} +7 -7
  23. package/dist/{chunk-EQFYOOO6.js → chunk-5GIOCDUM.js} +829 -893
  24. package/dist/{chunk-TTEIDD5Q.js → chunk-5SCPRXFB.js} +4 -4
  25. package/dist/{chunk-LAOMN6QQ.js → chunk-5ZG7V2VW.js} +3 -3
  26. package/dist/{chunk-JXVJGF3Y.js → chunk-7M6JP3FS.js} +2 -2
  27. package/dist/{chunk-JFBRXRJD.js → chunk-7XXWKTCE.js} +36 -36
  28. package/dist/{chunk-PL7AIAWS.js → chunk-A4R5CAY4.js} +4 -111
  29. package/dist/{chunk-SPKA2LV6.js → chunk-AKERAUNH.js} +4 -4
  30. package/dist/{chunk-26MOFAJT.js → chunk-ARWMVNDJ.js} +6 -3
  31. package/dist/{chunk-I3VHW6XM.js → chunk-B2URJBC4.js} +18 -18
  32. package/dist/{chunk-A7MRZ4GF.js → chunk-B3P25SDP.js} +4 -4
  33. package/dist/chunk-BRANWM4U.js +853 -0
  34. package/dist/{chunk-CHINR7WD.js → chunk-BSVQEKHO.js} +4 -4
  35. package/dist/{chunk-UD2Z7K6W.js → chunk-BZ6WTG3E.js} +4 -4
  36. package/dist/{chunk-D7BUMOKU.js → chunk-CH23ONYG.js} +76 -5
  37. package/dist/{chunk-763M6LX3.js → chunk-CNZASQPL.js} +2 -2
  38. package/dist/{chunk-TECTL2NU.js → chunk-CPN6WSBH.js} +4 -4
  39. package/dist/{chunk-5YQV35C2.js → chunk-CT3J5JRZ.js} +7 -7
  40. package/dist/{chunk-YYC2DZMG.js → chunk-D5OZRJ3T.js} +6 -6
  41. package/dist/{chunk-XFBGXB7X.js → chunk-DG3APBUJ.js} +149 -97
  42. package/dist/chunk-DIWF7L33.js +995 -0
  43. package/dist/{chunk-RIN4YY34.js → chunk-DXZTL7NA.js} +95 -58
  44. package/dist/{chunk-PMMHSX4H.js → chunk-EF4MHLEW.js} +4 -4
  45. package/dist/{chunk-ZDP6GDAB.js → chunk-ELPQTDW6.js} +101 -93
  46. package/dist/{chunk-Q22BMRPF.js → chunk-EPFDY5JU.js} +2 -2
  47. package/dist/{chunk-ZJSTUD6D.js → chunk-EU32BC5B.js} +8 -8
  48. package/dist/{chunk-3BBIDW3Y.js → chunk-FDTET7FZ.js} +3 -3
  49. package/dist/{chunk-YYLUBYXM.js → chunk-FENA7K7C.js} +3 -3
  50. package/dist/{chunk-QZEAANWP.js → chunk-GHMLRFRX.js} +8 -8
  51. package/dist/{chunk-MBDFH7XB.js → chunk-H2K4GFUS.js} +3 -3
  52. package/dist/{chunk-U35MTOXQ.js → chunk-HTQWAQRW.js} +3 -3
  53. package/dist/{chunk-ROY4YAEQ.js → chunk-HU7F56VF.js} +22 -2
  54. package/dist/{chunk-2FLIJGBZ.js → chunk-HZ6ADG3O.js} +47 -8
  55. package/dist/{chunk-GLY552SI.js → chunk-I6XRUU6U.js} +54 -54
  56. package/dist/{chunk-KPFS3RGM.js → chunk-IPNN2KRW.js} +3 -3
  57. package/dist/{chunk-LD6ARK3A.js → chunk-JOOKM7AH.js} +2 -2
  58. package/dist/{chunk-6X6BJN6Y.js → chunk-JOWY6HFL.js} +3 -3
  59. package/dist/{chunk-UIVMR7UK.js → chunk-JX6N73H3.js} +2 -2
  60. package/dist/{chunk-JRVQ7M7W.js → chunk-L472YIGG.js} +8 -8
  61. package/dist/{chunk-YR2I5HGE.js → chunk-L6HZ67P6.js} +2 -2
  62. package/dist/chunk-LCOCRJ4K.js +116 -0
  63. package/dist/{chunk-3EDSPMXN.js → chunk-LJM5CIY4.js} +5 -1
  64. package/dist/{chunk-NPODGBVJ.js → chunk-M2C54ZBC.js} +4 -4
  65. package/dist/{chunk-QXYMDARD.js → chunk-M3NEK3LT.js} +4 -4
  66. package/dist/{chunk-BL3AZ3AP.js → chunk-MBL7CXJ7.js} +2 -2
  67. package/dist/{chunk-7GAIJW62.js → chunk-MYZRMSPM.js} +2 -2
  68. package/dist/{chunk-GHQ4BVI4.js → chunk-N3YFCFCO.js} +13 -13
  69. package/dist/{chunk-M5CSVB23.js → chunk-NDJAKSE7.js} +11 -8
  70. package/dist/{chunk-Z4ZGTCCD.js → chunk-NV37YGOV.js} +6 -6
  71. package/dist/{chunk-GW5RHGOB.js → chunk-O56DQKPL.js} +9 -9
  72. package/dist/{chunk-U6MTGB46.js → chunk-ORGNLQN6.js} +5 -5
  73. package/dist/{chunk-I3H3HCPY.js → chunk-PEIBGH2V.js} +33 -30
  74. package/dist/{chunk-5TVFLG3C.js → chunk-PEX4QZVI.js} +2 -2
  75. package/dist/{chunk-HCG7NDIL.js → chunk-PV25BDCH.js} +5 -5
  76. package/dist/{chunk-VDHA5SSQ.js → chunk-PY722CHR.js} +2 -2
  77. package/dist/{chunk-VW4CWVYX.js → chunk-QGIZLFAS.js} +4 -4
  78. package/dist/{chunk-SSITMX7I.js → chunk-QRQ54LUI.js} +16 -14
  79. package/dist/{chunk-OIKLDDYC.js → chunk-RBU2YX22.js} +3 -3
  80. package/dist/{chunk-EADVVTDK.js → chunk-RRMH7WMY.js} +7 -7
  81. package/dist/{chunk-WZHLMU6T.js → chunk-S46ODQRA.js} +2 -2
  82. package/dist/{chunk-SPITRSOF.js → chunk-SDGV76HF.js} +2 -2
  83. package/dist/{chunk-ATJ2W7DC.js → chunk-SGK3PTTM.js} +281 -121
  84. package/dist/{chunk-3II44CUJ.js → chunk-TWVUYS63.js} +24 -24
  85. package/dist/{chunk-2WBH5HUY.js → chunk-U5M7T6CI.js} +7 -7
  86. package/dist/{chunk-6X3MY2JP.js → chunk-UYFUIHH3.js} +2 -2
  87. package/dist/{chunk-IMELQ2I6.js → chunk-V7MBRUK6.js} +3 -3
  88. package/dist/{chunk-NDWVJ2QZ.js → chunk-VAGSKUWC.js} +3 -3
  89. package/dist/{chunk-WBH4KJWM.js → chunk-VIJ5D3RC.js} +3 -3
  90. package/dist/{chunk-ITC2R2OT.js → chunk-VNDR2T35.js} +7 -7
  91. package/dist/{chunk-IXFJORNH.js → chunk-WNCW2RNB.js} +4 -4
  92. package/dist/{chunk-BTVUYHWV.js → chunk-WUEPP5HD.js} +4 -4
  93. package/dist/{local-engine-command-RYLGMQ2O.js → chunk-YCUDOF6Q.js} +22 -77
  94. package/dist/{chunk-YGLMRH5U.js → chunk-YH2JVJAO.js} +12 -12
  95. package/dist/{chunk-PFBXSVZF.js → chunk-ZGLNHA7T.js} +7 -7
  96. package/dist/{chunk-CCU5CCRX.js → chunk-ZJOAWRED.js} +8 -8
  97. package/dist/{chunk-FU3VCE5A.js → chunk-ZXRDD3Q2.js} +13 -9
  98. package/dist/cli.d.ts +25 -4
  99. package/dist/cli.js +45 -42
  100. package/dist/{codegen-command-R5IASBFC.js → codegen-command-T7TC7PQO.js} +58 -57
  101. package/dist/{commands-H7CPMMHH.js → commands-JDENTDJS.js} +2 -2
  102. package/dist/{completion-W5ZAI6TN.js → completion-YFD5OVJW.js} +8 -4
  103. package/dist/{config-MZ5KG4EP.js → config-YJFUTRJW.js} +7 -7
  104. package/dist/{deploy-command-34T2LKQ5.js → deploy-command-OEVEE6UG.js} +50 -49
  105. package/dist/{deploy-source-YLQ7WMYR.js → deploy-source-HYVZEYXV.js} +33 -32
  106. package/dist/{dev-env-sync-TMJTNU3U.js → dev-env-sync-EFDCJ6KU.js} +48 -47
  107. package/dist/{display-name-hint-ZJGFNJKQ.js → display-name-hint-SW3GB3V7.js} +13 -12
  108. package/dist/{emit-D125xxty.d.ts → emit-Dov_92kn.d.ts} +1 -1
  109. package/dist/{env-example-refresh-CQP3ZMKM.js → env-example-refresh-WNSOH534.js} +59 -58
  110. package/dist/{env-pull-command-UTG6IC2K.js → env-pull-command-UYEXMQ3P.js} +43 -42
  111. package/dist/{env-target-FZROWYFS.js → env-target-JBSLBKNX.js} +12 -11
  112. package/dist/{env-var-command-VYDBQJJW.js → env-var-command-BJNRAXNV.js} +49 -48
  113. package/dist/{ephemeral-BIE6FMJV.js → ephemeral-CEOGMIEA.js} +10 -9
  114. package/dist/{ephemeral-command-OZ26RGXF.js → ephemeral-command-IPSGBCS5.js} +61 -60
  115. package/dist/{ephemeral-state-SNZOX2YK.js → ephemeral-state-MTBASPRS.js} +10 -9
  116. package/dist/{generate-command-4HR7MR36.js → generate-command-XQXODBS6.js} +73 -71
  117. package/dist/{gitignore-EWQBXNX2.js → gitignore-RUVCIZO4.js} +18 -18
  118. package/dist/{impersonate-command-WC7OGKUM.js → impersonate-command-MA27O7S5.js} +41 -40
  119. package/dist/{import-7Z4GCCPO.js → import-XKRFHABE.js} +4 -4
  120. package/dist/index.d.ts +4 -4
  121. package/dist/{init-command-HAO3WXH3.js → init-command-6RDTCMAB.js} +61 -46
  122. package/dist/{init-modules-NSKD4ASY.js → init-modules-DHTBOCQT.js} +7 -7
  123. package/dist/{init-web-MKFFOQUU.js → init-web-ELBXSXDL.js} +2 -2
  124. package/dist/internal.d.ts +4 -4
  125. package/dist/internal.js +1 -1
  126. package/dist/{keep-data-merge-QR2TMKEO.js → keep-data-merge-TDJOIAVT.js} +23 -23
  127. package/dist/{lambda-config-reconcile-7FJXXV6V.js → lambda-config-reconcile-47X5C2E4.js} +6 -5
  128. package/dist/{landing-record-MWXFIRCP.js → landing-record-TPPYFQAS.js} +21 -21
  129. package/dist/{local-engine-choice-VD5LNXJU.js → local-engine-choice-S6VHPJRU.js} +36 -35
  130. package/dist/local-engine-command-4EZCGZ6M.js +85 -0
  131. package/dist/{local-engine-config-W3KB7RWM.js → local-engine-config-2EBL3QKA.js} +3 -2
  132. package/dist/{local-engine-deploy-6O7NKZCA.js → local-engine-deploy-FOPNWU7X.js} +17 -15
  133. package/dist/local-engine-lookup-GM3E3NPP.js +43 -0
  134. package/dist/local-engine-mcp-bridge-QKZHUGW3.js +423 -0
  135. package/dist/local-engine-mcp-command-BFQVLXZC.js +181 -0
  136. package/dist/{local-engine-process-ZLLZEIRF.js → local-engine-process-XUQPQENQ.js} +11 -8
  137. package/dist/{local-engine-state-OCW5YDD7.js → local-engine-state-JQPKGB65.js} +4 -3
  138. package/dist/{local-engine-update-check-LVX4HBBI.js → local-engine-update-check-S7UF6ZF5.js} +6 -5
  139. package/dist/{lock-commands-X2OECR4R.js → lock-commands-HJ6Y5QVS.js} +51 -50
  140. package/dist/{login-command-RLLKD565.js → login-command-JO55NZAS.js} +32 -32
  141. package/dist/{logout-command-XDMSXCDO.js → logout-command-MPRIRSJA.js} +15 -14
  142. package/dist/{marketplace-command-2NHHY2X3.js → marketplace-command-BM6G257N.js} +33 -33
  143. package/dist/{marketplace-resolve-OTZYT4FG.js → marketplace-resolve-AWH3RG57.js} +5 -5
  144. package/dist/{meta-client-TMHVBZFY.js → meta-client-AOSWODQQ.js} +13 -12
  145. package/dist/{module-manifest-FNMW23IX.js → module-manifest-GXI46PEF.js} +3 -3
  146. package/dist/node.d.ts +4 -4
  147. package/dist/node.js +50 -49
  148. package/dist/{operation-outcome-RN62735X.js → operation-outcome-4UKPXTNC.js} +25 -23
  149. package/dist/{output-target-MOLCTPBP.js → output-target-RAZ4KN5J.js} +19 -19
  150. package/dist/{plan-disclosure-CY7AF6KP.js → plan-disclosure-JR52DWXN.js} +13 -12
  151. package/dist/{plugin-contributions-WR26U7NT.js → plugin-contributions-E6XHLQWK.js} +5 -5
  152. package/dist/{plugin-prompt-ZUYQQIX4.js → plugin-prompt-IODX5EU6.js} +4 -4
  153. package/dist/{plugin-questions-HAZOQ67R.js → plugin-questions-AAAJ7POP.js} +3 -3
  154. package/dist/{preflight-command-OHJXYND3.js → preflight-command-7GKJBWOQ.js} +52 -51
  155. package/dist/{profile-command-6JWT2BTL.js → profile-command-CM6J7E2M.js} +33 -33
  156. package/dist/{profile-pointer-PDA5XBIB.js → profile-pointer-KTYXL6FU.js} +4 -3
  157. package/dist/{project-dependency-GZWWGWEW.js → project-dependency-OQ5575QQ.js} +6 -6
  158. package/dist/{project-sdk-3W72H5QO.js → project-sdk-2ESHHZVL.js} +3 -3
  159. package/dist/{promote-command-UYAMUXKB.js → promote-command-BDRPG6UU.js} +68 -67
  160. package/dist/{prompt-U37K5RPQ.js → prompt-MQPGU4ZI.js} +3 -3
  161. package/dist/{publish-command-BUS27HGB.js → publish-command-IEMYZ7LF.js} +55 -54
  162. package/dist/{pull-command-ZGUNP27P.js → pull-command-S5E2ABZ4.js} +61 -60
  163. package/dist/{pull-superseded-EZBGYRZF.js → pull-superseded-E34BZVLH.js} +3 -3
  164. package/dist/{release-command-BQ6OHS3P.js → release-command-7F5TBKO2.js} +58 -57
  165. package/dist/{release-ns-command-ATGVBVIU.js → release-ns-command-EK2ZQ4CC.js} +84 -83
  166. package/dist/{retry-command-QJ57WVW7.js → retry-command-GL5HCMVB.js} +9 -8
  167. package/dist/{routes-manifest-file-UALYSZLY.js → routes-manifest-file-LCIKPDAG.js} +5 -5
  168. package/dist/scaffold.js +4 -4
  169. package/dist/secrets-IV4N5HYI.js +20 -0
  170. package/dist/{secrets-file-LMS7KX3E.js → secrets-file-LXREYU3M.js} +18 -18
  171. package/dist/{secrets-fill-command-QNBDGCGM.js → secrets-fill-command-QHZS3KWM.js} +49 -48
  172. package/dist/{seed-SZ6OS5DQ.js → seed-FRKMDN2Z.js} +4 -4
  173. package/dist/{source-resolve-MKLNYFWG.js → source-resolve-BBHYTOXI.js} +23 -21
  174. package/dist/{static-host-ONEHA4LI.js → static-host-7LC7OZR4.js} +4 -4
  175. package/dist/{status-command-XKIFKBGM.js → status-command-TY253MJT.js} +52 -51
  176. package/dist/{store-Bg4Na6Sm.d.ts → store-Boba9OOh.d.ts} +1 -1
  177. package/dist/{store-X6ZH7EC3.js → store-VJ3OS6VO.js} +7 -6
  178. package/dist/{sync-contributions-HNVHDIQW.js → sync-contributions-63542VE4.js} +9 -9
  179. package/dist/{sync-record-PRXHLK4S.js → sync-record-RGHK7EAL.js} +13 -12
  180. package/dist/{table-DC36QA4Y.js → table-OAYGFGEN.js} +5 -5
  181. package/dist/{tables-command-UQLKTELN.js → tables-command-PZIVDAH3.js} +38 -37
  182. package/dist/{tenant-EKNQGG5A.js → tenant-Y3II4VY3.js} +11 -10
  183. package/dist/{tenant-command-2LWP2MPB.js → tenant-command-G6XON7CF.js} +86 -85
  184. package/dist/{test-command-IU5MBBXY.js → test-command-3FZOX7O3.js} +41 -40
  185. package/dist/{tests-RG2Y5EQ4.js → tests-KF6N6BZ7.js} +5 -5
  186. package/dist/{token-7AWSJLKO.js → token-DJJUW5HY.js} +11 -10
  187. package/dist/{toolchain-hooks-4ZMQLBPQ.js → toolchain-hooks-7PWCFLSU.js} +4 -4
  188. package/dist/{toolchain-modules-VU7SURVJ.js → toolchain-modules-OTNSKK52.js} +4 -4
  189. package/dist/{toolchain-peers-CIDNEEQV.js → toolchain-peers-KQ7TQ2AR.js} +7 -7
  190. package/dist/{tracked-backend-4BHSV7NC.js → tracked-backend-AJCGTO5Y.js} +36 -35
  191. package/dist/{update-check-A7FXIINW.js → update-check-4E5L6GAW.js} +46 -45
  192. package/dist/{upgrade-command-C5KBITFI.js → upgrade-command-BXMSQN4C.js} +52 -49
  193. package/dist/{whoami-command-7WQII2H4.js → whoami-command-NLCCIEUM.js} +14 -13
  194. package/dist/{workspace-Z46PUZNI.js → workspace-PNMJOXE4.js} +4 -4
  195. package/dist/{workspace-binding-JE6YNDZJ.js → workspace-binding-J5GWDFRI.js} +13 -12
  196. package/dist/{workspace-command-FC4IMLAE.js → workspace-command-MHIIY352.js} +79 -78
  197. package/dist/{workspace-env-N4ZPFT6A.js → workspace-env-LLRWCHSA.js} +15 -15
  198. package/dist/{workspace-export-3A5BZTPS.js → workspace-export-BIKAYHWJ.js} +4 -4
  199. package/dist/{writable-D7KCZI5N.js → writable-UOTO4WWC.js} +3 -3
  200. package/dist/{xanosdk-import-P2A2KSXM.js → xanosdk-import-S7A3CVBN.js} +5 -5
  201. package/dist/{xanosdk-project-6AGMW2SL.js → xanosdk-project-J4VCFRHP.js} +15 -15
  202. package/guides/README.md +2 -2
  203. package/guides/cli.md +69 -0
  204. package/guides/codegen.md +23 -5
  205. package/guides/codes.md +1 -0
  206. package/guides/coverage.md +5 -0
  207. package/guides/deploying.md +28 -0
  208. package/guides/scaffold.md +61 -10
  209. package/llms-full.txt +1 -1
  210. package/llms.txt +1 -1
  211. package/manifest.json +63 -5
  212. package/package.json +5 -2
  213. package/skills/xano-backend/SKILL.md +119 -0
  214. package/dist/chunk-LL7SGTRC.js +0 -663
  215. package/dist/chunk-M6ZFSTIZ.js +0 -630
@@ -1,125 +1,126 @@
1
1
  import {
2
2
  printMicroserviceSection,
3
3
  readMicroservices
4
- } from "./chunk-QXYMDARD.js";
4
+ } from "./chunk-M3NEK3LT.js";
5
5
  import {
6
6
  fetchWorkspaceBundle
7
- } from "./chunk-RIN4YY34.js";
8
- import "./chunk-ATJ2W7DC.js";
9
- import "./chunk-A7MRZ4GF.js";
10
- import "./chunk-KPFS3RGM.js";
7
+ } from "./chunk-DXZTL7NA.js";
8
+ import "./chunk-SGK3PTTM.js";
9
+ import "./chunk-B3P25SDP.js";
10
+ import "./chunk-IPNN2KRW.js";
11
11
  import "./chunk-LBJA7IEM.js";
12
+ import "./chunk-JI3BLXWQ.js";
13
+ import "./chunk-NV37YGOV.js";
12
14
  import {
13
15
  confirm
14
- } from "./chunk-JXVJGF3Y.js";
16
+ } from "./chunk-7M6JP3FS.js";
15
17
  import "./chunk-FNLTFOUD.js";
16
18
  import {
17
19
  listTables
18
- } from "./chunk-MBDFH7XB.js";
19
- import "./chunk-NDWVJ2QZ.js";
20
- import "./chunk-JI3BLXWQ.js";
21
- import "./chunk-Z4ZGTCCD.js";
22
- import "./chunk-GOLFAEUV.js";
20
+ } from "./chunk-H2K4GFUS.js";
21
+ import "./chunk-VAGSKUWC.js";
22
+ import "./chunk-2SD4LA22.js";
23
23
  import "./chunk-3DRXWLJ5.js";
24
24
  import "./chunk-X4DVXBFY.js";
25
25
  import {
26
26
  listBranches
27
- } from "./chunk-NPODGBVJ.js";
27
+ } from "./chunk-M2C54ZBC.js";
28
28
  import {
29
29
  reachableWorkspaces,
30
30
  refuseUnreachableWorkspace,
31
31
  unreachableWorkspaceMessage
32
- } from "./chunk-2WBH5HUY.js";
33
- import "./chunk-QZEAANWP.js";
34
- import "./chunk-LD6ARK3A.js";
32
+ } from "./chunk-U5M7T6CI.js";
33
+ import "./chunk-GHMLRFRX.js";
34
+ import "./chunk-JOOKM7AH.js";
35
35
  import "./chunk-2TFRR6JV.js";
36
36
  import {
37
37
  resolveOutputTarget,
38
38
  secretsPhrase,
39
39
  writeExportFile
40
- } from "./chunk-ENMBEXOP.js";
40
+ } from "./chunk-2ACWDSAQ.js";
41
41
  import {
42
42
  secretsCarriedBy
43
43
  } from "./chunk-IYXL5NYU.js";
44
- import "./chunk-UD2Z7K6W.js";
44
+ import "./chunk-BZ6WTG3E.js";
45
45
  import {
46
46
  assertBundleFile,
47
47
  assertBundleInput,
48
48
  assertEntryFile,
49
49
  assertValueFiles,
50
50
  loadBundleText
51
- } from "./chunk-XFBGXB7X.js";
52
- import "./chunk-WBH4KJWM.js";
53
- import "./chunk-HCG7NDIL.js";
54
- import "./chunk-I3VHW6XM.js";
55
- import "./chunk-WZHLMU6T.js";
56
- import "./chunk-CCU5CCRX.js";
57
- import "./chunk-3II44CUJ.js";
58
- import "./chunk-GWTFI3GA.js";
59
- import "./chunk-BL3AZ3AP.js";
51
+ } from "./chunk-DG3APBUJ.js";
52
+ import "./chunk-VIJ5D3RC.js";
53
+ import "./chunk-PV25BDCH.js";
54
+ import "./chunk-B2URJBC4.js";
55
+ import "./chunk-S46ODQRA.js";
56
+ import "./chunk-TWVUYS63.js";
57
+ import "./chunk-26LHXLD3.js";
58
+ import "./chunk-ZJOAWRED.js";
59
+ import "./chunk-MBL7CXJ7.js";
60
60
  import {
61
61
  getAccessToken
62
- } from "./chunk-YGLMRH5U.js";
63
- import "./chunk-ITC2R2OT.js";
64
- import "./chunk-IXFJORNH.js";
65
- import "./chunk-VW4CWVYX.js";
62
+ } from "./chunk-YH2JVJAO.js";
63
+ import "./chunk-VNDR2T35.js";
64
+ import "./chunk-EPFDY5JU.js";
65
+ import "./chunk-A4R5CAY4.js";
66
+ import "./chunk-LCOCRJ4K.js";
67
+ import "./chunk-WNCW2RNB.js";
68
+ import "./chunk-QGIZLFAS.js";
66
69
  import "./chunk-2MNLRIOX.js";
67
- import "./chunk-Q22BMRPF.js";
68
- import "./chunk-PL7AIAWS.js";
69
- import "./chunk-FU3VCE5A.js";
70
- import "./chunk-VDHA5SSQ.js";
71
- import "./chunk-PFBXSVZF.js";
72
- import "./chunk-U6MTGB46.js";
70
+ import "./chunk-AKERAUNH.js";
71
+ import "./chunk-CJDPSCMX.js";
72
+ import "./chunk-ZXRDD3Q2.js";
73
+ import "./chunk-PY722CHR.js";
74
+ import "./chunk-ZGLNHA7T.js";
75
+ import "./chunk-ORGNLQN6.js";
73
76
  import "./chunk-ZYJP6BOO.js";
74
77
  import "./chunk-QO6BVGS5.js";
75
- import "./chunk-5TVFLG3C.js";
76
- import "./chunk-SPKA2LV6.js";
77
- import "./chunk-7GAIJW62.js";
78
+ import "./chunk-PEX4QZVI.js";
79
+ import "./chunk-MYZRMSPM.js";
78
80
  import {
79
81
  yesRerun
80
- } from "./chunk-6X3MY2JP.js";
82
+ } from "./chunk-UYFUIHH3.js";
81
83
  import "./chunk-622HUCZT.js";
82
84
  import {
83
85
  contextFlags
84
- } from "./chunk-N5I37JFB.js";
85
- import "./chunk-TTEIDD5Q.js";
86
- import "./chunk-LL7SGTRC.js";
87
- import "./chunk-YYC2DZMG.js";
88
- import "./chunk-PMMHSX4H.js";
86
+ } from "./chunk-3FRGNBOC.js";
87
+ import "./chunk-NDJAKSE7.js";
88
+ import "./chunk-EUUUMY7J.js";
89
+ import "./chunk-5SCPRXFB.js";
90
+ import "./chunk-DIWF7L33.js";
91
+ import "./chunk-D5OZRJ3T.js";
92
+ import "./chunk-EF4MHLEW.js";
89
93
  import "./chunk-ZFDZKNGG.js";
90
94
  import "./chunk-FWD7AL6N.js";
91
- import "./chunk-QJM5XZ4K.js";
95
+ import "./chunk-47XT6WQL.js";
92
96
  import "./chunk-DXUICABI.js";
97
+ import {
98
+ bindingFor,
99
+ fetchOrExplain,
100
+ httpFailure,
101
+ parseJsonAnswer
102
+ } from "./chunk-L6HZ67P6.js";
93
103
  import {
94
104
  describeWrite
95
105
  } from "./chunk-4KHEMC32.js";
96
- import "./chunk-3BBIDW3Y.js";
97
- import "./chunk-ROY4YAEQ.js";
98
- import "./chunk-CJDPSCMX.js";
106
+ import "./chunk-FDTET7FZ.js";
99
107
  import "./chunk-MFWF2NZJ.js";
100
108
  import "./chunk-DNBP4GJN.js";
101
- import "./chunk-763M6LX3.js";
109
+ import "./chunk-CNZASQPL.js";
102
110
  import "./chunk-WAVNUTMT.js";
103
- import "./chunk-M5CSVB23.js";
104
- import {
105
- writeData
106
- } from "./chunk-AWQ7BQTQ.js";
107
- import "./chunk-EUUUMY7J.js";
108
- import {
109
- bindingFor,
110
- fetchOrExplain,
111
- httpFailure,
112
- parseJsonAnswer
113
- } from "./chunk-YR2I5HGE.js";
114
- import "./chunk-26MOFAJT.js";
111
+ import "./chunk-ARWMVNDJ.js";
115
112
  import "./chunk-LLNZGEFK.js";
113
+ import "./chunk-HU7F56VF.js";
116
114
  import "./chunk-MF4W6FHU.js";
117
115
  import "./chunk-X2NL4KUO.js";
116
+ import {
117
+ writeData
118
+ } from "./chunk-4GPIOIAC.js";
118
119
  import "./chunk-SKEG3V2V.js";
119
120
  import "./chunk-E763QI3G.js";
120
- import "./chunk-EQFYOOO6.js";
121
- import "./chunk-M6ZFSTIZ.js";
122
- import "./chunk-3EDSPMXN.js";
121
+ import "./chunk-BRANWM4U.js";
122
+ import "./chunk-5GIOCDUM.js";
123
+ import "./chunk-LJM5CIY4.js";
123
124
  import "./chunk-7THDHQ4R.js";
124
125
  import "./chunk-3YW23UFH.js";
125
126
  import "./chunk-7REDHC4N.js";
@@ -142,7 +143,7 @@ import {
142
143
  warn,
143
144
  writeJson,
144
145
  writeTargetPayload
145
- } from "./chunk-D7BUMOKU.js";
146
+ } from "./chunk-CH23ONYG.js";
146
147
  import "./chunk-FQ53GTII.js";
147
148
  import "./chunk-VJFMUJWZ.js";
148
149
  import "./chunk-6JAEMMZ7.js";
@@ -172,8 +173,8 @@ import "./chunk-UDZX2ZL4.js";
172
173
  import "./chunk-ZY55DO5P.js";
173
174
  import "./chunk-A2AOUBJS.js";
174
175
  import "./chunk-TFFGOFVZ.js";
175
- import "./chunk-EHP3WPEG.js";
176
176
  import "./chunk-7VR4IO5B.js";
177
+ import "./chunk-EHP3WPEG.js";
177
178
  import "./chunk-D3KEPRRN.js";
178
179
  import "./chunk-Q7DGTQ5G.js";
179
180
  import "./chunk-4XHAT7C5.js";
@@ -202,7 +203,7 @@ async function runWorkspaceCommand(args) {
202
203
  case "reset-tables":
203
204
  return runResetTables(args);
204
205
  case "branch": {
205
- const { runBranchCommand } = await import("./branch-commands-KTKAXBAN.js");
206
+ const { runBranchCommand } = await import("./branch-commands-EGY7ZEZE.js");
206
207
  return runBranchCommand(args);
207
208
  }
208
209
  default:
@@ -231,7 +232,7 @@ async function runDetails(args) {
231
232
  const auth = await getAccessToken(args);
232
233
  const workspaceId = auth.workspaceId;
233
234
  const all = await fetchWorkspaces(auth).catch(async (err) => {
234
- const { unansweredRead } = await import("./source-resolve-MKLNYFWG.js");
235
+ const { unansweredRead } = await import("./source-resolve-BBHYTOXI.js");
235
236
  throw unansweredRead(err, "read the workspace list", "workspace");
236
237
  });
237
238
  const match = all.find((w) => w.id === workspaceId);
@@ -291,7 +292,7 @@ async function runExport(args) {
291
292
  var EXIT_DIFF_MISMATCH = 2;
292
293
  async function runDiff(args) {
293
294
  if (args.file === void 0 && args.bundle === void 0) {
294
- const { resolveProjectEntry } = await import("./deploy-source-YLQ7WMYR.js");
295
+ const { resolveProjectEntry } = await import("./deploy-source-HYVZEYXV.js");
295
296
  const entry = resolveProjectEntry(process.cwd());
296
297
  if (entry !== void 0) args = { ...args, file: entry };
297
298
  }
@@ -304,11 +305,11 @@ async function runDiff(args) {
304
305
  try {
305
306
  live = await fetchWorkspaceBundle(auth, args.branch);
306
307
  } catch (err) {
307
- const { unansweredRead } = await import("./source-resolve-MKLNYFWG.js");
308
+ const { unansweredRead } = await import("./source-resolve-BBHYTOXI.js");
308
309
  throw unansweredRead(err, "read the workspace to compare", "workspace");
309
310
  }
310
311
  const { compareToLive, SETTINGS_LABEL } = await import("./live-diff-5E2BQWQ7.js");
311
- const { codePinnedCanonicals, releaseCanonicalLock } = await import("./release-command-BQ6OHS3P.js");
312
+ const { codePinnedCanonicals, releaseCanonicalLock } = await import("./release-command-7F5TBKO2.js");
312
313
  const pinned = codePinnedCanonicals(local.bundle, releaseCanonicalLock(args), args.file !== void 0);
313
314
  const result = compareToLive(
314
315
  JSON.parse(local.bundle),
@@ -327,8 +328,8 @@ async function runDiff(args) {
327
328
  const liveLabel = listed?.find((b) => b.live)?.label;
328
329
  const comparedLabel = args.branch ?? liveLabel;
329
330
  const comparedIsLive = args.branch === void 0 ? true : liveLabel === void 0 ? null : args.branch === liveLabel;
330
- const { landingLockPath } = await import("./landing-record-MWXFIRCP.js");
331
- const { readSyncBaseline, storedBranchLabel } = await import("./sync-record-PRXHLK4S.js");
331
+ const { landingLockPath } = await import("./landing-record-TPPYFQAS.js");
332
+ const { readSyncBaseline, storedBranchLabel } = await import("./sync-record-RGHK7EAL.js");
332
333
  const { syncDirection } = await import("./sync-baseline-DOV5AGIO.js");
333
334
  const syncLabel = storedBranchLabel(listed, args.branch);
334
335
  const baseline = syncLabel === void 0 ? void 0 : readSyncBaseline(landingLockPath(args, args.file !== void 0 ? { entryFile: args.file } : {}), {
@@ -438,7 +439,7 @@ Pass the entry file: \`xanosdk workspace reset-tables ./index.ts --table <guid>
438
439
  const local = await loadBundleText(args.write === true && !willRefuse ? args : { ...args, lockReadOnly: true }, target, {
439
440
  withSeed: true
440
441
  });
441
- const { seedRowsByTableGuid } = await import("./seed-SZ6OS5DQ.js");
442
+ const { seedRowsByTableGuid } = await import("./seed-FRKMDN2Z.js");
442
443
  const seeds = seedRowsByTableGuid(local.content);
443
444
  const declared = projectTables(local.bundle);
444
445
  const unknown = guids.filter((guid) => !declared.some((t) => t.guid === guid));
@@ -475,7 +476,7 @@ ${declared.map((t) => ` ${t.guid} ${t.name}${seeds.has(t.guid) ? " (seeded)"
475
476
  );
476
477
  }
477
478
  const destination = credentialWriteTarget(auth);
478
- const { countTableRows } = await import("./table-DC36QA4Y.js");
479
+ const { countTableRows } = await import("./table-OAYGFGEN.js");
479
480
  const planned = await Promise.all(
480
481
  guids.map(async (guid) => {
481
482
  const table = byGuid.get(guid);
@@ -514,7 +515,7 @@ ${declared.map((t) => ` ${t.guid} ${t.name}${seeds.has(t.guid) ? " (seeded)"
514
515
  return;
515
516
  }
516
517
  }
517
- const { truncateTable, insertTableRows } = await import("./table-DC36QA4Y.js");
518
+ const { truncateTable, insertTableRows } = await import("./table-OAYGFGEN.js");
518
519
  const done = [];
519
520
  for (const t of planned) {
520
521
  step(`Resetting ${t.name}`);
@@ -564,4 +565,4 @@ export {
564
565
  EXIT_DIFF_MISMATCH,
565
566
  runWorkspaceCommand
566
567
  };
567
- //# sourceMappingURL=workspace-command-FC4IMLAE.js.map
568
+ //# sourceMappingURL=workspace-command-MHIIY352.js.map
@@ -14,29 +14,29 @@ import {
14
14
  renderWorkspaceEnvFile,
15
15
  valueProblem,
16
16
  workspaceEnvPathIn
17
- } from "./chunk-HCG7NDIL.js";
18
- import "./chunk-TTEIDD5Q.js";
19
- import "./chunk-LL7SGTRC.js";
20
- import "./chunk-YYC2DZMG.js";
21
- import "./chunk-PMMHSX4H.js";
17
+ } from "./chunk-PV25BDCH.js";
18
+ import "./chunk-5SCPRXFB.js";
19
+ import "./chunk-DIWF7L33.js";
20
+ import "./chunk-D5OZRJ3T.js";
21
+ import "./chunk-EF4MHLEW.js";
22
22
  import "./chunk-ZFDZKNGG.js";
23
23
  import "./chunk-FWD7AL6N.js";
24
- import "./chunk-QJM5XZ4K.js";
24
+ import "./chunk-47XT6WQL.js";
25
25
  import "./chunk-DXUICABI.js";
26
+ import "./chunk-L6HZ67P6.js";
26
27
  import "./chunk-4KHEMC32.js";
27
- import {
28
- projectRootFrom
29
- } from "./chunk-ROY4YAEQ.js";
30
28
  import "./chunk-DNBP4GJN.js";
31
- import "./chunk-763M6LX3.js";
29
+ import "./chunk-CNZASQPL.js";
32
30
  import "./chunk-WAVNUTMT.js";
33
- import "./chunk-YR2I5HGE.js";
34
31
  import "./chunk-LLNZGEFK.js";
32
+ import {
33
+ projectRootFrom
34
+ } from "./chunk-HU7F56VF.js";
35
35
  import "./chunk-MF4W6FHU.js";
36
36
  import "./chunk-X2NL4KUO.js";
37
- import "./chunk-M6ZFSTIZ.js";
38
- import "./chunk-3EDSPMXN.js";
39
- import "./chunk-D7BUMOKU.js";
37
+ import "./chunk-5GIOCDUM.js";
38
+ import "./chunk-LJM5CIY4.js";
39
+ import "./chunk-CH23ONYG.js";
40
40
  import {
41
41
  isRepresentableName,
42
42
  safeNames
@@ -68,4 +68,4 @@ export {
68
68
  valueProblem,
69
69
  workspaceEnvPathIn
70
70
  };
71
- //# sourceMappingURL=workspace-env-N4ZPFT6A.js.map
71
+ //# sourceMappingURL=workspace-env-LLRWCHSA.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  assertBranchReadSupported,
3
3
  exportWorkspaceBundle
4
- } from "./chunk-GOLFAEUV.js";
4
+ } from "./chunk-2SD4LA22.js";
5
5
  import "./chunk-3DRXWLJ5.js";
6
6
  import "./chunk-X4DVXBFY.js";
7
- import "./chunk-YR2I5HGE.js";
7
+ import "./chunk-L6HZ67P6.js";
8
8
  import "./chunk-MF4W6FHU.js";
9
9
  import "./chunk-X2NL4KUO.js";
10
- import "./chunk-D7BUMOKU.js";
10
+ import "./chunk-CH23ONYG.js";
11
11
  import "./chunk-YHB34BN6.js";
12
12
  import "./chunk-UTI5G6OJ.js";
13
13
  import "./chunk-5ZSO4T2G.js";
@@ -18,4 +18,4 @@ export {
18
18
  assertBranchReadSupported,
19
19
  exportWorkspaceBundle
20
20
  };
21
- //# sourceMappingURL=workspace-export-3A5BZTPS.js.map
21
+ //# sourceMappingURL=workspace-export-BIKAYHWJ.js.map
@@ -5,9 +5,9 @@ import {
5
5
  unreadableError,
6
6
  unwritableBlocker,
7
7
  unwritableError
8
- } from "./chunk-5TVFLG3C.js";
8
+ } from "./chunk-PEX4QZVI.js";
9
9
  import "./chunk-FWD7AL6N.js";
10
- import "./chunk-D7BUMOKU.js";
10
+ import "./chunk-CH23ONYG.js";
11
11
  import "./chunk-YHB34BN6.js";
12
12
  import "./chunk-UTI5G6OJ.js";
13
13
  import "./chunk-5ZSO4T2G.js";
@@ -22,4 +22,4 @@ export {
22
22
  unwritableBlocker,
23
23
  unwritableError
24
24
  };
25
- //# sourceMappingURL=writable-D7KCZI5N.js.map
25
+ //# sourceMappingURL=writable-UOTO4WWC.js.map
@@ -13,15 +13,15 @@ import {
13
13
  resetXanoSdkImportDetection,
14
14
  withDefaultBranchPointer,
15
15
  xanosdkImport
16
- } from "./chunk-ND43ZOS3.js";
16
+ } from "./chunk-567KK6XF.js";
17
17
  import "./chunk-3DRXWLJ5.js";
18
18
  import "./chunk-X4DVXBFY.js";
19
- import "./chunk-BL3AZ3AP.js";
19
+ import "./chunk-MBL7CXJ7.js";
20
+ import "./chunk-L6HZ67P6.js";
20
21
  import "./chunk-4KHEMC32.js";
21
- import "./chunk-YR2I5HGE.js";
22
22
  import "./chunk-MF4W6FHU.js";
23
23
  import "./chunk-X2NL4KUO.js";
24
- import "./chunk-D7BUMOKU.js";
24
+ import "./chunk-CH23ONYG.js";
25
25
  import "./chunk-7FIMUFBP.js";
26
26
  import "./chunk-H2V3N23D.js";
27
27
  import "./chunk-3JDU4VRL.js";
@@ -53,4 +53,4 @@ export {
53
53
  withDefaultBranchPointer,
54
54
  xanosdkImport
55
55
  };
56
- //# sourceMappingURL=xanosdk-import-P2A2KSXM.js.map
56
+ //# sourceMappingURL=xanosdk-import-S7A3CVBN.js.map
@@ -3,29 +3,29 @@ import {
3
3
  enterProjectRoot,
4
4
  isProjectDir,
5
5
  projectDirFrom
6
- } from "./chunk-CCU5CCRX.js";
7
- import "./chunk-TTEIDD5Q.js";
8
- import "./chunk-LL7SGTRC.js";
9
- import "./chunk-YYC2DZMG.js";
10
- import "./chunk-PMMHSX4H.js";
6
+ } from "./chunk-ZJOAWRED.js";
7
+ import "./chunk-EUUUMY7J.js";
8
+ import "./chunk-5SCPRXFB.js";
9
+ import "./chunk-DIWF7L33.js";
10
+ import "./chunk-D5OZRJ3T.js";
11
+ import "./chunk-EF4MHLEW.js";
11
12
  import "./chunk-ZFDZKNGG.js";
12
13
  import "./chunk-FWD7AL6N.js";
13
- import "./chunk-QJM5XZ4K.js";
14
+ import "./chunk-47XT6WQL.js";
14
15
  import "./chunk-DXUICABI.js";
16
+ import "./chunk-L6HZ67P6.js";
15
17
  import "./chunk-4KHEMC32.js";
16
- import "./chunk-ROY4YAEQ.js";
17
18
  import "./chunk-DNBP4GJN.js";
18
- import "./chunk-763M6LX3.js";
19
+ import "./chunk-CNZASQPL.js";
19
20
  import "./chunk-WAVNUTMT.js";
20
- import "./chunk-EUUUMY7J.js";
21
- import "./chunk-YR2I5HGE.js";
22
- import "./chunk-26MOFAJT.js";
21
+ import "./chunk-ARWMVNDJ.js";
23
22
  import "./chunk-LLNZGEFK.js";
23
+ import "./chunk-HU7F56VF.js";
24
24
  import "./chunk-MF4W6FHU.js";
25
25
  import "./chunk-X2NL4KUO.js";
26
- import "./chunk-M6ZFSTIZ.js";
27
- import "./chunk-3EDSPMXN.js";
28
- import "./chunk-D7BUMOKU.js";
26
+ import "./chunk-5GIOCDUM.js";
27
+ import "./chunk-LJM5CIY4.js";
28
+ import "./chunk-CH23ONYG.js";
29
29
  import "./chunk-YHB34BN6.js";
30
30
  import "./chunk-UTI5G6OJ.js";
31
31
  import "./chunk-5ZSO4T2G.js";
@@ -39,4 +39,4 @@ export {
39
39
  isProjectDir,
40
40
  projectDirFrom
41
41
  };
42
- //# sourceMappingURL=xanosdk-project-6AGMW2SL.js.map
42
+ //# sourceMappingURL=xanosdk-project-J4VCFRHP.js.map
package/guides/README.md CHANGED
@@ -6,13 +6,13 @@ typed, so your editor's autocomplete is usually the faster lookup — tab-comple
6
6
 
7
7
  | Guide | What's in it |
8
8
  |---|---|
9
- | [The scaffolded project](scaffold.md) | What `xanosdk init` writes, the two frontend presets, add-ons, SvelteKit rules |
9
+ | [The scaffolded project](scaffold.md) | What `xanosdk init` writes, the two frontend presets, no frontend, existing apps, add-ons, SvelteKit rules |
10
10
  | [Project structure](project-structure.md) | How a `xano/` project is laid out, and why registration is explicit |
11
11
  | [The marketplace](marketplace.md) | Finding add-ons, the two kinds of module, and the install/reinstall/remove lifecycle |
12
12
  | [The module contract](module-contract.md) | Building an add-on: the manifest fields, the plugin types, every hook, and what is refused |
13
13
  | [Object kinds](object-kinds.md) | Every authorable kind, and splitting a workspace across microservices |
14
14
  | [Authoring reference](authoring.md) | Tables and fields, statements, values, inputs, middleware, request history |
15
- | [CLI](cli.md) | Every command, shell completion, and what failures look like |
15
+ | [CLI](cli.md) | Every command, the agent skill, shell completion, and what failures look like |
16
16
  | [Warning and error codes](codes.md) | Every code the CLI and the build emit, with what it means (generated) |
17
17
  | [Signing in & deploying](deploying.md) | Auth, ephemerals, `--static`, releasing to production, `xanosdk preflight` |
18
18
  | [Environment & identity](environment.md) | Every environment variable, and how `xano.lock` pins identity |
package/guides/cli.md CHANGED
@@ -9,6 +9,8 @@ with `@xano/sdk` installed, run them as `npx xanosdk …`; anywhere else, `npx @
9
9
  ```bash
10
10
  xanosdk init my-app # scaffold a full project (frontend/ + xano/)
11
11
  xanosdk init my-app --framework svelte # SvelteKit instead of the default React
12
+ xanosdk init my-api --framework none # a new project with the backend only (no frontend/)
13
+ xanosdk init # inside an existing app: add xano/ and the xano:* scripts, no frontend (lists clashes and writes nothing; --force overwrites)
12
14
  xanosdk init my-app --no-agents-md --no-install # skip AGENTS.md and npm install
13
15
  xanosdk init my-app --theme zinc-blue --dark toggle --icons tabler # the look
14
16
  xanosdk init my-app --marketplace @xano-sdk/auth,@xano-sdk/vector # install add-ons AND register them
@@ -62,6 +64,8 @@ xanosdk deploy ./xano/index.ts --local=~/Downloads/engine.tar.gz # override: r
62
64
  XANOSDK_ENGINE_OVERRIDE=v0.1.8 npm run xano:deploy # the same override for every deploy in the shell
63
65
  xanosdk local list # Xano Engines on this machine, marking the ones xanosdk started
64
66
  xanosdk local token # print its meta API bearer: XANO_META_TOKEN=$(xanosdk local token)
67
+ xanosdk local mcp # how a coding agent connects to its MCP server (url, command, config); never the bearer
68
+ xanosdk local mcp --stdio # the bridge an agent's .mcp.json launches: follows restarts, brings the current bearer
65
69
  xanosdk local stop <name> # stop one (--all: every one xanosdk started, and what a crashed one left running)
66
70
  xanosdk local update # move this project's pinned engine to the latest (--version <v>: that one) and restart it — commit package.json
67
71
  xanosdk local cache list # each cached engine version, its size, and the engines running on it
@@ -133,6 +137,9 @@ xanosdk logout # revoke the active profile and remo
133
137
  xanosdk version # print the installed @xano/sdk version
134
138
  xanosdk upgrade --check # is a newer @xano/sdk published? exits 7 if so, 0 if current
135
139
  xanosdk upgrade # install it: globally (npm i -g) for a global CLI; in a project, into the block that lists it (--save-prod or --save-dev)
140
+ xanosdk agent-skill install # put the xano-backend skill into each coding agent detected on this machine (--agent <id> to pick)
141
+ xanosdk agent-skill status # each copy: current, stale, edited or absent
142
+ xanosdk agent-skill uninstall # remove the copies install wrote (an edited copy is kept)
136
143
  xanosdk help # grouped command reference (also the no-arg default)
137
144
  xanosdk <command> --help # that command's usage, subcommands, and flags (`xanosdk deploy --help`)
138
145
  xanosdk <noun> <verb> --help # scoped to one verb (`xanosdk workspace export --help`)
@@ -320,6 +327,68 @@ caret) and restamps the managed blocks in your
320
327
  outside a project, it installs nothing (`status: "not-installed"`): that copy is temporary,
321
328
  and `npx @xano/sdk@latest` already runs the newest release.
322
329
 
330
+ ## Adding the backend to an existing app
331
+
332
+ `init` decides what to write from its target directory. An empty or missing directory is a
333
+ **new** project: a full app, `react` unless `--framework` says otherwise, with a framework
334
+ prompt on a terminal whose choices include "No frontend" (`--framework none`, the backend
335
+ alone). Any other directory is an **existing** project: `init` writes `xano/` and merges the
336
+ `xano:*` scripts and the backend's dependencies into its `package.json`, with no prompt and no
337
+ frontend. [The scaffolded project](scaffold.md#no-frontend-and-existing-apps) lists exactly
338
+ what each mode writes and merges.
339
+
340
+ Each of these is a **clash**: an existing `xano/`, any other file `init` would write that is
341
+ already there, and a `xano:*` script the project defines with another command. `init` lists
342
+ every clash and writes nothing. `--force` lists what it would overwrite and asks first
343
+ (`--yes` answers without a terminal).
344
+
345
+ `--framework react` or `--framework svelte` is refused in an existing project, and the
346
+ frontend-only flags (`--theme`, `--radius`, `--dark`, `--font`, `--font-mono`,
347
+ `--font-heading`, `--icons`) are refused wherever no frontend is written, rather than
348
+ silently ignored. `init --from` follows the same two modes
349
+ ([Pulling an existing workspace](codegen.md#running-it)).
350
+
351
+ ```bash
352
+ xanosdk init --json # inside the app; then run the command in `next`
353
+ ```
354
+
355
+ `init --json` reports `mode` (`new` or `existing`), `files` (every file it wrote or merged
356
+ into, relative to the project) and `next` (the command to run next: the install when one is
357
+ still needed, then `xano:deploy`).
358
+
359
+ ## The agent skill
360
+
361
+ `xano-backend` is an agent skill for coding agents such as Claude Code, Codex and Cursor: it
362
+ tells the agent when to set up a Xano backend and hands it to `init`, then to the project's
363
+ `AGENTS.md` and `llms.txt`. It is not a `knowledge()` def; those are docs your workspace's own
364
+ AI agents read. The package ships it at `skills/xano-backend/SKILL.md`.
365
+
366
+ ```bash
367
+ xanosdk agent-skill install # every coding agent detected on this machine
368
+ xanosdk agent-skill install --agent claude-code # …or name one (repeatable)
369
+ xanosdk agent-skill install --dry-run # report what would change, write nothing
370
+ xanosdk agent-skill status --json # each copy, as data
371
+ xanosdk agent-skill uninstall
372
+ ```
373
+
374
+ It writes at most two copies. Claude Code reads `~/.claude/skills/xano-backend/SKILL.md`
375
+ (under `$CLAUDE_CONFIG_DIR` when that is set). Codex, Cursor, Copilot, Gemini CLI, Amp and
376
+ OpenCode read the shared `~/.agents/skills/xano-backend/SKILL.md`. An agent is detected by its
377
+ home config directory; `--agent` takes `claude-code`, `agents` (the shared directory),
378
+ `codex`, `cursor`, `copilot`, `gemini`, `amp` or `opencode` instead. When no agent is detected
379
+ and none is named, `install` refuses.
380
+
381
+ Each copy carries the SDK version and a digest. `status` reports a copy as **current**,
382
+ **stale** (an older version, unedited), **edited** (changed since it was installed) or
383
+ **absent**. `install` writes a missing or stale copy and leaves a current one unchanged; it
384
+ leaves an edited copy alone unless `--force`. `uninstall` removes only unedited copies. A
385
+ symlinked skill directory belongs to another installer, and neither command touches it.
386
+ Nothing prompts, so both run unattended; `--json` reports one entry per target.
387
+
388
+ The skill also installs without the CLI, from the public repository:
389
+ `npx skills add xano-sdk/sdk`, or in Claude Code `/plugin marketplace add xano-sdk/sdk`
390
+ followed by `/plugin install xano@xano-sdk`.
391
+
323
392
  ## Checking what an installed SDK can do
324
393
 
325
394
  A tool that drives the CLI, such as an editor extension or a CI step, should check that the
package/guides/codegen.md CHANGED
@@ -18,10 +18,27 @@ xanosdk init my-app --from ./ws.json # a bundle already on disk — off
18
18
  `workspace`, `ephemeral[:<name>]`, `local[:<name>]`, `tenant:<name>`, `release:<name>` —
19
19
  or a bundle path. Unlike most commands it has no default: a pull names its source.
20
20
 
21
- Everything else about the project is unchanged: `--framework`, the theme flags, `--no-agents-md` and
22
- `--web` mean the same thing here as they do without `--from`. The three flags that describe
23
- the pull itself — `--report`, `--skip-roundtrip` and `--branch` — are refused without it rather
24
- than silently ignored.
21
+ Everything else about the project is unchanged: `--framework` (`react`, `svelte` or `none`), the
22
+ theme flags, `--no-agents-md` and `--web` mean the same thing here as they do without `--from`.
23
+ The three flags that describe the pull itself — `--report`, `--skip-roundtrip` and `--branch` —
24
+ are refused without it rather than silently ignored.
25
+
26
+ The target directory decides what is written around `xano/`, as it does for a plain
27
+ [`init`](scaffold.md#no-frontend-and-existing-apps):
28
+
29
+ - **Empty or missing:** a new project, with the frontend `--framework` names (`none` for the
30
+ backend alone).
31
+ - **A previous pull** (`xano/.xanosdk-codegen.json` is there): `xano/` is refreshed in place —
32
+ see [Verification, and the decode report](#verification-and-the-decode-report) below.
33
+ - **Anything else:** an existing app, which gets the backend only. The decoded `xano/` is
34
+ written, and the `xano:*` scripts and the backend's dependencies are merged into its
35
+ `package.json`. An existing `xano/`, a file the pull would write, or a `xano:*` script with
36
+ another command is a clash: all of them are listed and nothing is read or written unless
37
+ `--force`. `--framework react|svelte` and the frontend-only flags are refused.
38
+
39
+ ```bash
40
+ cd my-existing-app && npx @xano/sdk init --from workspace # add the pulled backend to this app
41
+ ```
25
42
 
26
43
  ### Just the tree: `generate`
27
44
 
@@ -168,7 +185,8 @@ are listed), then updated from the new tree, so `export --check` passes after it
168
185
  over a `xano/` no decode wrote follows the same rules.
169
186
 
170
187
  > ⚠️ **`xano/` is your source once pulled — commit it.** A refresh overwrites the files it
171
- > decodes, so commit before one (a directory that isn't a previous pull still needs `--force`).
188
+ > decodes, so commit before one (an existing `xano/` that isn't a previous pull is a clash, and
189
+ > needs `--force`).
172
190
  > It carries schema only — no table rows or stored files.
173
191
  > `xanosdk deploy` sends it to the Xano Engine on this machine (`--ephemeral`: a disposable
174
192
  > ephemeral environment) as a *full replace*;
package/guides/codes.md CHANGED
@@ -133,6 +133,7 @@ Printed as `! …` on stderr, and as `{ code, message }` in a `--json` document'
133
133
  | `logout.revoke-failed` | Did not revoke …: … The token was not sent. |
134
134
  | `logout.shared-file` | Clearing … in the shared credential file … — this affects every project that reuses it. |
135
135
  | `logout.unreadable` | Could not read … (…). |
136
+ | `merge.symlink` | … is a symlink — left it and its target untouched. |
136
137
  | `microservice.failed` | Some microservices failed to start: |
137
138
  | `microservice.starting` | Microservices are still starting (…/… ready) — they should come up shortly: |
138
139
  | `microservice.status-unreadable` | Could not read microservice status (the backend deployed fine): |
@@ -72,3 +72,8 @@ can learn the SDK without reading source:
72
72
  Both derive from the SDK's own sources of truth (so they can't drift), regenerate with
73
73
  `npm run manifest`, and are available at runtime via `buildManifest()` / `renderLlmsTxt()`,
74
74
  both exported from `@xano/sdk/internal`.
75
+
76
+ The package also ships the `xano-backend` agent skill at `skills/xano-backend/SKILL.md`. It
77
+ carries no reference of its own: it tells a coding agent when to set up a Xano backend, runs it
78
+ through `init` and the first deploy, and hands it to the project's `AGENTS.md` and `llms.txt`.
79
+ Installing it is in the [CLI guide](cli.md#the-agent-skill).