@xanots/sdk 0.0.2 → 0.0.3

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 (43) hide show
  1. package/README.md +11 -2
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/{agent-file-refresh-7XCACU34.js → agent-file-refresh-6M5M7T24.js} +4 -3
  4. package/dist/bin.js +7 -7
  5. package/dist/{chunk-MUDLJG2O.js → chunk-2V4YE6QC.js} +25 -15
  6. package/dist/{chunk-UVLVQWWF.js → chunk-3NFUWXOC.js} +70 -20
  7. package/dist/chunk-6DHJVLYP.js +2044 -0
  8. package/dist/{chunk-IZW6MK3U.js → chunk-6USV65XA.js} +2 -2
  9. package/dist/{chunk-XLD4BUTF.js → chunk-BT2CSEC5.js} +2 -2
  10. package/dist/{chunk-VKFQJEMW.js → chunk-CMZLPTGW.js} +37 -406
  11. package/dist/{chunk-YYRDLFSJ.js → chunk-DYCLVQXW.js} +50 -3
  12. package/dist/chunk-HQ2CBRVI.js +530 -0
  13. package/dist/{chunk-ZPEY5WE4.js → chunk-W2G2WPTB.js} +3 -3
  14. package/dist/chunk-WUSKBXXD.js +25 -0
  15. package/dist/{chunk-ODNMVJ6H.js → chunk-YZ4GU6F5.js} +283 -252
  16. package/dist/{chunk-5YTBTF25.js → chunk-ZO3HJOCJ.js} +2 -2
  17. package/dist/cli.d.ts +31 -0
  18. package/dist/cli.js +5 -5
  19. package/dist/{codegen-command-RY2GWDLX.js → codegen-command-FIADGXRN.js} +13 -11
  20. package/dist/{completion-TIPPZN7H.js → completion-BKAFCZBE.js} +2 -2
  21. package/dist/{deploy-command-DSISLUW5.js → deploy-command-4R6BYC6G.js} +13 -13
  22. package/dist/{env-target-7C2GKBCY.js → env-target-XWS2ZZ2Y.js} +2 -2
  23. package/dist/{ephemeral-command-5K573ZSG.js → ephemeral-command-JL4TPIRQ.js} +15 -15
  24. package/dist/{init-command-4AWL6CLW.js → init-command-LOK75W64.js} +11 -9
  25. package/dist/internal.js +4 -3
  26. package/dist/{lock-commands-7Q5LNZKL.js → lock-commands-XOYS75YQ.js} +9 -9
  27. package/dist/{marketplace-command-RATXTKXN.js → marketplace-command-UVV3XAOL.js} +6 -6
  28. package/dist/meta-client-OW5WKWW7.js +1 -1
  29. package/dist/node.js +8 -8
  30. package/dist/{release-command-QXLRJMY7.js → release-command-HZUY2XZX.js} +15 -15
  31. package/dist/sandbox-export-command-QCJY4GMV.js +1 -1
  32. package/dist/scaffold.d.ts +1896 -0
  33. package/dist/scaffold.js +101 -0
  34. package/dist/{test-command-BOLIU57E.js → test-command-72Y5S22H.js} +4 -4
  35. package/dist/{validate-command-SYCFEYZN.js → validate-command-KDGH537H.js} +7 -7
  36. package/dist/{workspace-command-TOB2AJ6X.js → workspace-command-ICSI6PKO.js} +13 -11
  37. package/dist/workspace-export-AJMGN3CQ.js +1 -1
  38. package/llms/kinds-agent-mcp.md +2 -1
  39. package/llms-full.txt +3 -2
  40. package/llms.txt +1 -1
  41. package/manifest.json +145 -1
  42. package/package.json +7 -1
  43. package/dist/chunk-47WDWMBJ.js +0 -14
