@xanots/sdk 0.0.9 → 0.0.11

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 (116) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +66 -21
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-4W37DGXS.js → agent-file-refresh-QNKN5RYD.js} +3 -3
  5. package/dist/bin.js +10 -8
  6. package/dist/{branch-commands-PBQ36L4A.js → branch-commands-2BLOC2GR.js} +13 -11
  7. package/dist/bundle.d.ts +218 -0
  8. package/dist/bundle.js +143 -0
  9. package/dist/{capture-7PO6SGB4.js → capture-4WVJY4DQ.js} +2 -2
  10. package/dist/{chunk-OW2QZEWL.js → chunk-22TKBSDV.js} +2 -2
  11. package/dist/{chunk-ZOYMZZ3S.js → chunk-3INK4Y4E.js} +1 -1
  12. package/dist/{chunk-NDZFBZHC.js → chunk-3UABJA4X.js} +1 -1
  13. package/dist/{chunk-6Z5CNWFC.js → chunk-4IF54NU5.js} +37 -6
  14. package/dist/{chunk-KSV7VOEX.js → chunk-4Q7ZOHH7.js} +3 -3
  15. package/dist/{chunk-QTNO2WD6.js → chunk-7ZYW652H.js} +1 -1
  16. package/dist/{chunk-4PTSTDIG.js → chunk-AIZKXUNP.js} +2 -2
  17. package/dist/{chunk-P5C2YKAM.js → chunk-ANUDXFEX.js} +18 -27
  18. package/dist/{chunk-4BXJGVZ3.js → chunk-BC2C5GVI.js} +2 -69
  19. package/dist/chunk-BSK7ELHU.js +70 -0
  20. package/dist/chunk-CTD5ZCV6.js +28 -0
  21. package/dist/{chunk-5HCDZ2XN.js → chunk-DBFU47BJ.js} +2 -2
  22. package/dist/{chunk-OKNSR7MT.js → chunk-DIA7CT7J.js} +129 -150
  23. package/dist/chunk-EHP3WPEG.js +21 -0
  24. package/dist/{chunk-JQLR64UC.js → chunk-F6CYJ7TN.js} +21 -6
  25. package/dist/{chunk-BKDJN76G.js → chunk-FE5I6S6N.js} +1 -1
  26. package/dist/{chunk-5YQOIFT4.js → chunk-G4EJMQLD.js} +2 -2
  27. package/dist/{chunk-L6TPHWAU.js → chunk-HYBN4H3F.js} +60 -86
  28. package/dist/{chunk-QIWBCS7N.js → chunk-JGCWTCA7.js} +2 -2
  29. package/dist/{chunk-MDXR5E5Q.js → chunk-K5IOND4K.js} +2 -2
  30. package/dist/{chunk-4PE4ZAB7.js → chunk-KA6G2L7U.js} +5 -5
  31. package/dist/chunk-OHX6MIUZ.js +184 -0
  32. package/dist/{chunk-UDL46O35.js → chunk-OWGCOGKK.js} +155 -3
  33. package/dist/{chunk-QONOJO45.js → chunk-QK7ZQJLP.js} +140 -20
  34. package/dist/{chunk-3QW5NFZJ.js → chunk-QKM4U5UK.js} +3 -3
  35. package/dist/{chunk-7OXFMCTX.js → chunk-QYMAZRAU.js} +7 -7
  36. package/dist/{chunk-K3YSQDXJ.js → chunk-RCT7UX7B.js} +92 -75
  37. package/dist/{chunk-T4XPCJRF.js → chunk-TCFIPDB3.js} +1 -1
  38. package/dist/{chunk-ZZLPTHT5.js → chunk-UOZMSF4C.js} +15 -8
  39. package/dist/{chunk-7JDT4PBU.js → chunk-VAF6A3YD.js} +5 -179
  40. package/dist/{chunk-6DHBYBTO.js → chunk-VNQM3V2C.js} +1 -2
  41. package/dist/chunk-WGPXT2G2.js +22 -0
  42. package/dist/{chunk-6AAT2AYQ.js → chunk-WP4OZZV4.js} +2 -2
  43. package/dist/{chunk-OYMR5AMJ.js → chunk-XEOX6AM7.js} +2 -2
  44. package/dist/{chunk-MU3O43L2.js → chunk-YBC3IKMF.js} +2 -2
  45. package/dist/chunk-ZQ2PKR6R.js +40 -0
  46. package/dist/cli.d.ts +57 -31
  47. package/dist/cli.js +9 -7
  48. package/dist/codegen-command-FUT2KJB6.js +49 -0
  49. package/dist/codegen.d.ts +2 -1
  50. package/dist/{completion-A6BZ3XGU.js → completion-WF46272M.js} +2 -2
  51. package/dist/{config-NL33PN4D.js → config-476F3PT5.js} +1 -1
  52. package/dist/{deploy-command-5TTI4TUP.js → deploy-command-IP7V7GT4.js} +69 -100
  53. package/dist/{ephemeral-command-7TK52YQM.js → ephemeral-command-U4AQ3TXX.js} +25 -28
  54. package/dist/index.d.ts +6 -4
  55. package/dist/index.js +10 -9
  56. package/dist/init-command-NPVL32L6.js +34 -0
  57. package/dist/{onboard-command-EHOHKQQU.js → init-web-3JNFG6GI.js} +10 -10
  58. package/dist/internal.d.ts +4 -4
  59. package/dist/internal.js +86 -73
  60. package/dist/io-P2H75UV2.js +12 -0
  61. package/dist/{live-diff-QK4KC2FJ.js → live-diff-IXKBVG4K.js} +3 -3
  62. package/dist/{lock-GFXD6G2E.js → lock-46FWYE4D.js} +3 -2
  63. package/dist/{lock-commands-ET7NIOLH.js → lock-commands-ZZKZ4LZJ.js} +23 -21
  64. package/dist/{login-command-DFCURZLC.js → login-command-Z6CHTA57.js} +7 -7
  65. package/dist/{logout-command-WXVZQCAV.js → logout-command-ER6IKAYJ.js} +2 -2
  66. package/dist/{loop-7SAIGRCZ.js → loop-D5NPL4VH.js} +3 -3
  67. package/dist/{marketplace-command-BCOAAN2I.js → marketplace-command-P4IPLJ6J.js} +6 -6
  68. package/dist/{meta-client-57ZWVHST.js → meta-client-K2J4XH64.js} +6 -6
  69. package/dist/node.d.ts +5 -4
  70. package/dist/node.js +15 -13
  71. package/dist/{validate-command-SK5FPCV7.js → preflight-command-K346GPTY.js} +20 -18
  72. package/dist/{profile-command-QJAAUZIV.js → profile-command-LJSBDV2L.js} +5 -5
  73. package/dist/{release-command-4EXVLYV2.js → release-command-IMNTIVWK.js} +42 -38
  74. package/dist/response-BQVQ24l1.d.ts +844 -0
  75. package/dist/{routes-manifest-SP3ZXLMR.js → routes-manifest-PWZHDOI5.js} +2 -2
  76. package/dist/scaffold.js +2 -2
  77. package/dist/{static-host-D6KS7X45.js → static-host-3WMV7IZO.js} +1 -1
  78. package/dist/status-command-AL47VG7H.js +162 -0
  79. package/dist/{store-CUCBSYLj.d.ts → store-BLyNeQ8S.d.ts} +21 -8
  80. package/dist/{test-command-2F5LKMI6.js → test-command-YAZLKLGQ.js} +45 -28
  81. package/dist/{upgrade-command-QL523I62.js → upgrade-command-BN3EHAOI.js} +16 -14
  82. package/dist/{workspace-K72NP7SX.js → workspace-2COHDBM3.js} +1 -1
  83. package/dist/{workspace-command-HYA6JEKK.js → workspace-command-MNK7Y7MQ.js} +36 -34
  84. package/dist/{workspace-export-AJMGN3CQ.js → workspace-export-DURY5WYL.js} +2 -2
  85. package/dist/{response-CVAE2kMj.d.ts → xdo-BjJj5W_E.d.ts} +1 -837
  86. package/guides/README.md +2 -2
  87. package/guides/cli.md +17 -19
  88. package/guides/codegen.md +21 -5
  89. package/guides/coverage.md +1 -1
  90. package/guides/deploying.md +31 -34
  91. package/guides/environment.md +4 -4
  92. package/guides/object-kinds.md +3 -3
  93. package/guides/project-structure.md +1 -1
  94. package/guides/scaffold.md +25 -2
  95. package/guides/typed-frontend.md +2 -2
  96. package/llms/filters.md +11 -10
  97. package/llms/kinds-agent-mcp.md +1 -1
  98. package/llms/kinds-core.md +2 -2
  99. package/llms/kinds-realtime.md +1 -1
  100. package/llms/lock.md +5 -5
  101. package/llms/statements-data.md +3 -1
  102. package/llms/tests.md +1 -1
  103. package/llms/values.md +1 -1
  104. package/llms-full.txt +65 -63
  105. package/llms.txt +40 -41
  106. package/manifest.json +96 -427
  107. package/package.json +7 -2
  108. package/dist/chunk-3EYUR3TX.js +0 -100
  109. package/dist/chunk-JQJPFUZI.js +0 -118
  110. package/dist/chunk-YNZFIY4J.js +0 -78
  111. package/dist/codegen-command-YSCSCVT5.js +0 -43
  112. package/dist/env-target-4T7AT347.js +0 -16
  113. package/dist/init-command-OVFFW4QS.js +0 -30
  114. package/dist/io-M7XZEMK7.js +0 -11
  115. package/dist/sandbox-details-command-EDO56IY3.js +0 -18
  116. package/dist/sandbox-export-command-MO6DEZ7Z.js +0 -24
