@xano/sdk 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/CHANGELOG.md +32 -5
  2. package/README.md +250 -342
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/agent-file-refresh-67QIX45H.js +39 -0
  5. package/dist/{answer-shape-LVV2SVBK.js → answer-shape-UCDUKPAN.js} +6 -6
  6. package/dist/{backend-dir-WZADOK3L.js → backend-dir-3LIL6SCT.js} +16 -15
  7. package/dist/{backend-slot-NSCTWCUX.js → backend-slot-JREP27UD.js} +4 -4
  8. package/dist/bin.js +59 -58
  9. package/dist/{branch-ONWPJ4V6.js → branch-2IPHOAYS.js} +10 -10
  10. package/dist/{branch-commands-ZT2MJIRS.js → branch-commands-KTKAXBAN.js} +31 -32
  11. package/dist/bundle.js +9 -39
  12. package/dist/{capture-3JNUA6C2.js → capture-GW5KNKMB.js} +4 -4
  13. package/dist/{chunk-FPBGAT5D.js → chunk-26MOFAJT.js} +3 -3
  14. package/dist/{chunk-O7QOWS6M.js → chunk-2FLIJGBZ.js} +12 -12
  15. package/dist/{chunk-QAEQGT5I.js → chunk-2WBH5HUY.js} +7 -7
  16. package/dist/{chunk-37AHZ7JX.js → chunk-3BBIDW3Y.js} +6 -6
  17. package/dist/{chunk-DGWHAVRG.js → chunk-3EDSPMXN.js} +12 -1
  18. package/dist/{chunk-2AUV6NXK.js → chunk-3II44CUJ.js} +36 -36
  19. package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
  20. package/dist/{chunk-OOXWYAA4.js → chunk-57A5ZKPO.js} +1 -1
  21. package/dist/{chunk-OOGXZL7Z.js → chunk-5KJBWIDZ.js} +84 -6
  22. package/dist/{chunk-5YL5OC2G.js → chunk-5QMJOE2K.js} +6 -6
  23. package/dist/{chunk-3H3EPMFY.js → chunk-5TVFLG3C.js} +2 -2
  24. package/dist/{chunk-WFMVKY7I.js → chunk-5YQV35C2.js} +9 -9
  25. package/dist/{chunk-NA3PXMEF.js → chunk-64WWE3EF.js} +1 -1
  26. package/dist/{chunk-FMOEVAGT.js → chunk-6X3MY2JP.js} +3 -3
  27. package/dist/{chunk-2LVTBPW2.js → chunk-6X6BJN6Y.js} +3 -3
  28. package/dist/{chunk-DYG5D3FD.js → chunk-763M6LX3.js} +16 -2
  29. package/dist/{chunk-EESV6NU2.js → chunk-7FIMUFBP.js} +2 -2
  30. package/dist/{chunk-CFSFBKHP.js → chunk-7GAIJW62.js} +2 -2
  31. package/dist/{chunk-6R7S775T.js → chunk-7REDHC4N.js} +2 -2
  32. package/dist/chunk-7VR4IO5B.js +44 -0
  33. package/dist/chunk-A7MRZ4GF.js +78 -0
  34. package/dist/{chunk-D5ZEAF4G.js → chunk-ATJ2W7DC.js} +81 -58
  35. package/dist/{chunk-BUJRS7XB.js → chunk-AVS4WPPY.js} +2 -2
  36. package/dist/{chunk-MEE5RZ6G.js → chunk-BL3AZ3AP.js} +2 -2
  37. package/dist/chunk-BTVUYHWV.js +111 -0
  38. package/dist/{chunk-T4DUFQ2S.js → chunk-CCU5CCRX.js} +5 -5
  39. package/dist/{chunk-5T2CTWTB.js → chunk-CHINR7WD.js} +6 -6
  40. package/dist/{chunk-VD32O6KZ.js → chunk-CJDPSCMX.js} +45 -5
  41. package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
  42. package/dist/{chunk-SBR2WZXG.js → chunk-D7BUMOKU.js} +60 -53
  43. package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
  44. package/dist/{chunk-JTUKLCXS.js → chunk-DXUICABI.js} +1 -1
  45. package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
  46. package/dist/{chunk-KTGRGWZW.js → chunk-EADVVTDK.js} +7 -7
  47. package/dist/{chunk-FJWZ5OVV.js → chunk-ENMBEXOP.js} +3 -3
  48. package/dist/{chunk-OPHB5ORL.js → chunk-EQFYOOO6.js} +171 -92
  49. package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
  50. package/dist/{chunk-II747OWE.js → chunk-FQ53GTII.js} +10 -10
  51. package/dist/{chunk-JP7M7OU7.js → chunk-FU3VCE5A.js} +46 -27
  52. package/dist/{chunk-OGBMUST4.js → chunk-GHQ4BVI4.js} +14 -14
  53. package/dist/{chunk-45YPFB7B.js → chunk-GLY552SI.js} +84 -57
  54. package/dist/{chunk-QV3GXQRE.js → chunk-GOLFAEUV.js} +2 -2
  55. package/dist/{chunk-L2GLOJAO.js → chunk-GW5RHGOB.js} +22 -22
  56. package/dist/{chunk-A6QTTJUI.js → chunk-GWTFI3GA.js} +2 -2
  57. package/dist/{chunk-MCTIKRMN.js → chunk-GZHLCUZ6.js} +8 -8
  58. package/dist/{chunk-664LSWE5.js → chunk-HCG7NDIL.js} +4 -4
  59. package/dist/{chunk-7PMVIHB3.js → chunk-I3H3HCPY.js} +50 -29
  60. package/dist/{chunk-LIVN53UV.js → chunk-I3VHW6XM.js} +31 -31
  61. package/dist/{chunk-C4FHQA7R.js → chunk-IF4PEGVD.js} +8 -8
  62. package/dist/{chunk-WFG67AYS.js → chunk-IMELQ2I6.js} +3 -3
  63. package/dist/{chunk-3P3HXN76.js → chunk-ITC2R2OT.js} +11 -11
  64. package/dist/{chunk-W5ONYLOP.js → chunk-IXFJORNH.js} +4 -4
  65. package/dist/{chunk-HMLGM2MW.js → chunk-IYXL5NYU.js} +260 -32
  66. package/dist/{chunk-2B22WWKL.js → chunk-JFBRXRJD.js} +59 -35
  67. package/dist/chunk-JI3BLXWQ.js +107 -0
  68. package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
  69. package/dist/{chunk-O5V3YH5P.js → chunk-JRVQ7M7W.js} +8 -8
  70. package/dist/{chunk-4APOHK7Y.js → chunk-JXVJGF3Y.js} +2 -2
  71. package/dist/chunk-KPFS3RGM.js +257 -0
  72. package/dist/{chunk-PML67X22.js → chunk-LAOMN6QQ.js} +3 -3
  73. package/dist/{chunk-TTVAHCWP.js → chunk-LBJA7IEM.js} +370 -45
  74. package/dist/{chunk-KUTFFHUM.js → chunk-LD6ARK3A.js} +2 -2
  75. package/dist/{chunk-HUSH7LRI.js → chunk-LL7SGTRC.js} +36 -33
  76. package/dist/{chunk-I2BGYNHD.js → chunk-M5CSVB23.js} +7 -7
  77. package/dist/{chunk-UCQ2VUTG.js → chunk-M6ZFSTIZ.js} +2 -2
  78. package/dist/{chunk-MNVDVR3M.js → chunk-MBDFH7XB.js} +4 -4
  79. package/dist/{chunk-QXTKSOFI.js → chunk-MF4W6FHU.js} +1 -1
  80. package/dist/{chunk-RX3EMQGN.js → chunk-MFWF2NZJ.js} +12 -5
  81. package/dist/{chunk-SEUCZZCP.js → chunk-N5I37JFB.js} +3 -3
  82. package/dist/{chunk-IJ3SXSZM.js → chunk-ND43ZOS3.js} +6 -6
  83. package/dist/chunk-NDWVJ2QZ.js +67 -0
  84. package/dist/{chunk-E65QIWOO.js → chunk-NPODGBVJ.js} +4 -4
  85. package/dist/{chunk-CYB7UQA2.js → chunk-OIKLDDYC.js} +5 -5
  86. package/dist/{chunk-MLGI2SRQ.js → chunk-PFBXSVZF.js} +4 -4
  87. package/dist/{chunk-AM4FKL4J.js → chunk-PL7AIAWS.js} +12 -12
  88. package/dist/{chunk-S7E2AHV3.js → chunk-PMMHSX4H.js} +26 -9
  89. package/dist/{chunk-WL2DSNJV.js → chunk-Q22BMRPF.js} +2 -2
  90. package/dist/{chunk-3FN2BIGB.js → chunk-QJM5XZ4K.js} +6 -6
  91. package/dist/{chunk-EWCDPFW5.js → chunk-QXYMDARD.js} +4 -4
  92. package/dist/{chunk-MLPDSGJQ.js → chunk-QZEAANWP.js} +5 -5
  93. package/dist/{chunk-ESZ2FF57.js → chunk-RIN4YY34.js} +88 -74
  94. package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
  95. package/dist/{chunk-CBYQ2ZN3.js → chunk-SKEG3V2V.js} +2 -2
  96. package/dist/{chunk-4PQHO74B.js → chunk-SLGJIWCY.js} +4 -4
  97. package/dist/{chunk-IVKRT476.js → chunk-SPITRSOF.js} +2 -2
  98. package/dist/{chunk-BUECLQXK.js → chunk-SPKA2LV6.js} +4 -4
  99. package/dist/{chunk-HHW5AWVD.js → chunk-SSITMX7I.js} +30 -30
  100. package/dist/{chunk-OPG4DYX2.js → chunk-T4LJ5UR2.js} +29 -7
  101. package/dist/{chunk-LXNQWHZM.js → chunk-TECTL2NU.js} +4 -4
  102. package/dist/{chunk-E6H5ZEV3.js → chunk-TTEIDD5Q.js} +3 -3
  103. package/dist/{chunk-6VBTPV2Y.js → chunk-U35MTOXQ.js} +3 -3
  104. package/dist/{chunk-UKUIUS3E.js → chunk-U6MTGB46.js} +5 -5
  105. package/dist/{chunk-Y2ZLKBM6.js → chunk-UD2Z7K6W.js} +4 -4
  106. package/dist/{chunk-IXUPUFCG.js → chunk-UIVMR7UK.js} +2 -2
  107. package/dist/{chunk-UDE5C2XN.js → chunk-VDHA5SSQ.js} +3 -3
  108. package/dist/{chunk-5W7DOMIU.js → chunk-VJFMUJWZ.js} +4 -4
  109. package/dist/{chunk-XNCP4KYO.js → chunk-VQPDATQT.js} +1 -1
  110. package/dist/{chunk-KCAL4QYP.js → chunk-VW4CWVYX.js} +4 -4
  111. package/dist/chunk-WAVNUTMT.js +9 -0
  112. package/dist/{chunk-DIG3NITC.js → chunk-WBH4KJWM.js} +3 -3
  113. package/dist/{chunk-HSEQYBDO.js → chunk-WZHLMU6T.js} +3 -3
  114. package/dist/{chunk-WYEQFD6A.js → chunk-XFBGXB7X.js} +173 -105
  115. package/dist/{chunk-UI4OPTYR.js → chunk-Y453TW6J.js} +2 -2
  116. package/dist/{chunk-LUTMOHOW.js → chunk-YGLMRH5U.js} +9 -9
  117. package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
  118. package/dist/{chunk-5WGVIXMD.js → chunk-YKP4ZKVO.js} +14 -10
  119. package/dist/{chunk-MN2PB6WB.js → chunk-YR2I5HGE.js} +3 -3
  120. package/dist/{chunk-ZG7E72VI.js → chunk-YYC2DZMG.js} +7 -7
  121. package/dist/{chunk-D64XUF5Q.js → chunk-YYLUBYXM.js} +16 -16
  122. package/dist/{chunk-VRVKNY4A.js → chunk-Z4ZGTCCD.js} +8 -8
  123. package/dist/{chunk-44B4V2LR.js → chunk-ZDP6GDAB.js} +142 -142
  124. package/dist/{chunk-ET5DSBAC.js → chunk-ZJSTUD6D.js} +8 -8
  125. package/dist/cli.d.ts +36 -26
  126. package/dist/cli.js +57 -56
  127. package/dist/{codegen-command-HTWIW56U.js → codegen-command-R5IASBFC.js} +78 -72
  128. package/dist/codegen.d.ts +2 -2
  129. package/dist/codegen.js +2 -2
  130. package/dist/{commands-CVFYC4GK.js → commands-H7CPMMHH.js} +3 -3
  131. package/dist/{completion-AUEQC4XJ.js → completion-W5ZAI6TN.js} +12 -12
  132. package/dist/{config-JU6OQC77.js → config-MZ5KG4EP.js} +5 -5
  133. package/dist/{deploy-command-5WTFHMBT.js → deploy-command-34T2LKQ5.js} +64 -63
  134. package/dist/deploy-source-YLQ7WMYR.js +82 -0
  135. package/dist/{dev-env-sync-X636HLMK.js → dev-env-sync-TMJTNU3U.js} +58 -57
  136. package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
  137. package/dist/{display-name-hint-DMORHANO.js → display-name-hint-ZJGFNJKQ.js} +12 -12
  138. package/dist/{emit-hOFbgzde.d.ts → emit-D125xxty.d.ts} +67 -21
  139. package/dist/env-example-refresh-CQP3ZMKM.js +133 -0
  140. package/dist/{env-pull-command-WZZ7RL2E.js → env-pull-command-UTG6IC2K.js} +53 -53
  141. package/dist/{env-target-PO3MOLH5.js → env-target-FZROWYFS.js} +14 -14
  142. package/dist/{env-var-command-YKTJZFJN.js → env-var-command-VYDBQJJW.js} +51 -50
  143. package/dist/{ephemeral-BMFY55BQ.js → ephemeral-BIE6FMJV.js} +10 -10
  144. package/dist/{ephemeral-command-VDSQCOYL.js → ephemeral-command-OZ26RGXF.js} +54 -54
  145. package/dist/{ephemeral-state-6TY4JIPA.js → ephemeral-state-SNZOX2YK.js} +12 -12
  146. package/dist/{generate-command-3NTNRQRS.js → generate-command-4HR7MR36.js} +87 -79
  147. package/dist/{gitignore-FWPEDX6C.js → gitignore-EWQBXNX2.js} +20 -19
  148. package/dist/{guards-EJU2ONAX.js → guards-KYEOCVHN.js} +7 -7
  149. package/dist/{hosted-file-PSHJB3HX.js → hosted-file-S7YUQAH6.js} +2 -2
  150. package/dist/{impersonate-command-QEJA72Q2.js → impersonate-command-WC7OGKUM.js} +44 -43
  151. package/dist/{import-TBTOTU52.js → import-7Z4GCCPO.js} +6 -6
  152. package/dist/index.d.ts +14 -20
  153. package/dist/index.js +14 -14
  154. package/dist/init-command-HAO3WXH3.js +128 -0
  155. package/dist/{init-modules-HZRQFRLE.js → init-modules-NSKD4ASY.js} +12 -11
  156. package/dist/{init-web-Y2PBNJTQ.js → init-web-MKFFOQUU.js} +3 -3
  157. package/dist/internal.d.ts +5 -5
  158. package/dist/internal.js +61 -35
  159. package/dist/{io-ZUKAGFVE.js → io-PGTCBSIQ.js} +7 -5
  160. package/dist/{keep-data-merge-X5LDDCI3.js → keep-data-merge-QR2TMKEO.js} +33 -34
  161. package/dist/{lambda-config-reconcile-OUZ4OYAB.js → lambda-config-reconcile-7FJXXV6V.js} +4 -4
  162. package/dist/{landed-6VO7CX5P.js → landed-F7PCHGCK.js} +4 -4
  163. package/dist/{landing-record-QYECWLQ5.js → landing-record-MWXFIRCP.js} +26 -25
  164. package/dist/{live-diff-2S7E3SBZ.js → live-diff-5E2BQWQ7.js} +10 -9
  165. package/dist/local-engine-choice-VD5LNXJU.js +80 -0
  166. package/dist/{local-engine-command-HMTQK7MN.js → local-engine-command-RYLGMQ2O.js} +96 -95
  167. package/dist/{local-engine-config-5U3SC434.js → local-engine-config-W3KB7RWM.js} +2 -2
  168. package/dist/{local-engine-deploy-TXAOYRGF.js → local-engine-deploy-6O7NKZCA.js} +17 -17
  169. package/dist/{local-engine-process-6VZ7JJBP.js → local-engine-process-ZLLZEIRF.js} +12 -12
  170. package/dist/{local-engine-state-TJWPWCC4.js → local-engine-state-OCW5YDD7.js} +3 -3
  171. package/dist/{local-engine-update-check-R5SPDVEJ.js → local-engine-update-check-LVX4HBBI.js} +8 -8
  172. package/dist/{lock-TS465GVY.js → lock-HDCHD2ON.js} +5 -3
  173. package/dist/{lock-commands-4VT3L5W5.js → lock-commands-X2OECR4R.js} +62 -61
  174. package/dist/{login-command-O6WA4FYL.js → login-command-RLLKD565.js} +31 -30
  175. package/dist/{logout-command-6CPWGFY2.js → logout-command-XDMSXCDO.js} +17 -17
  176. package/dist/{loop-UFHKSOQ4.js → loop-SUB6C2LK.js} +9 -10
  177. package/dist/{marketplace-command-HKACSYKS.js → marketplace-command-2NHHY2X3.js} +89 -53
  178. package/dist/{marketplace-resolve-KLFYVRWS.js → marketplace-resolve-OTZYT4FG.js} +9 -8
  179. package/dist/{meta-client-73PX6UGJ.js → meta-client-TMHVBZFY.js} +15 -15
  180. package/dist/{module-manifest-GIKFNXPE.js → module-manifest-FNMW23IX.js} +7 -4
  181. package/dist/node.d.ts +5 -5
  182. package/dist/node.js +63 -63
  183. package/dist/operation-outcome-RN62735X.js +51 -0
  184. package/dist/{output-target-SZMBNYF4.js → output-target-MOLCTPBP.js} +21 -20
  185. package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
  186. package/dist/{plan-disclosure-BHYG7TZ7.js → plan-disclosure-CY7AF6KP.js} +21 -22
  187. package/dist/{plugin-contributions-X4V22PJQ.js → plugin-contributions-WR26U7NT.js} +6 -6
  188. package/dist/{plugin-prompt-DKNQHW6Y.js → plugin-prompt-ZUYQQIX4.js} +5 -5
  189. package/dist/{plugin-questions-CQRVOWFK.js → plugin-questions-HAZOQ67R.js} +4 -4
  190. package/dist/plugin.d.ts +254 -10
  191. package/dist/{preflight-command-EBQ6XQF3.js → preflight-command-OHJXYND3.js} +70 -70
  192. package/dist/{profile-command-NPKBJYPM.js → profile-command-6JWT2BTL.js} +33 -32
  193. package/dist/{profile-pointer-UOO7JNFG.js → profile-pointer-PDA5XBIB.js} +5 -5
  194. package/dist/{profile-select-74TRDEPD.js → profile-select-45G5VPJK.js} +2 -2
  195. package/dist/{project-dependency-RRMTWOPC.js → project-dependency-GZWWGWEW.js} +13 -10
  196. package/dist/{project-sdk-FOR4IOXL.js → project-sdk-3W72H5QO.js} +4 -4
  197. package/dist/promote-command-UYAMUXKB.js +146 -0
  198. package/dist/{prompt-5GUQTCSP.js → prompt-U37K5RPQ.js} +4 -4
  199. package/dist/{publish-command-LGLZBOCB.js → publish-command-BUS27HGB.js} +138 -66
  200. package/dist/pull-command-ZGUNP27P.js +168 -0
  201. package/dist/{pull-superseded-GGURV5J3.js → pull-superseded-EZBGYRZF.js} +4 -4
  202. package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
  203. package/dist/release-command-BQ6OHS3P.js +150 -0
  204. package/dist/{release-ns-command-EIBN3JVM.js → release-ns-command-ATGVBVIU.js} +94 -94
  205. package/dist/{retry-command-Y5YJGOH3.js → retry-command-QJ57WVW7.js} +9 -9
  206. package/dist/{routes-manifest-3BNZIVST.js → routes-manifest-YR4ZIMLM.js} +16 -8
  207. package/dist/routes-manifest-file-UALYSZLY.js +41 -0
  208. package/dist/scaffold.js +3 -3
  209. package/dist/{secrets-file-FUG7WCES.js → secrets-file-LMS7KX3E.js} +20 -19
  210. package/dist/{secrets-fill-command-QEOCUOAY.js → secrets-fill-command-QNBDGCGM.js} +61 -60
  211. package/dist/{seed-GJHJSEUE.js → seed-SZ6OS5DQ.js} +9 -9
  212. package/dist/{source-resolve-DMDZVPMM.js → source-resolve-MKLNYFWG.js} +24 -24
  213. package/dist/{static-host-WM24RG25.js → static-host-ONEHA4LI.js} +10 -10
  214. package/dist/{status-command-XUH5OGQX.js → status-command-XKIFKBGM.js} +57 -56
  215. package/dist/{store-CfgPaVPO.d.ts → store-Bg4Na6Sm.d.ts} +4 -4
  216. package/dist/{store-MR7IKXKK.js → store-X6ZH7EC3.js} +7 -7
  217. package/dist/sveltekit.d.ts +5 -5
  218. package/dist/sveltekit.js +1 -1
  219. package/dist/sync-baseline-DOV5AGIO.js +36 -0
  220. package/dist/{sync-contributions-DHP7XSTX.js → sync-contributions-HNVHDIQW.js} +21 -13
  221. package/dist/sync-record-PRXHLK4S.js +42 -0
  222. package/dist/{table-ZBDPKMNH.js → table-DC36QA4Y.js} +10 -10
  223. package/dist/{tables-command-X3JK7VSK.js → tables-command-UQLKTELN.js} +44 -43
  224. package/dist/{tenant-GKXMOYLK.js → tenant-EKNQGG5A.js} +11 -11
  225. package/dist/{tenant-command-P27EQHBU.js → tenant-command-2LWP2MPB.js} +105 -100
  226. package/dist/{test-command-A4G2FP7G.js → test-command-IU5MBBXY.js} +44 -43
  227. package/dist/{tests-C55M5EQS.js → tests-RG2Y5EQ4.js} +7 -7
  228. package/dist/{token-CMAB35GD.js → token-7AWSJLKO.js} +13 -13
  229. package/dist/toolchain-hooks-4ZMQLBPQ.js +46 -0
  230. package/dist/{toolchain-modules-3M7QDJBV.js → toolchain-modules-VU7SURVJ.js} +9 -6
  231. package/dist/toolchain-peers-CIDNEEQV.js +28 -0
  232. package/dist/tracked-backend-4BHSV7NC.js +81 -0
  233. package/dist/{update-check-LNNKIMML.js → update-check-A7FXIINW.js} +60 -59
  234. package/dist/{upgrade-command-7EUXML3P.js → upgrade-command-C5KBITFI.js} +64 -63
  235. package/dist/{whoami-command-KNWFWAX6.js → whoami-command-7WQII2H4.js} +16 -16
  236. package/dist/{workspace-TGPYOODG.js → workspace-Z46PUZNI.js} +6 -6
  237. package/dist/{workspace-binding-2TWZBHQY.js → workspace-binding-JE6YNDZJ.js} +15 -15
  238. package/dist/{workspace-command-T7Z2BDHD.js → workspace-command-FC4IMLAE.js} +119 -88
  239. package/dist/{workspace-env-VA7XN3UX.js → workspace-env-N4ZPFT6A.js} +17 -16
  240. package/dist/{workspace-export-AIGM6LC7.js → workspace-export-3A5BZTPS.js} +6 -6
  241. package/dist/{writable-FYJBTJOU.js → writable-D7KCZI5N.js} +4 -4
  242. package/dist/{xano-BSHYVFSE.js → xano-LCI7VWPS.js} +9 -9
  243. package/dist/{xanosdk-import-J6SRBZHW.js → xanosdk-import-P2A2KSXM.js} +10 -10
  244. package/dist/xanosdk-project-6AGMW2SL.js +42 -0
  245. package/guides/README.md +1 -0
  246. package/guides/authoring.md +3 -5
  247. package/guides/bundle.md +45 -0
  248. package/guides/cli.md +36 -34
  249. package/guides/codegen.md +5 -4
  250. package/guides/codes.md +16 -11
  251. package/guides/deploying.md +115 -58
  252. package/guides/environment.md +13 -13
  253. package/guides/marketplace.md +21 -0
  254. package/guides/module-contract.md +80 -4
  255. package/guides/project-structure.md +14 -0
  256. package/guides/typed-frontend.md +37 -0
  257. package/llms/client.md +14 -5
  258. package/llms/errors.md +1 -1
  259. package/llms/filters.md +4 -0
  260. package/llms/kinds-core.md +1 -1
  261. package/llms/statements-data.md +3 -2
  262. package/llms/tests.md +2 -2
  263. package/llms/toolchain.md +12 -0
  264. package/llms-full.txt +47 -21
  265. package/llms.txt +10 -10
  266. package/manifest.json +110 -107
  267. package/package.json +4 -4
  268. package/dist/agent-file-refresh-LB6KIMFY.js +0 -38
  269. package/dist/chunk-XXZZGXW2.js +0 -243
  270. package/dist/deploy-source-5CET3A5D.js +0 -81
  271. package/dist/env-example-refresh-ZO6XAV44.js +0 -127
  272. package/dist/init-command-27SFBW2F.js +0 -126
  273. package/dist/local-engine-choice-6BSPEG3E.js +0 -79
  274. package/dist/operation-outcome-2P4BVSEV.js +0 -51
  275. package/dist/promote-command-4F2NAE6P.js +0 -141
  276. package/dist/pull-command-WQFPLITW.js +0 -162
  277. package/dist/release-command-2OTNVMIL.js +0 -147
  278. package/dist/toolchain-hooks-BGZBDFAT.js +0 -96
  279. package/dist/tracked-backend-PZGUWD5J.js +0 -80
  280. package/dist/xanosdk-project-6KTCO47O.js +0 -41
