@mandujs/mcp 0.13.0 → 0.16.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 (136) hide show
  1. package/README.md +6 -7
  2. package/package.json +3 -2
  3. package/src/adapters/index.ts +20 -20
  4. package/src/adapters/monitor-adapter.ts +100 -100
  5. package/src/adapters/tool-adapter.ts +88 -88
  6. package/src/executor/error-handler.ts +250 -250
  7. package/src/executor/index.ts +22 -22
  8. package/src/executor/tool-executor.ts +148 -148
  9. package/src/hooks/config-watcher.ts +174 -174
  10. package/src/hooks/index.ts +23 -23
  11. package/src/hooks/mcp-hooks.ts +227 -227
  12. package/src/logging/index.ts +15 -15
  13. package/src/logging/mcp-transport.ts +134 -134
  14. package/src/registry/index.ts +13 -13
  15. package/src/registry/mcp-tool-registry.ts +298 -298
  16. package/src/resources/skills/guides.ts +1136 -1136
  17. package/src/resources/skills/index.ts +12 -12
  18. package/src/resources/skills/loader.ts +218 -218
  19. package/src/resources/skills/mandu-composition/SKILL.md +91 -91
  20. package/src/resources/skills/mandu-composition/metadata.json +13 -13
  21. package/src/resources/skills/mandu-composition/rules/_sections.md +26 -26
  22. package/src/resources/skills/mandu-composition/rules/_template.md +77 -77
  23. package/src/resources/skills/mandu-composition/rules/comp-arch-avoid-boolean-props.md +146 -146
  24. package/src/resources/skills/mandu-composition/rules/comp-arch-compound-components.md +164 -164
  25. package/src/resources/skills/mandu-composition/rules/comp-island-event.md +161 -161
  26. package/src/resources/skills/mandu-composition/rules/comp-island-slot-split.md +167 -167
  27. package/src/resources/skills/mandu-composition/rules/comp-pattern-children.md +149 -149
  28. package/src/resources/skills/mandu-composition/rules/comp-state-context-interface.md +148 -148
  29. package/src/resources/skills/mandu-composition/rules/comp-state-lift-state.md +150 -150
  30. package/src/resources/skills/mandu-deployment/SKILL.md +92 -92
  31. package/src/resources/skills/mandu-deployment/_sections.md +41 -41
  32. package/src/resources/skills/mandu-deployment/_template.md +38 -38
  33. package/src/resources/skills/mandu-deployment/metadata.json +13 -13
  34. package/src/resources/skills/mandu-deployment/rules/deploy-build-bun.md +109 -109
  35. package/src/resources/skills/mandu-deployment/rules/deploy-build-output.md +115 -115
  36. package/src/resources/skills/mandu-deployment/rules/deploy-cicd-github.md +219 -219
  37. package/src/resources/skills/mandu-deployment/rules/deploy-docker-bun.md +150 -150
  38. package/src/resources/skills/mandu-deployment/rules/deploy-docker-compose.md +223 -223
  39. package/src/resources/skills/mandu-deployment/rules/deploy-platform-fly.md +152 -152
  40. package/src/resources/skills/mandu-deployment/rules/deploy-platform-render.md +179 -179
  41. package/src/resources/skills/mandu-deployment/rules/deploy-platform-supabase.md +323 -323
  42. package/src/resources/skills/mandu-deployment/rules/deploy-platform-vercel.md +140 -140
  43. package/src/resources/skills/mandu-fs-routes/SKILL.md +82 -82
  44. package/src/resources/skills/mandu-fs-routes/metadata.json +12 -12
  45. package/src/resources/skills/mandu-fs-routes/rules/_sections.md +36 -36
  46. package/src/resources/skills/mandu-fs-routes/rules/_template.md +69 -69
  47. package/src/resources/skills/mandu-fs-routes/rules/routes-api-methods.md +65 -65
  48. package/src/resources/skills/mandu-fs-routes/rules/routes-dynamic-param.md +93 -93
  49. package/src/resources/skills/mandu-fs-routes/rules/routes-naming-page.md +55 -55
  50. package/src/resources/skills/mandu-guard/SKILL.md +129 -129
  51. package/src/resources/skills/mandu-guard/metadata.json +12 -12
  52. package/src/resources/skills/mandu-guard/rules/_sections.md +36 -36
  53. package/src/resources/skills/mandu-guard/rules/_template.md +82 -82
  54. package/src/resources/skills/mandu-guard/rules/guard-config-rules.md +100 -100
  55. package/src/resources/skills/mandu-guard/rules/guard-layer-direction.md +76 -76
  56. package/src/resources/skills/mandu-guard/rules/guard-preset-mandu.md +81 -81
  57. package/src/resources/skills/mandu-guard/rules/guard-validate-import.md +80 -80
  58. package/src/resources/skills/mandu-hydration/SKILL.md +91 -91
  59. package/src/resources/skills/mandu-hydration/metadata.json +12 -12
  60. package/src/resources/skills/mandu-hydration/rules/_sections.md +31 -31
  61. package/src/resources/skills/mandu-hydration/rules/_template.md +72 -72
  62. package/src/resources/skills/mandu-hydration/rules/hydration-data-event.md +109 -109
  63. package/src/resources/skills/mandu-hydration/rules/hydration-directive-use-client.md +55 -55
  64. package/src/resources/skills/mandu-hydration/rules/hydration-island-setup.md +113 -113
  65. package/src/resources/skills/mandu-hydration/rules/hydration-priority-visible.md +68 -68
  66. package/src/resources/skills/mandu-performance/SKILL.md +85 -85
  67. package/src/resources/skills/mandu-performance/metadata.json +14 -14
  68. package/src/resources/skills/mandu-performance/rules/_sections.md +31 -31
  69. package/src/resources/skills/mandu-performance/rules/_template.md +64 -64
  70. package/src/resources/skills/mandu-performance/rules/perf-async-defer-await.md +103 -103
  71. package/src/resources/skills/mandu-performance/rules/perf-async-parallel.md +95 -95
  72. package/src/resources/skills/mandu-performance/rules/perf-bun-file.md +124 -124
  73. package/src/resources/skills/mandu-performance/rules/perf-bun-serve.md +125 -125
  74. package/src/resources/skills/mandu-performance/rules/perf-bundle-imports.md +80 -80
  75. package/src/resources/skills/mandu-performance/rules/perf-bundle-island-lazy.md +145 -145
  76. package/src/resources/skills/mandu-performance/rules/perf-cache-react.md +98 -98
  77. package/src/resources/skills/mandu-performance/rules/perf-render-transitions.md +154 -154
  78. package/src/resources/skills/mandu-security/SKILL.md +87 -87
  79. package/src/resources/skills/mandu-security/metadata.json +13 -13
  80. package/src/resources/skills/mandu-security/rules/_sections.md +31 -31
  81. package/src/resources/skills/mandu-security/rules/_template.md +74 -74
  82. package/src/resources/skills/mandu-security/rules/sec-auth-guard.md +127 -127
  83. package/src/resources/skills/mandu-security/rules/sec-env-management.md +133 -133
  84. package/src/resources/skills/mandu-security/rules/sec-input-validate.md +148 -148
  85. package/src/resources/skills/mandu-security/rules/sec-protect-csrf.md +146 -146
  86. package/src/resources/skills/mandu-security/rules/sec-protect-headers.md +138 -138
  87. package/src/resources/skills/mandu-slot/SKILL.md +85 -85
  88. package/src/resources/skills/mandu-slot/metadata.json +12 -12
  89. package/src/resources/skills/mandu-slot/rules/_sections.md +36 -36
  90. package/src/resources/skills/mandu-slot/rules/_template.md +63 -63
  91. package/src/resources/skills/mandu-slot/rules/slot-basic-structure.md +38 -38
  92. package/src/resources/skills/mandu-slot/rules/slot-ctx-response.md +56 -56
  93. package/src/resources/skills/mandu-slot/rules/slot-guard-auth.md +59 -59
  94. package/src/resources/skills/mandu-slot/rules/slot-http-methods.md +64 -64
  95. package/src/resources/skills/mandu-styling/SKILL.md +154 -154
  96. package/src/resources/skills/mandu-styling/_sections.md +43 -43
  97. package/src/resources/skills/mandu-styling/_template.md +32 -32
  98. package/src/resources/skills/mandu-styling/metadata.json +15 -15
  99. package/src/resources/skills/mandu-styling/rules/style-component-compound.md +235 -235
  100. package/src/resources/skills/mandu-styling/rules/style-component-slots.md +255 -255
  101. package/src/resources/skills/mandu-styling/rules/style-component-tokens.md +205 -205
  102. package/src/resources/skills/mandu-styling/rules/style-island-animations.md +272 -272
  103. package/src/resources/skills/mandu-styling/rules/style-island-scoping.md +167 -167
  104. package/src/resources/skills/mandu-styling/rules/style-island-variants.md +221 -221
  105. package/src/resources/skills/mandu-styling/rules/style-perf-critical.md +209 -209
  106. package/src/resources/skills/mandu-styling/rules/style-perf-purge.md +192 -192
  107. package/src/resources/skills/mandu-styling/rules/style-setup-modules.md +162 -162
  108. package/src/resources/skills/mandu-styling/rules/style-setup-panda.md +164 -164
  109. package/src/resources/skills/mandu-styling/rules/style-setup-tailwind.md +170 -170
  110. package/src/resources/skills/mandu-styling/rules/style-tailwind-v4-gotchas.md +179 -179
  111. package/src/resources/skills/mandu-styling/rules/style-theme-darkmode.md +229 -229
  112. package/src/resources/skills/mandu-testing/SKILL.md +99 -99
  113. package/src/resources/skills/mandu-testing/metadata.json +13 -13
  114. package/src/resources/skills/mandu-testing/rules/_sections.md +26 -26
  115. package/src/resources/skills/mandu-testing/rules/_template.md +65 -65
  116. package/src/resources/skills/mandu-testing/rules/test-component-island.md +195 -195
  117. package/src/resources/skills/mandu-testing/rules/test-e2e-playwright.md +196 -196
  118. package/src/resources/skills/mandu-testing/rules/test-mock-fetch.md +219 -219
  119. package/src/resources/skills/mandu-testing/rules/test-slot-unit.md +192 -192
  120. package/src/resources/skills/mandu-ui/SKILL.md +117 -117
  121. package/src/resources/skills/mandu-ui/_sections.md +23 -23
  122. package/src/resources/skills/mandu-ui/_template.md +32 -32
  123. package/src/resources/skills/mandu-ui/metadata.json +13 -13
  124. package/src/resources/skills/mandu-ui/rules/ui-accessibility-aria.md +232 -232
  125. package/src/resources/skills/mandu-ui/rules/ui-accessibility-focus.md +238 -238
  126. package/src/resources/skills/mandu-ui/rules/ui-composition-patterns.md +259 -259
  127. package/src/resources/skills/mandu-ui/rules/ui-island-integration.md +258 -258
  128. package/src/resources/skills/mandu-ui/rules/ui-radix-patterns.md +213 -213
  129. package/src/resources/skills/mandu-ui/rules/ui-shadcn-setup.md +209 -209
  130. package/src/resources/skills/recipes.ts +932 -932
  131. package/src/tools/ate.ts +129 -0
  132. package/src/tools/index.ts +4 -1
  133. package/src/tools/project.ts +334 -334
  134. package/src/tools/runtime.ts +497 -497
  135. package/src/tools/seo.ts +417 -417
  136. package/src/utils/withWarnings.ts +83 -83
