@framingui/mcp-server 0.5.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 (206) hide show
  1. package/README.md +1027 -0
  2. package/dist/auth/cache.d.ts +28 -0
  3. package/dist/auth/cache.d.ts.map +1 -0
  4. package/dist/auth/cache.js +48 -0
  5. package/dist/auth/cache.js.map +1 -0
  6. package/dist/auth/guard.d.ts +22 -0
  7. package/dist/auth/guard.d.ts.map +1 -0
  8. package/dist/auth/guard.js +37 -0
  9. package/dist/auth/guard.js.map +1 -0
  10. package/dist/auth/state.d.ts +42 -0
  11. package/dist/auth/state.d.ts.map +1 -0
  12. package/dist/auth/state.js +96 -0
  13. package/dist/auth/state.js.map +1 -0
  14. package/dist/auth/theme-access.d.ts +21 -0
  15. package/dist/auth/theme-access.d.ts.map +1 -0
  16. package/dist/auth/theme-access.js +30 -0
  17. package/dist/auth/theme-access.js.map +1 -0
  18. package/dist/auth/verify.d.ts +44 -0
  19. package/dist/auth/verify.d.ts.map +1 -0
  20. package/dist/auth/verify.js +77 -0
  21. package/dist/auth/verify.js.map +1 -0
  22. package/dist/cli/agent-md-templates.d.ts +16 -0
  23. package/dist/cli/agent-md-templates.d.ts.map +1 -0
  24. package/dist/cli/agent-md-templates.js +311 -0
  25. package/dist/cli/agent-md-templates.js.map +1 -0
  26. package/dist/cli/credentials.d.ts +29 -0
  27. package/dist/cli/credentials.d.ts.map +1 -0
  28. package/dist/cli/credentials.js +66 -0
  29. package/dist/cli/credentials.js.map +1 -0
  30. package/dist/cli/guide-template.d.ts +10 -0
  31. package/dist/cli/guide-template.d.ts.map +1 -0
  32. package/dist/cli/guide-template.js +195 -0
  33. package/dist/cli/guide-template.js.map +1 -0
  34. package/dist/cli/index.d.ts +7 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +41 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/cli/init.d.ts +6 -0
  39. package/dist/cli/init.d.ts.map +1 -0
  40. package/dist/cli/init.js +319 -0
  41. package/dist/cli/init.js.map +1 -0
  42. package/dist/cli/login.d.ts +9 -0
  43. package/dist/cli/login.d.ts.map +1 -0
  44. package/dist/cli/login.js +121 -0
  45. package/dist/cli/login.js.map +1 -0
  46. package/dist/cli/logout.d.ts +9 -0
  47. package/dist/cli/logout.d.ts.map +1 -0
  48. package/dist/cli/logout.js +18 -0
  49. package/dist/cli/logout.js.map +1 -0
  50. package/dist/cli/status.d.ts +9 -0
  51. package/dist/cli/status.d.ts.map +1 -0
  52. package/dist/cli/status.js +31 -0
  53. package/dist/cli/status.js.map +1 -0
  54. package/dist/data/component-props.d.ts +30 -0
  55. package/dist/data/component-props.d.ts.map +1 -0
  56. package/dist/data/component-props.js +537 -0
  57. package/dist/data/component-props.js.map +1 -0
  58. package/dist/data/component-registry.d.ts +30 -0
  59. package/dist/data/component-registry.d.ts.map +1 -0
  60. package/dist/data/component-registry.js +320 -0
  61. package/dist/data/component-registry.js.map +1 -0
  62. package/dist/data/examples/screen-examples.d.ts +38 -0
  63. package/dist/data/examples/screen-examples.d.ts.map +1 -0
  64. package/dist/data/examples/screen-examples.js +500 -0
  65. package/dist/data/examples/screen-examples.js.map +1 -0
  66. package/dist/data/hint-generator.d.ts +16 -0
  67. package/dist/data/hint-generator.d.ts.map +1 -0
  68. package/dist/data/hint-generator.js +298 -0
  69. package/dist/data/hint-generator.js.map +1 -0
  70. package/dist/data/recipe-resolver.d.ts +48 -0
  71. package/dist/data/recipe-resolver.d.ts.map +1 -0
  72. package/dist/data/recipe-resolver.js +226 -0
  73. package/dist/data/recipe-resolver.js.map +1 -0
  74. package/dist/data/template-matcher.d.ts +50 -0
  75. package/dist/data/template-matcher.d.ts.map +1 -0
  76. package/dist/data/template-matcher.js +240 -0
  77. package/dist/data/template-matcher.js.map +1 -0
  78. package/dist/generators/core-resolver.d.ts +56 -0
  79. package/dist/generators/core-resolver.d.ts.map +1 -0
  80. package/dist/generators/core-resolver.js +490 -0
  81. package/dist/generators/core-resolver.js.map +1 -0
  82. package/dist/generators/css-generator.d.ts +49 -0
  83. package/dist/generators/css-generator.d.ts.map +1 -0
  84. package/dist/generators/css-generator.js +294 -0
  85. package/dist/generators/css-generator.js.map +1 -0
  86. package/dist/generators/index.d.ts +13 -0
  87. package/dist/generators/index.d.ts.map +1 -0
  88. package/dist/generators/index.js +16 -0
  89. package/dist/generators/index.js.map +1 -0
  90. package/dist/generators/llm-generator.d.ts +96 -0
  91. package/dist/generators/llm-generator.d.ts.map +1 -0
  92. package/dist/generators/llm-generator.js +296 -0
  93. package/dist/generators/llm-generator.js.map +1 -0
  94. package/dist/index.d.ts +3 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +965 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/prompts/getting-started.d.ts +18 -0
  99. package/dist/prompts/getting-started.d.ts.map +1 -0
  100. package/dist/prompts/getting-started.js +112 -0
  101. package/dist/prompts/getting-started.js.map +1 -0
  102. package/dist/prompts/screen-workflow.d.ts +17 -0
  103. package/dist/prompts/screen-workflow.d.ts.map +1 -0
  104. package/dist/prompts/screen-workflow.js +246 -0
  105. package/dist/prompts/screen-workflow.js.map +1 -0
  106. package/dist/schemas/mcp-schemas.d.ts +4342 -0
  107. package/dist/schemas/mcp-schemas.d.ts.map +1 -0
  108. package/dist/schemas/mcp-schemas.js +989 -0
  109. package/dist/schemas/mcp-schemas.js.map +1 -0
  110. package/dist/storage/blueprint-storage.d.ts +68 -0
  111. package/dist/storage/blueprint-storage.d.ts.map +1 -0
  112. package/dist/storage/blueprint-storage.js +135 -0
  113. package/dist/storage/blueprint-storage.js.map +1 -0
  114. package/dist/storage/timestamp-manager.d.ts +32 -0
  115. package/dist/storage/timestamp-manager.d.ts.map +1 -0
  116. package/dist/storage/timestamp-manager.js +59 -0
  117. package/dist/storage/timestamp-manager.js.map +1 -0
  118. package/dist/tools/export-screen.d.ts +34 -0
  119. package/dist/tools/export-screen.d.ts.map +1 -0
  120. package/dist/tools/export-screen.js +344 -0
  121. package/dist/tools/export-screen.js.map +1 -0
  122. package/dist/tools/generate-blueprint.d.ts +15 -0
  123. package/dist/tools/generate-blueprint.d.ts.map +1 -0
  124. package/dist/tools/generate-blueprint.js +165 -0
  125. package/dist/tools/generate-blueprint.js.map +1 -0
  126. package/dist/tools/generate-screen.d.ts +13 -0
  127. package/dist/tools/generate-screen.d.ts.map +1 -0
  128. package/dist/tools/generate-screen.js +82 -0
  129. package/dist/tools/generate-screen.js.map +1 -0
  130. package/dist/tools/get-screen-generation-context.d.ts +11 -0
  131. package/dist/tools/get-screen-generation-context.d.ts.map +1 -0
  132. package/dist/tools/get-screen-generation-context.js +325 -0
  133. package/dist/tools/get-screen-generation-context.js.map +1 -0
  134. package/dist/tools/list-components.d.ts +15 -0
  135. package/dist/tools/list-components.d.ts.map +1 -0
  136. package/dist/tools/list-components.js +46 -0
  137. package/dist/tools/list-components.js.map +1 -0
  138. package/dist/tools/list-icon-libraries.d.ts +12 -0
  139. package/dist/tools/list-icon-libraries.d.ts.map +1 -0
  140. package/dist/tools/list-icon-libraries.js +48 -0
  141. package/dist/tools/list-icon-libraries.js.map +1 -0
  142. package/dist/tools/list-screen-templates.d.ts +15 -0
  143. package/dist/tools/list-screen-templates.d.ts.map +1 -0
  144. package/dist/tools/list-screen-templates.js +61 -0
  145. package/dist/tools/list-screen-templates.js.map +1 -0
  146. package/dist/tools/list-themes.d.ts +13 -0
  147. package/dist/tools/list-themes.d.ts.map +1 -0
  148. package/dist/tools/list-themes.js +42 -0
  149. package/dist/tools/list-themes.js.map +1 -0
  150. package/dist/tools/list-tokens.d.ts +13 -0
  151. package/dist/tools/list-tokens.d.ts.map +1 -0
  152. package/dist/tools/list-tokens.js +92 -0
  153. package/dist/tools/list-tokens.js.map +1 -0
  154. package/dist/tools/preview-component.d.ts +18 -0
  155. package/dist/tools/preview-component.d.ts.map +1 -0
  156. package/dist/tools/preview-component.js +63 -0
  157. package/dist/tools/preview-component.js.map +1 -0
  158. package/dist/tools/preview-icon-library.d.ts +13 -0
  159. package/dist/tools/preview-icon-library.d.ts.map +1 -0
  160. package/dist/tools/preview-icon-library.js +63 -0
  161. package/dist/tools/preview-icon-library.js.map +1 -0
  162. package/dist/tools/preview-screen-template.d.ts +18 -0
  163. package/dist/tools/preview-screen-template.d.ts.map +1 -0
  164. package/dist/tools/preview-screen-template.js +99 -0
  165. package/dist/tools/preview-screen-template.js.map +1 -0
  166. package/dist/tools/preview-theme.d.ts +15 -0
  167. package/dist/tools/preview-theme.d.ts.map +1 -0
  168. package/dist/tools/preview-theme.js +172 -0
  169. package/dist/tools/preview-theme.js.map +1 -0
  170. package/dist/tools/validate-environment.d.ts +37 -0
  171. package/dist/tools/validate-environment.d.ts.map +1 -0
  172. package/dist/tools/validate-environment.js +153 -0
  173. package/dist/tools/validate-environment.js.map +1 -0
  174. package/dist/tools/validate-screen-definition.d.ts +10 -0
  175. package/dist/tools/validate-screen-definition.d.ts.map +1 -0
  176. package/dist/tools/validate-screen-definition.js +559 -0
  177. package/dist/tools/validate-screen-definition.js.map +1 -0
  178. package/dist/tools/validate-screen.d.ts +13 -0
  179. package/dist/tools/validate-screen.d.ts.map +1 -0
  180. package/dist/tools/validate-screen.js +106 -0
  181. package/dist/tools/validate-screen.js.map +1 -0
  182. package/dist/tools/whoami.d.ts +17 -0
  183. package/dist/tools/whoami.d.ts.map +1 -0
  184. package/dist/tools/whoami.js +65 -0
  185. package/dist/tools/whoami.js.map +1 -0
  186. package/dist/utils/dependency-extractor.d.ts +13 -0
  187. package/dist/utils/dependency-extractor.d.ts.map +1 -0
  188. package/dist/utils/dependency-extractor.js +232 -0
  189. package/dist/utils/dependency-extractor.js.map +1 -0
  190. package/dist/utils/error-handler.d.ts +29 -0
  191. package/dist/utils/error-handler.d.ts.map +1 -0
  192. package/dist/utils/error-handler.js +48 -0
  193. package/dist/utils/error-handler.js.map +1 -0
  194. package/dist/utils/logger.d.ts +8 -0
  195. package/dist/utils/logger.d.ts.map +1 -0
  196. package/dist/utils/logger.js +14 -0
  197. package/dist/utils/logger.js.map +1 -0
  198. package/dist/utils/package-json-reader.d.ts +37 -0
  199. package/dist/utils/package-json-reader.d.ts.map +1 -0
  200. package/dist/utils/package-json-reader.js +108 -0
  201. package/dist/utils/package-json-reader.js.map +1 -0
  202. package/dist/utils/tailwind-config-reader.d.ts +23 -0
  203. package/dist/utils/tailwind-config-reader.d.ts.map +1 -0
  204. package/dist/utils/tailwind-config-reader.js +81 -0
  205. package/dist/utils/tailwind-config-reader.js.map +1 -0
  206. package/package.json +103 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Simple in-memory cache with TTL support
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ export declare class MemoryCache<T> {
6
+ private cache;
7
+ /**
8
+ * Set a cache entry with TTL in milliseconds
9
+ */
10
+ set(key: string, value: T, ttlMs: number): void;
11
+ /**
12
+ * Get a cache entry if it exists and hasn't expired
13
+ */
14
+ get(key: string): T | null;
15
+ /**
16
+ * Clear a specific cache entry
17
+ */
18
+ delete(key: string): void;
19
+ /**
20
+ * Clear all cache entries
21
+ */
22
+ clear(): void;
23
+ /**
24
+ * Get cache size
25
+ */
26
+ size(): number;
27
+ }
28
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/auth/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,CAAoC;IAEjD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAgB1B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Simple in-memory cache with TTL support
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ export class MemoryCache {
6
+ cache = new Map();
7
+ /**
8
+ * Set a cache entry with TTL in milliseconds
9
+ */
10
+ set(key, value, ttlMs) {
11
+ const expiresAt = Date.now() + ttlMs;
12
+ this.cache.set(key, { value, expiresAt });
13
+ }
14
+ /**
15
+ * Get a cache entry if it exists and hasn't expired
16
+ */
17
+ get(key) {
18
+ const entry = this.cache.get(key);
19
+ if (!entry) {
20
+ return null;
21
+ }
22
+ // Check if expired
23
+ if (Date.now() > entry.expiresAt) {
24
+ this.cache.delete(key);
25
+ return null;
26
+ }
27
+ return entry.value;
28
+ }
29
+ /**
30
+ * Clear a specific cache entry
31
+ */
32
+ delete(key) {
33
+ this.cache.delete(key);
34
+ }
35
+ /**
36
+ * Clear all cache entries
37
+ */
38
+ clear() {
39
+ this.cache.clear();
40
+ }
41
+ /**
42
+ * Get cache size
43
+ */
44
+ size() {
45
+ return this.cache.size;
46
+ }
47
+ }
48
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/auth/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,OAAO,WAAW;IACd,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEjD;;OAEG;IACH,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,KAAa;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 인증 가드 - 모든 도구 호출 전 인증 상태 확인
3
+ * SPEC-DEPLOY-001: 모든 테마 유료화, 인증 필수
4
+ */
5
+ export declare class AuthRequiredError extends Error {
6
+ constructor();
7
+ }
8
+ export declare class WhoamiRequiredError extends Error {
9
+ constructor();
10
+ }
11
+ /**
12
+ * 인증 필수 가드
13
+ * 인증되지 않은 경우 AuthRequiredError를 throw
14
+ */
15
+ export declare function requireAuth(): void;
16
+ /**
17
+ * whoami 필수 가드 (서버 사이드 강제)
18
+ * whoami 미호출 시 WhoamiRequiredError를 throw
19
+ * 프롬프트 인젝션으로 우회 불가
20
+ */
21
+ export declare function requireWhoami(): void;
22
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAa,iBAAkB,SAAQ,KAAK;;CAO3C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAO7C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAIpC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 인증 가드 - 모든 도구 호출 전 인증 상태 확인
3
+ * SPEC-DEPLOY-001: 모든 테마 유료화, 인증 필수
4
+ */
5
+ import { isAuthenticated, isWhoamiCompleted } from './state.js';
6
+ export class AuthRequiredError extends Error {
7
+ constructor() {
8
+ super('Authentication required. Run `tekton-mcp login` to authenticate, or set TEKTON_API_KEY environment variable.');
9
+ this.name = 'AuthRequiredError';
10
+ }
11
+ }
12
+ export class WhoamiRequiredError extends Error {
13
+ constructor() {
14
+ super('Please call the "whoami" tool first to verify your account and license status before using other tools.');
15
+ this.name = 'WhoamiRequiredError';
16
+ }
17
+ }
18
+ /**
19
+ * 인증 필수 가드
20
+ * 인증되지 않은 경우 AuthRequiredError를 throw
21
+ */
22
+ export function requireAuth() {
23
+ if (!isAuthenticated()) {
24
+ throw new AuthRequiredError();
25
+ }
26
+ }
27
+ /**
28
+ * whoami 필수 가드 (서버 사이드 강제)
29
+ * whoami 미호출 시 WhoamiRequiredError를 throw
30
+ * 프롬프트 인젝션으로 우회 불가
31
+ */
32
+ export function requireWhoami() {
33
+ if (!isWhoamiCompleted()) {
34
+ throw new WhoamiRequiredError();
35
+ }
36
+ }
37
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/auth/guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C;QACE,KAAK,CACH,8GAA8G,CAC/G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH,yGAAyG,CAC1G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Global authentication state for MCP server
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ import type { VerifyResponse } from './verify.js';
6
+ /**
7
+ * Set authentication data and cache it
8
+ * @param authData - Verification response from API
9
+ */
10
+ export declare function setAuthData(authData: VerifyResponse | null): void;
11
+ /**
12
+ * Get current authentication data
13
+ * @returns Current authentication data or null if not authenticated
14
+ */
15
+ export declare function getAuthData(): VerifyResponse | null;
16
+ /**
17
+ * Clear authentication data and cache
18
+ */
19
+ export declare function clearAuthData(): void;
20
+ /**
21
+ * whoami 도구 호출 완료 표시
22
+ */
23
+ export declare function setWhoamiCompleted(): void;
24
+ /**
25
+ * whoami 도구 호출 여부 확인
26
+ * @returns whoami가 호출되었으면 true
27
+ */
28
+ export declare function isWhoamiCompleted(): boolean;
29
+ /**
30
+ * Check if user is authenticated
31
+ * @returns true if authenticated with valid data
32
+ */
33
+ export declare function isAuthenticated(): boolean;
34
+ /**
35
+ * Get accessible theme IDs based on current authentication
36
+ * 마스터 계정: 모든 테마 접근 가능
37
+ * 일반 사용자: 라이선스 보유 테마만 반환
38
+ * @param allThemeIds - All available theme IDs
39
+ * @returns Array of accessible theme IDs
40
+ */
41
+ export declare function getAccessibleThemes(allThemeIds: string[]): string[];
42
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiBlD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAOjE;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAWnD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBnE"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Global authentication state for MCP server
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ import { MemoryCache } from './cache.js';
6
+ import { info } from '../utils/logger.js';
7
+ import { isMasterAccount } from './theme-access.js';
8
+ // Cache TTL: 5 minutes (300,000 milliseconds)
9
+ const CACHE_TTL_MS = 5 * 60 * 1000;
10
+ // Global authentication data cache
11
+ const authCache = new MemoryCache();
12
+ // Current authentication state
13
+ let currentAuthData = null;
14
+ // whoami 도구 호출 완료 여부 (서버 사이드 게이트)
15
+ let whoamiCompleted = false;
16
+ /**
17
+ * Set authentication data and cache it
18
+ * @param authData - Verification response from API
19
+ */
20
+ export function setAuthData(authData) {
21
+ currentAuthData = authData;
22
+ if (authData && authData.valid) {
23
+ authCache.set('auth', authData, CACHE_TTL_MS);
24
+ info('Authentication data cached for 5 minutes');
25
+ }
26
+ }
27
+ /**
28
+ * Get current authentication data
29
+ * @returns Current authentication data or null if not authenticated
30
+ */
31
+ export function getAuthData() {
32
+ // Try to get from cache first
33
+ const cachedAuth = authCache.get('auth');
34
+ if (cachedAuth) {
35
+ info('Using cached authentication data');
36
+ return cachedAuth;
37
+ }
38
+ // Return current state
39
+ return currentAuthData;
40
+ }
41
+ /**
42
+ * Clear authentication data and cache
43
+ */
44
+ export function clearAuthData() {
45
+ currentAuthData = null;
46
+ whoamiCompleted = false;
47
+ authCache.clear();
48
+ info('Authentication data cleared');
49
+ }
50
+ /**
51
+ * whoami 도구 호출 완료 표시
52
+ */
53
+ export function setWhoamiCompleted() {
54
+ whoamiCompleted = true;
55
+ info('whoami completed - all tools unlocked');
56
+ }
57
+ /**
58
+ * whoami 도구 호출 여부 확인
59
+ * @returns whoami가 호출되었으면 true
60
+ */
61
+ export function isWhoamiCompleted() {
62
+ return whoamiCompleted;
63
+ }
64
+ /**
65
+ * Check if user is authenticated
66
+ * @returns true if authenticated with valid data
67
+ */
68
+ export function isAuthenticated() {
69
+ const authData = getAuthData();
70
+ return authData !== null && authData.valid === true;
71
+ }
72
+ /**
73
+ * Get accessible theme IDs based on current authentication
74
+ * 마스터 계정: 모든 테마 접근 가능
75
+ * 일반 사용자: 라이선스 보유 테마만 반환
76
+ * @param allThemeIds - All available theme IDs
77
+ * @returns Array of accessible theme IDs
78
+ */
79
+ export function getAccessibleThemes(allThemeIds) {
80
+ const authData = getAuthData();
81
+ // 인증 없음: 접근 가능 테마 없음
82
+ if (!authData || !authData.valid) {
83
+ return [];
84
+ }
85
+ // 마스터 계정: 모든 테마 접근 가능
86
+ const email = authData.user?.email;
87
+ if (email && isMasterAccount(email)) {
88
+ return [...allThemeIds];
89
+ }
90
+ // 일반 사용자: 라이선스 보유 테마만
91
+ const licensedThemes = authData.themes?.licensed || [];
92
+ const accessibleThemes = new Set(licensedThemes);
93
+ // 실제 존재하는 테마만 필터링
94
+ return allThemeIds.filter(id => accessibleThemes.has(id));
95
+ }
96
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,8CAA8C;AAC9C,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,mCAAmC;AACnC,MAAM,SAAS,GAAG,IAAI,WAAW,EAAkB,CAAC;AAEpD,+BAA+B;AAC/B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD,kCAAkC;AAClC,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAA+B;IACzD,eAAe,GAAG,QAAQ,CAAC;IAE3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,8BAA8B;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,uBAAuB;IACvB,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,eAAe,GAAG,IAAI,CAAC;IACvB,eAAe,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,eAAe,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,uCAAuC,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAqB;IACvD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,qBAAqB;IACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,sBAAsB;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACnC,IAAI,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB;IACtB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IAEjD,kBAAkB;IAClB,OAAO,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Theme access configuration
3
+ * SPEC-DEPLOY-001: 모든 테마 유료 - 인증 필수
4
+ */
5
+ /**
6
+ * 모든 프리미엄 테마 목록 (실제 존재하는 6개 테마만)
7
+ * 인증된 사용자만 라이선스 보유 테마에 접근 가능
8
+ */
9
+ export declare const PREMIUM_THEMES: string[];
10
+ /**
11
+ * 마스터 계정 이메일 목록
12
+ * 마스터 계정은 모든 테마에 무제한 접근 가능
13
+ */
14
+ export declare const MASTER_EMAILS: string[];
15
+ /**
16
+ * 마스터 계정 여부 확인
17
+ * @param email - 사용자 이메일
18
+ * @returns 마스터 계정이면 true
19
+ */
20
+ export declare function isMasterAccount(email: string): boolean;
21
+ //# sourceMappingURL=theme-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-access.d.ts","sourceRoot":"","sources":["../../src/auth/theme-access.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,UAO1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,UAA8B,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Theme access configuration
3
+ * SPEC-DEPLOY-001: 모든 테마 유료 - 인증 필수
4
+ */
5
+ /**
6
+ * 모든 프리미엄 테마 목록 (실제 존재하는 6개 테마만)
7
+ * 인증된 사용자만 라이선스 보유 테마에 접근 가능
8
+ */
9
+ export const PREMIUM_THEMES = [
10
+ 'classic-magazine',
11
+ 'dark-boldness',
12
+ 'minimal-workspace',
13
+ 'neutral-workspace',
14
+ 'pebble',
15
+ 'square-minimalism',
16
+ ];
17
+ /**
18
+ * 마스터 계정 이메일 목록
19
+ * 마스터 계정은 모든 테마에 무제한 접근 가능
20
+ */
21
+ export const MASTER_EMAILS = ['soo.kate.yeon@gmail.com'];
22
+ /**
23
+ * 마스터 계정 여부 확인
24
+ * @param email - 사용자 이메일
25
+ * @returns 마스터 계정이면 true
26
+ */
27
+ export function isMasterAccount(email) {
28
+ return MASTER_EMAILS.includes(email.toLowerCase());
29
+ }
30
+ //# sourceMappingURL=theme-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-access.js","sourceRoot":"","sources":["../../src/auth/theme-access.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,QAAQ;IACR,mBAAmB;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * API Key verification for Tekton MCP Server
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ export interface VerifyResponse {
6
+ valid: boolean;
7
+ user?: {
8
+ id: string;
9
+ email: string;
10
+ plan: string;
11
+ };
12
+ licenses?: Array<{
13
+ themeId: string;
14
+ tier: string;
15
+ isActive: boolean;
16
+ expiresAt: string | null;
17
+ }>;
18
+ themes?: {
19
+ licensed: string[];
20
+ /** @deprecated free 테마 개념 제거됨 - 하위 호환용 */
21
+ free?: string[];
22
+ };
23
+ error?: string;
24
+ }
25
+ /**
26
+ * Verify API key with Tekton backend
27
+ * @param apiKey - The API key to verify
28
+ * @returns VerifyResponse with user data and licenses
29
+ */
30
+ export declare function verifyApiKey(apiKey: string): Promise<VerifyResponse>;
31
+ /**
32
+ * Extract licensed theme IDs from verification response
33
+ * @param verifyResponse - Verification response from verifyApiKey
34
+ * @returns Array of licensed theme IDs
35
+ */
36
+ export declare function extractThemeAccess(verifyResponse: VerifyResponse): string[];
37
+ /**
38
+ * Check if a theme is accessible for the current authentication state
39
+ * @param themeId - Theme ID to check
40
+ * @param verifyResponse - Verification response (null for unauthenticated)
41
+ * @returns true if theme is in user's licenses
42
+ */
43
+ export declare function isThemeAccessible(themeId: string, verifyResponse: VerifyResponse | null): boolean;
44
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/auth/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;IACH,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,0CAA0C;QAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAiD1E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,EAAE,CAM3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CASjG"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * API Key verification for Tekton MCP Server
3
+ * SPEC-DEPLOY-001 Phase 4.1: MCP Server Authentication Layer
4
+ */
5
+ import { info, error as logError } from '../utils/logger.js';
6
+ /**
7
+ * Verify API key with Tekton backend
8
+ * @param apiKey - The API key to verify
9
+ * @returns VerifyResponse with user data and licenses
10
+ */
11
+ export async function verifyApiKey(apiKey) {
12
+ const apiUrl = process.env.TEKTON_API_URL || 'https://framingui.com';
13
+ const endpoint = `${apiUrl}/api/mcp/verify`;
14
+ try {
15
+ info(`Verifying API key with endpoint: ${endpoint}`);
16
+ const response = await fetch(endpoint, {
17
+ method: 'GET',
18
+ headers: {
19
+ Authorization: `Bearer ${apiKey}`,
20
+ 'Content-Type': 'application/json',
21
+ },
22
+ });
23
+ if (!response.ok) {
24
+ const errorText = await response.text();
25
+ logError(`API key verification failed: ${response.status} ${response.statusText}`);
26
+ return {
27
+ valid: false,
28
+ error: `Verification failed: ${response.status} ${response.statusText} - ${errorText}`,
29
+ };
30
+ }
31
+ const data = (await response.json());
32
+ if (!data.valid) {
33
+ logError(`API key is invalid: ${data.error || 'Unknown reason'}`);
34
+ return {
35
+ valid: false,
36
+ error: data.error || 'API key is invalid',
37
+ };
38
+ }
39
+ info(`API key verified successfully for user: ${data.user?.email || 'unknown'} (plan: ${data.user?.plan || 'unknown'})`);
40
+ return data;
41
+ }
42
+ catch (err) {
43
+ const errorMessage = err instanceof Error ? err.message : String(err);
44
+ logError(`API key verification error: ${errorMessage}`);
45
+ return {
46
+ valid: false,
47
+ error: `Network error: ${errorMessage}`,
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Extract licensed theme IDs from verification response
53
+ * @param verifyResponse - Verification response from verifyApiKey
54
+ * @returns Array of licensed theme IDs
55
+ */
56
+ export function extractThemeAccess(verifyResponse) {
57
+ if (!verifyResponse.valid || !verifyResponse.themes) {
58
+ return [];
59
+ }
60
+ return verifyResponse.themes.licensed || [];
61
+ }
62
+ /**
63
+ * Check if a theme is accessible for the current authentication state
64
+ * @param themeId - Theme ID to check
65
+ * @param verifyResponse - Verification response (null for unauthenticated)
66
+ * @returns true if theme is in user's licenses
67
+ */
68
+ export function isThemeAccessible(themeId, verifyResponse) {
69
+ // 인증 필수
70
+ if (!verifyResponse || !verifyResponse.valid) {
71
+ return false;
72
+ }
73
+ // 라이선스 보유 테마만 접근 가능
74
+ const licensed = extractThemeAccess(verifyResponse);
75
+ return licensed.includes(themeId);
76
+ }
77
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/auth/verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuB7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;IACrE,MAAM,QAAQ,GAAG,GAAG,MAAM,iBAAiB,CAAC;IAE5C,IAAI,CAAC;QACH,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,QAAQ,CAAC,gCAAgC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAEnF,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE;aACvF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,QAAQ,CAAC,uBAAuB,IAAI,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAClE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,oBAAoB;aAC1C,CAAC;QACJ,CAAC;QAED,IAAI,CACF,2CAA2C,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,WAAW,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,GAAG,CACnH,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,QAAQ,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QAExD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kBAAkB,YAAY,EAAE;SACxC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAA8B;IAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,cAAqC;IACtF,QAAQ;IACR,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB;IACpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Agent guidance templates for CLAUDE.md and AGENTS.md
3
+ * Provides framework-specific Tekton workflow instructions
4
+ */
5
+ export type Framework = 'nextjs' | 'vite';
6
+ /**
7
+ * Generate CLAUDE.md section for Claude Code
8
+ * (Claude Code-specific patterns and MCP integration)
9
+ */
10
+ export declare function generateClaudeMdSection(framework: Framework): string;
11
+ /**
12
+ * Generate AGENTS.md section for generic AI agents
13
+ * (Platform-agnostic guidance for OpenAI Codex, Cursor, Windsurf, etc.)
14
+ */
15
+ export declare function generateAgentsMdSection(framework: Framework): string;
16
+ //# sourceMappingURL=agent-md-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-md-templates.d.ts","sourceRoot":"","sources":["../../src/cli/agent-md-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAsHpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAoLpE"}