@xanots/sdk 0.0.2 → 0.0.3-beta.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 (40) hide show
  1. package/README.md +10 -1
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/{agent-file-refresh-7XCACU34.js → agent-file-refresh-J3KY54E5.js} +3 -2
  4. package/dist/bin.js +7 -7
  5. package/dist/chunk-4HKZH6YK.js +307 -0
  6. package/dist/chunk-6DHJVLYP.js +2044 -0
  7. package/dist/{chunk-MUDLJG2O.js → chunk-CBL57QBQ.js} +25 -15
  8. package/dist/{chunk-5YTBTF25.js → chunk-EWFHDJY5.js} +2 -2
  9. package/dist/{chunk-IZW6MK3U.js → chunk-FY6LXRR6.js} +2 -2
  10. package/dist/{chunk-ZPEY5WE4.js → chunk-HKAX756N.js} +3 -3
  11. package/dist/{chunk-XLD4BUTF.js → chunk-MWLNBSTY.js} +2 -2
  12. package/dist/{chunk-YYRDLFSJ.js → chunk-QO4I5OYF.js} +40 -2
  13. package/dist/{chunk-UVLVQWWF.js → chunk-VVXPK6SE.js} +62 -20
  14. package/dist/{chunk-VKFQJEMW.js → chunk-WRYT2PAX.js} +14 -371
  15. package/dist/{chunk-ODNMVJ6H.js → chunk-YZ4GU6F5.js} +283 -252
  16. package/dist/cli.d.ts +22 -0
  17. package/dist/cli.js +5 -5
  18. package/dist/{codegen-command-RY2GWDLX.js → codegen-command-EXLKZ2ZI.js} +12 -10
  19. package/dist/{completion-TIPPZN7H.js → completion-2PVZK6YX.js} +2 -2
  20. package/dist/{deploy-command-DSISLUW5.js → deploy-command-SXX6RJWM.js} +13 -13
  21. package/dist/{env-target-7C2GKBCY.js → env-target-3EGIPR4D.js} +2 -2
  22. package/dist/{ephemeral-command-5K573ZSG.js → ephemeral-command-OGOYP7D6.js} +15 -15
  23. package/dist/{init-command-4AWL6CLW.js → init-command-6DGXEVZD.js} +10 -8
  24. package/dist/internal.js +1 -1
  25. package/dist/{lock-commands-7Q5LNZKL.js → lock-commands-R22J54XV.js} +9 -9
  26. package/dist/{marketplace-command-RATXTKXN.js → marketplace-command-XJIWL4YP.js} +6 -6
  27. package/dist/meta-client-OW5WKWW7.js +1 -1
  28. package/dist/node.js +8 -8
  29. package/dist/{release-command-QXLRJMY7.js → release-command-6PLMLGDK.js} +15 -15
  30. package/dist/sandbox-export-command-QCJY4GMV.js +1 -1
  31. package/dist/scaffold.d.ts +1896 -0
  32. package/dist/scaffold.js +101 -0
  33. package/dist/{test-command-BOLIU57E.js → test-command-LLPXKT35.js} +4 -4
  34. package/dist/{validate-command-SYCFEYZN.js → validate-command-WAT3ZJT3.js} +7 -7
  35. package/dist/{workspace-command-TOB2AJ6X.js → workspace-command-JKMI7RZ4.js} +13 -11
  36. package/dist/workspace-export-AJMGN3CQ.js +1 -1
  37. package/llms-full.txt +1 -1
  38. package/llms.txt +1 -1
  39. package/manifest.json +141 -1
  40. package/package.json +7 -1
@@ -20,19 +20,16 @@ import {
20
20
  exportWorkspaceBundle
21
21
  } from "./chunk-QTNO2WD6.js";
