@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,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Health check orchestrator
|
|
4
|
+
* Runs all health checks and aggregates results
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.runHealthChecks = runHealthChecks;
|
|
8
|
+
const system_checker_1 = require("./checkers/system-checker");
|
|
9
|
+
const auth_checker_1 = require("./checkers/auth-checker");
|
|
10
|
+
const project_checker_1 = require("./checkers/project-checker");
|
|
11
|
+
const deps_checker_1 = require("./checkers/deps-checker");
|
|
12
|
+
/**
|
|
13
|
+
* Run all health checks
|
|
14
|
+
*/
|
|
15
|
+
async function runHealthChecks() {
|
|
16
|
+
const results = [];
|
|
17
|
+
// Run checks sequentially to avoid resource conflicts
|
|
18
|
+
results.push(await (0, system_checker_1.checkSystem)());
|
|
19
|
+
results.push(await (0, auth_checker_1.checkAuth)());
|
|
20
|
+
results.push(await (0, project_checker_1.checkProject)());
|
|
21
|
+
results.push(await (0, deps_checker_1.checkDependencies)());
|
|
22
|
+
const passed = results.every((r) => r.passed);
|
|
23
|
+
const fixableChecks = results.flatMap((r) => r.checks.filter((c) => c.fixable));
|
|
24
|
+
return {
|
|
25
|
+
results,
|
|
26
|
+
passed,
|
|
27
|
+
fixable: fixableChecks.length,
|
|
28
|
+
timestamp: new Date().toISOString(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=check-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../../src/domains/health-checks/check-runner.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,0CAkBC;AA3BD,8DAAwD;AACxD,0DAAoD;AACpD,gEAA0D;AAC1D,0DAA4D;AAG5D;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,sDAAsD;IACtD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,4BAAW,GAAE,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,wBAAS,GAAE,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,8BAAY,GAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,gCAAiB,GAAE,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhF,OAAO;QACL,OAAO;QACP,MAAM;QACN,OAAO,EAAE,aAAa,CAAC,MAAM;QAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication health checks
|
|
3
|
+
* Checks: GitHub authentication, token validity, repo access
|
|
4
|
+
*/
|
|
5
|
+
import type { CheckResult } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Run all authentication checks
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkAuth(): Promise<CheckResult>;
|
|
10
|
+
//# sourceMappingURL=auth-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-checker.d.ts","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/auth-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,CAWtD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication health checks
|
|
4
|
+
* Checks: GitHub authentication, token validity, repo access
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.checkAuth = checkAuth;
|
|
8
|
+
const github_1 = require("../../github");
|
|
9
|
+
const constants_1 = require("../../../config/constants");
|
|
10
|
+
/**
|
|
11
|
+
* Run all authentication checks
|
|
12
|
+
*/
|
|
13
|
+
async function checkAuth() {
|
|
14
|
+
const checks = [];
|
|
15
|
+
checks.push(await checkGitHubAuth());
|
|
16
|
+
checks.push(await checkRepoAccess());
|
|
17
|
+
return {
|
|
18
|
+
category: 'Authentication',
|
|
19
|
+
checks,
|
|
20
|
+
passed: checks.every((c) => c.status === 'pass'),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check GitHub authentication
|
|
25
|
+
*/
|
|
26
|
+
async function checkGitHubAuth() {
|
|
27
|
+
try {
|
|
28
|
+
const { token, method } = await (0, github_1.getGitHubToken)();
|
|
29
|
+
if (!token || token.length === 0) {
|
|
30
|
+
return {
|
|
31
|
+
name: 'GitHub Authentication',
|
|
32
|
+
status: 'fail',
|
|
33
|
+
message: 'No GitHub token found',
|
|
34
|
+
fixable: true,
|
|
35
|
+
fix: 'Run "gh auth login" or set GITHUB_TOKEN environment variable',
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
name: 'GitHub Authentication',
|
|
40
|
+
status: 'pass',
|
|
41
|
+
message: `Authenticated via ${method}`,
|
|
42
|
+
fixable: false,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
name: 'GitHub Authentication',
|
|
48
|
+
status: 'fail',
|
|
49
|
+
message: 'GitHub authentication failed',
|
|
50
|
+
fixable: true,
|
|
51
|
+
fix: 'Run "gh auth login" or set GITHUB_TOKEN environment variable',
|
|
52
|
+
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check repository access
|
|
58
|
+
*/
|
|
59
|
+
async function checkRepoAccess() {
|
|
60
|
+
try {
|
|
61
|
+
const client = await github_1.GitHubClient.create();
|
|
62
|
+
const [owner, repo] = constants_1.CONSTANTS.REPO_FULL.split('/');
|
|
63
|
+
const hasAccess = await client.hasRepoAccess(owner, repo);
|
|
64
|
+
if (!hasAccess) {
|
|
65
|
+
return {
|
|
66
|
+
name: 'Repository Access',
|
|
67
|
+
status: 'fail',
|
|
68
|
+
message: `Cannot access ${constants_1.CONSTANTS.REPO_FULL}`,
|
|
69
|
+
fixable: false,
|
|
70
|
+
fix: 'Contact repository administrator for access',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
name: 'Repository Access',
|
|
75
|
+
status: 'pass',
|
|
76
|
+
message: `Access to ${constants_1.CONSTANTS.REPO_FULL} verified`,
|
|
77
|
+
fixable: false,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return {
|
|
82
|
+
name: 'Repository Access',
|
|
83
|
+
status: 'fail',
|
|
84
|
+
message: 'Failed to check repository access',
|
|
85
|
+
fixable: false,
|
|
86
|
+
error: error instanceof Error ? error.message : String(error),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=auth-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-checker.js","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/auth-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,8BAWC;AAlBD,yCAA4D;AAC5D,yDAAsD;AAGtD;;GAEG;AACI,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAErC,OAAO;QACL,QAAQ,EAAE,gBAAgB;QAC1B,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,uBAAc,GAAE,CAAC;QAEjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,8DAA8D;aACpE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,qBAAqB,MAAM,EAAE;YACtC,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,8DAA8D;YACnE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,qBAAY,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,qBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,iBAAiB,qBAAS,CAAC,SAAS,EAAE;gBAC/C,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,6CAA6C;aACnD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa,qBAAS,CAAC,SAAS,WAAW;YACpD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependencies health checks
|
|
3
|
+
* Checks: node_modules, package.json, lockfile consistency
|
|
4
|
+
*/
|
|
5
|
+
import type { CheckResult } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Run all dependency checks
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkDependencies(): Promise<CheckResult>;
|
|
10
|
+
//# sourceMappingURL=deps-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps-checker.d.ts","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/deps-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAY9D"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependencies health checks
|
|
4
|
+
* Checks: node_modules, package.json, lockfile consistency
|
|
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.checkDependencies = checkDependencies;
|
|
11
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
/**
|
|
15
|
+
* Run all dependency checks
|
|
16
|
+
*/
|
|
17
|
+
async function checkDependencies() {
|
|
18
|
+
const checks = [];
|
|
19
|
+
checks.push(await checkNodeModules());
|
|
20
|
+
checks.push(await checkPackageJson());
|
|
21
|
+
checks.push(await checkLockfile());
|
|
22
|
+
return {
|
|
23
|
+
category: 'Dependencies',
|
|
24
|
+
checks,
|
|
25
|
+
passed: checks.every((c) => c.status === 'pass'),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check node_modules exists
|
|
30
|
+
*/
|
|
31
|
+
async function checkNodeModules() {
|
|
32
|
+
const nodeModulesPath = path_1.default.join(process.cwd(), 'node_modules');
|
|
33
|
+
if (!(await fs_extra_1.default.pathExists(nodeModulesPath))) {
|
|
34
|
+
return {
|
|
35
|
+
name: 'node_modules',
|
|
36
|
+
status: 'fail',
|
|
37
|
+
message: 'node_modules directory not found',
|
|
38
|
+
fixable: true,
|
|
39
|
+
fix: 'Run "npm install" to install dependencies',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
name: 'node_modules',
|
|
44
|
+
status: 'pass',
|
|
45
|
+
message: 'node_modules directory found',
|
|
46
|
+
fixable: false,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check package.json validity
|
|
51
|
+
*/
|
|
52
|
+
async function checkPackageJson() {
|
|
53
|
+
const packagePath = path_1.default.join(process.cwd(), 'package.json');
|
|
54
|
+
if (!(await fs_extra_1.default.pathExists(packagePath))) {
|
|
55
|
+
return {
|
|
56
|
+
name: 'package.json',
|
|
57
|
+
status: 'fail',
|
|
58
|
+
message: 'package.json not found',
|
|
59
|
+
fixable: false,
|
|
60
|
+
fix: 'Create package.json with "npm init"',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const content = await fs_extra_1.default.readFile(packagePath, 'utf-8');
|
|
65
|
+
const pkg = JSON.parse(content);
|
|
66
|
+
if (!pkg.name || !pkg.version) {
|
|
67
|
+
return {
|
|
68
|
+
name: 'package.json',
|
|
69
|
+
status: 'fail',
|
|
70
|
+
message: 'package.json missing required fields (name, version)',
|
|
71
|
+
fixable: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
name: 'package.json',
|
|
76
|
+
status: 'pass',
|
|
77
|
+
message: `${pkg.name}@${pkg.version}`,
|
|
78
|
+
fixable: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return {
|
|
83
|
+
name: 'package.json',
|
|
84
|
+
status: 'fail',
|
|
85
|
+
message: 'package.json is invalid JSON',
|
|
86
|
+
fixable: false,
|
|
87
|
+
error: error instanceof Error ? error.message : String(error),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check lockfile consistency
|
|
93
|
+
*/
|
|
94
|
+
async function checkLockfile() {
|
|
95
|
+
const lockfiles = [
|
|
96
|
+
{ name: 'package-lock.json', manager: 'npm' },
|
|
97
|
+
{ name: 'yarn.lock', manager: 'yarn' },
|
|
98
|
+
{ name: 'pnpm-lock.yaml', manager: 'pnpm' },
|
|
99
|
+
];
|
|
100
|
+
const found = [];
|
|
101
|
+
for (const lockfile of lockfiles) {
|
|
102
|
+
const lockPath = path_1.default.join(process.cwd(), lockfile.name);
|
|
103
|
+
if (await fs_extra_1.default.pathExists(lockPath)) {
|
|
104
|
+
found.push(lockfile);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (found.length === 0) {
|
|
108
|
+
return {
|
|
109
|
+
name: 'Lockfile',
|
|
110
|
+
status: 'warn',
|
|
111
|
+
message: 'No lockfile found (package-lock.json, yarn.lock, pnpm-lock.yaml)',
|
|
112
|
+
fixable: true,
|
|
113
|
+
fix: 'Run "npm install" to generate package-lock.json',
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (found.length > 1) {
|
|
117
|
+
return {
|
|
118
|
+
name: 'Lockfile',
|
|
119
|
+
status: 'warn',
|
|
120
|
+
message: `Multiple lockfiles found: ${found.map((f) => f.name).join(', ')}`,
|
|
121
|
+
fixable: false,
|
|
122
|
+
fix: 'Remove unused lockfiles to avoid conflicts',
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
// Check if lockfile is in sync with package.json
|
|
126
|
+
const lockfile = found[0];
|
|
127
|
+
try {
|
|
128
|
+
// Try to detect if lockfile is out of sync
|
|
129
|
+
const result = (0, child_process_1.execSync)(`${lockfile.manager} outdated --json || true`, {
|
|
130
|
+
encoding: 'utf-8',
|
|
131
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
name: 'Lockfile',
|
|
135
|
+
status: 'pass',
|
|
136
|
+
message: `${lockfile.name} (${lockfile.manager})`,
|
|
137
|
+
fixable: false,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
return {
|
|
142
|
+
name: 'Lockfile',
|
|
143
|
+
status: 'warn',
|
|
144
|
+
message: `${lockfile.name} may be out of sync`,
|
|
145
|
+
fixable: true,
|
|
146
|
+
fix: `Run "${lockfile.manager} install" to sync lockfile`,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=deps-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps-checker.js","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/deps-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project health checks
|
|
3
|
+
* Checks: CSVibe initialization, config validity, workspace structure
|
|
4
|
+
*/
|
|
5
|
+
import type { CheckResult } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Run all project checks
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkProject(): Promise<CheckResult>;
|
|
10
|
+
//# sourceMappingURL=project-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-checker.d.ts","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/project-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAYzD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Project health checks
|
|
4
|
+
* Checks: CSVibe initialization, config validity, workspace structure
|
|
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.checkProject = checkProject;
|
|
11
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
14
|
+
/**
|
|
15
|
+
* Run all project checks
|
|
16
|
+
*/
|
|
17
|
+
async function checkProject() {
|
|
18
|
+
const checks = [];
|
|
19
|
+
checks.push(await checkCSVibeInit());
|
|
20
|
+
checks.push(await checkConfigFile());
|
|
21
|
+
checks.push(await checkWorkspaceStructure());
|
|
22
|
+
return {
|
|
23
|
+
category: 'Project',
|
|
24
|
+
checks,
|
|
25
|
+
passed: checks.every((c) => c.status === 'pass'),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if CSVibe is initialized
|
|
30
|
+
*/
|
|
31
|
+
async function checkCSVibeInit() {
|
|
32
|
+
const csvibePath = path_1.default.join(process.cwd(), '.csvibe');
|
|
33
|
+
if (!(await fs_extra_1.default.pathExists(csvibePath))) {
|
|
34
|
+
return {
|
|
35
|
+
name: 'CSVibe Initialization',
|
|
36
|
+
status: 'fail',
|
|
37
|
+
message: '.csvibe directory not found',
|
|
38
|
+
fixable: true,
|
|
39
|
+
fix: 'Run "csvibe init" to initialize project',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
name: 'CSVibe Initialization',
|
|
44
|
+
status: 'pass',
|
|
45
|
+
message: '.csvibe directory found',
|
|
46
|
+
fixable: false,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check config.yml validity
|
|
51
|
+
*/
|
|
52
|
+
async function checkConfigFile() {
|
|
53
|
+
const configPath = path_1.default.join(process.cwd(), '.csvibe', 'config.yml');
|
|
54
|
+
if (!(await fs_extra_1.default.pathExists(configPath))) {
|
|
55
|
+
return {
|
|
56
|
+
name: 'Config File',
|
|
57
|
+
status: 'fail',
|
|
58
|
+
message: 'config.yml not found',
|
|
59
|
+
fixable: true,
|
|
60
|
+
fix: 'Run "csvibe init" to create config',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const content = await fs_extra_1.default.readFile(configPath, 'utf-8');
|
|
65
|
+
const config = yaml_1.default.parse(content);
|
|
66
|
+
// Validate required fields
|
|
67
|
+
const required = ['project', 'github', 'pipeline'];
|
|
68
|
+
const missing = required.filter((field) => !config[field]);
|
|
69
|
+
if (missing.length > 0) {
|
|
70
|
+
return {
|
|
71
|
+
name: 'Config File',
|
|
72
|
+
status: 'fail',
|
|
73
|
+
message: `Missing required fields: ${missing.join(', ')}`,
|
|
74
|
+
fixable: true,
|
|
75
|
+
fix: 'Run "csvibe init" to regenerate config',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
name: 'Config File',
|
|
80
|
+
status: 'pass',
|
|
81
|
+
message: 'config.yml is valid',
|
|
82
|
+
fixable: false,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return {
|
|
87
|
+
name: 'Config File',
|
|
88
|
+
status: 'fail',
|
|
89
|
+
message: 'config.yml is invalid',
|
|
90
|
+
fixable: true,
|
|
91
|
+
fix: 'Run "csvibe init" to regenerate config',
|
|
92
|
+
error: error instanceof Error ? error.message : String(error),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check workspace structure
|
|
98
|
+
*/
|
|
99
|
+
async function checkWorkspaceStructure() {
|
|
100
|
+
const requiredDirs = ['.github/workflows'];
|
|
101
|
+
const missing = [];
|
|
102
|
+
for (const dir of requiredDirs) {
|
|
103
|
+
const dirPath = path_1.default.join(process.cwd(), dir);
|
|
104
|
+
if (!(await fs_extra_1.default.pathExists(dirPath))) {
|
|
105
|
+
missing.push(dir);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (missing.length > 0) {
|
|
109
|
+
return {
|
|
110
|
+
name: 'Workspace Structure',
|
|
111
|
+
status: 'warn',
|
|
112
|
+
message: `Missing directories: ${missing.join(', ')}`,
|
|
113
|
+
fixable: true,
|
|
114
|
+
fix: 'Run "csvibe init" to setup workspace',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
name: 'Workspace Structure',
|
|
119
|
+
status: 'pass',
|
|
120
|
+
message: 'Workspace structure is valid',
|
|
121
|
+
fixable: false,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=project-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-checker.js","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/project-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System health checks
|
|
3
|
+
* Checks: Node.js version, GitHub CLI, package manager
|
|
4
|
+
*/
|
|
5
|
+
import type { CheckResult } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Run all system checks
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkSystem(): Promise<CheckResult>;
|
|
10
|
+
//# sourceMappingURL=system-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-checker.d.ts","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/system-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,UAAU,CAAC;AAEnD;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAaxD"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* System health checks
|
|
4
|
+
* Checks: Node.js version, GitHub CLI, package manager
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.checkSystem = checkSystem;
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
/**
|
|
10
|
+
* Run all system checks
|
|
11
|
+
*/
|
|
12
|
+
async function checkSystem() {
|
|
13
|
+
const checks = [];
|
|
14
|
+
checks.push(await checkNodeVersion());
|
|
15
|
+
checks.push(await checkGitHubCLI());
|
|
16
|
+
checks.push(await checkPackageManager());
|
|
17
|
+
checks.push(await checkGit());
|
|
18
|
+
return {
|
|
19
|
+
category: 'System',
|
|
20
|
+
checks,
|
|
21
|
+
passed: checks.every((c) => c.status === 'pass'),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check Node.js version (>= 16)
|
|
26
|
+
*/
|
|
27
|
+
async function checkNodeVersion() {
|
|
28
|
+
const version = process.version;
|
|
29
|
+
const major = parseInt(version.slice(1).split('.')[0]);
|
|
30
|
+
if (major >= 16) {
|
|
31
|
+
return {
|
|
32
|
+
name: 'Node.js Version',
|
|
33
|
+
status: 'pass',
|
|
34
|
+
message: `Node.js ${version}`,
|
|
35
|
+
fixable: false,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
name: 'Node.js Version',
|
|
40
|
+
status: 'fail',
|
|
41
|
+
message: `Node.js ${version} is too old (requires >= 16)`,
|
|
42
|
+
fixable: false,
|
|
43
|
+
fix: 'Upgrade Node.js to >= 16.0.0 from https://nodejs.org',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check GitHub CLI availability
|
|
48
|
+
*/
|
|
49
|
+
async function checkGitHubCLI() {
|
|
50
|
+
try {
|
|
51
|
+
const stdout = (0, child_process_1.execSync)('gh --version', {
|
|
52
|
+
encoding: 'utf-8',
|
|
53
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
54
|
+
});
|
|
55
|
+
const match = stdout.match(/gh version ([0-9.]+)/);
|
|
56
|
+
const version = match ? match[1] : 'unknown';
|
|
57
|
+
return {
|
|
58
|
+
name: 'GitHub CLI',
|
|
59
|
+
status: 'pass',
|
|
60
|
+
message: `GitHub CLI ${version} installed`,
|
|
61
|
+
fixable: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return {
|
|
66
|
+
name: 'GitHub CLI',
|
|
67
|
+
status: 'warn',
|
|
68
|
+
message: 'GitHub CLI not installed (optional)',
|
|
69
|
+
fixable: true,
|
|
70
|
+
fix: 'Install from https://cli.github.com',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check package manager (npm/yarn/pnpm)
|
|
76
|
+
*/
|
|
77
|
+
async function checkPackageManager() {
|
|
78
|
+
const managers = [
|
|
79
|
+
{ name: 'npm', cmd: 'npm --version' },
|
|
80
|
+
{ name: 'yarn', cmd: 'yarn --version' },
|
|
81
|
+
{ name: 'pnpm', cmd: 'pnpm --version' },
|
|
82
|
+
];
|
|
83
|
+
const available = [];
|
|
84
|
+
for (const manager of managers) {
|
|
85
|
+
try {
|
|
86
|
+
(0, child_process_1.execSync)(manager.cmd, { stdio: 'pipe' });
|
|
87
|
+
available.push(manager.name);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Not available
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (available.length === 0) {
|
|
94
|
+
return {
|
|
95
|
+
name: 'Package Manager',
|
|
96
|
+
status: 'fail',
|
|
97
|
+
message: 'No package manager found',
|
|
98
|
+
fixable: false,
|
|
99
|
+
fix: 'Install Node.js from https://nodejs.org (includes npm)',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
name: 'Package Manager',
|
|
104
|
+
status: 'pass',
|
|
105
|
+
message: `Available: ${available.join(', ')}`,
|
|
106
|
+
fixable: false,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check Git installation
|
|
111
|
+
*/
|
|
112
|
+
async function checkGit() {
|
|
113
|
+
try {
|
|
114
|
+
const version = (0, child_process_1.execSync)('git --version', {
|
|
115
|
+
encoding: 'utf-8',
|
|
116
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
117
|
+
}).trim();
|
|
118
|
+
return {
|
|
119
|
+
name: 'Git',
|
|
120
|
+
status: 'pass',
|
|
121
|
+
message: version,
|
|
122
|
+
fixable: false,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
return {
|
|
127
|
+
name: 'Git',
|
|
128
|
+
status: 'fail',
|
|
129
|
+
message: 'Git not installed',
|
|
130
|
+
fixable: false,
|
|
131
|
+
fix: 'Install from https://git-scm.com',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=system-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-checker.js","sourceRoot":"","sources":["../../../../src/domains/health-checks/checkers/system-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,kCAaC;AAnBD,iDAAyC;AAGzC;;GAEG;AACI,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;IAE9B,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,WAAW,OAAO,EAAE;YAC7B,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,WAAW,OAAO,8BAA8B;QACzD,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,sDAAsD;KAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,cAAc,EAAE;YACtC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7C,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,cAAc,OAAO,YAAY;YAC1C,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,qCAAqC;SAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG;QACf,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE;QACrC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE;QACvC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE;KACxC,CAAC;IAEF,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0BAA0B;YACnC,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,wDAAwD;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC7C,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC,eAAe,EAAE;YACxC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,OAAO;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,kCAAkC;SACxC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health checks domain facade
|
|
3
|
+
* Public API for health check operations
|
|
4
|
+
*/
|
|
5
|
+
export { runHealthChecks } from './check-runner';
|
|
6
|
+
export { autoFix, autoFixIssues } from './auto-healer';
|
|
7
|
+
export { generateReport, generateJsonReport, uploadToGist } from './report-generator';
|
|
8
|
+
export type { Check, CheckResult, CheckStatus, HealthCheckReport, FixResult, DoctorOptions, } from './types';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/health-checks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGtF,YAAY,EACV,KAAK,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,aAAa,GACd,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Health checks domain facade
|
|
4
|
+
* Public API for health check operations
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.uploadToGist = exports.generateJsonReport = exports.generateReport = exports.autoFixIssues = exports.autoFix = exports.runHealthChecks = void 0;
|
|
8
|
+
// Check runner
|
|
9
|
+
var check_runner_1 = require("./check-runner");
|
|
10
|
+
Object.defineProperty(exports, "runHealthChecks", { enumerable: true, get: function () { return check_runner_1.runHealthChecks; } });
|
|
11
|
+
// Auto-healer
|
|
12
|
+
var auto_healer_1 = require("./auto-healer");
|
|
13
|
+
Object.defineProperty(exports, "autoFix", { enumerable: true, get: function () { return auto_healer_1.autoFix; } });
|
|
14
|
+
Object.defineProperty(exports, "autoFixIssues", { enumerable: true, get: function () { return auto_healer_1.autoFixIssues; } });
|
|
15
|
+
// Report generation
|
|
16
|
+
var report_generator_1 = require("./report-generator");
|
|
17
|
+
Object.defineProperty(exports, "generateReport", { enumerable: true, get: function () { return report_generator_1.generateReport; } });
|
|
18
|
+
Object.defineProperty(exports, "generateJsonReport", { enumerable: true, get: function () { return report_generator_1.generateJsonReport; } });
|
|
19
|
+
Object.defineProperty(exports, "uploadToGist", { enumerable: true, get: function () { return report_generator_1.uploadToGist; } });
|
|
20
|
+
// Note: Individual checkers are NOT exported (internal implementation)
|
|
21
|
+
//# sourceMappingURL=index.js.map
|