@evolith/smart-cli 0.0.1-beta

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 (241) hide show
  1. package/ARCHITECTURE.md +121 -0
  2. package/README.es.md +425 -0
  3. package/README.md +419 -0
  4. package/dist/app.module.d.ts +2 -0
  5. package/dist/app.module.js +59 -0
  6. package/dist/app.module.js.map +1 -0
  7. package/dist/application/services/index.d.ts +54 -0
  8. package/dist/application/services/index.js +307 -0
  9. package/dist/application/services/index.js.map +1 -0
  10. package/dist/application/services/services.test.d.ts +1 -0
  11. package/dist/application/services/services.test.js +176 -0
  12. package/dist/application/services/services.test.js.map +1 -0
  13. package/dist/application/use-cases/validate-satellite.use-case.d.ts +18 -0
  14. package/dist/application/use-cases/validate-satellite.use-case.js +92 -0
  15. package/dist/application/use-cases/validate-satellite.use-case.js.map +1 -0
  16. package/dist/application/use-cases/validate-satellite.use-case.spec.d.ts +1 -0
  17. package/dist/application/use-cases/validate-satellite.use-case.spec.js +102 -0
  18. package/dist/application/use-cases/validate-satellite.use-case.spec.js.map +1 -0
  19. package/dist/commands/adr/adr.command.d.ts +28 -0
  20. package/dist/commands/adr/adr.command.js +357 -0
  21. package/dist/commands/adr/adr.command.js.map +1 -0
  22. package/dist/commands/architecture/scaffold.command.d.ts +7 -0
  23. package/dist/commands/architecture/scaffold.command.js +162 -0
  24. package/dist/commands/architecture/scaffold.command.js.map +1 -0
  25. package/dist/commands/commands.test.d.ts +1 -0
  26. package/dist/commands/commands.test.js +131 -0
  27. package/dist/commands/commands.test.js.map +1 -0
  28. package/dist/commands/completion/completion.command.d.ts +20 -0
  29. package/dist/commands/completion/completion.command.js +215 -0
  30. package/dist/commands/completion/completion.command.js.map +1 -0
  31. package/dist/commands/docs/docs.command.d.ts +9 -0
  32. package/dist/commands/docs/docs.command.js +77 -0
  33. package/dist/commands/docs/docs.command.js.map +1 -0
  34. package/dist/commands/history/history.command.d.ts +29 -0
  35. package/dist/commands/history/history.command.js +268 -0
  36. package/dist/commands/history/history.command.js.map +1 -0
  37. package/dist/commands/init/agents.command.d.ts +22 -0
  38. package/dist/commands/init/agents.command.js +502 -0
  39. package/dist/commands/init/agents.command.js.map +1 -0
  40. package/dist/commands/init/init.command.d.ts +20 -0
  41. package/dist/commands/init/init.command.js +329 -0
  42. package/dist/commands/init/init.command.js.map +1 -0
  43. package/dist/commands/init/upgrade.command.d.ts +9 -0
  44. package/dist/commands/init/upgrade.command.js +77 -0
  45. package/dist/commands/init/upgrade.command.js.map +1 -0
  46. package/dist/commands/mcp/mcp-serve.command.d.ts +15 -0
  47. package/dist/commands/mcp/mcp-serve.command.js +106 -0
  48. package/dist/commands/mcp/mcp-serve.command.js.map +1 -0
  49. package/dist/commands/sdlc/generate-domain.command.d.ts +5 -0
  50. package/dist/commands/sdlc/generate-domain.command.js +55 -0
  51. package/dist/commands/sdlc/generate-domain.command.js.map +1 -0
  52. package/dist/commands/sdlc/handoff.command.d.ts +22 -0
  53. package/dist/commands/sdlc/handoff.command.js +273 -0
  54. package/dist/commands/sdlc/handoff.command.js.map +1 -0
  55. package/dist/commands/sdlc/sdlc.command.d.ts +4 -0
  56. package/dist/commands/sdlc/sdlc.command.js +34 -0
  57. package/dist/commands/sdlc/sdlc.command.js.map +1 -0
  58. package/dist/commands/standards/standards.command.d.ts +27 -0
  59. package/dist/commands/standards/standards.command.js +308 -0
  60. package/dist/commands/standards/standards.command.js.map +1 -0
  61. package/dist/commands/validate/validate.command.d.ts +19 -0
  62. package/dist/commands/validate/validate.command.js +231 -0
  63. package/dist/commands/validate/validate.command.js.map +1 -0
  64. package/dist/config/runtimes.json +196 -0
  65. package/dist/config/tool-catalog.json +343 -0
  66. package/dist/core/abstractions/index.d.ts +6 -0
  67. package/dist/core/abstractions/index.js +23 -0
  68. package/dist/core/abstractions/index.js.map +1 -0
  69. package/dist/core/abstractions/interfaces.d.ts +60 -0
  70. package/dist/core/abstractions/interfaces.js +5 -0
  71. package/dist/core/abstractions/interfaces.js.map +1 -0
  72. package/dist/core/abstractions/providers/config-parser.provider.d.ts +15 -0
  73. package/dist/core/abstractions/providers/config-parser.provider.js +68 -0
  74. package/dist/core/abstractions/providers/config-parser.provider.js.map +1 -0
  75. package/dist/core/abstractions/providers/logger.provider.d.ts +10 -0
  76. package/dist/core/abstractions/providers/logger.provider.js +84 -0
  77. package/dist/core/abstractions/providers/logger.provider.js.map +1 -0
  78. package/dist/core/abstractions/providers/mock-filesystem.provider.d.ts +30 -0
  79. package/dist/core/abstractions/providers/mock-filesystem.provider.js +122 -0
  80. package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +1 -0
  81. package/dist/core/abstractions/providers/node-filesystem.provider.d.ts +19 -0
  82. package/dist/core/abstractions/providers/node-filesystem.provider.js +104 -0
  83. package/dist/core/abstractions/providers/node-filesystem.provider.js.map +1 -0
  84. package/dist/core/architecture/nx-workspace.strategy.d.ts +11 -0
  85. package/dist/core/architecture/nx-workspace.strategy.js +107 -0
  86. package/dist/core/architecture/nx-workspace.strategy.js.map +1 -0
  87. package/dist/core/architecture/workspace-manager.strategy.d.ts +7 -0
  88. package/dist/core/architecture/workspace-manager.strategy.js +3 -0
  89. package/dist/core/architecture/workspace-manager.strategy.js.map +1 -0
  90. package/dist/core/config/config.service.d.ts +15 -0
  91. package/dist/core/config/config.service.js +55 -0
  92. package/dist/core/config/config.service.js.map +1 -0
  93. package/dist/core/config/config.service.spec.d.ts +1 -0
  94. package/dist/core/config/config.service.spec.js +43 -0
  95. package/dist/core/config/config.service.spec.js.map +1 -0
  96. package/dist/core/di/container.d.ts +25 -0
  97. package/dist/core/di/container.js +87 -0
  98. package/dist/core/di/container.js.map +1 -0
  99. package/dist/core/di/container.spec.d.ts +1 -0
  100. package/dist/core/di/container.spec.js +137 -0
  101. package/dist/core/di/container.spec.js.map +1 -0
  102. package/dist/core/errors/index.d.ts +26 -0
  103. package/dist/core/errors/index.js +67 -0
  104. package/dist/core/errors/index.js.map +1 -0
  105. package/dist/core/filesystem/file-manager.service.d.ts +4 -0
  106. package/dist/core/filesystem/file-manager.service.js +96 -0
  107. package/dist/core/filesystem/file-manager.service.js.map +1 -0
  108. package/dist/core/filesystem/file-manager.service.spec.d.ts +1 -0
  109. package/dist/core/filesystem/file-manager.service.spec.js +103 -0
  110. package/dist/core/filesystem/file-manager.service.spec.js.map +1 -0
  111. package/dist/core/mcp/mcp-server.service.d.ts +7 -0
  112. package/dist/core/mcp/mcp-server.service.js +31 -0
  113. package/dist/core/mcp/mcp-server.service.js.map +1 -0
  114. package/dist/core/mcp/metrics.service.d.ts +37 -0
  115. package/dist/core/mcp/metrics.service.js +72 -0
  116. package/dist/core/mcp/metrics.service.js.map +1 -0
  117. package/dist/core/mcp/prompts/index.d.ts +22 -0
  118. package/dist/core/mcp/prompts/index.js +175 -0
  119. package/dist/core/mcp/prompts/index.js.map +1 -0
  120. package/dist/core/mcp/resources/index.d.ts +11 -0
  121. package/dist/core/mcp/resources/index.js +193 -0
  122. package/dist/core/mcp/resources/index.js.map +1 -0
  123. package/dist/core/mcp/server.d.ts +25 -0
  124. package/dist/core/mcp/server.js +413 -0
  125. package/dist/core/mcp/server.js.map +1 -0
  126. package/dist/core/mcp/tools/agent.d.ts +41 -0
  127. package/dist/core/mcp/tools/agent.js +195 -0
  128. package/dist/core/mcp/tools/agent.js.map +1 -0
  129. package/dist/core/mcp/tools/architecture.d.ts +27 -0
  130. package/dist/core/mcp/tools/architecture.js +166 -0
  131. package/dist/core/mcp/tools/architecture.js.map +1 -0
  132. package/dist/core/mcp/tools/sdlc.d.ts +32 -0
  133. package/dist/core/mcp/tools/sdlc.js +189 -0
  134. package/dist/core/mcp/tools/sdlc.js.map +1 -0
  135. package/dist/core/mcp/tools/tool-utils.d.ts +4 -0
  136. package/dist/core/mcp/tools/tool-utils.js +18 -0
  137. package/dist/core/mcp/tools/tool-utils.js.map +1 -0
  138. package/dist/core/mcp/tools/validate.d.ts +18 -0
  139. package/dist/core/mcp/tools/validate.js +56 -0
  140. package/dist/core/mcp/tools/validate.js.map +1 -0
  141. package/dist/core/mcp/watcher.service.d.ts +8 -0
  142. package/dist/core/mcp/watcher.service.js +82 -0
  143. package/dist/core/mcp/watcher.service.js.map +1 -0
  144. package/dist/core/mcp/watcher.service.spec.d.ts +1 -0
  145. package/dist/core/mcp/watcher.service.spec.js +70 -0
  146. package/dist/core/mcp/watcher.service.spec.js.map +1 -0
  147. package/dist/core/observability/command-watcher.d.ts +45 -0
  148. package/dist/core/observability/command-watcher.js +168 -0
  149. package/dist/core/observability/command-watcher.js.map +1 -0
  150. package/dist/core/observability/error-reporter.d.ts +47 -0
  151. package/dist/core/observability/error-reporter.js +163 -0
  152. package/dist/core/observability/error-reporter.js.map +1 -0
  153. package/dist/core/observability/index.d.ts +4 -0
  154. package/dist/core/observability/index.js +24 -0
  155. package/dist/core/observability/index.js.map +1 -0
  156. package/dist/core/observability/observability.test.d.ts +1 -0
  157. package/dist/core/observability/observability.test.js +224 -0
  158. package/dist/core/observability/observability.test.js.map +1 -0
  159. package/dist/core/observability/structured-logger.d.ts +53 -0
  160. package/dist/core/observability/structured-logger.js +123 -0
  161. package/dist/core/observability/structured-logger.js.map +1 -0
  162. package/dist/core/observability/timing.d.ts +23 -0
  163. package/dist/core/observability/timing.js +140 -0
  164. package/dist/core/observability/timing.js.map +1 -0
  165. package/dist/core/services/command-executor.service.d.ts +3 -0
  166. package/dist/core/services/command-executor.service.js +12 -0
  167. package/dist/core/services/command-executor.service.js.map +1 -0
  168. package/dist/core/services/command-history.service.d.ts +38 -0
  169. package/dist/core/services/command-history.service.js +146 -0
  170. package/dist/core/services/command-history.service.js.map +1 -0
  171. package/dist/core/services/command-providers.d.ts +1 -0
  172. package/dist/core/services/command-providers.js +17 -0
  173. package/dist/core/services/command-providers.js.map +1 -0
  174. package/dist/core/services/runtime-catalog.service.d.ts +2 -0
  175. package/dist/core/services/runtime-catalog.service.js +7 -0
  176. package/dist/core/services/runtime-catalog.service.js.map +1 -0
  177. package/dist/core/sync/sync.service.d.ts +4 -0
  178. package/dist/core/sync/sync.service.js +81 -0
  179. package/dist/core/sync/sync.service.js.map +1 -0
  180. package/dist/core/sync/sync.service.spec.d.ts +1 -0
  181. package/dist/core/sync/sync.service.spec.js +63 -0
  182. package/dist/core/sync/sync.service.spec.js.map +1 -0
  183. package/dist/core/validators/ruleset-validator.service.d.ts +56 -0
  184. package/dist/core/validators/ruleset-validator.service.js +263 -0
  185. package/dist/core/validators/ruleset-validator.service.js.map +1 -0
  186. package/dist/core/validators/ruleset-validator.service.spec.d.ts +1 -0
  187. package/dist/core/validators/ruleset-validator.service.spec.js +121 -0
  188. package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -0
  189. package/dist/domain/entities/index.d.ts +72 -0
  190. package/dist/domain/entities/index.js +119 -0
  191. package/dist/domain/entities/index.js.map +1 -0
  192. package/dist/domain/interfaces.d.ts +224 -0
  193. package/dist/domain/interfaces.js +3 -0
  194. package/dist/domain/interfaces.js.map +1 -0
  195. package/dist/domain/services/adr.service.d.ts +50 -0
  196. package/dist/domain/services/adr.service.js +125 -0
  197. package/dist/domain/services/adr.service.js.map +1 -0
  198. package/dist/domain/services/agent-registry.service.d.ts +26 -0
  199. package/dist/domain/services/agent-registry.service.js +152 -0
  200. package/dist/domain/services/agent-registry.service.js.map +1 -0
  201. package/dist/domain/services/index.d.ts +33 -0
  202. package/dist/domain/services/index.js +126 -0
  203. package/dist/domain/services/index.js.map +1 -0
  204. package/dist/domain/services/services.test.d.ts +1 -0
  205. package/dist/domain/services/services.test.js +236 -0
  206. package/dist/domain/services/services.test.js.map +1 -0
  207. package/dist/domain/services/standards.service.d.ts +47 -0
  208. package/dist/domain/services/standards.service.js +129 -0
  209. package/dist/domain/services/standards.service.js.map +1 -0
  210. package/dist/domain/services/tool-usage-telemetry.service.d.ts +46 -0
  211. package/dist/domain/services/tool-usage-telemetry.service.js +181 -0
  212. package/dist/domain/services/tool-usage-telemetry.service.js.map +1 -0
  213. package/dist/infrastructure/catalog/catalog-loader.d.ts +22 -0
  214. package/dist/infrastructure/catalog/catalog-loader.js +135 -0
  215. package/dist/infrastructure/catalog/catalog-loader.js.map +1 -0
  216. package/dist/infrastructure/catalog/catalog-loader.test.d.ts +1 -0
  217. package/dist/infrastructure/catalog/catalog-loader.test.js +184 -0
  218. package/dist/infrastructure/catalog/catalog-loader.test.js.map +1 -0
  219. package/dist/infrastructure/cli/command-executor.d.ts +20 -0
  220. package/dist/infrastructure/cli/command-executor.js +109 -0
  221. package/dist/infrastructure/cli/command-executor.js.map +1 -0
  222. package/dist/infrastructure/cli/command-executor.test.d.ts +1 -0
  223. package/dist/infrastructure/cli/command-executor.test.js +98 -0
  224. package/dist/infrastructure/cli/command-executor.test.js.map +1 -0
  225. package/dist/infrastructure/cli/providers/index.d.ts +52 -0
  226. package/dist/infrastructure/cli/providers/index.js +175 -0
  227. package/dist/infrastructure/cli/providers/index.js.map +1 -0
  228. package/dist/infrastructure/formatters/output-formatter.service.d.ts +28 -0
  229. package/dist/infrastructure/formatters/output-formatter.service.js +198 -0
  230. package/dist/infrastructure/formatters/output-formatter.service.js.map +1 -0
  231. package/dist/main.d.ts +2 -0
  232. package/dist/main.js +10 -0
  233. package/dist/main.js.map +1 -0
  234. package/dist/test/mocks/index.d.ts +44 -0
  235. package/dist/test/mocks/index.js +135 -0
  236. package/dist/test/mocks/index.js.map +1 -0
  237. package/package.json +80 -0
  238. package/shell/completion.bash +85 -0
  239. package/shell/completion.fish +72 -0
  240. package/shell/completion.zsh +83 -0
  241. package/templates/evolith.yaml.example +45 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpMetricsService = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class McpMetricsService {
6
+ constructor() {
7
+ this.logger = new common_1.Logger(McpMetricsService.name);
8
+ this.metrics = {
9
+ serverStartTime: new Date().toISOString(),
10
+ totalRequests: 0,
11
+ toolMetrics: new Map(),
12
+ errorMetrics: new Map(),
13
+ };
14
+ }
15
+ recordToolCall(toolName, latencyMs, success) {
16
+ this.metrics.totalRequests++;
17
+ let toolMetrics = this.metrics.toolMetrics.get(toolName);
18
+ if (!toolMetrics) {
19
+ toolMetrics = {
20
+ toolName,
21
+ callCount: 0,
22
+ successCount: 0,
23
+ errorCount: 0,
24
+ totalLatencyMs: 0,
25
+ lastCalled: new Date().toISOString(),
26
+ };
27
+ this.metrics.toolMetrics.set(toolName, toolMetrics);
28
+ }
29
+ toolMetrics.callCount++;
30
+ toolMetrics.totalLatencyMs += latencyMs;
31
+ toolMetrics.lastCalled = new Date().toISOString();
32
+ if (success) {
33
+ toolMetrics.successCount++;
34
+ }
35
+ else {
36
+ toolMetrics.errorCount++;
37
+ }
38
+ this.logger.debug(`Tool call recorded: ${toolName} - ${success ? 'success' : 'error'} (${latencyMs}ms)`);
39
+ }
40
+ recordError(errorCode) {
41
+ const count = this.metrics.errorMetrics.get(errorCode) || 0;
42
+ this.metrics.errorMetrics.set(errorCode, count + 1);
43
+ }
44
+ getMetrics() {
45
+ const toolMetricsArray = Array.from(this.metrics.toolMetrics.values()).map(tm => ({
46
+ ...tm,
47
+ averageLatencyMs: tm.callCount > 0 ? Math.round(tm.totalLatencyMs / tm.callCount) : 0,
48
+ errorRate: tm.callCount > 0 ? (tm.errorCount / tm.callCount * 100).toFixed(2) + '%' : '0%',
49
+ }));
50
+ return {
51
+ serverStartTime: this.metrics.serverStartTime,
52
+ uptimeMs: Date.now() - new Date(this.metrics.serverStartTime).getTime(),
53
+ totalRequests: this.metrics.totalRequests,
54
+ toolMetrics: toolMetricsArray,
55
+ topErrors: Array.from(this.metrics.errorMetrics.entries())
56
+ .sort((a, b) => b[1] - a[1])
57
+ .slice(0, 5)
58
+ .map(([code, count]) => ({ code, count })),
59
+ };
60
+ }
61
+ getToolMetrics(toolName) {
62
+ return this.metrics.toolMetrics.get(toolName);
63
+ }
64
+ reset() {
65
+ this.metrics.totalRequests = 0;
66
+ this.metrics.toolMetrics.clear();
67
+ this.metrics.errorMetrics.clear();
68
+ this.logger.log('Metrics reset');
69
+ }
70
+ }
71
+ exports.McpMetricsService = McpMetricsService;
72
+ //# sourceMappingURL=metrics.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.service.js","sourceRoot":"","sources":["../../../src/core/mcp/metrics.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ interface Prompt {
2
+ name: string;
3
+ description: string;
4
+ arguments: Array<{
5
+ name: string;
6
+ description: string;
7
+ required: boolean;
8
+ }>;
9
+ }
10
+ export declare function listPrompts(): Promise<{
11
+ prompts: Prompt[];
12
+ }>;
13
+ export declare function getPrompt(args: unknown): Promise<{
14
+ messages: {
15
+ role: string;
16
+ content: {
17
+ type: string;
18
+ text: string;
19
+ };
20
+ }[];
21
+ }>;
22
+ export {};
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listPrompts = listPrompts;
4
+ exports.getPrompt = getPrompt;
5
+ const PROMPTS = [
6
+ {
7
+ name: 'evolith/validate-repository',
8
+ description: 'Template for validating a repository against Evolith governance rules',
9
+ arguments: [
10
+ { name: 'path', description: 'Path to the repository to validate', required: true },
11
+ { name: 'ruleset', description: 'Specific ruleset to focus on (optional)', required: false },
12
+ ],
13
+ },
14
+ {
15
+ name: 'evolith/agent-onboarding',
16
+ description: 'Template for installing and configuring a new Evolith agent',
17
+ arguments: [
18
+ { name: 'name', description: 'Name of the agent to create', required: true },
19
+ { name: 'template', description: 'Template to use: standard, minimal, enterprise', required: false },
20
+ ],
21
+ },
22
+ {
23
+ name: 'evolith/architecture-review',
24
+ description: 'Template for performing F1/F2/F3 architecture validation review',
25
+ arguments: [
26
+ { name: 'path', description: 'Path to the repository', required: true },
27
+ { name: 'level', description: 'Architecture level: F1, F2, or F3', required: false },
28
+ ],
29
+ },
30
+ {
31
+ name: 'evolith/phase-gate-check',
32
+ description: 'Template for checking phase gate readiness',
33
+ arguments: [
34
+ { name: 'path', description: 'Path to the repository', required: true },
35
+ ],
36
+ },
37
+ {
38
+ name: 'evolith/sdlc-handoff',
39
+ description: 'Template for executing SDLC phase handoff',
40
+ arguments: [
41
+ { name: 'path', description: 'Path to the repository', required: true },
42
+ { name: 'fromPhase', description: 'Source phase', required: true },
43
+ { name: 'toPhase', description: 'Target phase', required: true },
44
+ ],
45
+ },
46
+ {
47
+ name: 'evolith/ruleset-analysis',
48
+ description: 'Template for analyzing a ruleset for compliance',
49
+ arguments: [
50
+ { name: 'ruleset', description: 'Ruleset ID to analyze', required: true },
51
+ { name: 'path', description: 'Path to the repository', required: false },
52
+ ],
53
+ },
54
+ ];
55
+ async function listPrompts() {
56
+ return { prompts: PROMPTS };
57
+ }
58
+ async function getPrompt(args) {
59
+ const { name, arguments: promptArgs = {} } = args;
60
+ const prompt = PROMPTS.find(p => p.name === name);
61
+ if (!prompt) {
62
+ throw new Error(`Unknown prompt: ${name}`);
63
+ }
64
+ let template = '';
65
+ switch (name) {
66
+ case 'evolith/validate-repository':
67
+ template = buildValidatePrompt(promptArgs);
68
+ break;
69
+ case 'evolith/agent-onboarding':
70
+ template = buildAgentOnboardingPrompt(promptArgs);
71
+ break;
72
+ case 'evolith/architecture-review':
73
+ template = buildArchitectureReviewPrompt(promptArgs);
74
+ break;
75
+ case 'evolith/phase-gate-check':
76
+ template = buildPhaseGateCheckPrompt(promptArgs);
77
+ break;
78
+ case 'evolith/sdlc-handoff':
79
+ template = buildSdlcHandoffPrompt(promptArgs);
80
+ break;
81
+ case 'evolith/ruleset-analysis':
82
+ template = buildRulesetAnalysisPrompt(promptArgs);
83
+ break;
84
+ }
85
+ return {
86
+ messages: [
87
+ {
88
+ role: 'user',
89
+ content: {
90
+ type: 'text',
91
+ text: template,
92
+ },
93
+ },
94
+ ],
95
+ };
96
+ }
97
+ function buildValidatePrompt(args) {
98
+ return `Please validate the repository at "${args.path || '<path>'}" against Evolith governance rules.
99
+
100
+ Use the evolith-validate tool to check:
101
+ - GOV-01: evolith.yaml exists
102
+ - GOV-02: governance.version declared
103
+ - INH-02: coreRef.version is pinned
104
+ - ACL-01: ACL directory is not empty
105
+ - OCB-01: No enterprise-only licenses in Core
106
+
107
+ ${args.ruleset ? `Focus specifically on the "${args.ruleset}" ruleset.` : ''}
108
+
109
+ Report any blocking issues that must be resolved before the repository can be considered compliant.`;
110
+ }
111
+ function buildAgentOnboardingPrompt(args) {
112
+ return `Please help onboard a new Evolith agent.
113
+
114
+ Agent name: ${args.name || '<name>'}
115
+ Template: ${args.template || 'standard'}
116
+
117
+ Use the evolith-agent-install tool to create the agent with the appropriate ruleset template.
118
+
119
+ Then use evolith-agent-validate to verify the agent is properly configured.
120
+
121
+ Finally, provide a summary of the agent's governance principles and any next steps for configuration.`;
122
+ }
123
+ function buildArchitectureReviewPrompt(args) {
124
+ return `Please perform an architecture review for the repository at "${args.path || '<path>'}".
125
+
126
+ Use the evolith-architecture-validate tool to check:
127
+
128
+ F1 (Modular Independence):
129
+ - F1-01: Monorepo workspace detection
130
+ - F1-02: Multiple bounded contexts present
131
+
132
+ F2 (Contract Boundaries):
133
+ - F2-01: No circular dependencies between modules
134
+
135
+ F3 (Extraction Readiness):
136
+ - F3-01: Product type declared
137
+ - F3-02: Dockerfile exists for containerization
138
+
139
+ ${args.level ? `Focus on ${args.level} level only.` : 'Check all three levels.'}
140
+
141
+ Provide a detailed report of any architectural issues found.`;
142
+ }
143
+ function buildPhaseGateCheckPrompt(args) {
144
+ return `Please check the phase gate status for the repository at "${args.path || '<path>'}".
145
+
146
+ Use the evolith-sdlc-status tool to retrieve the current phase and requirements for each phase gate.
147
+
148
+ Identify which phase the repository is currently in and what requirements must be met to advance to the next phase.
149
+
150
+ Provide a clear checklist of remaining items to complete before advancing.`;
151
+ }
152
+ function buildSdlcHandoffPrompt(args) {
153
+ return `Please execute the SDLC phase handoff from "${args.fromPhase || '<from>'}" to "${args.toPhase || '<to>'}" for the repository at "${args.path || '<path>'}".
154
+
155
+ Use the evolith-sdlc-handoff tool to:
156
+ 1. Verify all requirements for ${args.fromPhase || '<from>'} are met
157
+ 2. Generate the handoff manifest
158
+ 3. Validate readiness for ${args.toPhase || '<to>'}
159
+
160
+ Report the handoff manifest contents and any recommendations for the next phase.`;
161
+ }
162
+ function buildRulesetAnalysisPrompt(args) {
163
+ return `Please analyze the "${args.ruleset || '<ruleset>'}" ruleset for compliance.
164
+
165
+ Use the evolith-validate tool with ruleset="${args.ruleset}" to retrieve the ruleset definition.
166
+
167
+ ${args.path ? `Validate against repository at "${args.path}".` : ''}
168
+
169
+ For each rule in the ruleset:
170
+ 1. Identify the rule ID and severity (MUST/SHOULD/COULD)
171
+ 2. Explain the governance intent
172
+ 3. Provide examples of compliance and non-compliance
173
+ 4. Suggest validation approaches`;
174
+ }
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/mcp/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface Resource {
2
+ uri: string;
3
+ name: string;
4
+ description: string;
5
+ mimeType?: string;
6
+ }
7
+ export declare function listResources(): Promise<{
8
+ resources: Resource[];
9
+ }>;
10
+ export declare function readResource(args: unknown): Promise<unknown>;
11
+ export {};
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.listResources = listResources;
37
+ exports.readResource = readResource;
38
+ const path = __importStar(require("path"));
39
+ const tool_utils_1 = require("../tools/tool-utils");
40
+ const RESOURCES = [
41
+ { uri: 'evolith://rulesets', name: 'Rulesets', description: 'List of all available rulesets in Evolith Core' },
42
+ { uri: 'evolith://phase-gates', name: 'Phase Gates', description: 'Phase gate definitions and requirements' },
43
+ { uri: 'evolith://agents', name: 'Agents', description: 'List of installed Evolith agents' },
44
+ { uri: 'evolith://governance/version', name: 'Governance Version', description: 'Current governance schema version' },
45
+ { uri: 'evolith://core/version', name: 'Core Version', description: 'Current Core schema version' },
46
+ { uri: 'evolith://repository/config', name: 'Repository Config', description: 'Repository evolith.yaml content' },
47
+ ];
48
+ async function listResources() {
49
+ return { resources: RESOURCES };
50
+ }
51
+ async function readResource(args) {
52
+ const fs = (0, tool_utils_1.getFileSystem)();
53
+ const configParser = (0, tool_utils_1.getContainer)().createConfigParser('yaml');
54
+ const uri = args.uri;
55
+ if (uri === 'evolith://rulesets') {
56
+ return await getRulesetsList(fs);
57
+ }
58
+ else if (uri === 'evolith://phase-gates') {
59
+ return getPhaseGates();
60
+ }
61
+ else if (uri === 'evolith://agents') {
62
+ return await getAgentsList(fs);
63
+ }
64
+ else if (uri === 'evolith://governance/version') {
65
+ return { version: '1.0.0', schema: 'governance' };
66
+ }
67
+ else if (uri === 'evolith://core/version') {
68
+ return { version: '1.0.0', schema: 'core' };
69
+ }
70
+ else if (uri.startsWith('evolith://ruleset/')) {
71
+ const rulesetName = uri.replace('evolith://ruleset/', '');
72
+ return await getRulesetContent(rulesetName, fs);
73
+ }
74
+ else if (uri.startsWith('evolith://agent/')) {
75
+ const agentName = uri.replace('evolith://agent/', '');
76
+ return await getAgentContent(agentName, fs);
77
+ }
78
+ else if (uri === 'evolith://repository/config') {
79
+ return await getRepositoryConfig(fs, configParser);
80
+ }
81
+ else if (uri === 'evolith://open-core/artifacts') {
82
+ return await getOpenCoreArtifacts(fs);
83
+ }
84
+ else if (uri === 'evolith://acl/rules') {
85
+ return await getAclRules(fs);
86
+ }
87
+ throw new Error(`Unknown resource URI: ${uri}`);
88
+ }
89
+ async function getRulesetsList(fs) {
90
+ const corePath = findCorePath(process.cwd(), fs);
91
+ const rulesetsPath = path.join(corePath, 'rulesets');
92
+ if (!await fs.exists(rulesetsPath)) {
93
+ return { rulesets: [], error: 'Rulesets directory not found' };
94
+ }
95
+ const entries = await fs.readdir(rulesetsPath);
96
+ const rulesets = [];
97
+ for (const entry of entries) {
98
+ if (entry.isDirectory()) {
99
+ const categoryPath = path.join(rulesetsPath, entry.name);
100
+ const files = await fs.readdirNames(categoryPath);
101
+ const ruleFiles = files.filter(f => f.endsWith('.rules.json'));
102
+ for (const ruleFile of ruleFiles) {
103
+ rulesets.push({
104
+ category: entry.name,
105
+ name: ruleFile.replace('.rules.json', ''),
106
+ path: `rulesets/${entry.name}/${ruleFile}`,
107
+ });
108
+ }
109
+ }
110
+ }
111
+ return { rulesets, count: rulesets.length };
112
+ }
113
+ async function getRulesetContent(name, fs) {
114
+ const corePath = findCorePath(process.cwd(), fs);
115
+ const normalizedName = name.replace(/-/g, '/');
116
+ const rulesetPath = path.join(corePath, 'rulesets', normalizedName + '.rules.json');
117
+ if (await fs.exists(rulesetPath)) {
118
+ return await fs.readJson(rulesetPath);
119
+ }
120
+ const parts = name.split('/');
121
+ if (parts.length === 2) {
122
+ const altPath = path.join(corePath, 'rulesets', parts[0], parts[1] + '.rules.json');
123
+ if (await fs.exists(altPath)) {
124
+ return await fs.readJson(altPath);
125
+ }
126
+ }
127
+ return { error: `Ruleset not found: ${name}` };
128
+ }
129
+ function getPhaseGates() {
130
+ return {
131
+ phaseGates: [
132
+ { phase: 'phase-0', name: 'Foundation', requirements: ['evolith.yaml', 'coreRef.version pinned'] },
133
+ { phase: 'phase-1', name: 'Structure', requirements: ['package.json', 'src/ directory', 'bilingual README'] },
134
+ { phase: 'phase-2', name: 'Governance', requirements: ['rulesets/ directory', 'ACL ruleset', '.harness/ scripts'] },
135
+ { phase: 'phase-3', name: 'Architecture', requirements: ['ADR collection', 'ADR matrix updated'] },
136
+ { phase: 'phase-4', name: 'Production', requirements: ['Dockerfile', 'CI/CD pipeline', 'DORA metrics'] },
137
+ ],
138
+ };
139
+ }
140
+ async function getAgentsList(fs) {
141
+ const dir = process.cwd();
142
+ const agentsDir = path.join(dir, 'rulesets', 'agents');
143
+ if (!await fs.exists(agentsDir)) {
144
+ return { agents: [] };
145
+ }
146
+ const entries = await fs.readdirNames(agentsDir);
147
+ return { agents: entries, count: entries.length };
148
+ }
149
+ async function getAgentContent(name, fs) {
150
+ const dir = process.cwd();
151
+ const agentPath = path.join(dir, 'rulesets', 'agents', name, 'agent.rules.json');
152
+ if (await fs.exists(agentPath)) {
153
+ return await fs.readJson(agentPath);
154
+ }
155
+ return { error: `Agent not found: ${name}` };
156
+ }
157
+ async function getRepositoryConfig(fs, configParser) {
158
+ const dir = process.cwd();
159
+ const configPath = path.join(dir, 'evolith.yaml');
160
+ if (await fs.exists(configPath)) {
161
+ const content = await fs.readFile(configPath);
162
+ return configParser.parse(content);
163
+ }
164
+ return { error: 'evolith.yaml not found' };
165
+ }
166
+ async function getOpenCoreArtifacts(fs) {
167
+ const corePath = findCorePath(process.cwd(), fs);
168
+ const ocbRulesPath = path.join(corePath, 'rulesets', 'governance', 'open-core-boundary.rules.json');
169
+ if (await fs.exists(ocbRulesPath)) {
170
+ return await fs.readJson(ocbRulesPath);
171
+ }
172
+ return { error: 'Open-Core Boundary rules not found' };
173
+ }
174
+ async function getAclRules(fs) {
175
+ const corePath = findCorePath(process.cwd(), fs);
176
+ const aclPath = path.join(corePath, 'rulesets', 'acl', 'anti-corruption-layer.rules.json');
177
+ if (await fs.exists(aclPath)) {
178
+ return await fs.readJson(aclPath);
179
+ }
180
+ return { error: 'ACL rules not found' };
181
+ }
182
+ function findCorePath(satellitePath, fs) {
183
+ const parts = satellitePath.split(path.sep);
184
+ while (parts.length > 0) {
185
+ parts.pop();
186
+ const candidate = path.join(parts.join(path.sep), 'rulesets');
187
+ if (fs.existsSync(candidate)) {
188
+ return parts.join(path.sep);
189
+ }
190
+ }
191
+ return path.join(satellitePath, '..', 'evolith');
192
+ }
193
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/mcp/resources/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { RulesetValidatorService } from '../validators/ruleset-validator.service';
2
+ import { McpMetricsService } from './metrics.service';
3
+ export type McpTransport = 'stdio' | 'http';
4
+ export interface McpServerOptions {
5
+ rulesetValidator?: RulesetValidatorService;
6
+ metricsService?: McpMetricsService;
7
+ apiKey?: string;
8
+ port?: number;
9
+ transport?: McpTransport;
10
+ }
11
+ export declare class EvolithMcpServer {
12
+ private readonly logger;
13
+ private rulesetValidator;
14
+ private metricsService;
15
+ private apiKey;
16
+ private port;
17
+ private serverInstance;
18
+ constructor(options?: McpServerOptions);
19
+ initialize(): Promise<void>;
20
+ connect(transport?: McpTransport): Promise<void>;
21
+ private startHttpServer;
22
+ private handleListTools;
23
+ private handleCallTool;
24
+ }
25
+ export declare function startMcpServer(options?: McpServerOptions): Promise<EvolithMcpServer>;