@@ -0,0 +1,129 @@
1
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import { ateExtract, ateGenerate, ateRun, ateReport, ateHeal, ateImpact } from "@mandujs/ate";
3
+
4
+ export const ateToolDefinitions: Tool[] = [
5
+ {
6
+ name: "mandu.ate.extract",
7
+ description: "ATE: AST 기반 상호작용 그래프 추출",
8
+ inputSchema: {
9
+ type: "object",
10
+ properties: {
11
+ repoRoot: { type: "string" },
12
+ tsconfigPath: { type: "string" },
13
+ routeGlobs: { type: "array", items: { type: "string" } },
14
+ buildSalt: { type: "string" },
15
+ },
16
+ required: ["repoRoot"],
17
+ },
18
+ },
19
+ {
20
+ name: "mandu.ate.generate",
21
+ description: "ATE: 시나리오 생성 + Playwright spec codegen",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {
25
+ repoRoot: { type: "string" },
26
+ oracleLevel: { type: "string", enum: ["L0", "L1", "L2", "L3"] },
27
+ onlyRoutes: { type: "array", items: { type: "string" } },
28
+ },
29
+ required: ["repoRoot"],
30
+ },
31
+ },
32
+ {
33
+ name: "mandu.ate.run",
34
+ description: "ATE: Playwright runner 실행(artifacts 수집)",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ repoRoot: { type: "string" },
39
+ baseURL: { type: "string" },
40
+ ci: { type: "boolean" },
41
+ headless: { type: "boolean" },
42
+ browsers: { type: "array", items: { type: "string", enum: ["chromium", "firefox", "webkit"] } },
43
+ },
44
+ required: ["repoRoot"],
45
+ },
46
+ },
47
+ {
48
+ name: "mandu.ate.report",
49
+ description: "ATE: summary.json 생성",
50
+ inputSchema: {
51
+ type: "object",
52
+ properties: {
53
+ repoRoot: { type: "string" },
54
+ runId: { type: "string" },
55
+ startedAt: { type: "string" },
56
+ finishedAt: { type: "string" },
57
+ exitCode: { type: "number" },
58
+ oracleLevel: { type: "string", enum: ["L0", "L1", "L2", "L3"] },
59
+ impact: {
60
+ type: "object",
61
+ properties: {
62
+ mode: { type: "string", enum: ["full", "subset"] },
63
+ changedFiles: { type: "array", items: { type: "string" } },
64
+ selectedRoutes: { type: "array", items: { type: "string" } },
65
+ },
66
+ required: ["mode", "changedFiles", "selectedRoutes"],
67
+ },
68
+ },
69
+ required: ["repoRoot", "runId", "startedAt", "finishedAt", "exitCode"],
70
+ },
71
+ },
72
+ {
73
+ name: "mandu.ate.heal",
74
+ description: "ATE: 실패 원인 분류 + 복구 제안(diff) 생성 (자동 커밋 금지)",
75
+ inputSchema: {
76
+ type: "object",
77
+ properties: {
78
+ repoRoot: { type: "string" },
79
+ runId: { type: "string" },
80
+ },
81
+ required: ["repoRoot", "runId"],
82
+ },
83
+ },
84
+ {
85
+ name: "mandu.ate.impact",
86
+ description: "ATE: git diff 기반 subset 계산",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ repoRoot: { type: "string" },
91
+ base: { type: "string" },
92
+ head: { type: "string" },
93
+ },
94
+ required: ["repoRoot"],
95
+ },
96
+ },
97
+ ];
98
+
99
+ export function ateTools(projectRoot: string) {
100
+ return {
101
+ "mandu.ate.extract": async (args: Record<string, unknown>) => {
102
+ return await ateExtract(args as any);
103
+ },
104
+ "mandu.ate.generate": async (args: Record<string, unknown>) => {
105
+ return ateGenerate(args as any);
106
+ },
107
+ "mandu.ate.run": async (args: Record<string, unknown>) => {
108
+ return await ateRun(args as any);
109
+ },
110
+ "mandu.ate.report": async (args: Record<string, unknown>) => {
111
+ const input = args as any;
112
+ return await ateReport({
113
+ repoRoot: input.repoRoot,
114
+ runId: input.runId,
115
+ startedAt: input.startedAt,
116
+ finishedAt: input.finishedAt,
117
+ exitCode: input.exitCode,
118
+ oracleLevel: input.oracleLevel ?? "L1",
119
+ impact: input.impact,
120
+ });
121
+ },
122
+ "mandu.ate.heal": async (args: Record<string, unknown>) => {
123
+ return ateHeal(args as any);
124
+ },
125
+ "mandu.ate.impact": async (args: Record<string, unknown>) => {
126
+ return ateImpact(args as any);
127
+ },
128
+ };
129
+ }
@@ -22,6 +22,7 @@ export { brainTools, brainToolDefinitions } from "./brain.js";
22
22
  export { runtimeTools, runtimeToolDefinitions } from "./runtime.js";
