@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,108 @@
1
+ /**
2
+ * Package.json Reader
3
+ * SPEC-MCP-005 Phase 2: Read and parse package.json files
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ /**
8
+ * Simple cache for repeated reads
9
+ */
10
+ const packageJsonCache = new Map();
11
+ const CACHE_TTL = 5000; // 5 seconds
12
+ /**
13
+ * Read and parse package.json file
14
+ *
15
+ * @param projectPath - Path to package.json or project root directory
16
+ * @returns PackageJsonReadResult with parsed data or error
17
+ */
18
+ export function readPackageJson(projectPath) {
19
+ try {
20
+ // Resolve to package.json path
21
+ let packageJsonPath;
22
+ if (projectPath.endsWith('package.json')) {
23
+ packageJsonPath = projectPath;
24
+ }
25
+ else {
26
+ packageJsonPath = path.join(projectPath, 'package.json');
27
+ }
28
+ // Normalize path
29
+ packageJsonPath = path.resolve(packageJsonPath);
30
+ // Check cache
31
+ const cached = packageJsonCache.get(packageJsonPath);
32
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
33
+ return {
34
+ success: true,
35
+ packageJson: cached.data,
36
+ installedPackages: extractInstalledPackages(cached.data),
37
+ };
38
+ }
39
+ // Check if file exists
40
+ if (!fs.existsSync(packageJsonPath)) {
41
+ return {
42
+ success: false,
43
+ error: `package.json not found at: ${packageJsonPath}`,
44
+ };
45
+ }
46
+ // Read and parse file
47
+ const content = fs.readFileSync(packageJsonPath, 'utf-8');
48
+ const packageJson = JSON.parse(content);
49
+ // Validate basic structure
50
+ if (typeof packageJson !== 'object' || packageJson === null || Array.isArray(packageJson)) {
51
+ return {
52
+ success: false,
53
+ error: 'Invalid package.json: expected an object',
54
+ };
55
+ }
56
+ // Cache the result
57
+ packageJsonCache.set(packageJsonPath, {
58
+ data: packageJson,
59
+ timestamp: Date.now(),
60
+ });
61
+ return {
62
+ success: true,
63
+ packageJson,
64
+ installedPackages: extractInstalledPackages(packageJson),
65
+ };
66
+ }
67
+ catch (error) {
68
+ if (error instanceof SyntaxError) {
69
+ return {
70
+ success: false,
71
+ error: `Invalid JSON in package.json: ${error.message}`,
72
+ };
73
+ }
74
+ return {
75
+ success: false,
76
+ error: error instanceof Error ? error.message : String(error),
77
+ };
78
+ }
79
+ }
80
+ /**
81
+ * Extract all installed packages (dependencies + devDependencies + peerDependencies + optionalDependencies)
82
+ *
83
+ * @param packageJson - Parsed package.json object
84
+ * @returns Record of package names to versions
85
+ */
86
+ function extractInstalledPackages(packageJson) {
87
+ const installed = {};
88
+ // Merge all dependency types
89
+ const depTypes = [
90
+ packageJson.dependencies,
91
+ packageJson.devDependencies,
92
+ packageJson.peerDependencies,
93
+ packageJson.optionalDependencies,
94
+ ];
95
+ for (const deps of depTypes) {
96
+ if (deps && typeof deps === 'object') {
97
+ Object.assign(installed, deps);
98
+ }
99
+ }
100
+ return installed;
101
+ }
102
+ /**
103
+ * Clear package.json cache (useful for testing)
104
+ */
105
+ export function clearPackageJsonCache() {
106
+ packageJsonCache.clear();
107
+ }
108
+ //# sourceMappingURL=package-json-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json-reader.js","sourceRoot":"","sources":["../../src/utils/package-json-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tailwind Config Reader
3
+ * SPEC-MCP-005: Tailwind CSS 설정 파일을 읽고 @tekton-ui/ui 호환성 검증
4
+ */
5
+ /**
6
+ * Tailwind 설정 파일 읽기 결과
7
+ */
8
+ export interface TailwindConfigReadResult {
9
+ found: boolean;
10
+ configPath?: string;
11
+ hasUiContentPath: boolean;
12
+ hasAnimatePlugin: boolean;
13
+ rawContent?: string;
14
+ error?: string;
15
+ }
16
+ /**
17
+ * Tailwind 설정 파일을 찾아서 읽고 @tekton-ui/ui 호환성을 검증
18
+ *
19
+ * @param projectPath - 프로젝트 루트 경로
20
+ * @returns TailwindConfigReadResult
21
+ */
22
+ export declare function readTailwindConfig(projectPath: string): TailwindConfigReadResult;
23
+ //# sourceMappingURL=tailwind-config-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-config-reader.d.ts","sourceRoot":"","sources":["../../src/utils/tailwind-config-reader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAoDhF"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Tailwind Config Reader
3
+ * SPEC-MCP-005: Tailwind CSS 설정 파일을 읽고 @tekton-ui/ui 호환성 검증
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ /** 지원되는 Tailwind 설정 파일명 */
8
+ const TAILWIND_CONFIG_FILES = [
9
+ 'tailwind.config.ts',
10
+ 'tailwind.config.js',
11
+ 'tailwind.config.mjs',
12
+ 'tailwind.config.cjs',
13
+ ];
14
+ /**
15
+ * @tekton-ui/ui content 경로 패턴
16
+ * monorepo: ../../packages/ui/src/ 또는 packages/ui/src/
17
+ * standalone: node_modules/@tekton-ui/ui/
18
+ * 직접 참조: @tekton-ui/ui
19
+ */
20
+ const UI_CONTENT_PATTERNS = [/packages\/ui\/src\//, /node_modules\/@tekton\/ui\//, /@tekton\/ui/];
21
+ /**
22
+ * tailwindcss-animate 플러그인 패턴
23
+ * import animate from 'tailwindcss-animate'
24
+ * require('tailwindcss-animate')
25
+ * plugins: [require('tailwindcss-animate')]
26
+ */
27
+ const ANIMATE_PLUGIN_PATTERNS = [/tailwindcss-animate/];
28
+ /**
29
+ * Tailwind 설정 파일을 찾아서 읽고 @tekton-ui/ui 호환성을 검증
30
+ *
31
+ * @param projectPath - 프로젝트 루트 경로
32
+ * @returns TailwindConfigReadResult
33
+ */
34
+ export function readTailwindConfig(projectPath) {
35
+ try {
36
+ // 프로젝트 루트 경로 정규화
37
+ const resolvedPath = path.resolve(projectPath);
38
+ // package.json 경로가 전달된 경우 디렉토리로 변환
39
+ const projectDir = resolvedPath.endsWith('package.json')
40
+ ? path.dirname(resolvedPath)
41
+ : resolvedPath;
42
+ // Tailwind 설정 파일 탐색
43
+ let configPath;
44
+ for (const configFile of TAILWIND_CONFIG_FILES) {
45
+ const fullPath = path.join(projectDir, configFile);
46
+ if (fs.existsSync(fullPath)) {
47
+ configPath = fullPath;
48
+ break;
49
+ }
50
+ }
51
+ if (!configPath) {
52
+ return {
53
+ found: false,
54
+ hasUiContentPath: false,
55
+ hasAnimatePlugin: false,
56
+ };
57
+ }
58
+ // 설정 파일 읽기
59
+ const rawContent = fs.readFileSync(configPath, 'utf-8');
60
+ // content 배열에서 @tekton-ui/ui 경로 확인
61
+ const hasUiContentPath = UI_CONTENT_PATTERNS.some(pattern => pattern.test(rawContent));
62
+ // tailwindcss-animate 플러그인 확인
63
+ const hasAnimatePlugin = ANIMATE_PLUGIN_PATTERNS.some(pattern => pattern.test(rawContent));
64
+ return {
65
+ found: true,
66
+ configPath,
67
+ hasUiContentPath,
68
+ hasAnimatePlugin,
69
+ rawContent,
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ found: false,
75
+ hasUiContentPath: false,
76
+ hasAnimatePlugin: false,
77
+ error: error instanceof Error ? error.message : String(error),
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=tailwind-config-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-config-reader.js","sourceRoot":"","sources":["../../src/utils/tailwind-config-reader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAc7B,2BAA2B;AAC3B,MAAM,qBAAqB,GAAG;IAC5B,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,6BAA6B,EAAE,aAAa,CAAC,CAAC;AAElG;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAExD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE/C,mCAAmC;QACnC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;YACtD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC5B,CAAC,CAAC,YAAY,CAAC;QAEjB,oBAAoB;QACpB,IAAI,UAA8B,CAAC;QACnC,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,UAAU,GAAG,QAAQ,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;aACxB,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAExD,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEvF,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAE3F,OAAO;YACL,KAAK,EAAE,IAAI;YACX,UAAU;YACV,gBAAgB;YAChB,gBAAgB;YAChB,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,KAAK;YACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@tekton-ui/mcp-server",
3
+ "version": "0.3.0",
4
+ "description": "Tekton MCP Server with Claude Code integration and timestamp-based preview system",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./schemas": {
14
+ "import": "./dist/schemas/mcp-schemas.js",
15
+ "types": "./dist/schemas/mcp-schemas.d.ts"
16
+ }
17
+ },
18
+ "bin": {
19
+ "tekton-mcp": "./dist/cli/index.js"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "README.md",
24
+ "package.json"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "registry": "https://registry.npmjs.org/"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/soo-kate-yeon/tekton",
33
+ "directory": "packages/mcp-server"
34
+ },
35
+ "dependencies": {
36
+ "@anthropic-ai/sdk": "^0.40.0",
37
+ "@modelcontextprotocol/sdk": "^1.26.0",
38
+ "zod": "^3.23.8",
39
+ "@tekton-ui/core": "0.3.0",
40
+ "@tekton-ui/ui": "0.3.0"
41
+ },
42
+ "devDependencies": {
43
+ "@babel/parser": "^7.28.6",
44
+ "@babel/traverse": "^7.28.6",
45
+ "@babel/types": "^7.28.6",
46
+ "@types/babel__traverse": "^7.28.0",
47
+ "@types/node": "^22.10.5",
48
+ "@typescript-eslint/eslint-plugin": "^8.20.0",
49
+ "@typescript-eslint/parser": "^8.20.0",
50
+ "@vitest/coverage-v8": "^2.1.8",
51
+ "eslint": "^9.18.0",
52
+ "globals": "^17.0.0",
53
+ "typescript": "^5.7.3",
54
+ "vitest": "^2.1.8"
55
+ },
56
+ "engines": {
57
+ "node": ">=20.0.0"
58
+ },
59
+ "license": "MIT",
60
+ "scripts": {
61
+ "build": "tsc",
62
+ "dev": "tsc --watch",
63
+ "test": "vitest run",
64
+ "test:watch": "vitest",
65
+ "test:coverage": "vitest run --coverage",
66
+ "start": "node dist/index.js",
67
+ "inspect": "npx @anthropic-ai/mcp-inspector node dist/index.js",
68
+ "lint": "eslint src __tests__ --ext .ts",
69
+ "typecheck": "tsc --noEmit",
70
+ "typecheck:tests": "tsc --project tsconfig.test.json --noEmit"
71
+ }
72
+ }