@@ -1,7 +1,285 @@
1
+ import {
2
+ byCodeUnit
3
+ } from "./chunk-WAVNUTMT.js";
1
4
  import {
2
5
  parsePathParams,
3
6
  pathSegment
4
- } from "./chunk-5W7DOMIU.js";
7
+ } from "./chunk-VJFMUJWZ.js";
8
+ import {
9
+ linkedTableOf,
10
+ tableRefOf
11
+ } from "./chunk-EHP3WPEG.js";
12
+ import {
13
+ COLUMN_NULLABLE_TYPES,
14
+ INPUT_NULLABLE_TYPES,
15
+ isListColumn
16
+ } from "./chunk-JIKGT7DO.js";
17
+
18
+ // src/emit/route-inputs.ts
19
+ var SCALAR_TYPES = /* @__PURE__ */ new Set([
20
+ "text",
21
+ "int",
22
+ "decimal",
23
+ "bool",
24
+ "email",
25
+ "password",
26
+ "uuid",
27
+ "date",
28
+ "epochms",
29
+ "json",
30
+ "file",
31
+ "blob",
32
+ "blob_img",
33
+ "blob_video",
34
+ "blob_audio",
35
+ "geo_point",
36
+ "geo_multipoint",
37
+ "geo_linestring",
38
+ "geo_multilinestring",
39
+ "geo_polygon",
40
+ "geo_multipolygon"
41
+ ]);
42
+ var INPUT_NULLABLE = new Set(INPUT_NULLABLE_TYPES);
43
+ var COLUMN_NULLABLE = new Set(COLUMN_NULLABLE_TYPES);
44
+ function isRow(v) {
45
+ return v !== null && typeof v === "object" && !Array.isArray(v);
46
+ }
47
+ function rows(v) {
48
+ return Array.isArray(v) ? v.filter(isRow) : [];
49
+ }
50
+ function tableColumns(payload) {
51
+ const out = /* @__PURE__ */ new Map();
52
+ for (const table of rows(payload.dbo)) {
53
+ if (typeof table.guid === "string" && table.guid !== "" && Array.isArray(table.schema)) {
54
+ out.set(table.guid, table.schema);
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+ function describeInputs(input, tables) {
60
+ return rows(input).map((row) => describeField(row, INPUT_NULLABLE, tables));
61
+ }
62
+ function bound(v) {
63
+ const n = typeof v === "number" ? Math.trunc(v) : typeof v === "string" ? Number.parseInt(v, 10) : Number.NaN;
64
+ return Number.isFinite(n) && n > 0 ? n : void 0;
65
+ }
66
+ function listOf(row) {
67
+ if (!isListColumn({ style: isRow(row.style) ? row.style : void 0 })) return false;
68
+ const stored = isRow(row.list) ? row.list : {};
69
+ const min = bound(stored.min);
70
+ const max = bound(stored.max);
71
+ return { ...min !== void 0 ? { min } : {}, ...max !== void 0 ? { max } : {} };
72
+ }
73
+ function methodArg(v) {
74
+ return typeof v === "string" ? v : typeof v === "number" || typeof v === "boolean" ? String(v) : JSON.stringify(v);
75
+ }
76
+ function methodsOf(stored, honorDisabled = true) {
77
+ return rows(stored).flatMap((m) => {
78
+ if (typeof m.name !== "string" || m.name === "@") return [];
79
+ if (honorDisabled && m.disabled === true) return [];
80
+ return [{ name: m.name, args: Array.isArray(m.arg) ? m.arg.map(methodArg) : [] }];
81
+ });
82
+ }
83
+ function baseOf(row, type, nullableByDefault) {
84
+ return {
85
+ name: typeof row.name === "string" ? row.name : "",
86
+ required: row.required === true,
87
+ // The engine binds every `json` input nullable, whatever was stored.
88
+ nullable: type === "json" ? true : typeof row.nullable === "boolean" ? row.nullable : nullableByDefault.has(type),
89
+ list: listOf(row),
90
+ // The engine renders an enum, a vector and an object without their
91
+ // methods, so none of them applies one.
92
+ methods: type === "enum" || type === "vector" || type === "obj" ? [] : methodsOf(row.methods)
93
+ };
94
+ }
95
+ function describeField(row, nullableByDefault, tables) {
96
+ const type = typeof row.type === "string" ? row.type : "";
97
+ const field = row;
98
+ const linked = linkedTableOf(field);
99
+ if (linked !== null) return expandDbLink(row, linked, tables);
100
+ const base = baseOf(row, type, nullableByDefault);
101
+ const table = tableRefOf(field);
102
+ if (table !== null) return { ...base, type: "tableRef", keyType: type === "uuid" ? "uuid" : "int", table };
103
+ if (type === "enum") {
104
+ const values = Array.isArray(row.values) ? row.values : [];
105
+ return { ...base, type, values: values.map((v) => typeof v === "number" ? v : methodArg(v)) };
106
+ }
107
+ if (type === "vector") {
108
+ const size = isRow(row.vector) ? Number(row.vector.size) : Number.NaN;
109
+ return { ...base, type, size: Number.isFinite(size) ? size : 0 };
110
+ }
111
+ if (type === "obj") {
112
+ return { ...base, type, children: rows(row.children).map((child) => describeField(child, nullableByDefault, tables)) };
113
+ }
114
+ if (SCALAR_TYPES.has(type)) return { ...base, type };
115
+ return { ...base, type: "unknown", storedType: type };
116
+ }
117
+ function customizeMap(v) {
118
+ return isRow(v) ? v : {};
119
+ }
120
+ function expandDbLink(row, table, tables) {
121
+ const name = typeof row.name === "string" ? row.name : "";
122
+ const schema = tables.get(table);
123
+ if (schema === void 0) return { name, type: "dbLink", table, columns: void 0 };
124
+ const hidden = new Set(Array.isArray(row.hidden) ? row.hidden.filter((h) => typeof h === "string") : []);
125
+ const columns = rows(schema).filter((column) => column.name !== "id" && !hidden.has(String(column.name)));
126
+ return { name, type: "dbLink", table, columns: customizeColumns(columns, customizeMap(row.customize), tables) };
127
+ }
128
+ function customizeColumns(columns, customize, tables) {
129
+ return columns.flatMap((column) => {
130
+ const name = String(column.name);
131
+ const node = Object.hasOwn(customize, name) ? customize[name] : void 0;
132
+ if (node === void 0) {
133
+ if (column.access === "private" || column.access === "internal") return [];
134
+ return [describeField(column, COLUMN_NULLABLE, tables)];
135
+ }
136
+ const settings = isRow(node) ? node : {};
137
+ if (settings.hidden === true) return [];
138
+ const described = describeField(column, COLUMN_NULLABLE, tables);
139
+ const nested = customizeMap(settings.customize);
140
+ if (Object.keys(nested).length > 0) {
141
+ if (described.type !== "obj") return [described];
142
+ return [{ ...described, children: customizeColumns(rows(column.children), nested, tables) }];
143
+ }
144
+ if (described.type === "dbLink") return [described];
145
+ const methods = described.type === "obj" ? [] : methodsOf(settings.methods, false);
146
+ return [{ ...described, required: settings.required === true, methods }];
147
+ });
148
+ }
149
+
150
+ // src/emit/route-input-types.ts
151
+ var NO_ROUTE_INPUTS = { routes: [], channels: [], messages: [] };
152
+ var OBJECT_MEMBERS = /* @__PURE__ */ new Set([
153
+ "constructor",
154
+ "toString",
155
+ "toLocaleString",
156
+ "valueOf",
157
+ "hasOwnProperty",
158
+ "isPrototypeOf",
159
+ "propertyIsEnumerable"
160
+ ]);
161
+ var FILE_REF = "{ path?: string; name?: string; type?: string; size?: number; access?: string; meta?: unknown; url?: string }";
162
+ var FILE_UPLOAD = "{ readonly __fileUpload?: never }";
163
+ var POSITION = "{ lng: number; lat: number }";
164
+ var GEO = {
165
+ geo_point: `{ type: "point"; data: ${POSITION} }`,
166
+ geo_multipoint: `{ type: "points"; data: ${POSITION}[] }`,
167
+ geo_linestring: `{ type: "path"; data: ${POSITION}[] }`,
168
+ geo_multilinestring: `{ type: "paths"; data: ${POSITION}[][] }`,
169
+ geo_polygon: `{ type: "poly"; data: ${POSITION}[] }`,
170
+ geo_multipolygon: `{ type: "polys"; data: ${POSITION}[][] }`
171
+ };
172
+ var SCALAR = {
173
+ text: "string",
174
+ email: "string",
175
+ password: "string",
176
+ uuid: "string",
177
+ date: "string",
178
+ int: "number",
179
+ decimal: "number",
180
+ epochms: "number",
181
+ bool: "boolean",
182
+ json: "unknown",
183
+ file: FILE_UPLOAD,
184
+ blob: FILE_REF,
185
+ blob_img: FILE_REF,
186
+ blob_video: FILE_REF,
187
+ blob_audio: FILE_REF,
188
+ ...GEO
189
+ };
190
+ function propertyName(name) {
191
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);
192
+ }
193
+ function baseType(d, indent) {
194
+ switch (d.type) {
195
+ case "enum":
196
+ return d.values.length === 0 ? "never" : d.values.map((v) => typeof v === "number" ? String(v) : JSON.stringify(v)).join(" | ");
197
+ case "vector":
198
+ return "number[]";
199
+ case "tableRef":
200
+ return d.keyType === "uuid" ? "string" : "number";
201
+ case "obj":
202
+ return objectType(d.children, indent);
203
+ case "unknown":
204
+ return "unknown";
205
+ default:
206
+ return SCALAR[d.type] ?? "unknown";
207
+ }
208
+ }
209
+ function valueType(d, indent) {
210
+ let type = baseType(d, indent);
211
+ if (d.list !== false) type = d.type === "enum" ? `(${type})[]` : `${type}[]`;
212
+ if (d.nullable && type !== "unknown") type = `${type} | null`;
213
+ return type;
214
+ }
215
+ function objectType(inputs, indent) {
216
+ const keys = /* @__PURE__ */ new Map();
217
+ let open = false;
218
+ const inner = `${indent} `;
219
+ const visit = (list) => {
220
+ for (const d of list) {
221
+ if (d.type === "dbLink") {
222
+ if (d.columns === void 0) open = true;
223
+ else visit(d.columns);
224
+ continue;
225
+ }
226
+ const type = valueType(d, inner);
227
+ const seen = keys.get(d.name);
228
+ if (seen === void 0) {
229
+ keys.set(d.name, { types: [type], required: d.required });
230
+ } else {
231
+ if (!seen.types.includes(type)) seen.types.push(type);
232
+ seen.required &&= d.required;
233
+ }
234
+ }
235
+ };
236
+ visit(inputs);
237
+ const rows2 = [...keys].map(([name, { types, required }]) => {
238
+ const widened = !required && OBJECT_MEMBERS.has(name) ? [...types, `Object[${JSON.stringify(name)}]`] : types;
239
+ return `${inner}${propertyName(name)}${required ? "" : "?"}: ${widened.join(" | ")};`;
240
+ });
241
+ if (open) rows2.push(`${inner}[column: string]: unknown;`);
242
+ return rows2.length === 0 ? "{}" : `{
243
+ ${rows2.join("\n")}
244
+ ${indent}}`;
245
+ }
246
+ function inputMap(name, doc, sets) {
247
+ const rows2 = sets.map((set) => ` ${JSON.stringify(set.key)}: ${objectType(set.inputs, " ")};`);
248
+ return `${doc}
249
+ export type ${name} = ${rows2.length === 0 ? "{}" : `{
250
+ ${rows2.join("\n")}
251
+ }`};
252
+ `;
253
+ }
254
+ function renderRouteInputTypes(inputs) {
255
+ return `
256
+ ${inputMap(
257
+ "RouteInputs",
258
+ `/**
259
+ * The request body/query inputs of every endpoint, keyed exactly like ROUTES.
260
+ * Path params are inputs too, so they appear here as well as in routePath().
261
+ * Matches InferInput<typeof def>, except that a database-link input appears as
262
+ * the linked table's columns, which is what the server accepts.
263
+ */`,
264
+ inputs.routes
265
+ )}
266
+ ${inputMap(
267
+ "ChannelInputs",
268
+ "/** The path params of every realtime channel, keyed exactly like CHANNELS. */",
269
+ inputs.channels
270
+ )}
271
+ ${inputMap(
272
+ "MessageInputs",
273
+ `/**
274
+ * The payload of every realtime message, keyed "<channel key> <message name>"
275
+ * (e.g. "rooms/{room_id} send").
276
+ */`,
277
+ inputs.messages
278
+ )}
279
+ /** Every realtime message in this workspace, keyed "<channel key> <message name>". */
280
+ export type MessageName = keyof MessageInputs;
281
+ `;
282
+ }
5
283
 
6
284
  // src/emit/routes-manifest.ts
7
285
  var RouteManifestError = class extends Error {
@@ -12,16 +290,36 @@ function routeKey(route) {
12
290
  function qualifiedRouteKey(route) {
13
291
  return `${route.group}:${routeKey(route)}`;
14
292
  }
293
+ function keyRoutes(routes) {
294
+ const sorted = [...routes].sort(
295
+ (a, b) => a.canonical.localeCompare(b.canonical) || a.name.localeCompare(b.name) || a.verb.localeCompare(b.verb)
296
+ );
297
+ const holders = /* @__PURE__ */ new Map();
298
+ for (const route of sorted) holders.set(routeKey(route), (holders.get(routeKey(route)) ?? 0) + 1);
299
+ return sorted.map((route) => {
300
+ const short = routeKey(route);
301
+ const group = route.group ?? route.canonical;
302
+ return { route, key: holders.get(short) > 1 ? qualifiedRouteKey({ ...route, group }) : short, short, group };
303
+ });
304
+ }
305
+ function keyChannels(channels) {
306
+ const holders = /* @__PURE__ */ new Map();
307
+ for (const channel of channels) holders.set(channel.name, (holders.get(channel.name) ?? 0) + 1);
308
+ return [...channels].sort((a, b) => a.name.localeCompare(b.name) || a.server.localeCompare(b.server)).map((channel) => ({
309
+ channel,
310
+ key: holders.get(channel.name) > 1 ? `${channel.server}:${channel.name}` : channel.name
311
+ }));
312
+ }
15
313
  function literal(value) {
16
314
  return JSON.stringify(value);
17
315
  }
18
- function objectLiteral(rows) {
19
- return rows.length === 0 ? "{}" : `{
20
- ${rows.join("\n")}
316
+ function objectLiteral(rows2) {
317
+ return rows2.length === 0 ? "{}" : `{
318
+ ${rows2.join("\n")}
21
319
  }`;
22
320
  }
23
- function overloadsFor(fn, rows) {
24
- return rows.map(
321
+ function overloadsFor(fn, rows2) {
322
+ return rows2.map(
25
323
  (r) => r.params.length === 0 ? `export function ${fn}(name: ${literal(r.name)}): string;` : `export function ${fn}(name: ${literal(r.name)}, params: { ${r.params.map((p) => `${literal(p)}: string | number`).join("; ")} }): string;`
26
324
  ).join("\n");
27
325
  }
@@ -37,17 +335,14 @@ function renderRealtime(realtime) {
37
335
  }
38
336
  seenServer.add(server.name);
39
337
  }
40
- const holders = /* @__PURE__ */ new Map();
41
- for (const channel of realtime.channels) holders.set(channel.name, (holders.get(channel.name) ?? 0) + 1);
42
338
  const ambiguous = /* @__PURE__ */ new Map();
43
339
  const seenChannel = /* @__PURE__ */ new Set();
44
- const channels = [...realtime.channels].sort((a, b) => a.name.localeCompare(b.name) || a.server.localeCompare(b.server)).map((channel) => {
340
+ const channels = keyChannels(realtime.channels).map(({ channel, key }) => {
45
341
  if (!known.has(channel.server)) {
46
342
  throw new RouteManifestError(
47
343
  `The channel "${channel.name}" names the realtime server "${channel.server}", which is not in this workspace. A channel's socket URL comes from its server's canonical, so the server must be registered too.`
48
344
  );
49
345
  }
50
- const key = holders.get(channel.name) > 1 ? `${channel.server}:${channel.name}` : channel.name;
51
346
  if (seenChannel.has(key)) {
52
347
  throw new RouteManifestError(
53
348
  `The realtime server "${channel.server}" has two channels both named "${channel.name}". Rename one.`
@@ -91,18 +386,10 @@ export type ChannelName = keyof typeof CHANNELS;
91
386
  ${ambiguousOverloads}${overloadsFor("channelPath", channels.map((c) => ({ name: c.key, params: c.params })))}
92
387
  ${realtimeImplementation(ambiguousKeys.length > 0)}`;
93
388
  }
94
- function renderRouteManifest(routes, realtime) {
95
- const sorted = [...routes].sort(
96
- (a, b) => a.canonical.localeCompare(b.canonical) || a.name.localeCompare(b.name) || a.verb.localeCompare(b.verb)
97
- );
98
- const holders = /* @__PURE__ */ new Map();
99
- for (const route of sorted) holders.set(routeKey(route), (holders.get(routeKey(route)) ?? 0) + 1);
389
+ function renderRouteManifest(routes, realtime, inputs = NO_ROUTE_INPUTS) {
100
390
  const ambiguous = /* @__PURE__ */ new Map();
101
391
  const seen = /* @__PURE__ */ new Map();
102
- const rows = sorted.map((route) => {
103
- const short = routeKey(route);
104
- const group = route.group ?? route.canonical;
105
- const key = holders.get(short) > 1 ? qualifiedRouteKey({ ...route, group }) : short;
392
+ const rows2 = keyRoutes(routes).map(({ route, key, short, group }) => {
106
393
  const clash = seen.get(key);
107
394
  if (clash !== void 0) {
108
395
  throw new RouteManifestError(
@@ -115,7 +402,7 @@ function renderRouteManifest(routes, realtime) {
115
402
  const path = `/api:${route.canonical}/${route.name.replace(/^\/+/, "")}`;
116
403
  return { ...route, key, params, path };
117
404
  });
118
- const entries = rows.map(
405
+ const entries = rows2.map(
119
406
  (r) => ` ${literal(r.key)}: { verb: ${literal(r.verb)}, path: ${literal(r.path)} },`
120
407
  );
121
408
  const ambiguousKeys = [...ambiguous.keys()].sort();
@@ -133,7 +420,7 @@ const AMBIGUOUS: Record<string, readonly string[]> = ${objectLiteral(
133
420
  )};
134
421
  `;
135
422
  const realtimeSection = realtime && (realtime.servers.length > 0 || realtime.channels.length > 0) ? renderRealtime(realtime) : "";
136
- return `${HEADER}${FILL_PARAMS}${ambiguousSection}
423
+ return `${MANIFEST_HEADER}${FILL_PARAMS}${ambiguousSection}
137
424
  export const ROUTES = ${objectLiteral(entries)} as const;
138
425
 
139
426
  /**
@@ -141,10 +428,10 @@ export const ROUTES = ${objectLiteral(entries)} as const;
141
428
  * or \`"<group>:<VERB> <name>"\` when that pair is in more than one api group.
142
429
  */
143
430
  export type RouteName = keyof typeof ROUTES;
144
- ${rows.length > 1 ? MANY_ROUTES : ""}
145
- ${rows.length > 1 ? UNION_OVERLOAD : ""}${ambiguousOverloads ? `${ambiguousOverloads}
146
- ` : ""}${overloadsFor("routePath", rows.map((r) => ({ name: r.key, params: r.params })))}
147
- ${implementation(ambiguousKeys.length > 0)}${realtimeSection}`;
431
+ ${rows2.length > 1 ? MANY_ROUTES : ""}
432
+ ${rows2.length > 1 ? UNION_OVERLOAD : ""}${ambiguousOverloads ? `${ambiguousOverloads}
433
+ ` : ""}${overloadsFor("routePath", rows2.map((r) => ({ name: r.key, params: r.params })))}
434
+ ${implementation(ambiguousKeys.length > 0)}${realtimeSection}${renderRouteInputTypes(inputs)}`;
148
435
  }
149
436
  var UNION_OVERLOAD = `/** A union of route names (e.g. a \`key: RouteName\` parameter): params checked at runtime. */
150
437
  export function routePath<N extends RouteName>(name: ManyRoutes<N>, params?: Record<string, string | number>): string;
@@ -153,13 +440,16 @@ var MANY_ROUTES = `
153
440
  /** \`N\` when it is a union of two or more route names, else \`never\`. */
154
441
  type ManyRoutes<N> = [(N extends unknown ? (x: N) => void : never) extends (x: infer I) => void ? I : never] extends [never] ? N : never;
155
442
  `;
156
- var HEADER = `/**
443
+ var MANIFEST_HEADER = `/**
157
444
  * GENERATED by \`xanosdk routes --emit\`. Do not edit.
158
445
  *
159
- * Plain data plus one interpolator \u2014 this file imports nothing, so a frontend
160
- * gets the typed path/verb (and socket) contract without pulling the SDK runtime
161
- * into its bundle. Regenerate after changing an endpoint's name, verb, or api
162
- * group, or a realtime server's or channel's name.
446
+ * Plain data plus one interpolator, and the request input types of every
447
+ * endpoint, channel and message. The core sections import nothing; the only
448
+ * imports are the packages an installed module's block declares, never the
449
+ * SDK itself. So a frontend gets the typed path/verb (and socket) contract
450
+ * without pulling the SDK runtime into its bundle. Regenerate after changing an
451
+ * endpoint's name, verb, api group or inputs, or a realtime server's, channel's
452
+ * or message's name or inputs.
163
453
  */
164
454
  `;
165
455
  var FILL_PARAMS = `
@@ -376,12 +666,13 @@ function planRouteManifest(payload, locked = () => void 0) {
376
666
  if (guid === void 0) continue;
377
667
  const name = text(a.name);
378
668
  if (name !== void 0) groupByGuid.set(guid, name);
379
- const resolved = text(a.canonical) ?? (name !== void 0 ? locked("app", name) : void 0);
380
- if (resolved) canonicalByGuid.set(guid, resolved);
669
+ const resolved2 = text(a.canonical) ?? (name !== void 0 ? locked("app", name) : void 0);
670
+ if (resolved2) canonicalByGuid.set(guid, resolved2);
381
671
  }
382
- const rows = list("query").map((q) => {
672
+ const storedInputs = /* @__PURE__ */ new Map();
673
+ const rows2 = list("query").map((q) => {
383
674
  const group = ref(q.app);
384
- return {
675
+ const row = {
385
676
  verb: q.verb,
386
677
  // already an uppercase HttpVerb in the bundle
387
678
  // Match getPath(): the path segment drops any leading slash on the name.
@@ -389,8 +680,10 @@ function planRouteManifest(payload, locked = () => void 0) {
389
680
  canonical: group !== void 0 ? canonicalByGuid.get(group) : void 0,
390
681
  ...group !== void 0 && groupByGuid.has(group) ? { group: groupByGuid.get(group) } : {}
391
682
  };
683
+ storedInputs.set(row, q.input);
684
+ return row;
392
685
  });
393
- rows.sort((a, b) => (a.canonical ?? "").localeCompare(b.canonical ?? "") || a.name.localeCompare(b.name));
686
+ rows2.sort((a, b) => (a.canonical ?? "").localeCompare(b.canonical ?? "") || a.name.localeCompare(b.name));
394
687
  const serverNameByGuid = /* @__PURE__ */ new Map();
395
688
  const serverRows = list("realtime_server").flatMap((s) => {
396
689
  const name = text(s.name);
@@ -401,23 +694,51 @@ function planRouteManifest(payload, locked = () => void 0) {
401
694
  });
402
695
  const servers = serverRows.flatMap((s) => s.canonical ? [{ name: s.name, canonical: s.canonical }] : []);
403
696
  const describable = new Set(servers.map((s) => s.name));
697
+ const channelGuids = /* @__PURE__ */ new Map();
404
698
  const channels = list("channel").flatMap((c) => {
405
699
  const name = text(c.name);
406
700
  if (name === void 0) return [];
407
701
  const serverGuid = ref(c.server);
408
702
  const server = serverGuid !== void 0 ? serverNameByGuid.get(serverGuid) : void 0;
409
703
  if (server === void 0 || !describable.has(server)) return [];
410
- return [{ name, server }];
704
+ const channel = { name, server };
705
+ channelGuids.set(channel, text(c.guid));
706
+ storedInputs.set(channel, c.input);
707
+ return [channel];
708
+ });
709
+ const resolved = rows2.flatMap((r) => {
710
+ if (!r.canonical) return [];
711
+ const entry = { name: r.name, verb: r.verb, canonical: r.canonical, ...r.group !== void 0 ? { group: r.group } : {} };
712
+ storedInputs.set(entry, storedInputs.get(r));
713
+ return [entry];
714
+ });
715
+ const tables = tableColumns(payload);
716
+ const routeInputs = keyRoutes(resolved).map(({ route, key }) => ({
717
+ key,
718
+ inputs: describeInputs(storedInputs.get(route), tables)
719
+ }));
720
+ const channelKeyByGuid = /* @__PURE__ */ new Map();
721
+ const channelInputs = keyChannels(channels).map(({ channel, key }) => {
722
+ const guid = channelGuids.get(channel);
723
+ if (guid !== void 0) channelKeyByGuid.set(guid, key);
724
+ return { key, inputs: describeInputs(storedInputs.get(channel), tables) };
725
+ });
726
+ const messageInputs = list("message").flatMap((m) => {
727
+ const name = text(m.name);
728
+ const guid = ref(m.channel);
729
+ const channel = guid !== void 0 ? channelKeyByGuid.get(guid) : void 0;
730
+ if (name === void 0 || channel === void 0) return [];
731
+ return [{ key: `${channel} ${name}`, channel, name, inputs: describeInputs(m.input, tables) }];
411
732
  });
733
+ messageInputs.sort((a, b) => byCodeUnit(a.key, b.key));
412
734
  return {
413
- rows,
414
- resolved: rows.flatMap(
415
- (r) => r.canonical ? [{ name: r.name, verb: r.verb, canonical: r.canonical, ...r.group !== void 0 ? { group: r.group } : {} }] : []
416
- ),
417
- unresolved: rows.filter((r) => !r.canonical),
735
+ rows: rows2,
736
+ resolved,
737
+ unresolved: rows2.filter((r) => !r.canonical),
418
738
  servers,
419
739
  unresolvedServers: serverRows.filter((s) => !s.canonical).map((s) => s.name),
420
- channels
740
+ channels,
741
+ inputs: { routes: routeInputs, channels: channelInputs, messages: messageInputs }
421
742
  };
422
743
  }
423
744
  function unresolvedCanonicalMessage(unresolved, entry) {
@@ -430,7 +751,8 @@ function renderPlannedManifest(plan, entry = "<entry>") {
430
751
  if (plan.resolved.length === 0 && plan.servers.length === 0) return void 0;
431
752
  return renderRouteManifest(
432
753
  plan.resolved,
433
- plan.servers.length > 0 ? { servers: plan.servers, channels: plan.channels } : void 0
754
+ plan.servers.length > 0 ? { servers: plan.servers, channels: plan.channels } : void 0,
755
+ plan.inputs
434
756
  );
435
757
  }
436
758
 
@@ -438,10 +760,13 @@ export {
438
760
  RouteManifestError,
439
761
  routeKey,
440
762
  qualifiedRouteKey,
763
+ keyRoutes,
764
+ keyChannels,
441
765
  renderRouteManifest,
766
+ MANIFEST_HEADER,
442
767
  ROUTES_MANIFEST_BASENAME,
443
768
  planRouteManifest,
444
769
  unresolvedCanonicalMessage,
445
770
  renderPlannedManifest
446
771
  };
447
- //# sourceMappingURL=chunk-TTVAHCWP.js.map
772
+ //# sourceMappingURL=chunk-LBJA7IEM.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  installedCliAt,
10
10
  pathsShownFrom
11
- } from "./chunk-SBR2WZXG.js";
11
+ } from "./chunk-D7BUMOKU.js";
12
12
 
13
13
  // src/emit/project-sdk.ts
14
14
  import { existsSync, readFileSync, realpathSync } from "fs";
@@ -87,4 +87,4 @@ export {
87
87
  installedCliCommand,
88
88
  skewNote
89
89
  };
90
- //# sourceMappingURL=chunk-KUTFFHUM.js.map
90
+ //# sourceMappingURL=chunk-LD6ARK3A.js.map