@evolith/smart-cli 0.0.1-beta → 0.0.3-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.
- package/ARCHITECTURE.md +667 -89
- package/dist/app.module.js +2 -2
- package/dist/app.module.js.map +1 -1
- package/dist/app.module.spec.d.ts +1 -0
- package/dist/app.module.spec.js +305 -0
- package/dist/app.module.spec.js.map +1 -0
- package/dist/application/services/index.d.ts +14 -5
- package/dist/application/services/index.js +41 -3
- package/dist/application/services/index.js.map +1 -1
- package/dist/application/services/phase-transition.use-case.spec.d.ts +1 -0
- package/dist/application/services/phase-transition.use-case.spec.js +297 -0
- package/dist/application/services/phase-transition.use-case.spec.js.map +1 -0
- package/dist/commands/adr/adr.command.spec.d.ts +1 -0
- package/dist/commands/adr/adr.command.spec.js +409 -0
- package/dist/commands/adr/adr.command.spec.js.map +1 -0
- package/dist/commands/architecture/scaffold.command.spec.d.ts +1 -0
- package/dist/commands/architecture/scaffold.command.spec.js +207 -0
- package/dist/commands/architecture/scaffold.command.spec.js.map +1 -0
- package/dist/commands/completion/completion.command.spec.d.ts +1 -0
- package/dist/commands/completion/completion.command.spec.js +240 -0
- package/dist/commands/completion/completion.command.spec.js.map +1 -0
- package/dist/commands/docs/docs.command.d.ts +5 -0
- package/dist/commands/docs/docs.command.js +159 -3
- package/dist/commands/docs/docs.command.js.map +1 -1
- package/dist/commands/docs/docs.command.spec.d.ts +1 -0
- package/dist/commands/docs/docs.command.spec.js +87 -0
- package/dist/commands/docs/docs.command.spec.js.map +1 -0
- package/dist/commands/drift/drift.command.d.ts +24 -0
- package/dist/commands/drift/drift.command.js +250 -0
- package/dist/commands/drift/drift.command.js.map +1 -0
- package/dist/commands/drift/drift.command.spec.d.ts +1 -0
- package/dist/commands/drift/drift.command.spec.js +327 -0
- package/dist/commands/drift/drift.command.spec.js.map +1 -0
- package/dist/commands/history/history.command.spec.d.ts +1 -0
- package/dist/commands/history/history.command.spec.js +392 -0
- package/dist/commands/history/history.command.spec.js.map +1 -0
- package/dist/commands/init/agents.command.spec.d.ts +1 -0
- package/dist/commands/init/agents.command.spec.js +550 -0
- package/dist/commands/init/agents.command.spec.js.map +1 -0
- package/dist/commands/init/init.command.spec.d.ts +1 -0
- package/dist/commands/init/init.command.spec.js +272 -0
- package/dist/commands/init/init.command.spec.js.map +1 -0
- package/dist/commands/init/upgrade.command.d.ts +10 -0
- package/dist/commands/init/upgrade.command.js +134 -1
- package/dist/commands/init/upgrade.command.js.map +1 -1
- package/dist/commands/init/upgrade.command.spec.d.ts +1 -0
- package/dist/commands/init/upgrade.command.spec.js +378 -0
- package/dist/commands/init/upgrade.command.spec.js.map +1 -0
- package/dist/commands/mcp/mcp-serve.command.spec.d.ts +1 -0
- package/dist/commands/mcp/mcp-serve.command.spec.js +58 -0
- package/dist/commands/mcp/mcp-serve.command.spec.js.map +1 -0
- package/dist/commands/sdlc/gate-status.command.d.ts +5 -0
- package/dist/commands/sdlc/gate-status.command.js +114 -0
- package/dist/commands/sdlc/gate-status.command.js.map +1 -0
- package/dist/commands/sdlc/generate-domain.command.spec.d.ts +1 -0
- package/dist/commands/sdlc/generate-domain.command.spec.js +47 -0
- package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -0
- package/dist/commands/sdlc/handoff.command.spec.d.ts +1 -0
- package/dist/commands/sdlc/handoff.command.spec.js +395 -0
- package/dist/commands/sdlc/handoff.command.spec.js.map +1 -0
- package/dist/commands/sdlc/sdlc.command.js +3 -1
- package/dist/commands/sdlc/sdlc.command.js.map +1 -1
- package/dist/commands/sdlc/sdlc.command.spec.d.ts +1 -0
- package/dist/commands/sdlc/sdlc.command.spec.js +45 -0
- package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -0
- package/dist/commands/standards/standards.command.spec.d.ts +1 -0
- package/dist/commands/standards/standards.command.spec.js +311 -0
- package/dist/commands/standards/standards.command.spec.js.map +1 -0
- package/dist/commands/validate/validate.command.d.ts +4 -0
- package/dist/commands/validate/validate.command.js +39 -0
- package/dist/commands/validate/validate.command.js.map +1 -1
- package/dist/commands/validate/validate.command.spec.d.ts +1 -0
- package/dist/commands/validate/validate.command.spec.js +368 -0
- package/dist/commands/validate/validate.command.spec.js.map +1 -0
- package/dist/core/abstractions/providers/logger.provider.spec.d.ts +1 -0
- package/dist/core/abstractions/providers/logger.provider.spec.js +212 -0
- package/dist/core/abstractions/providers/logger.provider.spec.js.map +1 -0
- package/dist/core/agents/agent-ruleset-builder.d.ts +30 -0
- package/dist/core/agents/agent-ruleset-builder.js +75 -0
- package/dist/core/agents/agent-ruleset-builder.js.map +1 -0
- package/dist/core/agents/agent-ruleset-builder.spec.d.ts +1 -0
- package/dist/core/agents/agent-ruleset-builder.spec.js +135 -0
- package/dist/core/agents/agent-ruleset-builder.spec.js.map +1 -0
- package/dist/core/di/container.spec.js +164 -0
- package/dist/core/di/container.spec.js.map +1 -1
- package/dist/core/mcp/metrics.service.spec.d.ts +1 -0
- package/dist/core/mcp/metrics.service.spec.js +159 -0
- package/dist/core/mcp/metrics.service.spec.js.map +1 -0
- package/dist/core/mcp/prompts/index.js +36 -0
- package/dist/core/mcp/prompts/index.js.map +1 -1
- package/dist/core/mcp/prompts/index.spec.d.ts +1 -0
- package/dist/core/mcp/prompts/index.spec.js +150 -0
- package/dist/core/mcp/prompts/index.spec.js.map +1 -0
- package/dist/core/mcp/resources/index.js +16 -0
- package/dist/core/mcp/resources/index.js.map +1 -1
- package/dist/core/mcp/resources/index.spec.d.ts +1 -0
- package/dist/core/mcp/resources/index.spec.js +212 -0
- package/dist/core/mcp/resources/index.spec.js.map +1 -0
- package/dist/core/mcp/server.d.ts +15 -9
- package/dist/core/mcp/server.js +480 -174
- package/dist/core/mcp/server.js.map +1 -1
- package/dist/core/mcp/server.spec.d.ts +1 -0
- package/dist/core/mcp/server.spec.js +563 -0
- package/dist/core/mcp/server.spec.js.map +1 -0
- package/dist/core/mcp/tools/agent.spec.d.ts +1 -0
- package/dist/core/mcp/tools/agent.spec.js +171 -0
- package/dist/core/mcp/tools/agent.spec.js.map +1 -0
- package/dist/core/mcp/tools/architecture.d.ts +2 -0
- package/dist/core/mcp/tools/architecture.js +68 -0
- package/dist/core/mcp/tools/architecture.js.map +1 -1
- package/dist/core/mcp/tools/architecture.spec.d.ts +1 -0
- package/dist/core/mcp/tools/architecture.spec.js +145 -0
- package/dist/core/mcp/tools/architecture.spec.js.map +1 -0
- package/dist/core/mcp/tools/moscow.d.ts +30 -0
- package/dist/core/mcp/tools/moscow.js +113 -0
- package/dist/core/mcp/tools/moscow.js.map +1 -0
- package/dist/core/mcp/tools/moscow.spec.d.ts +1 -0
- package/dist/core/mcp/tools/moscow.spec.js +209 -0
- package/dist/core/mcp/tools/moscow.spec.js.map +1 -0
- package/dist/core/mcp/tools/sdlc.js +2 -1
- package/dist/core/mcp/tools/sdlc.js.map +1 -1
- package/dist/core/mcp/tools/sdlc.spec.d.ts +1 -0
- package/dist/core/mcp/tools/sdlc.spec.js +170 -0
- package/dist/core/mcp/tools/sdlc.spec.js.map +1 -0
- package/dist/core/mcp/tools/validate.spec.d.ts +1 -0
- package/dist/core/mcp/tools/validate.spec.js +130 -0
- package/dist/core/mcp/tools/validate.spec.js.map +1 -0
- package/dist/core/mcp/watcher.service.spec.js +109 -8
- package/dist/core/mcp/watcher.service.spec.js.map +1 -1
- package/dist/core/observability/error-reporter.spec.d.ts +1 -0
- package/dist/core/observability/error-reporter.spec.js +291 -0
- package/dist/core/observability/error-reporter.spec.js.map +1 -0
- package/dist/core/observability/structured-logger.spec.d.ts +1 -0
- package/dist/core/observability/structured-logger.spec.js +197 -0
- package/dist/core/observability/structured-logger.spec.js.map +1 -0
- package/dist/core/observability/timing.spec.d.ts +1 -0
- package/dist/core/observability/timing.spec.js +216 -0
- package/dist/core/observability/timing.spec.js.map +1 -0
- package/dist/core/services/command-history.service.spec.d.ts +1 -0
- package/dist/core/services/command-history.service.spec.js +166 -0
- package/dist/core/services/command-history.service.spec.js.map +1 -0
- package/dist/core/upgrade/satellite-upgrade.service.d.ts +48 -0
- package/dist/core/upgrade/satellite-upgrade.service.js +358 -0
- package/dist/core/upgrade/satellite-upgrade.service.js.map +1 -0
- package/dist/core/upgrade/satellite-upgrade.service.spec.d.ts +1 -0
- package/dist/core/upgrade/satellite-upgrade.service.spec.js +163 -0
- package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -0
- package/dist/core/validators/architecture-drift.service.d.ts +68 -0
- package/dist/core/validators/architecture-drift.service.js +266 -0
- package/dist/core/validators/architecture-drift.service.js.map +1 -0
- package/dist/core/validators/architecture-drift.service.spec.d.ts +1 -0
- package/dist/core/validators/architecture-drift.service.spec.js +315 -0
- package/dist/core/validators/architecture-drift.service.spec.js.map +1 -0
- package/dist/core/validators/deep-architecture-analyzer.d.ts +58 -0
- package/dist/core/validators/deep-architecture-analyzer.js +333 -0
- package/dist/core/validators/deep-architecture-analyzer.js.map +1 -0
- package/dist/core/validators/deep-architecture-analyzer.spec.d.ts +1 -0
- package/dist/core/validators/deep-architecture-analyzer.spec.js +216 -0
- package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -0
- package/dist/core/validators/phase-gate-validator.service.d.ts +71 -0
- package/dist/core/validators/phase-gate-validator.service.js +273 -0
- package/dist/core/validators/phase-gate-validator.service.js.map +1 -0
- package/dist/core/validators/phase-gate-validator.service.spec.d.ts +1 -0
- package/dist/core/validators/phase-gate-validator.service.spec.js +326 -0
- package/dist/core/validators/phase-gate-validator.service.spec.js.map +1 -0
- package/dist/core/validators/ruleset-validator-architecture.spec.d.ts +1 -0
- package/dist/core/validators/ruleset-validator-architecture.spec.js +178 -0
- package/dist/core/validators/ruleset-validator-architecture.spec.js.map +1 -0
- package/dist/core/validators/ruleset-validator.service.d.ts +24 -0
- package/dist/core/validators/ruleset-validator.service.js +394 -0
- package/dist/core/validators/ruleset-validator.service.js.map +1 -1
- package/dist/core/validators/ruleset-validator.service.spec.js +351 -3
- package/dist/core/validators/ruleset-validator.service.spec.js.map +1 -1
- package/dist/domain/services/adr.service.spec.d.ts +1 -0
- package/dist/domain/services/adr.service.spec.js +141 -0
- package/dist/domain/services/adr.service.spec.js.map +1 -0
- package/dist/domain/services/agent-registry.service.spec.d.ts +1 -0
- package/dist/domain/services/agent-registry.service.spec.js +162 -0
- package/dist/domain/services/agent-registry.service.spec.js.map +1 -0
- package/dist/domain/services/index.d.ts +1 -0
- package/dist/domain/services/index.js +3 -1
- package/dist/domain/services/index.js.map +1 -1
- package/dist/domain/services/moscow-prioritization.service.d.ts +44 -0
- package/dist/domain/services/moscow-prioritization.service.js +213 -0
- package/dist/domain/services/moscow-prioritization.service.js.map +1 -0
- package/dist/domain/services/moscow-prioritization.service.spec.d.ts +1 -0
- package/dist/domain/services/moscow-prioritization.service.spec.js +285 -0
- package/dist/domain/services/moscow-prioritization.service.spec.js.map +1 -0
- package/dist/domain/services/standards.service.spec.d.ts +1 -0
- package/dist/domain/services/standards.service.spec.js +600 -0
- package/dist/domain/services/standards.service.spec.js.map +1 -0
- package/dist/domain/services/tool-usage-telemetry.service.spec.d.ts +1 -0
- package/dist/domain/services/tool-usage-telemetry.service.spec.js +180 -0
- package/dist/domain/services/tool-usage-telemetry.service.spec.js.map +1 -0
- package/dist/infrastructure/formatters/output-formatter.service.spec.d.ts +1 -0
- package/dist/infrastructure/formatters/output-formatter.service.spec.js +164 -0
- package/dist/infrastructure/formatters/output-formatter.service.spec.js.map +1 -0
- package/dist/main.js +0 -0
- package/package.json +2 -2
package/ARCHITECTURE.md
CHANGED
|
@@ -1,121 +1,699 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
# Smart CLI Architecture
|
|
2
|
+
|
|
3
|
+
> **Audience:** Developers, Architects, DevOps Engineers
|
|
4
|
+
> **Purpose:** Document the system architecture, components, data models, and flows for the Evolith Smart CLI
|
|
5
|
+
> **Bilingual:** [Español](./ARCHITECTURE.es.md)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
1. [System Overview](#1-system-overview)
|
|
12
|
+
2. [Component Architecture](#2-component-architecture)
|
|
13
|
+
3. [Command Flow](#3-command-flow)
|
|
14
|
+
4. [Data Models](#4-data-models)
|
|
15
|
+
5. [Phase State Machine](#5-phase-state-machine)
|
|
16
|
+
6. [Sequence Diagrams](#6-sequence-diagrams)
|
|
17
|
+
7. [Infrastructure Deployment](#7-infrastructure-deployment)
|
|
18
|
+
8. [Technical Requirements](#8-technical-requirements)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. System Overview
|
|
23
|
+
|
|
24
|
+
### 1-1 High-Level Architecture
|
|
25
|
+
|
|
26
|
+
```mermaid
|
|
27
|
+
graph TB
|
|
28
|
+
subgraph CLI["Smart CLI Interface"]
|
|
29
|
+
CLI_User(["👤 User"])
|
|
30
|
+
CLI_Shell["Shell Completion"]
|
|
31
|
+
CLI_History["Command History"]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
subgraph Commands["Command Layer"]
|
|
35
|
+
CMD_Init["init"]
|
|
36
|
+
CMD_Validate["validate"]
|
|
37
|
+
CMD_ADR["adr"]
|
|
38
|
+
CMD_Agents["agents"]
|
|
39
|
+
CMD_SDLC["sdlc"]
|
|
40
|
+
CMD_MCP["mcp serve"]
|
|
41
|
+
CMD_Standards["standards"]
|
|
42
|
+
CMD_Docs["docs"]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
subgraph Application["Application Layer"]
|
|
46
|
+
UC_Validate["ValidateSatelliteUseCase"]
|
|
47
|
+
UC_Handoff["HandoffToolUseCase"]
|
|
48
|
+
UC_AgentMgmt["AgentManagementUseCase"]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
subgraph Domain["Domain Layer"]
|
|
52
|
+
DOM_ADR["ADRService"]
|
|
53
|
+
DOM_Standards["StandardsService"]
|
|
54
|
+
DOM_ToolSel["ToolSelectionService"]
|
|
55
|
+
DOM_SDLC["SDLCService"]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
subgraph Infrastructure["Infrastructure Layer"]
|
|
59
|
+
INF_Catalog["CatalogLoader"]
|
|
60
|
+
INF_Config["ConfigService"]
|
|
61
|
+
INF_FileMgr["FileManagerService"]
|
|
62
|
+
INF_CLI["CommandExecutor"]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
subgraph External["External Systems"]
|
|
66
|
+
EXT_NPM["NPM Registry"]
|
|
67
|
+
EXT_GitHub["GitHub API"]
|
|
68
|
+
EXT_MCP["MCP Clients\n(Cursor, Claude)"]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
CLI_User --> Commands
|
|
72
|
+
Commands --> Application
|
|
73
|
+
Application --> Domain
|
|
74
|
+
Domain --> Infrastructure
|
|
75
|
+
Infrastructure --> External
|
|
76
|
+
|
|
77
|
+
style CLI fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
78
|
+
style Commands fill:#065f46,stroke:#10b981,color:#fff
|
|
79
|
+
style Application fill:#4a1d96,stroke:#a855f7,color:#fff
|
|
80
|
+
style Domain fill:#9f1239,stroke:#f43f5e,color:#fff
|
|
81
|
+
style Infrastructure fill:#c2410c,stroke:#f97316,color:#fff
|
|
82
|
+
style External fill:#1e3a5f,stroke:#64748b,color:#fff
|
|
83
|
+
```
|
|
6
84
|
|
|
7
|
-
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 2. Component Architecture
|
|
88
|
+
|
|
89
|
+
### 2-1 Clean Architecture Layers
|
|
90
|
+
|
|
91
|
+
```mermaid
|
|
92
|
+
graph TB
|
|
93
|
+
subgraph Presentation["Presentation Layer<br/>(src/commands/)"]
|
|
94
|
+
P1["init.command.ts"]
|
|
95
|
+
P2["validate.command.ts"]
|
|
96
|
+
P3["adr.command.ts"]
|
|
97
|
+
P4["sdlc.command.ts"]
|
|
98
|
+
P5["mcp-serve.command.ts"]
|
|
99
|
+
P6["agents.command.ts"]
|
|
100
|
+
P7["standards.command.ts"]
|
|
101
|
+
P8["history.command.ts"]
|
|
102
|
+
P9["completion.command.ts"]
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
subgraph UseCases["Application Layer<br/>(src/application/)"]
|
|
106
|
+
U1["ValidateSatelliteUseCase"]
|
|
107
|
+
U2["HandoffToolUseCase"]
|
|
108
|
+
U3["AgentManagementUseCase"]
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
subgraph Services["Domain Layer<br/>(src/domain/services/)"]
|
|
112
|
+
S1["ADRService"]
|
|
113
|
+
S2["StandardsService"]
|
|
114
|
+
S3["ToolSelectionService"]
|
|
115
|
+
S4["PhaseService"]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
subgraph Entities["Domain Layer<br/>(src/domain/entities/)"]
|
|
119
|
+
E1["Phase"]
|
|
120
|
+
E2["Project"]
|
|
121
|
+
E3["Tool"]
|
|
122
|
+
E4["TransitionResult"]
|
|
123
|
+
E5["GateResult"]
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
subgraph Infra["Infrastructure Layer<br/>(src/infrastructure/)"]
|
|
127
|
+
I1["CatalogLoader"]
|
|
128
|
+
I2["CommandExecutor"]
|
|
129
|
+
I3["OutputFormatter"]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
subgraph Core["Core Layer<br/>(src/core/)"]
|
|
133
|
+
C1["ConfigService"]
|
|
134
|
+
C2["MCPServerService"]
|
|
135
|
+
C3["WatcherService"]
|
|
136
|
+
C4["StructuredLogger"]
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
Presentation --> UseCases
|
|
140
|
+
UseCases --> Services
|
|
141
|
+
Services --> Entities
|
|
142
|
+
Services --> Infra
|
|
143
|
+
Infra --> Core
|
|
144
|
+
|
|
145
|
+
classDef presentation fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
146
|
+
classDef useCases fill:#065f46,stroke:#10b981,color:#fff
|
|
147
|
+
classDef domain fill:#4a1d96,stroke:#a855f7,color:#fff
|
|
148
|
+
classDef infra fill:#9f1239,stroke:#f43f5e,color:#fff
|
|
149
|
+
classDef core fill:#c2410c,stroke:#f97316,color:#fff
|
|
150
|
+
|
|
151
|
+
class P1,P2,P3,P4,P5,P6,P7,P8,P9 presentation
|
|
152
|
+
class U1,U2,U3 useCases
|
|
153
|
+
class S1,S2,S3,S4 domain
|
|
154
|
+
class E1,E2,E3,E4,E5 domain
|
|
155
|
+
class I1,I2,I3 infra
|
|
156
|
+
class C1,C2,C3,C4 core
|
|
157
|
+
```
|
|
8
158
|
|
|
159
|
+
### 2-2 MCP Server Architecture
|
|
160
|
+
|
|
161
|
+
```mermaid
|
|
162
|
+
graph TB
|
|
163
|
+
subgraph MCP["MCP Server"]
|
|
164
|
+
MCP_API["MCP SDK\nServer"]
|
|
165
|
+
MCP_Res["Resources\n/evolith/core/info\n/evolith/adrs\n/evolith/standards"]
|
|
166
|
+
MCP_Tools["Tools\nvalidate\nadr-create\nagent-install\nsdlc-handoff"]
|
|
167
|
+
MCP_Prompts["Prompts\nvalidate-repository\nagent-onboarding"]
|
|
168
|
+
MCP_Metrics["Metrics Service"]
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
subgraph Transport["Transport Layer"]
|
|
172
|
+
T_STDIO["stdio (default)"]
|
|
173
|
+
T_HTTP["HTTP (optional)"]
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
subgraph Clients["MCP Clients"]
|
|
177
|
+
C_Cursor["Cursor AI"]
|
|
178
|
+
C_Claude["Claude Desktop"]
|
|
179
|
+
C_Agents["AI Agents"]
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
Clients --> Transport
|
|
183
|
+
Transport --> MCP
|
|
184
|
+
MCP_API --> MCP_Res
|
|
185
|
+
MCP_API --> MCP_Tools
|
|
186
|
+
MCP_API --> MCP_Prompts
|
|
187
|
+
MCP_API --> MCP_Metrics
|
|
188
|
+
|
|
189
|
+
classDef mcp fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
190
|
+
classDef transport fill:#065f46,stroke:#10b981,color:#fff
|
|
191
|
+
classDef clients fill:#4a1d96,stroke:#a855f7,color:#fff
|
|
192
|
+
|
|
193
|
+
class MCP_API,MCP_Res,MCP_Tools,MCP_Prompts,MCP_Metrics mcp
|
|
194
|
+
class T_STDIO,T_HTTP transport
|
|
195
|
+
class C_Cursor,C_Claude,C_Agents clients
|
|
9
196
|
```
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 3. Command Flow
|
|
201
|
+
|
|
202
|
+
### 3-1 Command Resolution Flow
|
|
203
|
+
|
|
204
|
+
```mermaid
|
|
205
|
+
sequenceDiagram
|
|
206
|
+
participant User
|
|
207
|
+
participant CLI as Smart CLI
|
|
208
|
+
participant Parser as Command Parser
|
|
209
|
+
participant Registry as Command Registry
|
|
210
|
+
participant UseCase as Use Case
|
|
211
|
+
participant Domain as Domain Services
|
|
212
|
+
participant Infra as Infrastructure
|
|
213
|
+
|
|
214
|
+
User->>CLI: smart-cli validate --satellite /repo
|
|
215
|
+
CLI->>Parser: parse(args)
|
|
216
|
+
Parser->>Registry: resolve('validate')
|
|
217
|
+
Registry-->>Parser: ValidateCommand
|
|
218
|
+
Parser->>UseCase: execute(options)
|
|
219
|
+
UseCase->>Domain: validateSatellite(config)
|
|
220
|
+
Domain->>Infra: loadCatalog()
|
|
221
|
+
Infra-->>Domain: rulesetCatalog
|
|
222
|
+
Domain->>Domain: checkGates()
|
|
223
|
+
Domain-->>UseCase: validationResult
|
|
224
|
+
UseCase-->>CLI: formattedOutput
|
|
225
|
+
CLI-->>User: table/json/markdown
|
|
226
|
+
|
|
227
|
+
Note over User,Infra: Full validation flow with gate checks
|
|
16
228
|
```
|
|
17
229
|
|
|
18
|
-
###
|
|
230
|
+
### 3-2 Init Command Flow
|
|
231
|
+
|
|
232
|
+
```mermaid
|
|
233
|
+
flowchart TB
|
|
234
|
+
A["smart-cli init"] --> B{"Interactive\nor Batch?"}
|
|
235
|
+
B -->|"Interactive"| C["Prompt for:\n- Project name\n- Runtime (NodeJS/.NET/Android)\n- Architecture pattern\n- Monorepo option\n- Agents to install"]
|
|
236
|
+
B -->|"Batch"| D["Read from\nconfig file"]
|
|
237
|
+
C --> E["Create evolith.yaml"]
|
|
238
|
+
D --> E
|
|
239
|
+
E --> F["Create directory structure"]
|
|
240
|
+
F --> G["Install agents"]
|
|
241
|
+
G --> H{"Git init?"}
|
|
242
|
+
H -->|"Yes"| I["Setup git + husky"]
|
|
243
|
+
H -->|"No"| J["Setup complete"]
|
|
244
|
+
I --> J
|
|
245
|
+
J --> K["Generate setup-report.md"]
|
|
246
|
+
|
|
247
|
+
style A fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
248
|
+
style K fill:#065f46,stroke:#10b981,color:#fff
|
|
249
|
+
```
|
|
19
250
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 4. Data Models
|
|
254
|
+
|
|
255
|
+
### 4-1 Entity Relationship Diagram
|
|
256
|
+
|
|
257
|
+
```mermaid
|
|
258
|
+
erDiagram
|
|
259
|
+
PROJECT ||--o| PHASE : currentPhase
|
|
260
|
+
PROJECT {
|
|
261
|
+
string id PK
|
|
262
|
+
string name
|
|
263
|
+
string phase
|
|
264
|
+
date createdAt
|
|
265
|
+
ProjectConfigData config
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
PHASE ||--o{ GATE_CHECK : contains
|
|
269
|
+
PHASE {
|
|
270
|
+
string value PK
|
|
271
|
+
string label
|
|
272
|
+
string description
|
|
273
|
+
int order
|
|
274
|
+
string[] artifacts
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
GATE_CHECK ||--o| GATE_RESULT : produces
|
|
278
|
+
GATE_CHECK {
|
|
279
|
+
string id
|
|
280
|
+
string description
|
|
281
|
+
boolean required
|
|
282
|
+
string phaseFK
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
GATE_RESULT {
|
|
286
|
+
string id
|
|
287
|
+
boolean passed
|
|
288
|
+
string description
|
|
289
|
+
boolean required
|
|
290
|
+
string error
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
PROJECT ||--o{ TOOL : uses
|
|
294
|
+
TOOL {
|
|
295
|
+
string id PK
|
|
296
|
+
string name
|
|
297
|
+
string category
|
|
298
|
+
string phase
|
|
299
|
+
boolean isRuntimeAware
|
|
300
|
+
string[] commands
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
TRANSITION_RESULT ||--|| PROJECT : transitions
|
|
304
|
+
TRANSITION_RESULT {
|
|
305
|
+
boolean success
|
|
306
|
+
string fromPhase
|
|
307
|
+
string toPhase
|
|
308
|
+
GateResult[] gateResults
|
|
309
|
+
string[] executedTools
|
|
310
|
+
string[] warnings
|
|
311
|
+
string[] errors
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
ADR ||--o| PROJECT : belongsTo
|
|
315
|
+
ADR {
|
|
316
|
+
string id PK
|
|
317
|
+
string title
|
|
318
|
+
string status
|
|
319
|
+
string author
|
|
320
|
+
date createdAt
|
|
321
|
+
date updatedAt
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
AGENT ||--o{ PROJECT : installedOn
|
|
325
|
+
AGENT {
|
|
326
|
+
string id PK
|
|
327
|
+
string name
|
|
328
|
+
string version
|
|
329
|
+
string template
|
|
330
|
+
date installedAt
|
|
331
|
+
}
|
|
332
|
+
```
|
|
25
333
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
334
|
+
### 4-2 Project Configuration Schema
|
|
335
|
+
|
|
336
|
+
```mermaid
|
|
337
|
+
classDiagram
|
|
338
|
+
class ProjectConfigData {
|
|
339
|
+
+string name
|
|
340
|
+
+string runtimeId
|
|
341
|
+
+string monorepoId
|
|
342
|
+
+string architectureId
|
|
343
|
+
+string database
|
|
344
|
+
+string apiProtocol
|
|
345
|
+
+string ciCd
|
|
346
|
+
+string observability
|
|
347
|
+
+string[] tools
|
|
348
|
+
+string[] agents
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
class Runtime {
|
|
352
|
+
+string id
|
|
353
|
+
+string name
|
|
354
|
+
+string version
|
|
355
|
+
+string framework
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
class MonorepoOption {
|
|
359
|
+
+string id
|
|
360
|
+
+string name
|
|
361
|
+
+string description
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
class ArchitecturePattern {
|
|
365
|
+
+string id
|
|
366
|
+
+string name
|
|
367
|
+
+string description
|
|
368
|
+
+string[] layers
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
ProjectConfigData --> Runtime
|
|
372
|
+
ProjectConfigData --> MonorepoOption
|
|
373
|
+
ProjectConfigData --> ArchitecturePattern
|
|
374
|
+
```
|
|
32
375
|
|
|
33
|
-
###
|
|
376
|
+
### 4-3 Tool Catalog Schema
|
|
377
|
+
|
|
378
|
+
```mermaid
|
|
379
|
+
erDiagram
|
|
380
|
+
TOOL_CATALOG ||--|{ TOOL : contains
|
|
381
|
+
TOOL_CATALOG {
|
|
382
|
+
string version
|
|
383
|
+
string lastUpdated
|
|
384
|
+
Tool[] tools
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
TOOL {
|
|
388
|
+
string id
|
|
389
|
+
string name
|
|
390
|
+
string category
|
|
391
|
+
string phase
|
|
392
|
+
boolean isRuntimeAware
|
|
393
|
+
string[] commands
|
|
394
|
+
string platformCheck
|
|
395
|
+
string[] dependencies
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
TOOL ||--o{ RUNTIME_COMPATIBILITY : supports
|
|
399
|
+
RUNTIME_COMPATIBILITY {
|
|
400
|
+
string toolId
|
|
401
|
+
string runtimeId
|
|
402
|
+
string minVersion
|
|
403
|
+
}
|
|
404
|
+
```
|
|
34
405
|
|
|
35
|
-
|
|
36
|
-
- `ValidateSatelliteUseCase` - Validates satellite repository compliance
|
|
37
|
-
- `HandoffToolUseCase` - Manages tool handoff between phases
|
|
406
|
+
---
|
|
38
407
|
|
|
39
|
-
|
|
408
|
+
## 5. Phase State Machine
|
|
40
409
|
|
|
41
|
-
|
|
42
|
-
- `ADRService` - ADR CRUD operations and matrix generation
|
|
43
|
-
- `StandardsService` - Standards registration and validation
|
|
44
|
-
- `PhaseService` - Phase and tool selection logic
|
|
45
|
-
- `ToolSelectionService` - Runtime-aware tool selection
|
|
46
|
-
- `PlatformDetectionService` - Runtime environment detection
|
|
410
|
+
### 5-1 SDLC Phase Transitions
|
|
47
411
|
|
|
48
|
-
|
|
412
|
+
```mermaid
|
|
413
|
+
stateDiagram-v2
|
|
414
|
+
[*] --> Phase0: init
|
|
49
415
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
416
|
+
Phase0 --> Phase1: smart-cli sdlc handoff --to phase-1
|
|
417
|
+
Phase1 --> Phase2: smart-cli sdlc handoff --to phase-2
|
|
418
|
+
Phase2 --> Phase3: smart-cli sdlc handoff --to phase-3
|
|
419
|
+
Phase3 --> Phase4: smart-cli sdlc handoff --to phase-4
|
|
420
|
+
Phase4 --> Phase5: smart-cli sdlc handoff --to phase-5
|
|
421
|
+
Phase5 --> [*]: smart-cli sdlc handoff --to production
|
|
54
422
|
|
|
55
|
-
|
|
423
|
+
note right of Phase0
|
|
424
|
+
Discovery & Business Case
|
|
425
|
+
Tools: context-mapper, ballpark
|
|
426
|
+
end note
|
|
56
427
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- `di/` - DIContainer for service registration and resolution
|
|
62
|
-
- `errors/` - EvolithError base class and error codes
|
|
63
|
-
- `observability/` - Structured logging, timing, error reporting
|
|
428
|
+
note right of Phase1
|
|
429
|
+
Architecture & Design
|
|
430
|
+
Tools: ddd-model, architecture-ask
|
|
431
|
+
end note
|
|
64
432
|
|
|
65
|
-
|
|
433
|
+
note right of Phase2
|
|
434
|
+
Implementation Scaffolding
|
|
435
|
+
Tools: scaffold, generate-domain
|
|
436
|
+
end note
|
|
66
437
|
|
|
67
|
-
|
|
438
|
+
note right of Phase3
|
|
439
|
+
Core Development
|
|
440
|
+
Tools: validate, test-runner
|
|
441
|
+
end note
|
|
68
442
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
443
|
+
note right of Phase4
|
|
444
|
+
Quality Gates
|
|
445
|
+
Tools: security-scan, coverage-check
|
|
446
|
+
end note
|
|
73
447
|
|
|
74
|
-
|
|
448
|
+
note right of Phase5
|
|
449
|
+
Observability Setup
|
|
450
|
+
Tools: otel-config, tracing-setup
|
|
451
|
+
end note
|
|
75
452
|
```
|
|
76
453
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
454
|
+
### 5-2 Gate Check Flow
|
|
455
|
+
|
|
456
|
+
```mermaid
|
|
457
|
+
flowchart TB
|
|
458
|
+
A["Phase Transition Request"] --> B["Load Gate Checks"]
|
|
459
|
+
B --> C{"All Required\nGates Pass?"}
|
|
460
|
+
C -->|"Yes"| D["Execute Tools"]
|
|
461
|
+
C -->|"No"| E["Show Failures"]
|
|
462
|
+
D --> F["Update Phase"]
|
|
463
|
+
E --> G["Block Transition"]
|
|
464
|
+
F --> H["Generate Handoff Report"]
|
|
465
|
+
G --> I["Exit with Error"]
|
|
466
|
+
|
|
467
|
+
style A fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
468
|
+
style F fill:#065f46,stroke:#10b981,color:#fff
|
|
469
|
+
style G fill:#9f1239,stroke:#f43f5e,color:#fff
|
|
470
|
+
```
|
|
80
471
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## 6. Sequence Diagrams
|
|
475
|
+
|
|
476
|
+
### 6-1 MCP Tool Invocation: validate
|
|
477
|
+
|
|
478
|
+
```mermaid
|
|
479
|
+
sequenceDiagram
|
|
480
|
+
participant Client as Cursor/Claude
|
|
481
|
+
participant MCP as MCP Server
|
|
482
|
+
participant Tool as ValidateTool
|
|
483
|
+
participant Domain as ValidationService
|
|
484
|
+
participant Infra as FileManager
|
|
485
|
+
|
|
486
|
+
Client->>MCP: callTool('evolith-validate', {path, format})
|
|
487
|
+
MCP->>Tool: execute({path, format})
|
|
488
|
+
Tool->>Domain: validateSatellite(path)
|
|
489
|
+
Domain->>Infra: readFile(evolith.yaml)
|
|
490
|
+
Infra-->>Domain: configContent
|
|
491
|
+
Domain->>Domain: checkCoreRef()
|
|
492
|
+
Domain->>Domain: validateRulesets()
|
|
493
|
+
Domain-->>Tool: ValidationResult
|
|
494
|
+
Tool-->>MCP: {success, rulesChecked, gatesPassed}
|
|
495
|
+
MCP-->>Client: formatted result
|
|
496
|
+
```
|
|
84
497
|
|
|
85
|
-
|
|
498
|
+
### 6-2 Agent Installation Flow
|
|
499
|
+
|
|
500
|
+
```mermaid
|
|
501
|
+
sequenceDiagram
|
|
502
|
+
participant User
|
|
503
|
+
participant CLI as Smart CLI
|
|
504
|
+
participant UseCase as AgentManagementUseCase
|
|
505
|
+
participant Domain as AgentRegistryService
|
|
506
|
+
participant Infra as FileManager
|
|
507
|
+
|
|
508
|
+
User->>CLI: smart-cli agents install --name @architect
|
|
509
|
+
CLI->>UseCase: execute({name: '@architect'})
|
|
510
|
+
UseCase->>Domain: resolveAgent('@architect')
|
|
511
|
+
Domain-->>UseCase: agentTemplate
|
|
512
|
+
UseCase->>Infra: createAgentStructure(agentTemplate)
|
|
513
|
+
Infra->>Infra: createDirectories()
|
|
514
|
+
Infra->>Infra: writeRuleset()
|
|
515
|
+
Infra->>Infra: updateevolith.yaml()
|
|
516
|
+
Infra-->>UseCase: installationResult
|
|
517
|
+
UseCase-->>CLI: success message
|
|
518
|
+
CLI-->>User: @architect installed successfully
|
|
519
|
+
```
|
|
86
520
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## 7. Infrastructure Deployment
|
|
524
|
+
|
|
525
|
+
### 7-1 Deployment Architecture
|
|
526
|
+
|
|
527
|
+
```mermaid
|
|
528
|
+
graph TB
|
|
529
|
+
subgraph Development["Development Environment"]
|
|
530
|
+
DEV_User["Developer"]
|
|
531
|
+
DEV_CLI["smart-cli local"]
|
|
532
|
+
end
|
|
533
|
+
|
|
534
|
+
subgraph Installation["Installation Methods"]
|
|
535
|
+
NPM["npm install -g\n@evolith/smart-cli"]
|
|
536
|
+
NPX["npx @evolith/smart-cli"]
|
|
537
|
+
Binary["Download from\nGitHub Releases"]
|
|
538
|
+
Docker["Docker Image\nevolith/smart-cli"]
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
subgraph Runtime["Runtime Context"]
|
|
542
|
+
RT_Config["~/.evolith/config.yaml"]
|
|
543
|
+
RT_Cache["~/.cache/evolith-core"]
|
|
544
|
+
RT_History["Command History\n~/.evolith/history"]
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
subgraph Satellite["Satellite Repository"]
|
|
548
|
+
SAT_Config["evolith.yaml"]
|
|
549
|
+
SAT_Rulesets[".evolith/rulesets"]
|
|
550
|
+
SAT_Hooks[".husky/pre-commit"]
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
DEV_User --> Installation
|
|
554
|
+
NPM --> RT_Config
|
|
555
|
+
NPX --> RT_Config
|
|
556
|
+
Binary --> RT_Config
|
|
557
|
+
Docker --> RT_Config
|
|
558
|
+
|
|
559
|
+
DEV_CLI --> SAT_Config
|
|
560
|
+
RT_Config --> SAT_Config
|
|
561
|
+
RT_Cache --> SAT_Rulesets
|
|
562
|
+
RT_History --> SAT_Hooks
|
|
563
|
+
|
|
564
|
+
classDef dev fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
565
|
+
classDef install fill:#065f46,stroke:#10b981,color:#fff
|
|
566
|
+
classDef runtime fill:#4a1d96,stroke:#a855f7,color:#fff
|
|
567
|
+
classDef sat fill:#9f1239,stroke:#f43f5e,color:#fff
|
|
568
|
+
|
|
569
|
+
class DEV_User,DEV_CLI dev
|
|
570
|
+
class NPM,NPX,Binary,Docker install
|
|
571
|
+
class RT_Config,RT_Cache,RT_History runtime
|
|
572
|
+
class SAT_Config,SAT_Rulesets,SAT_Hooks sat
|
|
573
|
+
```
|
|
92
574
|
|
|
93
|
-
|
|
575
|
+
### 7-2 File System Layout
|
|
576
|
+
|
|
577
|
+
```mermaid
|
|
578
|
+
graph TB
|
|
579
|
+
subgraph Root["Satellite Repository Root"]
|
|
580
|
+
ROOT["/satellite-repo/"]
|
|
581
|
+
ROOT_YAML["evolith.yaml"]
|
|
582
|
+
ROOT_GIT[".git/"]
|
|
583
|
+
ROOT_HUSKY[".husky/"]
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
subgraph EvolithDir[".evolith/ Directory"]
|
|
587
|
+
E_RULESETS[".evolith/rulesets/"]
|
|
588
|
+
E_AGENTS[".evolith/agents/"]
|
|
589
|
+
E_CACHE[".evolith/cache/"]
|
|
590
|
+
E_STATE[".evolith/state.json"]
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
subgraph Templates["CLI Templates"]
|
|
594
|
+
TMPL_Evolith["evolith.yaml.example"]
|
|
595
|
+
TMPL_Agents["agent-templates/"]
|
|
596
|
+
end
|
|
597
|
+
|
|
598
|
+
ROOT_YAML --> E_RULESETS
|
|
599
|
+
E_RULESETS --> E_AGENTS
|
|
600
|
+
ROOT_HUSKY --> E_STATE
|
|
601
|
+
|
|
602
|
+
style Root fill:#1e3a5f,stroke:#3b82f6,color:#fff
|
|
603
|
+
style EvolithDir fill:#065f46,stroke:#10b981,color:#fff
|
|
604
|
+
style Templates fill:#4a1d96,stroke:#a855f7,color:#fff
|
|
605
|
+
```
|
|
94
606
|
|
|
95
|
-
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
## 8. Technical Requirements
|
|
610
|
+
|
|
611
|
+
### 8-1 Runtime Requirements
|
|
612
|
+
|
|
613
|
+
| Requirement | Version | Notes |
|
|
614
|
+
|-------------|---------|-------|
|
|
615
|
+
| Node.js | >= 18.0.0 | LTS recommended |
|
|
616
|
+
| npm | >= 9.0.0 | For global install |
|
|
617
|
+
| Git | >= 2.30 | For git operations |
|
|
618
|
+
| Memory | 512MB min | For MCP server |
|
|
619
|
+
| Disk | 200MB min | For CLI + cache |
|
|
620
|
+
|
|
621
|
+
### 8-2 Dependencies
|
|
622
|
+
|
|
623
|
+
| Package | Version | Purpose |
|
|
624
|
+
|---------|---------|---------|
|
|
625
|
+
| @nestjs/common | ^11.1.24 | DI & modularity |
|
|
626
|
+
| @nestjs/core | ^11.1.24 | NestJS runtime |
|
|
627
|
+
| nest-commander | ^3.20.1 | CLI framework |
|
|
628
|
+
| @clack/prompts | ^1.5.1 | Interactive UI |
|
|
629
|
+
| @modelcontextprotocol/sdk | ^1.29.0 | MCP protocol |
|
|
630
|
+
| chalk | ^4.1.2 | Colored output |
|
|
631
|
+
| yaml | ^2.9.0 | Config parsing |
|
|
632
|
+
| chokidar | ^5.0.0 | File watching |
|
|
633
|
+
| fs-extra | ^11.3.5 | File operations |
|
|
634
|
+
| ora | ^9.4.0 | Spinners |
|
|
635
|
+
|
|
636
|
+
### 8-3 Environment Variables
|
|
637
|
+
|
|
638
|
+
| Variable | Default | Purpose |
|
|
639
|
+
|----------|---------|---------|
|
|
640
|
+
| `EVOLITH_CONFIG_PATH` | `~/.evolith` | Config directory |
|
|
641
|
+
| `EVOLITH_LOG_LEVEL` | `info` | Logging level |
|
|
642
|
+
| `EVOLITH_CORE_PATH` | `../evolith` | Core reference |
|
|
643
|
+
| `EVOLITH_PROFILE` | `default` | Config profile |
|
|
644
|
+
| `EVOLITH_NO_CACHE` | `false` | Skip cache |
|
|
645
|
+
| `EVOLITH_FORCE_COLOR` | `auto` | Force colors |
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
649
|
+
## Appendix: Configuration Schema
|
|
650
|
+
|
|
651
|
+
```yaml
|
|
652
|
+
# evolith.yaml - Satellite Configuration
|
|
653
|
+
apiVersion: evolith.dev/v1
|
|
654
|
+
kind: Satellite
|
|
655
|
+
|
|
656
|
+
coreRef:
|
|
657
|
+
version: "1.0.0"
|
|
658
|
+
path: "../evolith"
|
|
659
|
+
|
|
660
|
+
governance:
|
|
661
|
+
version: "1.0"
|
|
662
|
+
adrRegistry:
|
|
663
|
+
- id: "ADR-0001"
|
|
664
|
+
status: "accepted"
|
|
665
|
+
|
|
666
|
+
product:
|
|
667
|
+
name: "my-project"
|
|
668
|
+
type: "library"
|
|
669
|
+
runtime: "typescript"
|
|
670
|
+
|
|
671
|
+
sdlc:
|
|
672
|
+
currentPhase: "phase-1"
|
|
673
|
+
phaseHistory:
|
|
674
|
+
- phase: "phase-0"
|
|
675
|
+
enteredAt: "2026-01-15T10:00:00Z"
|
|
676
|
+
exitedAt: "2026-01-20T14:30:00Z"
|
|
677
|
+
|
|
678
|
+
agents:
|
|
679
|
+
installed:
|
|
680
|
+
- name: "@architect"
|
|
681
|
+
version: "1.0.0"
|
|
682
|
+
installedAt: "2026-01-15T10:05:00Z"
|
|
683
|
+
```
|
|
96
684
|
|
|
97
|
-
|
|
98
|
-
2. Show intro with `p.intro()`
|
|
99
|
-
3. Execute business logic via use cases
|
|
100
|
-
4. Format and display results
|
|
101
|
-
5. Show outro with status color (green/yellow/red)
|
|
685
|
+
---
|
|
102
686
|
|
|
103
|
-
##
|
|
687
|
+
## Document Version
|
|
104
688
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
npm run lint # ESLint validation
|
|
109
|
-
npm run typecheck # TypeScript type checking
|
|
110
|
-
```
|
|
689
|
+
| Version | Date | Author | Changes |
|
|
690
|
+
|---------|------|--------|---------|
|
|
691
|
+
| 1.0.0 | 2026-06-06 | Evolith Team | Initial architecture documentation |
|
|
111
692
|
|
|
112
|
-
|
|
693
|
+
---
|
|
113
694
|
|
|
114
|
-
|
|
695
|
+
## See Also
|
|
115
696
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
4. Register any new domain services
|
|
120
|
-
5. Add tests in `<feature>.command.spec.ts`
|
|
121
|
-
6. Update catalogs if adding new tools/runtimes
|
|
697
|
+
- [MCP Integration Guide](./docs/MCP-INTEGRATION.md)
|
|
698
|
+
- [Command Reference](./docs/planning/cli-command-catalog.md)
|
|
699
|
+
- [ADR-0069: MCP Server Protocol Implementation](../../reference/architecture/adrs/core/0069-mcp-server-protocol-implementation.md)
|