@axboot-mcp/mcp-server 1.0.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 (78) hide show
  1. package/CLAUDE.md +119 -0
  2. package/MCP_TOOL_PLAN.md +710 -0
  3. package/MCP_USAGE.md +914 -0
  4. package/README.md +168 -0
  5. package/REPOSITORY_CONVENTIONS.md +250 -0
  6. package/SEARCH_PARAMS_MCP_TOOL_COMPLETE_PLAN.md +646 -0
  7. package/SEARCH_PARAMS_PLAN.md +2570 -0
  8. package/STORE_PATTERNS.md +1178 -0
  9. package/debug-dto.js +72 -0
  10. package/generate-banner-store.js +62 -0
  11. package/generation-plan.json +2176 -0
  12. package/generation-results.json +1817 -0
  13. package/package.json +45 -0
  14. package/scripts/batch-generate-all.js +159 -0
  15. package/scripts/batch-generate-mcp.js +329 -0
  16. package/scripts/batch-generate-stores-v2.js +272 -0
  17. package/scripts/batch-generate-stores.js +179 -0
  18. package/scripts/batch-plan.json +3810 -0
  19. package/scripts/batch-process.py +90 -0
  20. package/scripts/batch-regenerate.js +356 -0
  21. package/scripts/direct-generate.js +227 -0
  22. package/scripts/execute-batches.js +1911 -0
  23. package/scripts/generate-all-stores.js +144 -0
  24. package/scripts/generate-stores-mcp.js +161 -0
  25. package/scripts/generate-stores-v2.js +450 -0
  26. package/scripts/generate-stores-v3.js +412 -0
  27. package/scripts/generate-stores-v4.js +521 -0
  28. package/scripts/generate-stores.js +382 -0
  29. package/scripts/repos-to-process.json +1899 -0
  30. package/src/config/nh-layout-patterns.ts +166 -0
  31. package/src/docs/HOOK_GENERATION_PLAN.md +2226 -0
  32. package/src/docs/NH_STORE_PATTERNS.md +297 -0
  33. package/src/docs/README.md +216 -0
  34. package/src/docs/index.ts +28 -0
  35. package/src/docs/loader.ts +568 -0
  36. package/src/docs/patterns.json +419 -0
  37. package/src/docs/practical-examples.md +732 -0
  38. package/src/docs/quick-start.md +257 -0
  39. package/src/docs/requirements-analysis-guide.md +364 -0
  40. package/src/docs/rules.json +321 -0
  41. package/src/docs/store-pattern-analysis.md +664 -0
  42. package/src/docs/store-patterns-rules.md +1168 -0
  43. package/src/docs/store-patterns-usage-guide.md +1835 -0
  44. package/src/docs/troubleshooting.md +544 -0
  45. package/src/docs/type-selection-guide.md +572 -0
  46. package/src/docs//354/202/254/354/232/251/353/262/225/AntD-/354/273/264/355/217/254/353/204/214/355/212/270-/354/202/254/354/232/251/353/262/225.md +1515 -0
  47. package/src/docs//354/202/254/354/232/251/353/262/225/DataGrid-/354/202/254/354/232/251/353/262/225.md +866 -0
  48. package/src/docs//354/202/254/354/232/251/353/262/225/FormItem-/354/202/254/354/232/251/353/262/225.md +903 -0
  49. package/src/docs//354/202/254/354/232/251/353/262/225/FormModal-/354/202/254/354/232/251/353/262/225.md +1155 -0
  50. package/src/docs//354/202/254/354/232/251/353/262/225/MCP-/353/260/224/354/235/264/353/270/214/354/275/224/353/224/251-/352/260/200/354/235/264/353/223/234.md +1133 -0
  51. package/src/docs//354/202/254/354/232/251/353/262/225/MSW-Mock-/353/215/260/354/235/264/355/204/260-/354/202/254/354/232/251/353/262/225.md +579 -0
  52. package/src/docs//354/202/254/354/232/251/353/262/225/Search-/354/273/264/355/217/254/353/204/214/355/212/270-/354/202/254/354/232/251/353/262/225.md +738 -0
  53. package/src/docs//354/202/254/354/232/251/353/262/225/Store-/355/214/250/355/204/264-/354/202/254/354/232/251/353/262/225.md +1135 -0
  54. package/src/docs//354/202/254/354/232/251/353/262/225//355/231/224/353/251/264/352/265/254/354/204/261-/355/203/200/354/236/205/353/263/204-/352/260/234/353/260/234/354/210/234/354/204/234.md +1805 -0
  55. package/src/docs//354/202/254/354/232/251/353/262/225//355/231/224/353/251/264/355/203/200/354/236/205/353/263/204-/352/260/234/353/260/234-/355/224/204/353/241/254/355/224/204/355/212/270-/352/260/200/354/235/264/353/223/234.md +946 -0
  56. package/src/docs//354/202/254/354/232/251/353/262/225//355/231/225/354/236/245/355/231/224/353/251/264/355/203/200/354/236/205/353/263/204-/354/203/201/354/204/270-/355/224/204/353/241/254/355/224/204/355/212/270/352/260/200/354/235/264/353/223/234.md +2422 -0
  57. package/src/features/store-features.ts +232 -0
  58. package/src/handlers/analyze-requirements.ts +403 -0
  59. package/src/handlers/analyze.ts +1373 -0
  60. package/src/handlers/generate-from-requirements.ts +250 -0
  61. package/src/handlers/generate-hook.ts +950 -0
  62. package/src/handlers/generate-interactive.ts +840 -0
  63. package/src/handlers/generate-listdatagrid.ts +521 -0
  64. package/src/handlers/generate-multi-stores.ts +577 -0
  65. package/src/handlers/generate-requirements-from-layout.ts +160 -0
  66. package/src/handlers/generate-search-params.ts +717 -0
  67. package/src/handlers/generate.ts +911 -0
  68. package/src/handlers/list-templates.ts +104 -0
  69. package/src/handlers/scan-metadata.ts +485 -0
  70. package/src/handlers/suggest-layout.ts +326 -0
  71. package/src/index.ts +959 -0
  72. package/src/prompts/search-params.md +793 -0
  73. package/src/templates/index.ts +107 -0
  74. package/src/templates/unified.ts +462 -0
  75. package/store-generation-error-patterns.md +225 -0
  76. package/test/useAgentStore.ts +136 -0
  77. package/test-server.js +78 -0
  78. package/tsconfig.json +20 -0
