@tekton-ui/mcp-server 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +980 -0
  3. package/dist/auth/cache.d.ts +28 -0
  4. package/dist/auth/cache.d.ts.map +1 -0
  5. package/dist/auth/cache.js +48 -0
  6. package/dist/auth/cache.js.map +1 -0
  7. package/dist/auth/guard.d.ts +13 -0
  8. package/dist/auth/guard.d.ts.map +1 -0
  9. package/dist/auth/guard.js +21 -0
  10. package/dist/auth/guard.js.map +1 -0
  11. package/dist/auth/state.d.ts +32 -0
  12. package/dist/auth/state.d.ts.map +1 -0
  13. package/dist/auth/state.js +72 -0
  14. package/dist/auth/state.js.map +1 -0
  15. package/dist/auth/theme-access.d.ts +10 -0
  16. package/dist/auth/theme-access.d.ts.map +1 -0
  17. package/dist/auth/theme-access.js +24 -0
  18. package/dist/auth/theme-access.js.map +1 -0
  19. package/dist/auth/verify.d.ts +44 -0
  20. package/dist/auth/verify.d.ts.map +1 -0
  21. package/dist/auth/verify.js +77 -0
  22. package/dist/auth/verify.js.map +1 -0
  23. package/dist/cli/credentials.d.ts +29 -0
  24. package/dist/cli/credentials.d.ts.map +1 -0
  25. package/dist/cli/credentials.js +66 -0
  26. package/dist/cli/credentials.js.map +1 -0
  27. package/dist/cli/index.d.ts +7 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +36 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/login.d.ts +9 -0
  32. package/dist/cli/login.d.ts.map +1 -0
  33. package/dist/cli/login.js +120 -0
  34. package/dist/cli/login.js.map +1 -0
  35. package/dist/cli/logout.d.ts +9 -0
  36. package/dist/cli/logout.d.ts.map +1 -0
  37. package/dist/cli/logout.js +18 -0
  38. package/dist/cli/logout.js.map +1 -0
  39. package/dist/cli/status.d.ts +9 -0
  40. package/dist/cli/status.d.ts.map +1 -0
  41. package/dist/cli/status.js +31 -0
  42. package/dist/cli/status.js.map +1 -0
  43. package/dist/data/component-registry.d.ts +30 -0
  44. package/dist/data/component-registry.d.ts.map +1 -0
  45. package/dist/data/component-registry.js +320 -0
  46. package/dist/data/component-registry.js.map +1 -0
  47. package/dist/data/examples/screen-examples.d.ts +38 -0
  48. package/dist/data/examples/screen-examples.d.ts.map +1 -0
  49. package/dist/data/examples/screen-examples.js +500 -0
  50. package/dist/data/examples/screen-examples.js.map +1 -0
  51. package/dist/data/hint-generator.d.ts +16 -0
  52. package/dist/data/hint-generator.d.ts.map +1 -0
  53. package/dist/data/hint-generator.js +298 -0
  54. package/dist/data/hint-generator.js.map +1 -0
  55. package/dist/data/recipe-resolver.d.ts +48 -0
  56. package/dist/data/recipe-resolver.d.ts.map +1 -0
  57. package/dist/data/recipe-resolver.js +226 -0
  58. package/dist/data/recipe-resolver.js.map +1 -0
  59. package/dist/data/template-matcher.d.ts +50 -0
  60. package/dist/data/template-matcher.d.ts.map +1 -0
  61. package/dist/data/template-matcher.js +240 -0
  62. package/dist/data/template-matcher.js.map +1 -0
  63. package/dist/generators/core-resolver.d.ts +56 -0
  64. package/dist/generators/core-resolver.d.ts.map +1 -0
  65. package/dist/generators/core-resolver.js +490 -0
  66. package/dist/generators/core-resolver.js.map +1 -0
  67. package/dist/generators/css-generator.d.ts +49 -0
  68. package/dist/generators/css-generator.d.ts.map +1 -0
  69. package/dist/generators/css-generator.js +294 -0
  70. package/dist/generators/css-generator.js.map +1 -0
  71. package/dist/generators/index.d.ts +13 -0
  72. package/dist/generators/index.d.ts.map +1 -0
  73. package/dist/generators/index.js +16 -0
  74. package/dist/generators/index.js.map +1 -0
  75. package/dist/generators/llm-generator.d.ts +96 -0
  76. package/dist/generators/llm-generator.d.ts.map +1 -0
  77. package/dist/generators/llm-generator.js +296 -0
  78. package/dist/generators/llm-generator.js.map +1 -0
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +818 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/schemas/mcp-schemas.d.ts +4132 -0
  84. package/dist/schemas/mcp-schemas.d.ts.map +1 -0
  85. package/dist/schemas/mcp-schemas.js +946 -0
  86. package/dist/schemas/mcp-schemas.js.map +1 -0
  87. package/dist/storage/blueprint-storage.d.ts +68 -0
  88. package/dist/storage/blueprint-storage.d.ts.map +1 -0
  89. package/dist/storage/blueprint-storage.js +135 -0
  90. package/dist/storage/blueprint-storage.js.map +1 -0
  91. package/dist/storage/timestamp-manager.d.ts +32 -0
  92. package/dist/storage/timestamp-manager.d.ts.map +1 -0
  93. package/dist/storage/timestamp-manager.js +59 -0
  94. package/dist/storage/timestamp-manager.js.map +1 -0
  95. package/dist/tools/export-screen.d.ts +34 -0
  96. package/dist/tools/export-screen.d.ts.map +1 -0
  97. package/dist/tools/export-screen.js +344 -0
  98. package/dist/tools/export-screen.js.map +1 -0
  99. package/dist/tools/generate-blueprint.d.ts +15 -0
  100. package/dist/tools/generate-blueprint.d.ts.map +1 -0
  101. package/dist/tools/generate-blueprint.js +165 -0
  102. package/dist/tools/generate-blueprint.js.map +1 -0
  103. package/dist/tools/generate-screen.d.ts +13 -0
  104. package/dist/tools/generate-screen.d.ts.map +1 -0
  105. package/dist/tools/generate-screen.js +82 -0
  106. package/dist/tools/generate-screen.js.map +1 -0
  107. package/dist/tools/get-screen-generation-context.d.ts +11 -0
  108. package/dist/tools/get-screen-generation-context.d.ts.map +1 -0
  109. package/dist/tools/get-screen-generation-context.js +316 -0
  110. package/dist/tools/get-screen-generation-context.js.map +1 -0
  111. package/dist/tools/list-components.d.ts +15 -0
  112. package/dist/tools/list-components.d.ts.map +1 -0
  113. package/dist/tools/list-components.js +46 -0
  114. package/dist/tools/list-components.js.map +1 -0
  115. package/dist/tools/list-icon-libraries.d.ts +12 -0
  116. package/dist/tools/list-icon-libraries.d.ts.map +1 -0
  117. package/dist/tools/list-icon-libraries.js +48 -0
  118. package/dist/tools/list-icon-libraries.js.map +1 -0
  119. package/dist/tools/list-screen-templates.d.ts +15 -0
  120. package/dist/tools/list-screen-templates.d.ts.map +1 -0
  121. package/dist/tools/list-screen-templates.js +63 -0
  122. package/dist/tools/list-screen-templates.js.map +1 -0
  123. package/dist/tools/list-themes.d.ts +13 -0
  124. package/dist/tools/list-themes.d.ts.map +1 -0
  125. package/dist/tools/list-themes.js +42 -0
  126. package/dist/tools/list-themes.js.map +1 -0
  127. package/dist/tools/list-tokens.d.ts +13 -0
  128. package/dist/tools/list-tokens.d.ts.map +1 -0
  129. package/dist/tools/list-tokens.js +92 -0
  130. package/dist/tools/list-tokens.js.map +1 -0
  131. package/dist/tools/preview-component.d.ts +18 -0
  132. package/dist/tools/preview-component.d.ts.map +1 -0
  133. package/dist/tools/preview-component.js +178 -0
  134. package/dist/tools/preview-component.js.map +1 -0
  135. package/dist/tools/preview-icon-library.d.ts +13 -0
  136. package/dist/tools/preview-icon-library.d.ts.map +1 -0
  137. package/dist/tools/preview-icon-library.js +63 -0
  138. package/dist/tools/preview-icon-library.js.map +1 -0
  139. package/dist/tools/preview-screen-template.d.ts +18 -0
  140. package/dist/tools/preview-screen-template.d.ts.map +1 -0
  141. package/dist/tools/preview-screen-template.js +101 -0
  142. package/dist/tools/preview-screen-template.js.map +1 -0
  143. package/dist/tools/preview-theme.d.ts +15 -0
  144. package/dist/tools/preview-theme.d.ts.map +1 -0
  145. package/dist/tools/preview-theme.js +71 -0
  146. package/dist/tools/preview-theme.js.map +1 -0
  147. package/dist/tools/validate-environment.d.ts +37 -0
  148. package/dist/tools/validate-environment.d.ts.map +1 -0
  149. package/dist/tools/validate-environment.js +153 -0
  150. package/dist/tools/validate-environment.js.map +1 -0
  151. package/dist/tools/validate-screen-definition.d.ts +10 -0
  152. package/dist/tools/validate-screen-definition.d.ts.map +1 -0
  153. package/dist/tools/validate-screen-definition.js +463 -0
  154. package/dist/tools/validate-screen-definition.js.map +1 -0
  155. package/dist/tools/validate-screen.d.ts +13 -0
  156. package/dist/tools/validate-screen.d.ts.map +1 -0
  157. package/dist/tools/validate-screen.js +106 -0
  158. package/dist/tools/validate-screen.js.map +1 -0
  159. package/dist/utils/dependency-extractor.d.ts +13 -0
  160. package/dist/utils/dependency-extractor.d.ts.map +1 -0
  161. package/dist/utils/dependency-extractor.js +232 -0
  162. package/dist/utils/dependency-extractor.js.map +1 -0
  163. package/dist/utils/error-handler.d.ts +29 -0
  164. package/dist/utils/error-handler.d.ts.map +1 -0
  165. package/dist/utils/error-handler.js +48 -0
  166. package/dist/utils/error-handler.js.map +1 -0
  167. package/dist/utils/logger.d.ts +8 -0
  168. package/dist/utils/logger.d.ts.map +1 -0
  169. package/dist/utils/logger.js +14 -0
  170. package/dist/utils/logger.js.map +1 -0
  171. package/dist/utils/package-json-reader.d.ts +37 -0
  172. package/dist/utils/package-json-reader.d.ts.map +1 -0
  173. package/dist/utils/package-json-reader.js +108 -0
  174. package/dist/utils/package-json-reader.js.map +1 -0
  175. package/dist/utils/tailwind-config-reader.d.ts +23 -0
  176. package/dist/utils/tailwind-config-reader.d.ts.map +1 -0
  177. package/dist/utils/tailwind-config-reader.js +81 -0
  178. package/dist/utils/tailwind-config-reader.js.map +1 -0
  179. package/package.json +72 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * tekton-mcp login 명령어
