@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.
Files changed (67) hide show
  1. package/README.es.md +989 -200
  2. package/README.md +98 -20
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/CoreApiClient.d.ts +5 -0
  5. package/dist/CoreApiClient.js +25 -0
  6. package/dist/CoreApiClient.js.map +1 -0
  7. package/dist/app.module.js +12 -4
  8. package/dist/app.module.js.map +1 -1
  9. package/dist/commands/agents/agents.command.d.ts +19 -6
  10. package/dist/commands/agents/agents.command.js +333 -21
  11. package/dist/commands/agents/agents.command.js.map +1 -1
  12. package/dist/commands/architecture/scaffold.command.js +15 -8
  13. package/dist/commands/architecture/scaffold.command.js.map +1 -1
  14. package/dist/commands/chat/chat.command.d.ts +7 -0
  15. package/dist/commands/chat/chat.command.js +64 -0
  16. package/dist/commands/chat/chat.command.js.map +1 -0
  17. package/dist/commands/drift/drift.command.js +12 -3
  18. package/dist/commands/drift/drift.command.js.map +1 -1
  19. package/dist/commands/evaluate/evaluate.command.d.ts +28 -0
  20. package/dist/commands/evaluate/evaluate.command.js +197 -0
  21. package/dist/commands/evaluate/evaluate.command.js.map +1 -0
  22. package/dist/commands/mcp/mcp.command.d.ts +17 -0
  23. package/dist/commands/mcp/mcp.command.js +109 -0
  24. package/dist/commands/mcp/mcp.command.js.map +1 -0
  25. package/dist/commands/plan/index.d.ts +2 -0
  26. package/dist/commands/plan/index.js +133 -0
  27. package/dist/commands/plan/index.js.map +1 -0
  28. package/dist/commands/satellite/index.d.ts +2 -0
  29. package/dist/commands/satellite/index.js +8 -0
  30. package/dist/commands/satellite/index.js.map +1 -0
  31. package/dist/commands/satellite/satellite-adopt.command.d.ts +21 -0
  32. package/dist/commands/satellite/satellite-adopt.command.js +193 -0
  33. package/dist/commands/satellite/satellite-adopt.command.js.map +1 -0
  34. package/dist/commands/satellite/satellite-create.command.d.ts +26 -0
  35. package/dist/commands/satellite/satellite-create.command.js +192 -0
  36. package/dist/commands/satellite/satellite-create.command.js.map +1 -0
  37. package/dist/commands/upgrade/upgrade.command.d.ts +12 -4
  38. package/dist/commands/upgrade/upgrade.command.js +139 -19
  39. package/dist/commands/upgrade/upgrade.command.js.map +1 -1
  40. package/dist/commands/validate/validate.command.js +42 -14
  41. package/dist/commands/validate/validate.command.js.map +1 -1
  42. package/dist/infrastructure/agent/agent-runtime.factory.d.ts +9 -0
  43. package/dist/infrastructure/agent/agent-runtime.factory.js +47 -0
  44. package/dist/infrastructure/agent/agent-runtime.factory.js.map +1 -0
  45. package/dist/infrastructure/architecture/topology-catalog.d.ts +17 -0
  46. package/dist/infrastructure/architecture/topology-catalog.js +69 -0
  47. package/dist/infrastructure/architecture/topology-catalog.js.map +1 -0
  48. package/dist/infrastructure/cli/command-executor.d.ts +1 -0
  49. package/dist/infrastructure/cli/command-executor.js +16 -0
  50. package/dist/infrastructure/cli/command-executor.js.map +1 -1
  51. package/dist/infrastructure/cli/providers/index.js +32 -29
  52. package/dist/infrastructure/cli/providers/index.js.map +1 -1
  53. package/dist/main.js +12 -1
  54. package/dist/main.js.map +1 -1
  55. package/package.json +8 -5
  56. package/dist/commands/init/agents.command.d.ts +0 -24
  57. package/dist/commands/init/agents.command.js +0 -330
  58. package/dist/commands/init/agents.command.js.map +0 -1
  59. package/dist/commands/init/upgrade.command.d.ts +0 -22
  60. package/dist/commands/init/upgrade.command.js +0 -178
  61. package/dist/commands/init/upgrade.command.js.map +0 -1
  62. package/dist/commands/mcp/mcp-serve.command.d.ts +0 -17
  63. package/dist/commands/mcp/mcp-serve.command.js +0 -153
  64. package/dist/commands/mcp/mcp-serve.command.js.map +0 -1
  65. package/dist/commands/upgrade/index.d.ts +0 -1
  66. package/dist/commands/upgrade/index.js +0 -6
  67. package/dist/commands/upgrade/index.js.map +0 -1