@@ -0,0 +1,160 @@
1
+ import { analyzeInterface } from './analyze.js';
2
+ import { NH_LAYOUT_PATTERNS, getNHLayoutPattern, isValidNHLayoutType } from '../config/nh-layout-patterns.js';
3
+
4
+ /**
5
+ * NH 레이아웃 패턴 기반 요구사항 생성 결과
6
+ */
7
+ export interface LayoutRequirementsResult {
8
+ success: boolean;
9
+ layoutType: string;
10
+ layoutName: string;
11
+ layoutDescription: string;
12
+ baseRequirements: string;
13
+ additionalContext?: string;
14
+ finalRequirements: string;
15
+ repositoryInfo?: {
16
+ className: string;
17
+ serviceName: string;
18
+ methodCount: number;
19
+ methods: Array<{
20
+ name: string;
21
+ description: string;
22
+ }>;
23
+ };
24
+ exampleModules: string[];
25
+ }
26
+
27
+ /**
28
+ * NH 레이아웃 패턴과 Repository를 기반으로 요구사항 생성
29
+ */
30
+ export async function generateRequirementsFromLayout(args: {
31
+ interfacePath: string;
32
+ layoutType: string;
33
+ additional?: string;
34
+ }): Promise<{
35
+ content: Array<{ type: string; text: string }>;
36
+ }> {
37
+ const { interfacePath, layoutType, additional = '' } = args;
38
+
39
+ try {
40
+ // 1. 레이아웃 타입 유효성 검사
41
+ if (!isValidNHLayoutType(layoutType)) {
42
+ const validTypes = Object.keys(NH_LAYOUT_PATTERNS).join(', ');
43
+ return {
44
+ content: [
45
+ {
46
+ type: 'text',
47
+ text: JSON.stringify({
48
+ success: false,
49
+ error: `유효하지 않은 레이아웃 타입입니다: ${layoutType}`,
50
+ validTypes,
51
+ }),
52
+ },
53
+ ],
54
+ };
55
+ }
56
+
57
+ // 2. 레이아웃 패턴 정보 가져오기
58
+ const layoutPattern = getNHLayoutPattern(layoutType);
59
+ if (!layoutPattern) {
60
+ return {
61
+ content: [
62
+ {
63
+ type: 'text',
64
+ text: JSON.stringify({
65
+ success: false,
66
+ error: '레이아웃 패턴을 찾을 수 없습니다',
67
+ }),
68
+ },
69
+ ],
70
+ };
71
+ }
72
+
73
+ // 3. Repository 분석 (선택사항 - 파일이 없어도 진행)
74
+ let repositoryInfo: LayoutRequirementsResult['repositoryInfo'] | undefined;
75
+ try {
76
+ const analyzeResult = await analyzeInterface({ interfacePath });
77
+ const analyzeData = JSON.parse(analyzeResult.content[0].text);
78
+
79
+ if (analyzeData.success) {
80
+ repositoryInfo = {
81
+ className: analyzeData.className,
82
+ serviceName: analyzeData.serviceName,
83
+ methodCount: analyzeData.methods.length,
84
+ methods: analyzeData.methods.map((m: any) => ({
85
+ name: m.methodName,
86
+ description: m.description || '',
87
+ })),
88
+ };
89
+ }
90
+ } catch (repoError) {
91
+ // Repository 분석 실패해도 진행
92
+ repositoryInfo = undefined;
93
+ }
94
+
95
+ // 4. 최종 요구사항 생성
96
+ const finalRequirements = buildFinalRequirements(
97
+ layoutPattern.baseRequirements,
98
+ additional,
99
+ repositoryInfo
100
+ );
101
+
102
+ // 5. 결과 반환
103
+ const result: LayoutRequirementsResult = {
104
+ success: true,
105
+ layoutType: layoutPattern.type,
106
+ layoutName: layoutPattern.name,
107
+ layoutDescription: layoutPattern.description,
108
+ baseRequirements: layoutPattern.baseRequirements,
109
+ additionalContext: additional || undefined,
110
+ finalRequirements,
111
+ repositoryInfo,
112
+ exampleModules: layoutPattern.exampleModules,
113
+ };
114
+
115
+ return {
116
+ content: [
117
+ {
118
+ type: 'text',
119
+ text: JSON.stringify(result, null, 2),
120
+ },
121
+ ],
122
+ };
123
+ } catch (error) {
124
+ return {
125
+ content: [
126
+ {
127
+ type: 'text',
128
+ text: JSON.stringify({
129
+ success: false,
130
+ error: error instanceof Error ? error.message : String(error),
131
+ }),
132
+ },
133
+ ],
134
+ };
135
+ }
136
+ }
137
+
138
+ /**
139
+ * 최종 요구사항 빌드
140
+ */
141
+ function buildFinalRequirements(
142
+ baseRequirements: string,
143
+ additional: string,
144
+ repositoryInfo?: LayoutRequirementsResult['repositoryInfo']
145
+ ): string {
146
+ let requirements = baseRequirements;
147
+
148
+ // Repository 메서드 정보 추가
149
+ if (repositoryInfo && repositoryInfo.methods.length > 0) {
150
+ const methodList = repositoryInfo.methods.map((m) => ` - ${m.name}: ${m.description}`).join('\n');
151
+ requirements += `\n\nRepository 메서드:\n${methodList}`;
152
+ }
153
+
154
+ // 추가 컨텍스트가 있다면 붙임
155
+ if (additional && additional.trim()) {
156
+ requirements += `\n\n추가 요구사항:\n${additional}`;
157
+ }
158
+
159
+ return requirements;
160
+ }