22
22
  import {
23
- codegenLanding,
24
- describeOrigin,
25
23
  projectShellFiles,
26
- renderCodegenMarker,
27
- renderCodegenReadme,
28
24
  resolveFrontendPreset,
25
+ resolveThemeChoice,
29
26
  sanitizeAppName
30
- } from "./chunk-ODNMVJ6H.js";
27
+ } from "./chunk-4HKZH6YK.js";
31
28
  import {
32
29
  XANO_DIR,
33
30
  resolveAiPresets,
34
31
  scaffoldProject
35
- } from "./chunk-VKFQJEMW.js";
32
+ } from "./chunk-WRYT2PAX.js";
36
33
  import {
37
34
  getAccessToken
38
35
  } from "./chunk-C56BC2FY.js";
@@ -42,6 +39,12 @@ import {
42
39
  import {
43
40
  raw
44
41
  } from "./chunk-LU7TRWMC.js";
42
+ import {
43
+ codegenLanding,
44
+ describeOrigin,
45
+ renderCodegenMarker,
46
+ renderCodegenReadme
47
+ } from "./chunk-YZ4GU6F5.js";
45
48
  import {
46
49
  FIELD_METHODS,
47
50
  STATEMENT_SURFACES,
@@ -68,10 +71,10 @@ import {
68
71
  import {
69
72
  loadDefault,
70
73
  readVersion
71
- } from "./chunk-UVLVQWWF.js";
74
+ } from "./chunk-VVXPK6SE.js";
72
75
  import {
73
76
  UsageError
74
- } from "./chunk-IZW6MK3U.js";
77
+ } from "./chunk-FY6LXRR6.js";
75
78
  import {
76
79
  blank,
77
80
  detail,
@@ -6651,7 +6654,7 @@ async function fetchBundle(args, source) {
6651
6654
  );
6652
6655
  }
6653
6656
  const auth3 = await getAccessToken(args);
6654
- const { resolveLive, fetchEphemeralBundle } = await import("./ephemeral-command-5K573ZSG.js");
6657
+ const { resolveLive, fetchEphemeralBundle } = await import("./ephemeral-command-OGOYP7D6.js");
6655
6658
  const summary = await resolveLive(auth3, auth3.workspaceId, name);
6656
6659
  step(`Reading ephemeral "${name}"`);
6657
6660
  return {
@@ -6757,13 +6760,19 @@ async function runCodegenCommand(args, source) {
6757
6760
  const appName = sanitizeAppName(args.name ?? basename(out2));
6758
6761
  const vars = { appName, sdkVersion: readVersion() };
6759
6762
  const preset = await resolveFrontendPreset(args.framework);
6763
+ const choice = await resolveThemeChoice(args);
6760
6764
  const presets = await resolveAiPresets(args.ai);
6761
6765
  const project = decodeBundle(bundle);
6762
6766
  const files = [
6763
- ...projectShellFiles(vars, preset, {
6764
- readme: renderCodegenReadme(vars, origin, envNames(bundle.payload ?? {}), preset),
6765
- landing: codegenLanding(vars, origin)
6766
- }),
6767
+ ...projectShellFiles(
6768
+ vars,
6769
+ preset,
6770
+ {
6771
+ readme: renderCodegenReadme(vars, origin, envNames(bundle.payload ?? {}), preset),
6772
+ landing: codegenLanding(vars, origin)
6773
+ },
6774
+ choice
6775
+ ),
6767
6776
  ...placeGeneratedFiles(project),
6768
6777
  {
6769
6778
  path: `${XANO_DIR}/.xanots-codegen.json`,
@@ -6780,7 +6789,8 @@ async function runCodegenCommand(args, source) {
6780
6789
  noInstall: args.noInstall,
6781
6790
  regenerable: true,
6782
6791
  sdkVersion: readVersion(),
6783
- frontend: preset
6792
+ frontend: preset,
6793
+ theme: choice
6784
6794
  });
6785
6795
  let verified = null;
6786
6796
  if (!args.noVerify) {
@@ -6913,4 +6923,4 @@ export {
6913
6923
  verifyCrashEntry,
6914
6924
  blameGeneratedFile
6915
6925
  };
6916
- //# sourceMappingURL=chunk-MUDLJG2O.js.map
6926
+ //# sourceMappingURL=chunk-CBL57QBQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  UsageError
3
- } from "./chunk-IZW6MK3U.js";
3
+ } from "./chunk-FY6LXRR6.js";
4
4
  import {
5
5
  style
6
6
  } from "./chunk-EZG76F7R.js";
@@ -26,4 +26,4 @@ async function confirm(message, opts) {
26
26
  export {
27
27
  confirm
28
28
  };
29
- //# sourceMappingURL=chunk-5YTBTF25.js.map
29
+ //# sourceMappingURL=chunk-EWFHDJY5.js.map
@@ -19,7 +19,7 @@ import {
19
19
  liveSubcommandNames,
20
20
  renderArgs,
21
21
  suggest
22
- } from "./chunk-YYRDLFSJ.js";
22
+ } from "./chunk-QO4I5OYF.js";
23
23
 
24
24
  // src/emit/help.ts
25
25
  function table(rows, s, indent = " ", fixedWidth) {
@@ -245,4 +245,4 @@ export {
245
245
  reportFailure,
246
246
  exitCodeOf
247
247
  };
248
- //# sourceMappingURL=chunk-IZW6MK3U.js.map
248
+ //# sourceMappingURL=chunk-FY6LXRR6.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  compileBundle
3
- } from "./chunk-UVLVQWWF.js";
3
+ } from "./chunk-VVXPK6SE.js";
4
4
  import {
5
5
  missingArgument
6
- } from "./chunk-IZW6MK3U.js";
6
+ } from "./chunk-FY6LXRR6.js";
7
7
 
8
8
  // src/emit/bundle-input.ts
9
9
  import { existsSync, readFileSync } from "fs";
@@ -34,4 +34,4 @@ export {
34
34
  assertBundleInput,
35
35
  loadBundleText
36
36
  };
37
- //# sourceMappingURL=chunk-ZPEY5WE4.js.map
37
+ //# sourceMappingURL=chunk-HKAX756N.js.map
@@ -66,7 +66,7 @@ async function resolveMetaTarget(auth, opts, deps = {}) {
66
66
  case "sandbox":
67
67
  return resolveSandbox(auth);
68
68
  case "ephemeral": {
69
- const resolveLive = deps.resolveLive ?? (await import("./ephemeral-command-5K573ZSG.js")).resolveLive;
69
+ const resolveLive = deps.resolveLive ?? (await import("./ephemeral-command-OGOYP7D6.js")).resolveLive;
70
70
  return resolveEphemeral(auth, opts.name, { ...deps, resolveLive });
71
71
  }
72
72
  }
@@ -75,4 +75,4 @@ async function resolveMetaTarget(auth, opts, deps = {}) {
75
75
  export {
76
76
  resolveMetaTarget
77
77
  };
78
- //# sourceMappingURL=chunk-XLD4BUTF.js.map
78
+ //# sourceMappingURL=chunk-MWLNBSTY.js.map
@@ -87,6 +87,37 @@ var FLAGS = {
87
87
  summary: "Frontend framework to scaffold: react (default), svelte",
88
88
  values: ["react", "svelte"]
89
89
  },
90
+ theme: {
91
+ spec: "--theme <id>",
92
+ summary: "shadcn/ui theme \u2014 <base> or <base>-<accent> (e.g. zinc-blue), a registry theme URL, or a registry item JSON path; an unknown id lists every base and accent",
93
+ // Completion offers the base colors alone — the accent half multiplies them
94
+ // into 126 values, which is a menu no one reads at a tab-complete prompt.
95
+ // `--help` carries the accent list; this carries the starting points.
96
+ values: ["neutral", "stone", "zinc", "mauve", "olive", "mist", "taupe"]
97
+ },
98
+ radius: {
99
+ spec: "--radius <len>",
100
+ summary: "Corner radius for the scaffold's theme \u2014 a number of rem (0, 0.5, 1) or a CSS length"
101
+ },
102
+ dark: {
103
+ spec: "--dark <mode>",
104
+ summary: "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off",
105
+ values: ["system", "toggle", "off"]
106
+ },
107
+ font: {
108
+ spec: "--font <id>",
109
+ summary: "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
110
+ },
111
+ "font-mono": { spec: "--font-mono <id>", summary: "Code typeface (default: the system mono stack)" },
112
+ "font-heading": {
113
+ spec: "--font-heading <id>",
114
+ summary: "Heading typeface, bound to h1\u2013h6 (default: inherits the body face)"
115
+ },
116
+ icons: {
117
+ spec: "--icons <id>",
118
+ summary: "Icon set: lucide (default), tabler, phosphor",
119
+ values: ["lucide", "tabler", "phosphor"]
120
+ },
90
121
  ai: {
91
122
  spec: "--ai <preset>",
92
123
  summary: "AI instruction files to scaffold: claude, codex, cursor, none",
@@ -123,6 +154,13 @@ var COMPILE = ["lock", "frozen-lock", "strict"];
123
154
  var SCAFFOLD = [
124
155
  { key: "name", summary: "Project name (default: the target directory's basename)" },
125
156
  "framework",
157
+ "theme",
158
+ "radius",
159
+ "dark",
160
+ "font",
161
+ "font-mono",
162
+ "font-heading",
163
+ "icons",
126
164
  "ai",
127
165
  "force",
128
166
  "no-install"
@@ -176,7 +214,7 @@ var COMMANDS = {
176
214
  summary: "Scaffold a new XanoTS project",
177
215
  args: [{ name: "dir", required: false, path: true }],
178
216
  flags: [...SCAFFOLD],
179
- example: "xanots init my-app --ai claude"
217
+ example: "xanots init my-app --theme zinc-blue --dark toggle --ai claude"
180
218
  },
181
219
  marketplace: {
182
220
  group: "Author",
@@ -599,4 +637,4 @@ export {
599
637
  liveSubcommandNames,
600
638
  suggest
601
639
  };
602
- //# sourceMappingURL=chunk-YYRDLFSJ.js.map
640
+ //# sourceMappingURL=chunk-QO4I5OYF.js.map
@@ -9,7 +9,11 @@ import {
9
9
  unknownFlag,
10
10
  unknownHelpTopic,
11
11
  unknownSubcommand
12
- } from "./chunk-IZW6MK3U.js";
12
+ } from "./chunk-FY6LXRR6.js";
13
+ import {
14
+ readLockFile,
15
+ writeLockFile
16
+ } from "./chunk-HJPTWBLH.js";
13
17
  import {
14
18
  detail,
15
19
  info,
@@ -26,7 +30,7 @@ import {
26
30
  getSubcommand,
27
31
  isCommand,
28
32
  suggest
29
- } from "./chunk-YYRDLFSJ.js";
33
+ } from "./chunk-QO4I5OYF.js";
30
34
  import {
31
35
  FILTER_NAMES,
32
36
  SEED_FILE,
@@ -39,10 +43,6 @@ import {
39
43
  serializeBundle,
40
44
  tableColumns
41
45
  } from "./chunk-5L4X5LS6.js";
42
- import {
43
- readLockFile,
44
- writeLockFile
45
- } from "./chunk-HJPTWBLH.js";
46
46
  import {
47
47
  WORKSPACE_KEY,
48
48
  createLockContext,
@@ -329,6 +329,13 @@ function parseArgs(argv) {
329
329
  let name;
330
330
  const ai = [];
331
331
  let framework;
332
+ let theme;
333
+ let radius;
334
+ let dark;
335
+ let font;
336
+ let fontMono;
337
+ let fontHeading;
338
+ let icons;
332
339
  let force = false;
333
340
  let noInstall = false;
334
341
  let noVerify = false;
@@ -470,6 +477,34 @@ function parseArgs(argv) {
470
477
  framework = rest[++i];
471
478
  } else if (arg.startsWith("--framework=")) {
472
479
  framework = arg.slice("--framework=".length);
480
+ } else if (arg === "--theme") {
481
+ theme = rest[++i];
482
+ } else if (arg.startsWith("--theme=")) {
483
+ theme = arg.slice("--theme=".length);
484
+ } else if (arg === "--radius") {
485
+ radius = rest[++i];
486
+ } else if (arg.startsWith("--radius=")) {
487
+ radius = arg.slice("--radius=".length);
488
+ } else if (arg === "--dark") {
489
+ dark = rest[++i];
490
+ } else if (arg.startsWith("--dark=")) {
491
+ dark = arg.slice("--dark=".length);
492
+ } else if (arg === "--font-mono") {
493
+ fontMono = rest[++i];
494
+ } else if (arg.startsWith("--font-mono=")) {
495
+ fontMono = arg.slice("--font-mono=".length);
496
+ } else if (arg === "--font-heading") {
497
+ fontHeading = rest[++i];
498
+ } else if (arg.startsWith("--font-heading=")) {
499
+ fontHeading = arg.slice("--font-heading=".length);
500
+ } else if (arg === "--font") {
501
+ font = rest[++i];
502
+ } else if (arg.startsWith("--font=")) {
503
+ font = arg.slice("--font=".length);
504
+ } else if (arg === "--icons") {
505
+ icons = rest[++i];
506
+ } else if (arg.startsWith("--icons=")) {
507
+ icons = arg.slice("--icons=".length);
473
508
  } else if (arg === "--ai" || arg.startsWith("--ai=")) {
474
509
  const raw = arg === "--ai" ? rest[++i] : arg.slice("--ai=".length);
475
510
  for (const p of (raw ?? "").split(",")) {
@@ -577,6 +612,13 @@ function parseArgs(argv) {
577
612
  force,
578
613
  noInstall,
579
614
  framework,
615
+ theme,
616
+ radius,
617
+ dark,
618
+ font,
619
+ fontMono,
620
+ fontHeading,
621
+ icons,
580
622
  noVerify,
581
623
  requireMicroservices,
582
624
  report,
@@ -790,11 +832,11 @@ async function run(argv) {
790
832
  return;
791
833
  }
792
834
  if (command === "init") {
793
- const { runInitCommand } = await import("./init-command-4AWL6CLW.js");
835
+ const { runInitCommand } = await import("./init-command-6DGXEVZD.js");
794
836
  return runInitCommand(args);
795
837
  }
796
838
  if (command === "completion") {
797
- const { isCompletionShell, runCompletionCommand, COMPLETION_SHELLS } = await import("./completion-TIPPZN7H.js");
839
+ const { isCompletionShell, runCompletionCommand, COMPLETION_SHELLS } = await import("./completion-2PVZK6YX.js");
798
840
  const shell = args.positionals[0];
799
841
  if (shell === void 0 || !isCompletionShell(shell)) {
800
842
  throw new UsageError(
@@ -805,7 +847,7 @@ async function run(argv) {
805
847
  return runCompletionCommand(shell);
806
848
  }
807
849
  if (command === "lock") {
808
- const { runLockCommand } = await import("./lock-commands-7Q5LNZKL.js");
850
+ const { runLockCommand } = await import("./lock-commands-R22J54XV.js");
809
851
  return runLockCommand(args);
810
852
  }
811
853
  if (command === "login") {
@@ -817,15 +859,15 @@ async function run(argv) {
817
859
  return runLogoutCommand(args);
818
860
  }
819
861
  if (command === "deploy") {
820
- const { runDeployCommand } = await import("./deploy-command-DSISLUW5.js");
862
+ const { runDeployCommand } = await import("./deploy-command-SXX6RJWM.js");
821
863
  return runDeployCommand(args);
822
864
  }
823
865
  if (command === "ephemeral") {
824
- const { runEphemeralCommand } = await import("./ephemeral-command-5K573ZSG.js");
866
+ const { runEphemeralCommand } = await import("./ephemeral-command-OGOYP7D6.js");
825
867
  return runEphemeralCommand(args);
826
868
  }
827
869
  if (command === "release") {
828
- const { runReleaseCommand } = await import("./release-command-QXLRJMY7.js");
870
+ const { runReleaseCommand } = await import("./release-command-6PLMLGDK.js");
829
871
  return runReleaseCommand(args);
830
872
  }
831
873
  if (command === "sandbox") {
@@ -841,21 +883,21 @@ async function run(argv) {
841
883
  return runSandboxExportCommand(args);
842
884
  }
843
885
  if (args.subcommand === "codegen") {
844
- const { runCodegenCommand } = await import("./codegen-command-RY2GWDLX.js");
886
+ const { runCodegenCommand } = await import("./codegen-command-EXLKZ2ZI.js");
845
887
  return runCodegenCommand(args, { kind: "sandbox" });
846
888
  }
847
889
  throw unknownSubcommand("sandbox", args.subcommand);
848
890
  }
849
891
  if (command === "test") {
850
- const { runTestCommand } = await import("./test-command-BOLIU57E.js");
892
+ const { runTestCommand } = await import("./test-command-LLPXKT35.js");
851
893
  return runTestCommand(args);
852
894
  }
853
895
  if (command === "workspace") {
854
- const { runWorkspaceCommand } = await import("./workspace-command-TOB2AJ6X.js");
896
+ const { runWorkspaceCommand } = await import("./workspace-command-JKMI7RZ4.js");
855
897
  return runWorkspaceCommand(args);
856
898
  }
857
899
  if (command === "codegen") {
858
- const { runCodegenCommand } = await import("./codegen-command-RY2GWDLX.js");
900
+ const { runCodegenCommand } = await import("./codegen-command-EXLKZ2ZI.js");
859
901
  return runCodegenCommand(args, { kind: "file" });
860
902
  }
861
903
  if (command === "profile") {
@@ -873,7 +915,7 @@ async function run(argv) {
873
915
  if (!["list", "search", "details", "install"].includes(args.subcommand ?? "")) {
874
916
  throw unknownSubcommand("marketplace", args.subcommand);
875
917
  }
876
- const marketplace = await import("./marketplace-command-RATXTKXN.js");
918
+ const marketplace = await import("./marketplace-command-XJIWL4YP.js");
877
919
  if (args.subcommand === "list") return marketplace.runMarketplaceListCommand(args);
878
920
  if (args.subcommand === "search") return marketplace.runMarketplaceSearchCommand(args);
879
921
  if (args.subcommand === "details") return marketplace.runMarketplaceDetailsCommand(args);
@@ -883,7 +925,7 @@ async function run(argv) {
883
925
  throw unknownCommand("push");
884
926
  }
885
927
  if (command === "validate") {
886
- const { runValidateCommand } = await import("./validate-command-SYCFEYZN.js");
928
+ const { runValidateCommand } = await import("./validate-command-WAT3ZJT3.js");
887
929
  return runValidateCommand(args);
888
930
  }
889
931
  if (command !== "compile" && command !== "export" && command !== "paths" && command !== "routes") {
@@ -915,7 +957,7 @@ async function run(argv) {
915
957
  }
916
958
  async function refreshAgentGuidance() {
917
959
  try {
918
- const { refreshAgentFiles } = await import("./agent-file-refresh-7XCACU34.js");
960
+ const { refreshAgentFiles } = await import("./agent-file-refresh-J3KY54E5.js");
919
961
  const refreshed = refreshAgentFiles({
920
962
  projectDir: process.cwd(),
921
963
  sdkVersion: readVersion()
@@ -1143,4 +1185,4 @@ export {
1143
1185
  exportBundleJson,
1144
1186
  compileBundle
1145
1187
  };
1146
- //# sourceMappingURL=chunk-UVLVQWWF.js.map
1188
+ //# sourceMappingURL=chunk-VVXPK6SE.js.map