@evolith/smart-cli 1.1.3 → 1.1.5
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/README.es.md +989 -200
- package/README.md +98 -20
- package/dist/.tsbuildinfo +1 -0
- package/dist/CoreApiClient.d.ts +5 -0
- package/dist/CoreApiClient.js +25 -0
- package/dist/CoreApiClient.js.map +1 -0
- package/dist/app.module.js +12 -4
- package/dist/app.module.js.map +1 -1
- package/dist/commands/agents/agents.command.d.ts +19 -6
- package/dist/commands/agents/agents.command.js +333 -21
- package/dist/commands/agents/agents.command.js.map +1 -1
- package/dist/commands/architecture/scaffold.command.js +15 -8
- package/dist/commands/architecture/scaffold.command.js.map +1 -1
- package/dist/commands/chat/chat.command.d.ts +7 -0
- package/dist/commands/chat/chat.command.js +64 -0
- package/dist/commands/chat/chat.command.js.map +1 -0
- package/dist/commands/drift/drift.command.js +12 -3
- package/dist/commands/drift/drift.command.js.map +1 -1
- package/dist/commands/evaluate/evaluate.command.d.ts +28 -0
- package/dist/commands/evaluate/evaluate.command.js +197 -0
- package/dist/commands/evaluate/evaluate.command.js.map +1 -0
- package/dist/commands/mcp/mcp.command.d.ts +17 -0
- package/dist/commands/mcp/mcp.command.js +109 -0
- package/dist/commands/mcp/mcp.command.js.map +1 -0
- package/dist/commands/plan/index.d.ts +2 -0
- package/dist/commands/plan/index.js +133 -0
- package/dist/commands/plan/index.js.map +1 -0
- package/dist/commands/satellite/index.d.ts +2 -0
- package/dist/commands/satellite/index.js +8 -0
- package/dist/commands/satellite/index.js.map +1 -0
- package/dist/commands/satellite/satellite-adopt.command.d.ts +21 -0
- package/dist/commands/satellite/satellite-adopt.command.js +193 -0
- package/dist/commands/satellite/satellite-adopt.command.js.map +1 -0
- package/dist/commands/satellite/satellite-create.command.d.ts +26 -0
- package/dist/commands/satellite/satellite-create.command.js +192 -0
- package/dist/commands/satellite/satellite-create.command.js.map +1 -0
- package/dist/commands/upgrade/upgrade.command.d.ts +12 -4
- package/dist/commands/upgrade/upgrade.command.js +139 -19
- package/dist/commands/upgrade/upgrade.command.js.map +1 -1
- package/dist/commands/validate/validate.command.js +42 -14
- package/dist/commands/validate/validate.command.js.map +1 -1
- package/dist/infrastructure/agent/agent-runtime.factory.d.ts +9 -0
- package/dist/infrastructure/agent/agent-runtime.factory.js +47 -0
- package/dist/infrastructure/agent/agent-runtime.factory.js.map +1 -0
- package/dist/infrastructure/architecture/topology-catalog.d.ts +17 -0
- package/dist/infrastructure/architecture/topology-catalog.js +69 -0
- package/dist/infrastructure/architecture/topology-catalog.js.map +1 -0
- package/dist/infrastructure/cli/command-executor.d.ts +1 -0
- package/dist/infrastructure/cli/command-executor.js +16 -0
- package/dist/infrastructure/cli/command-executor.js.map +1 -1
- package/dist/infrastructure/cli/providers/index.js +32 -29
- package/dist/infrastructure/cli/providers/index.js.map +1 -1
- package/dist/main.js +12 -1
- package/dist/main.js.map +1 -1
- package/package.json +8 -5
- package/dist/commands/init/agents.command.d.ts +0 -24
- package/dist/commands/init/agents.command.js +0 -330
- package/dist/commands/init/agents.command.js.map +0 -1
- package/dist/commands/init/upgrade.command.d.ts +0 -22
- package/dist/commands/init/upgrade.command.js +0 -178
- package/dist/commands/init/upgrade.command.js.map +0 -1
- package/dist/commands/mcp/mcp-serve.command.d.ts +0 -17
- package/dist/commands/mcp/mcp-serve.command.js +0 -153
- package/dist/commands/mcp/mcp-serve.command.js.map +0 -1
- package/dist/commands/upgrade/index.d.ts +0 -1
- package/dist/commands/upgrade/index.js +0 -6
- package/dist/commands/upgrade/index.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CoreApiClient = void 0;
|
|
4
|
+
class CoreApiClient {
|
|
5
|
+
constructor(baseUrl) {
|
|
6
|
+
this.baseUrl = baseUrl || process.env.EVOLITH_CORE_URL || 'http://localhost:3000';
|
|
7
|
+
}
|
|
8
|
+
async evaluateArchitecturePlan(plan) {
|
|
9
|
+
const url = `${this.baseUrl}/v1/architecture-plans/evaluate`;
|
|
10
|
+
const response = await fetch(url, {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
headers: {
|
|
13
|
+
'Content-Type': 'application/json',
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify(plan)
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const errorText = await response.text();
|
|
19
|
+
throw new Error(`Core API Evaluation failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
20
|
+
}
|
|
21
|
+
return response.json();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.CoreApiClient = CoreApiClient;
|
|
25
|
+
//# sourceMappingURL=CoreApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoreApiClient.js","sourceRoot":"","sources":["../src/CoreApiClient.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IAGxB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,uBAAuB,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAS;QACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,iCAAiC,CAAC;QAC7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1G,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAxBD,sCAwBC"}
|
package/dist/app.module.js
CHANGED
|
@@ -9,13 +9,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.AppModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const init_command_1 = require("./commands/init/init.command");
|
|
12
|
-
const agents_command_1 = require("./commands/
|
|
12
|
+
const agents_command_1 = require("./commands/agents/agents.command");
|
|
13
13
|
const validate_command_1 = require("./commands/validate/validate.command");
|
|
14
|
+
const evaluate_command_1 = require("./commands/evaluate/evaluate.command");
|
|
14
15
|
const alias_service_1 = require("./config/alias.service");
|
|
15
16
|
const alias_command_1 = require("./commands/alias/alias.command");
|
|
16
17
|
const docs_command_1 = require("./commands/docs/docs.command");
|
|
17
|
-
const upgrade_command_1 = require("./commands/
|
|
18
|
-
const mcp_serve_command_1 = require("./commands/mcp/mcp-serve.command");
|
|
18
|
+
const upgrade_command_1 = require("./commands/upgrade/upgrade.command");
|
|
19
19
|
const config_service_1 = require("./infrastructure/config/config.service");
|
|
20
20
|
const file_manager_service_1 = require("./infrastructure/filesystem/file-manager.service");
|
|
21
21
|
const sync_service_1 = require("@evolith/core-domain/application/sync/sync.service");
|
|
@@ -35,6 +35,10 @@ const profile_command_1 = require("./commands/profile/profile.command");
|
|
|
35
35
|
const fixtures_command_1 = require("./commands/fixtures/fixtures.command");
|
|
36
36
|
const api_command_1 = require("./commands/api/api.command");
|
|
37
37
|
const update_command_1 = require("./commands/update/update.command");
|
|
38
|
+
const satellite_1 = require("./commands/satellite");
|
|
39
|
+
const satellite_adopt_command_1 = require("./commands/satellite/satellite-adopt.command");
|
|
40
|
+
const chat_command_1 = require("./commands/chat/chat.command");
|
|
41
|
+
const mcp_command_1 = require("./commands/mcp/mcp.command");
|
|
38
42
|
const validate_satellite_use_case_1 = require("@evolith/core-domain/application/use-cases/validate-satellite.use-case");
|
|
39
43
|
const evaluate_gate_use_case_1 = require("@evolith/core-domain/application/use-cases/evaluate-gate.use-case");
|
|
40
44
|
const phase_gate_validator_service_1 = require("@evolith/core-domain/application/validators/phase-gate-validator.service");
|
|
@@ -58,9 +62,9 @@ exports.AppModule = AppModule = __decorate([
|
|
|
58
62
|
init_command_1.InitCommand,
|
|
59
63
|
agents_command_1.AgentsCommand,
|
|
60
64
|
validate_command_1.ValidateCommand,
|
|
65
|
+
evaluate_command_1.EvaluateCommand,
|
|
61
66
|
docs_command_1.DocsCommand,
|
|
62
67
|
upgrade_command_1.UpgradeCommand,
|
|
63
|
-
mcp_serve_command_1.McpServeCommand,
|
|
64
68
|
config_service_1.ConfigService,
|
|
65
69
|
file_manager_service_1.FileManagerService,
|
|
66
70
|
sync_service_1.SyncService,
|
|
@@ -84,8 +88,12 @@ exports.AppModule = AppModule = __decorate([
|
|
|
84
88
|
fixtures_command_1.FixturesCommand,
|
|
85
89
|
api_command_1.ApiCommand,
|
|
86
90
|
update_command_1.UpdateCommand,
|
|
91
|
+
satellite_adopt_command_1.SatelliteAdoptCommand,
|
|
87
92
|
alias_service_1.AliasService,
|
|
88
93
|
alias_command_1.AliasCommand,
|
|
94
|
+
satellite_1.SatelliteCreateCommand,
|
|
95
|
+
chat_command_1.ChatCommand,
|
|
96
|
+
mcp_command_1.McpCommand,
|
|
89
97
|
validate_satellite_use_case_1.ValidateSatelliteUseCase,
|
|
90
98
|
evaluate_gate_use_case_1.EvaluateGateUseCase,
|
|
91
99
|
propose_phase_advance_use_case_1.ProposePhaseAdvanceUseCase,
|
package/dist/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,27 @@
|
|
|
1
|
+
import { PromptService } from '../../infrastructure/prompts/prompt.service';
|
|
1
2
|
import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
|
|
2
3
|
interface AgentsCommandOptions {
|
|
3
|
-
list?: boolean;
|
|
4
4
|
install?: string;
|
|
5
|
-
|
|
5
|
+
remove?: string;
|
|
6
|
+
list?: boolean;
|
|
7
|
+
run?: string;
|
|
8
|
+
dryRun?: boolean;
|
|
6
9
|
}
|
|
7
10
|
export declare class AgentsCommand extends BaseEvolithCommand {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
private readonly registry;
|
|
12
|
+
constructor(promptService: PromptService);
|
|
13
|
+
executeCommand(passedParam: string[], options?: AgentsCommandOptions): Promise<void>;
|
|
14
|
+
private showMenu;
|
|
15
|
+
private installAgent;
|
|
16
|
+
private listAgents;
|
|
17
|
+
private validateAgent;
|
|
18
|
+
private removeAgent;
|
|
19
|
+
private upgradeAgent;
|
|
20
|
+
private runAgent;
|
|
11
21
|
parseInstall(val: string): string;
|
|
12
|
-
|
|
22
|
+
parseRemove(val: string): string;
|
|
23
|
+
parseList(): boolean;
|
|
24
|
+
parseDryRun(): boolean;
|
|
25
|
+
parseRun(val: string): string;
|
|
13
26
|
}
|
|
14
27
|
export {};
|
|
@@ -8,54 +8,366 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.AgentsCommand = void 0;
|
|
16
|
+
const prompt_service_1 = require("../../infrastructure/prompts/prompt.service");
|
|
13
17
|
const nest_commander_1 = require("nest-commander");
|
|
18
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
19
|
+
const node_filesystem_provider_1 = require("../../infrastructure/providers/node-filesystem.provider");
|
|
20
|
+
const agent_registry_service_1 = require("../../infrastructure/adapters/agent-registry.service");
|
|
21
|
+
const agent_ruleset_builder_1 = require("@evolith/core-domain/application/agents/agent-ruleset-builder");
|
|
14
22
|
const base_command_1 = require("../../infrastructure/cli/base-command");
|
|
23
|
+
const sdk_1 = require("@evolith/sdk");
|
|
24
|
+
let cachedFileSystem = null;
|
|
25
|
+
function getFileSystem() {
|
|
26
|
+
if (!cachedFileSystem) {
|
|
27
|
+
cachedFileSystem = new node_filesystem_provider_1.NodeFileSystemProvider().createFileSystem();
|
|
28
|
+
}
|
|
29
|
+
return cachedFileSystem;
|
|
30
|
+
}
|
|
31
|
+
const AGENT_TEMPLATES = [
|
|
32
|
+
{
|
|
33
|
+
value: 'standard',
|
|
34
|
+
label: 'Standard Agent',
|
|
35
|
+
description: 'Default agent with basic governance rules (ACL-01 through ACL-06)',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
value: 'minimal',
|
|
39
|
+
label: 'Minimal Agent',
|
|
40
|
+
description: 'Lightweight agent with essential rules only',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
value: 'enterprise',
|
|
44
|
+
label: 'Enterprise Agent',
|
|
45
|
+
description: 'Full compliance agent with audit trail and approval chains',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
const AVAILABLE_ADRS = [
|
|
49
|
+
{ value: 'adr-0002', label: 'ADR-0002: Hexagonal Architecture', selected: true },
|
|
50
|
+
{ value: 'adr-0018', label: 'ADR-0018: Testing Pyramid', selected: true },
|
|
51
|
+
{ value: 'adr-0032', label: 'ADR-0032: Protocol Selection', selected: false },
|
|
52
|
+
{ value: 'adr-0040', label: 'ADR-0040: Multi-Runtime', selected: false },
|
|
53
|
+
{ value: 'adr-0050', label: 'ADR-0050: GitFlow Branching', selected: true },
|
|
54
|
+
];
|
|
55
|
+
const AVAILABLE_RULESETS = [
|
|
56
|
+
{ value: 'acl', label: 'ACL Rules (Anti-Corruption Layer)', selected: true },
|
|
57
|
+
{ value: 'open-core', label: 'Open-Core Boundary Rules', selected: true },
|
|
58
|
+
{ value: 'inheritance', label: 'Inheritance Rules', selected: true },
|
|
59
|
+
];
|
|
15
60
|
let AgentsCommand = class AgentsCommand extends base_command_1.BaseEvolithCommand {
|
|
16
|
-
constructor() {
|
|
17
|
-
super('AgentsCommand');
|
|
61
|
+
constructor(promptService) {
|
|
62
|
+
super('AgentsCommand', promptService);
|
|
63
|
+
this.registry = new agent_registry_service_1.AgentRegistryService(getFileSystem());
|
|
64
|
+
}
|
|
65
|
+
async executeCommand(passedParam, options) {
|
|
66
|
+
const action = passedParam[0] || 'menu';
|
|
67
|
+
console.clear();
|
|
68
|
+
switch (action) {
|
|
69
|
+
case 'install':
|
|
70
|
+
await this.installAgent(options);
|
|
71
|
+
break;
|
|
72
|
+
case 'remove':
|
|
73
|
+
await this.removeAgent(options);
|
|
74
|
+
break;
|
|
75
|
+
case 'list':
|
|
76
|
+
await this.listAgents(options);
|
|
77
|
+
break;
|
|
78
|
+
case 'validate':
|
|
79
|
+
await this.validateAgent(options);
|
|
80
|
+
break;
|
|
81
|
+
case 'upgrade':
|
|
82
|
+
await this.upgradeAgent(options);
|
|
83
|
+
break;
|
|
84
|
+
case 'run':
|
|
85
|
+
await this.runAgent(options);
|
|
86
|
+
break;
|
|
87
|
+
case 'menu':
|
|
88
|
+
default:
|
|
89
|
+
await this.showMenu();
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
18
92
|
}
|
|
19
|
-
async
|
|
20
|
-
|
|
21
|
-
|
|
93
|
+
async showMenu() {
|
|
94
|
+
this.promptService.showIntro('Evolith SDK - Agent Management');
|
|
95
|
+
const selection = await this.promptService.select({
|
|
96
|
+
message: 'Select an action:',
|
|
97
|
+
options: [
|
|
98
|
+
{ value: 'install', label: 'Install New Agent', hint: 'Create a new agent with template and rulesets' },
|
|
99
|
+
{ value: 'list', label: 'List Installed Agents', hint: 'Show all agents in this repository' },
|
|
100
|
+
{ value: 'validate', label: 'Validate Agent', hint: 'Check agent ruleset compliance' },
|
|
101
|
+
{ value: 'upgrade', label: 'Upgrade Agent', hint: 'Update agent to latest version' },
|
|
102
|
+
{ value: 'run', label: 'Run Agent (Runtime)', hint: 'Execute an intent on the Agent Runtime API' },
|
|
103
|
+
{ value: 'remove', label: 'Remove Agent', hint: 'Delete an installed agent' },
|
|
104
|
+
{ value: 'exit', label: 'Exit', hint: 'Close agent management' },
|
|
105
|
+
],
|
|
106
|
+
});
|
|
107
|
+
if (selection === 'exit') {
|
|
108
|
+
this.promptService.showOutro(chalk_1.default.blue('Agent management closed.'));
|
|
22
109
|
return;
|
|
23
110
|
}
|
|
24
|
-
|
|
25
|
-
|
|
111
|
+
switch (selection) {
|
|
112
|
+
case 'install':
|
|
113
|
+
await this.installAgent({});
|
|
114
|
+
break;
|
|
115
|
+
case 'list':
|
|
116
|
+
await this.listAgents({});
|
|
117
|
+
break;
|
|
118
|
+
case 'validate':
|
|
119
|
+
await this.validateAgent({});
|
|
120
|
+
break;
|
|
121
|
+
case 'upgrade':
|
|
122
|
+
await this.upgradeAgent({});
|
|
123
|
+
break;
|
|
124
|
+
case 'run':
|
|
125
|
+
await this.runAgent({});
|
|
126
|
+
break;
|
|
127
|
+
case 'remove':
|
|
128
|
+
await this.removeAgent({});
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async installAgent(_options) {
|
|
133
|
+
this.promptService.showIntro('Evolith SDK - Agent Installation');
|
|
134
|
+
const name = await this.promptService.text({
|
|
135
|
+
message: 'Agent name (kebab-case, e.g., my-agent):',
|
|
136
|
+
placeholder: 'my-agent',
|
|
137
|
+
validate: (value) => {
|
|
138
|
+
if (!value)
|
|
139
|
+
return 'Agent name is required';
|
|
140
|
+
if (value.includes(' '))
|
|
141
|
+
return 'Name cannot contain spaces';
|
|
142
|
+
if (!/^[a-z0-9-]+$/.test(value))
|
|
143
|
+
return 'Use lowercase letters, numbers, and hyphens only';
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
const template = await this.promptService.select({
|
|
147
|
+
message: 'Select agent template:',
|
|
148
|
+
options: AGENT_TEMPLATES,
|
|
149
|
+
});
|
|
150
|
+
const description = await this.promptService.text({
|
|
151
|
+
message: 'Agent description (optional):',
|
|
152
|
+
placeholder: 'Agent for handling specific governance tasks',
|
|
153
|
+
});
|
|
154
|
+
const adrs = await this.promptService.multiselect({
|
|
155
|
+
message: 'Select ADR rulesets to include:',
|
|
156
|
+
options: AVAILABLE_ADRS,
|
|
157
|
+
required: false,
|
|
158
|
+
});
|
|
159
|
+
const rulesets = await this.promptService.multiselect({
|
|
160
|
+
message: 'Select additional rulesets:',
|
|
161
|
+
options: AVAILABLE_RULESETS,
|
|
162
|
+
required: false,
|
|
163
|
+
});
|
|
164
|
+
const confirmInstall = await this.promptService.confirm('Ready to install agent?', true);
|
|
165
|
+
if (!confirmInstall) {
|
|
166
|
+
this.promptService.showOutro(chalk_1.default.yellow('Installation cancelled.'));
|
|
26
167
|
return;
|
|
27
168
|
}
|
|
28
|
-
|
|
29
|
-
|
|
169
|
+
const rulesetContent = (0, agent_ruleset_builder_1.buildAgentRuleset)({
|
|
170
|
+
name,
|
|
171
|
+
template,
|
|
172
|
+
adrs,
|
|
173
|
+
rulesets,
|
|
174
|
+
});
|
|
175
|
+
const config = {
|
|
176
|
+
name,
|
|
177
|
+
version: '1.0.0',
|
|
178
|
+
template,
|
|
179
|
+
description,
|
|
180
|
+
adrs,
|
|
181
|
+
rulesets,
|
|
182
|
+
rulesetFiles: ['agent.rules.json'],
|
|
183
|
+
installedAt: new Date().toISOString()
|
|
184
|
+
};
|
|
185
|
+
await this.registry.installAgent(process.cwd(), config, rulesetContent);
|
|
186
|
+
this.promptService.showSuccess(`\n✓ Agent '${name}' installed successfully`);
|
|
187
|
+
this.promptService.showInfo(`Next steps:\n 1. Review agent rules\n 2. Validate agent: evolith agents validate`);
|
|
188
|
+
this.promptService.showOutro(chalk_1.default.green('Agent installation complete.'));
|
|
189
|
+
}
|
|
190
|
+
async listAgents(_options) {
|
|
191
|
+
this.promptService.showIntro('Evolith SDK - Agent List');
|
|
192
|
+
const agents = await this.registry.discover(process.cwd());
|
|
193
|
+
if (agents.length === 0) {
|
|
194
|
+
this.promptService.showWarning('No agents installed.');
|
|
195
|
+
this.promptService.showInfo('Run "evolith agents install" to install your first agent.');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
this.promptService.showInfo(`Found ${agents.length} installed agent(s):\n`);
|
|
199
|
+
for (const agent of agents) {
|
|
200
|
+
const _principlesCount = 0;
|
|
201
|
+
this.promptService.showInfo(chalk_1.default.cyan(` • ${agent.name}`));
|
|
202
|
+
this.promptService.showInfo(chalk_1.default.gray(` Version: ${agent.version} | Template: ${agent.template}`));
|
|
203
|
+
}
|
|
204
|
+
this.promptService.showOutro(chalk_1.default.green(`\n${agents.length} agent(s) found.`));
|
|
205
|
+
}
|
|
206
|
+
async validateAgent(_options) {
|
|
207
|
+
this.promptService.showIntro('Evolith SDK - Agent Validation');
|
|
208
|
+
const agents = await this.registry.discover(process.cwd());
|
|
209
|
+
if (agents.length === 0) {
|
|
210
|
+
this.promptService.showWarning('No agents installed to validate.');
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const agentToValidate = await this.promptService.select({
|
|
214
|
+
message: 'Select agent to validate:',
|
|
215
|
+
options: agents.map(a => ({ value: a.name, label: a.name })),
|
|
216
|
+
});
|
|
217
|
+
this.promptService.showInfo('\nValidating agent ruleset against engine...\n');
|
|
218
|
+
const fs = getFileSystem();
|
|
219
|
+
const rulesetPath = `${process.cwd()}/rulesets/agents/${String(agentToValidate)}/agent.rules.json`;
|
|
220
|
+
if (!await fs.exists(rulesetPath)) {
|
|
221
|
+
this.promptService.showError(`Ruleset file not found: ${rulesetPath}`);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
const ruleset = await fs.readJson(rulesetPath);
|
|
225
|
+
const issues = [];
|
|
226
|
+
if (!ruleset.agent?.name)
|
|
227
|
+
issues.push({ field: 'agent.name', message: 'Agent name is required' });
|
|
228
|
+
if (!ruleset.ruleset?.version)
|
|
229
|
+
issues.push({ field: 'ruleset.version', message: 'Ruleset version is required' });
|
|
230
|
+
if (!ruleset.principles || ruleset.principles.length === 0)
|
|
231
|
+
issues.push({ field: 'principles', message: 'At least one principle is required' });
|
|
232
|
+
for (const principle of ruleset.principles || []) {
|
|
233
|
+
if (!principle.id)
|
|
234
|
+
issues.push({ field: `principle.missing-id`, message: `Principle "${principle.principle}" missing ID` });
|
|
235
|
+
if (!principle.severity)
|
|
236
|
+
issues.push({ field: `principle.missing-severity`, message: `Principle "${principle.id}" missing severity` });
|
|
237
|
+
}
|
|
238
|
+
if (issues.length === 0) {
|
|
239
|
+
await this.registry.updateLastValidated(process.cwd(), String(agentToValidate));
|
|
240
|
+
this.promptService.showSuccess('\n✓ Agent validation passed');
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this.promptService.showError(`\n✗ Agent validation failed: ${issues.length} issue(s) found`);
|
|
244
|
+
for (const issue of issues) {
|
|
245
|
+
this.promptService.showError(` - [${issue.field}] ${issue.message}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
this.promptService.showOutro(issues.length === 0 ? chalk_1.default.green('Validation complete.') : chalk_1.default.red('Validation complete with errors.'));
|
|
249
|
+
}
|
|
250
|
+
async removeAgent(_options) {
|
|
251
|
+
this.promptService.showIntro('Evolith SDK - Agent Removal');
|
|
252
|
+
const agents = await this.registry.discover(process.cwd());
|
|
253
|
+
if (agents.length === 0) {
|
|
254
|
+
this.promptService.showWarning('No agents installed to remove.');
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const agentToRemove = await this.promptService.select({
|
|
258
|
+
message: 'Select agent to remove:',
|
|
259
|
+
options: agents.map(a => ({ value: a.name, label: a.name })),
|
|
260
|
+
});
|
|
261
|
+
const confirm = await this.promptService.confirm(`Are you sure you want to remove agent '${String(agentToRemove)}'? This cannot be undone.`, false);
|
|
262
|
+
if (!confirm) {
|
|
263
|
+
this.promptService.showOutro(chalk_1.default.yellow('Removal cancelled.'));
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
await this.registry.unregister(process.cwd(), String(agentToRemove));
|
|
267
|
+
this.promptService.showSuccess(`\n✓ Agent '${String(agentToRemove)}' removed successfully`);
|
|
268
|
+
this.promptService.showOutro(chalk_1.default.green('Agent removal complete.'));
|
|
269
|
+
}
|
|
270
|
+
async upgradeAgent(_options) {
|
|
271
|
+
this.promptService.showIntro('Evolith SDK - Agent Upgrade');
|
|
272
|
+
const agents = await this.registry.discover(process.cwd());
|
|
273
|
+
if (agents.length === 0) {
|
|
274
|
+
this.promptService.showWarning('No agents installed to upgrade.');
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const agentName = await this.promptService.select({
|
|
278
|
+
message: 'Select agent to upgrade:',
|
|
279
|
+
options: agents.map(a => ({ value: a.name, label: a.name })),
|
|
280
|
+
});
|
|
281
|
+
const agent = await this.registry.getAgent(process.cwd(), String(agentName));
|
|
282
|
+
if (!agent)
|
|
283
|
+
return;
|
|
284
|
+
const fs = getFileSystem();
|
|
285
|
+
const rulesetPath = `${process.cwd()}/rulesets/agents/${agent.name}/agent.rules.json`;
|
|
286
|
+
if (!await fs.exists(rulesetPath)) {
|
|
287
|
+
this.promptService.showError('Agent ruleset not found');
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const ruleset = await fs.readJson(rulesetPath);
|
|
291
|
+
const parts = agent.version.split('.').map(Number);
|
|
292
|
+
parts[2]++;
|
|
293
|
+
const newVersion = parts.join('.');
|
|
294
|
+
agent.version = newVersion;
|
|
295
|
+
if (ruleset.agent)
|
|
296
|
+
ruleset.agent.version = newVersion;
|
|
297
|
+
await this.registry.updateAgent(process.cwd(), agent.name, agent, ruleset);
|
|
298
|
+
this.promptService.showSuccess(`\n✓ Agent '${agent.name}' upgraded: ${parts.join('.')} → ${newVersion}`);
|
|
299
|
+
this.promptService.showOutro(chalk_1.default.green('Agent upgrade complete.'));
|
|
300
|
+
}
|
|
301
|
+
async runAgent(options) {
|
|
302
|
+
this.promptService.showIntro('Evolith SDK - Agent Runtime Execution');
|
|
303
|
+
const intent = options?.run || await this.promptService.text({
|
|
304
|
+
message: 'Enter your request intent for the Agent Runtime:',
|
|
305
|
+
placeholder: 'e.g. Generate architecture plan for new microservice',
|
|
306
|
+
});
|
|
307
|
+
if (!intent) {
|
|
308
|
+
this.promptService.showError('Intent is required to run the agent.');
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const apiUrl = process.env.AGENT_RUNTIME_URL || 'http://localhost:3000';
|
|
312
|
+
this.promptService.showInfo(`Connecting to Agent Runtime at: ${apiUrl}`);
|
|
313
|
+
try {
|
|
314
|
+
const client = new sdk_1.EvolithRestClient({ baseUrl: apiUrl, agentUrl: apiUrl });
|
|
315
|
+
this.promptService.showInfo('Sending request to Agent Runtime API...');
|
|
316
|
+
const request = {
|
|
317
|
+
intent: String(intent),
|
|
318
|
+
parameters: { cwd: process.cwd() }
|
|
319
|
+
};
|
|
320
|
+
const result = await client.agent.handle(request);
|
|
321
|
+
this.promptService.showSuccess(`\n✓ Agent Runtime execution completed`);
|
|
322
|
+
this.promptService.showInfo(`Result:\n${JSON.stringify(result, null, 2)}`);
|
|
323
|
+
this.promptService.showOutro(chalk_1.default.green('Run complete.'));
|
|
324
|
+
}
|
|
325
|
+
catch (err) {
|
|
326
|
+
this.promptService.showError(`\n✗ Agent Runtime execution failed: ${err.message}`);
|
|
327
|
+
}
|
|
30
328
|
}
|
|
31
|
-
parseList() { return true; }
|
|
32
329
|
parseInstall(val) { return val; }
|
|
33
|
-
|
|
330
|
+
parseRemove(val) { return val; }
|
|
331
|
+
parseList() { return true; }
|
|
332
|
+
parseDryRun() { return true; }
|
|
333
|
+
parseRun(val) { return val; }
|
|
34
334
|
};
|
|
35
335
|
exports.AgentsCommand = AgentsCommand;
|
|
36
336
|
__decorate([
|
|
37
|
-
(0, nest_commander_1.Option)({ flags: '--
|
|
337
|
+
(0, nest_commander_1.Option)({ flags: '-i, --install [name]', description: 'Install a new agent' }),
|
|
38
338
|
__metadata("design:type", Function),
|
|
39
|
-
__metadata("design:paramtypes", []),
|
|
40
|
-
__metadata("design:returntype",
|
|
41
|
-
], AgentsCommand.prototype, "
|
|
339
|
+
__metadata("design:paramtypes", [String]),
|
|
340
|
+
__metadata("design:returntype", String)
|
|
341
|
+
], AgentsCommand.prototype, "parseInstall", null);
|
|
42
342
|
__decorate([
|
|
43
|
-
(0, nest_commander_1.Option)({ flags: '--
|
|
343
|
+
(0, nest_commander_1.Option)({ flags: '-r, --remove [name]', description: 'Remove an agent' }),
|
|
44
344
|
__metadata("design:type", Function),
|
|
45
345
|
__metadata("design:paramtypes", [String]),
|
|
46
346
|
__metadata("design:returntype", String)
|
|
47
|
-
], AgentsCommand.prototype, "
|
|
347
|
+
], AgentsCommand.prototype, "parseRemove", null);
|
|
48
348
|
__decorate([
|
|
49
|
-
(0, nest_commander_1.Option)({ flags: '--
|
|
349
|
+
(0, nest_commander_1.Option)({ flags: '-l, --list', description: 'List installed agents' }),
|
|
50
350
|
__metadata("design:type", Function),
|
|
51
351
|
__metadata("design:paramtypes", []),
|
|
52
352
|
__metadata("design:returntype", Boolean)
|
|
53
|
-
], AgentsCommand.prototype, "
|
|
353
|
+
], AgentsCommand.prototype, "parseList", null);
|
|
354
|
+
__decorate([
|
|
355
|
+
(0, nest_commander_1.Option)({ flags: '-d, --dry-run', description: 'Dry run' }),
|
|
356
|
+
__metadata("design:type", Function),
|
|
357
|
+
__metadata("design:paramtypes", []),
|
|
358
|
+
__metadata("design:returntype", Boolean)
|
|
359
|
+
], AgentsCommand.prototype, "parseDryRun", null);
|
|
360
|
+
__decorate([
|
|
361
|
+
(0, nest_commander_1.Option)({ flags: '--run [intent]', description: 'Run agent with intent' }),
|
|
362
|
+
__metadata("design:type", Function),
|
|
363
|
+
__metadata("design:paramtypes", [String]),
|
|
364
|
+
__metadata("design:returntype", String)
|
|
365
|
+
], AgentsCommand.prototype, "parseRun", null);
|
|
54
366
|
exports.AgentsCommand = AgentsCommand = __decorate([
|
|
55
367
|
(0, nest_commander_1.Command)({
|
|
56
368
|
name: 'agents',
|
|
57
|
-
description: '
|
|
369
|
+
description: 'Instala, lista, valida o remueve agentes de Evolith en el repositorio satélite',
|
|
58
370
|
}),
|
|
59
|
-
__metadata("design:paramtypes", [])
|
|
371
|
+
__metadata("design:paramtypes", [prompt_service_1.PromptService])
|
|
60
372
|
], AgentsCommand);
|
|
61
373
|
//# sourceMappingURL=agents.command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.command.js","sourceRoot":"","sources":["../../../src/commands/agents/agents.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiD;AACjD,wEAA2E;AAYpE,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,iCAAkB;IACnD;QACE,KAAK,CAAC,eAAe,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAsB,EAAE,OAA8B;QACzE,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,4CAA4C,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,sEAAsE,CAAC,CAAC;IACtG,CAAC;IAGD,SAAS,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAGrC,YAAY,CAAC,GAAW,IAAY,OAAO,GAAG,CAAC,CAAC,CAAC;IAGjD,WAAW,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;CACxC,CAAA;AA1BY,sCAAa;AAmBxB;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;;;8CAC7B;AAGrC;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;;;iDAC5B;AAGjD;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;;;;gDACvC;wBAzB5B,aAAa;IAJzB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oDAAoD;KAClE,CAAC;;GACW,aAAa,CA0BzB"}
|
|
1
|
+
{"version":3,"file":"agents.command.js","sourceRoot":"","sources":["../../../src/commands/agents/agents.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const base_command_1 = require("../../infrastructure/cli/base-command");
|
|
|
16
16
|
const nx_workspace_strategy_1 = require("../../infrastructure/architecture/nx-workspace.strategy");
|
|
17
17
|
const command_executor_1 = require("../../infrastructure/cli/command-executor");
|
|
18
18
|
const gate_evidence_1 = require("@evolith/core-domain/domain/gate-evidence");
|
|
19
|
+
const topology_catalog_1 = require("../../infrastructure/architecture/topology-catalog");
|
|
19
20
|
let ScaffoldCommand = class ScaffoldCommand extends base_command_1.BaseEvolithCommand {
|
|
20
21
|
constructor() {
|
|
21
22
|
super('ScaffoldCommand');
|
|
@@ -40,12 +41,18 @@ let ScaffoldCommand = class ScaffoldCommand extends base_command_1.BaseEvolithCo
|
|
|
40
41
|
try {
|
|
41
42
|
const frontendFramework = options?.frontend;
|
|
42
43
|
const orm = options?.orm;
|
|
43
|
-
const
|
|
44
|
+
const rawPhase = options?.phase;
|
|
44
45
|
const apiName = options?.apiName || 'tracker-api';
|
|
45
|
-
if (!frontendFramework || !orm || !
|
|
46
|
+
if (!frontendFramework || !orm || !rawPhase) {
|
|
46
47
|
console.log(JSON.stringify((0, gate_evidence_1.createErrorEnvelope)('VALIDATION_FAILED', 'In --format json mode, --frontend, --orm, and --phase are required.', { ...meta, durationMs: Date.now() - startedAt }), null, 2));
|
|
47
48
|
process.exit(1);
|
|
48
49
|
}
|
|
50
|
+
const phase = (0, topology_catalog_1.toProgressivePhase)(rawPhase);
|
|
51
|
+
if (!phase) {
|
|
52
|
+
console.log(JSON.stringify((0, gate_evidence_1.createErrorEnvelope)('VALIDATION_FAILED', `Unknown --phase "${rawPhase}". Use 1|2|3, a progressive-axis id ` +
|
|
53
|
+
`(modular-monolith, distributed-modules, microservices) or legacy F1/F2/F3.`, { ...meta, durationMs: Date.now() - startedAt }), null, 2));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
49
56
|
await this.strategy.installDependencies(frontendFramework, orm);
|
|
50
57
|
await this.strategy.generateApiApp(apiName);
|
|
51
58
|
if (phase === '1') {
|
|
@@ -109,11 +116,11 @@ let ScaffoldCommand = class ScaffoldCommand extends base_command_1.BaseEvolithCo
|
|
|
109
116
|
});
|
|
110
117
|
}
|
|
111
118
|
const phase = await this.promptService.select({
|
|
112
|
-
message: '¿En qué fase
|
|
119
|
+
message: '¿En qué fase del eje progresivo (progressive axis) se encuentra este proyecto?',
|
|
113
120
|
options: [
|
|
114
|
-
{ value: '1', label: 'Fase 1
|
|
115
|
-
{ value: '2', label: 'Fase 2
|
|
116
|
-
{ value: '3', label: 'Fase 3
|
|
121
|
+
{ value: '1', label: 'Fase 1 · modular-monolith (The Lean Foundation, MVP)' },
|
|
122
|
+
{ value: '2', label: 'Fase 2 · distributed-modules (Scale & Decoupling, Service Extraction)' },
|
|
123
|
+
{ value: '3', label: 'Fase 3 · microservices (North Star, Microservices & Microfrontends)' },
|
|
117
124
|
],
|
|
118
125
|
});
|
|
119
126
|
const apiName = await this.promptService.text({
|
|
@@ -260,7 +267,7 @@ __decorate([
|
|
|
260
267
|
__decorate([
|
|
261
268
|
(0, nest_commander_1.Option)({
|
|
262
269
|
flags: '--phase [phase]',
|
|
263
|
-
description: '
|
|
270
|
+
description: 'Progressive-axis phase — 1|2|3 or a canonical id (modular-monolith, distributed-modules, microservices); F1/F2/F3 accepted as legacy. Required with --format json',
|
|
264
271
|
}),
|
|
265
272
|
__metadata("design:type", Function),
|
|
266
273
|
__metadata("design:paramtypes", [String]),
|
|
@@ -314,7 +321,7 @@ __decorate([
|
|
|
314
321
|
exports.ScaffoldCommand = ScaffoldCommand = __decorate([
|
|
315
322
|
(0, nest_commander_1.Command)({
|
|
316
323
|
name: 'scaffold',
|
|
317
|
-
description: 'Scaffolds
|
|
324
|
+
description: 'Scaffolds an Evolith satellite along the progressive maturity axis (phase 1 modular-monolith → 2 distributed-modules → 3 microservices). Phases 2–3 are generated as a Module Federation host + remotes.',
|
|
318
325
|
}),
|
|
319
326
|
__metadata("design:paramtypes", [])
|
|
320
327
|
], ScaffoldCommand);
|