@@ -0,0 +1,133 @@
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.makePlanCommand = makePlanCommand;
37
+ const commander_1 = require("commander");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const agent_runtime_1 = require("@evolith/agent-runtime");
41
+ const core_domain_1 = require("@evolith/core-domain");
42
+ const agent_runtime_factory_1 = require("../../infrastructure/agent/agent-runtime.factory");
43
+ function makePlanCommand() {
44
+ const planCmd = new commander_1.Command('plan')
45
+ .description('Manage Architecture Plans for Pre-Discovery Intake (Phase 00)');
46
+ const getPlanPath = () => path.join(process.cwd(), '.bmad-core', 'architecture-plan.json');
47
+ const ensureBmadCore = () => {
48
+ const dir = path.join(process.cwd(), '.bmad-core');
49
+ if (!fs.existsSync(dir))
50
+ fs.mkdirSync(dir, { recursive: true });
51
+ };
52
+ planCmd
53
+ .command('create')
54
+ .description('Create a new Architecture Plan draft from a prompt')
55
+ .option('--from-prompt <prompt>', 'The natural language description of the requirement')
56
+ .action(async (options) => {
57
+ console.log(`[Evolith CLI] Generating Architecture Plan using AI capability for prompt: "${options.fromPrompt}"`);
58
+ const llm = new agent_runtime_1.GeminiProvider();
59
+ const interpreter = new agent_runtime_1.ArchitecturePlanInterpreter(llm);
60
+ try {
61
+ const plan = await interpreter.interpret(options.fromPrompt);
62
+ plan.status = core_domain_1.ArchitecturePlanStatus.DRAFT;
63
+ ensureBmadCore();
64
+ fs.writeFileSync(getPlanPath(), JSON.stringify(plan, null, 2));
65
+ console.log(`[Evolith CLI] Architecture Plan Draft saved to .bmad-core/architecture-plan.json`);
66
+ console.log(`[Evolith CLI] Run 'evolith plan evaluate' to obtain SDLC mode from the Core Engine.`);
67
+ }
68
+ catch (err) {
69
+ const message = err instanceof Error ? err.message : String(err);
70
+ console.error(`[Evolith CLI] Failed to generate plan: ${message}`);
71
+ }
72
+ });
73
+ planCmd
74
+ .command('evaluate')
75
+ .description('Evaluate the local Architecture Plan through the Core Engine (OPA) to determine SDLC mode')
76
+ .action(async () => {
77
+ const planPath = getPlanPath();
78
+ if (!fs.existsSync(planPath)) {
79
+ console.error('[Evolith CLI] No architecture-plan.json found in .bmad-core. Run create first.');
80
+ return;
81
+ }
82
+ console.log(`[Evolith CLI] Reading local .bmad-core/architecture-plan.json...`);
83
+ const plan = JSON.parse(fs.readFileSync(planPath, 'utf8'));
84
+ console.log(`[Evolith CLI] Routing evaluation request through Agent Runtime...`);
85
+ try {
86
+ const result = await agent_runtime_factory_1.AgentRuntimeFactory.executeCommand({
87
+ intent: 'evaluate architecture plan',
88
+ tool: 'evaluate-architecture-plan',
89
+ parameters: { plan },
90
+ });
91
+ if (result.status === 'error' || result.status === 'blocked') {
92
+ console.error(`[Evolith CLI] Evaluation failed: ${result.summary}`);
93
+ return;
94
+ }
95
+ console.log(`[Evolith CLI] Plan evaluated successfully by Agent Runtime.`);
96
+ console.log(`[Evolith CLI] Saving evaluated plan back to .bmad-core/architecture-plan.json`);
97
+ }
98
+ catch (err) {
99
+ console.error(`[Evolith CLI] Evaluation failed: ${err instanceof Error ? err.message : String(err)}`);
100
+ }
101
+ });
102
+ planCmd
103
+ .command('approve')
104
+ .description('Approve the Architecture Plan to move into SDLC Phase 1.1')
105
+ .option('--approver <name>', 'Name of the approver')
106
+ .action(async (options) => {
107
+ const planPath = getPlanPath();
108
+ if (!fs.existsSync(planPath)) {
109
+ console.error('[Evolith CLI] No architecture-plan.json found. Run create and evaluate first.');
110
+ return;
111
+ }
112
+ const plan = JSON.parse(fs.readFileSync(planPath, 'utf8'));
113
+ if (plan.status !== core_domain_1.ArchitecturePlanStatus.UNDER_REVIEW) {
114
+ console.error('[Evolith CLI] Plan must be in UNDER_REVIEW state to be approved.');
115
+ return;
116
+ }
117
+ if (!options.approver) {
118
+ console.error('[Evolith CLI] You must specify an approver using --approver <name>');
119
+ return;
120
+ }
121
+ console.log(`[Evolith CLI] Approving Plan by ${options.approver}...`);
122
+ plan.status = core_domain_1.ArchitecturePlanStatus.APPROVED;
123
+ plan.governance.approvers = plan.governance.approvers || [];
124
+ plan.governance.approvers.push({
125
+ name: options.approver,
126
+ date: new Date().toISOString()
127
+ });
128
+ fs.writeFileSync(planPath, JSON.stringify(plan, null, 2));
129
+ console.log(`[Evolith CLI] Plan approved. Ready for execution.`);
130
+ });
131
+ return planCmd;
132
+ }
133
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/plan/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0CA0GC;AAlHD,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAE7B,0DAAqF;AACrF,sDAA8D;AAC9D,4FAAuF;AAEvF,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;SAChC,WAAW,CAAC,+DAA+D,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAE3F,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,wBAAwB,EAAE,qDAAqD,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,+EAA+E,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAElH,MAAM,GAAG,GAAG,IAAI,8BAAc,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,2CAA2B,CAAC,GAAG,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,GAAG,oCAAsB,CAAC,KAAK,CAAC;YAE3C,cAAc,EAAE,CAAC;YACjB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE/D,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;QACrG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,2FAA2F,CAAC;SACxG,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAChG,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QAEjF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,2CAAmB,CAAC,cAAc,CAAC;gBACtD,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,4BAA4B;gBAClC,UAAU,EAAE,EAAE,IAAI,EAAE;aACrB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,oCAAoC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YAID,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;QAC/F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,oCAAsB,CAAC,YAAY,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,oCAAsB,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SatelliteCreateCommand } from './satellite-create.command';
2
+ export { SatelliteAdoptCommand } from './satellite-adopt.command';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SatelliteAdoptCommand = exports.SatelliteCreateCommand = void 0;
4
+ var satellite_create_command_1 = require("./satellite-create.command");
5
+ Object.defineProperty(exports, "SatelliteCreateCommand", { enumerable: true, get: function () { return satellite_create_command_1.SatelliteCreateCommand; } });
6
+ var satellite_adopt_command_1 = require("./satellite-adopt.command");
7
+ Object.defineProperty(exports, "SatelliteAdoptCommand", { enumerable: true, get: function () { return satellite_adopt_command_1.SatelliteAdoptCommand; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/satellite/index.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,21 @@
1
+ import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
2
+ import { PromptService } from '../../infrastructure/prompts/prompt.service';
3
+ import { ConfigService } from '../../infrastructure/config/config.service';
4
+ interface SatelliteAdoptCommandOptions {
5
+ repo?: string;
6
+ topology?: string;
7
+ phase?: string;
8
+ token?: string;
9
+ owner?: string;
10
+ }
11
+ export declare class SatelliteAdoptCommand extends BaseEvolithCommand {
12
+ constructor(promptService: PromptService, configService?: ConfigService);
13
+ executeCommand(_passedParam: string[], options?: SatelliteAdoptCommandOptions): Promise<void>;
14
+ parseRepo(val: string): string;
15
+ parseTopology(val: string): string;
16
+ parsePhase(val: string): string;
17
+ parseToken(val: string): string;
18
+ parseOwner(val: string): string;
19
+ private parseRepoUrl;
20
+ }
21
+ export {};
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SatelliteAdoptCommand = void 0;
16
+ const nest_commander_1 = require("nest-commander");
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const initialize_satellite_use_case_1 = require("@evolith/core-domain/application/use-cases/initialize-satellite.use-case");
19
+ const infra_providers_1 = require("@evolith/infra-providers");
20
+ const base_command_1 = require("../../infrastructure/cli/base-command");
21
+ const prompt_service_1 = require("../../infrastructure/prompts/prompt.service");
22
+ const config_service_1 = require("../../infrastructure/config/config.service");
23
+ let SatelliteAdoptCommand = class SatelliteAdoptCommand extends base_command_1.BaseEvolithCommand {
24
+ constructor(promptService, configService) {
25
+ super('SatelliteAdoptCommand', promptService, configService);
26
+ }
27
+ async executeCommand(_passedParam, options) {
28
+ this.promptService.showIntro('Evolith — Adopt Satellite Repository');
29
+ let repoUrl = options?.repo ?? '';
30
+ if (!repoUrl) {
31
+ repoUrl = await this.promptService.text({
32
+ message: 'GitHub repository URL (https://github.com/owner/repo)',
33
+ placeholder: 'https://github.com/myorg/myrepo',
34
+ validate: (v) => {
35
+ if (!v.startsWith('https://github.com/')) {
36
+ return 'URL must start with https://github.com/';
37
+ }
38
+ if (!/github\.com\/[^/]+\/[^/]+/.test(v)) {
39
+ return 'URL must be in the form https://github.com/owner/repo';
40
+ }
41
+ return undefined;
42
+ },
43
+ });
44
+ }
45
+ const parsed = this.parseRepoUrl(repoUrl);
46
+ let owner = options?.owner ?? parsed.owner;
47
+ if (!owner) {
48
+ owner = await this.promptService.text({
49
+ message: 'GitHub owner (user or organization)',
50
+ placeholder: parsed.owner || 'myorg',
51
+ });
52
+ }
53
+ const topologyChoices = [
54
+ { value: 'monolith', label: 'Monolith' },
55
+ { value: 'modular', label: 'Modular monolith' },
56
+ { value: 'micro', label: 'Microservices' },
57
+ { value: 'distributed', label: 'Distributed' },
58
+ { value: 'custom', label: 'Custom' },
59
+ ];
60
+ const topology = options?.topology
61
+ ? options.topology
62
+ : await this.promptService.select({
63
+ message: 'Architecture topology',
64
+ options: topologyChoices,
65
+ initialValue: 'monolith',
66
+ });
67
+ let phase = options?.phase ?? '';
68
+ if (!phase) {
69
+ phase = await this.promptService.select({
70
+ message: 'SDLC phase',
71
+ options: [
72
+ { value: 'alpha', label: 'Alpha' },
73
+ { value: 'beta', label: 'Beta' },
74
+ { value: 'rc', label: 'Release Candidate (RC)' },
75
+ { value: 'ga', label: 'General Availability (GA)' },
76
+ ],
77
+ initialValue: 'alpha',
78
+ });
79
+ }
80
+ const token = options?.token ?? process.env['GITHUB_TOKEN'] ?? '';
81
+ if (!token) {
82
+ this.promptService.showWarning('No GitHub token found. Set --token or GITHUB_TOKEN env var. ' +
83
+ 'The adopt operation will likely fail without a valid token.');
84
+ }
85
+ this.promptService.startSpinner(`Adopting ${repoUrl} into Evolith governance...`);
86
+ try {
87
+ const useCase = new initialize_satellite_use_case_1.InitializeSatelliteUseCase(new infra_providers_1.GitHubApiAdapter(token));
88
+ const result = await useCase.execute({
89
+ mode: 'adopt',
90
+ name: parsed.name,
91
+ owner,
92
+ topology,
93
+ phase,
94
+ existingRepoUrl: repoUrl,
95
+ });
96
+ this.promptService.stopSpinner();
97
+ const { satellite } = result;
98
+ console.log('');
99
+ console.log(chalk_1.default.bold('Satellite adopted successfully'));
100
+ console.log(` ${chalk_1.default.cyan('ID:')} ${satellite.id}`);
101
+ console.log(` ${chalk_1.default.cyan('Name:')} ${satellite.name}`);
102
+ console.log(` ${chalk_1.default.cyan('Owner:')} ${satellite.owner}`);
103
+ console.log(` ${chalk_1.default.cyan('Repo:')} ${satellite.repoUrl}`);
104
+ console.log(` ${chalk_1.default.cyan('Topology:')} ${satellite.topology}`);
105
+ console.log(` ${chalk_1.default.cyan('Phase:')} ${satellite.phase}`);
106
+ console.log(` ${chalk_1.default.cyan('Status:')} ${chalk_1.default.green(satellite.status)}`);
107
+ console.log('');
108
+ this.promptService.showSuccess(`Satellite ${satellite.name} linked (${satellite.status})`);
109
+ this.promptService.showOutro('Done.');
110
+ }
111
+ catch (error) {
112
+ this.promptService.stopSpinner();
113
+ throw error;
114
+ }
115
+ }
116
+ parseRepo(val) {
117
+ return val;
118
+ }
119
+ parseTopology(val) {
120
+ return val;
121
+ }
122
+ parsePhase(val) {
123
+ return val;
124
+ }
125
+ parseToken(val) {
126
+ return val;
127
+ }
128
+ parseOwner(val) {
129
+ return val;
130
+ }
131
+ parseRepoUrl(url) {
132
+ const match = url.match(/github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/);
133
+ if (!match) {
134
+ return { owner: '', name: '' };
135
+ }
136
+ return { owner: match[1], name: match[2] };
137
+ }
138
+ };
139
+ exports.SatelliteAdoptCommand = SatelliteAdoptCommand;
140
+ __decorate([
141
+ (0, nest_commander_1.Option)({
142
+ flags: '--repo <url>',
143
+ description: 'GitHub repository URL (https://github.com/owner/repo)',
144
+ }),
145
+ __metadata("design:type", Function),
146
+ __metadata("design:paramtypes", [String]),
147
+ __metadata("design:returntype", String)
148
+ ], SatelliteAdoptCommand.prototype, "parseRepo", null);
149
+ __decorate([
150
+ (0, nest_commander_1.Option)({
151
+ flags: '--topology <topology>',
152
+ description: 'Architecture topology: monolith | modular | micro | distributed | custom',
153
+ }),
154
+ __metadata("design:type", Function),
155
+ __metadata("design:paramtypes", [String]),
156
+ __metadata("design:returntype", String)
157
+ ], SatelliteAdoptCommand.prototype, "parseTopology", null);
158
+ __decorate([
159
+ (0, nest_commander_1.Option)({
160
+ flags: '--phase <phase>',
161
+ description: 'SDLC phase: alpha | beta | rc | ga',
162
+ }),
163
+ __metadata("design:type", Function),
164
+ __metadata("design:paramtypes", [String]),
165
+ __metadata("design:returntype", String)
166
+ ], SatelliteAdoptCommand.prototype, "parsePhase", null);
167
+ __decorate([
168
+ (0, nest_commander_1.Option)({
169
+ flags: '--token <token>',
170
+ description: 'GitHub personal access token (defaults to GITHUB_TOKEN env var)',
171
+ }),
172
+ __metadata("design:type", Function),
173
+ __metadata("design:paramtypes", [String]),
174
+ __metadata("design:returntype", String)
175
+ ], SatelliteAdoptCommand.prototype, "parseToken", null);
176
+ __decorate([
177
+ (0, nest_commander_1.Option)({
178
+ flags: '--owner <owner>',
179
+ description: 'GitHub owner (user or organization); defaults to the owner parsed from --repo',
180
+ }),
181
+ __metadata("design:type", Function),
182
+ __metadata("design:paramtypes", [String]),
183
+ __metadata("design:returntype", String)
184
+ ], SatelliteAdoptCommand.prototype, "parseOwner", null);
185
+ exports.SatelliteAdoptCommand = SatelliteAdoptCommand = __decorate([
186
+ (0, nest_commander_1.Command)({
187
+ name: 'satellite:adopt',
188
+ description: 'Adopt an existing GitHub repository as an Evolith satellite',
189
+ }),
190
+ __metadata("design:paramtypes", [prompt_service_1.PromptService,
191
+ config_service_1.ConfigService])
192
+ ], SatelliteAdoptCommand);
193
+ //# sourceMappingURL=satellite-adopt.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"satellite-adopt.command.js","sourceRoot":"","sources":["../../../src/commands/satellite/satellite-adopt.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
2
+ import { PromptService } from '../../infrastructure/prompts/prompt.service';
3
+ import { ConfigService } from '../../infrastructure/config/config.service';
4
+ type SatelliteTopologyOption = 'monolith' | 'modular' | 'micro' | 'distributed';
5
+ type SatellitePhaseOption = 'discovery' | 'design' | 'construction' | 'qa' | 'release';
6
+ interface SatelliteCreateCommandOptions {
7
+ name?: string;
8
+ owner?: string;
9
+ topology?: SatelliteTopologyOption;
10
+ phase?: SatellitePhaseOption;
11
+ private?: boolean;
12
+ description?: string;
13
+ token?: string;
14
+ }
15
+ export declare class SatelliteCreateCommand extends BaseEvolithCommand {
16
+ constructor(promptService: PromptService, configService?: ConfigService);
17
+ executeCommand(_passedParam: string[], options?: SatelliteCreateCommandOptions): Promise<void>;
18
+ parseName(val: string): string;
19
+ parseOwner(val: string): string;
20
+ parseTopology(val: string): SatelliteTopologyOption;
21
+ parsePhase(val: string): SatellitePhaseOption;
22
+ parsePrivate(): boolean;
23
+ parseDescription(val: string): string;
24
+ parseToken(val: string): string;
25
+ }
26
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SatelliteCreateCommand = void 0;
16
+ const nest_commander_1 = require("nest-commander");
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const initialize_satellite_use_case_1 = require("@evolith/core-domain/application/use-cases/initialize-satellite.use-case");
19
+ const infra_providers_1 = require("@evolith/infra-providers");
20
+ const base_command_1 = require("../../infrastructure/cli/base-command");
21
+ const prompt_service_1 = require("../../infrastructure/prompts/prompt.service");
22
+ const config_service_1 = require("../../infrastructure/config/config.service");
23
+ let SatelliteCreateCommand = class SatelliteCreateCommand extends base_command_1.BaseEvolithCommand {
24
+ constructor(promptService, configService) {
25
+ super('SatelliteCreateCommand', promptService, configService);
26
+ }
27
+ async executeCommand(_passedParam, options) {
28
+ this.promptService.showIntro('Evolith SDK - Satellite Create');
29
+ const name = options?.name ?? await this.promptService.text({
30
+ message: 'Repository name:',
31
+ placeholder: 'my-satellite',
32
+ validate: (v) => (v.trim().length === 0 ? 'Name is required' : undefined),
33
+ });
34
+ const owner = options?.owner ?? await this.promptService.text({
35
+ message: 'GitHub owner (user or organisation):',
36
+ placeholder: 'my-org',
37
+ validate: (v) => (v.trim().length === 0 ? 'Owner is required' : undefined),
38
+ });
39
+ const topology = options?.topology ?? await this.promptService.select({
40
+ message: 'Architecture topology:',
41
+ options: [
42
+ { value: 'monolith', label: 'Monolith', hint: 'Single deployable unit' },
43
+ { value: 'modular', label: 'Modular monolith', hint: 'Modular boundaries, single deployment' },
44
+ { value: 'micro', label: 'Microservices', hint: 'Independent deployable services' },
45
+ { value: 'distributed', label: 'Distributed', hint: 'Event-driven distributed system' },
46
+ ],
47
+ initialValue: 'modular',
48
+ });
49
+ const phase = options?.phase ?? await this.promptService.select({
50
+ message: 'Initial SDLC phase:',
51
+ options: [
52
+ { value: 'discovery', label: 'Discovery' },
53
+ { value: 'design', label: 'Design' },
54
+ { value: 'construction', label: 'Construction' },
55
+ { value: 'qa', label: 'QA' },
56
+ { value: 'release', label: 'Release' },
57
+ ],
58
+ initialValue: 'discovery',
59
+ });
60
+ const token = options?.token ?? process.env['GITHUB_TOKEN'] ?? '';
61
+ if (!token) {
62
+ this.promptService.showError('GitHub token not found. Pass --token or set the GITHUB_TOKEN environment variable.');
63
+ this.promptService.showOutro('Satellite creation cancelled.');
64
+ return;
65
+ }
66
+ this.promptService.startSpinner(`Creating repository ${owner}/${name} on GitHub...`);
67
+ try {
68
+ const githubClient = new infra_providers_1.GitHubApiAdapter(token);
69
+ const useCase = new initialize_satellite_use_case_1.InitializeSatelliteUseCase(githubClient);
70
+ const result = await useCase.execute({
71
+ mode: 'create',
72
+ name: name.trim(),
73
+ owner: owner.trim(),
74
+ topology,
75
+ phase,
76
+ description: options?.description,
77
+ private: options?.private ?? false,
78
+ });
79
+ this.promptService.stopSpinner('Repository created.');
80
+ const { satellite } = result;
81
+ console.log(`\n${chalk_1.default.bgGreen.black(' Satellite Registered ')}\n`);
82
+ console.log(`${chalk_1.default.bold('ID:')} ${chalk_1.default.cyan(satellite.id)}`);
83
+ console.log(`${chalk_1.default.bold('Name:')} ${chalk_1.default.cyan(satellite.name)}`);
84
+ console.log(`${chalk_1.default.bold('Owner:')} ${chalk_1.default.cyan(satellite.owner)}`);
85
+ console.log(`${chalk_1.default.bold('Repo URL:')} ${chalk_1.default.underline(satellite.repoUrl)}`);
86
+ console.log(`${chalk_1.default.bold('Topology:')} ${satellite.topology}`);
87
+ console.log(`${chalk_1.default.bold('Phase:')} ${satellite.phase}`);
88
+ console.log(`${chalk_1.default.bold('Status:')} ${chalk_1.default.green(satellite.status)}`);
89
+ console.log('');
90
+ this.promptService.showSuccess(`Satellite "${satellite.name}" successfully created and registered.`);
91
+ this.promptService.showOutro('Done. Run `evolith satellite adopt` to link an existing repo.');
92
+ }
93
+ catch (error) {
94
+ this.promptService.stopSpinner('Failed.');
95
+ throw error;
96
+ }
97
+ }
98
+ parseName(val) {
99
+ return val;
100
+ }
101
+ parseOwner(val) {
102
+ return val;
103
+ }
104
+ parseTopology(val) {
105
+ return val;
106
+ }
107
+ parsePhase(val) {
108
+ return val;
109
+ }
110
+ parsePrivate() {
111
+ return true;
112
+ }
113
+ parseDescription(val) {
114
+ return val;
115
+ }
116
+ parseToken(val) {
117
+ return val;
118
+ }
119
+ };
120
+ exports.SatelliteCreateCommand = SatelliteCreateCommand;
121
+ __decorate([
122
+ (0, nest_commander_1.Option)({
123
+ flags: '-n, --name [name]',
124
+ description: 'Name for the new GitHub repository',
125
+ }),
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", [String]),
128
+ __metadata("design:returntype", String)
129
+ ], SatelliteCreateCommand.prototype, "parseName", null);
130
+ __decorate([
131
+ (0, nest_commander_1.Option)({
132
+ flags: '-o, --owner [owner]',
133
+ description: 'GitHub user or organisation that will own the repository',
134
+ }),
135
+ __metadata("design:type", Function),
136
+ __metadata("design:paramtypes", [String]),
137
+ __metadata("design:returntype", String)
138
+ ], SatelliteCreateCommand.prototype, "parseOwner", null);
139
+ __decorate([
140
+ (0, nest_commander_1.Option)({
141
+ flags: '--topology [topology]',
142
+ description: 'Architecture topology: monolith | modular | micro | distributed',
143
+ }),
144
+ __metadata("design:type", Function),
145
+ __metadata("design:paramtypes", [String]),
146
+ __metadata("design:returntype", String)
147
+ ], SatelliteCreateCommand.prototype, "parseTopology", null);
148
+ __decorate([
149
+ (0, nest_commander_1.Option)({
150
+ flags: '--phase [phase]',
151
+ description: 'Initial SDLC phase: discovery | design | construction | qa | release',
152
+ }),
153
+ __metadata("design:type", Function),
154
+ __metadata("design:paramtypes", [String]),
155
+ __metadata("design:returntype", String)
156
+ ], SatelliteCreateCommand.prototype, "parsePhase", null);
157
+ __decorate([
158
+ (0, nest_commander_1.Option)({
159
+ flags: '--private',
160
+ description: 'Create the repository as private (default: public)',
161
+ }),
162
+ __metadata("design:type", Function),
163
+ __metadata("design:paramtypes", []),
164
+ __metadata("design:returntype", Boolean)
165
+ ], SatelliteCreateCommand.prototype, "parsePrivate", null);
166
+ __decorate([
167
+ (0, nest_commander_1.Option)({
168
+ flags: '-d, --description [description]',
169
+ description: 'Optional description for the repository',
170
+ }),
171
+ __metadata("design:type", Function),
172
+ __metadata("design:paramtypes", [String]),
173
+ __metadata("design:returntype", String)
174
+ ], SatelliteCreateCommand.prototype, "parseDescription", null);
175
+ __decorate([
176
+ (0, nest_commander_1.Option)({
177
+ flags: '-t, --token [token]',
178
+ description: 'GitHub personal access token (falls back to GITHUB_TOKEN env var)',
179
+ }),
180
+ __metadata("design:type", Function),
181
+ __metadata("design:paramtypes", [String]),
182
+ __metadata("design:returntype", String)
183
+ ], SatelliteCreateCommand.prototype, "parseToken", null);
184
+ exports.SatelliteCreateCommand = SatelliteCreateCommand = __decorate([
185
+ (0, nest_commander_1.Command)({
186
+ name: 'satellite:create',
187
+ description: 'Create a new GitHub satellite repository and register it with Evolith',
188
+ }),
189
+ __metadata("design:paramtypes", [prompt_service_1.PromptService,
190
+ config_service_1.ConfigService])
191
+ ], SatelliteCreateCommand);
192
+ //# sourceMappingURL=satellite-create.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"satellite-create.command.js","sourceRoot":"","sources":["../../../src/commands/satellite/satellite-create.command.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,22 @@
1
1
  import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
2
+ import { PromptService } from '../../infrastructure/prompts/prompt.service';
3
+ import { ConfigService } from '../../infrastructure/config/config.service';
2
4
  interface UpgradeCommandOptions {
3
5
  dryRun?: boolean;
4
- target?: string;
5
6
  force?: boolean;
7
+ core?: string;
8
+ report?: boolean;
6
9
  }
7
10
  export declare class UpgradeCommand extends BaseEvolithCommand {
8
- constructor();
9
- executeCommand(_passedParam: string[], options?: UpgradeCommandOptions): Promise<void>;
11
+ constructor(promptService: PromptService, configService?: ConfigService);
12
+ executeCommand(passedParam: string[], options?: UpgradeCommandOptions): Promise<void>;
13
+ private printUpgradePlan;
14
+ private getChangeIcon;
15
+ private getRiskColor;
16
+ private findCorePath;
10
17
  parseDryRun(): boolean;
11
- parseTarget(val: string): string;
12
18
  parseForce(): boolean;
19
+ parseCore(val: string): string;
20
+ parseReport(): boolean;
13
21
  }
14
22
  export {};