@thanhvn14/csvibe 0.1.0 → 0.1.2
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/.csvibe/state/approaches.json +1 -0
- package/README.md +142 -3
- package/dist/commands/brainstorm.d.ts +16 -0
- package/dist/commands/brainstorm.d.ts.map +1 -0
- package/dist/commands/brainstorm.js +186 -0
- package/dist/commands/brainstorm.js.map +1 -0
- package/dist/commands/doctor.d.ts +9 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +72 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +13 -7
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init/index.d.ts +7 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +10 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/commands/init/init-command.d.ts +10 -0
- package/dist/commands/init/init-command.d.ts.map +1 -0
- package/dist/commands/init/init-command.js +75 -0
- package/dist/commands/init/init-command.js.map +1 -0
- package/dist/commands/init/phases/config-handler.d.ts +10 -0
- package/dist/commands/init/phases/config-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/config-handler.js +21 -0
- package/dist/commands/init/phases/config-handler.js.map +1 -0
- package/dist/commands/init/phases/detection-handler.d.ts +10 -0
- package/dist/commands/init/phases/detection-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/detection-handler.js +80 -0
- package/dist/commands/init/phases/detection-handler.js.map +1 -0
- package/dist/commands/init/phases/download-handler.d.ts +9 -0
- package/dist/commands/init/phases/download-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/download-handler.js +16 -0
- package/dist/commands/init/phases/download-handler.js.map +1 -0
- package/dist/commands/init/phases/prompt-handler.d.ts +10 -0
- package/dist/commands/init/phases/prompt-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/prompt-handler.js +24 -0
- package/dist/commands/init/phases/prompt-handler.js.map +1 -0
- package/dist/commands/init/phases/scaffold-handler.d.ts +9 -0
- package/dist/commands/init/phases/scaffold-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/scaffold-handler.js +18 -0
- package/dist/commands/init/phases/scaffold-handler.js.map +1 -0
- package/dist/commands/init/phases/validation-handler.d.ts +14 -0
- package/dist/commands/init/phases/validation-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/validation-handler.js +50 -0
- package/dist/commands/init/phases/validation-handler.js.map +1 -0
- package/dist/commands/init/phases/vscode-handler.d.ts +9 -0
- package/dist/commands/init/phases/vscode-handler.d.ts.map +1 -0
- package/dist/commands/init/phases/vscode-handler.js +16 -0
- package/dist/commands/init/phases/vscode-handler.js.map +1 -0
- package/dist/commands/init/types.d.ts +28 -0
- package/dist/commands/init/types.d.ts.map +1 -0
- package/dist/commands/init/types.js +6 -0
- package/dist/commands/init/types.js.map +1 -0
- package/dist/commands/scout.d.ts +30 -0
- package/dist/commands/scout.d.ts.map +1 -0
- package/dist/commands/scout.js +116 -0
- package/dist/commands/scout.js.map +1 -0
- package/dist/config/constants.d.ts +3 -3
- package/dist/config/constants.js +3 -3
- package/dist/config/constants.js.map +1 -1
- package/dist/domains/config/generator.d.ts +17 -0
- package/dist/domains/config/generator.d.ts.map +1 -0
- package/dist/domains/config/generator.js +67 -0
- package/dist/domains/config/generator.js.map +1 -0
- package/dist/domains/config/index.d.ts +8 -0
- package/dist/domains/config/index.d.ts.map +1 -0
- package/dist/domains/config/index.js +15 -0
- package/dist/domains/config/index.js.map +1 -0
- package/dist/domains/config/types.d.ts +39 -0
- package/dist/domains/config/types.d.ts.map +1 -0
- package/dist/domains/config/types.js +6 -0
- package/dist/domains/config/types.js.map +1 -0
- package/dist/domains/config/validator.d.ts +17 -0
- package/dist/domains/config/validator.d.ts.map +1 -0
- package/dist/domains/config/validator.js +54 -0
- package/dist/domains/config/validator.js.map +1 -0
- package/dist/domains/github/auth-api.d.ts +19 -0
- package/dist/domains/github/auth-api.d.ts.map +1 -0
- package/dist/domains/github/auth-api.js +196 -0
- package/dist/domains/github/auth-api.js.map +1 -0
- package/dist/domains/github/github-client.d.ts +323 -0
- package/dist/domains/github/github-client.d.ts.map +1 -0
- package/dist/domains/github/github-client.js +192 -0
- package/dist/domains/github/github-client.js.map +1 -0
- package/dist/domains/github/index.d.ts +9 -0
- package/dist/domains/github/index.d.ts.map +1 -0
- package/dist/domains/github/index.js +23 -0
- package/dist/domains/github/index.js.map +1 -0
- package/dist/domains/github/keychain.d.ts +19 -0
- package/dist/domains/github/keychain.d.ts.map +1 -0
- package/dist/domains/github/keychain.js +132 -0
- package/dist/domains/github/keychain.js.map +1 -0
- package/dist/domains/github/types.d.ts +40 -0
- package/dist/domains/github/types.d.ts.map +1 -0
- package/dist/domains/github/types.js +6 -0
- package/dist/domains/github/types.js.map +1 -0
- package/dist/domains/health-checks/auto-healer.d.ts +14 -0
- package/dist/domains/health-checks/auto-healer.d.ts.map +1 -0
- package/dist/domains/health-checks/auto-healer.js +160 -0
- package/dist/domains/health-checks/auto-healer.js.map +1 -0
- package/dist/domains/health-checks/check-runner.d.ts +10 -0
- package/dist/domains/health-checks/check-runner.d.ts.map +1 -0
- package/dist/domains/health-checks/check-runner.js +31 -0
- package/dist/domains/health-checks/check-runner.js.map +1 -0
- package/dist/domains/health-checks/checkers/auth-checker.d.ts +10 -0
- package/dist/domains/health-checks/checkers/auth-checker.d.ts.map +1 -0
- package/dist/domains/health-checks/checkers/auth-checker.js +90 -0
- package/dist/domains/health-checks/checkers/auth-checker.js.map +1 -0
- package/dist/domains/health-checks/checkers/deps-checker.d.ts +10 -0
- package/dist/domains/health-checks/checkers/deps-checker.d.ts.map +1 -0
- package/dist/domains/health-checks/checkers/deps-checker.js +150 -0
- package/dist/domains/health-checks/checkers/deps-checker.js.map +1 -0
- package/dist/domains/health-checks/checkers/project-checker.d.ts +10 -0
- package/dist/domains/health-checks/checkers/project-checker.d.ts.map +1 -0
- package/dist/domains/health-checks/checkers/project-checker.js +124 -0
- package/dist/domains/health-checks/checkers/project-checker.js.map +1 -0
- package/dist/domains/health-checks/checkers/system-checker.d.ts +10 -0
- package/dist/domains/health-checks/checkers/system-checker.d.ts.map +1 -0
- package/dist/domains/health-checks/checkers/system-checker.js +135 -0
- package/dist/domains/health-checks/checkers/system-checker.js.map +1 -0
- package/dist/domains/health-checks/index.d.ts +9 -0
- package/dist/domains/health-checks/index.d.ts.map +1 -0
- package/dist/domains/health-checks/index.js +21 -0
- package/dist/domains/health-checks/index.js.map +1 -0
- package/dist/domains/health-checks/report-generator.d.ts +18 -0
- package/dist/domains/health-checks/report-generator.d.ts.map +1 -0
- package/dist/domains/health-checks/report-generator.js +117 -0
- package/dist/domains/health-checks/report-generator.js.map +1 -0
- package/dist/domains/health-checks/types.d.ts +35 -0
- package/dist/domains/health-checks/types.d.ts.map +1 -0
- package/dist/domains/health-checks/types.js +6 -0
- package/dist/domains/health-checks/types.js.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/approaches-validator.d.ts +40 -0
- package/dist/utils/approaches-validator.d.ts.map +1 -0
- package/dist/utils/approaches-validator.js +101 -0
- package/dist/utils/approaches-validator.js.map +1 -0
- package/dist/utils/dependency-analyzer.d.ts +31 -0
- package/dist/utils/dependency-analyzer.d.ts.map +1 -0
- package/dist/utils/dependency-analyzer.js +294 -0
- package/dist/utils/dependency-analyzer.js.map +1 -0
- package/dist/utils/directory-analyzer.d.ts +23 -0
- package/dist/utils/directory-analyzer.d.ts.map +1 -0
- package/dist/utils/directory-analyzer.js +81 -0
- package/dist/utils/directory-analyzer.js.map +1 -0
- package/dist/utils/downloader.d.ts +3 -3
- package/dist/utils/downloader.d.ts.map +1 -1
- package/dist/utils/downloader.js +35 -65
- package/dist/utils/downloader.js.map +1 -1
- package/dist/utils/errors.d.ts +64 -10
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +136 -22
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/gh-cli.d.ts +4 -2
- package/dist/utils/gh-cli.d.ts.map +1 -1
- package/dist/utils/gh-cli.js +33 -38
- package/dist/utils/gh-cli.js.map +1 -1
- package/dist/utils/progress.d.ts +37 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +121 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/prompts.d.ts +5 -1
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +124 -64
- package/dist/utils/prompts.js.map +1 -1
- package/package.json +7 -3
- package/test-jira-prompt.js +32 -0
- package/dist/commands/init.d.ts +0 -6
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -147
- package/dist/commands/init.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domains/health-checks/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,eAAe;AACf,+CAAiD;AAAxC,+GAAA,eAAe,OAAA;AAExB,cAAc;AACd,6CAAuD;AAA9C,sGAAA,OAAO,OAAA;AAAE,4GAAA,aAAa,OAAA;AAE/B,oBAAoB;AACpB,uDAAsF;AAA7E,kHAAA,cAAc,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAAE,gHAAA,YAAY,OAAA;AAYzD,uEAAuE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health check report generation
|
|
3
|
+
* Formats reports for terminal output, JSON, and GitHub Gist upload
|
|
4
|
+
*/
|
|
5
|
+
import type { HealthCheckReport } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Generate formatted terminal report
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateReport(report: HealthCheckReport): string;
|
|
10
|
+
/**
|
|
11
|
+
* Generate JSON report
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateJsonReport(report: HealthCheckReport): string;
|
|
14
|
+
/**
|
|
15
|
+
* Upload report to GitHub Gist
|
|
16
|
+
*/
|
|
17
|
+
export declare function uploadToGist(report: HealthCheckReport): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=report-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../../src/domains/health-checks/report-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAqDhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB7E"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Health check report generation
|
|
4
|
+
* Formats reports for terminal output, JSON, and GitHub Gist upload
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.generateReport = generateReport;
|
|
11
|
+
exports.generateJsonReport = generateJsonReport;
|
|
12
|
+
exports.uploadToGist = uploadToGist;
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const github_1 = require("../github");
|
|
15
|
+
/**
|
|
16
|
+
* Generate formatted terminal report
|
|
17
|
+
*/
|
|
18
|
+
function generateReport(report) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
lines.push('');
|
|
21
|
+
lines.push(chalk_1.default.bold.cyan('CSVibe Health Check Report'));
|
|
22
|
+
lines.push(chalk_1.default.gray(`Generated: ${new Date(report.timestamp).toLocaleString()}`));
|
|
23
|
+
lines.push('');
|
|
24
|
+
for (const result of report.results) {
|
|
25
|
+
// Category header
|
|
26
|
+
const categoryIcon = result.passed ? '✓' : '✗';
|
|
27
|
+
const categoryColor = result.passed ? chalk_1.default.green : chalk_1.default.red;
|
|
28
|
+
lines.push(categoryColor.bold(`${categoryIcon} ${result.category}`));
|
|
29
|
+
// Individual checks
|
|
30
|
+
for (const check of result.checks) {
|
|
31
|
+
const icon = getCheckIcon(check.status);
|
|
32
|
+
const color = getCheckColor(check.status);
|
|
33
|
+
lines.push(color(` ${icon} ${check.name}: ${check.message}`));
|
|
34
|
+
// Show fix suggestion if available
|
|
35
|
+
if (check.status !== 'pass' && check.fix) {
|
|
36
|
+
lines.push(chalk_1.default.gray(` 💡 Fix: ${check.fix}`));
|
|
37
|
+
}
|
|
38
|
+
// Show error details if available
|
|
39
|
+
if (check.error) {
|
|
40
|
+
lines.push(chalk_1.default.dim(` ⚠ Error: ${check.error}`));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
lines.push('');
|
|
44
|
+
}
|
|
45
|
+
// Summary
|
|
46
|
+
if (report.passed) {
|
|
47
|
+
lines.push(chalk_1.default.green.bold('✓ All checks passed!'));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
lines.push(chalk_1.default.red.bold('✗ Some checks failed'));
|
|
51
|
+
if (report.fixable > 0) {
|
|
52
|
+
lines.push('');
|
|
53
|
+
lines.push(chalk_1.default.yellow(`💡 ${report.fixable} issue(s) can be auto-fixed with: ${chalk_1.default.cyan('csvibe doctor --fix')}`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
lines.push('');
|
|
57
|
+
return lines.join('\n');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Generate JSON report
|
|
61
|
+
*/
|
|
62
|
+
function generateJsonReport(report) {
|
|
63
|
+
return JSON.stringify(report, null, 2);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Upload report to GitHub Gist
|
|
67
|
+
*/
|
|
68
|
+
async function uploadToGist(report) {
|
|
69
|
+
try {
|
|
70
|
+
const client = await github_1.GitHubClient.create();
|
|
71
|
+
const content = generateReport(report);
|
|
72
|
+
// Use Octokit directly from the client
|
|
73
|
+
const octokit = client.octokit;
|
|
74
|
+
const gist = await octokit.gists.create({
|
|
75
|
+
files: {
|
|
76
|
+
'csvibe-doctor-report.txt': { content },
|
|
77
|
+
},
|
|
78
|
+
description: `CSVibe Health Check Report - ${new Date(report.timestamp).toLocaleString()}`,
|
|
79
|
+
public: false,
|
|
80
|
+
});
|
|
81
|
+
return gist.data.html_url;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
throw new Error(`Failed to upload report to gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get icon for check status
|
|
89
|
+
*/
|
|
90
|
+
function getCheckIcon(status) {
|
|
91
|
+
switch (status) {
|
|
92
|
+
case 'pass':
|
|
93
|
+
return '✓';
|
|
94
|
+
case 'warn':
|
|
95
|
+
return '⚠';
|
|
96
|
+
case 'fail':
|
|
97
|
+
return '✗';
|
|
98
|
+
default:
|
|
99
|
+
return '?';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get color function for check status
|
|
104
|
+
*/
|
|
105
|
+
function getCheckColor(status) {
|
|
106
|
+
switch (status) {
|
|
107
|
+
case 'pass':
|
|
108
|
+
return chalk_1.default.green;
|
|
109
|
+
case 'warn':
|
|
110
|
+
return chalk_1.default.yellow;
|
|
111
|
+
case 'fail':
|
|
112
|
+
return chalk_1.default.red;
|
|
113
|
+
default:
|
|
114
|
+
return chalk_1.default.white;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=report-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-generator.js","sourceRoot":"","sources":["../../../src/domains/health-checks/report-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health check types and interfaces
|
|
3
|
+
*/
|
|
4
|
+
export type CheckStatus = 'pass' | 'warn' | 'fail';
|
|
5
|
+
export interface Check {
|
|
6
|
+
name: string;
|
|
7
|
+
status: CheckStatus;
|
|
8
|
+
message: string;
|
|
9
|
+
fixable: boolean;
|
|
10
|
+
fix?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CheckResult {
|
|
14
|
+
category: string;
|
|
15
|
+
checks: Check[];
|
|
16
|
+
passed: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface HealthCheckReport {
|
|
19
|
+
results: CheckResult[];
|
|
20
|
+
passed: boolean;
|
|
21
|
+
fixable: number;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
}
|
|
24
|
+
export interface FixResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
message: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface DoctorOptions {
|
|
30
|
+
fix?: boolean;
|
|
31
|
+
report?: boolean;
|
|
32
|
+
json?: boolean;
|
|
33
|
+
checkOnly?: boolean;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domains/health-checks/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/domains/health-checks/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/index.js
CHANGED
|
@@ -42,6 +42,39 @@ program
|
|
|
42
42
|
.action((0, errors_1.withErrorHandling)(async (options) => {
|
|
43
43
|
await (0, commands_1.initCommand)();
|
|
44
44
|
}));
|
|
45
|
+
/**
|
|
46
|
+
* Doctor command
|
|
47
|
+
*/
|
|
48
|
+
program
|
|
49
|
+
.command('doctor')
|
|
50
|
+
.description('Run health checks and diagnostics')
|
|
51
|
+
.option('--fix', 'Auto-fix fixable issues')
|
|
52
|
+
.option('--report', 'Upload report to GitHub Gist')
|
|
53
|
+
.option('--json', 'Output JSON format')
|
|
54
|
+
.option('--check-only', 'CI mode (exit 1 on failures)')
|
|
55
|
+
.action((0, errors_1.withErrorHandling)(async (options) => {
|
|
56
|
+
await (0, commands_1.doctorCommand)(options);
|
|
57
|
+
}));
|
|
58
|
+
/**
|
|
59
|
+
* Scout command (Story 4)
|
|
60
|
+
*/
|
|
61
|
+
program
|
|
62
|
+
.command('scout')
|
|
63
|
+
.description('Analyze project structure and gather context')
|
|
64
|
+
.option('-o, --output <path>', 'Output path for context JSON')
|
|
65
|
+
.action((0, errors_1.withErrorHandling)(async (options) => {
|
|
66
|
+
await (0, commands_1.scoutCommand)(options);
|
|
67
|
+
}));
|
|
68
|
+
/**
|
|
69
|
+
* Brainstorm command (Story 5)
|
|
70
|
+
*/
|
|
71
|
+
program
|
|
72
|
+
.command('brainstorm')
|
|
73
|
+
.description('Generate solution approaches with trade-off analysis')
|
|
74
|
+
.option('-o, --output <path>', 'Output path for approaches JSON')
|
|
75
|
+
.action((0, errors_1.withErrorHandling)(async (options) => {
|
|
76
|
+
await (0, commands_1.brainstormCommand)(options);
|
|
77
|
+
}));
|
|
45
78
|
// Default action (no subcommand)
|
|
46
79
|
program.action(() => {
|
|
47
80
|
(0, commands_1.helpCommand)();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;AAEH,yCAAoC;AACpC,yCAAkI;AAClI,mDAAyD;AACzD,2CAAgE;AAEhE,2CAA2C;AAC3C,IAAI,CAAC;IACH,IAAA,gCAAmB,GAAE,CAAC;AACxB,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,mBAAmB;AACnB,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,IAAA,qBAAU,GAAE,EAAE,eAAe,EAAE,wBAAwB,CAAC;KAChE,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;AAExD,oBAAoB;AAEpB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,sBAAW,CAAC,CAAC;AAEvB;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,sBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;KAC1C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACtC,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,CAAC;KAC7D,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC,CAAC;AAEN;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAChE,MAAM,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC1C,MAAM,IAAA,4BAAiB,EAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC,CAAC;AAEN,iCAAiC;AACjC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,IAAA,sBAAW,GAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,oBAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approaches validation utilities
|
|
3
|
+
* Validates approaches.json schema and content from brainstorm phase
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Approach interface
|
|
7
|
+
*/
|
|
8
|
+
export interface Approach {
|
|
9
|
+
name: string;
|
|
10
|
+
strategy: string;
|
|
11
|
+
technologies: string[];
|
|
12
|
+
pros: string[];
|
|
13
|
+
cons: string[];
|
|
14
|
+
effort: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Brainstorm context interface
|
|
18
|
+
*/
|
|
19
|
+
export interface BrainstormContext {
|
|
20
|
+
requirement: string;
|
|
21
|
+
approaches: Approach[];
|
|
22
|
+
recommendation: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validate individual approach structure
|
|
26
|
+
*
|
|
27
|
+
* @param approach - Approach object to validate
|
|
28
|
+
* @param index - Approach index for error messages
|
|
29
|
+
* @throws Error if approach structure is invalid
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateApproach(approach: unknown, index: number): Approach;
|
|
32
|
+
/**
|
|
33
|
+
* Validate approaches.json schema
|
|
34
|
+
*
|
|
35
|
+
* @param data - Unknown data to validate
|
|
36
|
+
* @returns Validated BrainstormContext
|
|
37
|
+
* @throws Error if schema is invalid
|
|
38
|
+
*/
|
|
39
|
+
export declare function validateApproachesSchema(data: unknown): BrainstormContext;
|
|
40
|
+
//# sourceMappingURL=approaches-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approaches-validator.d.ts","sourceRoot":"","sources":["../../src/utils/approaches-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAyD3E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAwCzE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Approaches validation utilities
|
|
4
|
+
* Validates approaches.json schema and content from brainstorm phase
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validateApproach = validateApproach;
|
|
8
|
+
exports.validateApproachesSchema = validateApproachesSchema;
|
|
9
|
+
/**
|
|
10
|
+
* Validate individual approach structure
|
|
11
|
+
*
|
|
12
|
+
* @param approach - Approach object to validate
|
|
13
|
+
* @param index - Approach index for error messages
|
|
14
|
+
* @throws Error if approach structure is invalid
|
|
15
|
+
*/
|
|
16
|
+
function validateApproach(approach, index) {
|
|
17
|
+
if (!approach || typeof approach !== 'object') {
|
|
18
|
+
throw new Error(`Approach ${index + 1}: Must be an object`);
|
|
19
|
+
}
|
|
20
|
+
const app = approach;
|
|
21
|
+
// Validate name
|
|
22
|
+
if (!app.name || typeof app.name !== 'string' || app.name.trim().length === 0) {
|
|
23
|
+
throw new Error(`Approach ${index + 1}: Missing or invalid 'name' field`);
|
|
24
|
+
}
|
|
25
|
+
// Validate strategy
|
|
26
|
+
if (!app.strategy || typeof app.strategy !== 'string' || app.strategy.trim().length === 0) {
|
|
27
|
+
throw new Error(`Approach ${index + 1}: Missing or invalid 'strategy' field`);
|
|
28
|
+
}
|
|
29
|
+
// Validate technologies array
|
|
30
|
+
if (!Array.isArray(app.technologies) || app.technologies.length === 0) {
|
|
31
|
+
throw new Error(`Approach ${index + 1}: 'technologies' must be a non-empty array`);
|
|
32
|
+
}
|
|
33
|
+
if (!app.technologies.every((tech) => typeof tech === 'string' && tech.trim().length > 0)) {
|
|
34
|
+
throw new Error(`Approach ${index + 1}: All technologies must be non-empty strings`);
|
|
35
|
+
}
|
|
36
|
+
// Validate pros array
|
|
37
|
+
if (!Array.isArray(app.pros) || app.pros.length === 0) {
|
|
38
|
+
throw new Error(`Approach ${index + 1}: 'pros' must be a non-empty array`);
|
|
39
|
+
}
|
|
40
|
+
if (!app.pros.every((pro) => typeof pro === 'string' && pro.trim().length > 0)) {
|
|
41
|
+
throw new Error(`Approach ${index + 1}: All pros must be non-empty strings`);
|
|
42
|
+
}
|
|
43
|
+
// Validate cons array
|
|
44
|
+
if (!Array.isArray(app.cons) || app.cons.length === 0) {
|
|
45
|
+
throw new Error(`Approach ${index + 1}: 'cons' must be a non-empty array`);
|
|
46
|
+
}
|
|
47
|
+
if (!app.cons.every((con) => typeof con === 'string' && con.trim().length > 0)) {
|
|
48
|
+
throw new Error(`Approach ${index + 1}: All cons must be non-empty strings`);
|
|
49
|
+
}
|
|
50
|
+
// Validate effort
|
|
51
|
+
if (!app.effort || typeof app.effort !== 'string' || app.effort.trim().length === 0) {
|
|
52
|
+
throw new Error(`Approach ${index + 1}: Missing or invalid 'effort' field`);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
name: app.name,
|
|
56
|
+
strategy: app.strategy,
|
|
57
|
+
technologies: app.technologies,
|
|
58
|
+
pros: app.pros,
|
|
59
|
+
cons: app.cons,
|
|
60
|
+
effort: app.effort
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate approaches.json schema
|
|
65
|
+
*
|
|
66
|
+
* @param data - Unknown data to validate
|
|
67
|
+
* @returns Validated BrainstormContext
|
|
68
|
+
* @throws Error if schema is invalid
|
|
69
|
+
*/
|
|
70
|
+
function validateApproachesSchema(data) {
|
|
71
|
+
if (!data || typeof data !== 'object') {
|
|
72
|
+
throw new Error('Invalid approaches data: Must be an object');
|
|
73
|
+
}
|
|
74
|
+
const context = data;
|
|
75
|
+
// Validate requirement
|
|
76
|
+
if (!context.requirement || typeof context.requirement !== 'string' || context.requirement.trim().length === 0) {
|
|
77
|
+
throw new Error('Missing or invalid \'requirement\' field');
|
|
78
|
+
}
|
|
79
|
+
// Validate approaches array
|
|
80
|
+
if (!Array.isArray(context.approaches)) {
|
|
81
|
+
throw new Error('Missing or invalid \'approaches\' field: Must be an array');
|
|
82
|
+
}
|
|
83
|
+
if (context.approaches.length === 0) {
|
|
84
|
+
throw new Error('\'approaches\' array cannot be empty');
|
|
85
|
+
}
|
|
86
|
+
if (context.approaches.length < 2 || context.approaches.length > 3) {
|
|
87
|
+
throw new Error('Must have 2-3 approaches (got ' + context.approaches.length + ')');
|
|
88
|
+
}
|
|
89
|
+
// Validate each approach
|
|
90
|
+
const validatedApproaches = context.approaches.map((approach, index) => validateApproach(approach, index));
|
|
91
|
+
// Validate recommendation
|
|
92
|
+
if (!context.recommendation || typeof context.recommendation !== 'string' || context.recommendation.trim().length === 0) {
|
|
93
|
+
throw new Error('Missing or invalid \'recommendation\' field');
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
requirement: context.requirement,
|
|
97
|
+
approaches: validatedApproaches,
|
|
98
|
+
recommendation: context.recommendation
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=approaches-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approaches-validator.js","sourceRoot":"","sources":["../../src/utils/approaches-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency analysis utilities
|
|
3
|
+
* Extracts dependencies from manifest files and infers tech stack
|
|
4
|
+
*/
|
|
5
|
+
import { ProjectType } from './project-detector';
|
|
6
|
+
/**
|
|
7
|
+
* Extract dependencies from project manifest files
|
|
8
|
+
*
|
|
9
|
+
* @param projectRoot - Root directory of the project
|
|
10
|
+
* @param projectType - Detected project type
|
|
11
|
+
* @returns Record of dependency names to versions
|
|
12
|
+
*/
|
|
13
|
+
export declare function analyzeDependencies(projectRoot: string, projectType: ProjectType): Promise<Record<string, string>>;
|
|
14
|
+
/**
|
|
15
|
+
* Infer tech stack from dependencies
|
|
16
|
+
* Uses pattern matching on dependency names to identify frameworks and tools
|
|
17
|
+
*
|
|
18
|
+
* @param dependencies - Dependency map from analyzeDependencies
|
|
19
|
+
* @param projectType - Detected project type
|
|
20
|
+
* @returns Array of detected technologies
|
|
21
|
+
*/
|
|
22
|
+
export declare function inferTechStack(dependencies: Record<string, string>, projectType: ProjectType): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Detect build tool from lock files
|
|
25
|
+
*
|
|
26
|
+
* @param projectRoot - Root directory of the project
|
|
27
|
+
* @param projectType - Detected project type
|
|
28
|
+
* @returns Detected build tool name
|
|
29
|
+
*/
|
|
30
|
+
export declare function detectBuildTool(projectRoot: string, projectType: ProjectType): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=dependency-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAYjC;AAoED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,WAAW,GACvB,MAAM,EAAE,CAyDV;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|