@shadsapp/mcp 0.1.4 → 0.2.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.
package/README.md CHANGED
@@ -9,6 +9,7 @@ The server uses the MCP **stdio transport**. It runs as a child process started
9
9
  - Node.js 18 or newer
10
10
  - Internet access for registry tools (`resolve_share`, `get_theme_package`, `get_skill`, and `install_plan`)
11
11
  - A project using the shadcn CLI for generated install commands
12
+ - A Pro shads.app API key for the Pro tools (optional)
12
13
 
13
14
  `list_themes`, `get_theme`, `validate_theme`, `theme_schema`, and `list_starters` work from the installed package without a network request.
14
15
 
@@ -93,6 +94,8 @@ If the client supports an explicit working directory, set it to the project wher
93
94
 
94
95
  ## Available tools
95
96
 
97
+ ### Public tools
98
+
96
99
  | Tool | Input | Purpose |
97
100
  | -------------------- | ------------------------------------------- | ---------------------------------------------------- |
98
101
  | `list_themes` | `{}` | List bundled starter theme metadata. |
@@ -106,6 +109,54 @@ If the client supports an explicit working directory, set it to the project wher
106
109
  | `get_skill` | `{ "id": "workspace" }` | Return the theme-specific skill markdown. |
107
110
  | `install_plan` | `{ "id": "workspace", "mode": "existing" }` | Return validated install commands and notes. |
108
111
 