3
+ * 브라우저 OAuth → API Key 자동 저장
4
+ */
5
+ import http from 'node:http';
6
+ import crypto from 'node:crypto';
7
+ import { exec } from 'node:child_process';
8
+ import { saveCredentials } from './credentials.js';
9
+ const LOGIN_TIMEOUT_MS = 5 * 60 * 1000; // 5분
10
+ const DEFAULT_API_URL = 'https://tekton-ui.com';
11
+ /**
12
+ * 플랫폼별 브라우저 열기
13
+ */
14
+ function openBrowser(url) {
15
+ const platform = process.platform;
16
+ let cmd;
17
+ if (platform === 'darwin') {
18
+ cmd = `open "${url}"`;
19
+ }
20
+ else if (platform === 'win32') {
21
+ cmd = `start "" "${url}"`;
22
+ }
23
+ else {
24
+ cmd = `xdg-open "${url}"`;
25
+ }
26
+ exec(cmd, (err) => {
27
+ if (err) {
28
+ console.error(`\nCould not open browser automatically.`);
29
+ console.error(`Please open this URL manually:\n ${url}\n`);
30
+ }
31
+ });
32
+ }
33
+ /**
34
+ * OAuth 로그인 플로우 실행
35
+ */
36
+ export async function loginCommand() {
37
+ const apiUrl = process.env.TEKTON_API_URL || DEFAULT_API_URL;
38
+ // 1. CSRF state 생성
39
+ const state = crypto.randomBytes(32).toString('hex');
40
+ // 2. localhost 임시 서버 시작 (랜덤 포트)
41
+ return new Promise((resolve, reject) => {
42
+ const server = http.createServer((req, res) => {
43
+ if (!req.url?.startsWith('/callback')) {
44
+ res.writeHead(404);
45
+ res.end('Not found');
46
+ return;
47
+ }
48
+ const url = new URL(req.url, `http://localhost`);
49
+ const key = url.searchParams.get('key');
50
+ const email = url.searchParams.get('email');
51
+ const returnedState = url.searchParams.get('state');
52
+ // CSRF state 검증
53
+ if (returnedState !== state) {
54
+ res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
55
+ res.end('<html><body><h1>Authentication failed</h1><p>Invalid state parameter. Please try again.</p></body></html>');
56
+ cleanup('State mismatch. Authentication aborted.');
57
+ return;
58
+ }
59
+ if (!key || !email) {
60
+ res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
61
+ res.end('<html><body><h1>Authentication failed</h1><p>Missing credentials. Please try again.</p></body></html>');
62
+ cleanup('Missing key or email in callback.');
63
+ return;
64
+ }
65
+ // 크레덴셜 저장
66
+ try {
67
+ saveCredentials({
68
+ api_key: key,
69
+ api_url: apiUrl,
70
+ created_at: new Date().toISOString(),
71
+ user_email: email,
72
+ });
73
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
74
+ res.end('<html><body style="font-family:system-ui;text-align:center;padding:60px">' +
75
+ '<h1>Authentication successful!</h1>' +
76
+ '<p>You can close this tab and return to the terminal.</p>' +
77
+ '</body></html>');
78
+ console.log(`\nAuthenticated as ${email}`);
79
+ console.log('Credentials saved to ~/.tekton/credentials.json');
80
+ cleanup();
81
+ }
82
+ catch (err) {
83
+ res.writeHead(500, { 'Content-Type': 'text/html; charset=utf-8' });
84
+ res.end('<html><body><h1>Error</h1><p>Failed to save credentials.</p></body></html>');
85
+ cleanup(`Failed to save credentials: ${err}`);
86
+ }
87
+ });
88
+ let timeout;
89
+ function cleanup(errorMsg) {
90
+ clearTimeout(timeout);
91
+ server.close();
92
+ if (errorMsg) {
93
+ reject(new Error(errorMsg));
94
+ }
95
+ else {
96
+ resolve();
97
+ }
98
+ }
99
+ // 타임아웃 (5분)
100
+ timeout = setTimeout(() => {
101
+ console.error('\nLogin timed out (5 minutes). Please try again.');
102
+ cleanup('Login timed out.');
103
+ }, LOGIN_TIMEOUT_MS);
104
+ // 랜덤 포트 할당 (port 0)
105
+ server.listen(0, '127.0.0.1', () => {
106
+ const addr = server.address();
107
+ if (!addr || typeof addr === 'string') {
108
+ cleanup('Failed to start callback server.');
109
+ return;
110
+ }
111
+ const port = addr.port;
112
+ const authUrl = `${apiUrl}/mcp/auth?callback_port=${port}&state=${state}`;
113
+ console.log('Opening browser for authentication...');
114
+ console.log(`\nIf the browser does not open, visit:\n ${authUrl}\n`);
115
+ console.log('Waiting for authentication...');
116
+ openBrowser(authUrl);
117
+ });
118
+ });
119
+ }
120
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * tekton-mcp logout 명령어
3
+ * ~/.tekton/credentials.json 삭제
4
+ */
5
+ /**
6
+ * 로그아웃 (크레덴셜 삭제)
7
+ */
8
+ export declare function logoutCommand(): void;
9
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/cli/logout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAQpC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * tekton-mcp logout 명령어
3
+ * ~/.tekton/credentials.json 삭제
4
+ */
5
+ import { deleteCredentials } from './credentials.js';
6
+ /**
7
+ * 로그아웃 (크레덴셜 삭제)
8
+ */
9
+ export function logoutCommand() {
10
+ const deleted = deleteCredentials();
11
+ if (deleted) {
12
+ console.log('Credentials removed.');
13
+ }
14
+ else {
15
+ console.log('No credentials found. Already logged out.');
16
+ }
17
+ }
18
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/cli/logout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * tekton-mcp status 명령어
3
+ * 인증 상태 확인
4
+ */
5
+ /**
6
+ * 인증 상태 표시
7
+ */
8
+ export declare function statusCommand(): void;
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAuBpC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * tekton-mcp status 명령어
3
+ * 인증 상태 확인
4
+ */
5
+ import { loadCredentials, getCredentialsPath } from './credentials.js';
6
+ /**
7
+ * 인증 상태 표시
8
+ */
9
+ export function statusCommand() {
10
+ // 1. 환경변수 확인
11
+ const envKey = process.env.TEKTON_API_KEY;
12
+ if (envKey) {
13
+ console.log('Authentication: TEKTON_API_KEY environment variable');
14
+ console.log(` Key: ${envKey.substring(0, 15)}...`);
15
+ return;
16
+ }
17
+ // 2. 크레덴셜 파일 확인
18
+ const creds = loadCredentials();
19
+ if (creds) {
20
+ console.log(`Authenticated as ${creds.user_email}`);
21
+ console.log(` API URL: ${creds.api_url}`);
22
+ console.log(` Key: ${creds.api_key.substring(0, 15)}...`);
23
+ console.log(` Saved at: ${getCredentialsPath()}`);
24
+ console.log(` Created: ${creds.created_at}`);
25
+ return;
26
+ }
27
+ // 3. 인증 안 됨
28
+ console.log('Not authenticated.');
29
+ console.log('Run `tekton-mcp login` to authenticate.');
30
+ }
31
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,aAAa;IACb,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,gBAAgB;IAChB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAe,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Component Registry (SPEC-MCP-003)
3
+ * Static component metadata from @tekton-ui/ui
4
+ *
5
+ * This registry provides metadata for all UI components
6
+ * organized by tier (1: Core, 2: Complex, 3: Advanced)
7
+ */
8
+ import type { ComponentMeta } from '../schemas/mcp-schemas.js';
9
+ /**
10
+ * All component metadata organized by tier
11
+ * Data extracted from @tekton-ui/ui exports
12
+ */
13
+ export declare const COMPONENT_CATALOG: ComponentMeta[];
14
+ /**
15
+ * Get all components
16
+ */
17
+ export declare function getAllComponents(): ComponentMeta[];
18
+ /**
19
+ * Get components by category
20
+ */
21
+ export declare function getComponentsByCategory(category: 'core' | 'complex' | 'advanced'): ComponentMeta[];
22
+ /**
23
+ * Get component by ID
24
+ */
25
+ export declare function getComponentById(id: string): ComponentMeta | undefined;
26
+ /**
27
+ * Search components by keyword
28
+ */
29
+ export declare function searchComponents(keyword: string): ComponentMeta[];
30
+ //# sourceMappingURL=component-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../../src/data/component-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA0R5C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GACxC,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAQjE"}
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Component Registry (SPEC-MCP-003)
3
+ * Static component metadata from @tekton-ui/ui
4
+ *
5
+ * This registry provides metadata for all UI components
6
+ * organized by tier (1: Core, 2: Complex, 3: Advanced)
7
+ */
8
+ /**
9
+ * All component metadata organized by tier
10
+ * Data extracted from @tekton-ui/ui exports
11
+ */
12
+ export const COMPONENT_CATALOG = [
13
+ // ========================================
14
+ // Tier 1: Core Components (15)
15
+ // ========================================
16
+ {
17
+ id: 'button',
18
+ name: 'Button',
19
+ category: 'core',
20
+ tier: 1,
21
+ description: 'Interactive button component with multiple variants and sizes',
22
+ variantsCount: 6,
23
+ hasSubComponents: false,
24
+ },
25
+ {
26
+ id: 'input',
27
+ name: 'Input',
28
+ category: 'core',
29
+ tier: 1,
30
+ description: 'Text input field with validation support',
31
+ variantsCount: 1,
32
+ hasSubComponents: false,
33
+ },
34
+ {
35
+ id: 'label',
36
+ name: 'Label',
37
+ category: 'core',
38
+ tier: 1,
39
+ description: 'Form label component with accessibility support',
40
+ variantsCount: 1,
41
+ hasSubComponents: false,
42
+ },
43
+ {
44
+ id: 'card',
45
+ name: 'Card',
46
+ category: 'core',
47
+ tier: 1,
48
+ description: 'Container card with header, content, and footer sections',
49
+ variantsCount: 1,
50
+ hasSubComponents: true,
51
+ },
52
+ {
53
+ id: 'badge',
54
+ name: 'Badge',
55
+ category: 'core',
56
+ tier: 1,
57
+ description: 'Badge component for status and labels',
58
+ variantsCount: 4,
59
+ hasSubComponents: false,
60
+ },
61
+ {
62
+ id: 'avatar',
63
+ name: 'Avatar',
64
+ category: 'core',
65
+ tier: 1,
66
+ description: 'Avatar component with image and fallback support',
67
+ variantsCount: 1,
68
+ hasSubComponents: true,
69
+ },
70
+ {
71
+ id: 'separator',
72
+ name: 'Separator',
73
+ category: 'core',
74
+ tier: 1,
75
+ description: 'Visual separator line component',
76
+ variantsCount: 2,
77
+ hasSubComponents: false,
78
+ },
79
+ {
80
+ id: 'checkbox',
81
+ name: 'Checkbox',
82
+ category: 'core',
83
+ tier: 1,
84
+ description: 'Checkbox input component with indeterminate state',
85
+ variantsCount: 1,
86
+ hasSubComponents: false,
87
+ },
88
+ {
89
+ id: 'radio-group',
90
+ name: 'RadioGroup',
91
+ category: 'core',
92
+ tier: 1,
93
+ description: 'Radio button group for single selection',
94
+ variantsCount: 1,
95
+ hasSubComponents: true,
96
+ },
97
+ {
98
+ id: 'switch',
99
+ name: 'Switch',
100
+ category: 'core',
101
+ tier: 1,
102
+ description: 'Toggle switch component for boolean states',
103
+ variantsCount: 1,
104
+ hasSubComponents: false,
105
+ },
106
+ {
107
+ id: 'textarea',
108
+ name: 'Textarea',
109
+ category: 'core',
110
+ tier: 1,
111
+ description: 'Multi-line text input area',
112
+ variantsCount: 1,
113
+ hasSubComponents: false,
114
+ },
115
+ {
116
+ id: 'skeleton',
117
+ name: 'Skeleton',
118
+ category: 'core',
119
+ tier: 1,
120
+ description: 'Loading skeleton placeholder component',
121
+ variantsCount: 1,
122
+ hasSubComponents: false,
123
+ },
124
+ {
125
+ id: 'scroll-area',
126
+ name: 'ScrollArea',
127
+ category: 'core',
128
+ tier: 1,
129
+ description: 'Custom scrollable area with styled scrollbar',
130
+ variantsCount: 1,
131
+ hasSubComponents: true,
132
+ },
133
+ {
134
+ id: 'form',
135
+ name: 'Form',
136
+ category: 'core',
137
+ tier: 1,
138
+ description: 'Form component with validation and error handling',
139
+ variantsCount: 1,
140
+ hasSubComponents: true,
141
+ },
142
+ {
143
+ id: 'select',
144
+ name: 'Select',
145
+ category: 'core',
146
+ tier: 1,
147
+ description: 'Dropdown select component with search support',
148
+ variantsCount: 1,
149
+ hasSubComponents: true,
150
+ },
151
+ // ========================================
152
+ // Tier 2: Complex Components (10)
153
+ // ========================================
154
+ {
155
+ id: 'dialog',
156
+ name: 'Dialog',
157
+ category: 'complex',
158
+ tier: 2,
159
+ description: 'Modal dialog component with overlay and animations',
160
+ variantsCount: 1,
161
+ hasSubComponents: true,
162
+ },
163
+ {
164
+ id: 'dropdown-menu',
165
+ name: 'DropdownMenu',
166
+ category: 'complex',
167
+ tier: 2,
168
+ description: 'Contextual dropdown menu with nested items',
169
+ variantsCount: 1,
170
+ hasSubComponents: true,
171
+ },
172
+ {
173
+ id: 'table',
174
+ name: 'Table',
175
+ category: 'complex',
176
+ tier: 2,
177
+ description: 'Data table component with sorting and pagination',
178
+ variantsCount: 1,
179
+ hasSubComponents: true,
180
+ },
181
+ {
182
+ id: 'tabs',
183
+ name: 'Tabs',
184
+ category: 'complex',
185
+ tier: 2,
186
+ description: 'Tabbed interface component with keyboard navigation',
187
+ variantsCount: 1,
188
+ hasSubComponents: true,
189
+ },
190
+ {
191
+ id: 'toast',
192
+ name: 'Toast',
193
+ category: 'complex',
194
+ tier: 2,
195
+ description: 'Toast notification system with queue management',
196
+ variantsCount: 4,
197
+ hasSubComponents: true,
198
+ },
199
+ {
200
+ id: 'tooltip',
201
+ name: 'Tooltip',
202
+ category: 'complex',
203
+ tier: 2,
204
+ description: 'Tooltip component with positioning and delay',
205
+ variantsCount: 1,
206
+ hasSubComponents: true,
207
+ },
208
+ {
209
+ id: 'popover',
210
+ name: 'Popover',
211
+ category: 'complex',
212
+ tier: 2,
213
+ description: 'Popover component with smart positioning',
214
+ variantsCount: 1,
215
+ hasSubComponents: true,
216
+ },
217
+ {
218
+ id: 'sheet',
219
+ name: 'Sheet',
220
+ category: 'complex',
221
+ tier: 2,
222
+ description: 'Slide-out panel component from screen edges',
223
+ variantsCount: 4,
224
+ hasSubComponents: true,
225
+ },
226
+ {
227
+ id: 'alert-dialog',
228
+ name: 'AlertDialog',
229
+ category: 'complex',
230
+ tier: 2,
231
+ description: 'Alert dialog for important confirmations',
232
+ variantsCount: 1,
233
+ hasSubComponents: true,
234
+ },
235
+ {
236
+ id: 'progress',
237
+ name: 'Progress',
238
+ category: 'complex',
239
+ tier: 2,
240
+ description: 'Progress bar component with percentage tracking',
241
+ variantsCount: 1,
242
+ hasSubComponents: false,
243
+ },
244
+ // ========================================
245
+ // Tier 3: Advanced Components (5)
246
+ // ========================================
247
+ {
248
+ id: 'sidebar',
249
+ name: 'Sidebar',
250
+ category: 'advanced',
251
+ tier: 3,
252
+ description: 'Collapsible sidebar navigation with sections and items',
253
+ variantsCount: 2,
254
+ hasSubComponents: true,
255
+ },
256
+ {
257
+ id: 'navigation-menu',
258
+ name: 'NavigationMenu',
259
+ category: 'advanced',
260
+ tier: 3,
261
+ description: 'Accessible navigation menu with dropdown support',
262
+ variantsCount: 1,
263
+ hasSubComponents: true,
264
+ },
265
+ {
266
+ id: 'breadcrumb',
267
+ name: 'Breadcrumb',
268
+ category: 'advanced',
269
+ tier: 3,
270
+ description: 'Breadcrumb navigation component with custom separators',
271
+ variantsCount: 1,
272
+ hasSubComponents: true,
273
+ },
274
+ {
275
+ id: 'command',
276
+ name: 'Command',
277
+ category: 'advanced',
278
+ tier: 3,
279
+ description: 'Command palette component with search and keyboard shortcuts',
280
+ variantsCount: 1,
281
+ hasSubComponents: true,
282
+ },
283
+ {
284
+ id: 'calendar',
285
+ name: 'Calendar',
286
+ category: 'advanced',
287
+ tier: 3,
288
+ description: 'Interactive calendar component with date selection',
289
+ variantsCount: 1,
290
+ hasSubComponents: false,
291
+ },
292
+ ];
293
+ /**
294
+ * Get all components
295
+ */
296
+ export function getAllComponents() {
297
+ return COMPONENT_CATALOG;
298
+ }
299
+ /**
300
+ * Get components by category
301
+ */
302
+ export function getComponentsByCategory(category) {
303
+ return COMPONENT_CATALOG.filter(c => c.category === category);
304
+ }
305
+ /**
306
+ * Get component by ID
307
+ */
308
+ export function getComponentById(id) {
309
+ return COMPONENT_CATALOG.find(c => c.id === id);
310
+ }
311
+ /**
312
+ * Search components by keyword
313
+ */
314
+ export function searchComponents(keyword) {
315
+ const lowerKeyword = keyword.toLowerCase();
316
+ return COMPONENT_CATALOG.filter(c => c.id.includes(lowerKeyword) ||
317
+ c.name.toLowerCase().includes(lowerKeyword) ||
318
+ c.description.toLowerCase().includes(lowerKeyword));
319
+ }
320
+ //# sourceMappingURL=component-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-registry.js","sourceRoot":"","sources":["../../src/data/component-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Example Screen Definitions for SPEC-MCP-004 Phase 3.5
3
+ * Provides reference examples for coding agents to generate screen definitions
4
+ */
5
+ import type { ScreenExample } from '../../schemas/mcp-schemas.js';
6
+ /**
7
+ * Team Grid Example
8
+ * A dashboard-style screen displaying team members in a grid layout
9
+ */
10
+ export declare const teamGridExample: ScreenExample;
11
+ /**
12
+ * Data Table Example
13
+ * A screen displaying data in a tabular format with filtering and sorting
14
+ */
15
+ export declare const dataTableExample: ScreenExample;
16
+ /**
17
+ * Login Form Example
18
+ * Authentication screen with email/password login
19
+ */
20
+ export declare const loginFormExample: ScreenExample;
21
+ /**
22
+ * Dashboard Overview Example
23
+ * Analytics dashboard with metrics cards and charts
24
+ */
25
+ export declare const dashboardOverviewExample: ScreenExample;
26
+ /**
27
+ * Get all example screen definitions
28
+ */
29
+ export declare function getAllExamples(): ScreenExample[];
30
+ /**
31
+ * Get examples matching a description
32
+ */
33
+ export declare function getMatchingExamples(description: string, limit?: number): ScreenExample[];
34
+ /**
35
+ * Get example by ID
36
+ */
37
+ export declare function getExampleById(id: string): ScreenExample | undefined;
38
+ //# sourceMappingURL=screen-examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-examples.d.ts","sourceRoot":"","sources":["../../../src/data/examples/screen-examples.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAyH7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAmF9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,aA2F9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,aA0HtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,aAAa,EAAE,CAkD3F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEpE"}