23
23
  export { seoTools, seoToolDefinitions } from "./seo.js";
24
24
  export { projectTools, projectToolDefinitions } from "./project.js";
25
+ export { ateTools, ateToolDefinitions } from "./ate.js";
25
26
 
26
27
  // 도구 모듈 import (등록용)
27
28
  import { specTools, specToolDefinitions } from "./spec.js";
@@ -36,13 +37,14 @@ import { brainTools, brainToolDefinitions } from "./brain.js";
36
37
  import { runtimeTools, runtimeToolDefinitions } from "./runtime.js";
37
38
  import { seoTools, seoToolDefinitions } from "./seo.js";
38
39
  import { projectTools, projectToolDefinitions } from "./project.js";
40
+ import { ateTools, ateToolDefinitions } from "./ate.js";
39
41
 
40
42
  /**
41
43
  * 도구 모듈 정보
42
44
  */
43
45
  interface ToolModule {
44
46
  category: string;
45
- definitions: typeof specToolDefinitions;
47
+ definitions: any;
46
48
  handlers: (
47
49
  projectRoot: string,
48
50
  server?: Server,
@@ -67,6 +69,7 @@ const TOOL_MODULES: ToolModule[] = [
67
69
  { category: "runtime", definitions: runtimeToolDefinitions, handlers: runtimeTools },
68
70
  { category: "seo", definitions: seoToolDefinitions, handlers: seoTools },
69
71
  { category: "project", definitions: projectToolDefinitions, handlers: projectTools as ToolModule["handlers"], requiresServer: true },
72
+ { category: "ate", definitions: ateToolDefinitions as any, handlers: ateTools as any },
70
73
  ];
71
74
 
72
75
  /**