@@ -0,0 +1,101 @@
1
+ import {
2
+ DEFAULT_FRAMEWORK,
3
+ FRAMEWORKS,
4
+ allFrontendPresets,
5
+ findFrontendPreset,
6
+ renderIndexCss,
7
+ resolveFrameworkFlag
8
+ } from "./chunk-YZ4GU6F5.js";
9
+ import {
10
+ ACCENTS,
11
+ ACCENT_TOKENS,
12
+ BASE_COLORS,
13
+ BASE_TOKENS,
14
+ CURATED_THEMES,
15
+ DARK_MODES,
16
+ DEFAULT_BASE_COLOR,
17
+ DEFAULT_DARK_MODE,
18
+ DEFAULT_ICON_LIBRARY,
19
+ DEFAULT_RADIUS,
20
+ FONTS,
21
+ FONT_IDS,
22
+ ICON_LIBRARIES,
23
+ TOKEN_ORDER,
24
+ allIconLibraries,
25
+ buildTheme,
26
+ colorTokens,
27
+ curatedThemes,
28
+ defaultIconLibrary,
29
+ defaultTheme,
30
+ defaultThemeChoice,
31
+ describeFonts,
32
+ findFont,
33
+ findIconLibrary,
34
+ fontDependencies,
35
+ fontImports,
36
+ fontThemeVars,
37
+ iconLibraryOf,
38
+ isAccent,
39
+ isBaseColor,
40
+ normalizeRadius,
41
+ orderedTokens,
42
+ parseColor,
43
+ resolveDarkModeFlag,
44
+ resolveFontFlag,
45
+ resolveIconsFlag,
46
+ resolveThemeFlag,
47
+ themeFromRegistryItem,
48
+ themeGuidanceSection,
49
+ themeSwatch,
50
+ withRadius
51
+ } from "./chunk-6DHJVLYP.js";
52
+ export {
53
+ ACCENTS,
54
+ ACCENT_TOKENS,
55
+ BASE_COLORS,
56
+ BASE_TOKENS,
57
+ CURATED_THEMES,
58
+ DARK_MODES,
59
+ DEFAULT_BASE_COLOR,
60
+ DEFAULT_DARK_MODE,
61
+ DEFAULT_FRAMEWORK,
62
+ DEFAULT_ICON_LIBRARY,
63
+ DEFAULT_RADIUS,
64
+ FONTS,
65
+ FONT_IDS,
66
+ FRAMEWORKS,
67
+ ICON_LIBRARIES,
68
+ TOKEN_ORDER,
69
+ allFrontendPresets,
70
+ allIconLibraries,
71
+ buildTheme,
72
+ colorTokens,
73
+ curatedThemes,
74
+ defaultIconLibrary,
75
+ defaultTheme,
76
+ defaultThemeChoice,
77
+ describeFonts,
78
+ findFont,
79
+ findFrontendPreset,
80
+ findIconLibrary,
81
+ fontDependencies,
82
+ fontImports,
83
+ fontThemeVars,
84
+ iconLibraryOf,
85
+ isAccent,
86
+ isBaseColor,
87
+ normalizeRadius,
88
+ orderedTokens,
89
+ parseColor,
90
+ renderIndexCss,
91
+ resolveDarkModeFlag,
92
+ resolveFontFlag,
93
+ resolveFrameworkFlag,
94
+ resolveIconsFlag,
95
+ resolveThemeFlag,
96
+ themeFromRegistryItem,
97
+ themeGuidanceSection,
98
+ themeSwatch,
99
+ withRadius
100
+ };
101
+ //# sourceMappingURL=scaffold.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveMetaTarget
3
- } from "./chunk-XLD4BUTF.js";
3
+ } from "./chunk-BT2CSEC5.js";
4
4
  import "./chunk-DGSF2Q5H.js";
5
5
  import "./chunk-7DKX2SPN.js";
6
6
  import "./chunk-NDZFBZHC.js";
