@xanots/sdk 0.0.12 → 0.0.14

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 (56) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +5 -3
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-GQWAAOBV.js → agent-file-refresh-2LZ2YRFZ.js} +3 -3
  5. package/dist/bin.js +3 -3
  6. package/dist/{chunk-GSP2BY4F.js → chunk-BYQHCCYU.js} +1 -1
  7. package/dist/{chunk-AG5GCZDD.js → chunk-CII2TOE4.js} +2 -2
  8. package/dist/{chunk-2VTJSI6X.js → chunk-F3MRG7NI.js} +2 -2
  9. package/dist/{chunk-XT3XQ4PF.js → chunk-LISUHLWI.js} +11 -11
  10. package/dist/{chunk-QYSQ3UDO.js → chunk-MEFMTICH.js} +76 -1
  11. package/dist/{chunk-VPAWRBK5.js → chunk-ORZINVGQ.js} +33 -9
  12. package/dist/{chunk-VRNZ2NVV.js → chunk-PJNWOZMT.js} +2 -2
  13. package/dist/{chunk-PLE5QQOZ.js → chunk-UQMMFW32.js} +5 -5
  14. package/dist/{chunk-ELK7UALJ.js → chunk-UXPDQFG2.js} +2 -2
  15. package/dist/{chunk-VK26K7AY.js → chunk-XBIFQWZM.js} +2 -2
  16. package/dist/cli.js +2 -2
  17. package/dist/{codegen-command-Y2SPMAUW.js → codegen-command-5A6FVKUA.js} +7 -7
  18. package/dist/{deploy-command-XHS5PKPV.js → deploy-command-VBB7JYXH.js} +4 -4
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.js +3 -3
  21. package/dist/{init-command-23FFNUFT.js → init-command-SIJUH2DD.js} +5 -5
  22. package/dist/internal.d.ts +2 -2
  23. package/dist/internal.js +362 -264
  24. package/dist/{lock-commands-WCRC56ME.js → lock-commands-4TX3BONI.js} +3 -3
  25. package/dist/node.d.ts +2 -2
  26. package/dist/node.js +4 -4
  27. package/dist/{preflight-command-TZWPHBXY.js → preflight-command-MTYGPNVT.js} +4 -4
  28. package/dist/{release-command-WEFYRTCI.js → release-command-NXCPQDFF.js} +6 -6
  29. package/dist/{routes-manifest-5ZFKUQWA.js → routes-manifest-MN6XBYRE.js} +24 -13
  30. package/dist/{store-DAnUIi1T.d.ts → store-9Psd0jiF.d.ts} +34 -16
  31. package/dist/{upgrade-command-GYEIMJBG.js → upgrade-command-GSH3M3N6.js} +6 -6
  32. package/dist/{workspace-command-2ZTGT26W.js → workspace-command-XUOPLVQ4.js} +7 -7
  33. package/guides/README.md +1 -1
  34. package/guides/coverage.md +3 -2
  35. package/guides/typed-frontend.md +20 -3
  36. package/llms/client.md +44 -0
  37. package/llms/errors.md +33 -0
  38. package/llms/fields.md +26 -1
  39. package/llms/filters.md +4 -8
  40. package/llms/kinds-agent-mcp.md +1 -0
  41. package/llms/kinds-core.md +16 -2
  42. package/llms/kinds-knowledge.md +1 -1
  43. package/llms/kinds-realtime.md +3 -3
  44. package/llms/lambda.md +1 -1
  45. package/llms/legacy.md +1 -1
  46. package/llms/object-kinds.md +2 -2
  47. package/llms/statements-calls.md +25 -4
  48. package/llms/statements-catalog.md +1 -1
  49. package/llms/statements-runtime.md +20 -5
  50. package/llms/tests.md +3 -3
  51. package/llms/triggers.md +14 -2
  52. package/llms/values.md +2 -2
  53. package/llms-full.txt +362 -270
  54. package/llms.txt +163 -234
  55. package/manifest.json +4 -4
  56. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -11,6 +11,45 @@ listed here.
11
11
 
12
12
  ---
13
13
 