112
+ ### Pro tools (require `SHADS_API_KEY`)
113
+
114
+ Add a `SHADS_API_KEY` env var and the server unlocks account tools that talk to
115
+ shads.app on your behalf. All premium logic and data stays on the shads.app
116
+ server — the key only authorizes requests, nothing is baked into this package.
117
+
118
+ | Tool | Input | Purpose |
119
+ | -------------------- | ----------------------------------------------------- | ------------------------------------------------------- |
120
+ | `list_my_themes` | `{}` | List your saved cloud themes. |
121
+ | `get_my_theme` | `{ "id": "<theme id>" }` | Return one theme as `theme.json` + a single stylesheet. |
122
+ | `save_theme` | `{ "name": "...", "document": "..." }` | Save a theme document to your account. |
123
+ | `update_theme` | `{ "id": "...", "name?": "...", "document?": "..." }` | Rename and/or update a saved theme. |
124
+ | `generate_theme` | `{ "description": "..." }` | Hosted AI generation (uses your monthly quota). |
125
+ | `check_subscription` | `{}` | Show plan, MCP access, AI quota, and theme count. |
126
+
127
+ `get_my_theme` returns `themeCss` as one self-contained stylesheet — the tokens,
128
+ the `[data-slot]` adapters, and the `@theme inline` wiring — so it works as a
129
+ single `<link>` without the ZIP's `index.css` merge step.
130
+
131
+ When no key is set, the server advertises a single `authenticate` tool that
132
+ returns the setup instructions above instead of the premium tools.
133
+
134
+ #### Connecting a Pro key
135
+
136
+ 1. Sign in at [shads.app](https://shads.app) on a Pro plan.
137
+ 2. Open **Account settings → API keys** and create a key.
138
+ 3. Copy it immediately — it is shown once and stored only as a hash.
139
+ 4. Add it to the **server** env in your MCP client config:
140
+
141
+ ```json
142
+ {
143
+ "mcpServers": {
144
+ "shads": {
145
+ "command": "npx",
146
+ "args": ["-y", "@shadsapp/mcp"],
147
+ "env": { "SHADS_API_KEY": "shads_live_..." }
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ Restart the client; the Pro tools appear in the tool list. Keys inherit the plan:
154
+ if the subscription lapses, the tools return a 402 until it is restored (the key
155
+ itself stays valid). Revoke keys from the same settings page at any time.
156
+
157
+ Set `SHADS_API_BASE` to point at a non-production host (for example a preview
158
+ deployment) instead of `https://shads.app`.
159
+
109
160
  Starter names such as `workspace` are converted to registry item ids such as `workspace-theme`. You may also provide a theme item id, a share id, or a registry URL such as `https://shads.app/r/workspace-theme.json`.
110
161
 
111
162
  Registry item ids accept only letters, numbers, hyphens, and underscores. This keeps generated shell commands safe to review and execute.
@@ -165,6 +216,30 @@ The remote registry tools require network access to `https://shads.app`. Check t
165
216
 
166
217
  The server only returns commands. Run them from the target shadcn project, or configure the MCP host's working directory when supported.
167
218
 
219
+ ### Pro tools are missing from the tool list
220
+
221
+ `SHADS_API_KEY` is read from the **server** process env. Put it in the `env` block
222
+ of the server entry (see above) — not in a `.env` file inside the project you are
223
+ editing. Only keys starting with `shads_live_` are accepted; anything else is
224
+ ignored, and the server falls back to advertising `authenticate`.
225
+
226
+ ### Pro tool returns 401
227
+
228
+ No key, a revoked key, or a malformed `Authorization` header. Public tools keep
229
+ working, which distinguishes this from a network problem. Create a new key in
230
+ Account settings → API keys.
231
+
232
+ ### Pro tool returns 402
233
+
234
+ The key is valid but the account's plan no longer includes MCP access. Restore
235
+ the subscription and the same key starts working again — keys are not deleted on
236
+ downgrade.
237
+
238
+ ### Pro tool returns 429
239
+
240
+ Rate limited. Hosted AI (`generate_theme`) shares the account's monthly quota and
241
+ an hourly request limit; key creation is capped at 5 per user per 24 hours.
242
+
168
243
  ## Development
169
244
 
170
245
  From the repository root:
@@ -0,0 +1,46 @@
1
+ export declare const API_BASE: string;
2
+ export declare function readApiKey(): string | null;
3
+ export declare class ShadsApiError extends Error {
4
+ readonly status: number;
5
+ constructor(status: number, message: string);
6
+ }
7
+ export type CloudThemeSummary = {
8
+ id: string;
9
+ name: string;
10
+ updatedAt: string;
11
+ };
12
+ export type CloudThemeDetail = {
13
+ id: string;
14
+ name: string;
15
+ config: Record<string, unknown>;
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ /** Full theme.json document (shads-theme/v1). */
19
+ themeDocumentJson: string;
20
+ /** Single stylesheet: tokens, adapters, and the @theme wiring. */
21
+ themeCss: string;
22
+ };
23
+ export type GenerateThemeResult = {
24
+ documents: Array<Record<string, unknown>>;
25
+ usage: number;
26
+ };
27
+ export type SubscriptionStatus = {
28
+ plan: string;
29
+ mcpAccess: boolean;
30
+ aiGenerations: {
31
+ used: number;
32
+ limit: number | null;
33
+ };
34
+ savedThemes: number;
35
+ entitlements: Record<string, unknown>;
36
+ };
37
+ export declare function listMyThemes(): Promise<CloudThemeSummary[]>;
38
+ export declare function getMyTheme(id: string): Promise<CloudThemeDetail>;
39
+ export declare function saveTheme(name: string, config: Record<string, unknown>): Promise<CloudThemeSummary>;
40
+ export declare function updateTheme(id: string, patch: {
41
+ name?: string;
42
+ config?: Record<string, unknown>;
43
+ }): Promise<CloudThemeDetail>;
44
+ export declare function generateTheme(description: string): Promise<GenerateThemeResult>;
45
+ export declare function checkSubscription(): Promise<SubscriptionStatus>;
46
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,EAAE,MAEF,CAAA;AAKrB,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAyED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAA;IACzB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAA;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CASjE;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAItE;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzD,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAErE"}
@@ -0,0 +1,96 @@
1
+ import { REGISTRY_HOMEPAGE } from "./install-prompt.js";
2
+ export const API_BASE = (process.env.SHADS_API_BASE ?? REGISTRY_HOMEPAGE).replace(/\/+$/, "");
3
+ const REQUEST_TIMEOUT_MS = 30_000;
4
+ const GENERATE_TIMEOUT_MS = 90_000;
5
+ export function readApiKey() {
6
+ const key = process.env.SHADS_API_KEY?.trim();
7
+ return key && key.startsWith("shads_live_") ? key : null;
8
+ }
9
+ export class ShadsApiError extends Error {
10
+ status;
11
+ constructor(status, message) {
12
+ super(message);
13
+ this.name = "ShadsApiError";
14
+ this.status = status;
15
+ }
16
+ }
17
+ function friendlyError(status, payloadError) {
18
+ if (status === 401) {
19
+ return (payloadError ??
20
+ "Your shads.app API key is invalid or revoked. Create a new one in Account settings > API keys (shads.app).");
21
+ }
22
+ if (status === 402) {
23
+ return (payloadError ??
24
+ "This feature requires a Pro plan. Upgrade: https://shads.app/pricing");
25
+ }
26
+ if (status === 429) {
27
+ return (payloadError ??
28
+ "Rate limited by shads.app (too many requests). Wait a moment and retry.");
29
+ }
30
+ return payloadError ?? `shads.app request failed (${status})`;
31
+ }
32
+ async function request(path, init = {}) {
33
+ const apiKey = readApiKey();
34
+ if (!apiKey) {
35
+ throw new ShadsApiError(401, "No shads.app API key configured. Set SHADS_API_KEY in your MCP server env (Pro feature: https://shads.app/pricing).");
36
+ }
37
+ let response;
38
+ try {
39
+ response = await fetch(`${API_BASE}${path}`, {
40
+ method: init.method ?? "GET",
41
+ headers: {
42
+ Accept: "application/json",
43
+ Authorization: `Bearer ${apiKey}`,
44
+ ...(init.body === undefined
45
+ ? {}
46
+ : { "Content-Type": "application/json" }),
47
+ },
48
+ body: init.body === undefined ? undefined : JSON.stringify(init.body),
49
+ signal: AbortSignal.timeout(init.timeoutMs ?? REQUEST_TIMEOUT_MS),
50
+ });
51
+ }
52
+ catch (cause) {
53
+ if (cause instanceof Error && cause.name === "TimeoutError") {
54
+ throw new ShadsApiError(504, "shads.app request timed out. Retry.");
55
+ }
56
+ throw new ShadsApiError(0, `Could not reach shads.app at ${API_BASE}. Check your network.`);
57
+ }
58
+ const payload = (await response
59
+ .json()
60
+ .catch(() => null));
61
+ if (!response.ok) {
62
+ const payloadError = payload && typeof payload.error === "string" ? payload.error : null;
63
+ throw new ShadsApiError(response.status, friendlyError(response.status, payloadError));
64
+ }
65
+ return payload;
66
+ }
67
+ export async function listMyThemes() {
68
+ const data = await request("/api/themes");
69
+ return data.items.map((item) => ({
70
+ id: item.id,
71
+ name: item.name,
72
+ updatedAt: item.updatedAt,
73
+ }));
74
+ }
75
+ export async function getMyTheme(id) {
76
+ return request(`/api/themes/${encodeURIComponent(id)}?format=bundle`);
77
+ }
78
+ export async function saveTheme(name, config) {
79
+ const created = await request("/api/themes", { method: "POST", body: { name, config } });
80
+ return { id: created.id, name: created.name, updatedAt: created.updatedAt };
81
+ }
82
+ export async function updateTheme(id, patch) {
83
+ const updated = await request(`/api/themes/${encodeURIComponent(id)}`, { method: "PATCH", body: patch });
84
+ return updated;
85
+ }
86
+ export async function generateTheme(description) {
87
+ return request("/api/ai/generate", {
88
+ method: "POST",
89
+ body: { description },
90
+ timeoutMs: GENERATE_TIMEOUT_MS,
91
+ });
92
+ }
93
+ export async function checkSubscription() {
94
+ return request("/api/mcp/status");
95
+ }
96
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,16 +5,18 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
5
5
  import { parseThemeDocumentInput, THEME_SCHEMA } from "@shadsapp/schema";
6
6
  import { getTheme, listThemes } from "@shadsapp/themes";
7
7
  import { buildAgentInstallPrompt, buildInstallPlan, listStarterInstallEntries, REGISTRY_HOMEPAGE, resolveSafeItemId, systemSkillItemId, } from "./install-prompt.js";
8
+ import { checkSubscription, generateTheme, getMyTheme, listMyThemes, saveTheme, updateTheme, } from "./api-client.js";
9
+ import { AUTHENTICATE_TOOL, AUTH_SETUP_MESSAGE, DESCRIPTION_MAX_LENGTH, DESCRIPTION_MIN_LENGTH, PREMIUM_TOOL_DEFINITIONS, hasApiKeyConfigured, parseThemeConfigDocument, premiumCall, textResult, } from "./premium-tools.js";
8
10
  const server = new Server({
9
11
  name: "shads",
10
- version: "0.1.1",
12
+ version: "0.2.0",
11
13
  }, {
12
14
  capabilities: {
13
15
  tools: {},
14
16
  },
15
17
  });
16
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
17
- tools: [
18
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
19
+ const tools = [
18
20
  {
19
21
  name: "list_themes",
20
22
  description: "List curated public shads starter themes",
@@ -157,8 +159,15 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
157
159
  additionalProperties: false,
158
160
  },
159
161
  },
160
- ],
161
- }));
162
+ ];
163
+ if (hasApiKeyConfigured()) {
164
+ tools.push(...PREMIUM_TOOL_DEFINITIONS);
165
+ }
166
+ else {
167
+ tools.push(AUTHENTICATE_TOOL);
168
+ }
169
+ return { tools };
170
+ });
162
171
  const REGISTRY_FETCH_TIMEOUT_MS = 10_000;