@@ -19,7 +19,7 @@ import {
19
19
  import "./chunk-7REDODS2.js";
20
20
  import {
21
21
  unknownSubcommand
22
- } from "./chunk-IZW6MK3U.js";
22
+ } from "./chunk-6USV65XA.js";
23
23
  import {
24
24
  blank,
25
25
  detail,
@@ -28,8 +28,8 @@ import {
28
28
  success,
29
29
  warn
30
30
  } from "./chunk-EZG76F7R.js";
31
- import "./chunk-YYRDLFSJ.js";
32
31
  import "./chunk-GNPVYOPB.js";
32
+ import "./chunk-DYCLVQXW.js";
33
33
 
34
34
  // src/deploy/tests.ts
35
35
  var TIMEOUT_MS = 12e4;
@@ -380,4 +380,4 @@ export {
380
380
  runSuite,
381
381
  runTestCommand
382
382
  };
383
- //# sourceMappingURL=test-command-BOLIU57E.js.map
383
+ //# sourceMappingURL=test-command-72Y5S22H.js.map
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  assertBundleInput,
3
3
  loadBundleText
4
- } from "./chunk-ZPEY5WE4.js";
5
- import "./chunk-UVLVQWWF.js";
6
- import "./chunk-IZW6MK3U.js";
4
+ } from "./chunk-W2G2WPTB.js";
5
+ import "./chunk-3NFUWXOC.js";
6
+ import "./chunk-6USV65XA.js";
7
+ import "./chunk-HJPTWBLH.js";
7
8
  import {
8
9
  blank,
9
10
  detail,
@@ -12,13 +13,12 @@ import {
12
13
  success,
13
14
  warn
14
15
  } from "./chunk-EZG76F7R.js";
16
+ import "./chunk-GNPVYOPB.js";
15
17
  import "./chunk-55VHDNW5.js";
16
- import "./chunk-YYRDLFSJ.js";
18
+ import "./chunk-DYCLVQXW.js";
17
19
  import "./chunk-5L4X5LS6.js";
18
20
  import "./chunk-WHOJWOSV.js";
19
21
  import "./chunk-5XZ744TS.js";
20
- import "./chunk-HJPTWBLH.js";
21
- import "./chunk-GNPVYOPB.js";
22
22
  import "./chunk-4HT3BNZ7.js";
23
23
 
24
24
  // src/emit/validate-command.ts
@@ -119,4 +119,4 @@ function fmt(v) {
119
119
  export {
120
120
  runValidateCommand
121
121
  };
122
- //# sourceMappingURL=validate-command-SYCFEYZN.js.map
122
+ //# sourceMappingURL=validate-command-KDGH537H.js.map
@@ -1,17 +1,13 @@
1
1
  import {
2
2
  fetchWorkspaceBundle,
3
3
  runCodegenCommand
4
- } from "./chunk-MUDLJG2O.js";
4
+ } from "./chunk-2V4YE6QC.js";
5
5
  import "./chunk-P3TTMWUP.js";
6
6
  import {
7
7
  resolveOutputTarget
8
8
  } from "./chunk-XQ22GLYS.js";
9
9
  import "./chunk-QTNO2WD6.js";
10
10
  import "./chunk-ZUTSMMAG.js";
11
- import "./chunk-ODNMVJ6H.js";
12
- import "./chunk-VKFQJEMW.js";
13
- import "./chunk-47WDWMBJ.js";
14
- import "./chunk-X4DVXBFY.js";
15
11
  import "./chunk-7DKX2SPN.js";
16
12
  import {
17
13
  printMicroserviceSection,
@@ -21,6 +17,9 @@ import {
21
17
  isMachineOutput,
22
18
  writeJson
23
19
  } from "./chunk-NUQCEOKA.js";
20
+ import "./chunk-HQ2CBRVI.js";
21
+ import "./chunk-CMZLPTGW.js";
22
+ import "./chunk-WUSKBXXD.js";
24
23
  import {
25
24
  fetchOrExplain,
26
25
  httpFailure
@@ -30,28 +29,31 @@ import {
30
29
  getAccessToken
31
30
  } from "./chunk-C56BC2FY.js";
32
31
  import "./chunk-7REDODS2.js";
32
+ import "./chunk-X4DVXBFY.js";
33
33
  import "./chunk-F6JCFRKO.js";
34
34
  import "./chunk-LU7TRWMC.js";
35
+ import "./chunk-YZ4GU6F5.js";
36
+ import "./chunk-6DHJVLYP.js";
35
37
  import "./chunk-4BXJGVZ3.js";
36
38
  import "./chunk-U3G2UW65.js";
37
- import "./chunk-UVLVQWWF.js";
39
+ import "./chunk-3NFUWXOC.js";
38
40
  import {
39
41
  removedSubcommand,
40
42
  unknownSubcommand
41
- } from "./chunk-IZW6MK3U.js";
43
+ } from "./chunk-6USV65XA.js";
44
+ import "./chunk-HJPTWBLH.js";
42
45
  import {
43
46
  formatFields,
44
47
  stdoutStyle,
45
48
  step,
46
49
  success
47
50
  } from "./chunk-EZG76F7R.js";
51
+ import "./chunk-GNPVYOPB.js";
48
52
  import "./chunk-55VHDNW5.js";
49
- import "./chunk-YYRDLFSJ.js";
53
+ import "./chunk-DYCLVQXW.js";
50
54
  import "./chunk-5L4X5LS6.js";
51
55
  import "./chunk-WHOJWOSV.js";
52
56
  import "./chunk-5XZ744TS.js";
53
- import "./chunk-HJPTWBLH.js";
54
- import "./chunk-GNPVYOPB.js";
55
57
  import "./chunk-4HT3BNZ7.js";
56
58
 
57
59
  // src/emit/workspace-command.ts
@@ -153,4 +155,4 @@ async function runExport(args) {
153
155
  export {
154
156
  runWorkspaceCommand
155
157
  };
156
- //# sourceMappingURL=workspace-command-TOB2AJ6X.js.map
158
+ //# sourceMappingURL=workspace-command-ICSI6PKO.js.map
@@ -2,8 +2,8 @@ import {
2
2
  exportWorkspaceBundle
3
3
  } from "./chunk-QTNO2WD6.js";
4
4
  import "./chunk-ZUTSMMAG.js";
5
- import "./chunk-X4DVXBFY.js";
6
5
  import "./chunk-3IGNIP6R.js";
6
+ import "./chunk-X4DVXBFY.js";
7
7
  export {
8
8
  exportWorkspaceBundle
9
9
  };
@@ -2,10 +2,11 @@
2
2
 
3
3
  > Read when the workspace defines an `agent()` or an `mcpServer()`.
4
4
 
5
- - `mcpServer({ name, guid?, description?, instructions?, docs?, enabled?, canonical?, spec?, tags?, history?, tools?, llm?, output? })` — an MCP toolset. `llm?`/`output?` are the same blocks `agent()` takes and are usually absent: an MCP server and an agent are ONE stored object distinguished by `type`, so a server that carries LLM settings can say so. Returns a handle with `getPath()`/`getUrl(baseUrl)` for the Streamable-HTTP endpoint — `getUrl` is NOT idempotent, a `baseUrl` already carrying an `/x2/mcp/<…>/stream` path (an earlier result) THROWS, so resolve ONCE from the instance base URL. Fires on an ephemeral; does NOT fire in the sandbox (see Gotchas).
5
+ - `mcpServer({ name, guid?, description?, instructions?, docs?, enabled?, canonical?, spec?, tags?, history?, tools?, llm?, output? })` — an MCP toolset. `llm?`/`output?` are the same blocks `agent()` takes and are usually absent: an MCP server and an agent are ONE stored object distinguished by `type`. Returns a handle with `getPath()`/`getUrl(baseUrl)` for the Streamable-HTTP endpoint — `getUrl` is NOT idempotent, a `baseUrl` already carrying an `/x2/mcp/<…>/stream` path THROWS, so resolve ONCE from the instance base URL. Fires on an ephemeral; not in sandbox.
6
6
  - `tools?`: a `ToolsetToolEntry[]`. Pass the `tool()` HANDLES directly (`tools: [saveNote]`), like every other collection in the SDK; use the `{ tool, enabled?, auth? }` wrapper only when a tool needs `enabled: false` or per-tool `auth`. `auth` names an auth **table** (a `table({ auth: true })` handle or its name) — Xano's ONLY MCP auth surface (per-tool; there is no server-level gate). An entry that names no tool (no handle, no `id`) THROWS at export rather than emitting the `id: 0` null reference it used to; a deliberate raw `id: 0` warns and is carried through, so a pulled workspace still round-trips.
7
7
  - `agent({ name, guid?, description?, docs?, enabled?, canonical?, tags?, history?, llm, tools?, output? })` — an LLM orchestrator. No top-level `instructions`/`prompt`/`spec` — the prompt lives under `llm`. Invoke from a stack with `s.ai.agent.run({ agent, args })`.
8
8
  - `llm` (REQUIRED): typed provider settings, a discriminated union on `type` (`"xano-free" | "anthropic" | "openai" | "google-genai"`). Shared fields: `systemPrompt?`, `maxSteps?` (default `5`), and `prompt?` XOR `messages?` (genuinely exclusive: both is a type error and throws — the engine stores ONE `prompt_type`, so one would be dropped); plus provider fields (`apiKey?`, `model?`, `temperature?`, `reasoningEffort?`, …). String fields accept Twig placeholders — `{{ $args.x }}` for run inputs (the `args` of `s.ai.agent.run`), `{{ $env.NAME }}` for env vars.
9
9
  - `tools?`: same `ToolsetToolEntry[]` as `mcpServer` — bare `tool()` handles, or a `{ tool, enabled?, auth? }` wrapper when one needs `enabled`/`auth`.
10
10
  - `output?`: `{ schema: Record<string, input.*>, enabled? }` — structured-output schema. `schema` is a named-field record authored with the `input.*` catalog, exactly like a `defineFunction`/`query` `input:` map (the stored `structuredOutputsSchema` is the same wire shape as function inputs). e.g. `output: { schema: { priority: input.enum(["low","high"]), summary: input.text() } }`. When you pass the agent *handle* to `s.ai.agent.run({ agent })`, `.result` is typed straight from this schema — no `resultShape` witness needed (the shape is declared once). `resultShape` remains only to override that, or to type an agent referenced by bare name.
11
11
  - **Run + read recipe (`s.ai.agent.run`):** bind the run to a var (`s.ai.agent.run({ agent, args, as: "run" })`) — it produces a rich envelope, and the completion is at **`.result`**. Read one structured field with a dotted ref (`response: ref("run.result.priority")`) or the whole completion (`ref("run.result")`, typed from `output.schema`); persist it in a later step the same way (`s.set_var({ name, value: ref("run.result.summary") })`). `args` is a plain object of run inputs (`{ topic: inp("topic") }` — raw literals are fine, e.g. `{ max_steps: 3 }`) surfaced to the agent as `{{ $args.topic }}`. Tool-call / per-step data (when tools ran) rides `.toolCalls` / `.steps` on the same envelope — both optional, absent or empty when no tools executed.
12
+ - **Marketplace:** for chat history, use `@xanots/chatbot`; for vector RAG, use `@xanots/vector` (`tools: [vector.searchTool]`). Find add-ons with `xanots marketplace search <q>`.
package/llms-full.txt CHANGED
@@ -1,4 +1,4 @@
1
- # xanots v0.0.2
1
+ # xanots v0.0.3
2
2
 
3
3
  > TypeScript SDK that compiles a typed Xano workspace into the importable packageExport JSON bundle.
4
4
 
@@ -646,13 +646,14 @@ The run is isolated in ways that make a correct test fail for reasons the failur
646
646
 
647
647
  > Read when the workspace defines an `agent()` or an `mcpServer()`.
648
648
 
649
- - `mcpServer({ name, guid?, description?, instructions?, docs?, enabled?, canonical?, spec?, tags?, history?, tools?, llm?, output? })` — an MCP toolset. `llm?`/`output?` are the same blocks `agent()` takes and are usually absent: an MCP server and an agent are ONE stored object distinguished by `type`, so a server that carries LLM settings can say so. Returns a handle with `getPath()`/`getUrl(baseUrl)` for the Streamable-HTTP endpoint — `getUrl` is NOT idempotent, a `baseUrl` already carrying an `/x2/mcp/<…>/stream` path (an earlier result) THROWS, so resolve ONCE from the instance base URL. Fires on an ephemeral; does NOT fire in the sandbox (see Gotchas).
649
+ - `mcpServer({ name, guid?, description?, instructions?, docs?, enabled?, canonical?, spec?, tags?, history?, tools?, llm?, output? })` — an MCP toolset. `llm?`/`output?` are the same blocks `agent()` takes and are usually absent: an MCP server and an agent are ONE stored object distinguished by `type`. Returns a handle with `getPath()`/`getUrl(baseUrl)` for the Streamable-HTTP endpoint — `getUrl` is NOT idempotent, a `baseUrl` already carrying an `/x2/mcp/<…>/stream` path THROWS, so resolve ONCE from the instance base URL. Fires on an ephemeral; not in sandbox.
650
650
  - `tools?`: a `ToolsetToolEntry[]`. Pass the `tool()` HANDLES directly (`tools: [saveNote]`), like every other collection in the SDK; use the `{ tool, enabled?, auth? }` wrapper only when a tool needs `enabled: false` or per-tool `auth`. `auth` names an auth **table** (a `table({ auth: true })` handle or its name) — Xano's ONLY MCP auth surface (per-tool; there is no server-level gate). An entry that names no tool (no handle, no `id`) THROWS at export rather than emitting the `id: 0` null reference it used to; a deliberate raw `id: 0` warns and is carried through, so a pulled workspace still round-trips.
651
651
  - `agent({ name, guid?, description?, docs?, enabled?, canonical?, tags?, history?, llm, tools?, output? })` — an LLM orchestrator. No top-level `instructions`/`prompt`/`spec` — the prompt lives under `llm`. Invoke from a stack with `s.ai.agent.run({ agent, args })`.
652
652
  - `llm` (REQUIRED): typed provider settings, a discriminated union on `type` (`"xano-free" | "anthropic" | "openai" | "google-genai"`). Shared fields: `systemPrompt?`, `maxSteps?` (default `5`), and `prompt?` XOR `messages?` (genuinely exclusive: both is a type error and throws — the engine stores ONE `prompt_type`, so one would be dropped); plus provider fields (`apiKey?`, `model?`, `temperature?`, `reasoningEffort?`, …). String fields accept Twig placeholders — `{{ $args.x }}` for run inputs (the `args` of `s.ai.agent.run`), `{{ $env.NAME }}` for env vars.
653
653
  - `tools?`: same `ToolsetToolEntry[]` as `mcpServer` — bare `tool()` handles, or a `{ tool, enabled?, auth? }` wrapper when one needs `enabled`/`auth`.
654
654
  - `output?`: `{ schema: Record<string, input.*>, enabled? }` — structured-output schema. `schema` is a named-field record authored with the `input.*` catalog, exactly like a `defineFunction`/`query` `input:` map (the stored `structuredOutputsSchema` is the same wire shape as function inputs). e.g. `output: { schema: { priority: input.enum(["low","high"]), summary: input.text() } }`. When you pass the agent *handle* to `s.ai.agent.run({ agent })`, `.result` is typed straight from this schema — no `resultShape` witness needed (the shape is declared once). `resultShape` remains only to override that, or to type an agent referenced by bare name.
655
655
  - **Run + read recipe (`s.ai.agent.run`):** bind the run to a var (`s.ai.agent.run({ agent, args, as: "run" })`) — it produces a rich envelope, and the completion is at **`.result`**. Read one structured field with a dotted ref (`response: ref("run.result.priority")`) or the whole completion (`ref("run.result")`, typed from `output.schema`); persist it in a later step the same way (`s.set_var({ name, value: ref("run.result.summary") })`). `args` is a plain object of run inputs (`{ topic: inp("topic") }` — raw literals are fine, e.g. `{ max_steps: 3 }`) surfaced to the agent as `{{ $args.topic }}`. Tool-call / per-step data (when tools ran) rides `.toolCalls` / `.steps` on the same envelope — both optional, absent or empty when no tools executed.
656
+ - **Marketplace:** for chat history, use `@xanots/chatbot`; for vector RAG, use `@xanots/vector` (`tools: [vector.searchTool]`). Find add-ons with `xanots marketplace search <q>`.
656
657
 
657
658
  # Realtime def shapes
658
659
 
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # xanots v0.0.2
1
+ # xanots v0.0.3
2
2
 
3
3
  > TypeScript SDK that compiles a typed Xano workspace into the importable packageExport JSON bundle.
4
4
 
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xanots",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "TypeScript SDK that compiles a typed Xano workspace into the importable packageExport JSON bundle.",
5
5
  "coverage": {
6
6
  "objectKinds": {
@@ -8562,6 +8562,34 @@
8562
8562
  "flag": "--framework <id>",
8563
8563
  "description": "Frontend framework to scaffold: react (default), svelte"
8564
8564
  },
8565
+ {
8566
+ "flag": "--theme <id>",
8567
+ "description": "shadcn/ui theme — <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"
8568
+ },
8569
+ {
8570
+ "flag": "--radius <len>",
8571
+ "description": "Corner radius for the scaffold's theme — a number of rem (0, 0.5, 1) or a CSS length"
8572
+ },
8573
+ {
8574
+ "flag": "--dark <mode>",
8575
+ "description": "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off"
8576
+ },
8577
+ {
8578
+ "flag": "--font <id>",
8579
+ "description": "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
8580
+ },
8581
+ {
8582
+ "flag": "--font-mono <id>",
8583
+ "description": "Code typeface (default: the system mono stack)"
8584
+ },
8585
+ {
8586
+ "flag": "--font-heading <id>",
8587
+ "description": "Heading typeface, bound to h1–h6 (default: inherits the body face)"
8588
+ },
8589
+ {
8590
+ "flag": "--icons <id>",
8591
+ "description": "Icon set: lucide (default), tabler, phosphor"
8592
+ },
8565
8593
  {
8566
8594
  "flag": "--ai <preset>",
8567
8595
  "description": "AI instruction files to scaffold: claude, codex, cursor, none"
@@ -8700,6 +8728,34 @@
8700
8728
  "flag": "--framework <id>",
8701
8729
  "description": "Frontend framework to scaffold: react (default), svelte"
8702
8730
  },
8731
+ {
8732
+ "flag": "--theme <id>",
8733
+ "description": "shadcn/ui theme — <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"
8734
+ },
8735
+ {
8736
+ "flag": "--radius <len>",
8737
+ "description": "Corner radius for the scaffold's theme — a number of rem (0, 0.5, 1) or a CSS length"
8738
+ },
8739
+ {
8740
+ "flag": "--dark <mode>",
8741
+ "description": "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off"
8742
+ },
8743
+ {
8744
+ "flag": "--font <id>",
8745
+ "description": "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
8746
+ },
8747
+ {
8748
+ "flag": "--font-mono <id>",
8749
+ "description": "Code typeface (default: the system mono stack)"
8750
+ },
8751
+ {
8752
+ "flag": "--font-heading <id>",
8753
+ "description": "Heading typeface, bound to h1–h6 (default: inherits the body face)"
8754
+ },
8755
+ {
8756
+ "flag": "--icons <id>",
8757
+ "description": "Icon set: lucide (default), tabler, phosphor"
8758
+ },
8703
8759
  {
8704
8760
  "flag": "--ai <preset>",
8705
8761
  "description": "AI instruction files to scaffold: claude, codex, cursor, none"
@@ -8901,6 +8957,34 @@
8901
8957
  "flag": "--framework <id>",
8902
8958
  "description": "Frontend framework to scaffold: react (default), svelte"
8903
8959
  },
8960
+ {
8961
+ "flag": "--theme <id>",
8962
+ "description": "shadcn/ui theme — <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"
8963
+ },
8964
+ {
8965
+ "flag": "--radius <len>",
8966
+ "description": "Corner radius for the scaffold's theme — a number of rem (0, 0.5, 1) or a CSS length"
8967
+ },
8968
+ {
8969
+ "flag": "--dark <mode>",
8970
+ "description": "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off"
8971
+ },
8972
+ {
8973
+ "flag": "--font <id>",
8974
+ "description": "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
8975
+ },
8976
+ {
8977
+ "flag": "--font-mono <id>",
8978
+ "description": "Code typeface (default: the system mono stack)"
8979
+ },
8980
+ {
8981
+ "flag": "--font-heading <id>",
8982
+ "description": "Heading typeface, bound to h1–h6 (default: inherits the body face)"
8983
+ },
8984
+ {
8985
+ "flag": "--icons <id>",
8986
+ "description": "Icon set: lucide (default), tabler, phosphor"
8987
+ },
8904
8988
  {
8905
8989
  "flag": "--ai <preset>",
8906
8990
  "description": "AI instruction files to scaffold: claude, codex, cursor, none"
@@ -8912,6 +8996,10 @@
8912
8996
  {
8913
8997
  "flag": "--no-install",
8914
8998
  "description": "Skip the post-scaffold npm install"
8999
+ },
9000
+ {
9001
+ "flag": "--marketplace <pkgs>",
9002
+ "description": "Add-on packages to install and register, comma-separated"
8915
9003
  }
8916
9004
  ],
8917
9005
  "description": "Scaffold a new XanoTS project"
@@ -9201,6 +9289,34 @@
9201
9289
  "flag": "--framework <id>",
9202
9290
  "description": "Frontend framework to scaffold: react (default), svelte"
9203
9291
  },
9292
+ {
9293
+ "flag": "--theme <id>",
9294
+ "description": "shadcn/ui theme — <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"
9295
+ },
9296
+ {
9297
+ "flag": "--radius <len>",
9298
+ "description": "Corner radius for the scaffold's theme — a number of rem (0, 0.5, 1) or a CSS length"
9299
+ },
9300
+ {
9301
+ "flag": "--dark <mode>",
9302
+ "description": "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off"
9303
+ },
9304
+ {
9305
+ "flag": "--font <id>",
9306
+ "description": "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
9307
+ },
9308
+ {
9309
+ "flag": "--font-mono <id>",
9310
+ "description": "Code typeface (default: the system mono stack)"
9311
+ },
9312
+ {
9313
+ "flag": "--font-heading <id>",
9314
+ "description": "Heading typeface, bound to h1–h6 (default: inherits the body face)"
9315
+ },
9316
+ {
9317
+ "flag": "--icons <id>",
9318
+ "description": "Icon set: lucide (default), tabler, phosphor"
9319
+ },
9204
9320
  {
9205
9321
  "flag": "--ai <preset>",
9206
9322
  "description": "AI instruction files to scaffold: claude, codex, cursor, none"
@@ -9468,6 +9584,34 @@
9468
9584
  "flag": "--framework <id>",
9469
9585
  "description": "Frontend framework to scaffold: react (default), svelte"
9470
9586
  },
9587
+ {
9588
+ "flag": "--theme <id>",
9589
+ "description": "shadcn/ui theme — <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"
9590
+ },
9591
+ {
9592
+ "flag": "--radius <len>",
9593
+ "description": "Corner radius for the scaffold's theme — a number of rem (0, 0.5, 1) or a CSS length"
9594
+ },
9595
+ {
9596
+ "flag": "--dark <mode>",
9597
+ "description": "What switches the app into its dark palette: system (default, follows the OS), toggle (adds a control), off"
9598
+ },
9599
+ {
9600
+ "flag": "--font <id>",
9601
+ "description": "Body typeface, self-hosted from its @fontsource package (default: the system stack)"
9602
+ },
9603
+ {
9604
+ "flag": "--font-mono <id>",
9605
+ "description": "Code typeface (default: the system mono stack)"
9606
+ },
9607
+ {
9608
+ "flag": "--font-heading <id>",
9609
+ "description": "Heading typeface, bound to h1–h6 (default: inherits the body face)"
9610
+ },
9611
+ {
9612
+ "flag": "--icons <id>",
9613
+ "description": "Icon set: lucide (default), tabler, phosphor"
9614
+ },
9471
9615
  {
9472
9616
  "flag": "--ai <preset>",
9473
9617
  "description": "AI instruction files to scaffold: claude, codex, cursor, none"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xanots/sdk",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "XanoTS — your Xano backend as TypeScript. `xanots deploy` ships your typed workspace (and an optional static frontend) to a live, auto-expiring ephemeral environment and prints its URL. init → deploy → URL.",
5
5
  "keywords": [
6
6
  "xanots",
@@ -40,6 +40,10 @@
40
40
  "types": "./dist/node.d.ts",
41
41
  "import": "./dist/node.js"
42
42
  },
43
+ "./scaffold": {
44
+ "types": "./dist/scaffold.d.ts",
45
+ "import": "./dist/scaffold.js"
46
+ },
43
47
  "./codegen": {
44
48
  "types": "./dist/codegen.d.ts",
45
49
  "import": "./dist/codegen.js"
@@ -67,6 +71,8 @@
67
71
  "codegen:sweep": "tsx scripts/codegen-sweep.ts",
68
72
  "codegen:replay": "tsx scripts/codegen-replay.ts",
69
73
  "codegen:imports": "tsx scripts/codegen-imports.ts",
74
+ "codegen:themes": "tsx scripts/gen-shadcn-themes.ts",
75
+ "codegen:fonts": "tsx scripts/gen-shadcn-fonts.ts",
70
76
  "audit:spec-drift": "tsx scripts/spec-drift.ts",
71
77
  "audit:special-required": "tsx scripts/special-required.ts",
72
78
  "audit:output-flag": "tsx scripts/audit-output-flag.ts",
@@ -1,14 +0,0 @@
1
- // src/emit/npm.ts
2
- import { spawnSync } from "child_process";
3
- function npmBinary() {
4
- return process.platform === "win32" ? "npm.cmd" : "npm";
5
- }
6
- function runNpm(args, cwd) {
7
- const res = spawnSync(npmBinary(), [...args], { cwd, stdio: "inherit" });
8
- return res.status ?? 1;
9
- }
10
-
11
- export {
12
- runNpm
13
- };
14
- //# sourceMappingURL=chunk-47WDWMBJ.js.map