14
+ ## 0.0.13 — The realtime gate contract
15
+
16
+ _2026-09-01_ · [release notes](https://github.com/xanots/sdk/releases/tag/v0.0.13)
17
+
18
+ Realtime v2 lifecycle triggers get their contract straightened out. A `join`
19
+ gate written the way the docs described — reading a channel path param as
20
+ `inp("room_id")` — raises at runtime and refuses every client, and a `deliver`
21
+ trigger had no typed way to read the payload it exists to transform. Both are
22
+ fixed, along with two gate rules the docs never carried. Every claim here was
23
+ verified by driving a real websocket client against a live engine.
24
+
25
+ - ⚠️ A channel path param is not a lifecycle-trigger input — read it from the session
26
+ - A `deliver` trigger now reads its payload through the typed handle
27
+ - Inside `{ allowed }`, admission needs strictly `true`
28
+ - A gate establishes no auth, so `auth.id` reads 0
29
+
30
+ ---
31
+
32
+ ## 0.0.12 — Values that answer themselves
33
+
34
+ _2026-09-01_ · [release notes](https://github.com/xanots/sdk/releases/tag/v0.0.12)
35
+
36
+ 0.0.12 fixes a silent wrong answer: `c.now()` inside an `obj()` served the string
37
+ `"now"` instead of a timestamp, and in a realtime handler that string was written
38
+ into the stored transcript and replayed to every joiner. It also lands the four
39
+ reports from #310 — `export` was rewriting `CLAUDE.md` with the wrong theme — and
40
+ a truthfulness pass over what ships to an agent: corrected claims, and ~480 KB of
41
+ maintainer-addressed JSDoc taken out of the consumer type surface.
42
+
43
+ - `c.now()` inside `obj()` answered the string `"now"`
44
+ - `export` rewrote `CLAUDE.md` with the wrong theme
45
+ - `bind` joins: the typed path across a join, stated
46
+ - `fields: null` on 65 statements means "typed wrapper", not "missing"
47
+ - `QUERY_EXPRESSION_FILTERS` / `VECTOR_FILTERS`: where they live, and that `fl.*` cannot spell them
48
+ - The shipped type surface stopped carrying maintainer residue
49
+ - Four documented claims corrected against the source
50
+
51
+ ---
52
+
14
53
  ## 0.0.11 — The silent-success pass
15
54
 
16
55
  _2026-08-31_ · [release notes](https://github.com/xanots/sdk/releases/tag/v0.0.11)
package/README.md CHANGED
@@ -356,9 +356,11 @@ instead — plain data plus one interpolator, importing nothing:
356
356
  xanots routes ./xano/index.ts --emit xano/routes.gen.ts
357
357
  ```
358
358
 
359
- Route names and their `{param}` keys are still checked at compile time, so a backend rename
360
- is a compile error rather than a 404. The measured bundle numbers, the full response-inference
361
- rules, endpoint-name constraints, and the realtime helpers are in
359
+ Routes are keyed `"<VERB> <name>"` `routePath("GET blog/{slug}", { slug })` so
360
+ verb-differentiated siblings coexist, and the keys and their `{param}` names are checked at
361
+ compile time: a backend rename is a compile error rather than a 404. The measured bundle
362
+ numbers, the full response-inference rules, endpoint-name constraints, and the realtime
363
+ helpers are in
362
364
  [The typed frontend surface](https://github.com/xanots/sdk/blob/main/guides/typed-frontend.md).
363
365
 
364
366
  ---
@@ -1 +1 @@
1
- 7189e90fd30c05ded87b682caf1b483465145a88a8373b654ad8f94fb6812b79
1
+ 7b8e52c911b48104cfe7d9149c775718a1c8a362e2dbdfbde6eafb66b2353c3d
@@ -3,8 +3,8 @@ import {
3
3
  codingAgentDetected,
4
4
  isCI,
5
5
  refreshAgentFiles
6
- } from "./chunk-2VTJSI6X.js";
7
- import "./chunk-VK26K7AY.js";
6
+ } from "./chunk-F3MRG7NI.js";
7
+ import "./chunk-XBIFQWZM.js";
8
8
  import "./chunk-ZSYZTGJH.js";
9
9
  import "./chunk-RQNMTDXD.js";
10
10
  import "./chunk-EZG76F7R.js";
@@ -14,4 +14,4 @@ export {
14
14
  isCI,
15
15
  refreshAgentFiles
16
16
  };
17
- //# sourceMappingURL=agent-file-refresh-GQWAAOBV.js.map
17
+ //# sourceMappingURL=agent-file-refresh-2LZ2YRFZ.js.map
package/dist/bin.js CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  maybeNotifyUpdate
4
- } from "./chunk-AG5GCZDD.js";
4
+ } from "./chunk-CII2TOE4.js";
5
5
  import {
6
6
  readVersion,
7
7
  run
8
- } from "./chunk-XT3XQ4PF.js";
8
+ } from "./chunk-LISUHLWI.js";
9
9
  import "./chunk-7WRJPKGK.js";
10
10
  import "./chunk-3LQGF2WS.js";
11
11
  import {
@@ -17,7 +17,7 @@ import {
17
17
  clearProgress,
18
18
  error
19
19
  } from "./chunk-EZG76F7R.js";
20
- import "./chunk-QYSQ3UDO.js";
20
+ import "./chunk-MEFMTICH.js";
21
21
  import "./chunk-V5Y7D4LH.js";
22
22
  import "./chunk-N74KDCBD.js";
23
23
  import "./chunk-EETVJZAZ.js";
@@ -3741,4 +3741,4 @@ export {
3741
3741
  workspaceKind,
3742
3742
  workspaceConfig
3743
3743
  };
3744
- //# sourceMappingURL=chunk-GSP2BY4F.js.map
3744
+ //# sourceMappingURL=chunk-BYQHCCYU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readVersion
3
- } from "./chunk-XT3XQ4PF.js";
3
+ } from "./chunk-LISUHLWI.js";
4
4
  import {
5
5
  atomicWrite
6
6
  } from "./chunk-GNPVYOPB.js";
@@ -170,4 +170,4 @@ export {
170
170
  upgradeCommand,
171
171
  maybeNotifyUpdate
172
172
  };
173
- //# sourceMappingURL=chunk-AG5GCZDD.js.map
173
+ //# sourceMappingURL=chunk-CII2TOE4.js.map
@@ -5,7 +5,7 @@ import {
5
5
  presetFilePath,
6
6
  renderPreset,
7
7
  upsertManagedBlock
8
- } from "./chunk-VK26K7AY.js";
8
+ } from "./chunk-XBIFQWZM.js";
9
9
  import {
10
10
  DEFAULT_DARK_MODE,
11
11
  allFrontendPresets,
@@ -189,4 +189,4 @@ export {
189
189
  isCI,
190
190
  refreshAgentFiles
191
191
  };
192
- //# sourceMappingURL=chunk-2VTJSI6X.js.map
192
+ //# sourceMappingURL=chunk-F3MRG7NI.js.map
@@ -26,7 +26,7 @@ import {
26
26
  Xano,
27
27
  assertSeedIds,
28
28
  coerceSeedRowValues
29
- } from "./chunk-QYSQ3UDO.js";
29
+ } from "./chunk-MEFMTICH.js";
30
30
  import {
31
31
  getCommand,
32
32
  getSubcommand,
@@ -1008,7 +1008,7 @@ async function run(argv) {
1008
1008
  return;
1009
1009
  }
1010
1010
  if (command === "init") {
1011
- const { runInitCommand } = await import("./init-command-23FFNUFT.js");
1011
+ const { runInitCommand } = await import("./init-command-SIJUH2DD.js");
1012
1012
  return runInitCommand(args);
1013
1013
  }
1014
1014
  if (command === "completion") {
@@ -1023,11 +1023,11 @@ async function run(argv) {
1023
1023
  return runCompletionCommand(shell);
1024
1024
  }
1025
1025
  if (command === "upgrade") {
1026
- const { runUpgradeCommand } = await import("./upgrade-command-GYEIMJBG.js");
1026
+ const { runUpgradeCommand } = await import("./upgrade-command-GSH3M3N6.js");
1027
1027
  return runUpgradeCommand(args);
1028
1028
  }
1029
1029
  if (command === "lock") {
1030
- const { runLockCommand } = await import("./lock-commands-WCRC56ME.js");
1030
+ const { runLockCommand } = await import("./lock-commands-4TX3BONI.js");
1031
1031
  return runLockCommand(args);
1032
1032
  }
1033
1033
  if (command === "login") {
@@ -1039,7 +1039,7 @@ async function run(argv) {
1039
1039
  return runLogoutCommand(args);
1040
1040
  }
1041
1041
  if (command === "deploy") {
1042
- const { runDeployCommand } = await import("./deploy-command-XHS5PKPV.js");
1042
+ const { runDeployCommand } = await import("./deploy-command-VBB7JYXH.js");
1043
1043
  return runDeployCommand(args);
1044
1044
  }
1045
1045
  if (command === "ephemeral") {
@@ -1047,7 +1047,7 @@ async function run(argv) {
1047
1047
  return runEphemeralCommand(args);
1048
1048
  }
1049
1049
  if (command === "release") {
1050
- const { runReleaseCommand } = await import("./release-command-WEFYRTCI.js");
1050
+ const { runReleaseCommand } = await import("./release-command-NXCPQDFF.js");
1051
1051
  return runReleaseCommand(args);
1052
1052
  }
1053
1053
  if (command === "test") {
@@ -1055,7 +1055,7 @@ async function run(argv) {
1055
1055
  return runTestCommand(args);
1056
1056
  }
1057
1057
  if (command === "workspace") {
1058
- const { runWorkspaceCommand } = await import("./workspace-command-2ZTGT26W.js");
1058
+ const { runWorkspaceCommand } = await import("./workspace-command-XUOPLVQ4.js");
1059
1059
  return runWorkspaceCommand(args);
1060
1060
  }
1061
1061
  if (command === "status") {
@@ -1087,7 +1087,7 @@ async function run(argv) {
1087
1087
  throw unknownCommand("push");
1088
1088
  }
1089
1089
  if (command === "preflight") {
1090
- const { runPreflightCommand } = await import("./preflight-command-TZWPHBXY.js");
1090
+ const { runPreflightCommand } = await import("./preflight-command-MTYGPNVT.js");
1091
1091
  return runPreflightCommand(args);
1092
1092
  }
1093
1093
  if (command !== "compile" && command !== "export" && command !== "paths" && command !== "routes") {
@@ -1120,7 +1120,7 @@ async function run(argv) {
1120
1120
  async function refreshAgentGuidance(args) {
1121
1121
  if (args.noRefresh) return;
1122
1122
  try {
1123
- const { refreshAgentFiles } = await import("./agent-file-refresh-GQWAAOBV.js");
1123
+ const { refreshAgentFiles } = await import("./agent-file-refresh-2LZ2YRFZ.js");
1124
1124
  const refreshed = refreshAgentFiles({
1125
1125
  projectDir: process.cwd(),
1126
1126
  sdkVersion: readVersion()
@@ -1236,7 +1236,7 @@ async function runPaths(args) {
1236
1236
  return;
1237
1237
  }
1238
1238
  if (unresolved.length === 0) {
1239
- const { renderRouteManifest } = await import("./routes-manifest-5ZFKUQWA.js");
1239
+ const { renderRouteManifest } = await import("./routes-manifest-MN6XBYRE.js");
1240
1240
  const source = renderRouteManifest(
1241
1241
  resolved.map((r) => ({ name: r.name, verb: r.verb, canonical: r.canonical })),
1242
1242
  describableServers.length > 0 ? { servers: describableServers, channels: channelRows } : void 0
@@ -1353,4 +1353,4 @@ export {
1353
1353
  exportBundleJson,
1354
1354
  compileBundle
1355
1355
  };
1356
- //# sourceMappingURL=chunk-XT3XQ4PF.js.map
1356
+ //# sourceMappingURL=chunk-LISUHLWI.js.map
@@ -777,6 +777,79 @@ function checkUnboundVarRefs(sections, bag) {
777
777
  }
778
778
  }
779
779
  }
780
+ function checkPasswordInputHashing(sections, bag) {
781
+ for (const [payloadKey, arr] of Object.entries(sections)) {
782
+ for (const obj of arr ?? []) {
783
+ if (!obj || typeof obj !== "object") continue;
784
+ const record = obj;
785
+ if (!Array.isArray(record.input)) continue;
786
+ const passwordInputs = /* @__PURE__ */ new Set();
787
+ for (const entry of record.input) {
788
+ const declared = entry;
789
+ if (typeof declared?.name === "string" && declared.type === "password") {
790
+ passwordInputs.add(declared.name);
791
+ }
792
+ }
793
+ if (passwordInputs.size === 0) continue;
794
+ const name = record.name;
795
+ const owner = `${payloadKey} "${typeof name === "string" ? name : "?"}"`;
796
+ const statements = [];
797
+ collectStatements(obj, statements);
798
+ const reported = /* @__PURE__ */ new Set();
799
+ for (const statement of statements) {
800
+ if (statement.name !== "mvp:check_pass") continue;
801
+ const cell = statementInput(statement, "text_password");
802
+ if (cell?.tag !== "input" || typeof cell.value !== "string") continue;
803
+ const declaredName = inputBase(cell.value);
804
+ if (!passwordInputs.has(declaredName)) continue;
805
+ if (reported.has(declaredName)) continue;
806
+ reported.add(declaredName);
807
+ bag.warn(
808
+ "stack.password-input-double-hash",
809
+ `${owner}: \`s.security.check_password\` reads \`inp("${cell.value}")\`, and the input \`${declaredName}\` is declared \`input.password()\`. That hashes the submission on bind, and the stored \`f.password()\` column hashed on write, so \`check_password\` compares two DIFFERENT hashes and a correct password always fails \u2014 the endpoint answers false on a row it found, which reads as a wrong credential. Declare it \`input.text()\` and pass the plaintext: \`check_password\` does the comparison hash itself.`
810
+ );
811
+ }
812
+ }
813
+ }
814
+ }
815
+ function checkToThrowScope(sections, bag) {
816
+ for (const [payloadKey, arr] of Object.entries(sections)) {
817
+ for (const obj of arr ?? []) {
818
+ if (!obj || typeof obj !== "object") continue;
819
+ const name = obj.name;
820
+ const owner = `${payloadKey} "${typeof name === "string" ? name : "?"}"`;
821
+ const all = [];
822
+ collectStatements(obj, all);
823
+ const toThrows = all.filter((st) => st.name === "mvp:test_expect_to_throw");
824
+ if (toThrows.length === 0) continue;
825
+ const boundAnywhere = collectBindings(all);
826
+ for (const toThrow of toThrows) {
827
+ const body = toThrow.context?.run;
828
+ if (!Array.isArray(body) || body.length === 0) continue;
829
+ const inside = [];
830
+ collectStatements(body, inside);
831
+ const boundInside = collectBindings(inside);
832
+ const refs = [];
833
+ collectVarRefs(body, refs);
834
+ const reported = /* @__PURE__ */ new Set();
835
+ for (const path of refs) {
836
+ const dot = path.indexOf(".");
837
+ const base = dot === -1 ? path : path.slice(0, dot);
838
+ if (base === "" || base.startsWith("$")) continue;
839
+ if (RESERVED_VAR_NAMESPACES[base]) continue;
840
+ if (boundInside.has(base)) continue;
841
+ if (!boundAnywhere.has(base)) continue;
842
+ if (reported.has(base)) continue;
843
+ reported.add(base);
844
+ bag.warn(
845
+ "stack.to-throw-isolated-var",
846
+ `${owner}: \`ref("${path}")\` inside an \`s.expect.to_throw\` body names \`${base}\`, which is bound OUTSIDE the body. \`to_throw\` runs its \`body\` in an ISOLATED var stack, so \`${base}\` is not visible in there: the body raises \`Missing var entry: ${base}\` before reaching the statement under test, and the test reports \`to_throw failed - expected "\u2026" not found in error "Missing var entry: ${base}"\` \u2014 which reads as the guard not firing. Bind what the body needs INSIDE the body, or pass the value as a literal.`
847
+ );
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
780
853
  var DB_MATCH_ARG = {
781
854
  "mvp:dbo_getby": "field_value",
782
855
  "mvp:dbo_delby": "field_value",
@@ -1617,6 +1690,8 @@ var Xano = class {
1617
1690
  checkRealtimeDeliver(this.bundleType, sections, bag);
1618
1691
  checkTriggerBindings(sections, bag);
1619
1692
  checkUnboundVarRefs(sections, bag);
1693
+ checkToThrowScope(sections, bag);
1694
+ checkPasswordInputHashing(sections, bag);
1620
1695
  checkSafeRefMatchArgs(sections, bag);
1621
1696
  checkNullMatchArgs(sections, bag);
1622
1697
  checkPathSegmentCandidates(sections, bag);
@@ -1858,4 +1933,4 @@ export {
1858
1933
  Xano,
1859
1934
  workspace
1860
1935
  };
1861
- //# sourceMappingURL=chunk-QYSQ3UDO.js.map
1936
+ //# sourceMappingURL=chunk-MEFMTICH.js.map
@@ -2,7 +2,7 @@ import {
2
2
  presetFilePath,
3
3
  resolveAiPresets,
4
4
  scaffoldProject
5
- } from "./chunk-VK26K7AY.js";
5
+ } from "./chunk-XBIFQWZM.js";
6
6
  import {
7
7
  runNpmCapturingStderr
8
8
  } from "./chunk-ZSYZTGJH.js";
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-RQNMTDXD.js";
38
38
  import {
39
39
  readVersion
40
- } from "./chunk-XT3XQ4PF.js";
40
+ } from "./chunk-LISUHLWI.js";
41
41
  import {
42
42
  ENV_SPELLINGS,
43
43
  parseEnvSelector
@@ -63,6 +63,9 @@ import { basename, join as join2, resolve } from "path";
63
63
  import { existsSync, readFileSync } from "fs";
64
64
  import { join } from "path";
65
65
  import { pathToFileURL } from "url";
66
+ function isOptionImport(ref) {
67
+ return "package" in ref;
68
+ }
66
69
  function parseMarketplaceFlag(values) {
67
70
  const packages = [];
68
71
  for (const value of values) {
@@ -94,10 +97,18 @@ function readOptionRefs(raw) {
94
97
  const exported = entry["export"];
95
98
  if (typeof pkg === "string" && pkg !== "" && typeof exported === "string" && exported !== "") {
96
99
  refs[name] = { package: pkg, export: exported };
100
+ continue;
101
+ }
102
+ const literal = entry["value"];
103
+ if (typeof literal === "string" || typeof literal === "number" || typeof literal === "boolean") {
104
+ refs[name] = { value: literal };
97
105
  }
98
106
  }
99
107
  return refs;
100
108
  }
109
+ var UNDECLARED_OPTIONS = {
110
+ "@xanots/auth": { canonical: { value: "authn" } }
111
+ };
101
112
  function bindingNameFor(register) {
102
113
  const bare = register.replace(/^register/, "");
103
114
  return bare === "" ? "handle" : bare[0].toLowerCase() + bare.slice(1);
@@ -129,11 +140,14 @@ async function readRegistration(dir, pkg) {
129
140
  const field = declared;
130
141
  const register = field["register"];
131
142
  if (typeof register === "string" && register !== "") {
143
+ const declared2 = readOptionRefs(field["options"]);
132
144
  return {
133
145
  pkg,
134
146
  register,
135
147
  binding: field["returns"] === "handle" ? bindingNameFor(register) : null,
136
- options: readOptionRefs(field["options"]),
148
+ // The module's own declaration wins option by option, so a package that
149
+ // ships one is never second-guessed here.
150
+ options: { ...UNDECLARED_OPTIONS[pkg], ...declared2 },
137
151
  source: "manifest"
138
152
  };
139
153
  }
@@ -159,7 +173,13 @@ async function readRegistration(dir, pkg) {
159
173
  unwired: `it exports ${names.length} register* functions (${names.join(", ")}) \u2014 its package.json needs a "xanots" field naming the one to call`
160
174
  };
161
175
  }
162
- return { pkg, register: names[0], binding: null, options: {}, source: "exports" };
176
+ return {
177
+ pkg,
178
+ register: names[0],
179
+ binding: null,
180
+ options: { ...UNDECLARED_OPTIONS[pkg] },
181
+ source: "exports"
182
+ };
163
183
  }
164
184
  function renderXanoIndexWithModules(appName, modules) {
165
185
  const byPackage = /* @__PURE__ */ new Map();
@@ -170,12 +190,16 @@ function renderXanoIndexWithModules(appName, modules) {
170
190
  };
171
191
  for (const m of modules) {
172
192
  add(m.pkg, m.register);
173
- for (const ref of Object.values(m.options)) add(ref.package, ref.export);
193
+ for (const ref of Object.values(m.options)) {
194
+ if (isOptionImport(ref)) add(ref.package, ref.export);
195
+ }
174
196
  }
175
197
  const imports = [...byPackage].map(([pkg, names]) => `import { ${[...names].sort().join(", ")} } from "${pkg}";`).join("\n");
176
198
  const calls = modules.map((m) => {
177
199
  const entries = Object.entries(m.options);
178
- const opts = entries.length === 0 ? "" : `, { ${entries.map(([name, ref]) => `${name}: ${ref.export}`).join(", ")} }`;
200
+ const opts = entries.length === 0 ? "" : `, { ${entries.map(
201
+ ([name, ref]) => `${name}: ${isOptionImport(ref) ? ref.export : JSON.stringify(ref.value)}`
202
+ ).join(", ")} }`;
179
203
  const call = `${m.register}(app${opts});`;
180
204
  return m.binding === null ? call : `const ${m.binding} = ${call}`;
181
205
  }).join("\n");
@@ -237,7 +261,7 @@ async function installModules(dir, packages) {
237
261
  const present = new Set(installed.map(packageNameOf));
238
262
  const writable = [];
239
263
  for (const registration of registered) {
240
- const missing = Object.values(registration.options).map((ref) => ref.package).filter((pkg) => !present.has(pkg));
264
+ const missing = Object.values(registration.options).filter(isOptionImport).map((ref) => ref.package).filter((pkg) => !present.has(pkg));
241
265
  if (missing.length === 0) {
242
266
  writable.push(registration);
243
267
  continue;
@@ -416,7 +440,7 @@ function rejectPullOnlyFlags(args) {
416
440
  async function runInitCommand(args) {
417
441
  if (args.from !== void 0) {
418
442
  const source = resolveFromSource(args.from);
419
- const { runInitFromCommand } = await import("./codegen-command-Y2SPMAUW.js");
443
+ const { runInitFromCommand } = await import("./codegen-command-5A6FVKUA.js");
420
444
  return runInitFromCommand(args, source);
421
445
  }
422
446
  rejectPullOnlyFlags(args);
@@ -497,4 +521,4 @@ export {
497
521
  resolveFromSource,
498
522
  runInitCommand
499
523
  };
500
- //# sourceMappingURL=chunk-VPAWRBK5.js.map
524
+ //# sourceMappingURL=chunk-ORZINVGQ.js.map
@@ -6,7 +6,7 @@ import {
6
6
  realtimeChannelGuid,
7
7
  realtimeServerRefName,
8
8
  resolveRealtimeServerRef
9
- } from "./chunk-GSP2BY4F.js";
9
+ } from "./chunk-BYQHCCYU.js";
10
10
  import {
11
11
  assertCanonical,
12
12
  assertOneOf,
@@ -667,4 +667,4 @@ export {
667
667
  addonKind,
668
668
  addon
669
669
  };
670
- //# sourceMappingURL=chunk-VRNZ2NVV.js.map
670
+ //# sourceMappingURL=chunk-PJNWOZMT.js.map
@@ -12,12 +12,12 @@ import {
12
12
  resolveFrontendPreset,
13
13
  resolveThemeChoice,
14
14
  sanitizeAppName
15
- } from "./chunk-VPAWRBK5.js";
15
+ } from "./chunk-ORZINVGQ.js";
16
16
  import {
17
17
  XANO_DIR,
18
18
  resolveAiPresets,
19
19
  scaffoldProject
20
- } from "./chunk-VK26K7AY.js";
20
+ } from "./chunk-XBIFQWZM.js";
21
21
  import {
22
22
  TEST_EXPECT_TYPES
23
23
  } from "./chunk-YX22LKQE.js";
@@ -50,7 +50,7 @@ import {
50
50
  searchConstrainsRows,
51
51
  tableTrigger,
52
52
  workspaceTrigger
53
- } from "./chunk-GSP2BY4F.js";
53
+ } from "./chunk-BYQHCCYU.js";
54
54
  import {
55
55
  linkedTableOf,
56
56
  tableRefOf
@@ -80,7 +80,7 @@ import {
80
80
  import {
81
81
  loadDefault,
82
82
  readVersion
83
- } from "./chunk-XT3XQ4PF.js";
83
+ } from "./chunk-LISUHLWI.js";
84
84
  import {
85
85
  UsageError
86
86
  } from "./chunk-Z2ZIE5CO.js";
@@ -7015,4 +7015,4 @@ export {
7015
7015
  verifyCrashEntry,
7016
7016
  blameGeneratedFile
7017
7017
  };
7018
- //# sourceMappingURL=chunk-PLE5QQOZ.js.map
7018
+ //# sourceMappingURL=chunk-UQMMFW32.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  compileBundle
3
- } from "./chunk-XT3XQ4PF.js";
3
+ } from "./chunk-LISUHLWI.js";
4
4
  import {
5
5
  missingArgument
6
6
  } from "./chunk-Z2ZIE5CO.js";
@@ -34,4 +34,4 @@ export {
34
34
  assertBundleInput,
35
35
  loadBundleText
36
36
  };
37
- //# sourceMappingURL=chunk-ELK7UALJ.js.map
37
+ //# sourceMappingURL=chunk-UXPDQFG2.js.map
@@ -23,7 +23,7 @@ comes from interfaces with different shapes, and carrying it over produces code
23
23
  that reads well, type-checks, and is wrong. Read before writing:
24
24
 
25
25
  1. \`node_modules/@xanots/sdk/llms.txt\` \u2014 the router, and the whole always-read
26
- surface: the mental model, the deploy contract, every gotcha, and control
26
+ surface: the mental model, the deploy contract, every cross-cutting gotcha, and control
27
27
  flow. It ends with a list of topic files and the condition for opening each.
28
28
  Read it in full; it is small on purpose.
29
29
  2. The one or two topic files whose condition matches this task
@@ -442,4 +442,4 @@ export {
442
442
  resolveAiPresets,
443
443
  scaffoldProject
444
444
  };
445
- //# sourceMappingURL=chunk-VK26K7AY.js.map
445
+ //# sourceMappingURL=chunk-XBIFQWZM.js.map
package/dist/cli.js CHANGED
@@ -8,13 +8,13 @@ import {
8
8
  resolveHelpRequest,
9
9
  resolveLockPath,
10
10
  run
11
- } from "./chunk-XT3XQ4PF.js";
11
+ } from "./chunk-LISUHLWI.js";
12
12
  import "./chunk-7WRJPKGK.js";
13
13
  import "./chunk-3LQGF2WS.js";
14
14
  import "./chunk-Z2ZIE5CO.js";
15
15
  import "./chunk-GNPVYOPB.js";
16
16
  import "./chunk-EZG76F7R.js";
17
- import "./chunk-QYSQ3UDO.js";
17
+ import "./chunk-MEFMTICH.js";
18
18
  import "./chunk-V5Y7D4LH.js";
19
19
  import "./chunk-N74KDCBD.js";
20
20
  import "./chunk-EETVJZAZ.js";
@@ -4,7 +4,7 @@ import {
4
4
  isMissingDependencyError,
5
5
  runInitFromCommand,
6
6
  verifyCrashEntry
7
- } from "./chunk-PLE5QQOZ.js";
7
+ } from "./chunk-UQMMFW32.js";
8
8
  import "./chunk-RQ3FXV4K.js";
9
9
  import "./chunk-K5IOND4K.js";
10
10
  import "./chunk-TJS2AF5Y.js";
@@ -13,24 +13,24 @@ import "./chunk-YHS6VVLJ.js";
13
13
  import "./chunk-ZUTSMMAG.js";
14
14
  import "./chunk-X4DVXBFY.js";
15
15
  import "./chunk-NDP7OUPS.js";
16
- import "./chunk-VPAWRBK5.js";
17
- import "./chunk-VK26K7AY.js";
16
+ import "./chunk-ORZINVGQ.js";
17
+ import "./chunk-XBIFQWZM.js";
18
18
  import "./chunk-ZSYZTGJH.js";
19
19
  import "./chunk-YX22LKQE.js";
20
20
  import "./chunk-6VNRMKFJ.js";
21
21
  import "./chunk-RQNMTDXD.js";
22
22
  import "./chunk-PR7OXHGZ.js";
23
- import "./chunk-GSP2BY4F.js";
23
+ import "./chunk-BYQHCCYU.js";
24
24
  import "./chunk-EHP3WPEG.js";
25
25
  import "./chunk-AE3PDSDS.js";
26
26
  import "./chunk-DCMANKMX.js";
27
- import "./chunk-XT3XQ4PF.js";
27
+ import "./chunk-LISUHLWI.js";
28
28
  import "./chunk-7WRJPKGK.js";
29
29
  import "./chunk-3LQGF2WS.js";
30
30
  import "./chunk-Z2ZIE5CO.js";
31
31
  import "./chunk-GNPVYOPB.js";
32
32
  import "./chunk-EZG76F7R.js";
33
- import "./chunk-QYSQ3UDO.js";
33
+ import "./chunk-MEFMTICH.js";
34
34
  import "./chunk-V5Y7D4LH.js";
35
35
  import "./chunk-N74KDCBD.js";
36
36
  import "./chunk-EETVJZAZ.js";
@@ -44,4 +44,4 @@ export {
44
44
  runInitFromCommand,
45
45
  verifyCrashEntry
46
46
  };
47
- //# sourceMappingURL=codegen-command-Y2SPMAUW.js.map
47
+ //# sourceMappingURL=codegen-command-5A6FVKUA.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  assertBundleInput,
6
6
  loadBundleText
7
- } from "./chunk-ELK7UALJ.js";
7
+ } from "./chunk-UXPDQFG2.js";
8
8
  import {
9
9
  microserviceLine,
10
10
  readyRatio,
@@ -38,7 +38,7 @@ import {
38
38
  } from "./chunk-ZUTSMMAG.js";
39
39
  import "./chunk-X4DVXBFY.js";
40
40
  import "./chunk-NDP7OUPS.js";
41
- import "./chunk-XT3XQ4PF.js";
41
+ import "./chunk-LISUHLWI.js";
42
42
  import "./chunk-7WRJPKGK.js";
43
43
  import "./chunk-3LQGF2WS.js";
44
44
  import {
@@ -59,7 +59,7 @@ import {
59
59
  warn,
60
60
  withSpinner
61
61
  } from "./chunk-EZG76F7R.js";
62
- import "./chunk-QYSQ3UDO.js";
62
+ import "./chunk-MEFMTICH.js";
63
63
  import "./chunk-V5Y7D4LH.js";
64
64
  import "./chunk-N74KDCBD.js";
65
65
  import "./chunk-EETVJZAZ.js";
@@ -417,4 +417,4 @@ export {
417
417
  runDeployedTests,
418
418
  verifyMicroservices
419
419
  };
420
- //# sourceMappingURL=deploy-command-XHS5PKPV.js.map
420
+ //# sourceMappingURL=deploy-command-VBB7JYXH.js.map
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ef as Condition, eg as FilterResults, eh as ElementResult, ei as SameArrayResult, ej as GroupedArrayResult, ek as AgentResultOf, b3 as AddonDef, el as OutputPath, cZ as TableDef, em as QualifiedCol, bx as DbEval, cY as SortDirective, bz as DbWhere, en as OutputRoot, bM as InferRow, eo as AggregateRow, ep as EvalFields, eq as OutputAuthored, cb as MicroserviceDef, ah as generated, F as FunctionDef, co as QueryHandle } from './store-DAnUIi1T.js';
2
- export { b4 as AddonXdo, A as AdoptChange, a as AdoptResult, b5 as AgentDef, b6 as AgentHandle, b7 as AgentOutput, b8 as AgentSettingsXdo, b9 as AgentXdo, ba as AmbientBindings, bb as AnthropicLlm, bc as ApiGroupDef, bd as ApiGroupXdo, be as AuthRef, bf as Authored, B as Bundle, b as BundlePayload, c as BundleType, bg as Capturable, b0 as CaptureRecord, a_ as CaptureValue, bh as ChannelConversationDef, bi as ChannelDeliveryDef, bj as ChannelDeliveryGuarantee, bk as ChannelPublishDef, bl as ChannelPublishWho, bm as ChannelRateLimitDef, bn as ColumnDef, bo as Comparison, bp as ContainerEnv, bq as ContainerPort, br as ContainerResources, bs as ContainerVolume, bt as CorsConfig, bu as CorsMode, bv as DatabaseActions, bw as DatabaseInputs, by as DbEvalFilter, bA as ErrorInputs, bB as ExceptionPolicy, bC as FieldAccessor, bD as FieldRule, bE as GoogleGenAiLlm, bF as HistoryInput, bG as HttpVerb, bH as IndexDef, bI as IndexLang, bJ as IndexOp, bK as IndexType, bL as IndexXdo, bN as InputDescriptor, bO as InputOptions, bP as IteratingBindings, bQ as KnowledgeDef, bR as KnowledgeDirSource, bS as KnowledgeFileSource, bT as KnowledgeMode, bU as KnowledgeType, bV as LAMBDA_BINDINGS, bW as LAMBDA_CODE_FILTERS, bX as LAMBDA_GLOBALS, bY as LAMBDA_MODULE_GLOBALS, bZ as LAMBDA_STATEMENTS, b1 as LambdaBindings, b_ as LambdaBody, aZ as LambdaOptions, a$ as LambdaSurface, b$ as LlmPrompt, c0 as LlmProvider, c1 as LlmSettings, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, c2 as ManifestValue, c3 as McpPathOptions, c4 as McpServerDef, c5 as McpServerHandle, c6 as McpServerXdo, m as MergeResult, c7 as MessageDeliverTo, c8 as MicroserviceChart, c9 as MicroserviceConfig, ca as MicroserviceContainer, cc as MicroserviceDeployment, cd as MicroserviceIngress, ce as MicroserviceRegistryAuth, cf as MicroserviceVolume, cg as MicroserviceXdo, ch as MiddlewareAttach, ci as MiddlewareAttachEntry, cj as MiddlewareDef, ck as MiddlewareXdo, O as ObjectKind, cl as OpenAiLlm, n as PayloadArrayKey, cm as QueryDef, cn as QueryFilterName, cp as QueryResponseType, cq as QueryXdo, cr as RealtimeActions, cs as RealtimeChannelActions, ct as RealtimeChannelDef, cu as RealtimeChannelHandle, cv as RealtimeChannelRef, cw as RealtimeChannelTriggerInputs, cx as RealtimeChannelXdo, cy as RealtimeClient, cz as RealtimeInputs, cA as RealtimeMessageDef, cB as RealtimeMessageXdo, cC as RealtimeServerActions, cD as RealtimeServerDef, cE as RealtimeServerHandle, cF as RealtimeServerRef, cG as RealtimeServerTriggerInputs, cH as RealtimeServerXdo, cI as RealtimeUrlOptions, R as RenameResult, cJ as ResultStrategy, cK as Route, cL as RowOf, cM as ScheduleDef, cN as SchemaCols, cO as SchemaDef, cP as SearchComparison, cQ as SearchGroup, cR as SearchNode, cS as SearchOp, cT as SearchParamValue, cU as SeedFileSource, cV as SeedRow, cW as SeedSource, cX as SortDir, S as StatementSpec, c_ as TableXdo, c$ as TaskDef, d0 as TaskXdo, d1 as ToolDef, d2 as ToolXdo, d3 as ToolsetBaseDef, d4 as ToolsetBaseXdo, d5 as ToolsetInputs, d6 as ToolsetToolEntry, d7 as ToolsetToolRef, d8 as TriggerDef, d9 as TriggerObjType, da as TriggerXdo, db as ViewDef, dc as ViewXdo, dd as WorkflowTestDef, de as WorkflowTestXdo, df as WorkspaceActions, dg as WorkspaceConfigDef, dh as WorkspaceConfigXdo, di as WorkspaceHistoryDef, dj as WorkspaceHistoryXdo, dk as WorkspaceInputs, dl as WorkspaceMiddlewareDef, dm as WorkspaceMiddlewareXdo, b2 as Xano, dn as XanoFreeLlm, dp as addon, dq as agent, dr as agentTrigger, ds as and, dt as apiGroup, du as assertLambdaBody, dv as bitwiseAnd, dw as bitwiseOr, dx as bitwiseXor, dy as cmp, dz as defineFunction, dA as emit, dB as emitBundle, dC as errorTrigger, dD as expr, dE as fl, dF as input, dG as knowledge, dH as knowledgeDir, dI as knowledgeFile, er as lam, dJ as mathAdd, dK as mathDiv, dL as mathMul, dM as mathSub, dN as mcpServer, dO as mcpServerTrigger, dP as microservice, dQ as middleware, dR as mixed, dS as objectEntries, dT as objectKeys, dU as objectValues, dV as or, dW as query, dX as realtimeChannel, dY as realtimeChannelTrigger, dZ as realtimeMessage, d_ as realtimeServer, d$ as realtimeServerTrigger, e0 as realtimeTrigger, e1 as resetLockOverrides, e2 as seedFile, e3 as seedLockOverrides, e4 as table, e5 as tableTrigger, e6 as task, e7 as textAppend, e8 as textPrepend, e9 as toSearchParams, ea as tool, eb as workflowTest, ec as workspace, ed as workspaceConfig, ee as workspaceTrigger } from './store-DAnUIi1T.js';
1
+ import { ef as Condition, eg as FilterResults, eh as ElementResult, ei as SameArrayResult, ej as GroupedArrayResult, ek as AgentResultOf, b3 as AddonDef, el as OutputPath, cZ as TableDef, em as QualifiedCol, bx as DbEval, cY as SortDirective, bz as DbWhere, en as OutputRoot, bM as InferRow, eo as AggregateRow, ep as EvalFields, eq as OutputAuthored, cb as MicroserviceDef, ah as generated, F as FunctionDef, co as QueryHandle } from './store-9Psd0jiF.js';
2
+ export { b4 as AddonXdo, A as AdoptChange, a as AdoptResult, b5 as AgentDef, b6 as AgentHandle, b7 as AgentOutput, b8 as AgentSettingsXdo, b9 as AgentXdo, ba as AmbientBindings, bb as AnthropicLlm, bc as ApiGroupDef, bd as ApiGroupXdo, be as AuthRef, bf as Authored, B as Bundle, b as BundlePayload, c as BundleType, bg as Capturable, b0 as CaptureRecord, a_ as CaptureValue, bh as ChannelConversationDef, bi as ChannelDeliveryDef, bj as ChannelDeliveryGuarantee, bk as ChannelPublishDef, bl as ChannelPublishWho, bm as ChannelRateLimitDef, bn as ColumnDef, bo as Comparison, bp as ContainerEnv, bq as ContainerPort, br as ContainerResources, bs as ContainerVolume, bt as CorsConfig, bu as CorsMode, bv as DatabaseActions, bw as DatabaseInputs, by as DbEvalFilter, bA as ErrorInputs, bB as ExceptionPolicy, bC as FieldAccessor, bD as FieldRule, bE as GoogleGenAiLlm, bF as HistoryInput, bG as HttpVerb, bH as IndexDef, bI as IndexLang, bJ as IndexOp, bK as IndexType, bL as IndexXdo, bN as InputDescriptor, bO as InputOptions, bP as IteratingBindings, bQ as KnowledgeDef, bR as KnowledgeDirSource, bS as KnowledgeFileSource, bT as KnowledgeMode, bU as KnowledgeType, bV as LAMBDA_BINDINGS, bW as LAMBDA_CODE_FILTERS, bX as LAMBDA_GLOBALS, bY as LAMBDA_MODULE_GLOBALS, bZ as LAMBDA_STATEMENTS, b1 as LambdaBindings, b_ as LambdaBody, aZ as LambdaOptions, a$ as LambdaSurface, b$ as LlmPrompt, c0 as LlmProvider, c1 as LlmSettings, g as LockEntry, h as LockExportContext, i as LockFile, M as Manifest, j as ManifestField, k as ManifestKind, l as ManifestStatement, c2 as ManifestValue, c3 as McpPathOptions, c4 as McpServerDef, c5 as McpServerHandle, c6 as McpServerXdo, m as MergeResult, c7 as MessageDeliverTo, c8 as MicroserviceChart, c9 as MicroserviceConfig, ca as MicroserviceContainer, cc as MicroserviceDeployment, cd as MicroserviceIngress, ce as MicroserviceRegistryAuth, cf as MicroserviceVolume, cg as MicroserviceXdo, ch as MiddlewareAttach, ci as MiddlewareAttachEntry, cj as MiddlewareDef, ck as MiddlewareXdo, O as ObjectKind, cl as OpenAiLlm, n as PayloadArrayKey, cm as QueryDef, cn as QueryFilterName, cp as QueryResponseType, cq as QueryXdo, cr as RealtimeActions, cs as RealtimeChannelActions, ct as RealtimeChannelDef, cu as RealtimeChannelHandle, cv as RealtimeChannelRef, cw as RealtimeChannelTriggerInputs, cx as RealtimeChannelXdo, cy as RealtimeClient, cz as RealtimeInputs, cA as RealtimeMessageDef, cB as RealtimeMessageXdo, cC as RealtimeServerActions, cD as RealtimeServerDef, cE as RealtimeServerHandle, cF as RealtimeServerRef, cG as RealtimeServerTriggerInputs, cH as RealtimeServerXdo, cI as RealtimeUrlOptions, R as RenameResult, cJ as ResultStrategy, cK as Route, cL as RowOf, cM as ScheduleDef, cN as SchemaCols, cO as SchemaDef, cP as SearchComparison, cQ as SearchGroup, cR as SearchNode, cS as SearchOp, cT as SearchParamValue, cU as SeedFileSource, cV as SeedRow, cW as SeedSource, cX as SortDir, S as StatementSpec, c_ as TableXdo, c$ as TaskDef, d0 as TaskXdo, d1 as ToolDef, d2 as ToolXdo, d3 as ToolsetBaseDef, d4 as ToolsetBaseXdo, d5 as ToolsetInputs, d6 as ToolsetToolEntry, d7 as ToolsetToolRef, d8 as TriggerDef, d9 as TriggerObjType, da as TriggerXdo, db as ViewDef, dc as ViewXdo, dd as WorkflowTestDef, de as WorkflowTestXdo, df as WorkspaceActions, dg as WorkspaceConfigDef, dh as WorkspaceConfigXdo, di as WorkspaceHistoryDef, dj as WorkspaceHistoryXdo, dk as WorkspaceInputs, dl as WorkspaceMiddlewareDef, dm as WorkspaceMiddlewareXdo, b2 as Xano, dn as XanoFreeLlm, dp as addon, dq as agent, dr as agentTrigger, ds as and, dt as apiGroup, du as assertLambdaBody, dv as bitwiseAnd, dw as bitwiseOr, dx as bitwiseXor, dy as cmp, dz as defineFunction, dA as emit, dB as emitBundle, dC as errorTrigger, dD as expr, dE as fl, dF as input, dG as knowledge, dH as knowledgeDir, dI as knowledgeFile, er as lam, dJ as mathAdd, dK as mathDiv, dL as mathMul, dM as mathSub, dN as mcpServer, dO as mcpServerTrigger, dP as microservice, dQ as middleware, dR as mixed, dS as objectEntries, dT as objectKeys, dU as objectValues, dV as or, dW as query, dX as realtimeChannel, dY as realtimeChannelTrigger, dZ as realtimeMessage, d_ as realtimeServer, d$ as realtimeServerTrigger, e0 as realtimeTrigger, e1 as resetLockOverrides, e2 as seedFile, e3 as seedLockOverrides, e4 as table, e5 as tableTrigger, e6 as task, e7 as textAppend, e8 as textPrepend, e9 as toSearchParams, ea as tool, eb as workflowTest, ec as workspace, ed as workspaceConfig, ee as workspaceTrigger } from './store-9Psd0jiF.js';
3
3
  import { y as StatementAnnotations, S as Statement, l as FromFieldMap, u as ObjValue, Y as Prettify, a1 as AsShapeBrand, X as XanoFileRef, z as StatementOptions, v as ObjectRef, O as ObjInput } from './response-D6xGLEIn.js';
4
4
  export { B as BrandOpts, b as BrandValue, D as DecimalMethod, E as EmailMethod, c as FieldAccess, f as FieldDescriptor, h as FieldMap, j as FieldOpts, k as FieldStyleType, I as IntMethod, M as MethodArg, m as MethodOpts, n as MethodSpec, o as MockEntry, p as MockMap, q as MockXdo, s as ObjMember, P as PasswordMethod, w as ResponseDef, x as RowFromFieldMap, T as TableRefMethod, A as TextFormat, C as TextMethod, G as TypeBrand, V as ValueOf, H as VectorMethod, J as XanoGeoPosition, K as XanoGeoValue, L as annotate, N as f, Q as obj, U as statements } from './response-D6xGLEIn.js';
5
5
  import { h as FilterXdo, V as Value, i as FilteredValue, R as RefValue, F as FunctionXdo } from './xdo-ODuJklk6.js';