163
172
  async function fetchRegistryItem(itemId) {
164
173
  try {
@@ -404,6 +413,71 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
404
413
  ],
405
414
  };
406
415
  }
416
+ case "authenticate": {
417
+ // Guidance, not a failure: the agent asked how to connect, and this is
418
+ // the answer. isError is reserved for genuinely broken calls.
419
+ return {
420
+ content: [{ type: "text", text: AUTH_SETUP_MESSAGE }],
421
+ };
422
+ }
423
+ case "list_my_themes": {
424
+ return premiumCall(() => listMyThemes().then((items) => ({ items })));
425
+ }
426
+ case "get_my_theme": {
427
+ const id = String(request.params.arguments?.id ?? "");
428
+ if (!id) {
429
+ return textResult({ error: "Theme id is required" }, true);
430
+ }
431
+ return premiumCall(() => getMyTheme(id));
432
+ }
433
+ case "save_theme": {
434
+ const name = String(request.params.arguments?.name ?? "").trim();
435
+ const source = String(request.params.arguments?.document ?? "");
436
+ const parsed = parseThemeConfigDocument(source);
437
+ if (!parsed.ok) {
438
+ return textResult({ errors: parsed.errors }, true);
439
+ }
440
+ if (!name) {
441
+ return textResult({ error: "Theme name is required" }, true);
442
+ }
443
+ return premiumCall(() => saveTheme(name, parsed.config));
444
+ }
445
+ case "update_theme": {
446
+ const id = String(request.params.arguments?.id ?? "");
447
+ if (!id) {
448
+ return textResult({ error: "Theme id is required" }, true);
449
+ }
450
+ const nameArg = request.params.arguments?.name;
451
+ const name = typeof nameArg === "string" && nameArg.trim()
452
+ ? nameArg.trim()
453
+ : undefined;
454
+ const source = request.params.arguments?.document;
455
+ let config;
456
+ if (typeof source === "string" && source.trim()) {
457
+ const parsed = parseThemeConfigDocument(source);
458
+ if (!parsed.ok) {
459
+ return textResult({ errors: parsed.errors }, true);
460
+ }
461
+ config = parsed.config;
462
+ }
463
+ if (name === undefined && config === undefined) {
464
+ return textResult({ error: "Provide a name and/or document to update" }, true);
465
+ }
466
+ return premiumCall(() => updateTheme(id, { name, config }));
467
+ }
468
+ case "generate_theme": {
469
+ const description = String(request.params.arguments?.description ?? "").trim();
470
+ if (description.length < DESCRIPTION_MIN_LENGTH) {
471
+ return textResult({ error: `description must be at least ${DESCRIPTION_MIN_LENGTH} characters` }, true);
472
+ }
473
+ if (description.length > DESCRIPTION_MAX_LENGTH) {
474
+ return textResult({ error: `description must be ${DESCRIPTION_MAX_LENGTH} characters or fewer` }, true);
475
+ }
476
+ return premiumCall(() => generateTheme(description));
477
+ }
478
+ case "check_subscription": {
479
+ return premiumCall(() => checkSubscription());
480
+ }
407
481
  default:
408
482
  throw new Error(`Unknown tool: ${request.params.name}`);
409
483
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAA;AAED,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,MAAM,KAAK,GAIL;QACJ;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,oDAAoD;YACjE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0BAA0B;qBACxC;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAChB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oCAAoC;qBAClD;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,kDAAkD;YAC/D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EACT,qEAAqE;YACvE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EACT,iFAAiF;YACnF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,uEAAuE;qBAC1E;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC;wBACjC,WAAW,EAAE,kDAAkD;qBAChE;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EACT,2EAA2E;YAC7E,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0CAA0C;qBACxD;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,oFAAoF;YACtF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,kEAAkE;qBACrE;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAChB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,iEAAiE;YACnE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,sDAAsD;qBACzD;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAChB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,0EAA0E;YAC5E,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,sDAAsD;qBACzD;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;wBACzB,WAAW,EAAE,mCAAmC;qBACjD;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAChB,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF,CAAA;IAED,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC,CAAC,CAAA;AAiBF,MAAM,yBAAyB,GAAG,MAAM,CAAA;AAExC,KAAK,UAAU,iBAAiB,CAC9B,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,MAAM,MAAM,OAAO,EAAE;YACpE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC;SACvD,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAsB;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAClC,CAAA;IACD,OAAO,SAAS,EAAE,OAAO,IAAI,IAAI,CAAA;AACnC,CAAC;AAED,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC5C;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC3B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,EAAE,EAAE,MAAM,CAAC,EAAE;4BACb,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;yBAC1B,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;YAC7D,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;YAC9C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY;qBACnB;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3D;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;YACzD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAE1B,CAAA;YACb,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACxD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM;qBACb;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,KAAK,EAAE,yBAAyB;gCAChC,MAAM;6BACP,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YACD,MAAM,MAAM,GAAG,uBAAuB,CAAC;gBACrC,MAAM;gBACN,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI;aAC/C,CAAC,CAAA;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,MAAM;4BACN,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,IAAI,MAAM;4BACxD,MAAM;yBACP,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;YACpC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACjD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAC5C,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAC7C,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;YACtD,MAAM,aAAa,GAAG,SAAS;gBAC7B,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAA;YACR,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,MAAM;4BACN,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,IAAI,MAAM;4BAClD,QAAQ,EAAE,GAAG,iBAAiB,MAAM,MAAM,OAAO;4BACjD,WAAW;4BACX,QAAQ,EAAE,GAAG,iBAAiB,MAAM,WAAW,OAAO;4BACtD,aAAa;4BACb,oBAAoB,EAAE,SAAS,CAAC,oBAAoB,IAAI,EAAE;4BAC1D,aAAa,EAAE,uBAAuB,CAAC;gCACrC,MAAM;gCACN,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;6BACzC,CAAC;4BACF,WAAW,EAAE,gBAAgB,CAAC;gCAC5B,MAAM;gCACN,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;gCACxC,IAAI,EAAE,UAAU;6BACjB,CAAC;yBACH,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;YACpC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC3C,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAC7B,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;YACtD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,EAC/C,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;YACjD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,QAAQ;4BACR,IAAI,CAAC,SAAS,CACZ,EAAE,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,EAChD,IAAI,EACJ,CAAC,CACF;qBACJ;iBACF;gBACD,OAAO,EAAE,CAAC,QAAQ;aACnB,CAAA;QACH,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAA;YAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA;YACpC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAA;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAC5C,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YACD,MAAM,IAAI,GAAG,gBAAgB,CAAC;gBAC5B,MAAM;gBACN,IAAI;gBACJ,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,IAAI;aACjD,CAAC,CAAA;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,MAAM;4BACN,IAAI;4BACJ,GAAG,IAAI;4BACP,MAAM,EAAE,uBAAuB,CAAC;gCAC9B,MAAM;gCACN,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;gCACzC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,IAAI;6BACjD,CAAC;yBACH,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAA;QACH,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,uEAAuE;YACvE,8DAA8D;YAC9D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;aACtD,CAAA;QACH,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,IAAI,CAAC,CAAA;YAC5D,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1C,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YAChE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAA;YAC/D,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;YACpD,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,IAAI,CAAC,CAAA;YAC9D,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC1D,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,IAAI,CAAC,CAAA;YAC5D,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAA;YAC9C,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;gBAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;gBAChB,CAAC,CAAC,SAAS,CAAA;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAA;YACjD,IAAI,MAA2C,CAAA;YAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAA;gBAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;gBACpD,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YACxB,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/C,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,0CAA0C,EAAE,EACrD,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YAC9E,IAAI,WAAW,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBAChD,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,gCAAgC,sBAAsB,aAAa,EAAE,EAC9E,IAAI,CACL,CAAA;YACH,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBAChD,OAAO,UAAU,CACf,EAAE,KAAK,EAAE,uBAAuB,sBAAsB,sBAAsB,EAAE,EAC9E,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,43 @@
1
+ export declare const AUTH_SETUP_MESSAGE = "shads.app premium tools need a Pro API key. Create one at https://shads.app (Account settings > API keys), then add it to your MCP client config: env { \"SHADS_API_KEY\": \"shads_live_...\" } for the @shadsapp/mcp server. Docs: https://shads.app/docs/mcp";
2
+ /**
3
+ * Mirrors modules/config/src/ai/limits.ts. This package is published standalone
4
+ * and cannot depend on the private `@modules/*` workspace, so the bounds are
5
+ * repeated here rather than imported.
6
+ */
7
+ export declare const DESCRIPTION_MIN_LENGTH = 10;
8
+ export declare const DESCRIPTION_MAX_LENGTH = 400;
9
+ export type ToolDefinition = {
10
+ name: string;
11
+ description: string;
12
+ inputSchema: Record<string, unknown>;
13
+ };
14
+ export declare const PREMIUM_TOOL_DEFINITIONS: ToolDefinition[];
15
+ export declare const AUTHENTICATE_TOOL: ToolDefinition;
16
+ export declare function hasApiKeyConfigured(): boolean;
17
+ export type ToolResult = {
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ isError?: boolean;
23
+ };
24
+ export declare function textResult(data: unknown, isError?: boolean): ToolResult;
25
+ /**
26
+ * Runs a premium API call and normalizes errors into MCP tool results so the
27
+ * agent sees actionable text (invalid key, upgrade prompt, rate limit) rather
28
+ * than a thrown error.
29
+ */
30
+ export declare function premiumCall(run: () => Promise<unknown>): Promise<ToolResult>;
31
+ /**
32
+ * Accepts either a full theme.json document (with `$schema`/`config`) or a
33
+ * bare config object, validates via @shadsapp/schema, and returns the config
34
+ * payload the API expects.
35
+ */
36
+ export declare function parseThemeConfigDocument(source: string): {
37
+ ok: true;
38
+ config: Record<string, unknown>;
39
+ } | {
40
+ ok: false;
41
+ errors: string[];
42
+ };
43
+ //# sourceMappingURL=premium-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium-tools.d.ts","sourceRoot":"","sources":["../src/premium-tools.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,mQACmO,CAAA;AAElQ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAA;AACxC,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,cAAc,EA6FpD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cAS/B,CAAA;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,UAAU,CAKrE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,CAUrB;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,GAEZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAoBlC"}
@@ -0,0 +1,161 @@
1
+ import { extractJsonFromText, parseThemeDocumentInput, } from "@shadsapp/schema";
2
+ import { ShadsApiError, readApiKey } from "./api-client.js";
3
+ export const AUTH_SETUP_MESSAGE = "shads.app premium tools need a Pro API key. Create one at https://shads.app (Account settings > API keys), then add it to your MCP client config: env { \"SHADS_API_KEY\": \"shads_live_...\" } for the @shadsapp/mcp server. Docs: https://shads.app/docs/mcp";
4
+ /**
5
+ * Mirrors modules/config/src/ai/limits.ts. This package is published standalone
6
+ * and cannot depend on the private `@modules/*` workspace, so the bounds are
7
+ * repeated here rather than imported.
8
+ */
9
+ export const DESCRIPTION_MIN_LENGTH = 10;
10
+ export const DESCRIPTION_MAX_LENGTH = 400;
11
+ export const PREMIUM_TOOL_DEFINITIONS = [
12
+ {
13
+ name: "list_my_themes",
14
+ description: "List the signed-in user's saved cloud themes from shads.app (Pro)",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {},
18
+ additionalProperties: false,
19
+ },
20
+ },
21
+ {
22
+ name: "get_my_theme",
23
+ description: "Fetch one saved theme as a theme.json document plus a single standalone theme.css (Pro)",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ id: {
28
+ type: "string",
29
+ description: "Saved theme id (from list_my_themes)",
30
+ },
31
+ },
32
+ required: ["id"],
33
+ additionalProperties: false,
34
+ },
35
+ },
36
+ {
37
+ name: "save_theme",
38
+ description: "Save a validated theme document to the user's shads.app account (Pro)",
39
+ inputSchema: {
40
+ type: "object",
41
+ properties: {
42
+ name: {
43
+ type: "string",
44
+ description: "Theme display name",
45
+ },
46
+ document: {
47
+ type: "string",
48
+ description: "theme.json text (with $schema shads-theme/v1) or raw config object as JSON",
49
+ },
50
+ },
51
+ required: ["name", "document"],
52
+ additionalProperties: false,
53
+ },
54
+ },
55
+ {
56
+ name: "update_theme",
57
+ description: "Update the name and/or config of a saved theme (Pro). Snapshots history on Pro accounts.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {
61
+ id: { type: "string", description: "Saved theme id" },
62
+ name: { type: "string", description: "New display name (optional)" },
63
+ document: {
64
+ type: "string",
65
+ description: "New theme.json text or raw config JSON (optional; omit to rename only)",
66
+ },
67
+ },
68
+ required: ["id"],
69
+ additionalProperties: false,
70
+ },
71
+ },
72
+ {
73
+ name: "generate_theme",
74
+ description: "Generate theme variations from a text description using shads.app hosted AI (Pro, counts against monthly AI quota)",
75
+ inputSchema: {
76
+ type: "object",
77
+ properties: {
78
+ description: {
79
+ type: "string",
80
+ description: `Visual brief, ${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars, e.g. 'calm journaling app, sage green, serif headings'`,
81
+ },
82
+ },
83
+ required: ["description"],
84
+ additionalProperties: false,
85
+ },
86
+ },
87
+ {
88
+ name: "check_subscription",
89
+ description: "Check the connected shads.app plan, MCP access, AI quota usage, and saved theme count",
90
+ inputSchema: {
91
+ type: "object",
92
+ properties: {},
93
+ additionalProperties: false,
94
+ },
95
+ },
96
+ ];
97
+ export const AUTHENTICATE_TOOL = {
98
+ name: "authenticate",
99
+ description: "Returns setup guidance for connecting a shads.app Pro API key to unlock saved-theme access and AI generation",
100
+ inputSchema: {
101
+ type: "object",
102
+ properties: {},
103
+ additionalProperties: false,
104
+ },
105
+ };
106
+ export function hasApiKeyConfigured() {
107
+ return readApiKey() !== null;
108
+ }
109
+ export function textResult(data, isError = false) {
110
+ return {
111
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
112
+ isError,
113
+ };
114
+ }
115
+ /**
116
+ * Runs a premium API call and normalizes errors into MCP tool results so the
117
+ * agent sees actionable text (invalid key, upgrade prompt, rate limit) rather
118
+ * than a thrown error.
119
+ */
120
+ export async function premiumCall(run) {
121
+ try {
122
+ return textResult(await run());
123
+ }
124
+ catch (cause) {
125
+ if (cause instanceof ShadsApiError) {
126
+ return textResult({ error: cause.message, status: cause.status }, true);
127
+ }
128
+ const message = cause instanceof Error ? cause.message : String(cause);
129
+ return textResult({ error: message }, true);
130
+ }
131
+ }
132
+ function extractJsonObject(source) {
133
+ return extractJsonFromText(source.trim());
134
+ }
135
+ /**
136
+ * Accepts either a full theme.json document (with `$schema`/`config`) or a
137
+ * bare config object, validates via @shadsapp/schema, and returns the config
138
+ * payload the API expects.
139
+ */
140
+ export function parseThemeConfigDocument(source) {
141
+ const result = parseThemeDocumentInput(source);
142
+ if (result.ok) {
143
+ return { ok: true, config: result.document.config };
144
+ }
145
+ // A bare config object (no $schema/config wrapper) fails document
146
+ // validation; retry treating the whole payload as config.
147
+ const jsonText = extractJsonObject(source);
148
+ if (jsonText) {
149
+ try {
150
+ const raw = JSON.parse(jsonText);
151
+ if (raw && typeof raw === "object" && !Array.isArray(raw)) {
152
+ return { ok: true, config: raw };
153
+ }
154
+ }
155
+ catch {
156
+ // fall through to the original errors
157
+ }
158
+ }
159
+ return { ok: false, errors: result.errors };
160
+ }
161
+ //# sourceMappingURL=premium-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium-tools.js","sourceRoot":"","sources":["../src/premium-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shadsapp/mcp",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server that lets AI agents list, fetch, and validate shads.app shadcn/ui themes",
5
5
  "type": "module",
6
6
  "license": "MIT",