@layoutdesign/context 0.1.7

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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +424 -0
  3. package/dist/bin/cli.d.ts +3 -0
  4. package/dist/bin/cli.d.ts.map +1 -0
  5. package/dist/bin/cli.js +57 -0
  6. package/dist/bin/cli.js.map +1 -0
  7. package/dist/src/cli/import-zip.d.ts +2 -0
  8. package/dist/src/cli/import-zip.d.ts.map +1 -0
  9. package/dist/src/cli/import-zip.js +156 -0
  10. package/dist/src/cli/import-zip.js.map +1 -0
  11. package/dist/src/cli/init.d.ts +4 -0
  12. package/dist/src/cli/init.d.ts.map +1 -0
  13. package/dist/src/cli/init.js +104 -0
  14. package/dist/src/cli/init.js.map +1 -0
  15. package/dist/src/cli/install.d.ts +5 -0
  16. package/dist/src/cli/install.d.ts.map +1 -0
  17. package/dist/src/cli/install.js +192 -0
  18. package/dist/src/cli/install.js.map +1 -0
  19. package/dist/src/cli/list.d.ts +2 -0
  20. package/dist/src/cli/list.d.ts.map +1 -0
  21. package/dist/src/cli/list.js +36 -0
  22. package/dist/src/cli/list.js.map +1 -0
  23. package/dist/src/cli/serve.d.ts +2 -0
  24. package/dist/src/cli/serve.d.ts.map +1 -0
  25. package/dist/src/cli/serve.js +9 -0
  26. package/dist/src/cli/serve.js.map +1 -0
  27. package/dist/src/cli/use.d.ts +2 -0
  28. package/dist/src/cli/use.d.ts.map +1 -0
  29. package/dist/src/cli/use.js +54 -0
  30. package/dist/src/cli/use.js.map +1 -0
  31. package/dist/src/compliance/checker.d.ts +23 -0
  32. package/dist/src/compliance/checker.d.ts.map +1 -0
  33. package/dist/src/compliance/checker.js +31 -0
  34. package/dist/src/compliance/checker.js.map +1 -0
  35. package/dist/src/compliance/rules.d.ts +11 -0
  36. package/dist/src/compliance/rules.d.ts.map +1 -0
  37. package/dist/src/compliance/rules.js +147 -0
  38. package/dist/src/compliance/rules.js.map +1 -0
  39. package/dist/src/index.d.ts +9 -0
  40. package/dist/src/index.d.ts.map +1 -0
  41. package/dist/src/index.js +6 -0
  42. package/dist/src/index.js.map +1 -0
  43. package/dist/src/kit/loader.d.ts +16 -0
  44. package/dist/src/kit/loader.d.ts.map +1 -0
  45. package/dist/src/kit/loader.js +98 -0
  46. package/dist/src/kit/loader.js.map +1 -0
  47. package/dist/src/kit/parser.d.ts +21 -0
  48. package/dist/src/kit/parser.d.ts.map +1 -0
  49. package/dist/src/kit/parser.js +98 -0
  50. package/dist/src/kit/parser.js.map +1 -0
  51. package/dist/src/kit/registry.d.ts +4 -0
  52. package/dist/src/kit/registry.d.ts.map +1 -0
  53. package/dist/src/kit/registry.js +91 -0
  54. package/dist/src/kit/registry.js.map +1 -0
  55. package/dist/src/kit/types.d.ts +51 -0
  56. package/dist/src/kit/types.d.ts.map +1 -0
  57. package/dist/src/kit/types.js +11 -0
  58. package/dist/src/kit/types.js.map +1 -0
  59. package/dist/src/mcp/server.d.ts +6 -0
  60. package/dist/src/mcp/server.d.ts.map +1 -0
  61. package/dist/src/mcp/server.js +56 -0
  62. package/dist/src/mcp/server.js.map +1 -0
  63. package/dist/src/mcp/tools/check-compliance.d.ts +16 -0
  64. package/dist/src/mcp/tools/check-compliance.d.ts.map +1 -0
  65. package/dist/src/mcp/tools/check-compliance.js +44 -0
  66. package/dist/src/mcp/tools/check-compliance.js.map +1 -0
  67. package/dist/src/mcp/tools/design-in-figma.d.ts +24 -0
  68. package/dist/src/mcp/tools/design-in-figma.d.ts.map +1 -0
  69. package/dist/src/mcp/tools/design-in-figma.js +202 -0
  70. package/dist/src/mcp/tools/design-in-figma.js.map +1 -0
  71. package/dist/src/mcp/tools/get-component.d.ts +16 -0
  72. package/dist/src/mcp/tools/get-component.d.ts.map +1 -0
  73. package/dist/src/mcp/tools/get-component.js +52 -0
  74. package/dist/src/mcp/tools/get-component.js.map +1 -0
  75. package/dist/src/mcp/tools/get-design-system.d.ts +16 -0
  76. package/dist/src/mcp/tools/get-design-system.d.ts.map +1 -0
  77. package/dist/src/mcp/tools/get-design-system.js +51 -0
  78. package/dist/src/mcp/tools/get-design-system.js.map +1 -0
  79. package/dist/src/mcp/tools/get-screenshots.d.ts +23 -0
  80. package/dist/src/mcp/tools/get-screenshots.d.ts.map +1 -0
  81. package/dist/src/mcp/tools/get-screenshots.js +78 -0
  82. package/dist/src/mcp/tools/get-screenshots.js.map +1 -0
  83. package/dist/src/mcp/tools/get-tokens.d.ts +20 -0
  84. package/dist/src/mcp/tools/get-tokens.d.ts.map +1 -0
  85. package/dist/src/mcp/tools/get-tokens.js +50 -0
  86. package/dist/src/mcp/tools/get-tokens.js.map +1 -0
  87. package/dist/src/mcp/tools/list-components.d.ts +11 -0
  88. package/dist/src/mcp/tools/list-components.d.ts.map +1 -0
  89. package/dist/src/mcp/tools/list-components.js +38 -0
  90. package/dist/src/mcp/tools/list-components.js.map +1 -0
  91. package/dist/src/mcp/tools/preview.d.ts +21 -0
  92. package/dist/src/mcp/tools/preview.d.ts.map +1 -0
  93. package/dist/src/mcp/tools/preview.js +63 -0
  94. package/dist/src/mcp/tools/preview.js.map +1 -0
  95. package/dist/src/mcp/tools/push-to-figma.d.ts +24 -0
  96. package/dist/src/mcp/tools/push-to-figma.d.ts.map +1 -0
  97. package/dist/src/mcp/tools/push-to-figma.js +101 -0
  98. package/dist/src/mcp/tools/push-to-figma.js.map +1 -0
  99. package/dist/src/mcp/tools/update-tokens.d.ts +21 -0
  100. package/dist/src/mcp/tools/update-tokens.d.ts.map +1 -0
  101. package/dist/src/mcp/tools/update-tokens.js +187 -0
  102. package/dist/src/mcp/tools/update-tokens.js.map +1 -0
  103. package/dist/src/mcp/tools/url-to-figma.d.ts +29 -0
  104. package/dist/src/mcp/tools/url-to-figma.d.ts.map +1 -0
  105. package/dist/src/mcp/tools/url-to-figma.js +103 -0
  106. package/dist/src/mcp/tools/url-to-figma.js.map +1 -0
  107. package/dist/src/preview/server.d.ts +15 -0
  108. package/dist/src/preview/server.d.ts.map +1 -0
  109. package/dist/src/preview/server.js +146 -0
  110. package/dist/src/preview/server.js.map +1 -0
  111. package/dist/src/preview/static/index.html +493 -0
  112. package/dist/src/preview/transpile.d.ts +10 -0
  113. package/dist/src/preview/transpile.d.ts.map +1 -0
  114. package/dist/src/preview/transpile.js +40 -0
  115. package/dist/src/preview/transpile.js.map +1 -0
  116. package/dist/src/preview/ws.d.ts +17 -0
  117. package/dist/src/preview/ws.d.ts.map +1 -0
  118. package/dist/src/preview/ws.js +66 -0
  119. package/dist/src/preview/ws.js.map +1 -0
  120. package/kits/linear-lite/DESIGN.md +421 -0
  121. package/kits/linear-lite/kit.json +12 -0
  122. package/kits/linear-lite/tokens.css +46 -0
  123. package/kits/linear-lite/tokens.json +47 -0
  124. package/kits/notion-lite/DESIGN.md +528 -0
  125. package/kits/notion-lite/kit.json +12 -0
  126. package/kits/notion-lite/tokens.css +50 -0
  127. package/kits/notion-lite/tokens.json +51 -0
  128. package/kits/stripe-lite/DESIGN.md +539 -0
  129. package/kits/stripe-lite/kit.json +12 -0
  130. package/kits/stripe-lite/tokens.css +57 -0
  131. package/kits/stripe-lite/tokens.json +58 -0
  132. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-zip.js","sourceRoot":"","sources":["../../../src/cli/import-zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function initCommand(options: {
2
+ kit?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AA0CA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB"}
@@ -0,0 +1,104 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import chalk from "chalk";
4
+ import { getBundledKitPath } from "../kit/loader.js";
5
+ import { findKitInRegistry } from "../kit/registry.js";
6
+ import { LAYOUT_DIR, DESIGN_MD_FILE, KIT_MANIFEST_FILE, } from "../kit/types.js";
7
+ const TEMPLATE_DESIGN_MD = `# Design System
8
+
9
+ > Generated by Layout Context CLI.
10
+ > Edit this file to describe your design system, then run your AI coding agent.
11
+
12
+ ## Colours
13
+
14
+ | Token | Value | Usage |
15
+ |-------|-------|-------|
16
+ | --color-primary | #6366F1 | Primary actions, links |
17
+ | --color-background | #FFFFFF | Page background |
18
+ | --color-foreground | #111111 | Body text |
19
+
20
+ ## Typography
21
+
22
+ - **Font family:** Inter, system-ui, sans-serif
23
+ - **Base size:** 16px
24
+ - **Scale:** 1.25 (Major Third)
25
+
26
+ ## Spacing
27
+
28
+ 4px base unit. Use multiples: 4, 8, 12, 16, 24, 32, 48, 64.
29
+
30
+ ## Components
31
+
32
+ Document your key components here. Each component should include:
33
+ - Name and description
34
+ - Token usage
35
+ - Code example
36
+ `;
37
+ export async function initCommand(options) {
38
+ const targetDir = path.join(process.cwd(), LAYOUT_DIR);
39
+ if (fs.existsSync(targetDir)) {
40
+ console.log(chalk.yellow("Warning:"), `.layout/ already exists in this directory.`);
41
+ console.log(`Use ${chalk.cyan("layout-context use <kit>")} to switch kits.`);
42
+ return;
43
+ }
44
+ if (options.kit) {
45
+ await initWithKit(options.kit, targetDir);
46
+ }
47
+ else {
48
+ await initBlank(targetDir);
49
+ }
50
+ console.log();
51
+ console.log(chalk.bold("Next steps:"));
52
+ console.log();
53
+ console.log(` ${chalk.dim("1.")} Edit ${chalk.cyan(`.layout/${DESIGN_MD_FILE}`)} with your design system`);
54
+ console.log(` ${chalk.dim("2.")} Add the MCP server to your AI coding agent:`);
55
+ console.log();
56
+ console.log(chalk.dim(" Claude Code (claude_desktop_config.json):"));
57
+ console.log(chalk.gray(` { "mcpServers": { "design": { "command": "npx", "args": ["@layoutdesign/context", "serve"] } } }`));
58
+ console.log();
59
+ console.log(chalk.dim(" Cursor (.cursor/mcp.json):"));
60
+ console.log(chalk.gray(` { "mcpServers": { "design": { "command": "npx", "args": ["@layoutdesign/context", "serve"] } } }`));
61
+ }
62
+ async function initWithKit(kitName, targetDir) {
63
+ // Check bundled kits first
64
+ const bundledPath = getBundledKitPath(kitName);
65
+ if (bundledPath) {
66
+ fs.cpSync(bundledPath, targetDir, { recursive: true });
67
+ console.log(chalk.green("✓"), `Initialised .layout/ with the ${chalk.bold(kitName)} kit.`);
68
+ return;
69
+ }
70
+ // Check registry
71
+ const registryEntry = findKitInRegistry(kitName);
72
+ if (registryEntry) {
73
+ if (registryEntry.tier === "pro") {
74
+ console.log(chalk.yellow("Pro kit:"), `${chalk.bold(registryEntry.displayName)} is a premium kit (${chalk.yellow(registryEntry.price ?? "paid")}).`);
75
+ console.log();
76
+ console.log(` Purchase at ${chalk.cyan("https://layout.design/kits/" + kitName)}`);
77
+ console.log(` Then import with: ${chalk.cyan(`layout-context import <path-to-zip>`)}`);
78
+ return;
79
+ }
80
+ // Free registry kit that isn't bundled — shouldn't happen but handle gracefully
81
+ console.log(chalk.red("Error:"), `Kit "${kitName}" is listed in the registry but not bundled. This may be a packaging issue.`);
82
+ return;
83
+ }
84
+ console.log(chalk.red("Error:"), `Kit "${kitName}" not found.`);
85
+ console.log(`Run ${chalk.cyan("layout-context list")} to see available kits.`);
86
+ }
87
+ async function initBlank(targetDir) {
88
+ fs.mkdirSync(targetDir, { recursive: true });
89
+ const manifest = {
90
+ name: "custom",
91
+ version: "1.0.0",
92
+ displayName: "Custom",
93
+ description: "Your custom design system",
94
+ source: "manual",
95
+ tier: "free",
96
+ tokenCount: 0,
97
+ componentCount: 0,
98
+ aesthetic: "",
99
+ };
100
+ fs.writeFileSync(path.join(targetDir, KIT_MANIFEST_FILE), JSON.stringify(manifest, null, 2) + "\n");
101
+ fs.writeFileSync(path.join(targetDir, DESIGN_MD_FILE), TEMPLATE_DESIGN_MD);
102
+ console.log(chalk.green("✓"), "Initialised .layout/ with a blank design system template.");
103
+ }
104
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function installCommand(options: {
2
+ target?: string;
3
+ global?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"AAmKA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFhB"}
@@ -0,0 +1,192 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { execFileSync } from "node:child_process";
4
+ import chalk from "chalk";
5
+ const MCP_CONFIG = {
6
+ command: "npx",
7
+ args: ["-y", "@layoutdesign/context", "serve"],
8
+ };
9
+ const TARGET_INFO = {
10
+ claude: {
11
+ label: "Claude Code",
12
+ configPath: ".claude/settings.json",
13
+ serverKey: "layout",
14
+ },
15
+ cursor: {
16
+ label: "Cursor",
17
+ configPath: ".cursor/mcp.json",
18
+ serverKey: "layout",
19
+ },
20
+ windsurf: {
21
+ label: "Windsurf",
22
+ configPath: ".windsurf/mcp.json",
23
+ serverKey: "layout",
24
+ },
25
+ };
26
+ function detectTargets() {
27
+ const cwd = process.cwd();
28
+ const detected = [];
29
+ // Claude Code — check if `claude` CLI is available
30
+ try {
31
+ execFileSync("which", ["claude"], { stdio: "ignore" });
32
+ detected.push("claude");
33
+ }
34
+ catch {
35
+ // Also detect by directory presence as fallback
36
+ if (fs.existsSync(path.join(cwd, ".claude")) ||
37
+ fs.existsSync(path.join(cwd, "CLAUDE.md"))) {
38
+ detected.push("claude");
39
+ }
40
+ }
41
+ // Cursor — .cursor/ dir or .cursorrules
42
+ if (fs.existsSync(path.join(cwd, ".cursor")) ||
43
+ fs.existsSync(path.join(cwd, ".cursorrules"))) {
44
+ detected.push("cursor");
45
+ }
46
+ // Windsurf — .windsurf/ dir
47
+ if (fs.existsSync(path.join(cwd, ".windsurf"))) {
48
+ detected.push("windsurf");
49
+ }
50
+ return detected;
51
+ }
52
+ /**
53
+ * Install for Claude Code using the `claude mcp add` CLI command.
54
+ * This is the reliable way — writing settings.json directly doesn't always work.
55
+ */
56
+ function addClaudeMcpServer(global) {
57
+ // Check if already installed via `claude mcp list`
58
+ try {
59
+ const list = execFileSync("claude", ["mcp", "list"], {
60
+ encoding: "utf-8",
61
+ stdio: ["pipe", "pipe", "pipe"],
62
+ });
63
+ if (list.includes("layout")) {
64
+ console.log(chalk.dim(" ↳"), "Claude Code: already configured");
65
+ return false;
66
+ }
67
+ }
68
+ catch {
69
+ // claude CLI not available or mcp list failed — try adding anyway
70
+ }
71
+ try {
72
+ const args = ["mcp", "add"];
73
+ if (global) {
74
+ args.push("--scope", "user");
75
+ }
76
+ args.push("layout", "--", "npx", "-y", "@layoutdesign/context", "serve");
77
+ execFileSync("claude", args, { stdio: ["pipe", "pipe", "pipe"] });
78
+ const scopeLabel = global ? "globally" : "for this project";
79
+ console.log(chalk.green(" ✓"), `Claude Code: registered ${scopeLabel} via claude mcp add`);
80
+ return true;
81
+ }
82
+ catch {
83
+ // Fallback to writing settings.json directly
84
+ console.log(chalk.dim(" ↳"), "claude CLI not available, falling back to settings.json");
85
+ return addMcpServerViaFile("claude");
86
+ }
87
+ }
88
+ /**
89
+ * Install for Cursor/Windsurf by writing to their MCP config files.
90
+ */
91
+ function addMcpServerViaFile(target) {
92
+ const info = TARGET_INFO[target];
93
+ const configFile = path.join(process.cwd(), info.configPath);
94
+ const configDir = path.dirname(configFile);
95
+ // Read existing config or start fresh
96
+ let config = {};
97
+ if (fs.existsSync(configFile)) {
98
+ try {
99
+ config = JSON.parse(fs.readFileSync(configFile, "utf-8"));
100
+ }
101
+ catch {
102
+ console.log(chalk.yellow("Warning:"), `Could not parse ${info.configPath}, creating new config.`);
103
+ }
104
+ }
105
+ // Check if already configured
106
+ if (config.mcpServers && info.serverKey in config.mcpServers) {
107
+ console.log(chalk.dim(" ↳"), `${info.label}: already configured in ${info.configPath}`);
108
+ return false;
109
+ }
110
+ // Add the server
111
+ if (!config.mcpServers) {
112
+ config.mcpServers = {};
113
+ }
114
+ config.mcpServers[info.serverKey] = MCP_CONFIG;
115
+ // Write config
116
+ fs.mkdirSync(configDir, { recursive: true });
117
+ fs.writeFileSync(configFile, JSON.stringify(config, null, 2) + "\n");
118
+ console.log(chalk.green(" ✓"), `${info.label}: added to ${info.configPath}`);
119
+ return true;
120
+ }
121
+ export async function installCommand(options) {
122
+ console.log();
123
+ console.log(chalk.bold("Layout — Installing MCP server"));
124
+ if (options.global) {
125
+ console.log(chalk.dim(" Scope: global (available in all projects)"));
126
+ }
127
+ else {
128
+ console.log(chalk.dim(" Scope: project (this project only)"));
129
+ }
130
+ console.log();
131
+ // Check .layout/ exists
132
+ const hasLayout = fs.existsSync(path.join(process.cwd(), ".layout"));
133
+ if (!hasLayout) {
134
+ console.log(chalk.yellow("Note:"), "No .layout/ directory found. Run", chalk.cyan("npx @layoutdesign/context init"), "first, or import a Studio export ZIP.");
135
+ console.log();
136
+ }
137
+ let targets;
138
+ if (options.target) {
139
+ const t = options.target.toLowerCase();
140
+ if (!(t in TARGET_INFO)) {
141
+ console.log(chalk.red("Error:"), `Unknown target "${options.target}". Use: claude, cursor, or windsurf`);
142
+ return;
143
+ }
144
+ targets = [t];
145
+ }
146
+ else {
147
+ // Auto-detect
148
+ targets = detectTargets();
149
+ if (targets.length === 0) {
150
+ console.log(chalk.dim(" No AI coding tools detected. Installing for Claude Code by default."));
151
+ targets = ["claude"];
152
+ }
153
+ else {
154
+ console.log(chalk.dim(` Detected: ${targets.map((t) => TARGET_INFO[t].label).join(", ")}`));
155
+ }
156
+ }
157
+ console.log();
158
+ let installed = 0;
159
+ for (const target of targets) {
160
+ if (target === "claude") {
161
+ if (addClaudeMcpServer(options.global ?? false))
162
+ installed++;
163
+ }
164
+ else {
165
+ if (addMcpServerViaFile(target))
166
+ installed++;
167
+ }
168
+ }
169
+ console.log();
170
+ if (installed > 0) {
171
+ console.log(chalk.green("Done!"), "Your AI agent now has access to your design system.");
172
+ console.log();
173
+ console.log(chalk.yellow("→"), "Restart your AI coding tool to activate the MCP server.");
174
+ console.log();
175
+ console.log(chalk.dim(" When building UI, your agent will automatically use your"));
176
+ console.log(chalk.dim(" design tokens, components, and brand rules to stay on-brand."));
177
+ console.log();
178
+ console.log(chalk.bold("Optional: Enable Figma integration"));
179
+ console.log();
180
+ console.log(chalk.dim(" For push-to-Figma and URL-to-Figma features, connect these MCP servers:"));
181
+ console.log();
182
+ console.log(` ${chalk.cyan("claude mcp add --transport http figma https://mcp.figma.com/mcp")}`);
183
+ console.log(chalk.dim(" Push components and designs to Figma (OAuth — no API key needed)"));
184
+ console.log();
185
+ console.log(chalk.dim(" Playwright MCP is also needed for URL-to-Figma capture."));
186
+ }
187
+ else {
188
+ console.log(chalk.dim(" Nothing to do — all targets already configured."));
189
+ }
190
+ console.log();
191
+ }
192
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function listCommand(): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA8CjD"}
@@ -0,0 +1,36 @@
1
+ import chalk from "chalk";
2
+ import { listBundledKits } from "../kit/loader.js";
3
+ import { getRegistry } from "../kit/registry.js";
4
+ export async function listCommand() {
5
+ const bundled = new Set(listBundledKits());
6
+ const registry = getRegistry();
7
+ console.log();
8
+ console.log(chalk.bold("Available Design Kits"));
9
+ console.log();
10
+ // Calculate column widths for alignment
11
+ const nameWidth = Math.max(...registry.map((e) => e.name.length), 8) + 2;
12
+ const displayWidth = Math.max(...registry.map((e) => e.displayName.length), 8) + 2;
13
+ for (const entry of registry) {
14
+ const name = entry.name.padEnd(nameWidth);
15
+ const displayName = entry.displayName.padEnd(displayWidth);
16
+ const description = entry.description;
17
+ const isBundled = bundled.has(entry.name);
18
+ let tag;
19
+ if (entry.tier === "free") {
20
+ tag = isBundled
21
+ ? chalk.green("[free]")
22
+ : chalk.green("[free]") + chalk.dim(" (registry)");
23
+ }
24
+ else {
25
+ tag = chalk.yellow(entry.price ?? "paid");
26
+ }
27
+ console.log(` ${chalk.cyan(name)} ${chalk.white(displayName)} ${chalk.dim(description)} ${tag}`);
28
+ }
29
+ console.log();
30
+ console.log(chalk.dim("Commands:"));
31
+ console.log(` ${chalk.cyan("layout-context init --kit <name>")} Scaffold with a kit`);
32
+ console.log(` ${chalk.cyan("layout-context use <name>")} Switch to a different kit`);
33
+ console.log(` ${chalk.cyan("layout-context import <zip>")} Import a Layout export`);
34
+ console.log();
35
+ }
36
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,wCAAwC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,GAAW,CAAC;QAChB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,GAAG,GAAG,SAAS;gBACb,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,uBAAuB,CAC3E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,qCAAqC,CAClF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,gCAAgC,CAC/E,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function serveCommand(): Promise<void>;
2
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/serve.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlD"}
@@ -0,0 +1,9 @@
1
+ import chalk from "chalk";
2
+ import { startServer } from "../mcp/server.js";
3
+ export async function serveCommand() {
4
+ // Log to stderr — stdout is reserved for MCP stdio transport
5
+ process.stderr.write(chalk.dim("[layout-context]") +
6
+ " MCP server starting on stdio transport...\n");
7
+ await startServer();
8
+ }
9
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC3B,8CAA8C,CACjD,CAAC;IAEF,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function useCommand(kitName: string): Promise<void>;
2
+ //# sourceMappingURL=use.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/cli/use.ts"],"names":[],"mappings":"AAOA,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E/D"}
@@ -0,0 +1,54 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import chalk from "chalk";
4
+ import { getBundledKitPath, listBundledKits } from "../kit/loader.js";
5
+ import { findKitInRegistry, getRegistry } from "../kit/registry.js";
6
+ import { LAYOUT_DIR } from "../kit/types.js";
7
+ export async function useCommand(kitName) {
8
+ const targetDir = path.join(process.cwd(), LAYOUT_DIR);
9
+ // Check bundled kits first
10
+ const bundledPath = getBundledKitPath(kitName);
11
+ if (bundledPath) {
12
+ fs.cpSync(bundledPath, targetDir, { recursive: true });
13
+ console.log(chalk.green("✓"), `Installed the ${chalk.bold(kitName)} kit into .layout/`);
14
+ console.log();
15
+ console.log(`Run ${chalk.cyan("layout-context serve")} to start the MCP server.`);
16
+ return;
17
+ }
18
+ // Check registry
19
+ const registryEntry = findKitInRegistry(kitName);
20
+ if (registryEntry) {
21
+ if (registryEntry.tier === "pro") {
22
+ console.log(chalk.yellow("Pro kit:"), `${chalk.bold(registryEntry.displayName)} is a premium kit (${chalk.yellow(registryEntry.price ?? "paid")}).`);
23
+ console.log();
24
+ console.log(` Purchase at ${chalk.cyan("https://layout.design/kits/" + kitName)}`);
25
+ console.log(` Then import with: ${chalk.cyan(`layout-context import <path-to-zip>`)}`);
26
+ return;
27
+ }
28
+ // Free registry kit not bundled — packaging issue
29
+ console.log(chalk.red("Error:"), `Kit "${kitName}" is listed as free but not bundled. This may be a packaging issue.`);
30
+ return;
31
+ }
32
+ // Not found
33
+ console.log(chalk.red("Error:"), `Kit "${kitName}" not found.`);
34
+ console.log();
35
+ const bundled = listBundledKits();
36
+ const registry = getRegistry();
37
+ if (bundled.length > 0) {
38
+ console.log(chalk.dim("Bundled (free):"));
39
+ for (const name of bundled) {
40
+ console.log(` ${chalk.green("•")} ${name}`);
41
+ }
42
+ console.log();
43
+ }
44
+ const proKits = registry.filter((e) => e.tier === "pro");
45
+ if (proKits.length > 0) {
46
+ console.log(chalk.dim("Premium:"));
47
+ for (const kit of proKits) {
48
+ console.log(` ${chalk.yellow("•")} ${kit.name} — ${kit.displayName} (${chalk.yellow(kit.price ?? "paid")})`);
49
+ }
50
+ console.log();
51
+ }
52
+ console.log(`Run ${chalk.cyan("layout-context list")} for full details.`);
53
+ }
54
+ //# sourceMappingURL=use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/cli/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAEvD,2BAA2B;IAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,WAAW,EAAE,CAAC;QAChB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAChB,iBAAiB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CACzD,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,CACrE,CAAC;QACF,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EACxB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAC9G,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,iBAAiB,KAAK,CAAC,IAAI,CAAC,6BAA6B,GAAG,OAAO,CAAC,EAAE,CACvE,CAAC;YACF,OAAO,CAAC,GAAG,CACT,uBAAuB,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,EAAE,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QAED,kDAAkD;QAClD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,QAAQ,OAAO,qEAAqE,CACrF,CAAC;QACF,OAAO;IACT,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,OAAO,cAAc,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CACjG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Kit } from "../kit/types.js";
2
+ import type { ComplianceRule } from "./rules.js";
3
+ export interface ComplianceIssue {
4
+ ruleId: string;
5
+ ruleName: string;
6
+ severity: "error" | "warning" | "info";
7
+ message: string;
8
+ line?: number;
9
+ }
10
+ export interface ComplianceResult {
11
+ passed: boolean;
12
+ issues: ComplianceIssue[];
13
+ summary: string;
14
+ }
15
+ /**
16
+ * Runs all compliance rules against the given code snippet and kit,
17
+ * returning a result with collected issues and a pass/fail status.
18
+ *
19
+ * `passed` is true when there are no "error" severity issues.
20
+ * Warnings and info-level issues do not cause failure.
21
+ */
22
+ export declare function checkCompliance(code: string, kit: Kit, rules?: ComplianceRule[]): ComplianceResult;
23
+ //# sourceMappingURL=checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/compliance/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,KAAK,GAAE,cAAc,EAAiB,GACrC,gBAAgB,CAwBlB"}
@@ -0,0 +1,31 @@
1
+ import { defaultRules } from "./rules.js";
2
+ /**
3
+ * Runs all compliance rules against the given code snippet and kit,
4
+ * returning a result with collected issues and a pass/fail status.
5
+ *
6
+ * `passed` is true when there are no "error" severity issues.
7
+ * Warnings and info-level issues do not cause failure.
8
+ */
9
+ export function checkCompliance(code, kit, rules = defaultRules) {
10
+ const issues = [];
11
+ for (const rule of rules) {
12
+ const ruleIssues = rule.check(code, kit);
13
+ issues.push(...ruleIssues);
14
+ }
15
+ const errorCount = issues.filter((i) => i.severity === "error").length;
16
+ const warningCount = issues.filter((i) => i.severity === "warning").length;
17
+ const infoCount = issues.filter((i) => i.severity === "info").length;
18
+ const passed = errorCount === 0;
19
+ const parts = [];
20
+ if (errorCount > 0)
21
+ parts.push(`${errorCount} error${errorCount > 1 ? "s" : ""}`);
22
+ if (warningCount > 0)
23
+ parts.push(`${warningCount} warning${warningCount > 1 ? "s" : ""}`);
24
+ if (infoCount > 0)
25
+ parts.push(`${infoCount} info`);
26
+ const summary = parts.length === 0
27
+ ? "No issues found — code is compliant."
28
+ : `${passed ? "Passed" : "Failed"} with ${parts.join(", ")}.`;
29
+ return { passed, issues, summary };
30
+ }
31
+ //# sourceMappingURL=checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/compliance/checker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiB1C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,GAAQ,EACR,QAA0B,YAAY;IAEtC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,MAAM,GAAG,UAAU,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,SAAS,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,IAAI,YAAY,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,WAAW,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,SAAS,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,OAAO,CAAC,CAAC;IAEnD,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,KAAK,CAAC;QAChB,CAAC,CAAC,sCAAsC;QACxC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAElE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Kit } from "../kit/types.js";
2
+ import type { ComplianceIssue } from "./checker.js";
3
+ export interface ComplianceRule {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ severity: "error" | "warning" | "info";
8
+ check(code: string, kit: Kit): ComplianceIssue[];
9
+ }
10
+ export declare const defaultRules: ComplianceRule[];
11
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/compliance/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe,EAAE,CAAC;CAClD;AA0KD,eAAO,MAAM,YAAY,EAAE,cAAc,EAKxC,CAAC"}