@@ -1,19 +1,21 @@
1
+ import {
2
+ ENV_SPELLINGS
3
+ } from "./chunk-CTD5ZCV6.js";
4
+ import {
5
+ readLockFile,
6
+ writeLockFile
7
+ } from "./chunk-XEOX6AM7.js";
1
8
  import {
2
9
  UsageError,
3
10
  extraArguments,
4
11
  missingArgument,
5
- removedSubcommand,
6
12
  renderGlobalHelp,
7
13
  renderHelpFor,
8
14
  unknownCommand,
9
15
  unknownFlag,
10
16
  unknownHelpTopic,
11
17
  unknownSubcommand
12
- } from "./chunk-JQLR64UC.js";
13
- import {
14
- readLockFile,
15
- writeLockFile
16
- } from "./chunk-OYMR5AMJ.js";
18
+ } from "./chunk-F6CYJ7TN.js";
17
19
  import {
18
20
  detail,
19
21
  info,
@@ -24,13 +26,13 @@ import {
24
26
  Xano,
25
27
  assertSeedIds,
26
28
  coerceSeedRowValues
27
- } from "./chunk-UDL46O35.js";
29
+ } from "./chunk-OWGCOGKK.js";
28
30
  import {
29
31
  getCommand,
30
32
  getSubcommand,
31
33
  isCommand,
32
34
  suggest
33
- } from "./chunk-OKNSR7MT.js";
35
+ } from "./chunk-DIA7CT7J.js";
34
36
  import {
35
37
  FILTER_NAMES,
36
38
  KNOWLEDGE_DIR,
@@ -44,7 +46,7 @@ import {
44
46
  pathSegment,
45
47
  serializeBundle,
46
48
  tableColumns
47
- } from "./chunk-QONOJO45.js";
49
+ } from "./chunk-QK7ZQJLP.js";
48
50
  import {
49
51
  WORKSPACE_KEY,
50
52
  createLockContext,
@@ -56,7 +58,7 @@ import {
56
58
  seedLockOverrides,
57
59
  serializeLock,
58
60
  validateLockModel
59
- } from "./chunk-7JDT4PBU.js";
61
+ } from "./chunk-VAF6A3YD.js";
60
62
 
