@xano/sdk 1.0.0

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 (336) hide show
  1. package/CHANGELOG.md +788 -0
  2. package/LICENSE +21 -0
  3. package/README.md +541 -0
  4. package/dist/.build-fingerprint +1 -0
  5. package/dist/agent-file-refresh-ZEMK33AX.js +38 -0
  6. package/dist/answer-shape-K67TAAPY.js +33 -0
  7. package/dist/backend-dir-2U53CIAL.js +39 -0
  8. package/dist/backend-slot-7QXW2QYC.js +28 -0
  9. package/dist/bin.d.ts +1 -0
  10. package/dist/bin.js +255 -0
  11. package/dist/branch-NCRNWQBQ.js +61 -0
  12. package/dist/branch-commands-ACIRCEQJ.js +79 -0
  13. package/dist/bundle.d.ts +223 -0
  14. package/dist/bundle.js +153 -0
  15. package/dist/capture-WAXPD7DR.js +41 -0
  16. package/dist/chunk-27GWNP2I.js +23 -0
  17. package/dist/chunk-2CMJZDCL.js +177 -0
  18. package/dist/chunk-2EZ3ZJZZ.js +302 -0
  19. package/dist/chunk-2GNFDZA2.js +390 -0
  20. package/dist/chunk-2MNLRIOX.js +11 -0
  21. package/dist/chunk-2TFRR6JV.js +104 -0
  22. package/dist/chunk-2ZUEE4EK.js +408 -0
  23. package/dist/chunk-36JUQZVQ.js +22 -0
  24. package/dist/chunk-3DRXWLJ5.js +83 -0
  25. package/dist/chunk-3JDU4VRL.js +137 -0
  26. package/dist/chunk-3KZCLN4Z.js +241 -0
  27. package/dist/chunk-3LDULPRE.js +168 -0
  28. package/dist/chunk-3M4LFYNQ.js +111 -0
  29. package/dist/chunk-3XI5CTUE.js +22 -0
  30. package/dist/chunk-3YW23UFH.js +50 -0
  31. package/dist/chunk-45UIT5T2.js +862 -0
  32. package/dist/chunk-4BW2SG2N.js +46 -0
  33. package/dist/chunk-4KHEMC32.js +79 -0
  34. package/dist/chunk-4POWHT2K.js +321 -0
  35. package/dist/chunk-4Q2GN7NW.js +192 -0
  36. package/dist/chunk-5A2PLKZB.js +70 -0
  37. package/dist/chunk-5FBYXK5P.js +159 -0
  38. package/dist/chunk-5HVXPTU4.js +323 -0
  39. package/dist/chunk-5QU2P5CA.js +304 -0
  40. package/dist/chunk-5V5XU32D.js +191 -0
  41. package/dist/chunk-5ZSO4T2G.js +10 -0
  42. package/dist/chunk-622HUCZT.js +10 -0
  43. package/dist/chunk-65HWOMGV.js +177 -0
  44. package/dist/chunk-6ELFRN3P.js +365 -0
  45. package/dist/chunk-6HO3NCSJ.js +1055 -0
  46. package/dist/chunk-6IUMKYWI.js +457 -0
  47. package/dist/chunk-6KEB3C3U.js +65 -0
  48. package/dist/chunk-6MR5TI5V.js +987 -0
  49. package/dist/chunk-6NNTNXN7.js +157 -0
  50. package/dist/chunk-6PBR37LN.js +97 -0
  51. package/dist/chunk-6QXLMMT3.js +155 -0
  52. package/dist/chunk-6ZGJCBZS.js +224 -0
  53. package/dist/chunk-73IVBKMA.js +250 -0
  54. package/dist/chunk-7G3CTU7I.js +286 -0
  55. package/dist/chunk-A3UDOZB6.js +222 -0
  56. package/dist/chunk-A6E77GDW.js +85 -0
  57. package/dist/chunk-AHJWCYQO.js +660 -0
  58. package/dist/chunk-AKNCFVKZ.js +36 -0
  59. package/dist/chunk-AM4FKL4J.js +237 -0
  60. package/dist/chunk-AN6BL47T.js +26 -0
  61. package/dist/chunk-AOSYVMUS.js +147 -0
  62. package/dist/chunk-APWXY5SL.js +182 -0
  63. package/dist/chunk-AWEIIR2U.js +218 -0
  64. package/dist/chunk-AWQ7BQTQ.js +73 -0
  65. package/dist/chunk-BAUZOWGX.js +393 -0
  66. package/dist/chunk-BHACRS6R.js +940 -0
  67. package/dist/chunk-BWPNT55T.js +680 -0
  68. package/dist/chunk-C6RIMRU4.js +187 -0
  69. package/dist/chunk-CGVQZXYG.js +263 -0
  70. package/dist/chunk-CIMQZRRE.js +162 -0
  71. package/dist/chunk-CJHQKJU4.js +113 -0
  72. package/dist/chunk-CTMO46PK.js +1897 -0
  73. package/dist/chunk-D53J55C5.js +106 -0
  74. package/dist/chunk-D7VGG3WS.js +90 -0
  75. package/dist/chunk-DAD3ONIS.js +245 -0
  76. package/dist/chunk-DGWHAVRG.js +162 -0
  77. package/dist/chunk-DX4QR4B2.js +483 -0
  78. package/dist/chunk-EHP3WPEG.js +21 -0
  79. package/dist/chunk-ELP2HMXC.js +432 -0
  80. package/dist/chunk-ERVIASGL.js +21 -0
  81. package/dist/chunk-ET4Y4XCB.js +865 -0
  82. package/dist/chunk-ETO6LGLD.js +4750 -0
  83. package/dist/chunk-EUUUMY7J.js +24 -0
  84. package/dist/chunk-FQJ2TTHP.js +218 -0
  85. package/dist/chunk-FQOF7E2E.js +133 -0
  86. package/dist/chunk-FWD7AL6N.js +21 -0
  87. package/dist/chunk-FXFV3KU6.js +138 -0
  88. package/dist/chunk-FXRQOWTE.js +171 -0
  89. package/dist/chunk-G554NZNI.js +210 -0
  90. package/dist/chunk-GSGDWJB5.js +13 -0
  91. package/dist/chunk-H2V3N23D.js +66 -0
  92. package/dist/chunk-H5C7MBCR.js +159 -0
  93. package/dist/chunk-HHN734BU.js +371 -0
  94. package/dist/chunk-HRVBLCVJ.js +243 -0
  95. package/dist/chunk-HVRUQXGD.js +1264 -0
  96. package/dist/chunk-I4F5TCJH.js +130 -0
  97. package/dist/chunk-IDOTCMDV.js +57 -0
  98. package/dist/chunk-IGOLHKWF.js +427 -0
  99. package/dist/chunk-JGE7CAWB.js +148 -0
  100. package/dist/chunk-JTUKLCXS.js +92 -0
  101. package/dist/chunk-JZGVVJSI.js +66 -0
  102. package/dist/chunk-K4WX6UUU.js +923 -0
  103. package/dist/chunk-K5BBGTYZ.js +217 -0
  104. package/dist/chunk-K6RXBGUB.js +427 -0
  105. package/dist/chunk-KTSDSD36.js +165 -0
  106. package/dist/chunk-L5JYN3NM.js +1038 -0
  107. package/dist/chunk-LIEOKXKD.js +354 -0
  108. package/dist/chunk-LLNZGEFK.js +51 -0
  109. package/dist/chunk-LPECSJ2J.js +55 -0
  110. package/dist/chunk-LQCMKAJ7.js +413 -0
  111. package/dist/chunk-LRN4ZJCQ.js +1145 -0
  112. package/dist/chunk-MJ4ZVHKN.js +17 -0
  113. package/dist/chunk-MXHSQOC4.js +3061 -0
  114. package/dist/chunk-N5GKCWE5.js +367 -0
  115. package/dist/chunk-NA3PXMEF.js +10 -0
  116. package/dist/chunk-NAQDMEHV.js +76 -0
  117. package/dist/chunk-NWKXM5RD.js +109 -0
  118. package/dist/chunk-NZOWWHU5.js +196 -0
  119. package/dist/chunk-OHX6MIUZ.js +184 -0
  120. package/dist/chunk-OOXWYAA4.js +15 -0
  121. package/dist/chunk-OPHB5ORL.js +1990 -0
  122. package/dist/chunk-OXA6PSZT.js +1725 -0
  123. package/dist/chunk-P2HAGF6H.js +73 -0
  124. package/dist/chunk-PTHVMXZI.js +3036 -0
  125. package/dist/chunk-PZ5AY32C.js +10 -0
  126. package/dist/chunk-Q325JKYB.js +189 -0
  127. package/dist/chunk-Q7DGTQ5G.js +255 -0
  128. package/dist/chunk-QCNYHBL7.js +601 -0
  129. package/dist/chunk-QO6BVGS5.js +145 -0
  130. package/dist/chunk-QXTKSOFI.js +76 -0
  131. package/dist/chunk-ROY4YAEQ.js +66 -0
  132. package/dist/chunk-RTJRZFFY.js +447 -0
  133. package/dist/chunk-SAVJUS2X.js +128 -0
  134. package/dist/chunk-SFLHVCKX.js +173 -0
  135. package/dist/chunk-STSFNCY4.js +127 -0
  136. package/dist/chunk-SWBF2LTK.js +170 -0
  137. package/dist/chunk-T5KELPAR.js +109 -0
  138. package/dist/chunk-TFFGOFVZ.js +1481 -0
  139. package/dist/chunk-TLHIFK4M.js +256 -0
  140. package/dist/chunk-TLQE7ZN3.js +156 -0
  141. package/dist/chunk-TPHWJ7UG.js +1981 -0
  142. package/dist/chunk-TRJCALW3.js +291 -0
  143. package/dist/chunk-TTEIYD5P.js +133 -0
  144. package/dist/chunk-U64O2MXY.js +407 -0
  145. package/dist/chunk-UCQ2VUTG.js +630 -0
  146. package/dist/chunk-UTI5G6OJ.js +44 -0
  147. package/dist/chunk-UVHDMMIP.js +188 -0
  148. package/dist/chunk-UZ6QQWJT.js +120 -0
  149. package/dist/chunk-VAX3UZOY.js +686 -0
  150. package/dist/chunk-W3HBUKFO.js +57 -0
  151. package/dist/chunk-WKQLGKCL.js +2823 -0
  152. package/dist/chunk-WQFNASK4.js +560 -0
  153. package/dist/chunk-WRBKLYSJ.js +224 -0
  154. package/dist/chunk-WTPZRR4I.js +17 -0
  155. package/dist/chunk-WZDJ2LLX.js +2385 -0
  156. package/dist/chunk-X2NL4KUO.js +14 -0
  157. package/dist/chunk-X4DVXBFY.js +38 -0
  158. package/dist/chunk-X677DMZM.js +7050 -0
  159. package/dist/chunk-XBKMWY7F.js +612 -0
  160. package/dist/chunk-XNCP4KYO.js +78 -0
  161. package/dist/chunk-XVBGLISP.js +35 -0
  162. package/dist/chunk-XW6KISBB.js +1192 -0
  163. package/dist/chunk-YGZHHAAB.js +8156 -0
  164. package/dist/chunk-YHEFQUQB.js +186 -0
  165. package/dist/chunk-YLDALTWZ.js +653 -0
  166. package/dist/chunk-YU4HSQW7.js +229 -0
  167. package/dist/chunk-ZDPP6RKB.js +27 -0
  168. package/dist/chunk-ZFDZKNGG.js +194 -0
  169. package/dist/chunk-ZIY7RNUT.js +49 -0
  170. package/dist/chunk-ZYJP6BOO.js +30 -0
  171. package/dist/cli.d.ts +1111 -0
  172. package/dist/cli.js +165 -0
  173. package/dist/codegen-command-VR2GWR6C.js +173 -0
  174. package/dist/codegen.d.ts +115 -0
  175. package/dist/codegen.js +19 -0
  176. package/dist/commands-GJMJ4XYZ.js +76 -0
  177. package/dist/completion-ZQLO6PB6.js +738 -0
  178. package/dist/config-MBYGCAFK.js +136 -0
  179. package/dist/deploy-command-JVZPWHMK.js +180 -0
  180. package/dist/deploy-source-3W45CXMP.js +81 -0
  181. package/dist/dev-env-sync-HN44K4D5.js +188 -0
  182. package/dist/diagnostics-UEAAHWVF.js +30 -0
  183. package/dist/display-name-hint-ABBPVQIR.js +46 -0
  184. package/dist/emit-CyhBDxli.d.ts +7007 -0
  185. package/dist/env-example-refresh-ET5HMMDW.js +126 -0
  186. package/dist/env-pull-command-TNMNB3CV.js +323 -0
  187. package/dist/env-target-O4HRKTGZ.js +40 -0
  188. package/dist/env-var-command-ZIRDCAZA.js +427 -0
  189. package/dist/ephemeral-P7F3PMAD.js +54 -0
  190. package/dist/ephemeral-command-CLJJKOFT.js +592 -0
  191. package/dist/ephemeral-state-PYCBSOGX.js +61 -0
  192. package/dist/file-lock-PT74GWYW.js +10 -0
  193. package/dist/generate-command-AYEOLA26.js +510 -0
  194. package/dist/gitignore-3SJ3WNRG.js +51 -0
  195. package/dist/guards-4EBNCZDC.js +162 -0
  196. package/dist/hosted-file-PSHJB3HX.js +28 -0
  197. package/dist/impersonate-command-5JAS3WSV.js +152 -0
  198. package/dist/import-EQSFU6JC.js +19 -0
  199. package/dist/index.d.ts +5470 -0
  200. package/dist/index.js +371 -0
  201. package/dist/init-command-X2FR4UAK.js +125 -0
  202. package/dist/init-modules-RY7UHAOL.js +50 -0
  203. package/dist/init-web-M4YZSZK6.js +42 -0
  204. package/dist/internal.d.ts +179 -0
  205. package/dist/internal.js +2634 -0
  206. package/dist/io-RC56QSN5.js +26 -0
  207. package/dist/keep-data-merge-7MPLVAVI.js +1119 -0
  208. package/dist/lambda-config-reconcile-OUZ4OYAB.js +116 -0
  209. package/dist/landed-753YLJ5H.js +40 -0
  210. package/dist/landing-record-SU52SKXU.js +61 -0
  211. package/dist/live-diff-YONW2VI3.js +65 -0
  212. package/dist/local-engine-choice-CH5X3W7E.js +79 -0
  213. package/dist/local-engine-command-Z3OL7VOD.js +766 -0
  214. package/dist/local-engine-config-5U3SC434.js +39 -0
  215. package/dist/local-engine-deploy-PCQ4SNPB.js +39 -0
  216. package/dist/local-engine-process-EHTE5LLU.js +63 -0
  217. package/dist/local-engine-state-A4FTRFAF.js +32 -0
  218. package/dist/local-engine-update-check-6L645VBL.js +162 -0
  219. package/dist/lock-MRRHW5GS.js +87 -0
  220. package/dist/lock-commands-2QG25HL7.js +963 -0
  221. package/dist/login-command-QPYRWOXZ.js +538 -0
  222. package/dist/logout-command-WOIQLDP6.js +56 -0
  223. package/dist/loop-ALIZLOSX.js +191 -0
  224. package/dist/marketplace-command-K5YL42NO.js +977 -0
  225. package/dist/marketplace-resolve-LY32JES5.js +40 -0
  226. package/dist/meta-client-YXGPW53C.js +244 -0
  227. package/dist/module-manifest-JFGHU2TC.js +38 -0
  228. package/dist/near-key.d.ts +13 -0
  229. package/dist/near-key.js +8 -0
  230. package/dist/node.d.ts +95 -0
  231. package/dist/node.js +969 -0
  232. package/dist/operation-outcome-TZSESNC7.js +51 -0
  233. package/dist/output-target-AL3I44GG.js +47 -0
  234. package/dist/package-manager-PRAHUSCN.js +34 -0
  235. package/dist/plan-disclosure-6G4MLZKD.js +114 -0
  236. package/dist/plugin-contributions-WRNY5ABG.js +28 -0
  237. package/dist/plugin-prompt-4VA3B4FF.js +20 -0
  238. package/dist/plugin-questions-JTSYA74Q.js +24 -0
  239. package/dist/plugin.d.ts +396 -0
  240. package/dist/plugin.js +1 -0
  241. package/dist/preflight-command-2T5Z36MI.js +321 -0
  242. package/dist/profile-command-AH3PIM4X.js +800 -0
  243. package/dist/profile-pointer-GRWJU3YD.js +31 -0
  244. package/dist/profile-select-74TRDEPD.js +23 -0
  245. package/dist/project-dependency-KSH63ODT.js +35 -0
  246. package/dist/project-sdk-REPPOIBD.js +24 -0
  247. package/dist/promote-command-PCWT5N6S.js +140 -0
  248. package/dist/prompt-II3F3LND.js +27 -0
  249. package/dist/publish-command-TTDUUJI5.js +414 -0
  250. package/dist/pull-command-VBO7C4S3.js +161 -0
  251. package/dist/pull-superseded-GJWLG7XO.js +20 -0
  252. package/dist/release-command-N4ZPKMHR.js +146 -0
  253. package/dist/release-ns-command-3KFDMZ6G.js +1745 -0
  254. package/dist/response-HlXahv4K.d.ts +925 -0
  255. package/dist/retry-command-AS5EVREX.js +34 -0
  256. package/dist/routes-manifest-SNWUVBT6.js +43 -0
  257. package/dist/runtime-XETHVF33.js +14 -0
  258. package/dist/scaffold.d.ts +1911 -0
  259. package/dist/scaffold.js +107 -0
  260. package/dist/secrets-file-LVZD6IIM.js +56 -0
  261. package/dist/secrets-fill-command-TTCPSVXN.js +218 -0
  262. package/dist/seed-VU7C3QYS.js +46 -0
  263. package/dist/sent-writes-N7X4OVXT.js +22 -0
  264. package/dist/source-resolve-S2XA3XZF.js +83 -0
  265. package/dist/static-host-B2Y6AG3W.js +352 -0
  266. package/dist/status-command-RUDXTF7I.js +554 -0
  267. package/dist/store-6VNCD4D7.js +20 -0
  268. package/dist/store-ARM6VMO5.js +98 -0
  269. package/dist/store-DuYfzKlW.d.ts +3144 -0
  270. package/dist/suggest-6FOOYKHG.js +12 -0
  271. package/dist/sveltekit.d.ts +154 -0
  272. package/dist/sveltekit.js +109 -0
  273. package/dist/sync-contributions-UCEROO26.js +415 -0
  274. package/dist/table-ENAVMITR.js +42 -0
  275. package/dist/tables-command-GUPXXSB5.js +156 -0
  276. package/dist/tenant-IIHPOHGP.js +42 -0
  277. package/dist/tenant-command-D5HGI2X4.js +965 -0
  278. package/dist/test-command-TIKZMDPZ.js +476 -0
  279. package/dist/tests-BGGIOK3L.js +26 -0
  280. package/dist/token-NICJUTMT.js +72 -0
  281. package/dist/toolchain-hooks-GHKLUJOH.js +96 -0
  282. package/dist/toolchain-modules-5EAZUONB.js +24 -0
  283. package/dist/tracked-backend-EIBUMDZA.js +80 -0
  284. package/dist/update-check-2W2NLDTC.js +136 -0
  285. package/dist/upgrade-command-QHNFWM7O.js +531 -0
  286. package/dist/verify-rollout-DRCK5TDD.js +61 -0
  287. package/dist/whoami-command-STGINTXH.js +51 -0
  288. package/dist/workspace-2CLHU2LK.js +93 -0
  289. package/dist/workspace-binding-56PIIPCP.js +54 -0
  290. package/dist/workspace-command-JEXQETJD.js +535 -0
  291. package/dist/workspace-env-F2RFMSC5.js +70 -0
  292. package/dist/workspace-export-OJSH2HIW.js +21 -0
  293. package/dist/writable-VA7OISSK.js +25 -0
  294. package/dist/xano-ICFUSPFR.js +42 -0
  295. package/dist/xanosdk-import-GN42TO2B.js +56 -0
  296. package/dist/xanosdk-project-S6DXJONQ.js +41 -0
  297. package/dist/xdo-CxDr2Q1C.d.ts +1371 -0
  298. package/guides/README.md +33 -0
  299. package/guides/authoring.md +921 -0
  300. package/guides/cli.md +401 -0
  301. package/guides/codegen.md +177 -0
  302. package/guides/codes.md +404 -0
  303. package/guides/coverage.md +74 -0
  304. package/guides/deploying.md +1525 -0
  305. package/guides/environment.md +400 -0
  306. package/guides/marketplace.md +415 -0
  307. package/guides/module-contract.md +558 -0
  308. package/guides/object-kinds.md +433 -0
  309. package/guides/project-structure.md +43 -0
  310. package/guides/scaffold.md +351 -0
  311. package/guides/typed-frontend.md +242 -0
  312. package/llms/client.md +63 -0
  313. package/llms/errors.md +56 -0
  314. package/llms/fields.md +176 -0
  315. package/llms/filters.md +183 -0
  316. package/llms/kinds-agent-mcp.md +30 -0
  317. package/llms/kinds-core.md +100 -0
  318. package/llms/kinds-knowledge.md +20 -0
  319. package/llms/kinds-realtime.md +76 -0
  320. package/llms/lambda.md +94 -0
  321. package/llms/legacy.md +44 -0
  322. package/llms/lock.md +40 -0
  323. package/llms/object-kinds.md +34 -0
  324. package/llms/statements-calls.md +62 -0
  325. package/llms/statements-catalog.md +320 -0
  326. package/llms/statements-data.md +66 -0
  327. package/llms/statements-runtime.md +68 -0
  328. package/llms/tests.md +59 -0
  329. package/llms/toolchain.md +16 -0
  330. package/llms/triggers.md +36 -0
  331. package/llms/values.md +29 -0
  332. package/llms-full.txt +2085 -0
  333. package/llms.txt +493 -0
  334. package/manifest.json +11224 -0
  335. package/package.json +162 -0
  336. package/types/lambda-globals.d.ts +129 -0