61
63
  // src/emit/cli.ts
62
64
  import { pathToFileURL as pathToFileURL3, fileURLToPath as fileURLToPath3 } from "url";
@@ -338,7 +340,7 @@ function parsePort(raw) {
338
340
  }
339
341
  return n;
340
342
  }
341
- var NOUN_COMMANDS = /* @__PURE__ */ new Set(["sandbox", "profile", "ephemeral", "workspace", "marketplace", "test"]);
343
+ var NOUN_COMMANDS = /* @__PURE__ */ new Set(["profile", "ephemeral", "workspace", "marketplace", "test"]);
342
344
  function helpTargetFor(command, subcommand) {
343
345
  if (command === void 0 || !isCommand(command)) return void 0;
344
346
  return subcommand !== void 0 && getSubcommand(command, subcommand) !== void 0 ? { command, subcommand } : { command };
@@ -383,7 +385,7 @@ function parseArgs(argv) {
383
385
  let check = false;
384
386
  let bundle;
385
387
  let reset = false;
386
- let dest;
388
+ let env;
387
389
  let kind;
388
390
  let concurrency;
389
391
  let test = false;
@@ -411,6 +413,7 @@ function parseArgs(argv) {
411
413
  let name;
412
414
  const ai = [];
413
415
  const marketplace = [];
416
+ let from;
414
417
  let framework;
415
418
  let theme;
416
419
  let radius;
@@ -421,7 +424,9 @@ function parseArgs(argv) {
421
424
  let icons;
422
425
  let force = false;
423
426
  let noInstall = false;
424
- let noVerify = false;
427
+ let skipLiveness = false;
428
+ let skipRoundtrip = false;
429
+ let identityOnly = false;
425
430
  let requireMicroservices = false;
426
431
  let report;
427
432
  let allowSeedInStatic = false;
@@ -471,10 +476,14 @@ function parseArgs(argv) {
471
476
  bundle = arg.slice("--bundle=".length);
472
477
  } else if (arg === "--reset") {
473
478
  reset = true;
474
- } else if (arg === "--dest") {
475
- dest = parseDest(rest[++i]);
476
- } else if (arg.startsWith("--dest=")) {
477
- dest = parseDest(arg.slice("--dest=".length));
479
+ } else if (arg === "--env" || arg.startsWith("--env=")) {
480
+ const value = arg === "--env" ? rest[++i] : arg.slice("--env=".length);
481
+ if (value === void 0 || value === "") {
482
+ throw new UsageError(`--env expects an environment: ${ENV_SPELLINGS}.`, {
483
+ helpFor: helpTargetFor(command, subcommand)
484
+ });
485
+ }
486
+ env = value;
478
487
  } else if (arg === "--kind") {
479
488
  kind = parseKind(rest[++i]);
480
489
  } else if (arg.startsWith("--kind=")) {
@@ -596,6 +605,15 @@ function parseArgs(argv) {
596
605
  icons = rest[++i];
597
606
  } else if (arg.startsWith("--icons=")) {
598
607
  icons = arg.slice("--icons=".length);
608
+ } else if (arg === "--from" || arg.startsWith("--from=")) {
609
+ const value = arg === "--from" ? rest[++i] : arg.slice("--from=".length);
610
+ if (value === void 0 || value === "") {
611
+ throw new UsageError(
612
+ "--from expects a source: workspace, ephemeral:<name>, or a path to a bundle .json.",
613
+ { helpFor: helpTargetFor(command, subcommand) }
614
+ );
615
+ }
616
+ from = value;
599
617
  } else if (arg === "--marketplace" || arg.startsWith("--marketplace=")) {
600
618
  const raw = arg === "--marketplace" ? rest[++i] : arg.slice("--marketplace=".length);
601
619
  for (const p of (raw ?? "").split(",")) {
@@ -614,8 +632,17 @@ function parseArgs(argv) {
614
632
  noInstall = true;
615
633
  } else if (arg === "--allow-seed-in-static") {
616
634
  allowSeedInStatic = true;
635
+ } else if (arg === "--skip-liveness") {
636
+ skipLiveness = true;
637
+ } else if (arg === "--skip-roundtrip") {
638
+ skipRoundtrip = true;
639
+ } else if (arg === "--identity-only") {
640
+ identityOnly = true;
617
641
  } else if (arg === "--no-verify") {
618
- noVerify = true;
642
+ throw new UsageError(
643
+ `\`--no-verify\` was split into three flags that each name what they skip: \`--skip-liveness\` (deploy: waiting for the deploy to come up), \`--skip-roundtrip\` (init --from: the offline re-export check), and \`--identity-only\` (lock prune: loading the entry file).`,
644
+ { helpFor: helpTargetFor(command, subcommand) }
645
+ );
619
646
  } else if (arg === "--require-microservices") {
620
647
  requireMicroservices = true;
621
648
  } else if (arg === "--dry-run") {
@@ -652,6 +679,12 @@ function parseArgs(argv) {
652
679
  `\`--profile\` was removed \u2014 deploy now authenticates via OAuth. Run \`xanots login\` once (or set XANO_REFRESH_TOKEN for CI).`,
653
680
  { helpFor: helpTargetFor(command, subcommand) }
654
681
  );
682
+ } else if (arg === "--dest" || arg.startsWith("--dest=")) {
683
+ const value = arg.startsWith("--dest=") ? arg.slice("--dest=".length) : rest[i + 1];
684
+ throw new UsageError(
685
+ `\`--dest\` is now \`--env\`${value === void 0 || value.startsWith("-") ? "" : ` (\`--env ${value}\`)`}, because it only ever selected an environment to READ \u2014 \`deploy\` and \`release\` each reach exactly one environment and take no flag for it. Environments are ${ENV_SPELLINGS}.`,
686
+ { helpFor: helpTargetFor(command, subcommand) }
687
+ );
655
688
  } else if (arg === "--workspace" || arg.startsWith("--workspace=")) {
656
689
  throw new UsageError(
657
690
  `\`--workspace\` was removed. Every command acts on the workspace its credential is bound to \u2014 pinned at \`xanots login\`, or set as \`workspace_id\` in a meta API token credential. Run \`xanots workspace details\` to see which one that is.`,
@@ -660,7 +693,7 @@ function parseArgs(argv) {
660
693
  } else if (arg === "--prune" || arg === "--confirm-workspace" || arg.startsWith("--confirm-workspace=") || arg === "--adopt-workspace") {
661
694
  const flag = arg.split("=")[0];
662
695
  throw new UsageError(
663
- `\`${flag}\` was removed along with \`xanots workspace deploy\` \u2014 deploy targets are selected with \`xanots deploy --dest <ephemeral|sandbox>\`.`,
696
+ `\`${flag}\` was removed along with \`xanots workspace deploy\` \u2014 \`xanots deploy\` writes to an ephemeral environment, and takes no destination flag.`,
664
697
  { helpFor: helpTargetFor(command, subcommand) }
665
698
  );
666
699
  } else if (arg === "--help" || arg === "-h") {
@@ -696,7 +729,7 @@ function parseArgs(argv) {
696
729
  check,
697
730
  bundle,
698
731
  reset,
699
- dest,
732
+ env,
700
733
  kind,
701
734
  concurrency,
702
735
  test,
@@ -724,6 +757,7 @@ function parseArgs(argv) {
724
757
  name,
725
758
  ai,
726
759
  marketplace,
760
+ from,
727
761
  force,
728
762
  noInstall,
729
763
  framework,
@@ -734,7 +768,9 @@ function parseArgs(argv) {
734
768
  fontMono,
735
769
  fontHeading,
736
770
  icons,
737
- noVerify,
771
+ skipLiveness,
772
+ skipRoundtrip,
773
+ identityOnly,
738
774
  requireMicroservices,
739
775
  report,
740
776
  allowSeedInStatic,
@@ -768,10 +804,6 @@ function parseFormat(raw) {
768
804
  if (raw === "json" || raw === "multidoc") return raw;
769
805
  throw new Error(`--format must be "json" or "multidoc" (got "${raw ?? ""}").`);
770
806
  }
771
- function parseDest(raw) {
772
- if (raw === "sandbox" || raw === "ephemeral" || raw === "workspace") return raw;
773
- throw new Error(`--dest must be "ephemeral", "sandbox" or "workspace" (got "${raw ?? ""}").`);
774
- }
775
807
  function parseKind(raw) {
776
808
  if (raw === "unit" || raw === "workflow") return raw;
777
809
  throw new Error(`--kind must be "unit" or "workflow" (got "${raw ?? ""}").`);
@@ -947,9 +979,12 @@ function warnOrphans(orphans, dropped, cededCanonicals, previous, observed) {
947
979
  }
948
980
  }
949
981
  async function run(argv) {
950
- if (argv[0] === "onboard") {
951
- const { runOnboardCommand } = await import("./onboard-command-EHOHKQQU.js");
952
- return runOnboardCommand(argv.slice(1));
982
+ if (argv[0] === "init") {
983
+ const web = argv.indexOf("--web", 1);
984
+ if (web !== -1) {
985
+ const { runInitWebCommand } = await import("./init-web-3JNFG6GI.js");
986
+ return runInitWebCommand([...argv.slice(1, web), ...argv.slice(web + 1)]);
987
+ }
953
988
  }
954
989
  const helpRequest = resolveHelpRequest(argv);
955
990
  if (helpRequest) {
@@ -969,11 +1004,11 @@ async function run(argv) {
969
1004
  return;
970
1005
  }
971
1006
  if (command === "init") {
972
- const { runInitCommand } = await import("./init-command-OVFFW4QS.js");
1007
+ const { runInitCommand } = await import("./init-command-NPVL32L6.js");
973
1008
  return runInitCommand(args);
974
1009
  }
975
1010
  if (command === "completion") {
976
- const { isCompletionShell, runCompletionCommand, COMPLETION_SHELLS } = await import("./completion-A6BZ3XGU.js");
1011
+ const { isCompletionShell, runCompletionCommand, COMPLETION_SHELLS } = await import("./completion-WF46272M.js");
977
1012
  const shell = args.positionals[0];
978
1013
  if (shell === void 0 || !isCompletionShell(shell)) {
979
1014
  throw new UsageError(
@@ -984,79 +1019,61 @@ async function run(argv) {
984
1019
  return runCompletionCommand(shell);
985
1020
  }
986
1021
  if (command === "upgrade") {
987
- const { runUpgradeCommand } = await import("./upgrade-command-QL523I62.js");
1022
+ const { runUpgradeCommand } = await import("./upgrade-command-BN3EHAOI.js");
988
1023
  return runUpgradeCommand(args);
989
1024
  }
990
1025
  if (command === "lock") {
991
- const { runLockCommand } = await import("./lock-commands-ET7NIOLH.js");
1026
+ const { runLockCommand } = await import("./lock-commands-ZZKZ4LZJ.js");
992
1027
  return runLockCommand(args);
993
1028
  }
994
1029
  if (command === "login") {
995
- const { runLoginCommand } = await import("./login-command-DFCURZLC.js");
1030
+ const { runLoginCommand } = await import("./login-command-Z6CHTA57.js");
996
1031
  return runLoginCommand(args);
997
1032
  }
998
1033
  if (command === "logout") {
999
- const { runLogoutCommand } = await import("./logout-command-WXVZQCAV.js");
1034
+ const { runLogoutCommand } = await import("./logout-command-ER6IKAYJ.js");
1000
1035
  return runLogoutCommand(args);
1001
1036
  }
1002
1037
  if (command === "deploy") {
1003
- const { runDeployCommand } = await import("./deploy-command-5TTI4TUP.js");
1038
+ const { runDeployCommand } = await import("./deploy-command-IP7V7GT4.js");
1004
1039
  return runDeployCommand(args);
1005
1040
  }
1006
1041
  if (command === "ephemeral") {
1007
- const { runEphemeralCommand } = await import("./ephemeral-command-7TK52YQM.js");
1042
+ const { runEphemeralCommand } = await import("./ephemeral-command-U4AQ3TXX.js");
1008
1043
  return runEphemeralCommand(args);
1009
1044
  }
1010
1045
  if (command === "release") {
1011
- const { runReleaseCommand } = await import("./release-command-4EXVLYV2.js");
1046
+ const { runReleaseCommand } = await import("./release-command-IMNTIVWK.js");
1012
1047
  return runReleaseCommand(args);
1013
1048
  }
1014
- if (command === "sandbox") {
1015
- if (args.subcommand === "deploy") {
1016
- throw removedSubcommand("sandbox", "deploy");
1017
- }
1018
- if (args.subcommand === "details") {
1019
- const { runSandboxDetailsCommand } = await import("./sandbox-details-command-EDO56IY3.js");
1020
- return runSandboxDetailsCommand(args);
1021
- }
1022
- if (args.subcommand === "export") {
1023
- const { runSandboxExportCommand } = await import("./sandbox-export-command-MO6DEZ7Z.js");
1024
- return runSandboxExportCommand(args);
1025
- }
1026
- if (args.subcommand === "codegen") {
1027
- const { runCodegenCommand } = await import("./codegen-command-YSCSCVT5.js");
1028
- return runCodegenCommand(args, { kind: "sandbox" });
1029
- }
1030
- throw unknownSubcommand("sandbox", args.subcommand);
1031
- }
1032
1049
  if (command === "test") {
1033
- const { runTestCommand } = await import("./test-command-2F5LKMI6.js");
1050
+ const { runTestCommand } = await import("./test-command-YAZLKLGQ.js");
1034
1051
  return runTestCommand(args);
1035
1052
  }
1036
1053
  if (command === "workspace") {
1037
- const { runWorkspaceCommand } = await import("./workspace-command-HYA6JEKK.js");
1054
+ const { runWorkspaceCommand } = await import("./workspace-command-MNK7Y7MQ.js");
1038
1055
  return runWorkspaceCommand(args);
1039
1056
  }
1040
- if (command === "codegen") {
1041
- const { runCodegenCommand } = await import("./codegen-command-YSCSCVT5.js");
1042
- return runCodegenCommand(args, { kind: "file" });
1057
+ if (command === "status") {
1058
+ const { runStatusCommand } = await import("./status-command-AL47VG7H.js");
1059
+ return runStatusCommand(args);
1060
+ }
1061
+ if (command === "whoami") {
1062
+ const { runProfileCommand } = await import("./profile-command-LJSBDV2L.js");
1063
+ return runProfileCommand(args);
1043
1064
  }
1044
1065
  if (command === "profile") {
1045
1066
  if (args.subcommand !== "me") {
1046
1067
  throw unknownSubcommand("profile", args.subcommand);
1047
1068
  }
1048
- const { runProfileCommand } = await import("./profile-command-QJAAUZIV.js");
1049
- return runProfileCommand(args);
1050
- }
1051
- if (command === "whoami") {
1052
- const { runProfileCommand } = await import("./profile-command-QJAAUZIV.js");
1069
+ const { runProfileCommand } = await import("./profile-command-LJSBDV2L.js");
1053
1070
  return runProfileCommand(args);
1054
1071
  }
1055
1072
  if (command === "marketplace") {
1056
1073
  if (!["list", "search", "details", "install"].includes(args.subcommand ?? "")) {
1057
1074
  throw unknownSubcommand("marketplace", args.subcommand);
1058
1075
  }
1059
- const marketplace = await import("./marketplace-command-BCOAAN2I.js");
1076
+ const marketplace = await import("./marketplace-command-P4IPLJ6J.js");
1060
1077
  if (args.subcommand === "list") return marketplace.runMarketplaceListCommand(args);
1061
1078
  if (args.subcommand === "search") return marketplace.runMarketplaceSearchCommand(args);
1062
1079
  if (args.subcommand === "details") return marketplace.runMarketplaceDetailsCommand(args);
@@ -1065,9 +1082,9 @@ async function run(argv) {
1065
1082
  if (command === "push") {
1066
1083
  throw unknownCommand("push");
1067
1084
  }
1068
- if (command === "validate") {
1069
- const { runValidateCommand } = await import("./validate-command-SK5FPCV7.js");
1070
- return runValidateCommand(args);
1085
+ if (command === "preflight") {
1086
+ const { runPreflightCommand } = await import("./preflight-command-K346GPTY.js");
1087
+ return runPreflightCommand(args);
1071
1088
  }
1072
1089
  if (command !== "compile" && command !== "export" && command !== "paths" && command !== "routes") {
1073
1090
  throw unknownCommand(command);
@@ -1098,7 +1115,7 @@ async function run(argv) {
1098
1115
  }
1099
1116
  async function refreshAgentGuidance() {
1100
1117
  try {
1101
- const { refreshAgentFiles } = await import("./agent-file-refresh-4W37DGXS.js");
1118
+ const { refreshAgentFiles } = await import("./agent-file-refresh-QNKN5RYD.js");
1102
1119
  const refreshed = refreshAgentFiles({
1103
1120
  projectDir: process.cwd(),
1104
1121
  sdkVersion: readVersion()
@@ -1130,7 +1147,7 @@ async function runCompile(args) {
1130
1147
  const def = await loadDefault(file);
1131
1148
  if (Xano.isXano(def)) {
1132
1149
  throw new Error(
1133
- `Module "${file}" default-exports a workspace \u2014 use \`xanots export\` (or \`xanots paths\`) for a workspace entry. \`compile\` takes a single object def (a query, function, table, \u2026) and prints its JSON artifact.`
1150
+ `Module "${file}" default-exports a workspace \u2014 use \`xanots export\` (or \`xanots routes\`) for a workspace entry. \`compile\` takes a single object def (a query, function, table, \u2026) and prints its JSON artifact.`
1134
1151
  );
1135
1152
  }
1136
1153
  if (!def || typeof def !== "object" || typeof def.name !== "string") {
@@ -1214,7 +1231,7 @@ async function runPaths(args) {
1214
1231
  return;
1215
1232
  }
1216
1233
  if (unresolved.length === 0) {
1217
- const { renderRouteManifest } = await import("./routes-manifest-SP3ZXLMR.js");
1234
+ const { renderRouteManifest } = await import("./routes-manifest-PWZHDOI5.js");
1218
1235
  const source = renderRouteManifest(
1219
1236
  resolved.map((r) => ({ name: r.name, verb: r.verb, canonical: r.canonical })),
1220
1237
  describableServers.length > 0 ? { servers: describableServers, channels: channelRows } : void 0
@@ -1226,7 +1243,7 @@ async function runPaths(args) {
1226
1243
  const current = existsSync(args.emit) ? readFileSync3(args.emit, "utf8") : void 0;
1227
1244
  if (current !== source) {
1228
1245
  throw new Error(
1229
- `--strict: ${args.emit} is ${current === void 0 ? "missing" : "out of date"}. Run \`xanots paths <entry> --emit ${args.emit}\` and commit the result \u2014 a stale route manifest keeps compiling while the endpoints have moved.`
1246
+ `--strict: ${args.emit} is ${current === void 0 ? "missing" : "out of date"}. Run \`xanots routes <entry> --emit ${args.emit}\` and commit the result \u2014 a stale route manifest keeps compiling while the endpoints have moved.`
1230
1247
  );
1231
1248
  }
1232
1249
  info(`${args.emit} is up to date (${count}).`);
@@ -1246,7 +1263,7 @@ async function runPaths(args) {
1246
1263
  if (unresolved.length > 0) {
1247
1264
  const names = unresolved.map((r) => `"${r.name}"`).join(", ");
1248
1265
  throw new Error(
1249
- `paths: cannot resolve the api group's canonical URL token for ${unresolved.length} query(ies): ${names}. Set an explicit \`apiGroup({ canonical })\`, or run \`xanots export ${file} --lock\` once (it mints a unique canonical and freezes it in xano.lock) beside the entry, then re-run \`xanots paths\`.`
1266
+ `paths: cannot resolve the api group's canonical URL token for ${unresolved.length} query(ies): ${names}. Set an explicit \`apiGroup({ canonical })\`, or run \`xanots export ${file} --lock\` once (it mints a unique canonical and freezes it in xano.lock) beside the entry, then re-run \`xanots routes\`.`
1250
1267
  );
1251
1268
  }
1252
1269
  }
@@ -1331,4 +1348,4 @@ export {
1331
1348
  exportBundleJson,
1332
1349
  compileBundle
1333
1350
  };
1334
- //# sourceMappingURL=chunk-K3YSQDXJ.js.map
1351
+ //# sourceMappingURL=chunk-RCT7UX7B.js.map
@@ -64,4 +64,4 @@ export {
64
64
  indexByIdentity,
65
65
  resolveMatch
66
66
  };
67
- //# sourceMappingURL=chunk-T4XPCJRF.js.map
67
+ //# sourceMappingURL=chunk-TCFIPDB3.js.map
@@ -33,26 +33,27 @@ import {
33
33
  obj,
34
34
  ref,
35
35
  registerKind,
36
+ reversedOperandRefusal,
36
37
  tableColumns,
37
38
  withFilters
38
- } from "./chunk-QONOJO45.js";
39
+ } from "./chunk-QK7ZQJLP.js";
39
40
  import {
40
41
  assertPathParamInputs,
41
42
  fillPathParams,
42
43
  parsePathParams
43
44
  } from "./chunk-WHOJWOSV.js";
45
+ import {
46
+ deriveGuid,
47
+ realtimeChannelSeedName,
48
+ resolveQueryRef,
49
+ resolveRef
50
+ } from "./chunk-VAF6A3YD.js";
44
51
  import {
45
52
  annotate,
46
53
  encodeStatement,
47
54
  isRegisteredStatement,
48
55
  registerStatement
49
56
  } from "./chunk-5XZ744TS.js";
50
- import {
51
- deriveGuid,
52
- realtimeChannelSeedName,
53
- resolveQueryRef,
54
- resolveRef
55
- } from "./chunk-7JDT4PBU.js";
56
57
 
57
58
  // src/statements/set-var.ts
58
59
  var SET_VAR = "mvp:set_var";
@@ -1838,6 +1839,12 @@ function expectToThrow(a) {
1838
1839
  return annotate({ name: "mvp:test_expect_to_throw", context, input: [] }, a);
1839
1840
  }
1840
1841
  function expectToMatch(a = {}) {
1842
+ const reversed = reversedOperandRefusal(a.value, a.expr);
1843
+ if (reversed) {
1844
+ throw new Error(
1845
+ `s.expect.to_match: ${reversed} \u2014 \`expr\` is the value under test and \`value\` is the pattern. (issue #298)`
1846
+ );
1847
+ }
1841
1848
  if (a.value) {
1842
1849
  const refusal = barePatternRefusal(a.value);
1843
1850
  if (refusal) throw new Error(`s.expect.to_match: ${refusal}. (issue #211)`);
@@ -3734,4 +3741,4 @@ export {
3734
3741
  workspaceKind,
3735
3742
  workspaceConfig
3736
3743
  };
3737
- //# sourceMappingURL=chunk-ZZLPTHT5.js.map
3744
+ //# sourceMappingURL=chunk-UOZMSF4C.js.map
@@ -1,180 +1,7 @@
1
- // src/util/hash.ts
2
- var utf8 = new TextEncoder();
3
- function toBytes(input) {
4
- return typeof input === "string" ? utf8.encode(input) : input;
5
- }
6
- function md5Bytes(input) {
7
- const msg = toBytes(input);
8
- const len = msg.length;
9
- const withPad = (len + 8 >>> 6) + 1;
10
- const words = new Int32Array(withPad * 16);
11
- for (let i = 0; i < len; i++) {
12
- const idx = i >> 2;
13
- words[idx] = words[idx] | msg[i] << i % 4 * 8;
14
- }
15
- const padIdx = len >> 2;
16
- words[padIdx] = words[padIdx] | 128 << len % 4 * 8;
17
- words[words.length - 2] = len * 8;
18
- let a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
19
- const add = (x, y) => x + y | 0;
20
- const rol = (n, s) => n << s | n >>> 32 - s;
21
- const cmn = (q, a0, b0, x, s, t) => add(rol(add(add(a0, q), add(x, t)), s), b0);
22
- const ff = (a0, b0, c0, d0, x, s, t) => cmn(b0 & c0 | ~b0 & d0, a0, b0, x, s, t);
23
- const gg = (a0, b0, c0, d0, x, s, t) => cmn(b0 & d0 | c0 & ~d0, a0, b0, x, s, t);
24
- const hh = (a0, b0, c0, d0, x, s, t) => cmn(b0 ^ c0 ^ d0, a0, b0, x, s, t);
25
- const ii = (a0, b0, c0, d0, x, s, t) => cmn(c0 ^ (b0 | ~d0), a0, b0, x, s, t);
26
- for (let i = 0; i < words.length; i += 16) {
27
- const oa = a, ob = b, oc = c, od = d;
28
- const w = (j) => words[i + j];
29
- a = ff(a, b, c, d, w(0), 7, -680876936);
30
- d = ff(d, a, b, c, w(1), 12, -389564586);
31
- c = ff(c, d, a, b, w(2), 17, 606105819);
32
- b = ff(b, c, d, a, w(3), 22, -1044525330);
33
- a = ff(a, b, c, d, w(4), 7, -176418897);
34
- d = ff(d, a, b, c, w(5), 12, 1200080426);
35
- c = ff(c, d, a, b, w(6), 17, -1473231341);
36
- b = ff(b, c, d, a, w(7), 22, -45705983);
37
- a = ff(a, b, c, d, w(8), 7, 1770035416);
38
- d = ff(d, a, b, c, w(9), 12, -1958414417);
39
- c = ff(c, d, a, b, w(10), 17, -42063);
40
- b = ff(b, c, d, a, w(11), 22, -1990404162);
41
- a = ff(a, b, c, d, w(12), 7, 1804603682);
42
- d = ff(d, a, b, c, w(13), 12, -40341101);
43
- c = ff(c, d, a, b, w(14), 17, -1502002290);
44
- b = ff(b, c, d, a, w(15), 22, 1236535329);
45
- a = gg(a, b, c, d, w(1), 5, -165796510);
46
- d = gg(d, a, b, c, w(6), 9, -1069501632);
47
- c = gg(c, d, a, b, w(11), 14, 643717713);
48
- b = gg(b, c, d, a, w(0), 20, -373897302);
49
- a = gg(a, b, c, d, w(5), 5, -701558691);
50
- d = gg(d, a, b, c, w(10), 9, 38016083);
51
- c = gg(c, d, a, b, w(15), 14, -660478335);
52
- b = gg(b, c, d, a, w(4), 20, -405537848);
53
- a = gg(a, b, c, d, w(9), 5, 568446438);
54
- d = gg(d, a, b, c, w(14), 9, -1019803690);
55
- c = gg(c, d, a, b, w(3), 14, -187363961);
56
- b = gg(b, c, d, a, w(8), 20, 1163531501);
57
- a = gg(a, b, c, d, w(13), 5, -1444681467);
58
- d = gg(d, a, b, c, w(2), 9, -51403784);
59
- c = gg(c, d, a, b, w(7), 14, 1735328473);
60
- b = gg(b, c, d, a, w(12), 20, -1926607734);
61
- a = hh(a, b, c, d, w(5), 4, -378558);
62
- d = hh(d, a, b, c, w(8), 11, -2022574463);
63
- c = hh(c, d, a, b, w(11), 16, 1839030562);
64
- b = hh(b, c, d, a, w(14), 23, -35309556);
65
- a = hh(a, b, c, d, w(1), 4, -1530992060);
66
- d = hh(d, a, b, c, w(4), 11, 1272893353);
67
- c = hh(c, d, a, b, w(7), 16, -155497632);
68
- b = hh(b, c, d, a, w(10), 23, -1094730640);
69
- a = hh(a, b, c, d, w(13), 4, 681279174);
70
- d = hh(d, a, b, c, w(0), 11, -358537222);
71
- c = hh(c, d, a, b, w(3), 16, -722521979);
72
- b = hh(b, c, d, a, w(6), 23, 76029189);
73
- a = hh(a, b, c, d, w(9), 4, -640364487);
74
- d = hh(d, a, b, c, w(12), 11, -421815835);
75
- c = hh(c, d, a, b, w(15), 16, 530742520);
76
- b = hh(b, c, d, a, w(2), 23, -995338651);
77
- a = ii(a, b, c, d, w(0), 6, -198630844);
78
- d = ii(d, a, b, c, w(7), 10, 1126891415);
79
- c = ii(c, d, a, b, w(14), 15, -1416354905);
80
- b = ii(b, c, d, a, w(5), 21, -57434055);
81
- a = ii(a, b, c, d, w(12), 6, 1700485571);
82
- d = ii(d, a, b, c, w(3), 10, -1894986606);
83
- c = ii(c, d, a, b, w(10), 15, -1051523);
84
- b = ii(b, c, d, a, w(1), 21, -2054922799);
85
- a = ii(a, b, c, d, w(8), 6, 1873313359);
86
- d = ii(d, a, b, c, w(15), 10, -30611744);
87
- c = ii(c, d, a, b, w(6), 15, -1560198380);
88
- b = ii(b, c, d, a, w(13), 21, 1309151649);
89
- a = ii(a, b, c, d, w(4), 6, -145523070);
90
- d = ii(d, a, b, c, w(11), 10, -1120210379);
91
- c = ii(c, d, a, b, w(2), 15, 718787259);
92
- b = ii(b, c, d, a, w(9), 21, -343485551);
93
- a = add(a, oa);
94
- b = add(b, ob);
95
- c = add(c, oc);
96
- d = add(d, od);
97
- }
98
- const out = new Uint8Array(16);
99
- [a, b, c, d].forEach((word, wi) => {
100
- for (let j = 0; j < 4; j++) out[wi * 4 + j] = word >>> j * 8 & 255;
101
- });
102
- return out;
103
- }
104
- function md5Hex(input) {
105
- return toHex(md5Bytes(input));
106
- }
107
- function sha1Bytes(input) {
108
- const msg = toBytes(input);
109
- const len = msg.length;
110
- const withLen = len + 9;
111
- const blocks = Math.ceil(withLen / 64);
112
- const total = blocks * 64;
113
- const buf = new Uint8Array(total);
114
- buf.set(msg);
115
- buf[len] = 128;
116
- const bitLen = len * 8;
117
- buf[total - 4] = bitLen >>> 24 & 255;
118
- buf[total - 3] = bitLen >>> 16 & 255;
119
- buf[total - 2] = bitLen >>> 8 & 255;
120
- buf[total - 1] = bitLen & 255;
121
- let h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878, h4 = -1009589776;
122
- const w = new Int32Array(80);
123
- const rol = (n, s) => n << s | n >>> 32 - s;
124
- for (let i = 0; i < total; i += 64) {
125
- for (let j = 0; j < 16; j++) {
126
- const k = i + j * 4;
127
- w[j] = buf[k] << 24 | buf[k + 1] << 16 | buf[k + 2] << 8 | buf[k + 3];
128
- }
129
- for (let j = 16; j < 80; j++) w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
130
- let a = h0, b = h1, c = h2, d = h3, e = h4;
131
- for (let j = 0; j < 80; j++) {
132
- let f, k;
133
- if (j < 20) {
134
- f = b & c | ~b & d;
135
- k = 1518500249;
136
- } else if (j < 40) {
137
- f = b ^ c ^ d;
138
- k = 1859775393;
139
- } else if (j < 60) {
140
- f = b & c | b & d | c & d;
141
- k = -1894007588;
142
- } else {
143
- f = b ^ c ^ d;
144
- k = -899497514;
145
- }
146
- const t = rol(a, 5) + f + e + k + w[j] | 0;
147
- e = d;
148
- d = c;
149
- c = rol(b, 30);
150
- b = a;
151
- a = t;
152
- }
153
- h0 = h0 + a | 0;
154
- h1 = h1 + b | 0;
155
- h2 = h2 + c | 0;
156
- h3 = h3 + d | 0;
157
- h4 = h4 + e | 0;
158
- }
159
- const out = new Uint8Array(20);
160
- [h0, h1, h2, h3, h4].forEach((h, hi) => {
161
- out[hi * 4] = h >>> 24 & 255;
162
- out[hi * 4 + 1] = h >>> 16 & 255;
163
- out[hi * 4 + 2] = h >>> 8 & 255;
164
- out[hi * 4 + 3] = h & 255;
165
- });
166
- return out;
167
- }
168
- function toHex(bytes) {
169
- let s = "";
170
- for (const b of bytes) s += b.toString(16).padStart(2, "0");
171
- return s;
172
- }
173
- function randomBytes(n) {
174
- const out = new Uint8Array(n);
175
- globalThis.crypto.getRandomValues(out);
176
- return out;
177
- }
1
+ import {
2
+ md5Hex,
3
+ randomBytes
4
+ } from "./chunk-OHX6MIUZ.js";
178
5
 
179
6
  // src/lock/store.ts
180
7
  var STORE_KEY = /* @__PURE__ */ Symbol.for("xanots.lock.overrides");
@@ -712,7 +539,6 @@ function mergeObserved(lock, observed) {
712
539
  }
713
540
 
714
541
  export {
715
- sha1Bytes,
716
542
  seedLockOverrides,
717
543
  resetLockOverrides,
718
544
  isLockSeeded,
@@ -747,4 +573,4 @@ export {
747
573
  adoptFromBundle,
748
574
  mergeObserved
749
575
  };
750
- //# sourceMappingURL=chunk-7JDT4PBU.js.map
576
+ //# sourceMappingURL=chunk-VAF6A3YD.js.map
@@ -152,7 +152,6 @@ async function waitUntilReady(auth, opts, cfg = {}) {
152
152
  }
153
153
 
154
154
  export {
155
- tenantBaseUrl,
156
155
  isExpired,
157
156
  isEphemeralDisabled,
158
157
  createEphemeral,
@@ -163,4 +162,4 @@ export {
163
162
  impersonateEphemeral,
164
163
  waitUntilReady
165
164
  };
166
- //# sourceMappingURL=chunk-6DHBYBTO.js.map
165
+ //# sourceMappingURL=chunk-VNQM3V2C.js.map