@@ -0,0 +1,3144 @@
1
+ import { V as Value, i as FilterXdo } from './xdo-CxDr2Q1C.js';
2
+ import { t as MockMap, S as Statement } from './response-HlXahv4K.js';
3
+ import { y as Condition, L as LockFile } from './emit-CyhBDxli.js';
4
+
5
+ /** A surface that takes a JavaScript body: the lambda statement, or a filter. */
6
+ type LambdaSurface = "s.lambda" | "fl.lambda" | "map" | "filter" | "some" | "every" | "find" | "findIndex" | "reduce";
7
+ /**
8
+ * Surface → the identifiers a body may reference. Live-probed rather than read
9
+ * off any documentation, and asserted against the recorded probe output in the
10
+ * tests, so the guard, the types, and the docs cannot disagree with the engine
11
+ * or with each other.
12
+ *
13
+ * `console` and `crypto` are globals inside the body rather than destructured
14
+ * bindings, so they are legal to reference but are not part of the parameter
15
+ * type. Every other entry is `$`-prefixed, which is what makes the scan below
16
+ * able to see a violation at all.
17
+ */
18
+ declare const LAMBDA_BINDINGS: Readonly<Record<LambdaSurface, readonly string[]>>;
19
+ /** Globals a body may use that are not `$`-bindings (so the scan never sees them). */
20
+ declare const LAMBDA_GLOBALS: readonly string[];
21
+ /**
22
+ * The libraries the engine preloads as GLOBALS in a lambda body — the only
23
+ * dependency route that works on every instance.
24
+ *
25
+ * A body is prepared for execution in one of two ways depending on the
26
+ * instance's executor generation, and the two disagree about `import()`:
27
+ *
28
+ * - one transpiles the body and lets the runtime resolve a specifier when the
29
+ * `import()` actually runs, so `node:*`, `npm:*`, a bare package and a URL
30
+ * all resolve;
31
+ * - the other BUNDLES the body before running it, which resolves every
32
+ * LITERAL specifier ahead of time against the container's filesystem —
33
+ * where none of them exist. `await import("node:crypto")` comes back as the
34
+ * text `Could not resolve "node:crypto"`, with HTTP 200. A literal
35
+ * `require("axios")` fails there for the same reason.
36
+ *
37
+ * These names need no specifier, so they are unaffected by which generation
38
+ * runs the body. Live-probed from `Object.keys(globalThis)` inside a body; the
39
+ * evidence is `s.lambda.globalThis` in `vendor/lambda-bindings.json`, and
40
+ * `test/values/lambda.test.ts` fails if this list drifts from it.
41
+ *
42
+ * Not exhaustive by design: it lists what an author is likely to reach for. A
43
+ * body can always read `Object.keys(globalThis)` for its own instance.
44
+ */
45
+ declare const LAMBDA_MODULE_GLOBALS: readonly string[];
46
+ /**
47
+ * Every filter that takes a JavaScript body → which positional slot the body
48
+ * occupies, and which binding set it runs against.
49
+ *
50
+ * The slot is fixed rather than looked up because it is what the guard has to
51
+ * key on: `filter()` sees positions, not argument names. `reduce`'s body is the
52
+ * SECOND argument (the accumulator's initial value comes first, and that slot
53
+ * being invisible is the other half of the same failure); every other lambda
54
+ * filter's is the
55
+ * first.
56
+ *
57
+ * `fl.transform` is deliberately absent. It takes Xano Expression Engine source,
58
+ * not a JavaScript body, and binds the operand as `$0` rather than `$this` — so
59
+ * validating it against THIS contract would reject correct code. It has its own
60
+ * guard, on its own probed contract, in `./expression-arg.ts`; a
61
+ * `return` there is not merely refused but sometimes silently mis-evaluated.
62
+ * `test/values/filters.test.ts` enumerates the `code`-taking filters from
63
+ * `FILTER_SPECS` and fails if one is missing here.
64
+ */
65
+ declare const LAMBDA_CODE_FILTERS: Readonly<Record<string, {
66
+ readonly slot: number;
67
+ readonly surface: LambdaSurface;
68
+ }>>;
69
+ /**
70
+ * The statements that take a JavaScript body → the field carrying it and the
71
+ * bindings it runs against. One today; a table so a second cannot be added
72
+ * without deciding its surface.
73
+ */
74
+ declare const LAMBDA_STATEMENTS: Readonly<Record<string, {
75
+ readonly field: string;
76
+ readonly surface: LambdaSurface;
77
+ }>>;
78
+ /**
79
+ * Ambient request state, in scope at every surface.
80
+ *
81
+ * Typed `any` deliberately: `$var` holds the enclosing function's stack
82
+ * variables and `$input` its declared inputs, and threading those inferred
83
+ * shapes in here is a substantial type-level piece of work in its own right. The
84
+ * value this parameter carries today is the NAMES — that a binding exists, is
85
+ * spelled this way, and exists at this surface.
86
+ */
87
+ interface AmbientBindings {
88
+ /** Workspace environment variables and request settings. */
89
+ $env: any;
90
+ /** The enclosing function's inputs, by name. */
91
+ $input: any;
92
+ /** The enclosing function's stack variables, by name — `$var.total`. A stack
93
+ * variable is NOT also injected as a bare `$total`. */
94
+ $var: any;
95
+ /** The authenticated caller, when the request carries a token. */
96
+ $auth: any;
97
+ }
98
+ /** Ambient state plus the per-element bindings of an iterating filter. */
99
+ interface IteratingBindings extends AmbientBindings {
100
+ /** The current element. */
101
+ $this: any;
102
+ /** The current element's position, from 0. */
103
+ $index: number;
104
+ /** The whole array the filter is applied to. */
105
+ $parent: any;
106
+ }
107
+ /** The bindings in scope in a body at `S` — the type of a {@link lam.fn} parameter. */
108
+ type LambdaBindings<S extends LambdaSurface = "reduce"> = S extends "reduce" ? IteratingBindings & {
109
+ /** The accumulator. Commonly mis-typed as `$acc`. */
110
+ $result: any;
111
+ } : S extends "s.lambda" ? AmbientBindings : S extends "fl.lambda" ? AmbientBindings & {
112
+ /** The piped value the filter is applied to. */
113
+ $this: any;
114
+ } : IteratingBindings;
115
+ /**
116
+ * A lambda body written INLINE at the call site, where the surface is already
117
+ * known — `fl.map(({ $this }) => $this * 2)`.
118
+ *
119
+ * This is the form to reach for. `lam.fn` exists for a body that is shared,
120
+ * captured, or otherwise built away from where it runs; everywhere else the
121
+ * call site knows which surface it is, so naming the surface a second time is
122
+ * something for the SDK to do rather than the author. TypeScript types the
123
+ * parameter contextually from the position, so `$this` autocompletes inside
124
+ * `fl.map` and `$result` does not compile there.
125
+ */
126
+ type LambdaBody<S extends LambdaSurface = LambdaSurface> = (bindings: LambdaBindings<S>, captured: Record<string, CaptureValue>) => unknown;
127
+ /** A JSON value a capture entry can carry into the body. */
128
+ type CaptureValue = string | number | boolean | null | {
129
+ [k: string]: CaptureValue;
130
+ } | CaptureValue[];
131
+ /**
132
+ * The CHECKING form of {@link CaptureValue}, used wherever a capture is
133
+ * constrained rather than described.
134
+ *
135
+ * `CaptureValue` names the shape for a reader, but it cannot be a constraint on
136
+ * its own: its object arm is an index signature, and TypeScript hands an
137
+ * implicit index signature to type ALIASES only — never to an `interface`, which
138
+ * stays open to declaration merging. So `capture: { band }` compiled when `band`
139
+ * was a `type` and failed when the identical shape was an `interface`, with the
140
+ * error naming `CaptureValue` rather than the one keyword that differed, and the
141
+ * body's second parameter then degrading to the constraint.
142
+ *
143
+ * A homomorphic mapped type is the way through: `keyof` an interface is the same
144
+ * as `keyof` the alias, so this accepts both and still rejects what genuinely
145
+ * cannot cross the boundary as text — functions, `undefined`, `symbol`, `bigint`
146
+ * — matching the runtime check in {@link capturePrelude}.
147
+ */
148
+ type Capturable<T> = T extends string | number | boolean | null ? T : T extends (...args: never[]) => unknown ? never : T extends readonly (infer U)[] ? readonly Capturable<U>[] : T extends object ? {
149
+ [K in keyof T]: Capturable<T[K]>;
150
+ } : never;
151
+ /** A capture bag: every value {@link Capturable}, whatever it was declared as. */
152
+ type CaptureRecord<T> = {
153
+ [K in keyof T]: Capturable<T[K]>;
154
+ };
155
+ /** Options shared by every `lam.*` form. */
156
+ interface LambdaOptions<C = Record<string, never>> {
157
+ /**
158
+ * Which surface the body will run at, which is what decides the legal
159
+ * bindings.
160
+ *
161
+ * Omit it and the check is DEFERRED to the call site, which knows the answer:
162
+ * dropping the body into `fl.map(...)` or `s.lambda({...})` validates it there,
163
+ * against that surface. Naming it here is for a body built away from its call
164
+ * site — a shared constant, or one that should fail at its own definition
165
+ * rather than at its use.
166
+ *
167
+ * Better still, write the body inline (`fl.map(({ $this }) => …)`), where the
168
+ * surface is implied and TypeScript types the bindings from the position.
169
+ */
170
+ surface?: LambdaSurface;
171
+ /**
172
+ * Values from the enclosing TypeScript scope to carry into the body, emitted
173
+ * as a `const` prelude.
174
+ *
175
+ * Nothing crosses the boundary implicitly: the body is extracted as TEXT and
176
+ * runs in a different process, so a closed-over `const rate` is simply
177
+ * undefined at runtime. Rather than guess at free variables (which needs a
178
+ * JavaScript parser this package deliberately does not have), capture is
179
+ * explicit and the second parameter of the body destructures it.
180
+ */
181
+ capture?: C;
182
+ }
183
+ /**
184
+ * Reject a body that cannot work at `surface`, before it can reach a live
185
+ * request. Three failures are unwritable after this:
186
+ *
187
+ * 1. an `$identifier` outside the surface's binding set — provably undefined at
188
+ * runtime, because a stack variable is only ever reachable as `$var.name`;
189
+ * 2. a top-level `import`/`export`, which is a syntax error in a function body
190
+ * (a dependency comes from {@link LAMBDA_MODULE_GLOBALS}, which needs no
191
+ * specifier — see there for why a literal `import()` one is not portable);
192
+ * 3. an empty body, which stores a statement the engine refuses at import.
193
+ *
194
+ * Exported so the statement and filter factories can run the same check on a
195
+ * plain `c.text(...)` body — an author who never adopts `lam.*` gets the same
196
+ * answer at the same moment.
197
+ */
198
+ declare function assertLambdaBody(body: string, surface: LambdaSurface, source?: string): void;
199
+ /**
200
+ * Author a lambda body as a typed TypeScript function.
201
+ *
202
+ * The first parameter destructures the bindings for the surface, so the editor
203
+ * supplies them and a wrong name is a compile error rather than a wrong value at
204
+ * runtime. The body is extracted at author time and emitted as the same
205
+ * `const:text` a hand-written `c.text(...)` produced.
206
+ *
207
+ * ```ts
208
+ * lam.fn(({ $result, $this }) => $result + $this) // reduce
209
+ * lam.fn(({ $var }) => $var.subtotal * 1.2, { surface: "s.lambda" })
210
+ * lam.fn(({ $this }, { capturedRate }) => $this * capturedRate, { surface: "map", capture: { capturedRate: rate } })
211
+ * ```
212
+ *
213
+ * Nothing from the enclosing scope crosses implicitly — a closed-over value is
214
+ * undefined at runtime — so anything the body needs from outside goes in
215
+ * `capture` and arrives as the second parameter. Give the capture a key nothing
216
+ * at module scope shares (it need not keep the name of what it carries); a
217
+ * collision is refused at build time, because the loader renames one of the two
218
+ * and the prelude is written under the original name.
219
+ */
220
+ declare function fn<S extends LambdaSurface = "reduce", C extends CaptureRecord<C> = Record<string, never>>(body: (bindings: LambdaBindings<S>, captured: C) => unknown, opts?: LambdaOptions<C> & {
221
+ surface?: S;
222
+ }): Value;
223
+ /**
224
+ * The escape hatch: a lambda body as text, validated exactly like {@link fn}.
225
+ *
226
+ * For a body that genuinely cannot be an authored function — one assembled at
227
+ * build time, or lifted verbatim out of a pulled workspace. It is guarded, not
228
+ * extracted, so the guard cannot be sidestepped by choosing this form.
229
+ */
230
+ declare function raw(code: string, opts?: LambdaOptions<Record<string, CaptureValue>>): Value;
231
+ /**
232
+ * Lambda authoring. `lam.fn` for an inline typed body, `lam.raw` for text, and
233
+ * `lam.file` (from `@xano/sdk/node`) for a body big enough to want its own
234
+ * type-checked module. All three produce the same `const:text` {@link Value} and
235
+ * pass the same validation.
236
+ *
237
+ * `file` is deliberately absent from the TYPE here so `lam.file` off this entry
238
+ * is a compile error that names the Node entry; the runtime stub only catches
239
+ * the calls types didn't.
240
+ */
241
+ declare const lam: {
242
+ fn: typeof fn;
243
+ raw: typeof raw;
244
+ };
245
+
246
+ /** A bare JS literal a filter argument accepts in place of a {@link Value}. */
247
+ type Scalar = string | number | boolean;
248
+ /**
249
+ * Marker for a filter declared `<T>` — it returns the ELEMENT of the array it
250
+ * is given (`first`, `last`, `array_pop`). Never a value; only a fold signal.
251
+ */
252
+ interface ElementResult {
253
+ readonly __result: "element";
254
+ }
255
+ /**
256
+ * Marker for a filter declared `<T>[]` — it returns an array of the same
257
+ * element type it was given (`reverse`, `unique`, `array_slice`).
258
+ */
259
+ interface SameArrayResult {
260
+ readonly __result: "sameArray";
261
+ }
262
+ /**
263
+ * Marker for a GROUP-BY — an object keyed by the argument path whose every
264
+ * value is an ARRAY of the elements it was given (`index_by`). A single
265
+ * matching item still arrives wrapped in a one-element array, so a lookup reads
266
+ * `idx[key][0]`.
267
+ */
268
+ interface GroupedArrayResult {
269
+ readonly __result: "groupedArray";
270
+ }
271
+ /** Every filter name applicable to a value pipeline (authoritative membership). */
272
+ declare const FILTER_NAMES: readonly string[];
273
+ /**
274
+ * Each filter's RESULT type, at the type level.
275
+ *
276
+ * Generated from the same `result` the specs above carry, so the two cannot
277
+ * drift. Three entries are markers rather than concrete types, mirroring the
278
+ * generic results the catalog declares:
279
+ *
280
+ * - {@link ElementResult} (`<T>`) — the ELEMENT of the array it is given
281
+ * (`first`, `last`, `array_pop`, …)
282
+ * - {@link SameArrayResult} (`<T>[]`) — an array of the same element type
283
+ * (`reverse`, `unique`, `array_slice`, …)
284
+ * - {@link GroupedArrayResult} (`{ [key: string]: <T>[] }`) — a group-by
285
+ * keyed by the argument path (`index_by`)
286
+ *
287
+ * A filter whose result is `any` — or one upstream declares nothing for — is
288
+ * absent from this map and folds to `unknown`. That is deliberate: `get`,
289
+ * `set`, `transform`, and `json_decode` genuinely produce a shape no
290
+ * declaration could name, and a confident wrong type is worse than an honest
291
+ * `unknown`.
292
+ *
293
+ * Verified against a live engine rather than trusted (`_probe-filter-results`):
294
+ * one filter per declared category was executed and its actual JSON type
295
+ * compared with the declaration.
296
+ */
297
+ interface FilterResults {
298
+ "abs": number;
299
+ "acos": number;
300
+ "acosh": number;
301
+ "add": number;
302
+ "addslashes": string;
303
+ "append": SameArrayResult;
304
+ "array_diff": SameArrayResult;
305
+ "array_diff_assoc": SameArrayResult;
306
+ "array_filter": SameArrayResult;
307
+ "array_find": ElementResult;
308
+ "array_has": boolean;
309
+ "array_intersect": SameArrayResult;
310
+ "array_intersect_assoc": SameArrayResult;
311
+ "array_keys": string[];
312
+ "array_lower": SameArrayResult;
313
+ "array_merge": SameArrayResult;
314
+ "array_merge_recursive": SameArrayResult;
315
+ "array_pop": ElementResult;
316
+ "array_push": SameArrayResult;
317
+ "array_push_conditional": SameArrayResult;
318
+ "array_remove": SameArrayResult;
319
+ "array_replace": SameArrayResult;
320
+ "array_set": Record<string, unknown>;
321
+ "array_shift": ElementResult;
322
+ "array_shuffle": SameArrayResult;
323
+ "array_slice": SameArrayResult;
324
+ "array_unshift": SameArrayResult;
325
+ "array_upmerge": SameArrayResult;
326
+ "asin": number;
327
+ "asinh": number;
328
+ "atan": number;
329
+ "atanh": number;
330
+ "avg": number;
331
+ "base64_decode": string;
332
+ "base64_decode_urlsafe": string;
333
+ "base64_encode": string;
334
+ "base64_encode_urlsafe": string;
335
+ "base_convert": string;
336
+ "bin2hex": string;
337
+ "bindec": string;
338
+ "bitwise_and": number;
339
+ "bitwise_not": boolean;
340
+ "bitwise_or": number;
341
+ "bitwise_xor": number;
342
+ "capitalize": string;
343
+ "ceil": number;
344
+ "clamp_max": number;
345
+ "clamp_min": number;
346
+ "concat": string;
347
+ "contains": boolean;
348
+ "convert_encoding": string;
349
+ "cos": number;
350
+ "count": number;
351
+ "crypto_jwe_encode": string;
352
+ "crypto_jws_encode": string;
353
+ "csv_create": string;
354
+ "csv_encode": string;
355
+ "decbin": string;
356
+ "dechex": string;
357
+ "decoct": string;
358
+ "decrypt": string;
359
+ "deg2rad": number;
360
+ "detect_encoding": string;
361
+ "div": number;
362
+ "empty": boolean;
363
+ "encrypt": string;
364
+ "ends_with": boolean;
365
+ "epochms_add_ms": number;
366
+ "epochms_add_secs": number;
367
+ "epochms_date": string;
368
+ "epochms_from_format": string;
369
+ "epochms_transform": string;
370
+ "eq": boolean;
371
+ "escape": string;
372
+ "even": boolean;
373
+ "exp": number;
374
+ "filter_empty": SameArrayResult;
375
+ "filter_empty_array": SameArrayResult;
376
+ "filter_empty_object": SameArrayResult;
377
+ "filter_empty_text": SameArrayResult;
378
+ "filter_false": SameArrayResult;
379
+ "filter_null": SameArrayResult;
380
+ "filter_zero": SameArrayResult;
381
+ "first": ElementResult;
382
+ "flatten": SameArrayResult;
383
+ "floor": number;
384
+ "from_utf8": string;
385
+ "fsort": SameArrayResult;
386
+ "gt": boolean;
387
+ "gte": boolean;
388
+ "has": boolean;
389
+ "hex2bin": string;
390
+ "hexdec": string;
391
+ "hmac_md5": string;
392
+ "hmac_sha1": string;
393
+ "hmac_sha256": string;
394
+ "hmac_sha384": string;
395
+ "hmac_sha512": string;
396
+ "icontains": boolean;
397
+ "iends_with": boolean;
398
+ "in": boolean;
399
+ "index_by": GroupedArrayResult;
400
+ "is_array": boolean;
401
+ "is_bool": boolean;
402
+ "is_decimal": boolean;
403
+ "is_int": boolean;
404
+ "is_object": boolean;
405
+ "is_text": boolean;
406
+ "is_uuid": boolean;
407
+ "istarts_with": boolean;
408
+ "join": string;
409
+ "json_encode": string;
410
+ "last": ElementResult;
411
+ "list_encodings": string[];
412
+ "ln": number;
413
+ "log": number;
414
+ "log10": number;
415
+ "lower": string;
416
+ "lt": boolean;
417
+ "lte": boolean;
418
+ "ltrim": string;
419
+ "max": number;
420
+ "md5": string;
421
+ "min": number;
422
+ "mod": number;
423
+ "ms_to_secs": number;
424
+ "mul": number;
425
+ "ne": boolean;
426
+ "not": boolean;
427
+ "num_max": number;
428
+ "num_min": number;
429
+ "number_format": string;
430
+ "octdec": string;
431
+ "odd": boolean;
432
+ "pick": ElementResult;
433
+ "pow": number;
434
+ "prepend": SameArrayResult;
435
+ "product": number;
436
+ "rad2deg": number;
437
+ "range": number[];
438
+ "regex_match": string[];
439
+ "regex_match_all": string[];
440
+ "regex_quote": string;
441
+ "regex_replace": string;
442
+ "regex_test": boolean;
443
+ "reverse": SameArrayResult;
444
+ "round": number;
445
+ "rsort": SameArrayResult;
446
+ "rtrim": string;
447
+ "safe_array": SameArrayResult;
448
+ "secs_to_ms": number;
449
+ "secureid_decode": number;
450
+ "secureid_encode": string;
451
+ "sha1": string;
452
+ "sha256": string;
453
+ "sha384": string;
454
+ "sha512": string;
455
+ "sin": number;
456
+ "splice": SameArrayResult;
457
+ "split": string[];
458
+ "sprintf": string;
459
+ "sql_alias": string;
460
+ "sql_esc": string;
461
+ "sqrt": number;
462
+ "starts_with": boolean;
463
+ "string_replace": string;
464
+ "strip_accents": string;
465
+ "strip_tags": string;
466
+ "stripos": number;
467
+ "strlen": number;
468
+ "strpos": number;
469
+ "sub": number;
470
+ "substr": string;
471
+ "sum": number;
472
+ "tan": number;
473
+ "text_escape": string;
474
+ "text_unescape": string;
475
+ "to_bool": boolean;
476
+ "to_decimal": number;
477
+ "to_epoch_day": number;
478
+ "to_epoch_hour": number;
479
+ "to_epoch_minute": number;
480
+ "to_epoch_ms": number;
481
+ "to_epoch_sec": number;
482
+ "to_epochms": number;
483
+ "to_geo_linestring": string;
484
+ "to_geo_multilinestring": string;
485
+ "to_geo_multipoint": string;
486
+ "to_geo_multipolygon": string;
487
+ "to_geo_point": string;
488
+ "to_geo_polygon": string;
489
+ "to_int": number;
490
+ "to_text": string;
491
+ "to_utf8": string;
492
+ "trim": string;
493
+ "uid": number;
494
+ "unique": SameArrayResult;
495
+ "unpick": ElementResult;
496
+ "upper": string;
497
+ "url_addarg": string;
498
+ "url_decode": string;
499
+ "url_decode_rfc3986": string;
500
+ "url_delarg": string;
501
+ "url_encode": string;
502
+ "url_encode_rfc3986": string;
503
+ "url_getarg": string;
504
+ "url_hasarg": string;
505
+ "uuid4": string;
506
+ "yaml_decode": Record<string, unknown>;
507
+ "yaml_encode": string;
508
+ }
509
+ /** Typed, discoverable constructors for the value `filters[]` pipeline. */
510
+ declare const fl: {
511
+ readonly abs: () => FilterXdo<"abs">;
512
+ readonly acos: () => FilterXdo<"acos">;
513
+ readonly acosh: () => FilterXdo<"acosh">;
514
+ readonly add: (((value: Scalar | Value) => FilterXdo<"add">) & ((args: {
515
+ value: Scalar | Value;
516
+ }) => FilterXdo<"add">));
517
+ readonly addslashes: () => FilterXdo<"addslashes">;
518
+ readonly append: (((value: Scalar | Value, path: Scalar | Value) => FilterXdo<"append">) & ((args: {
519
+ value: Scalar | Value;
520
+ path: Scalar | Value;
521
+ }) => FilterXdo<"append">));
522
+ readonly array_diff: (((value: Scalar | Value) => FilterXdo<"array_diff">) & ((args: {
523
+ value: Scalar | Value;
524
+ }) => FilterXdo<"array_diff">));
525
+ readonly array_diff_assoc: (((value: Scalar | Value) => FilterXdo<"array_diff_assoc">) & ((args: {
526
+ value: Scalar | Value;
527
+ }) => FilterXdo<"array_diff_assoc">));
528
+ readonly array_entries: () => FilterXdo<"array_entries">;
529
+ readonly array_fill: (((start: Scalar | Value, count: Scalar | Value) => FilterXdo<"array_fill">) & ((args: {
530
+ start: Scalar | Value;
531
+ count: Scalar | Value;
532
+ }) => FilterXdo<"array_fill">));
533
+ readonly array_fill_keys: (((keys: Scalar | Value) => FilterXdo<"array_fill_keys">) & ((args: {
534
+ keys: Scalar | Value;
535
+ }) => FilterXdo<"array_fill_keys">));
536
+ readonly array_filter: (((match: Scalar | Value, path?: Scalar | Value) => FilterXdo<"array_filter">) & ((args: {
537
+ match: Scalar | Value;
538
+ path?: Scalar | Value;
539
+ }) => FilterXdo<"array_filter">));
540
+ readonly array_find: (((match: Scalar | Value) => FilterXdo<"array_find">) & ((args: {
541
+ match: Scalar | Value;
542
+ }) => FilterXdo<"array_find">));
543
+ readonly array_has: (((match: Scalar | Value) => FilterXdo<"array_has">) & ((args: {
544
+ match: Scalar | Value;
545
+ }) => FilterXdo<"array_has">));
546
+ readonly array_intersect: (((value: Scalar | Value) => FilterXdo<"array_intersect">) & ((args: {
547
+ value: Scalar | Value;
548
+ }) => FilterXdo<"array_intersect">));
549
+ readonly array_intersect_assoc: (((value: Scalar | Value) => FilterXdo<"array_intersect_assoc">) & ((args: {
550
+ value: Scalar | Value;
551
+ }) => FilterXdo<"array_intersect_assoc">));
552
+ readonly array_keys: () => FilterXdo<"array_keys">;
553
+ readonly array_lower: () => FilterXdo<"array_lower">;
554
+ readonly array_merge: (((value: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"array_merge">) & ((args: {
555
+ value: Scalar | Value;
556
+ }) => FilterXdo<"array_merge">));
557
+ readonly array_merge_recursive: (((value: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"array_merge_recursive">) & ((args: {
558
+ value: Scalar | Value;
559
+ }) => FilterXdo<"array_merge_recursive">));
560
+ readonly array_pop: () => FilterXdo<"array_pop">;
561
+ readonly array_push: (((value: Scalar | Value) => FilterXdo<"array_push">) & ((args: {
562
+ value: Scalar | Value;
563
+ }) => FilterXdo<"array_push">));
564
+ readonly array_push_conditional: (((value: Scalar | Value, conditional: Scalar | Value) => FilterXdo<"array_push_conditional">) & ((args: {
565
+ value: Scalar | Value;
566
+ conditional: Scalar | Value;
567
+ }) => FilterXdo<"array_push_conditional">));
568
+ readonly array_remove: (((value: Scalar | Value, path: Scalar | Value, strict?: Scalar | Value) => FilterXdo<"array_remove">) & ((args: {
569
+ value: Scalar | Value;
570
+ path: Scalar | Value;
571
+ strict?: Scalar | Value;
572
+ }) => FilterXdo<"array_remove">));
573
+ readonly array_replace: (((match: Scalar | Value, result: Scalar | Value) => FilterXdo<"array_replace">) & ((args: {
574
+ match: Scalar | Value;
575
+ result: Scalar | Value;
576
+ }) => FilterXdo<"array_replace">));
577
+ readonly array_set: (((path: Scalar | Value, value: Scalar | Value) => FilterXdo<"array_set">) & ((args: {
578
+ path: Scalar | Value;
579
+ value: Scalar | Value;
580
+ }) => FilterXdo<"array_set">));
581
+ readonly array_shift: () => FilterXdo<"array_shift">;
582
+ readonly array_shuffle: () => FilterXdo<"array_shuffle">;
583
+ readonly array_slice: (((offset: Scalar | Value, length?: Scalar | Value) => FilterXdo<"array_slice">) & ((args: {
584
+ offset: Scalar | Value;
585
+ length?: Scalar | Value;
586
+ }) => FilterXdo<"array_slice">));
587
+ readonly array_unshift: (((value: Scalar | Value) => FilterXdo<"array_unshift">) & ((args: {
588
+ value: Scalar | Value;
589
+ }) => FilterXdo<"array_unshift">));
590
+ readonly array_upmerge: (((match: Scalar | Value, node: Scalar | Value) => FilterXdo<"array_upmerge">) & ((args: {
591
+ match: Scalar | Value;
592
+ node: Scalar | Value;
593
+ }) => FilterXdo<"array_upmerge">));
594
+ readonly array_values: () => FilterXdo<"array_values">;
595
+ readonly asin: () => FilterXdo<"asin">;
596
+ readonly asinh: () => FilterXdo<"asinh">;
597
+ readonly atan: () => FilterXdo<"atan">;
598
+ readonly atanh: () => FilterXdo<"atanh">;
599
+ readonly avg: () => FilterXdo<"avg">;
600
+ readonly base64_decode: () => FilterXdo<"base64_decode">;
601
+ readonly base64_decode_urlsafe: () => FilterXdo<"base64_decode_urlsafe">;
602
+ readonly base64_encode: () => FilterXdo<"base64_encode">;
603
+ readonly base64_encode_urlsafe: () => FilterXdo<"base64_encode_urlsafe">;
604
+ readonly base_convert: (((from_base: Scalar | Value, to_base: Scalar | Value) => FilterXdo<"base_convert">) & ((args: {
605
+ from_base: Scalar | Value;
606
+ to_base: Scalar | Value;
607
+ }) => FilterXdo<"base_convert">));
608
+ readonly bin2hex: () => FilterXdo<"bin2hex">;
609
+ readonly bindec: () => FilterXdo<"bindec">;
610
+ readonly bitwise_and: (((value: Scalar | Value) => FilterXdo<"bitwise_and">) & ((args: {
611
+ value: Scalar | Value;
612
+ }) => FilterXdo<"bitwise_and">));
613
+ readonly bitwise_not: () => FilterXdo<"bitwise_not">;
614
+ readonly bitwise_or: (((value: Scalar | Value) => FilterXdo<"bitwise_or">) & ((args: {
615
+ value: Scalar | Value;
616
+ }) => FilterXdo<"bitwise_or">));
617
+ readonly bitwise_xor: (((value: Scalar | Value) => FilterXdo<"bitwise_xor">) & ((args: {
618
+ value: Scalar | Value;
619
+ }) => FilterXdo<"bitwise_xor">));
620
+ readonly capitalize: () => FilterXdo<"capitalize">;
621
+ readonly ceil: () => FilterXdo<"ceil">;
622
+ readonly clamp_max: (((max: Scalar | Value) => FilterXdo<"clamp_max">) & ((args: {
623
+ max: Scalar | Value;
624
+ }) => FilterXdo<"clamp_max">));
625
+ readonly clamp_min: (((min: Scalar | Value) => FilterXdo<"clamp_min">) & ((args: {
626
+ min: Scalar | Value;
627
+ }) => FilterXdo<"clamp_min">));
628
+ readonly concat: (((value: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"concat">) & ((args: {
629
+ value: Scalar | Value;
630
+ }) => FilterXdo<"concat">));
631
+ readonly contains: (((search: Scalar | Value) => FilterXdo<"contains">) & ((args: {
632
+ search: Scalar | Value;
633
+ }) => FilterXdo<"contains">));
634
+ readonly convert_encoding: (((to: Scalar | Value, from: Scalar | Value) => FilterXdo<"convert_encoding">) & ((args: {
635
+ to: Scalar | Value;
636
+ from: Scalar | Value;
637
+ }) => FilterXdo<"convert_encoding">));
638
+ readonly cos: () => FilterXdo<"cos">;
639
+ readonly count: () => FilterXdo<"count">;
640
+ readonly create_object: (((values: Scalar | Value) => FilterXdo<"create_object">) & ((args: {
641
+ values: Scalar | Value;
642
+ }) => FilterXdo<"create_object">));
643
+ readonly create_object_from_entries: () => FilterXdo<"create_object_from_entries">;
644
+ readonly crypto_jwe_decode: (((check_claims: Scalar | Value, key: Scalar | Value, key_algorithm: Scalar | Value, content_algorithm: Scalar | Value, timeDrift?: Scalar | Value) => FilterXdo<"crypto_jwe_decode">) & ((args: {
645
+ check_claims: Scalar | Value;
646
+ key: Scalar | Value;
647
+ key_algorithm: Scalar | Value;
648
+ content_algorithm: Scalar | Value;
649
+ timeDrift?: Scalar | Value;
650
+ }) => FilterXdo<"crypto_jwe_decode">));
651
+ readonly crypto_jwe_encode: (((headers: Scalar | Value, key: Scalar | Value, key_algorithm: Scalar | Value, content_algorithm: Scalar | Value, ttl?: Scalar | Value) => FilterXdo<"crypto_jwe_encode">) & ((args: {
652
+ headers: Scalar | Value;
653
+ key: Scalar | Value;
654
+ key_algorithm: Scalar | Value;
655
+ content_algorithm: Scalar | Value;
656
+ ttl?: Scalar | Value;
657
+ }) => FilterXdo<"crypto_jwe_encode">));
658
+ readonly crypto_jws_decode: (((check_claims: Scalar | Value, key: Scalar | Value, algorithm: Scalar | Value, timeDrift?: Scalar | Value) => FilterXdo<"crypto_jws_decode">) & ((args: {
659
+ check_claims: Scalar | Value;
660
+ key: Scalar | Value;
661
+ algorithm: Scalar | Value;
662
+ timeDrift?: Scalar | Value;
663
+ }) => FilterXdo<"crypto_jws_decode">));
664
+ readonly crypto_jws_encode: (((headers: Scalar | Value, key: Scalar | Value, algorithm: Scalar | Value, ttl?: Scalar | Value) => FilterXdo<"crypto_jws_encode">) & ((args: {
665
+ headers: Scalar | Value;
666
+ key: Scalar | Value;
667
+ algorithm: Scalar | Value;
668
+ ttl?: Scalar | Value;
669
+ }) => FilterXdo<"crypto_jws_encode">));
670
+ readonly csv_create: (((rows: Scalar | Value, separator: Scalar | Value, enclosure: Scalar | Value, escape: Scalar | Value) => FilterXdo<"csv_create">) & ((args: {
671
+ rows: Scalar | Value;
672
+ separator: Scalar | Value;
673
+ enclosure: Scalar | Value;
674
+ escape: Scalar | Value;
675
+ }) => FilterXdo<"csv_create">));
676
+ readonly csv_decode: (((separator: Scalar | Value, enclosure: Scalar | Value, escape: Scalar | Value) => FilterXdo<"csv_decode">) & ((args: {
677
+ separator: Scalar | Value;
678
+ enclosure: Scalar | Value;
679
+ escape: Scalar | Value;
680
+ }) => FilterXdo<"csv_decode">));
681
+ readonly csv_encode: (((separator: Scalar | Value, enclosure: Scalar | Value, escape: Scalar | Value) => FilterXdo<"csv_encode">) & ((args: {
682
+ separator: Scalar | Value;
683
+ enclosure: Scalar | Value;
684
+ escape: Scalar | Value;
685
+ }) => FilterXdo<"csv_encode">));
686
+ readonly csv_parse: (((separator: Scalar | Value, enclosure: Scalar | Value, escape: Scalar | Value) => FilterXdo<"csv_parse">) & ((args: {
687
+ separator: Scalar | Value;
688
+ enclosure: Scalar | Value;
689
+ escape: Scalar | Value;
690
+ }) => FilterXdo<"csv_parse">));
691
+ readonly decbin: () => FilterXdo<"decbin">;
692
+ readonly dechex: () => FilterXdo<"dechex">;
693
+ readonly decoct: () => FilterXdo<"decoct">;
694
+ readonly decrypt: (((algorithm: Scalar | Value, key: Scalar | Value, iv: Scalar | Value) => FilterXdo<"decrypt">) & ((args: {
695
+ algorithm: Scalar | Value;
696
+ key: Scalar | Value;
697
+ iv: Scalar | Value;
698
+ }) => FilterXdo<"decrypt">));
699
+ readonly deg2rad: () => FilterXdo<"deg2rad">;
700
+ readonly detect_encoding: (((encodings?: Scalar | Value) => FilterXdo<"detect_encoding">) & ((args: {
701
+ encodings?: Scalar | Value;
702
+ }) => FilterXdo<"detect_encoding">));
703
+ readonly div: (((value: Scalar | Value) => FilterXdo<"div">) & ((args: {
704
+ value: Scalar | Value;
705
+ }) => FilterXdo<"div">));
706
+ readonly empty: () => FilterXdo<"empty">;
707
+ readonly encrypt: (((algorithm: Scalar | Value, key: Scalar | Value, iv: Scalar | Value) => FilterXdo<"encrypt">) & ((args: {
708
+ algorithm: Scalar | Value;
709
+ key: Scalar | Value;
710
+ iv: Scalar | Value;
711
+ }) => FilterXdo<"encrypt">));
712
+ readonly ends_with: (((search: Scalar | Value) => FilterXdo<"ends_with">) & ((args: {
713
+ search: Scalar | Value;
714
+ }) => FilterXdo<"ends_with">));
715
+ readonly epochms_add_ms: (((milliseconds: Scalar | Value) => FilterXdo<"epochms_add_ms">) & ((args: {
716
+ milliseconds: Scalar | Value;
717
+ }) => FilterXdo<"epochms_add_ms">));
718
+ readonly epochms_add_secs: (((seconds: Scalar | Value) => FilterXdo<"epochms_add_secs">) & ((args: {
719
+ seconds: Scalar | Value;
720
+ }) => FilterXdo<"epochms_add_secs">));
721
+ readonly epochms_date: (((format: Scalar | Value, timezone?: Scalar | Value) => FilterXdo<"epochms_date">) & ((args: {
722
+ format: Scalar | Value;
723
+ timezone?: Scalar | Value;
724
+ }) => FilterXdo<"epochms_date">));
725
+ readonly epochms_from_format: (((format: Scalar | Value, timezone?: Scalar | Value) => FilterXdo<"epochms_from_format">) & ((args: {
726
+ format: Scalar | Value;
727
+ timezone?: Scalar | Value;
728
+ }) => FilterXdo<"epochms_from_format">));
729
+ readonly epochms_transform: (((format: Scalar | Value, timezone?: Scalar | Value) => FilterXdo<"epochms_transform">) & ((args: {
730
+ format: Scalar | Value;
731
+ timezone?: Scalar | Value;
732
+ }) => FilterXdo<"epochms_transform">));
733
+ readonly eq: (((value: Scalar | Value) => FilterXdo<"eq">) & ((args: {
734
+ value: Scalar | Value;
735
+ }) => FilterXdo<"eq">));
736
+ readonly escape: () => FilterXdo<"escape">;
737
+ readonly even: () => FilterXdo<"even">;
738
+ readonly every: (((code: Scalar | Value | LambdaBody<"every">, timeout?: Scalar | Value) => FilterXdo<"every">) & ((args: {
739
+ code: Scalar | Value | LambdaBody<"every">;
740
+ timeout?: Scalar | Value;
741
+ }) => FilterXdo<"every">));
742
+ readonly exp: () => FilterXdo<"exp">;
743
+ readonly filter: (((code: Scalar | Value | LambdaBody<"filter">, timeout?: Scalar | Value) => FilterXdo<"filter">) & ((args: {
744
+ code: Scalar | Value | LambdaBody<"filter">;
745
+ timeout?: Scalar | Value;
746
+ }) => FilterXdo<"filter">));
747
+ readonly filter_empty: (((path?: Scalar | Value) => FilterXdo<"filter_empty">) & ((args: {
748
+ path?: Scalar | Value;
749
+ }) => FilterXdo<"filter_empty">));
750
+ readonly filter_empty_array: (((path?: Scalar | Value) => FilterXdo<"filter_empty_array">) & ((args: {
751
+ path?: Scalar | Value;
752
+ }) => FilterXdo<"filter_empty_array">));
753
+ readonly filter_empty_object: (((path?: Scalar | Value) => FilterXdo<"filter_empty_object">) & ((args: {
754
+ path?: Scalar | Value;
755
+ }) => FilterXdo<"filter_empty_object">));
756
+ readonly filter_empty_text: (((path?: Scalar | Value) => FilterXdo<"filter_empty_text">) & ((args: {
757
+ path?: Scalar | Value;
758
+ }) => FilterXdo<"filter_empty_text">));
759
+ readonly filter_false: (((path?: Scalar | Value) => FilterXdo<"filter_false">) & ((args: {
760
+ path?: Scalar | Value;
761
+ }) => FilterXdo<"filter_false">));
762
+ readonly filter_null: (((path?: Scalar | Value) => FilterXdo<"filter_null">) & ((args: {
763
+ path?: Scalar | Value;
764
+ }) => FilterXdo<"filter_null">));
765
+ readonly filter_zero: (((path?: Scalar | Value) => FilterXdo<"filter_zero">) & ((args: {
766
+ path?: Scalar | Value;
767
+ }) => FilterXdo<"filter_zero">));
768
+ readonly find: (((code: Scalar | Value | LambdaBody<"find">, timeout?: Scalar | Value) => FilterXdo<"find">) & ((args: {
769
+ code: Scalar | Value | LambdaBody<"find">;
770
+ timeout?: Scalar | Value;
771
+ }) => FilterXdo<"find">));
772
+ readonly findIndex: (((code: Scalar | Value | LambdaBody<"findIndex">, timeout?: Scalar | Value) => FilterXdo<"findIndex">) & ((args: {
773
+ code: Scalar | Value | LambdaBody<"findIndex">;
774
+ timeout?: Scalar | Value;
775
+ }) => FilterXdo<"findIndex">));
776
+ readonly first: () => FilterXdo<"first">;
777
+ readonly first_notempty: (((value: Scalar | Value) => FilterXdo<"first_notempty">) & ((args: {
778
+ value: Scalar | Value;
779
+ }) => FilterXdo<"first_notempty">));
780
+ readonly first_notnull: (((value: Scalar | Value) => FilterXdo<"first_notnull">) & ((args: {
781
+ value: Scalar | Value;
782
+ }) => FilterXdo<"first_notnull">));
783
+ readonly flatten: () => FilterXdo<"flatten">;
784
+ readonly floor: () => FilterXdo<"floor">;
785
+ readonly from_utf8: () => FilterXdo<"from_utf8">;
786
+ readonly fsort: (((path?: Scalar | Value, type?: "text" | "itext" | "natural" | "inatural" | "number" | Value, asc?: Scalar | Value) => FilterXdo<"fsort">) & ((args: {
787
+ path?: Scalar | Value;
788
+ type?: "text" | "itext" | "natural" | "inatural" | "number" | Value;
789
+ asc?: Scalar | Value;
790
+ }) => FilterXdo<"fsort">));
791
+ readonly get: (((path: Scalar | Value, default_?: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"get">) & ((args: {
792
+ path: Scalar | Value;
793
+ default_?: Scalar | Value;
794
+ }) => FilterXdo<"get">));
795
+ readonly gt: (((value: Scalar | Value) => FilterXdo<"gt">) & ((args: {
796
+ value: Scalar | Value;
797
+ }) => FilterXdo<"gt">));
798
+ readonly gte: (((value: Scalar | Value) => FilterXdo<"gte">) & ((args: {
799
+ value: Scalar | Value;
800
+ }) => FilterXdo<"gte">));
801
+ readonly has: (((path: Scalar | Value) => FilterXdo<"has">) & ((args: {
802
+ path: Scalar | Value;
803
+ }) => FilterXdo<"has">));
804
+ readonly hex2bin: () => FilterXdo<"hex2bin">;
805
+ readonly hexdec: () => FilterXdo<"hexdec">;
806
+ readonly hmac_md5: (((key: Scalar | Value, raw?: Scalar | Value) => FilterXdo<"hmac_md5">) & ((args: {
807
+ key: Scalar | Value;
808
+ raw?: Scalar | Value;
809
+ }) => FilterXdo<"hmac_md5">));
810
+ readonly hmac_sha1: (((key: Scalar | Value, raw?: Scalar | Value) => FilterXdo<"hmac_sha1">) & ((args: {
811
+ key: Scalar | Value;
812
+ raw?: Scalar | Value;
813
+ }) => FilterXdo<"hmac_sha1">));
814
+ readonly hmac_sha256: (((key: Scalar | Value, raw?: Scalar | Value) => FilterXdo<"hmac_sha256">) & ((args: {
815
+ key: Scalar | Value;
816
+ raw?: Scalar | Value;
817
+ }) => FilterXdo<"hmac_sha256">));
818
+ readonly hmac_sha384: (((key: Scalar | Value, raw?: Scalar | Value) => FilterXdo<"hmac_sha384">) & ((args: {
819
+ key: Scalar | Value;
820
+ raw?: Scalar | Value;
821
+ }) => FilterXdo<"hmac_sha384">));
822
+ readonly hmac_sha512: (((key: Scalar | Value, raw?: Scalar | Value) => FilterXdo<"hmac_sha512">) & ((args: {
823
+ key: Scalar | Value;
824
+ raw?: Scalar | Value;
825
+ }) => FilterXdo<"hmac_sha512">));
826
+ readonly icontains: (((search: Scalar | Value) => FilterXdo<"icontains">) & ((args: {
827
+ search: Scalar | Value;
828
+ }) => FilterXdo<"icontains">));
829
+ readonly iends_with: (((search: Scalar | Value) => FilterXdo<"iends_with">) & ((args: {
830
+ search: Scalar | Value;
831
+ }) => FilterXdo<"iends_with">));
832
+ readonly in: (((search: Scalar | Value) => FilterXdo<"in">) & ((args: {
833
+ search: Scalar | Value;
834
+ }) => FilterXdo<"in">));
835
+ readonly index_by: (((path: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"index_by">) & ((args: {
836
+ path: Scalar | Value;
837
+ }) => FilterXdo<"index_by">));
838
+ readonly is_array: () => FilterXdo<"is_array">;
839
+ readonly is_bool: () => FilterXdo<"is_bool">;
840
+ readonly is_decimal: () => FilterXdo<"is_decimal">;
841
+ readonly is_int: () => FilterXdo<"is_int">;
842
+ readonly is_object: () => FilterXdo<"is_object">;
843
+ readonly is_text: () => FilterXdo<"is_text">;
844
+ readonly is_uuid: () => FilterXdo<"is_uuid">;
845
+ readonly istarts_with: (((search: Scalar | Value) => FilterXdo<"istarts_with">) & ((args: {
846
+ search: Scalar | Value;
847
+ }) => FilterXdo<"istarts_with">));
848
+ readonly join: (((separator: Scalar | Value) => FilterXdo<"join">) & ((args: {
849
+ separator: Scalar | Value;
850
+ }) => FilterXdo<"join">));
851
+ readonly json_decode: () => FilterXdo<"json_decode">;
852
+ readonly json_encode: () => FilterXdo<"json_encode">;
853
+ readonly jwe_decode: (((arg1: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"jwe_decode">) & ((args: {
854
+ arg1: Scalar | Value;
855
+ }) => FilterXdo<"jwe_decode">));
856
+ readonly jwe_encode: (((arg1: Scalar | Value, ...rest: (Scalar | Value)[]) => FilterXdo<"jwe_encode">) & ((args: {
857
+ arg1: Scalar | Value;
858
+ }) => FilterXdo<"jwe_encode">));
859
+ readonly lambda: (((code: Scalar | Value | LambdaBody<"fl.lambda">, timeout?: Scalar | Value) => FilterXdo<"lambda">) & ((args: {
860
+ code: Scalar | Value | LambdaBody<"fl.lambda">;
861
+ timeout?: Scalar | Value;
862
+ }) => FilterXdo<"lambda">));
863
+ readonly last: () => FilterXdo<"last">;
864
+ readonly list_encodings: () => FilterXdo<"list_encodings">;
865
+ readonly ln: () => FilterXdo<"ln">;
866
+ readonly log: (((base: Scalar | Value) => FilterXdo<"log">) & ((args: {
867
+ base: Scalar | Value;
868
+ }) => FilterXdo<"log">));
869
+ readonly log10: () => FilterXdo<"log10">;
870
+ readonly lower: () => FilterXdo<"lower">;
871
+ readonly lt: (((value: Scalar | Value) => FilterXdo<"lt">) & ((args: {
872
+ value: Scalar | Value;
873
+ }) => FilterXdo<"lt">));
874
+ readonly lte: (((value: Scalar | Value) => FilterXdo<"lte">) & ((args: {
875
+ value: Scalar | Value;
876
+ }) => FilterXdo<"lte">));
877
+ readonly ltrim: (((mask?: Scalar | Value) => FilterXdo<"ltrim">) & ((args: {
878
+ mask?: Scalar | Value;
879
+ }) => FilterXdo<"ltrim">));
880
+ readonly map: (((code: Scalar | Value | LambdaBody<"map">, timeout?: Scalar | Value) => FilterXdo<"map">) & ((args: {
881
+ code: Scalar | Value | LambdaBody<"map">;
882
+ timeout?: Scalar | Value;
883
+ }) => FilterXdo<"map">));
884
+ readonly max: (((bound?: Scalar | Value) => FilterXdo<"max">) & ((args: {
885
+ bound?: Scalar | Value;
886
+ }) => FilterXdo<"max">));
887
+ readonly md5: (((raw?: Scalar | Value) => FilterXdo<"md5">) & ((args: {
888
+ raw?: Scalar | Value;
889
+ }) => FilterXdo<"md5">));
890
+ readonly min: (((bound?: Scalar | Value) => FilterXdo<"min">) & ((args: {
891
+ bound?: Scalar | Value;
892
+ }) => FilterXdo<"min">));
893
+ readonly mod: (((value: Scalar | Value) => FilterXdo<"mod">) & ((args: {
894
+ value: Scalar | Value;
895
+ }) => FilterXdo<"mod">));
896
+ readonly ms_to_secs: () => FilterXdo<"ms_to_secs">;
897
+ readonly mul: (((value: Scalar | Value) => FilterXdo<"mul">) & ((args: {
898
+ value: Scalar | Value;
899
+ }) => FilterXdo<"mul">));
900
+ readonly ne: (((value: Scalar | Value) => FilterXdo<"ne">) & ((args: {
901
+ value: Scalar | Value;
902
+ }) => FilterXdo<"ne">));
903
+ readonly not: () => FilterXdo<"not">;
904
+ readonly null: () => FilterXdo<"null">;
905
+ readonly num_max: (((value: Scalar | Value) => FilterXdo<"num_max">) & ((args: {
906
+ value: Scalar | Value;
907
+ }) => FilterXdo<"num_max">));
908
+ readonly num_min: (((value: Scalar | Value) => FilterXdo<"num_min">) & ((args: {
909
+ value: Scalar | Value;
910
+ }) => FilterXdo<"num_min">));
911
+ readonly number_format: (((decimals: Scalar | Value, decimal_separator: Scalar | Value, thousands_separator: Scalar | Value) => FilterXdo<"number_format">) & ((args: {
912
+ decimals: Scalar | Value;
913
+ decimal_separator: Scalar | Value;
914
+ thousands_separator: Scalar | Value;
915
+ }) => FilterXdo<"number_format">));
916
+ readonly octdec: () => FilterXdo<"octdec">;
917
+ readonly odd: () => FilterXdo<"odd">;
918
+ readonly pick: (((keys: Scalar | Value) => FilterXdo<"pick">) & ((args: {
919
+ keys: Scalar | Value;
920
+ }) => FilterXdo<"pick">));
921
+ readonly pow: (((exp: Scalar | Value) => FilterXdo<"pow">) & ((args: {
922
+ exp: Scalar | Value;
923
+ }) => FilterXdo<"pow">));
924
+ readonly prepend: (((value: Scalar | Value, path: Scalar | Value) => FilterXdo<"prepend">) & ((args: {
925
+ value: Scalar | Value;
926
+ path: Scalar | Value;
927
+ }) => FilterXdo<"prepend">));
928
+ readonly product: () => FilterXdo<"product">;
929
+ readonly querystring_parse: () => FilterXdo<"querystring_parse">;
930
+ readonly rad2deg: () => FilterXdo<"rad2deg">;
931
+ readonly range: (((start: Scalar | Value, stop: Scalar | Value) => FilterXdo<"range">) & ((args: {
932
+ start: Scalar | Value;
933
+ stop: Scalar | Value;
934
+ }) => FilterXdo<"range">));
935
+ readonly reduce: (((initial_value: Scalar | Value, code: Scalar | Value | LambdaBody<"reduce">, timeout?: Scalar | Value) => FilterXdo<"reduce">) & ((args: {
936
+ initial_value: Scalar | Value;
937
+ code: Scalar | Value | LambdaBody<"reduce">;
938
+ timeout?: Scalar | Value;
939
+ }) => FilterXdo<"reduce">));
940
+ readonly regex_match: (((subject: Scalar | Value) => FilterXdo<"regex_match">) & ((args: {
941
+ subject: Scalar | Value;
942
+ }) => FilterXdo<"regex_match">));
943
+ readonly regex_match_all: (((subject: Scalar | Value) => FilterXdo<"regex_match_all">) & ((args: {
944
+ subject: Scalar | Value;
945
+ }) => FilterXdo<"regex_match_all">));
946
+ readonly regex_quote: (((delimiter?: Scalar | Value) => FilterXdo<"regex_quote">) & ((args: {
947
+ delimiter?: Scalar | Value;
948
+ }) => FilterXdo<"regex_quote">));
949
+ readonly regex_replace: (((replacement: Scalar | Value, subject: Scalar | Value) => FilterXdo<"regex_replace">) & ((args: {
950
+ replacement: Scalar | Value;
951
+ subject: Scalar | Value;
952
+ }) => FilterXdo<"regex_replace">));
953
+ readonly regex_test: (((subject: Scalar | Value) => FilterXdo<"regex_test">) & ((args: {
954
+ subject: Scalar | Value;
955
+ }) => FilterXdo<"regex_test">));
956
+ readonly reverse: () => FilterXdo<"reverse">;
957
+ readonly round: (((precision?: Scalar | Value) => FilterXdo<"round">) & ((args: {
958
+ precision?: Scalar | Value;
959
+ }) => FilterXdo<"round">));
960
+ readonly rsort: () => FilterXdo<"rsort">;
961
+ readonly rtrim: (((mask?: Scalar | Value) => FilterXdo<"rtrim">) & ((args: {
962
+ mask?: Scalar | Value;
963
+ }) => FilterXdo<"rtrim">));
964
+ readonly safe_array: () => FilterXdo<"safe_array">;
965
+ readonly secs_to_ms: () => FilterXdo<"secs_to_ms">;
966
+ readonly secureid_decode: (((salt: Scalar | Value) => FilterXdo<"secureid_decode">) & ((args: {
967
+ salt: Scalar | Value;
968
+ }) => FilterXdo<"secureid_decode">));
969
+ readonly secureid_encode: (((salt: Scalar | Value) => FilterXdo<"secureid_encode">) & ((args: {
970
+ salt: Scalar | Value;
971
+ }) => FilterXdo<"secureid_encode">));
972
+ readonly set: (((path: Scalar | Value, value: Scalar | Value) => FilterXdo<"set">) & ((args: {
973
+ path: Scalar | Value;
974
+ value: Scalar | Value;
975
+ }) => FilterXdo<"set">));
976
+ readonly set_conditional: (((path: Scalar | Value, value: Scalar | Value, conditional: Scalar | Value) => FilterXdo<"set_conditional">) & ((args: {
977
+ path: Scalar | Value;
978
+ value: Scalar | Value;
979
+ conditional: Scalar | Value;
980
+ }) => FilterXdo<"set_conditional">));
981
+ readonly set_ifnotempty: (((path: Scalar | Value, value: Scalar | Value) => FilterXdo<"set_ifnotempty">) & ((args: {
982
+ path: Scalar | Value;
983
+ value: Scalar | Value;
984
+ }) => FilterXdo<"set_ifnotempty">));
985
+ readonly set_ifnotnull: (((path: Scalar | Value, value: Scalar | Value) => FilterXdo<"set_ifnotnull">) & ((args: {
986
+ path: Scalar | Value;
987
+ value: Scalar | Value;
988
+ }) => FilterXdo<"set_ifnotnull">));
989
+ readonly sha1: (((raw?: Scalar | Value) => FilterXdo<"sha1">) & ((args: {
990
+ raw?: Scalar | Value;
991
+ }) => FilterXdo<"sha1">));
992
+ readonly sha256: (((raw?: Scalar | Value) => FilterXdo<"sha256">) & ((args: {
993
+ raw?: Scalar | Value;
994
+ }) => FilterXdo<"sha256">));
995
+ readonly sha384: (((raw?: Scalar | Value) => FilterXdo<"sha384">) & ((args: {
996
+ raw?: Scalar | Value;
997
+ }) => FilterXdo<"sha384">));
998
+ readonly sha512: (((raw?: Scalar | Value) => FilterXdo<"sha512">) & ((args: {
999
+ raw?: Scalar | Value;
1000
+ }) => FilterXdo<"sha512">));
1001
+ readonly sin: () => FilterXdo<"sin">;
1002
+ readonly some: (((code: Scalar | Value | LambdaBody<"some">, timeout?: Scalar | Value) => FilterXdo<"some">) & ((args: {
1003
+ code: Scalar | Value | LambdaBody<"some">;
1004
+ timeout?: Scalar | Value;
1005
+ }) => FilterXdo<"some">));
1006
+ readonly sort: () => FilterXdo<"sort">;
1007
+ readonly splice: (((offset: Scalar | Value, length?: Scalar | Value, path?: Scalar | Value) => FilterXdo<"splice">) & ((args: {
1008
+ offset: Scalar | Value;
1009
+ length?: Scalar | Value;
1010
+ path?: Scalar | Value;
1011
+ }) => FilterXdo<"splice">));
1012
+ readonly split: (((separator: Scalar | Value) => FilterXdo<"split">) & ((args: {
1013
+ separator: Scalar | Value;
1014
+ }) => FilterXdo<"split">));
1015
+ readonly sprintf: (...args: (Scalar | Value)[]) => FilterXdo<"sprintf">;
1016
+ readonly sql_alias: () => FilterXdo<"sql_alias">;
1017
+ readonly sql_esc: () => FilterXdo<"sql_esc">;
1018
+ readonly sqrt: () => FilterXdo<"sqrt">;
1019
+ readonly starts_with: (((search: Scalar | Value) => FilterXdo<"starts_with">) & ((args: {
1020
+ search: Scalar | Value;
1021
+ }) => FilterXdo<"starts_with">));
1022
+ readonly string_replace: (((search: Scalar | Value, replacement: Scalar | Value) => FilterXdo<"string_replace">) & ((args: {
1023
+ search: Scalar | Value;
1024
+ replacement: Scalar | Value;
1025
+ }) => FilterXdo<"string_replace">));
1026
+ readonly strip_accents: () => FilterXdo<"strip_accents">;
1027
+ readonly strip_tags: (((exclude?: Scalar | Value) => FilterXdo<"strip_tags">) & ((args: {
1028
+ exclude?: Scalar | Value;
1029
+ }) => FilterXdo<"strip_tags">));
1030
+ readonly stripos: (((search: Scalar | Value) => FilterXdo<"stripos">) & ((args: {
1031
+ search: Scalar | Value;
1032
+ }) => FilterXdo<"stripos">));
1033
+ readonly strlen: () => FilterXdo<"strlen">;
1034
+ readonly strpos: (((search: Scalar | Value) => FilterXdo<"strpos">) & ((args: {
1035
+ search: Scalar | Value;
1036
+ }) => FilterXdo<"strpos">));
1037
+ readonly sub: (((value: Scalar | Value) => FilterXdo<"sub">) & ((args: {
1038
+ value: Scalar | Value;
1039
+ }) => FilterXdo<"sub">));
1040
+ readonly substr: (((start: Scalar | Value, length: Scalar | Value) => FilterXdo<"substr">) & ((args: {
1041
+ start: Scalar | Value;
1042
+ length: Scalar | Value;
1043
+ }) => FilterXdo<"substr">));
1044
+ readonly sum: () => FilterXdo<"sum">;
1045
+ readonly tan: () => FilterXdo<"tan">;
1046
+ readonly text_escape: () => FilterXdo<"text_escape">;
1047
+ readonly text_unescape: () => FilterXdo<"text_unescape">;
1048
+ readonly to_bool: () => FilterXdo<"to_bool">;
1049
+ readonly to_decimal: () => FilterXdo<"to_decimal">;
1050
+ readonly to_epoch_day: (((timezone?: Scalar | Value) => FilterXdo<"to_epoch_day">) & ((args: {
1051
+ timezone?: Scalar | Value;
1052
+ }) => FilterXdo<"to_epoch_day">));
1053
+ readonly to_epoch_hour: (((timezone?: Scalar | Value) => FilterXdo<"to_epoch_hour">) & ((args: {
1054
+ timezone?: Scalar | Value;
1055
+ }) => FilterXdo<"to_epoch_hour">));
1056
+ readonly to_epoch_minute: (((timezone?: Scalar | Value) => FilterXdo<"to_epoch_minute">) & ((args: {
1057
+ timezone?: Scalar | Value;
1058
+ }) => FilterXdo<"to_epoch_minute">));
1059
+ readonly to_epoch_ms: (((timezone?: Scalar | Value) => FilterXdo<"to_epoch_ms">) & ((args: {
1060
+ timezone?: Scalar | Value;
1061
+ }) => FilterXdo<"to_epoch_ms">));
1062
+ readonly to_epoch_sec: (((timezone?: Scalar | Value) => FilterXdo<"to_epoch_sec">) & ((args: {
1063
+ timezone?: Scalar | Value;
1064
+ }) => FilterXdo<"to_epoch_sec">));
1065
+ readonly to_epochms: (((timezone?: Scalar | Value) => FilterXdo<"to_epochms">) & ((args: {
1066
+ timezone?: Scalar | Value;
1067
+ }) => FilterXdo<"to_epochms">));
1068
+ readonly to_expr: () => FilterXdo<"to_expr">;
1069
+ readonly to_geo_linestring: () => FilterXdo<"to_geo_linestring">;
1070
+ readonly to_geo_multilinestring: () => FilterXdo<"to_geo_multilinestring">;
1071
+ readonly to_geo_multipoint: () => FilterXdo<"to_geo_multipoint">;
1072
+ readonly to_geo_multipolygon: () => FilterXdo<"to_geo_multipolygon">;
1073
+ readonly to_geo_point: () => FilterXdo<"to_geo_point">;
1074
+ readonly to_geo_polygon: () => FilterXdo<"to_geo_polygon">;
1075
+ readonly to_int: () => FilterXdo<"to_int">;
1076
+ readonly to_text: () => FilterXdo<"to_text">;
1077
+ readonly to_utf8: () => FilterXdo<"to_utf8">;
1078
+ readonly transform: (((expression: Scalar | Value) => FilterXdo<"transform">) & ((args: {
1079
+ expression: Scalar | Value;
1080
+ }) => FilterXdo<"transform">));
1081
+ readonly trim: (((mask?: Scalar | Value) => FilterXdo<"trim">) & ((args: {
1082
+ mask?: Scalar | Value;
1083
+ }) => FilterXdo<"trim">));
1084
+ readonly uid: () => FilterXdo<"uid">;
1085
+ readonly unique: (((path?: Scalar | Value) => FilterXdo<"unique">) & ((args: {
1086
+ path?: Scalar | Value;
1087
+ }) => FilterXdo<"unique">));
1088
+ readonly unpick: (((keys: Scalar | Value) => FilterXdo<"unpick">) & ((args: {
1089
+ keys: Scalar | Value;
1090
+ }) => FilterXdo<"unpick">));
1091
+ readonly unset: (((path: Scalar | Value) => FilterXdo<"unset">) & ((args: {
1092
+ path: Scalar | Value;
1093
+ }) => FilterXdo<"unset">));
1094
+ readonly upper: () => FilterXdo<"upper">;
1095
+ readonly url_addarg: (((key: Scalar | Value, value: Scalar | Value, encoding_rfc3986?: Scalar | Value) => FilterXdo<"url_addarg">) & ((args: {
1096
+ key: Scalar | Value;
1097
+ value: Scalar | Value;
1098
+ encoding_rfc3986?: Scalar | Value;
1099
+ }) => FilterXdo<"url_addarg">));
1100
+ readonly url_decode: () => FilterXdo<"url_decode">;
1101
+ readonly url_decode_rfc3986: () => FilterXdo<"url_decode_rfc3986">;
1102
+ readonly url_delarg: (((key: Scalar | Value) => FilterXdo<"url_delarg">) & ((args: {
1103
+ key: Scalar | Value;
1104
+ }) => FilterXdo<"url_delarg">));
1105
+ readonly url_encode: () => FilterXdo<"url_encode">;
1106
+ readonly url_encode_rfc3986: () => FilterXdo<"url_encode_rfc3986">;
1107
+ readonly url_getarg: (((key: Scalar | Value, default_?: Scalar | Value) => FilterXdo<"url_getarg">) & ((args: {
1108
+ key: Scalar | Value;
1109
+ default_?: Scalar | Value;
1110
+ }) => FilterXdo<"url_getarg">));
1111
+ readonly url_hasarg: (((key: Scalar | Value) => FilterXdo<"url_hasarg">) & ((args: {
1112
+ key: Scalar | Value;
1113
+ }) => FilterXdo<"url_hasarg">));
1114
+ readonly url_parse: () => FilterXdo<"url_parse">;
1115
+ readonly uuid4: () => FilterXdo<"uuid4">;
1116
+ readonly xml_decode: () => FilterXdo<"xml_decode">;
1117
+ readonly yaml_decode: () => FilterXdo<"yaml_decode">;
1118
+ readonly yaml_encode: (((options?: Scalar | Value, inline?: Scalar | Value, indent?: Scalar | Value) => FilterXdo<"yaml_encode">) & ((args: {
1119
+ options?: Scalar | Value;
1120
+ inline?: Scalar | Value;
1121
+ indent?: Scalar | Value;
1122
+ }) => FilterXdo<"yaml_encode">));
1123
+ };
1124
+
1125
+ /**
1126
+ * Schema-DSL interpreter. Turns a declarative statement schema's
1127
+ * `transform` rules into a runtime encoder, so the ~169 declarative statements
1128
+ * are driven by data (a `StatementSpec`) rather than hand-written per statement.
1129
+ *
1130
+ * A `StatementSpec` is a flat list of `FieldRule`s — one per authored field the
1131
+ * statement consumes — mirroring the engine's `transform.args` / `transform.blocks`
1132
+ * entries. Each rule says where one authored field lands in the stored statement:
1133
+ * - `route: { kind: "as" }` → the statement's top-level `as`.
1134
+ * - `route: { kind: "context-plain" }` → a plain string written at `context.<path>`.
1135
+ * - `route: { kind: "context-spread" }` → a Value's `{value,tag,filters}` spread
1136
+ * directly into `context` (the `!assign context` rule).
1137
+ * - `route: { kind: "context-nest" }` → a Value's `{value,tag,filters}` nested
1138
+ * under `context.<path>` (the `!assign context.<key>` rule).
1139
+ *
1140
+ * Rules carry optionality + an optional string `default` (the schema's `?=X`).
1141
+ * `output` (whether the stored item carries `output:{filters:[]}`) is NOT
1142
+ * derivable from the transform schema — it is engine statement-class metadata
1143
+ * (e.g. `uuid4` has an `as` but no `output`; `return` has a value block but no
1144
+ * `output`). The codegen pins it from the persisted golden fixture,
1145
+ * never guessing.
1146
+ *
1147
+ * Validated against real persisted fixtures (math_add, bitwise_and, object_keys,
1148
+ * array_push, array_pop). The codegen pipeline populates the
1149
+ * spec catalog from the Xano engine's schema definitions; uninterpretable schemas are
1150
+ * logged, never guessed.
1151
+ */
1152
+
1153
+ /**
1154
+ * What kind of authored value a field consumes:
1155
+ * - `string` — a plain `static:text` arg.
1156
+ * - `boolean` — a plain `static:bool` arg, authored as a real boolean.
1157
+ * - `value` — a `!kinds assign` tagged Value.
1158
+ * - `comparison` — a `Condition` expression tree (the `!compare` directive).
1159
+ */
1160
+ type FieldType = "string" | "boolean" | "value" | "comparison";
1161
+ /** Where one authored field lands in the stored statement. */
1162
+ type Route = {
1163
+ kind: "as";
1164
+ } | {
1165
+ kind: "context-plain";
1166
+ path: string;
1167
+ } | {
1168
+ kind: "context-spread";
1169
+ } | {
1170
+ kind: "context-nest";
1171
+ path: string;
1172
+ } | {
1173
+ kind: "context-compare";
1174
+ path: string;
1175
+ } | {
1176
+ kind: "input";
1177
+ name: string;
1178
+ };
1179
+ /**
1180
+ * Per-statement envelope shape, pinned from the persisted fixture — the
1181
+ * engine-class metadata that isn't in the transform schema. "Full" statements
1182
+ * (api_request, db ops, file ops) carry richer `input[]` entries and extra
1183
+ * top-level keys; lean statements (math, array, object) carry none of these.
1184
+ */
1185
+ interface EnvelopeProfile {
1186
+ /** `input[]` entries carry `ignore/expand/children` (vs the lean `{name,value,tag,filters}`). */
1187
+ inputFull?: boolean;
1188
+ /** Always emit `as` (default `""`) even when no rule sets it. */
1189
+ emitAs?: boolean;
1190
+ /** Emit `description:""`. */
1191
+ description?: boolean;
1192
+ /** Emit `settings_registry:[]`. */
1193
+ settingsRegistry?: boolean;
1194
+ /** Emit `addon:[]`. */
1195
+ addon?: boolean;
1196
+ /** `output` is the rich `{customize:false,filters:[],items:[]}` (vs lean `{filters:[]}`). */
1197
+ richOutput?: boolean;
1198
+ }
1199
+ /** One authored field → its routing into the stored statement. */
1200
+ interface FieldRule {
1201
+ /** Authored field name (e.g. "as", "name", "value", "filename"). */
1202
+ field: string;
1203
+ /** String arg vs Value(assign) — determines how `default`/missing is handled. */
1204
+ type: FieldType;
1205
+ /** Optional in authoring (the schema's trailing `?`). */
1206
+ optional: boolean;
1207
+ /** Literal default for string fields when not provided (the schema's `?=X`). */
1208
+ default?: string;
1209
+ /**
1210
+ * The field's closed set of legal values, harvested from the engine's runtime
1211
+ * input schema ({@link ./input-schema.ts}) and attached by
1212
+ * {@link ./enums.ts attachEnums}. Absent on all but the ~36 constrained
1213
+ * fields. Drives three things: the generated factory's literal-union
1214
+ * signature, the bare-literal shorthand, and the encode-time guard in
1215
+ * {@link encodeFromSpec}.
1216
+ */
1217
+ enum?: string[];
1218
+ /**
1219
+ * Written as an empty text constant when the author omits it, rather than
1220
+ * left out. Set by `overrides.ts` for a field that is optional to author but
1221
+ * that the engine reads unconditionally — it refuses a statement missing the
1222
+ * key at run time, after a clean deploy. The empty constant is what the
1223
+ * engine's own XanoScript form stores for "unset". An authored `null` writes
1224
+ * no key at all — the spelling a pull uses for a statement stored without it.
1225
+ */
1226
+ emptyWhenAbsent?: true;
1227
+ /** Routing target. */
1228
+ route: Route;
1229
+ }
1230
+ interface StatementSpec {
1231
+ /** Stored statement name, e.g. "mvp:math_add". */
1232
+ name: string;
1233
+ /**
1234
+ * The `s.` path the author calls this statement by (`"s.math.add"`) — what
1235
+ * every error names, since the stored name appears nowhere in authored code.
1236
+ * Written by the codegen beside the name, so naming the factory costs no
1237
+ * lookup table in the client bundle.
1238
+ */
1239
+ factory?: string;
1240
+ /** Marks the engine's argNameIsVar family (informational; does not affect encoding). */
1241
+ argNameIsVar?: boolean;
1242
+ /** Ordered field rules. */
1243
+ rules: FieldRule[];
1244
+ /** Emit `output` when true (pinned from the golden fixture; shape per `envelope.richOutput`). */
1245
+ output?: boolean;
1246
+ /** Per-statement envelope shape pinned from the fixture; absent = lean. */
1247
+ envelope?: EnvelopeProfile;
1248
+ }
1249
+ /**
1250
+ * Authored `output` envelope shaping (the frontend's "Output" tab). Any of the
1251
+ * three stored members may be set; omitted members keep their empty default.
1252
+ * `filters` attaches a filter chain to the result variable; `customize`/`items`
1253
+ * drive response field-mapping. Merged over the spec's default `output` shape.
1254
+ *
1255
+ * Prefer `asFilters` for the filter chain — it is typed, reaches every statement
1256
+ * rather than the subset declaring an `output`, and guards the no-binding case.
1257
+ * `filters` here remains the escape hatch for a chain the typed surface cannot
1258
+ * express; setting both throws.
1259
+ */
1260
+ interface OutputAuthored {
1261
+ filters?: unknown[];
1262
+ customize?: boolean;
1263
+ items?: unknown[];
1264
+ }
1265
+ /**
1266
+ * Authored inputs for a spec-driven statement, keyed by field name. Besides the
1267
+ * spec's rule fields, five reserved envelope keys are honored: `disabled`,
1268
+ * `description`, `mock`, and `asFilters` ({@link StatementAnnotations} —
1269
+ * accepted on every statement) and `output` (an {@link OutputAuthored} shaping
1270
+ * the result envelope, only where the statement carries one). No engine
1271
+ * statement routes a rule field by any of those five names, so they are
1272
+ * unambiguous.
1273
+ */
1274
+ type Authored = Record<string, string | boolean | Value | Condition | OutputAuthored | FilterXdo[] | MockMap | undefined>;
1275
+ /** Encode authored inputs into a `Statement` using a spec's field rules. */
1276
+ declare function encodeFromSpec(spec: StatementSpec, authored: Authored): Statement;
1277
+ /** Register a spec on the statement registry; returns its factory. */
1278
+ declare function registerSpec(spec: StatementSpec): (authored: Authored) => Statement;
1279
+
1280
+ declare const mathAdd: (varName: string, value: Value) => Statement;
1281
+ declare const mathSub: (varName: string, value: Value) => Statement;
1282
+ declare const mathMul: (varName: string, value: Value) => Statement;
1283
+ declare const mathDiv: (varName: string, value: Value) => Statement;
1284
+ declare const bitwiseAnd: (varName: string, value: Value) => Statement;
1285
+ declare const bitwiseOr: (varName: string, value: Value) => Statement;
1286
+ declare const bitwiseXor: (varName: string, value: Value) => Statement;
1287
+ declare const textAppend: (varName: string, value: Value) => Statement;
1288
+ declare const textPrepend: (varName: string, value: Value) => Statement;
1289
+ declare const objectKeys: (as: string, value: Value) => Statement;
1290
+ declare const objectValues: (as: string, value: Value) => Statement;
1291
+ declare const objectEntries: (as: string, value: Value) => Statement;
1292
+ /** Names of all statements produced by the generated catalog. */
1293
+ declare const GENERATED_STATEMENT_NAMES: string[];
1294
+
1295
+ /**
1296
+ * Typed, namespaced factories for the declarative statement catalog: every
1297
+ * generated statement is reachable + autocomplete-discoverable as
1298
+ * `generated.<namespace>.<method>({…})` (e.g. `generated.math.add`,
1299
+ * `generated.db.get`). The unified public surface is `s` in ../s.ts, which
1300
+ * merges these with the hand-authored control-flow specials.
1301
+ */
1302
+
1303
+ declare const generated: {
1304
+ ai: {
1305
+ external: {
1306
+ mcp: {
1307
+ server_details: (a: {
1308
+ as?: string;
1309
+ url: Value;
1310
+ bearer_token?: Value;
1311
+ connection_type?: "sse" | "stream" | Value;
1312
+ disabled?: boolean;
1313
+ description?: string;
1314
+ asFilters?: FilterXdo[];
1315
+ }) => Statement;
1316
+ tool: {
1317
+ list: (a: {
1318
+ as?: string;
1319
+ url: Value;
1320
+ bearer_token?: Value;
1321
+ connection_type?: "sse" | "stream" | Value;
1322
+ disabled?: boolean;
1323
+ description?: string;
1324
+ asFilters?: FilterXdo[];
1325
+ }) => Statement;
1326
+ run: (a: {
1327
+ as?: string;
1328
+ url: Value;
1329
+ bearer_token?: Value;
1330
+ connection_type?: "sse" | "stream" | Value;
1331
+ tool: Value;
1332
+ args?: Value;
1333
+ disabled?: boolean;
1334
+ description?: string;
1335
+ asFilters?: FilterXdo[];
1336
+ }) => Statement;
1337
+ };
1338
+ };
1339
+ };
1340
+ };
1341
+ api: {
1342
+ request: (a: {
1343
+ as?: string;
1344
+ url: Value;
1345
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "PATCH" | Value;
1346
+ params?: Value;
1347
+ headers?: Value;
1348
+ timeout?: Value;
1349
+ follow_location?: Value;
1350
+ verify_host?: Value;
1351
+ verify_peer?: Value;
1352
+ ca_certificate?: Value;
1353
+ certificate?: Value;
1354
+ certificate_pass?: Value;
1355
+ private_key?: Value;
1356
+ private_key_pass?: Value;
1357
+ disabled?: boolean;
1358
+ description?: string;
1359
+ asFilters?: FilterXdo[];
1360
+ output?: OutputAuthored;
1361
+ }) => Statement;
1362
+ stream: (a: {
1363
+ value: Value;
1364
+ disabled?: boolean;
1365
+ description?: string;
1366
+ }) => Statement;
1367
+ };
1368
+ array: {
1369
+ difference: (a?: {
1370
+ as?: string;
1371
+ expr?: Value;
1372
+ value?: Value;
1373
+ by?: Value;
1374
+ disabled?: boolean;
1375
+ description?: string;
1376
+ asFilters?: FilterXdo[];
1377
+ }) => Statement;
1378
+ every: (a?: {
1379
+ expr?: Value;
1380
+ as?: string;
1381
+ if?: Condition;
1382
+ disabled?: boolean;
1383
+ description?: string;
1384
+ asFilters?: FilterXdo[];
1385
+ output?: OutputAuthored;
1386
+ }) => Statement;
1387
+ filter: (a?: {
1388
+ expr?: Value;
1389
+ as?: string;
1390
+ if?: Condition;
1391
+ disabled?: boolean;
1392
+ description?: string;
1393
+ asFilters?: FilterXdo[];
1394
+ }) => Statement;
1395
+ filter_count: (a?: {
1396
+ expr?: Value;
1397
+ as?: string;
1398
+ if?: Condition;
1399
+ disabled?: boolean;
1400
+ description?: string;
1401
+ asFilters?: FilterXdo[];
1402
+ }) => Statement;
1403
+ find: (a?: {
1404
+ expr?: Value;
1405
+ as?: string;
1406
+ if?: Condition;
1407
+ disabled?: boolean;
1408
+ description?: string;
1409
+ asFilters?: FilterXdo[];
1410
+ output?: OutputAuthored;
1411
+ }) => Statement;
1412
+ find_index: (a?: {
1413
+ expr?: Value;
1414
+ as?: string;
1415
+ if?: Condition;
1416
+ disabled?: boolean;
1417
+ description?: string;
1418
+ asFilters?: FilterXdo[];
1419
+ }) => Statement;
1420
+ group_by: (a?: {
1421
+ as?: string;
1422
+ expr?: Value;
1423
+ by?: Value;
1424
+ disabled?: boolean;
1425
+ description?: string;
1426
+ asFilters?: FilterXdo[];
1427
+ }) => Statement;
1428
+ has: (a?: {
1429
+ expr?: Value;
1430
+ as?: string;
1431
+ if?: Condition;
1432
+ disabled?: boolean;
1433
+ description?: string;
1434
+ asFilters?: FilterXdo[];
1435
+ }) => Statement;
1436
+ intersection: (a?: {
1437
+ as?: string;
1438
+ expr?: Value;
1439
+ value?: Value;
1440
+ by?: Value;
1441
+ disabled?: boolean;
1442
+ description?: string;
1443
+ asFilters?: FilterXdo[];
1444
+ }) => Statement;
1445
+ merge: (a?: {
1446
+ name?: string;
1447
+ value?: Value;
1448
+ disabled?: boolean;
1449
+ description?: string;
1450
+ output?: OutputAuthored;
1451
+ }) => Statement;
1452
+ partition: (a?: {
1453
+ expr?: Value;
1454
+ as?: string;
1455
+ if?: Condition;
1456
+ disabled?: boolean;
1457
+ description?: string;
1458
+ asFilters?: FilterXdo[];
1459
+ }) => Statement;
1460
+ pop: (a?: {
1461
+ name?: string;
1462
+ as?: string;
1463
+ disabled?: boolean;
1464
+ description?: string;
1465
+ asFilters?: FilterXdo[];
1466
+ output?: OutputAuthored;
1467
+ }) => Statement;
1468
+ push: (a: {
1469
+ name?: string;
1470
+ value: Value;
1471
+ disabled?: boolean;
1472
+ description?: string;
1473
+ output?: OutputAuthored;
1474
+ }) => Statement;
1475
+ shift: (a?: {
1476
+ name?: string;
1477
+ as?: string;
1478
+ disabled?: boolean;
1479
+ description?: string;
1480
+ asFilters?: FilterXdo[];
1481
+ }) => Statement;
1482
+ unshift: (a: {
1483
+ name?: string;
1484
+ value: Value;
1485
+ disabled?: boolean;
1486
+ description?: string;
1487
+ }) => Statement;
1488
+ };
1489
+ await: (a?: {
1490
+ as?: string;
1491
+ ids?: Value;
1492
+ timeout?: Value;
1493
+ disabled?: boolean;
1494
+ description?: string;
1495
+ asFilters?: FilterXdo[];
1496
+ }) => Statement;
1497
+ cloud: {
1498
+ algolia: {
1499
+ request: (a: {
1500
+ as?: string;
1501
+ application_id: Value;
1502
+ api_key: Value;
1503
+ url: Value;
1504
+ method?: "POST" | "GET" | "DELETE" | "PUT" | Value;
1505
+ payload: Value;
1506
+ disabled?: boolean;
1507
+ description?: string;
1508
+ asFilters?: FilterXdo[];
1509
+ output?: OutputAuthored;
1510
+ }) => Statement;
1511
+ };
1512
+ aws: {
1513
+ opensearch: {
1514
+ document: (a: {
1515
+ as?: string;
1516
+ auth_type?: "IAM" | "master" | Value;
1517
+ key_id: Value;
1518
+ access_key: Value;
1519
+ region: Value;
1520
+ base_url: Value;
1521
+ method?: "GET" | "POST" | "PUT" | "DELETE" | Value;
1522
+ index: Value;
1523
+ doc_id: Value;
1524
+ doc: Value;
1525
+ disabled?: boolean;
1526
+ description?: string;
1527
+ asFilters?: FilterXdo[];
1528
+ }) => Statement;
1529
+ query: (a: {
1530
+ as?: string;
1531
+ auth_type?: "IAM" | "master" | Value;
1532
+ key_id: Value;
1533
+ access_key: Value;
1534
+ region: Value;
1535
+ base_url: Value;
1536
+ index: Value;
1537
+ payload: Value;
1538
+ size?: Value;
1539
+ from?: Value;
1540
+ included_fields?: Value;
1541
+ return_type?: "search" | "count" | Value;
1542
+ expression?: Value;
1543
+ sort?: Value;
1544
+ disabled?: boolean;
1545
+ description?: string;
1546
+ asFilters?: FilterXdo[];
1547
+ }) => Statement;
1548
+ request: (a: {
1549
+ as?: string;
1550
+ auth_type?: "IAM" | "master" | Value;
1551
+ key_id: Value;
1552
+ access_key: Value;
1553
+ region: Value;
1554
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "PATCH" | Value;
1555
+ url: Value;
1556
+ query: Value;
1557
+ disabled?: boolean;
1558
+ description?: string;
1559
+ asFilters?: FilterXdo[];
1560
+ }) => Statement;
1561
+ };
1562
+ s3: {
1563
+ delete_file: (a: {
1564
+ as?: string;
1565
+ bucket: Value;
1566
+ region: Value;
1567
+ key: Value;
1568
+ secret: Value;
1569
+ file_key: Value;
1570
+ disabled?: boolean;
1571
+ description?: string;
1572
+ asFilters?: FilterXdo[];
1573
+ }) => Statement;
1574
+ get_file_info: (a: {
1575
+ as?: string;
1576
+ bucket: Value;
1577
+ region: Value;
1578
+ key: Value;
1579
+ secret: Value;
1580
+ file_key: Value;
1581
+ disabled?: boolean;
1582
+ description?: string;
1583
+ asFilters?: FilterXdo[];
1584
+ }) => Statement;
1585
+ list_directory: (a: {
1586
+ as?: string;
1587
+ bucket: Value;
1588
+ region: Value;
1589
+ key: Value;
1590
+ secret: Value;
1591
+ prefix?: Value;
1592
+ next_page_token?: Value;
1593
+ disabled?: boolean;
1594
+ description?: string;
1595
+ asFilters?: FilterXdo[];
1596
+ }) => Statement;
1597
+ read_file: (a: {
1598
+ as?: string;
1599
+ bucket: Value;
1600
+ region: Value;
1601
+ key: Value;
1602
+ secret: Value;
1603
+ file_key: Value;
1604
+ disabled?: boolean;
1605
+ description?: string;
1606
+ asFilters?: FilterXdo[];
1607
+ }) => Statement;
1608
+ sign_url: (a: {
1609
+ as?: string;
1610
+ bucket: Value;
1611
+ region: Value;
1612
+ key: Value;
1613
+ secret: Value;
1614
+ file_key: Value;
1615
+ ttl?: Value;
1616
+ disabled?: boolean;
1617
+ description?: string;
1618
+ asFilters?: FilterXdo[];
1619
+ }) => Statement;
1620
+ upload_file: (a: {
1621
+ as?: string;
1622
+ bucket: Value;
1623
+ region: Value;
1624
+ key: Value;
1625
+ secret: Value;
1626
+ file_key?: Value;
1627
+ file: Value;
1628
+ metadata?: Value;
1629
+ object_lock_mode?: "compliance" | "governance" | Value;
1630
+ object_lock_retain_until?: Value;
1631
+ disabled?: boolean;
1632
+ description?: string;
1633
+ asFilters?: FilterXdo[];
1634
+ }) => Statement;
1635
+ };
1636
+ };
1637
+ azure: {
1638
+ storage: {
1639
+ delete_file: (a: {
1640
+ as?: string;
1641
+ account_name: Value;
1642
+ account_key: Value;
1643
+ container_name: Value;
1644
+ filePath: Value;
1645
+ disabled?: boolean;
1646
+ description?: string;
1647
+ asFilters?: FilterXdo[];
1648
+ }) => Statement;
1649
+ get_file_info: (a: {
1650
+ as?: string;
1651
+ account_name: Value;
1652
+ account_key: Value;
1653
+ container_name: Value;
1654
+ filePath: Value;
1655
+ disabled?: boolean;
1656
+ description?: string;
1657
+ asFilters?: FilterXdo[];
1658
+ }) => Statement;
1659
+ list_directory: (a: {
1660
+ as?: string;
1661
+ account_name: Value;
1662
+ account_key: Value;
1663
+ container_name: Value;
1664
+ path?: Value;
1665
+ disabled?: boolean;
1666
+ description?: string;
1667
+ asFilters?: FilterXdo[];
1668
+ }) => Statement;
1669
+ read_file: (a: {
1670
+ as?: string;
1671
+ account_name: Value;
1672
+ account_key: Value;
1673
+ container_name: Value;
1674
+ filePath: Value;
1675
+ disabled?: boolean;
1676
+ description?: string;
1677
+ asFilters?: FilterXdo[];
1678
+ }) => Statement;
1679
+ sign_url: (a: {
1680
+ as?: string;
1681
+ account_name: Value;
1682
+ account_key: Value;
1683
+ container_name: Value;
1684
+ path: Value;
1685
+ ttl?: Value;
1686
+ disabled?: boolean;
1687
+ description?: string;
1688
+ asFilters?: FilterXdo[];
1689
+ }) => Statement;
1690
+ upload_file: (a: {
1691
+ as?: string;
1692
+ account_name: Value;
1693
+ account_key: Value;
1694
+ container_name: Value;
1695
+ filePath: Value;
1696
+ file: Value;
1697
+ metadata?: Value;
1698
+ disabled?: boolean;
1699
+ description?: string;
1700
+ asFilters?: FilterXdo[];
1701
+ }) => Statement;
1702
+ };
1703
+ };
1704
+ elasticsearch: {
1705
+ document: (a: {
1706
+ as?: string;
1707
+ auth_type?: "Basic" | "Bearer" | "API Key" | Value;
1708
+ key_id: Value;
1709
+ access_key: Value;
1710
+ base_url: Value;
1711
+ index: Value;
1712
+ method?: "GET" | "POST" | "PUT" | "DELETE" | Value;
1713
+ doc_id: Value;
1714
+ doc: Value;
1715
+ disabled?: boolean;
1716
+ description?: string;
1717
+ asFilters?: FilterXdo[];
1718
+ }) => Statement;
1719
+ query: (a: {
1720
+ as?: string;
1721
+ auth_type?: "Basic" | "Bearer" | "API Key" | Value;
1722
+ key_id: Value;
1723
+ access_key: Value;
1724
+ base_url: Value;
1725
+ index: Value;
1726
+ payload: Value;
1727
+ size?: Value;
1728
+ from?: Value;
1729
+ included_fields?: Value;
1730
+ return_type?: "search" | "count" | Value;
1731
+ expression?: Value;
1732
+ sort?: Value;
1733
+ disabled?: boolean;
1734
+ description?: string;
1735
+ asFilters?: FilterXdo[];
1736
+ }) => Statement;
1737
+ request: (a: {
1738
+ as?: string;
1739
+ auth_type?: "Basic" | "Bearer" | "API Key" | Value;
1740
+ key_id: Value;
1741
+ access_key: Value;
1742
+ method?: "POST" | "GET" | "PUT" | "DELETE" | "PATCH" | Value;
1743
+ url: Value;
1744
+ payload: Value;
1745
+ disabled?: boolean;
1746
+ description?: string;
1747
+ asFilters?: FilterXdo[];
1748
+ }) => Statement;
1749
+ };
1750
+ google: {
1751
+ storage: {
1752
+ delete_file: (a: {
1753
+ as?: string;
1754
+ service_account: Value;
1755
+ bucket: Value;
1756
+ filePath: Value;
1757
+ disabled?: boolean;
1758
+ description?: string;
1759
+ asFilters?: FilterXdo[];
1760
+ }) => Statement;
1761
+ get_file_info: (a: {
1762
+ as?: string;
1763
+ service_account: Value;
1764
+ bucket: Value;
1765
+ filePath: Value;
1766
+ disabled?: boolean;
1767
+ description?: string;
1768
+ asFilters?: FilterXdo[];
1769
+ }) => Statement;
1770
+ list_directory: (a: {
1771
+ as?: string;
1772
+ service_account: Value;
1773
+ bucket: Value;
1774
+ path: Value;
1775
+ disabled?: boolean;
1776
+ description?: string;
1777
+ asFilters?: FilterXdo[];
1778
+ }) => Statement;
1779
+ read_file: (a: {
1780
+ as?: string;
1781
+ service_account: Value;
1782
+ bucket: Value;
1783
+ filePath: Value;
1784
+ disabled?: boolean;
1785
+ description?: string;
1786
+ asFilters?: FilterXdo[];
1787
+ }) => Statement;
1788
+ sign_url: (a: {
1789
+ as?: string;
1790
+ service_account: Value;
1791
+ bucket: Value;
1792
+ filePath: Value;
1793
+ method?: "GET" | "POST" | Value;
1794
+ ttl?: Value;
1795
+ disabled?: boolean;
1796
+ description?: string;
1797
+ asFilters?: FilterXdo[];
1798
+ }) => Statement;
1799
+ upload_file: (a: {
1800
+ as?: string;
1801
+ service_account: Value;
1802
+ bucket: Value;
1803
+ filePath: Value;
1804
+ file: Value;
1805
+ metadata?: Value;
1806
+ disabled?: boolean;
1807
+ description?: string;
1808
+ asFilters?: FilterXdo[];
1809
+ }) => Statement;
1810
+ };
1811
+ };
1812
+ };
1813
+ datadog: {
1814
+ log: (a: {
1815
+ message: Value;
1816
+ status?: "debug" | "info" | "notice" | "warn" | "error" | "critical" | "alert" | "emergency" | Value;
1817
+ attributes?: Value;
1818
+ service?: Value;
1819
+ source?: Value;
1820
+ env?: Value;
1821
+ hostname?: Value;
1822
+ tags?: Value;
1823
+ timestamp?: Value;
1824
+ connection?: Value;
1825
+ disabled?: boolean;
1826
+ description?: string;
1827
+ }) => Statement;
1828
+ log_bulk: (a: {
1829
+ entries: Value;
1830
+ connection?: Value;
1831
+ disabled?: boolean;
1832
+ description?: string;
1833
+ }) => Statement;
1834
+ metric: (a: {
1835
+ metric: Value;
1836
+ value: Value;
1837
+ type?: "count" | "gauge" | "rate" | "histogram" | "distribution" | Value;
1838
+ tags?: Value;
1839
+ service?: Value;
1840
+ source?: Value;
1841
+ env?: Value;
1842
+ hostname?: Value;
1843
+ timestamp?: Value;
1844
+ connection?: Value;
1845
+ disabled?: boolean;
1846
+ description?: string;
1847
+ }) => Statement;
1848
+ metric_bulk: (a: {
1849
+ entries: Value;
1850
+ connection?: Value;
1851
+ disabled?: boolean;
1852
+ description?: string;
1853
+ }) => Statement;
1854
+ };
1855
+ db: {
1856
+ set_datasource: (a: {
1857
+ value: Value;
1858
+ workspace_id?: Value;
1859
+ disabled?: boolean;
1860
+ description?: string;
1861
+ }) => Statement;
1862
+ };
1863
+ debug: {
1864
+ log: (a: {
1865
+ value: Value;
1866
+ disabled?: boolean;
1867
+ description?: string;
1868
+ }) => Statement;
1869
+ stop: (a: {
1870
+ value: Value;
1871
+ disabled?: boolean;
1872
+ description?: string;
1873
+ }) => Statement;
1874
+ };
1875
+ expect: {
1876
+ to_be_defined: (a?: {
1877
+ expr?: Value;
1878
+ disabled?: boolean;
1879
+ description?: string;
1880
+ }) => Statement;
1881
+ to_be_empty: (a?: {
1882
+ expr?: Value;
1883
+ disabled?: boolean;
1884
+ description?: string;
1885
+ }) => Statement;
1886
+ to_be_false: (a?: {
1887
+ expr?: Value;
1888
+ disabled?: boolean;
1889
+ description?: string;
1890
+ }) => Statement;
1891
+ to_be_greater_than: (a?: {
1892
+ expr?: Value;
1893
+ value?: Value;
1894
+ disabled?: boolean;
1895
+ description?: string;
1896
+ }) => Statement;
1897
+ to_be_in_the_future: (a?: {
1898
+ expr?: Value;
1899
+ disabled?: boolean;
1900
+ description?: string;
1901
+ }) => Statement;
1902
+ to_be_in_the_past: (a?: {
1903
+ expr?: Value;
1904
+ disabled?: boolean;
1905
+ description?: string;
1906
+ }) => Statement;
1907
+ to_be_less_than: (a?: {
1908
+ expr?: Value;
1909
+ value?: Value;
1910
+ disabled?: boolean;
1911
+ description?: string;
1912
+ }) => Statement;
1913
+ to_be_null: (a?: {
1914
+ expr?: Value;
1915
+ disabled?: boolean;
1916
+ description?: string;
1917
+ }) => Statement;
1918
+ to_be_true: (a?: {
1919
+ expr?: Value;
1920
+ disabled?: boolean;
1921
+ description?: string;
1922
+ }) => Statement;
1923
+ to_be_within: (a?: {
1924
+ expr?: Value;
1925
+ min?: Value;
1926
+ max?: Value;
1927
+ disabled?: boolean;
1928
+ description?: string;
1929
+ }) => Statement;
1930
+ to_contain: (a?: {
1931
+ expr?: Value;
1932
+ value?: Value;
1933
+ disabled?: boolean;
1934
+ description?: string;
1935
+ }) => Statement;
1936
+ to_end_with: (a?: {
1937
+ expr?: Value;
1938
+ value?: Value;
1939
+ disabled?: boolean;
1940
+ description?: string;
1941
+ }) => Statement;
1942
+ to_equal: (a?: {
1943
+ expr?: Value;
1944
+ value?: Value;
1945
+ disabled?: boolean;
1946
+ description?: string;
1947
+ }) => Statement;
1948
+ to_match: (a?: {
1949
+ expr?: Value;
1950
+ value?: Value;
1951
+ disabled?: boolean;
1952
+ description?: string;
1953
+ }) => Statement;
1954
+ to_not_be_defined: (a?: {
1955
+ expr?: Value;
1956
+ disabled?: boolean;
1957
+ description?: string;
1958
+ }) => Statement;
1959
+ to_not_be_null: (a?: {
1960
+ expr?: Value;
1961
+ disabled?: boolean;
1962
+ description?: string;
1963
+ }) => Statement;
1964
+ to_not_equal: (a?: {
1965
+ expr?: Value;
1966
+ value?: Value;
1967
+ disabled?: boolean;
1968
+ description?: string;
1969
+ }) => Statement;
1970
+ to_start_with: (a?: {
1971
+ expr?: Value;
1972
+ value?: Value;
1973
+ disabled?: boolean;
1974
+ description?: string;
1975
+ }) => Statement;
1976
+ };
1977
+ lambda: (a: {
1978
+ as?: string;
1979
+ code: Value | LambdaBody<"s.lambda">;
1980
+ timeout?: Value;
1981
+ disabled?: boolean;
1982
+ description?: string;
1983
+ asFilters?: FilterXdo[];
1984
+ }) => Statement;
1985
+ math: {
1986
+ add: (a: {
1987
+ name?: string;
1988
+ value: Value;
1989
+ disabled?: boolean;
1990
+ description?: string;
1991
+ output?: OutputAuthored;
1992
+ }) => Statement;
1993
+ bitwise: {
1994
+ and: (a: {
1995
+ name?: string;
1996
+ value: Value;
1997
+ disabled?: boolean;
1998
+ description?: string;
1999
+ output?: OutputAuthored;
2000
+ }) => Statement;
2001
+ or: (a: {
2002
+ name?: string;
2003
+ value: Value;
2004
+ disabled?: boolean;
2005
+ description?: string;
2006
+ output?: OutputAuthored;
2007
+ }) => Statement;
2008
+ xor: (a: {
2009
+ name?: string;
2010
+ value: Value;
2011
+ disabled?: boolean;
2012
+ description?: string;
2013
+ output?: OutputAuthored;
2014
+ }) => Statement;
2015
+ };
2016
+ div: (a: {
2017
+ name?: string;
2018
+ value: Value;
2019
+ disabled?: boolean;
2020
+ description?: string;
2021
+ }) => Statement;
2022
+ mod: (a: {
2023
+ name?: string;
2024
+ value: Value;
2025
+ disabled?: boolean;
2026
+ description?: string;
2027
+ }) => Statement;
2028
+ mul: (a: {
2029
+ name?: string;
2030
+ value: Value;
2031
+ disabled?: boolean;
2032
+ description?: string;
2033
+ }) => Statement;
2034
+ sub: (a: {
2035
+ name?: string;
2036
+ value: Value;
2037
+ disabled?: boolean;
2038
+ description?: string;
2039
+ }) => Statement;
2040
+ };
2041
+ mcp: {
2042
+ oauth: {
2043
+ complete: (a: {
2044
+ as?: string;
2045
+ request: Value;
2046
+ decision: "approve" | "deny" | Value;
2047
+ unsafe_user_id?: Value;
2048
+ disabled?: boolean;
2049
+ description?: string;
2050
+ asFilters?: FilterXdo[];
2051
+ }) => Statement;
2052
+ request: (a: {
2053
+ as?: string;
2054
+ request: Value;
2055
+ disabled?: boolean;
2056
+ description?: string;
2057
+ asFilters?: FilterXdo[];
2058
+ }) => Statement;
2059
+ revoke: (a: {
2060
+ as?: string;
2061
+ mcp_server: Value;
2062
+ user_id?: Value;
2063
+ grant_id?: Value;
2064
+ all?: Value;
2065
+ disabled?: boolean;
2066
+ description?: string;
2067
+ asFilters?: FilterXdo[];
2068
+ }) => Statement;
2069
+ };
2070
+ progress: (a: {
2071
+ progress: Value;
2072
+ total?: Value;
2073
+ message?: Value;
2074
+ disabled?: boolean;
2075
+ description?: string;
2076
+ }) => Statement;
2077
+ };
2078
+ microservice: {
2079
+ request: (a: {
2080
+ as?: string;
2081
+ host: Value;
2082
+ path: Value;
2083
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "OPTIONS" | "PATCH" | Value;
2084
+ params?: Value;
2085
+ headers: Value;
2086
+ timeout?: Value;
2087
+ follow_location?: Value;
2088
+ disabled?: boolean;
2089
+ description?: string;
2090
+ asFilters?: FilterXdo[];
2091
+ }) => Statement;
2092
+ };
2093
+ object: {
2094
+ entries: (a?: {
2095
+ as?: string;
2096
+ value?: Value;
2097
+ disabled?: boolean;
2098
+ description?: string;
2099
+ asFilters?: FilterXdo[];
2100
+ output?: OutputAuthored;
2101
+ }) => Statement;
2102
+ keys: (a?: {
2103
+ as?: string;
2104
+ value?: Value;
2105
+ disabled?: boolean;
2106
+ description?: string;
2107
+ asFilters?: FilterXdo[];
2108
+ output?: OutputAuthored;
2109
+ }) => Statement;
2110
+ values: (a?: {
2111
+ as?: string;
2112
+ value?: Value;
2113
+ disabled?: boolean;
2114
+ description?: string;
2115
+ asFilters?: FilterXdo[];
2116
+ output?: OutputAuthored;
2117
+ }) => Statement;
2118
+ };
2119
+ precondition: (a?: {
2120
+ expr?: Condition;
2121
+ error_type?: string;
2122
+ error?: Value;
2123
+ payload?: Value;
2124
+ disabled?: boolean;
2125
+ description?: string;
2126
+ }) => Statement;
2127
+ realtime: {
2128
+ get_session: (a?: {
2129
+ as?: string;
2130
+ disabled?: boolean;
2131
+ description?: string;
2132
+ asFilters?: FilterXdo[];
2133
+ }) => Statement;
2134
+ };
2135
+ redis: {
2136
+ count: (a: {
2137
+ as?: string;
2138
+ key: Value;
2139
+ disabled?: boolean;
2140
+ description?: string;
2141
+ asFilters?: FilterXdo[];
2142
+ }) => Statement;
2143
+ decr: (a: {
2144
+ as?: string;
2145
+ key: Value;
2146
+ by?: Value;
2147
+ disabled?: boolean;
2148
+ description?: string;
2149
+ asFilters?: FilterXdo[];
2150
+ }) => Statement;
2151
+ del: (a: {
2152
+ key: Value;
2153
+ disabled?: boolean;
2154
+ description?: string;
2155
+ }) => Statement;
2156
+ get: (a: {
2157
+ as?: string;
2158
+ key: Value;
2159
+ disabled?: boolean;
2160
+ description?: string;
2161
+ asFilters?: FilterXdo[];
2162
+ }) => Statement;
2163
+ has: (a: {
2164
+ as?: string;
2165
+ key: Value;
2166
+ disabled?: boolean;
2167
+ description?: string;
2168
+ asFilters?: FilterXdo[];
2169
+ }) => Statement;
2170
+ incr: (a: {
2171
+ as?: string;
2172
+ key: Value;
2173
+ by?: Value;
2174
+ disabled?: boolean;
2175
+ description?: string;
2176
+ asFilters?: FilterXdo[];
2177
+ }) => Statement;
2178
+ keys: (a: {
2179
+ as?: string;
2180
+ search: Value;
2181
+ disabled?: boolean;
2182
+ description?: string;
2183
+ asFilters?: FilterXdo[];
2184
+ }) => Statement;
2185
+ pop: (a: {
2186
+ as?: string;
2187
+ key: Value;
2188
+ count?: Value;
2189
+ disabled?: boolean;
2190
+ description?: string;
2191
+ asFilters?: FilterXdo[];
2192
+ }) => Statement;
2193
+ push: (a: {
2194
+ as?: string;
2195
+ key: Value;
2196
+ value: Value;
2197
+ disabled?: boolean;
2198
+ description?: string;
2199
+ asFilters?: FilterXdo[];
2200
+ }) => Statement;
2201
+ range: (a: {
2202
+ as?: string;
2203
+ key: Value;
2204
+ start?: Value;
2205
+ stop?: Value;
2206
+ disabled?: boolean;
2207
+ description?: string;
2208
+ asFilters?: FilterXdo[];
2209
+ }) => Statement;
2210
+ ratelimit: (a: {
2211
+ as?: string;
2212
+ key: Value;
2213
+ max?: Value;
2214
+ ttl?: Value;
2215
+ error?: Value;
2216
+ disabled?: boolean;
2217
+ description?: string;
2218
+ asFilters?: FilterXdo[];
2219
+ }) => Statement;
2220
+ remove: (a: {
2221
+ as?: string;
2222
+ key: Value;
2223
+ value: Value;
2224
+ count?: Value;
2225
+ disabled?: boolean;
2226
+ description?: string;
2227
+ asFilters?: FilterXdo[];
2228
+ }) => Statement;
2229
+ set: (a: {
2230
+ as?: string;
2231
+ key: Value;
2232
+ data: Value;
2233
+ ttl?: Value;
2234
+ create_only?: Value;
2235
+ disabled?: boolean;
2236
+ description?: string;
2237
+ asFilters?: FilterXdo[];
2238
+ }) => Statement;
2239
+ shift: (a: {
2240
+ as?: string;
2241
+ key: Value;
2242
+ count?: Value;
2243
+ disabled?: boolean;
2244
+ description?: string;
2245
+ asFilters?: FilterXdo[];
2246
+ }) => Statement;
2247
+ unshift: (a: {
2248
+ as?: string;
2249
+ key: Value;
2250
+ value: Value;
2251
+ disabled?: boolean;
2252
+ description?: string;
2253
+ asFilters?: FilterXdo[];
2254
+ }) => Statement;
2255
+ };
2256
+ security: {
2257
+ check_password: (a: {
2258
+ as?: string;
2259
+ text_password: Value;
2260
+ hash_password: Value;
2261
+ disabled?: boolean;
2262
+ description?: string;
2263
+ asFilters?: FilterXdo[];
2264
+ output?: OutputAuthored;
2265
+ }) => Statement;
2266
+ create_curve_key: (a?: {
2267
+ as?: string;
2268
+ curve?: "P-256" | "P-384" | "P-521" | Value;
2269
+ format?: "object" | "base64" | Value;
2270
+ disabled?: boolean;
2271
+ description?: string;
2272
+ asFilters?: FilterXdo[];
2273
+ }) => Statement;
2274
+ create_password: (a?: {
2275
+ as?: string;
2276
+ character_count?: Value;
2277
+ require_lowercase?: Value;
2278
+ require_uppercase?: Value;
2279
+ require_digit?: Value;
2280
+ require_symbol?: Value;
2281
+ symbol_whitelist?: Value;
2282
+ disabled?: boolean;
2283
+ description?: string;
2284
+ asFilters?: FilterXdo[];
2285
+ }) => Statement;
2286
+ create_rsa_key: (a?: {
2287
+ as?: string;
2288
+ bits?: Value;
2289
+ format?: "object" | "base64" | Value;
2290
+ disabled?: boolean;
2291
+ description?: string;
2292
+ asFilters?: FilterXdo[];
2293
+ }) => Statement;
2294
+ create_secret_key: (a?: {
2295
+ as?: string;
2296
+ bits?: Value;
2297
+ format?: "object" | "base64" | Value;
2298
+ disabled?: boolean;
2299
+ description?: string;
2300
+ asFilters?: FilterXdo[];
2301
+ }) => Statement;
2302
+ create_uuid: (a?: {
2303
+ as?: string;
2304
+ disabled?: boolean;
2305
+ description?: string;
2306
+ asFilters?: FilterXdo[];
2307
+ }) => Statement;
2308
+ decrypt: (a: {
2309
+ as?: string;
2310
+ data: Value;
2311
+ algorithm?: "aes-128-cbc" | "aes-192-cbc" | "aes-256-cbc" | "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm" | Value;
2312
+ key: Value;
2313
+ iv: Value;
2314
+ disabled?: boolean;
2315
+ description?: string;
2316
+ asFilters?: FilterXdo[];
2317
+ }) => Statement;
2318
+ encrypt: (a: {
2319
+ as?: string;
2320
+ data: Value;
2321
+ algorithm?: "aes-128-cbc" | "aes-192-cbc" | "aes-256-cbc" | "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm" | Value;
2322
+ key: Value;
2323
+ iv: Value;
2324
+ disabled?: boolean;
2325
+ description?: string;
2326
+ asFilters?: FilterXdo[];
2327
+ }) => Statement;
2328
+ jwe_decode: (a: {
2329
+ as?: string;
2330
+ token: Value;
2331
+ key: Value;
2332
+ check_claims?: Value;
2333
+ key_algorithm?: "A128KW" | "A192KW" | "A256KW" | "A128GCMKW" | "A192GCMKW" | "A256GCMKW" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW" | Value;
2334
+ content_algorithm?: "A128GCM" | "A192GCM" | "A256GCM" | "A128CBC-HS256" | "A192CBC-HS384" | "A256CBC-HS512" | Value;
2335
+ timeDrift?: Value;
2336
+ disabled?: boolean;
2337
+ description?: string;
2338
+ asFilters?: FilterXdo[];
2339
+ }) => Statement;
2340
+ jwe_encode: (a: {
2341
+ as?: string;
2342
+ headers?: Value;
2343
+ claims?: Value;
2344
+ key: Value;
2345
+ key_algorithm?: "A128KW" | "A192KW" | "A256KW" | "A128GCMKW" | "A192GCMKW" | "A256GCMKW" | "ECDH-ES+A128KW" | "ECDH-ES+A192KW" | "ECDH-ES+A256KW" | Value;
2346
+ content_algorithm?: "A128GCM" | "A192GCM" | "A256GCM" | "A128CBC-HS256" | "A192CBC-HS384" | "A256CBC-HS512" | Value;
2347
+ ttl?: Value;
2348
+ disabled?: boolean;
2349
+ description?: string;
2350
+ asFilters?: FilterXdo[];
2351
+ }) => Statement;
2352
+ jws_decode: (a: {
2353
+ as?: string;
2354
+ token: Value;
2355
+ key: Value;
2356
+ check_claims?: Value;
2357
+ signature_algorithm?: "PS256" | "PS384" | "PS512" | "RS256" | "RS384" | "RS512" | "HS256" | "HS384" | "HS512" | "ES256" | "ES384" | "ES512" | Value;
2358
+ timeDrift?: Value;
2359
+ disabled?: boolean;
2360
+ description?: string;
2361
+ asFilters?: FilterXdo[];
2362
+ }) => Statement;
2363
+ jws_encode: (a: {
2364
+ as?: string;
2365
+ headers?: Value;
2366
+ claims?: Value;
2367
+ key: Value;
2368
+ signature_algorithm?: "PS256" | "PS384" | "PS512" | "RS256" | "RS384" | "RS512" | "HS256" | "HS384" | "HS512" | "ES256" | "ES384" | "ES512" | Value;
2369
+ ttl?: Value;
2370
+ disabled?: boolean;
2371
+ description?: string;
2372
+ asFilters?: FilterXdo[];
2373
+ }) => Statement;
2374
+ random_bytes: (a?: {
2375
+ as?: string;
2376
+ length?: Value;
2377
+ disabled?: boolean;
2378
+ description?: string;
2379
+ asFilters?: FilterXdo[];
2380
+ }) => Statement;
2381
+ random_number: (a?: {
2382
+ as?: string;
2383
+ min?: Value;
2384
+ max?: Value;
2385
+ disabled?: boolean;
2386
+ description?: string;
2387
+ asFilters?: FilterXdo[];
2388
+ }) => Statement;
2389
+ };
2390
+ storage: {
2391
+ create_attachment: (a: {
2392
+ as?: string;
2393
+ value: Value;
2394
+ access?: string;
2395
+ filename?: Value;
2396
+ include_meta?: boolean;
2397
+ type?: Value;
2398
+ disabled?: boolean;
2399
+ description?: string;
2400
+ asFilters?: FilterXdo[];
2401
+ }) => Statement;
2402
+ create_audio: (a: {
2403
+ as?: string;
2404
+ value: Value;
2405
+ access?: string;
2406
+ filename?: Value;
2407
+ disabled?: boolean;
2408
+ description?: string;
2409
+ asFilters?: FilterXdo[];
2410
+ output?: OutputAuthored;
2411
+ }) => Statement;
2412
+ create_file_resource: (a: {
2413
+ as?: string;
2414
+ filename: Value;
2415
+ filedata: Value;
2416
+ disabled?: boolean;
2417
+ description?: string;
2418
+ asFilters?: FilterXdo[];
2419
+ output?: OutputAuthored;
2420
+ }) => Statement;
2421
+ create_image: (a: {
2422
+ as?: string;
2423
+ value: Value;
2424
+ access?: string;
2425
+ filename?: Value;
2426
+ disabled?: boolean;
2427
+ description?: string;
2428
+ asFilters?: FilterXdo[];
2429
+ output?: OutputAuthored;
2430
+ }) => Statement;
2431
+ create_video: (a: {
2432
+ as?: string;
2433
+ value: Value;
2434
+ access?: string;
2435
+ filename?: Value;
2436
+ disabled?: boolean;
2437
+ description?: string;
2438
+ asFilters?: FilterXdo[];
2439
+ output?: OutputAuthored;
2440
+ }) => Statement;
2441
+ delete_file: (a: {
2442
+ pathname: Value;
2443
+ disabled?: boolean;
2444
+ description?: string;
2445
+ output?: OutputAuthored;
2446
+ }) => Statement;
2447
+ read_file_resource: (a: {
2448
+ as?: string;
2449
+ value: Value;
2450
+ disabled?: boolean;
2451
+ description?: string;
2452
+ asFilters?: FilterXdo[];
2453
+ }) => Statement;
2454
+ sign_private_url: (a: {
2455
+ as?: string;
2456
+ pathname: Value;
2457
+ ttl?: Value;
2458
+ disabled?: boolean;
2459
+ description?: string;
2460
+ asFilters?: FilterXdo[];
2461
+ }) => Statement;
2462
+ };
2463
+ stream: {
2464
+ from_csv: (a: {
2465
+ as?: string;
2466
+ value: Value;
2467
+ separator?: Value;
2468
+ enclosure?: Value;
2469
+ escape_char?: Value;
2470
+ disabled?: boolean;
2471
+ description?: string;
2472
+ asFilters?: FilterXdo[];
2473
+ output?: OutputAuthored;
2474
+ }) => Statement;
2475
+ from_jsonl: (a: {
2476
+ as?: string;
2477
+ value: Value;
2478
+ disabled?: boolean;
2479
+ description?: string;
2480
+ asFilters?: FilterXdo[];
2481
+ }) => Statement;
2482
+ from_request: (a: {
2483
+ as?: string;
2484
+ url: Value;
2485
+ method?: Value;
2486
+ params?: Value;
2487
+ headers?: Value;
2488
+ timeout?: Value;
2489
+ follow_location?: Value;
2490
+ verify_host?: Value;
2491
+ verify_peer?: Value;
2492
+ ca_certificate?: Value;
2493
+ certificate?: Value;
2494
+ certificate_pass?: Value;
2495
+ private_key?: Value;
2496
+ private_key_pass?: Value;
2497
+ disabled?: boolean;
2498
+ description?: string;
2499
+ asFilters?: FilterXdo[];
2500
+ }) => Statement;
2501
+ };
2502
+ text: {
2503
+ append: (a: {
2504
+ name?: string;
2505
+ value: Value;
2506
+ disabled?: boolean;
2507
+ description?: string;
2508
+ }) => Statement;
2509
+ contains: (a: {
2510
+ name?: string;
2511
+ as?: string;
2512
+ value: Value;
2513
+ disabled?: boolean;
2514
+ description?: string;
2515
+ asFilters?: FilterXdo[];
2516
+ }) => Statement;
2517
+ ends_with: (a: {
2518
+ name?: string;
2519
+ as?: string;
2520
+ value: Value;
2521
+ disabled?: boolean;
2522
+ description?: string;
2523
+ asFilters?: FilterXdo[];
2524
+ }) => Statement;
2525
+ icontains: (a: {
2526
+ name?: string;
2527
+ as?: string;
2528
+ value: Value;
2529
+ disabled?: boolean;
2530
+ description?: string;
2531
+ asFilters?: FilterXdo[];
2532
+ }) => Statement;
2533
+ iends_with: (a: {
2534
+ name?: string;
2535
+ as?: string;
2536
+ value: Value;
2537
+ disabled?: boolean;
2538
+ description?: string;
2539
+ asFilters?: FilterXdo[];
2540
+ }) => Statement;
2541
+ istarts_with: (a: {
2542
+ name?: string;
2543
+ as?: string;
2544
+ value: Value;
2545
+ disabled?: boolean;
2546
+ description?: string;
2547
+ asFilters?: FilterXdo[];
2548
+ }) => Statement;
2549
+ ltrim: (a: {
2550
+ name?: string;
2551
+ value: Value;
2552
+ disabled?: boolean;
2553
+ description?: string;
2554
+ }) => Statement;
2555
+ prepend: (a: {
2556
+ name?: string;
2557
+ value: Value;
2558
+ disabled?: boolean;
2559
+ description?: string;
2560
+ }) => Statement;
2561
+ rtrim: (a: {
2562
+ name?: string;
2563
+ value: Value;
2564
+ disabled?: boolean;
2565
+ description?: string;
2566
+ }) => Statement;
2567
+ starts_with: (a: {
2568
+ name?: string;
2569
+ as?: string;
2570
+ value: Value;
2571
+ disabled?: boolean;
2572
+ description?: string;
2573
+ asFilters?: FilterXdo[];
2574
+ }) => Statement;
2575
+ trim: (a: {
2576
+ name?: string;
2577
+ value: Value;
2578
+ disabled?: boolean;
2579
+ description?: string;
2580
+ }) => Statement;
2581
+ };
2582
+ throw: (a: {
2583
+ name?: string;
2584
+ value: Value;
2585
+ disabled?: boolean;
2586
+ description?: string;
2587
+ }) => Statement;
2588
+ util: {
2589
+ geo_distance: (a: {
2590
+ as?: string;
2591
+ latitude_1: Value;
2592
+ longitude_1: Value;
2593
+ latitude_2: Value;
2594
+ longitude_2: Value;
2595
+ disabled?: boolean;
2596
+ description?: string;
2597
+ asFilters?: FilterXdo[];
2598
+ }) => Statement;
2599
+ get_all_input: (a?: {
2600
+ as?: string;
2601
+ disabled?: boolean;
2602
+ description?: string;
2603
+ asFilters?: FilterXdo[];
2604
+ }) => Statement;
2605
+ get_env: (a?: {
2606
+ as?: string;
2607
+ disabled?: boolean;
2608
+ description?: string;
2609
+ asFilters?: FilterXdo[];
2610
+ }) => Statement;
2611
+ get_vars: (a?: {
2612
+ as?: string;
2613
+ disabled?: boolean;
2614
+ description?: string;
2615
+ asFilters?: FilterXdo[];
2616
+ }) => Statement;
2617
+ ip_lookup: (a: {
2618
+ as?: string;
2619
+ value: Value;
2620
+ disabled?: boolean;
2621
+ description?: string;
2622
+ asFilters?: FilterXdo[];
2623
+ }) => Statement;
2624
+ send_email: (a?: {
2625
+ as?: string;
2626
+ api_key?: Value;
2627
+ service_provider?: "resend" | "xano" | Value;
2628
+ subject?: Value;
2629
+ message?: Value;
2630
+ to?: Value;
2631
+ bcc?: Value;
2632
+ cc?: Value;
2633
+ from?: Value;
2634
+ reply_to?: Value;
2635
+ scheduled_at?: Value;
2636
+ disabled?: boolean;
2637
+ description?: string;
2638
+ asFilters?: FilterXdo[];
2639
+ }) => Statement;
2640
+ set_header: (a: {
2641
+ value: Value;
2642
+ duplicates?: string;
2643
+ disabled?: boolean;
2644
+ description?: string;
2645
+ }) => Statement;
2646
+ sleep: (a: {
2647
+ value: Value;
2648
+ disabled?: boolean;
2649
+ description?: string;
2650
+ }) => Statement;
2651
+ template_engine: (a: {
2652
+ as?: string;
2653
+ value: Value;
2654
+ disabled?: boolean;
2655
+ description?: string;
2656
+ asFilters?: FilterXdo[];
2657
+ }) => Statement;
2658
+ };
2659
+ webflow: {
2660
+ request: (a: {
2661
+ as?: string;
2662
+ path: Value;
2663
+ method?: Value;
2664
+ params?: Value;
2665
+ headers?: Value;
2666
+ timeout?: Value;
2667
+ follow_location?: Value;
2668
+ verify_host?: Value;
2669
+ verify_peer?: Value;
2670
+ ca_certificate?: Value;
2671
+ certificate?: Value;
2672
+ certificate_pass?: Value;
2673
+ private_key?: Value;
2674
+ private_key_pass?: Value;
2675
+ disabled?: boolean;
2676
+ description?: string;
2677
+ asFilters?: FilterXdo[];
2678
+ }) => Statement;
2679
+ };
2680
+ zip: {
2681
+ add_to_archive: (a: {
2682
+ file: Value;
2683
+ filename: Value;
2684
+ zip: Value;
2685
+ password?: Value | null;
2686
+ password_encryption?: Value | null;
2687
+ disabled?: boolean;
2688
+ description?: string;
2689
+ }) => Statement;
2690
+ create_archive: (a: {
2691
+ as?: string;
2692
+ filename: Value;
2693
+ password?: Value;
2694
+ password_encryption?: "standard" | "AES-128" | "AES-192" | "AES-256" | Value;
2695
+ disabled?: boolean;
2696
+ description?: string;
2697
+ asFilters?: FilterXdo[];
2698
+ }) => Statement;
2699
+ delete_from_archive: (a: {
2700
+ filename: Value;
2701
+ zip: Value;
2702
+ password?: Value | null;
2703
+ disabled?: boolean;
2704
+ description?: string;
2705
+ }) => Statement;
2706
+ extract: (a: {
2707
+ as?: string;
2708
+ zip: Value;
2709
+ password?: Value | null;
2710
+ disabled?: boolean;
2711
+ description?: string;
2712
+ asFilters?: FilterXdo[];
2713
+ }) => Statement;
2714
+ view_contents: (a: {
2715
+ as?: string;
2716
+ zip: Value;
2717
+ password?: Value | null;
2718
+ disabled?: boolean;
2719
+ description?: string;
2720
+ asFilters?: FilterXdo[];
2721
+ }) => Statement;
2722
+ };
2723
+ };
2724
+
2725
+ /** The kinds an argument can name. The local project entry is absence, not a spelling. */
2726
+ type SourceKind = "workspace" | "ephemeral" | "local-engine" | "release" | "tenant" | "file";
2727
+
2728
+ /**
2729
+ * The CLI's command registry — the single source of truth for what `xanosdk`
2730
+ * accepts.
2731
+ *
2732
+ * Three consumers read this table and nothing else:
2733
+ * • `help.ts` renders global and command-scoped help from it,
2734
+ * • `cli.ts` validates the command/subcommand a user typed against it,
2735
+ * • the unknown-* errors list valid verbs from it (never a hand-written string).
2736
+ *
2737
+ * The dispatch chain in `cli.ts` still owns the lazy `await import(...)` per
2738
+ * command — deliberately, so the browser-safe authoring bundle never pulls in
2739
+ * the Node-only OAuth/deploy stack. A drift test pins the registry's keys to the
2740
+ * commands that chain actually compares against, so the two cannot diverge
2741
+ * silently even though they are written twice.
2742
+ *
2743
+ * Keep this module free of `node:*` imports for the same bundling reason.
2744
+ */
2745
+
2746
+ /** What a backend selector slot is FOR: read from, write to, run on, or act on. */
2747
+ type SelectorRole = "from" | "to" | "on" | "subject";
2748
+ /**
2749
+ * What a slot means when nothing is typed into it.
2750
+ *
2751
+ * - `tracked` — the backend this project last deployed to.
2752
+ * - `entry` — `deploy`'s source only: the project's own entry file, compiled.
2753
+ * - `none` — the slot supplies nothing when absent: `generate` and `init --from`
2754
+ * need a source named, and `deploy --to` absent means the deploy's own
2755
+ * ephemeral or local-engine path rather than any backend here.
2756
+ */
2757
+ type SelectorDefault = "tracked" | "entry" | "none";
2758
+ /**
2759
+ * One backend selector slot, declared once on the flag or positional that takes
2760
+ * it. Help renders the spellings from `accepted`, completion offers its bare
2761
+ * kinds, the manifest publishes it, the parse-arm error for a missing value
2762
+ * lists it, and `backend-slot.ts` parses with it — so a command cannot accept a
2763
+ * kind its help does not show.
2764
+ *
2765
+ * `refused` names kinds that belong to the grammar but that THIS command cannot
2766
+ * serve, each with the reason. They stay out of `accepted` (help does not offer
2767
+ * them) and are refused with the reason rather than as unknown — an unknown
2768
+ * kind reads as a typo, and the reason is what tells the reader whether to name
2769
+ * another backend or reach for another command.
2770
+ */
2771
+ interface SelectorSpec {
2772
+ readonly accepted: readonly SourceKind[];
2773
+ readonly role: SelectorRole;
2774
+ readonly default: SelectorDefault;
2775
+ readonly refused?: Readonly<Partial<Record<SourceKind, string>>>;
2776
+ }
2777
+
2778
+ /**
2779
+ * Agent-grounding manifest (DX follow-up). A machine-readable description of the
2780
+ * entire xanosdk authoring surface — object kinds, statement catalog (with field
2781
+ * schemas for the declarative statements), value constructors, and tag catalog —
2782
+ * plus a human/LLM-readable `llms.txt` renderer.
2783
+ *
2784
+ * Everything here is DERIVED from the SDK's own sources of truth (the surface
2785
+ * catalog, the generated statement specs, the kind registry, the value/tag
2786
+ * primitives), so the manifest can never drift from what the SDK can actually
2787
+ * emit. Regenerate the committed `manifest.json` / `llms.txt` with
2788
+ * `npm run manifest`; the manifest test fails if they fall out of sync.
2789
+ */
2790
+
2791
+ /** A statement field, flattened from its generated spec rule. */
2792
+ interface ManifestField {
2793
+ name: string;
2794
+ /** `string` (a plain string arg), `value` (a tagged `Value`), or `comparison`. */
2795
+ type: StatementSpec["rules"][number]["type"];
2796
+ optional: boolean;
2797
+ default?: string;
2798
+ /**
2799
+ * The field's closed set of legal values, where the engine declares one. Both
2800
+ * a bare literal and the `c.text(...)` spelling are accepted, and a constant
2801
+ * outside the set is rejected at authoring time.
2802
+ */
2803
+ enum?: string[];
2804
+ }
2805
+ /** One statement authoring surface. */
2806
+ interface ManifestStatement {
2807
+ /** Canonical surface key (the engine schema basename), e.g. `array.filter`. */
2808
+ surface: string;
2809
+ /** Stored `mvp:` name emitted into the bundle. */
2810
+ storedName: string;
2811
+ /** Dotted accessor under `s`, e.g. `array.filter` → `s.array.filter`. */
2812
+ sPath: string;
2813
+ /** Whether the stored name has a registered factory (authorable today). */
2814
+ registered: boolean;
2815
+ /** True when generated from the engine schema (carries a field schema). */
2816
+ declarative: boolean;
2817
+ /** Whether the statement emits an `output` envelope. Declarative only. */
2818
+ output?: boolean;
2819
+ /**
2820
+ * What the statement's `as:` output variable holds — so the manifest answers
2821
+ * "what does this bind?" without falling back to prose. Curated (see
2822
+ * `STATEMENT_RESULTS`); present only for statements whose result is stable and
2823
+ * documented. Analogous to {@link ManifestFilter.result}, but structured: `name`
2824
+ * is the binding field (always `as` today, carried explicitly so the descriptor
2825
+ * is self-describing for machine consumers), `type` its value type, `note` an
2826
+ * optional caveat.
2827
+ */
2828
+ result?: {
2829
+ name: string;
2830
+ type: string;
2831
+ note?: string;
2832
+ };
2833
+ /** Field schema — present for declarative statements. */
2834
+ fields?: ManifestField[];
2835
+ /**
2836
+ * An older paradigm the SDK still SUPPORTS but no longer wants authored — same
2837
+ * contract as {@link ManifestValue.legacy}: withheld from the per-namespace
2838
+ * catalog an agent picks from, and named-only in the legacy index (`llms/legacy.md`).
2839
+ */
2840
+ legacy?: boolean;
2841
+ }
2842
+ /**
2843
+ * One authoring factory within a kind that fans out into several distinct
2844
+ * root factories sharing a single encoder/payload key — today only `trigger`
2845
+ * (six `obj_type`s, one shared stored envelope). Each sub-kind is a first-class
2846
+ * root factory in its own right; the manifest lists them individually so agents
2847
+ * treat them like every other primitive.
2848
+ */
2849
+ interface ManifestSubKind {
2850
+ /** Root authoring factory export, e.g. `tableTrigger`. */
2851
+ authorFactory: string;
2852
+ /** The stored `obj_type` this factory produces, e.g. `database`. */
2853
+ objType: string;
2854
+ /** Rich "what this primitive does" descriptor, in the style of a top-level kind. */
2855
+ description: string;
2856
+ /** Built and registered, but withheld from the published catalog — see {@link ManifestKind.unpublished}. */
2857
+ unpublished?: boolean;
2858
+ /**
2859
+ * An older paradigm the SDK still SUPPORTS but no longer wants authored — same
2860
+ * contract as {@link ManifestValue.legacy}: withheld from the sub-kind catalog
2861
+ * and the trigger prose, and named-only in the legacy index (`llms/legacy.md`).
2862
+ *
2863
+ * Distinct from `unpublished`, which withholds a factory that is not ready.
2864
+ * A legacy factory is fully ready and fully supported; it is the *paradigm*
2865
+ * that has been superseded.
2866
+ */
2867
+ legacy?: boolean;
2868
+ }
2869
+ /** One top-level object kind. */
2870
+ interface ManifestKind {
2871
+ /** Stable kind name, e.g. `function`. */
2872
+ kind: string;
2873
+ /** `packageExport` payload key, e.g. `function`, `dbo`. */
2874
+ payloadKey: string;
2875
+ /** Authoring factory export, e.g. `defineFunction`, `table`. */
2876
+ authorFactory: string;
2877
+ /** One-line "what this primitive does" descriptor, surfaced in `llms.txt`. */
2878
+ description: string;
2879
+ /** `Xano` registration method, e.g. `registerFunctions`. */
2880
+ registerMethod: string;
2881
+ /** Whether the kind has a registered encoder (implemented today). */
2882
+ registered: boolean;
2883
+ /**
2884
+ * Distinct root factories that all persist under this kind's encoder/payload
2885
+ * key. When present, the `## Object kinds` catalog lists each sub-kind as its
2886
+ * own root-level entry instead of the grouped `authorFactory` line. Only
2887
+ * `trigger` uses this today.
2888
+ */
2889
+ subKinds?: ManifestSubKind[];
2890
+ /**
2891
+ * Built and registered, but deliberately withheld from the published agent
2892
+ * surface — kept out of the emitted manifest, out of `llms.txt`, and out of
2893
+ * the coverage numerator.
2894
+ *
2895
+ * This is a *release* gate, not a completeness gate. The kind still has a
2896
+ * descriptor here so the "descriptors match the live kind registry" drift
2897
+ * guard keeps covering it; it just does not ship in the catalog yet. Flip the
2898
+ * flag off to publish — nothing else needs to change.
2899
+ */
2900
+ unpublished?: boolean;
2901
+ }
2902
+ /** A value constructor / helper. */
2903
+ interface ManifestValue {
2904
+ name: string;
2905
+ signature: string;
2906
+ description: string;
2907
+ /**
2908
+ * An older paradigm the SDK still SUPPORTS but no longer wants authored.
2909
+ *
2910
+ * Kept out of the `## Values` catalog — the list an agent picks from when it
2911
+ * builds — and named-only in the legacy index (`llms/legacy.md`).
2912
+ * That split is the whole point: hiding it entirely is worse than useless,
2913
+ * because a pulled workspace can legitimately contain one, and an agent that
2914
+ * has never heard of it will "fix" what it does not recognize. Naming it
2915
+ * without a signature says "you will see this; do not reach for it."
2916
+ */
2917
+ legacy?: boolean;
2918
+ }
2919
+ /** One value-pipeline filter (`fl.<name>`). */
2920
+ interface ManifestFilter {
2921
+ /** Filter name, as stored in the value `filters[]` chain. */
2922
+ name: string;
2923
+ /** Dotted accessor: `fl.<name>`. */
2924
+ fl: string;
2925
+ /**
2926
+ * Whether the SDK knows this filter's exact signature.
2927
+ *
2928
+ * True for every filter with a spec — INCLUDING the zero-argument ones. A
2929
+ * filter that takes nothing has nothing to type, so `fl.abs()` is as fully
2930
+ * typed as `fl.add(value)`; counting it as untyped reported a 131/225 coverage
2931
+ * gap that never existed. Whether a filter takes arguments is `args`, which is
2932
+ * a different question and the one the catalog renders from.
2933
+ */
2934
+ typed: boolean;
2935
+ /**
2936
+ * Takes arguments the catalog declares no list for, so there is no arity to
2937
+ * enforce and no signature to print. Distinct from a filter with neither
2938
+ * `args` nor `variadic`, which takes NOTHING.
2939
+ */
2940
+ variadic?: boolean;
2941
+ /**
2942
+ * Named, typed args (richly-specified filters only). `enum` carries the exact
2943
+ * accepted spellings where the arg has a closed set — printed in place of the
2944
+ * bare word "enum", which told a reader nothing.
2945
+ */
2946
+ args?: Array<{
2947
+ name: string;
2948
+ type: string;
2949
+ optional?: boolean;
2950
+ enum?: string[];
2951
+ }>;
2952
+ /** Result type (richly-specified filters only). */
2953
+ result?: string;
2954
+ /** Group, e.g. `timestamp`, `vector` (richly-specified filters only). */
2955
+ group?: string;
2956
+ /** One-line description, when known. */
2957
+ description?: string;
2958
+ }
2959
+ /** One field-catalog type (`f.<name>` / `input.<name>`). */
2960
+ interface ManifestFieldType {
2961
+ /** Authoring constructor name under `f` / `input`, e.g. `text`, `tableRef`. */
2962
+ name: string;
2963
+ /** The stored type string emitted into the schema, e.g. `epochms`, `blob_img`. */
2964
+ stored: string;
2965
+ /** Valid bind-method names for this type (empty = none; `{name,arg}` escape hatch only). */
2966
+ methods: string[];
2967
+ /** Present and true when the type exists under `input.` only, with no `f.` column form. */
2968
+ inputOnly?: boolean;
2969
+ }
2970
+ /** One CLI flag, with the effect it has. */
2971
+ interface ManifestCliFlag {
2972
+ flag: string;
2973
+ description: string;
2974
+ /** The closed set the flag takes here — the same list shell completion offers. */
2975
+ values?: string[];
2976
+ /** For a flag that takes other values too: some it takes, never the whole set. */
2977
+ examples?: string[];
2978
+ }
2979
+ /**
2980
+ * One backend selector slot, from its declaration in the registry: where a
2981
+ * command takes the backend it acts on, and which ones. The same declaration
2982
+ * renders `--help`, completion, and the command's refusals, so an agent reading
2983
+ * this learns exactly what the CLI will accept.
2984
+ */
2985
+ interface ManifestCliSelector {
2986
+ /** How the slot is written: `--from`, `--to`, `--on`, or the positional as `<source>`. */
2987
+ slot: string;
2988
+ role: SelectorSpec["role"];
2989
+ /** Omitted: `tracked` = what this project last deployed to; `entry` = the project's entry file; `none` = nothing, name one. */
2990
+ default: SelectorSpec["default"];
2991
+ /** Every spelling the slot accepts, rendered. */
2992
+ grammar: string;
2993
+ /** The bare kinds, completable as typed. */
2994
+ values: string[];
2995
+ /** Kinds in the grammar this command cannot serve, each with why. */
2996
+ refused?: Record<string, string>;
2997
+ }
2998
+ /**
2999
+ * One CLI command, DERIVED from the `COMMANDS`/`FLAGS` registry in
3000
+ * `src/emit/commands.ts` — the same table that renders `--help` and generates the
3001
+ * shell completions.
3002
+ *
3003
+ * Derived, not hand-maintained: a hand-maintained copy drifts (missing commands,
3004
+ * short flags, stale descriptions). Deriving it makes that class of drift
3005
+ * unrepresentable, which matters because `llms.txt` does not document the CLI
3006
+ * — this array and `--help` are the only two surfaces, and they are one source.
3007
+ */
3008
+ interface ManifestCliCommand {
3009
+ /** The invocation verb, e.g. `deploy`. */
3010
+ command: string;
3011
+ /** Positional argument grammar, when the command takes one. */
3012
+ args?: string;
3013
+ flags?: ManifestCliFlag[];
3014
+ /** The command's backend selector slots, when it acts on a backend. */
3015
+ selectors?: ManifestCliSelector[];
3016
+ description: string;
3017
+ }
3018
+ interface Manifest {
3019
+ name: string;
3020
+ version: string;
3021
+ description: string;
3022
+ coverage: {
3023
+ /**
3024
+ * Counted over the ENGINE's object-kind catalog, where every trigger type is
3025
+ * its own kind. `unmodeled` names the shortfall so the denominator is
3026
+ * inspectable rather than a bare ratio.
3027
+ */
3028
+ objectKinds: {
3029
+ implemented: number;
3030
+ total: number;
3031
+ unmodeled: {
3032
+ kind: string;
3033
+ absence: string;
3034
+ }[];
3035
+ };
3036
+ /**
3037
+ * `unconfirmed` names the statements built from the engine's schema alone,
3038
+ * with no stored instance behind them — the same "make the denominator
3039
+ * inspectable" move as `unmodeled` above, for a different kind of
3040
+ * shortfall. Published as `s.` paths, because that is what an agent looks a
3041
+ * statement up by. See `src/statements/byte-evidence.ts`.
3042
+ */
3043
+ statements: {
3044
+ implemented: number;
3045
+ total: number;
3046
+ /**
3047
+ * Omitted entirely when nothing is unconfirmed — an empty warning channel
3048
+ * that ships on every build teaches a reader to skip the one time it has
3049
+ * something in it.
3050
+ */
3051
+ unconfirmed?: {
3052
+ note: string;
3053
+ sPaths: string[];
3054
+ };
3055
+ };
3056
+ filters: {
3057
+ typed: number;
3058
+ total: number;
3059
+ };
3060
+ };
3061
+ values: {
3062
+ constructors: ManifestValue[];
3063
+ tags: readonly string[];
3064
+ };
3065
+ objectKinds: ManifestKind[];
3066
+ fieldTypes: ManifestFieldType[];
3067
+ statements: ManifestStatement[];
3068
+ filters: ManifestFilter[];
3069
+ /** The CLI command surface (compile/export/deploy/auth/lock). Hand-maintained. */
3070
+ cli: ManifestCliCommand[];
3071
+ /**
3072
+ * Flags every command accepts. They appear in no per-command `flags` list, so
3073
+ * without this they would be undiscoverable from the manifest alone — an agent
3074
+ * reading `cli` would conclude `--json` does not exist.
3075
+ */
3076
+ cliGlobalFlags: ManifestCliFlag[];
3077
+ }
3078
+ /** Total engine object kinds — the size of the catalog above, never a literal. */
3079
+ declare const TOTAL_OBJECT_KINDS: number;
3080
+ /** Build the full authoring manifest from the SDK's sources of truth. */
3081
+ declare function buildManifest(opts?: {
3082
+ version?: string;
3083
+ }): Manifest;
3084
+ /** Repo-relative path of the always-loaded grounding router. */
3085
+ declare const LLMS_TXT = "llms.txt";
3086
+ /**
3087
+ * Every committed grounding artifact, as repo-relative path → content.
3088
+ *
3089
+ * The map is the seam the grounding surface is split across: the router at
3090
+ * {@link LLMS_TXT} is what an agent always loads, and later entries are topic
3091
+ * files it reads only when the surface they cover is in play. Callers write
3092
+ * whatever the map holds rather than naming files individually, so a new
3093
+ * artifact is picked up by the writer and by the drift guard without either
3094
+ * needing to learn about it.
3095
+ *
3096
+ * Pure function of the manifest, like every other artifact here — regenerating
3097
+ * is deterministic and the committed files are asserted against a fresh render.
3098
+ */
3099
+ declare function renderDocs(m: Manifest): Map<string, string>;
3100
+ /** The router alone, for callers that want it without the rest of the set. */
3101
+ declare function renderLlmsTxt(m: Manifest): string;
3102
+
3103
+ /**
3104
+ * The cross-realm lock override store — how a `xano.lock` reaches `deriveGuid`.
3105
+ *
3106
+ * Reference guids are baked at AUTHORING time, not export time: statement
3107
+ * factories (`s.function.run`, `s.db.get`, …) and even field defs
3108
+ * (`f.tableRef`) call `resolveRef` → `deriveGuid` the moment the workspace
3109
+ * module is evaluated, and some embed the guid inside strings (`dbo=<guid>`
3110
+ * method args, auth-token const values). An export-time payload rewrite would
3111
+ * have to chase those string-embedded forms — overriding at the `deriveGuid`
3112
+ * choke point instead makes reference and target agree everywhere by
3113
+ * construction, with zero changes at call sites.
3114
+ *
3115
+ * That yields the seeding contract: **seed once per process, BEFORE any
3116
+ * def module is evaluated.** Node's module cache means seeding after defs have
3117
+ * loaded is a silent no-op for already-baked references. The CLI honors this
3118
+ * automatically (it seeds before importing the workspace entry); programmatic
3119
+ * users must call `seedLockOverrides` before importing their defs.
3120
+ * `resetLockOverrides` exists for tests (reset-then-seed per run).
3121
+ *
3122
+ * The store lives on `globalThis` under a `Symbol.for` key because the CLI and
3123
+ * the workspace entry can load xanosdk in different module realms (the
3124
+ * tsx-loader split — same reason `Xano.isXano` brands with `Symbol.for`). Every
3125
+ * accessor goes through a fresh `globalThis` lookup, never a module-local
3126
+ * reference, so both realms see one store.
3127
+ */
3128
+
3129
+ /**
3130
+ * Seed the override store from a validated lock. Replaces any previous seed —
3131
+ * the contract is one workspace per process (see module doc), so the CLI does
3132
+ * reset-then-seed per run and multiple concurrent workspaces are out of scope.
3133
+ */
3134
+ declare function seedLockOverrides(lock: LockFile): void;
3135
+ /** Clear the store (tests; a process about to seed a different workspace). */
3136
+ declare function resetLockOverrides(): void;
3137
+ /** True when a lock has been seeded in this process. */
3138
+ declare function isLockSeeded(): boolean;
3139
+ /** The locked guid for a `payloadKey:name` key, if the lock pins one. */
3140
+ declare function getLockedGuid(key: string): string | undefined;
3141
+ /** The locked canonical for a lock key, if the lock pins one. */
3142
+ declare function getLockedCanonical(key: string): string | undefined;
3143
+
3144
+ export { registerSpec as $, type AmbientBindings as A, objectKeys as B, type CaptureValue as C, objectValues as D, type ElementResult as E, type FieldRule as F, type GroupedArrayResult as G, resetLockOverrides as H, type IteratingBindings as I, seedLockOverrides as J, textAppend as K, type LambdaOptions as L, type Manifest as M, textPrepend as N, type OutputAuthored as O, FILTER_NAMES as P, GENERATED_STATEMENT_NAMES as Q, type Route as R, type SameArrayResult as S, LLMS_TXT as T, TOTAL_OBJECT_KINDS as U, buildManifest as V, encodeFromSpec as W, generated as X, getLockedCanonical as Y, getLockedGuid as Z, isLockSeeded as _, type LambdaSurface as a, renderDocs as a0, renderLlmsTxt as a1, fl as a2, lam as a3, type CaptureRecord as b, type LambdaBindings as c, type Authored as d, type Capturable as e, type FilterResults as f, LAMBDA_BINDINGS as g, LAMBDA_CODE_FILTERS as h, LAMBDA_GLOBALS as i, LAMBDA_MODULE_GLOBALS as j, LAMBDA_STATEMENTS as k, type LambdaBody as l, type ManifestField as m, type ManifestKind as n, type ManifestStatement as o, type ManifestValue as p, type StatementSpec as q, assertLambdaBody as r, bitwiseAnd as s, bitwiseOr as t, bitwiseXor as u, mathAdd as v, mathDiv as w, mathMul as x, mathSub as y, objectEntries as z };