@vyuhlabs/dxkit 2.4.7 → 2.5.0
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/CHANGELOG.md +456 -30
- package/README.md +360 -439
- package/dist/analyzers/bom/gather.d.ts +3 -3
- package/dist/analyzers/bom/gather.js +3 -3
- package/dist/analyzers/bom/index.js +2 -2
- package/dist/analyzers/bom/index.js.map +1 -1
- package/dist/analyzers/dashboard/index.d.ts.map +1 -1
- package/dist/analyzers/dashboard/index.js +4 -3
- package/dist/analyzers/dashboard/index.js.map +1 -1
- package/dist/analyzers/developer/index.d.ts.map +1 -1
- package/dist/analyzers/developer/index.js +2 -1
- package/dist/analyzers/developer/index.js.map +1 -1
- package/dist/analyzers/dispatcher.d.ts +15 -0
- package/dist/analyzers/dispatcher.d.ts.map +1 -1
- package/dist/analyzers/dispatcher.js +42 -6
- package/dist/analyzers/dispatcher.js.map +1 -1
- package/dist/analyzers/health.d.ts.map +1 -1
- package/dist/analyzers/health.js +11 -1
- package/dist/analyzers/health.js.map +1 -1
- package/dist/analyzers/licenses/gather.d.ts +1 -1
- package/dist/analyzers/licenses/gather.d.ts.map +1 -1
- package/dist/analyzers/licenses/gather.js +18 -2
- package/dist/analyzers/licenses/gather.js.map +1 -1
- package/dist/analyzers/quality/index.d.ts.map +1 -1
- package/dist/analyzers/quality/index.js +10 -2
- package/dist/analyzers/quality/index.js.map +1 -1
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +8 -48
- package/dist/analyzers/security/aggregator.js.map +1 -1
- package/dist/analyzers/security/gather.d.ts +4 -3
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +23 -5
- package/dist/analyzers/security/gather.js.map +1 -1
- package/dist/analyzers/security/index.d.ts +1 -1
- package/dist/analyzers/security/index.js +2 -2
- package/dist/analyzers/security/index.js.map +1 -1
- package/dist/analyzers/tools/autogen-header.js +1 -1
- package/dist/analyzers/tools/cloc.js +3 -3
- package/dist/analyzers/tools/cloc.js.map +1 -1
- package/dist/analyzers/tools/deadline.d.ts +67 -0
- package/dist/analyzers/tools/deadline.d.ts.map +1 -0
- package/dist/analyzers/tools/deadline.js +81 -0
- package/dist/analyzers/tools/deadline.js.map +1 -0
- package/dist/analyzers/tools/exclusions.d.ts +6 -6
- package/dist/analyzers/tools/exclusions.js +6 -6
- package/dist/analyzers/tools/fingerprint.d.ts +91 -26
- package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
- package/dist/analyzers/tools/fingerprint.js +111 -22
- package/dist/analyzers/tools/fingerprint.js.map +1 -1
- package/dist/analyzers/tools/generic.d.ts.map +1 -1
- package/dist/analyzers/tools/generic.js +7 -2
- package/dist/analyzers/tools/generic.js.map +1 -1
- package/dist/analyzers/tools/gitleaks.d.ts +24 -1
- package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
- package/dist/analyzers/tools/gitleaks.js +21 -12
- package/dist/analyzers/tools/gitleaks.js.map +1 -1
- package/dist/analyzers/tools/graphify.js +1 -1
- package/dist/analyzers/tools/jscpd.js +1 -1
- package/dist/analyzers/tools/jscpd.js.map +1 -1
- package/dist/analyzers/tools/lint-label.d.ts +29 -0
- package/dist/analyzers/tools/lint-label.d.ts.map +1 -0
- package/dist/analyzers/tools/lint-label.js +23 -0
- package/dist/analyzers/tools/lint-label.js.map +1 -0
- package/dist/analyzers/tools/nuget-package-reference.d.ts +6 -4
- package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -1
- package/dist/analyzers/tools/nuget-package-reference.js +7 -5
- package/dist/analyzers/tools/nuget-package-reference.js.map +1 -1
- package/dist/analyzers/tools/report-date.d.ts +17 -0
- package/dist/analyzers/tools/report-date.d.ts.map +1 -0
- package/dist/analyzers/tools/report-date.js +26 -0
- package/dist/analyzers/tools/report-date.js.map +1 -0
- package/dist/analyzers/tools/runner.js +3 -3
- package/dist/analyzers/tools/runner.js.map +1 -1
- package/dist/analyzers/tools/vendored-advisor.js +1 -1
- package/dist/analyzers/tools/walk-paths.d.ts +1 -1
- package/dist/analyzers/tools/walk-paths.js +1 -1
- package/dist/analyzers/tools/walk-source-files.js +1 -1
- package/dist/analyzers/types.d.ts +6 -4
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/baseline/baseline-file.d.ts +104 -0
- package/dist/baseline/baseline-file.d.ts.map +1 -0
- package/dist/baseline/baseline-file.js +110 -0
- package/dist/baseline/baseline-file.js.map +1 -0
- package/dist/baseline/check-renderers.d.ts +108 -0
- package/dist/baseline/check-renderers.d.ts.map +1 -0
- package/dist/baseline/check-renderers.js +379 -0
- package/dist/baseline/check-renderers.js.map +1 -0
- package/dist/baseline/check.d.ts +127 -0
- package/dist/baseline/check.d.ts.map +1 -0
- package/dist/baseline/check.js +462 -0
- package/dist/baseline/check.js.map +1 -0
- package/dist/baseline/content-hash.d.ts +83 -0
- package/dist/baseline/content-hash.d.ts.map +1 -0
- package/dist/baseline/content-hash.js +131 -0
- package/dist/baseline/content-hash.js.map +1 -0
- package/dist/baseline/create.d.ts +96 -0
- package/dist/baseline/create.d.ts.map +1 -0
- package/dist/baseline/create.js +339 -0
- package/dist/baseline/create.js.map +1 -0
- package/dist/baseline/entry-to-located.d.ts +35 -0
- package/dist/baseline/entry-to-located.d.ts.map +1 -0
- package/dist/baseline/entry-to-located.js +72 -0
- package/dist/baseline/entry-to-located.js.map +1 -0
- package/dist/baseline/finding-identity.d.ts +47 -0
- package/dist/baseline/finding-identity.d.ts.map +1 -0
- package/dist/baseline/finding-identity.js +292 -0
- package/dist/baseline/finding-identity.js.map +1 -0
- package/dist/baseline/git-aware-match.d.ts +146 -0
- package/dist/baseline/git-aware-match.d.ts.map +1 -0
- package/dist/baseline/git-aware-match.js +439 -0
- package/dist/baseline/git-aware-match.js.map +1 -0
- package/dist/baseline/policy.d.ts +171 -0
- package/dist/baseline/policy.d.ts.map +1 -0
- package/dist/baseline/policy.js +206 -0
- package/dist/baseline/policy.js.map +1 -0
- package/dist/baseline/producers/health.d.ts +30 -0
- package/dist/baseline/producers/health.d.ts.map +1 -0
- package/dist/baseline/producers/health.js +42 -0
- package/dist/baseline/producers/health.js.map +1 -0
- package/dist/baseline/producers/index.d.ts +164 -0
- package/dist/baseline/producers/index.d.ts.map +1 -0
- package/dist/baseline/producers/index.js +200 -0
- package/dist/baseline/producers/index.js.map +1 -0
- package/dist/baseline/producers/licenses.d.ts +23 -0
- package/dist/baseline/producers/licenses.d.ts.map +1 -0
- package/dist/baseline/producers/licenses.js +46 -0
- package/dist/baseline/producers/licenses.js.map +1 -0
- package/dist/baseline/producers/quality.d.ts +39 -0
- package/dist/baseline/producers/quality.d.ts.map +1 -0
- package/dist/baseline/producers/quality.js +84 -0
- package/dist/baseline/producers/quality.js.map +1 -0
- package/dist/baseline/producers/secret-hmac.d.ts +45 -0
- package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
- package/dist/baseline/producers/secret-hmac.js +70 -0
- package/dist/baseline/producers/secret-hmac.js.map +1 -0
- package/dist/baseline/producers/security.d.ts +59 -0
- package/dist/baseline/producers/security.d.ts.map +1 -0
- package/dist/baseline/producers/security.js +135 -0
- package/dist/baseline/producers/security.js.map +1 -0
- package/dist/baseline/producers/tests.d.ts +36 -0
- package/dist/baseline/producers/tests.d.ts.map +1 -0
- package/dist/baseline/producers/tests.js +69 -0
- package/dist/baseline/producers/tests.js.map +1 -0
- package/dist/baseline/salt.d.ts +45 -0
- package/dist/baseline/salt.d.ts.map +1 -0
- package/dist/baseline/salt.js +113 -0
- package/dist/baseline/salt.js.map +1 -0
- package/dist/baseline/show.d.ts +79 -0
- package/dist/baseline/show.d.ts.map +1 -0
- package/dist/baseline/show.js +233 -0
- package/dist/baseline/show.js.map +1 -0
- package/dist/baseline/types.d.ts +482 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +53 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +395 -92
- package/dist/cli.js.map +1 -1
- package/dist/codebase-scanner.d.ts.map +1 -1
- package/dist/codebase-scanner.js +0 -1
- package/dist/codebase-scanner.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -4
- package/dist/constants.js.map +1 -1
- package/dist/detect.js +3 -3
- package/dist/detect.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +22 -25
- package/dist/doctor.js.map +1 -1
- package/dist/fail-on.d.ts +84 -0
- package/dist/fail-on.d.ts.map +1 -0
- package/dist/fail-on.js +128 -0
- package/dist/fail-on.js.map +1 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +2 -141
- package/dist/generator.js.map +1 -1
- package/dist/languages/capabilities/provider.d.ts +4 -4
- package/dist/languages/capabilities/types.d.ts +1 -1
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +15 -24
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +0 -15
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +4 -3
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +3 -2
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +0 -6
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +0 -11
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +0 -15
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +0 -6
- package/dist/languages/ruby.js.map +1 -1
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +0 -4
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +9 -35
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +26 -4
- package/dist/languages/typescript.js.map +1 -1
- package/dist/lib.d.ts +2 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -6
- package/dist/lib.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +0 -10
- package/dist/prompts.js.map +1 -1
- package/dist/report-schema.d.ts +42 -0
- package/dist/report-schema.d.ts.map +1 -0
- package/dist/report-schema.js +54 -0
- package/dist/report-schema.js.map +1 -0
- package/dist/ship-installers.d.ts +106 -0
- package/dist/ship-installers.d.ts.map +1 -0
- package/dist/ship-installers.js +415 -0
- package/dist/ship-installers.js.map +1 -0
- package/dist/types.d.ts +0 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +0 -4
- package/dist/update.js.map +1 -1
- package/package.json +17 -11
- package/templates/.claude/agents/onboarding.md +5 -4
- package/templates/.claude/agents-available/codebase-explorer.md +1 -1
- package/templates/.claude/agents-available/debugger.md +2 -2
- package/templates/.claude/agents-available/health-auditor.md +2 -2
- package/templates/.claude/commands/doctor.md +20 -12
- package/templates/.claude/skills/build/SKILL.md.template +22 -30
- package/templates/.claude/skills/deploy/SKILL.md.template +5 -25
- package/templates/.claude/skills/doctor/SKILL.md +24 -47
- package/templates/.claude/skills/gcloud/SKILL.md +5 -5
- package/templates/.claude/skills/learned/SKILL.md +1 -1
- package/templates/.claude/skills/pulumi/SKILL.md +2 -2
- package/templates/.claude/skills/quality/SKILL.md.template +4 -23
- package/templates/.claude/skills/review/SKILL.md.template +4 -3
- package/templates/.claude/skills/scaffold/SKILL.md.template +5 -15
- package/templates/.claude/skills/secrets/SKILL.md +20 -21
- package/templates/.claude/skills/session/SKILL.md +20 -31
- package/templates/.claude/skills/test/SKILL.md.template +1 -7
- package/templates/.devcontainer/devcontainer.json +81 -0
- package/templates/.devcontainer/install-agent-clis.sh +42 -0
- package/templates/.devcontainer/post-create.sh +67 -0
- package/templates/.githooks/pre-commit +55 -0
- package/templates/.githooks/pre-push +63 -0
- package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
- package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
- package/templates/CLAUDE.md.template +62 -196
- package/dist/project-yaml.d.ts +0 -13
- package/dist/project-yaml.d.ts.map +0 -1
- package/dist/project-yaml.js +0 -188
- package/dist/project-yaml.js.map +0 -1
- package/templates/.ai/README.md +0 -117
- package/templates/.ai/prompts/execution-prompt.md +0 -9
- package/templates/.ai/prompts/planning-prompt.md +0 -18
- package/templates/.ai/prompts/session-end-template.md +0 -182
- package/templates/.ai/prompts/session-end.md +0 -132
- package/templates/.ai/prompts/session-start.md +0 -109
- package/templates/.ai/prompts/step-by-step.md +0 -113
- package/templates/.ai/sessions/.gitkeep +0 -0
- package/templates/.claude/commands/setup-pr-review.md +0 -72
- package/templates/.devcontainer/Dockerfile.dev.template +0 -89
- package/templates/.devcontainer/devcontainer.json.template +0 -184
- package/templates/.devcontainer/docker-compose.yml.template +0 -105
- package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
- package/templates/.devcontainer/post-create.sh.template +0 -298
- package/templates/.github/workflows/ci.yml.template +0 -399
- package/templates/.github/workflows/quality.yml.template +0 -376
- package/templates/.pre-commit-config.yaml.template +0 -106
- package/templates/.project/config/edit_config.py +0 -275
- package/templates/.project/config/project_config.py +0 -894
- package/templates/.project/scripts/codegen/generate-all.sh +0 -20
- package/templates/.project/scripts/codegen/validate-all.sh +0 -17
- package/templates/.project/scripts/docs/generate-all.sh +0 -30
- package/templates/.project/scripts/docs/serve.sh +0 -20
- package/templates/.project/scripts/quality/fix-all.sh +0 -138
- package/templates/.project/scripts/quality/lint-go.sh +0 -34
- package/templates/.project/scripts/quality/lint-python.sh +0 -54
- package/templates/.project/scripts/quality/run-all.sh +0 -497
- package/templates/.project/scripts/session/commit.sh +0 -70
- package/templates/.project/scripts/session/create-pr.sh +0 -165
- package/templates/.project/scripts/session/end.sh +0 -207
- package/templates/.project/scripts/session/start.sh +0 -233
- package/templates/.project/scripts/setup/doctor.sh +0 -404
- package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
- package/templates/.project/scripts/sync/sync-template.sh +0 -328
- package/templates/.project/scripts/test/run-all.sh +0 -179
- package/templates/.project/scripts/test/run-quick.sh +0 -25
- package/templates/Makefile +0 -514
- package/templates/config/versions.yaml +0 -57
- package/templates/configs/go/.golangci.yml.template +0 -172
- package/templates/configs/go/go.mod.template +0 -15
- package/templates/configs/java/README.md +0 -6
- package/templates/configs/kotlin/README.md +0 -6
- package/templates/configs/node/package.json.template +0 -67
- package/templates/configs/node/tsconfig.json.template +0 -53
- package/templates/configs/python/pyproject.toml.template +0 -92
- package/templates/configs/python/pytest.ini.template +0 -64
- package/templates/configs/python/ruff.toml.template +0 -79
- package/templates/configs/ruby/README.md +0 -6
- package/templates/configs/rust/Cargo.toml.template +0 -51
- package/templates/configs/shared/.editorconfig +0 -67
- package/templates/scripts/validate-templates.sh +0 -449
|
@@ -0,0 +1,415 @@
|
|
|
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.detectDefaultBranch = detectDefaultBranch;
|
|
37
|
+
exports.installHooks = installHooks;
|
|
38
|
+
exports.installDevcontainer = installDevcontainer;
|
|
39
|
+
exports.installCiGuardrails = installCiGuardrails;
|
|
40
|
+
exports.installCiBaselineRefresh = installCiBaselineRefresh;
|
|
41
|
+
exports.installPrReview = installPrReview;
|
|
42
|
+
exports.installIgnoreFiles = installIgnoreFiles;
|
|
43
|
+
/**
|
|
44
|
+
* Phase Ship installers — additive copy of dxkit's guardrail templates
|
|
45
|
+
* into a consumer repo. Wired into `vyuh-dxkit init` via the
|
|
46
|
+
* `--with-hooks` / `--with-devcontainer` / `--with-ci` /
|
|
47
|
+
* `--with-baseline-refresh` flags (or `--full` which implies all).
|
|
48
|
+
*
|
|
49
|
+
* Each installer is additive by default: existing consumer files are
|
|
50
|
+
* never overwritten. When a conflict is detected, the installer
|
|
51
|
+
* writes a sidecar (`.dxkit`-suffixed) reference file and emits a
|
|
52
|
+
* note with merge instructions. `force: true` bypasses the sidecar
|
|
53
|
+
* fallback and overwrites in place.
|
|
54
|
+
*/
|
|
55
|
+
const fs = __importStar(require("fs"));
|
|
56
|
+
const path = __importStar(require("path"));
|
|
57
|
+
const child_process_1 = require("child_process");
|
|
58
|
+
const files_1 = require("./files");
|
|
59
|
+
/**
|
|
60
|
+
* Detect the consumer repo's default branch so workflow templates
|
|
61
|
+
* that fire on pushes to "the main branch" point at the right name.
|
|
62
|
+
* The resolution order is intentionally lenient — we'd rather
|
|
63
|
+
* substitute *some* sensible branch and let the consumer edit the
|
|
64
|
+
* workflow than refuse to install when git state is incomplete.
|
|
65
|
+
*
|
|
66
|
+
* 1. `git symbolic-ref refs/remotes/origin/HEAD` (set whenever the
|
|
67
|
+
* repo was cloned from a remote with a default-branch HEAD)
|
|
68
|
+
* 2. `git rev-parse --verify <name>` against `main` / `master` /
|
|
69
|
+
* `trunk` / `develop` — the four conventions that cover ~all
|
|
70
|
+
* real repos
|
|
71
|
+
* 3. The current branch (`git branch --show-current`) — the best
|
|
72
|
+
* guess in a freshly-`git init`'d repo that hasn't been pushed
|
|
73
|
+
* 4. Fallback to `'main'` — the GitHub default-branch default
|
|
74
|
+
*/
|
|
75
|
+
function detectDefaultBranch(cwd) {
|
|
76
|
+
try {
|
|
77
|
+
const ref = (0, child_process_1.execFileSync)('git', ['symbolic-ref', 'refs/remotes/origin/HEAD'], {
|
|
78
|
+
cwd,
|
|
79
|
+
encoding: 'utf8',
|
|
80
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
81
|
+
}).trim();
|
|
82
|
+
const match = ref.match(/^refs\/remotes\/origin\/(.+)$/);
|
|
83
|
+
if (match && match[1])
|
|
84
|
+
return match[1];
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* fall through */
|
|
88
|
+
}
|
|
89
|
+
for (const candidate of ['main', 'master', 'trunk', 'develop']) {
|
|
90
|
+
try {
|
|
91
|
+
(0, child_process_1.execFileSync)('git', ['rev-parse', '--verify', '--quiet', candidate], {
|
|
92
|
+
cwd,
|
|
93
|
+
stdio: 'ignore',
|
|
94
|
+
});
|
|
95
|
+
return candidate;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
/* try next */
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const current = (0, child_process_1.execFileSync)('git', ['branch', '--show-current'], {
|
|
103
|
+
cwd,
|
|
104
|
+
encoding: 'utf8',
|
|
105
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
106
|
+
}).trim();
|
|
107
|
+
if (current)
|
|
108
|
+
return current;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
/* fall through */
|
|
112
|
+
}
|
|
113
|
+
return 'main';
|
|
114
|
+
}
|
|
115
|
+
function emptyResult() {
|
|
116
|
+
return { installed: [], skipped: [], sidecars: [], notes: [] };
|
|
117
|
+
}
|
|
118
|
+
function templatesDir() {
|
|
119
|
+
return path.join(__dirname, '..', 'templates');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Copy a single source file to a destination, handling the
|
|
123
|
+
* additive-vs-force decision. Returns the (relative) path that was
|
|
124
|
+
* written + which bucket it lands in.
|
|
125
|
+
*/
|
|
126
|
+
function copyAdditive(srcAbs, destAbs, cwd, opts, result, options = {}) {
|
|
127
|
+
const relDest = path.relative(cwd, destAbs);
|
|
128
|
+
const exists = fs.existsSync(destAbs);
|
|
129
|
+
if (exists && !opts.force) {
|
|
130
|
+
const suffix = options.sidecarSuffix ?? '.dxkit';
|
|
131
|
+
const sidecarAbs = destAbs + suffix;
|
|
132
|
+
const relSidecar = path.relative(cwd, sidecarAbs);
|
|
133
|
+
fs.mkdirSync(path.dirname(sidecarAbs), { recursive: true });
|
|
134
|
+
fs.copyFileSync(srcAbs, sidecarAbs);
|
|
135
|
+
if (options.executable)
|
|
136
|
+
(0, files_1.makeExecutable)(sidecarAbs);
|
|
137
|
+
result.sidecars.push(relSidecar);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
fs.mkdirSync(path.dirname(destAbs), { recursive: true });
|
|
141
|
+
fs.copyFileSync(srcAbs, destAbs);
|
|
142
|
+
if (options.executable)
|
|
143
|
+
(0, files_1.makeExecutable)(destAbs);
|
|
144
|
+
if (exists) {
|
|
145
|
+
result.installed.push(relDest);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
result.installed.push(relDest);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Hooks installer. Writes `.githooks/pre-push` by default;
|
|
153
|
+
* additionally writes `.githooks/pre-commit` when
|
|
154
|
+
* `opts.withPrecommit === true`. When the consumer already has a
|
|
155
|
+
* matching hook (via .githooks/ or .husky/), emits a `.dxkit`
|
|
156
|
+
* sidecar instead and prints merge instructions.
|
|
157
|
+
*
|
|
158
|
+
* Customer still needs to run `git config core.hooksPath .githooks`
|
|
159
|
+
* to activate. We don't run it for them — that's a global git config
|
|
160
|
+
* mutation outside dxkit's purview.
|
|
161
|
+
*
|
|
162
|
+
* Why pre-commit is opt-in: see `InstallerOpts.withPrecommit`.
|
|
163
|
+
*/
|
|
164
|
+
function installHooks(cwd, opts = {}) {
|
|
165
|
+
const result = emptyResult();
|
|
166
|
+
const tmplDir = path.join(templatesDir(), '.githooks');
|
|
167
|
+
const destDir = path.join(cwd, '.githooks');
|
|
168
|
+
// Husky users have hooks at `.husky/<name>`. We treat either an
|
|
169
|
+
// existing `.githooks/<name>` *or* `.husky/<name>` as a conflict —
|
|
170
|
+
// both routes mean the consumer already has an active hook, even
|
|
171
|
+
// though only the .githooks/ path is the destination we write to.
|
|
172
|
+
//
|
|
173
|
+
// pre-commit is opt-in (slow on large repos until incremental
|
|
174
|
+
// scanning lands); pre-push always installs (acceptable cost).
|
|
175
|
+
const hookNames = opts.withPrecommit
|
|
176
|
+
? [{ name: 'pre-commit' }, { name: 'pre-push' }]
|
|
177
|
+
: [{ name: 'pre-push' }];
|
|
178
|
+
let anyConflict = false;
|
|
179
|
+
for (const { name } of hookNames) {
|
|
180
|
+
const destAbs = path.join(destDir, name);
|
|
181
|
+
const huskyAbs = path.join(cwd, '.husky', name);
|
|
182
|
+
const conflict = fs.existsSync(destAbs) || fs.existsSync(huskyAbs);
|
|
183
|
+
if (conflict)
|
|
184
|
+
anyConflict = true;
|
|
185
|
+
const srcAbs = path.join(tmplDir, name);
|
|
186
|
+
if (conflict && !opts.force) {
|
|
187
|
+
// Always land the dxkit hook at .githooks/<name>.dxkit when
|
|
188
|
+
// there's a conflict, even when the conflict is at a different
|
|
189
|
+
// path (husky). The sidecar is the same regardless of where the
|
|
190
|
+
// existing hook lives, and the merge note tells the consumer
|
|
191
|
+
// how to chain them.
|
|
192
|
+
const sidecarAbs = destAbs + '.dxkit';
|
|
193
|
+
fs.mkdirSync(path.dirname(sidecarAbs), { recursive: true });
|
|
194
|
+
fs.copyFileSync(srcAbs, sidecarAbs);
|
|
195
|
+
(0, files_1.makeExecutable)(sidecarAbs);
|
|
196
|
+
result.sidecars.push(path.relative(cwd, sidecarAbs));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
fs.mkdirSync(path.dirname(destAbs), { recursive: true });
|
|
200
|
+
fs.copyFileSync(srcAbs, destAbs);
|
|
201
|
+
(0, files_1.makeExecutable)(destAbs);
|
|
202
|
+
result.installed.push(path.relative(cwd, destAbs));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (anyConflict) {
|
|
206
|
+
result.notes.push('Detected an existing pre-commit/pre-push hook. The dxkit hooks were ' +
|
|
207
|
+
'written as `.dxkit` sidecars next to your existing hooks; add a ' +
|
|
208
|
+
'`sh .githooks/<name>.dxkit` line to each existing hook to chain them.');
|
|
209
|
+
}
|
|
210
|
+
result.notes.push('Activate the hooks: `git config core.hooksPath .githooks` (one-time, per clone).');
|
|
211
|
+
if (!opts.withPrecommit) {
|
|
212
|
+
result.notes.push('pre-commit hook NOT installed (default). The full guardrail re-runs every analyzer ' +
|
|
213
|
+
'and is slow on large repos. Pre-push catches the same regressions before code leaves ' +
|
|
214
|
+
'the machine. Re-run init with `--with-precommit-hook` to enable commit-time gating.');
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Devcontainer installer. Writes the dxkit lightweight devcontainer
|
|
220
|
+
* (devcontainer.json + post-create.sh + install-agent-clis.sh) into
|
|
221
|
+
* `.devcontainer/`. If the consumer already has a devcontainer.json,
|
|
222
|
+
* writes the entire dxkit set into `.devcontainer/.dxkit-reference/`
|
|
223
|
+
* for manual merge.
|
|
224
|
+
*/
|
|
225
|
+
function installDevcontainer(cwd, opts = {}) {
|
|
226
|
+
const result = emptyResult();
|
|
227
|
+
const tmplDir = path.join(templatesDir(), '.devcontainer');
|
|
228
|
+
const destDir = path.join(cwd, '.devcontainer');
|
|
229
|
+
const filesToInstall = [
|
|
230
|
+
{ name: 'devcontainer.json', executable: false },
|
|
231
|
+
{ name: 'post-create.sh', executable: true },
|
|
232
|
+
{ name: 'install-agent-clis.sh', executable: true },
|
|
233
|
+
];
|
|
234
|
+
const hasExistingDevcontainer = fs.existsSync(path.join(destDir, 'devcontainer.json'));
|
|
235
|
+
if (hasExistingDevcontainer && !opts.force) {
|
|
236
|
+
// Stash the whole dxkit set under a reference dir so the
|
|
237
|
+
// consumer can read it without it interfering with their own.
|
|
238
|
+
const refDir = path.join(destDir, '.dxkit-reference');
|
|
239
|
+
fs.mkdirSync(refDir, { recursive: true });
|
|
240
|
+
for (const f of filesToInstall) {
|
|
241
|
+
const srcAbs = path.join(tmplDir, f.name);
|
|
242
|
+
const destAbs = path.join(refDir, f.name);
|
|
243
|
+
fs.copyFileSync(srcAbs, destAbs);
|
|
244
|
+
if (f.executable)
|
|
245
|
+
(0, files_1.makeExecutable)(destAbs);
|
|
246
|
+
result.sidecars.push(path.relative(cwd, destAbs));
|
|
247
|
+
}
|
|
248
|
+
result.notes.push('Existing devcontainer.json detected — dxkit pieces stashed in ' +
|
|
249
|
+
'`.devcontainer/.dxkit-reference/`. To enable dxkit guardrails in ' +
|
|
250
|
+
'your container: (1) merge the `features` block from the reference ' +
|
|
251
|
+
'devcontainer.json into yours, (2) add `bash .devcontainer/post-create.sh` ' +
|
|
252
|
+
'to your `postCreateCommand`, (3) copy `post-create.sh` and ' +
|
|
253
|
+
'`install-agent-clis.sh` into `.devcontainer/`.');
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
for (const f of filesToInstall) {
|
|
257
|
+
copyAdditive(path.join(tmplDir, f.name), path.join(destDir, f.name), cwd, { force: true }, result, { executable: f.executable });
|
|
258
|
+
}
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Generic workflow installer used by both --with-ci (PR-gate) and
|
|
263
|
+
* --with-baseline-refresh (post-merge auto-regen). Both targets are
|
|
264
|
+
* uniquely-named workflow files; conflict only happens on a re-run
|
|
265
|
+
* against an existing dxkit install, which we skip with a note.
|
|
266
|
+
*
|
|
267
|
+
* `substitutions` lets a workflow template carry placeholders the
|
|
268
|
+
* installer fills in at write time. The baseline-refresh workflow
|
|
269
|
+
* uses this for the consumer's default branch name; the PR-gate
|
|
270
|
+
* workflow ships verbatim.
|
|
271
|
+
*/
|
|
272
|
+
function installWorkflow(cwd, fileName, opts, substitutions = {}) {
|
|
273
|
+
const result = emptyResult();
|
|
274
|
+
const srcAbs = path.join(templatesDir(), '.github', 'workflows', fileName);
|
|
275
|
+
const destAbs = path.join(cwd, '.github', 'workflows', fileName);
|
|
276
|
+
if (fs.existsSync(destAbs) && !opts.force) {
|
|
277
|
+
result.skipped.push(path.relative(cwd, destAbs));
|
|
278
|
+
return result;
|
|
279
|
+
}
|
|
280
|
+
fs.mkdirSync(path.dirname(destAbs), { recursive: true });
|
|
281
|
+
if (Object.keys(substitutions).length === 0) {
|
|
282
|
+
fs.copyFileSync(srcAbs, destAbs);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
let content = fs.readFileSync(srcAbs, 'utf8');
|
|
286
|
+
for (const [key, value] of Object.entries(substitutions)) {
|
|
287
|
+
content = content.split(key).join(value);
|
|
288
|
+
}
|
|
289
|
+
fs.writeFileSync(destAbs, content, 'utf8');
|
|
290
|
+
}
|
|
291
|
+
result.installed.push(path.relative(cwd, destAbs));
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
function installCiGuardrails(cwd, opts = {}) {
|
|
295
|
+
return installWorkflow(cwd, 'dxkit-guardrails.yml', opts);
|
|
296
|
+
}
|
|
297
|
+
function installCiBaselineRefresh(cwd, opts = {}) {
|
|
298
|
+
const defaultBranch = detectDefaultBranch(cwd);
|
|
299
|
+
const result = installWorkflow(cwd, 'dxkit-baseline-refresh.yml', opts, {
|
|
300
|
+
__DXKIT_DEFAULT_BRANCH__: defaultBranch,
|
|
301
|
+
});
|
|
302
|
+
if (result.installed.length > 0 && defaultBranch !== 'main') {
|
|
303
|
+
result.notes.push(`baseline-refresh workflow targets the '${defaultBranch}' branch (detected from your repo). ` +
|
|
304
|
+
`Edit the workflow's \`branches:\` trigger if you want a different one.`);
|
|
305
|
+
}
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* AI PR-review workflow installer. Writes
|
|
310
|
+
* `.github/workflows/pr-review.yml` — a workflow that runs Claude
|
|
311
|
+
* Code over a PR's diff and posts a review comment.
|
|
312
|
+
*
|
|
313
|
+
* Opt-in (via `--with-pr-review`) because the workflow needs an
|
|
314
|
+
* `ANTHROPIC_API_KEY` repo secret AND a flipped `ENABLE_AI_REVIEW`
|
|
315
|
+
* repo variable to actually run anything; without both, the
|
|
316
|
+
* workflow file just sits inert in the repo and clutters the
|
|
317
|
+
* Actions tab. Customers who want this should opt in explicitly
|
|
318
|
+
* with the flag (and configure the repo secret + variable
|
|
319
|
+
* separately).
|
|
320
|
+
*/
|
|
321
|
+
function installPrReview(cwd, opts = {}) {
|
|
322
|
+
const result = installWorkflow(cwd, 'pr-review.yml', opts);
|
|
323
|
+
if (result.installed.length > 0) {
|
|
324
|
+
result.notes.push('pr-review.yml is dormant until you configure both: ' +
|
|
325
|
+
'(1) `ANTHROPIC_API_KEY` repo secret, and ' +
|
|
326
|
+
'(2) `ENABLE_AI_REVIEW=true` repo variable.');
|
|
327
|
+
}
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
const GITIGNORE_HEADER = '# dxkit — runtime outputs (analyzer reports + dashboard)';
|
|
331
|
+
const GITIGNORE_ENTRIES = ['.dxkit/reports/', '.dxkit/dashboard.html', '.dxkit/cache/'];
|
|
332
|
+
/**
|
|
333
|
+
* Seed `.gitignore` with dxkit's runtime-output paths and write a
|
|
334
|
+
* starter `.dxkit-ignore` template explaining the optional dxkit-
|
|
335
|
+
* specific scan-exclusion file.
|
|
336
|
+
*
|
|
337
|
+
* Concerns the seeded files address:
|
|
338
|
+
* - `.gitignore`: stops customers from accidentally committing
|
|
339
|
+
* `.dxkit/reports/*.md` and `.dxkit/dashboard.html` (which
|
|
340
|
+
* churn on every analyzer run). Selectively keeps
|
|
341
|
+
* `.dxkit/baselines/` tracked — it IS the guardrail anchor.
|
|
342
|
+
* - `.dxkit-ignore`: dxkit's own scan-exclusion file. Loaded by
|
|
343
|
+
* `loadExclusions()` if present; never created by dxkit before
|
|
344
|
+
* this commit. Seeding a documented template makes the feature
|
|
345
|
+
* discoverable.
|
|
346
|
+
*
|
|
347
|
+
* Both are additive: existing `.gitignore` entries are preserved
|
|
348
|
+
* (dedup against current contents); existing `.dxkit-ignore` is
|
|
349
|
+
* never overwritten.
|
|
350
|
+
*/
|
|
351
|
+
function installIgnoreFiles(cwd, opts = {}) {
|
|
352
|
+
const result = emptyResult();
|
|
353
|
+
// .gitignore: append runtime-output entries
|
|
354
|
+
const gitignorePath = path.join(cwd, '.gitignore');
|
|
355
|
+
let existing = '';
|
|
356
|
+
if (fs.existsSync(gitignorePath)) {
|
|
357
|
+
existing = fs.readFileSync(gitignorePath, 'utf-8');
|
|
358
|
+
if (existing.includes(GITIGNORE_HEADER)) {
|
|
359
|
+
result.skipped.push('.gitignore');
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
const existingLines = new Set(existing.split('\n').map((l) => l.trim()));
|
|
363
|
+
const newEntries = GITIGNORE_ENTRIES.filter((e) => !existingLines.has(e));
|
|
364
|
+
if (newEntries.length > 0) {
|
|
365
|
+
const block = '\n' + GITIGNORE_HEADER + '\n' + newEntries.join('\n') + '\n';
|
|
366
|
+
fs.appendFileSync(gitignorePath, block, 'utf-8');
|
|
367
|
+
result.installed.push('.gitignore');
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
result.skipped.push('.gitignore');
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
const content = GITIGNORE_HEADER + '\n' + GITIGNORE_ENTRIES.join('\n') + '\n';
|
|
376
|
+
fs.writeFileSync(gitignorePath, content, 'utf-8');
|
|
377
|
+
result.installed.push('.gitignore');
|
|
378
|
+
}
|
|
379
|
+
// .dxkit-ignore: write starter template (never overwrite)
|
|
380
|
+
const dxkitIgnorePath = path.join(cwd, '.dxkit-ignore');
|
|
381
|
+
if (fs.existsSync(dxkitIgnorePath) && !opts.force) {
|
|
382
|
+
result.skipped.push('.dxkit-ignore');
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
fs.writeFileSync(dxkitIgnorePath, DXKIT_IGNORE_TEMPLATE, 'utf-8');
|
|
386
|
+
result.installed.push('.dxkit-ignore');
|
|
387
|
+
}
|
|
388
|
+
return result;
|
|
389
|
+
}
|
|
390
|
+
const DXKIT_IGNORE_TEMPLATE = `# .dxkit-ignore — extra paths dxkit's analyzers should skip.
|
|
391
|
+
#
|
|
392
|
+
# Format: same as .gitignore (directory/, file-glob, multi-segment).
|
|
393
|
+
# Union'd on top of:
|
|
394
|
+
# - dxkit's bundled defaults (node_modules/, dist/, .git/, build/, ...)
|
|
395
|
+
# - this repo's .gitignore
|
|
396
|
+
#
|
|
397
|
+
# Use this file for dxkit-specific exclusions that you don't want in
|
|
398
|
+
# .gitignore (e.g. vendored code you DO commit but DON'T want dxkit
|
|
399
|
+
# to analyze for quality / coverage / security findings).
|
|
400
|
+
#
|
|
401
|
+
# Common examples (uncomment + adjust to your project):
|
|
402
|
+
#
|
|
403
|
+
# vendor/ # vendored third-party code committed to git
|
|
404
|
+
# third_party/
|
|
405
|
+
# generated/ # generated code (protobuf, GraphQL types, ORM)
|
|
406
|
+
# *.generated.ts
|
|
407
|
+
# *.designer.cs
|
|
408
|
+
# legacy/ # pre-existing code you don't want to track findings against
|
|
409
|
+
# fixtures/large/ # test fixtures that inflate metrics
|
|
410
|
+
#
|
|
411
|
+
# After editing, the next \`vyuh-dxkit baseline create\` will pick up the
|
|
412
|
+
# changes. Note: changes to this file invalidate cached baselines
|
|
413
|
+
# (the file's content hash lands in the baseline envelope).
|
|
414
|
+
`;
|
|
415
|
+
//# sourceMappingURL=ship-installers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-installers.js","sourceRoot":"","sources":["../src/ship-installers.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -89,10 +89,6 @@ export interface DetectedStack {
|
|
|
89
89
|
}
|
|
90
90
|
export interface ResolvedConfig extends DetectedStack {
|
|
91
91
|
coverageThreshold: string;
|
|
92
|
-
precommit: boolean;
|
|
93
|
-
qualityChecks: boolean;
|
|
94
|
-
aiSessions: boolean;
|
|
95
|
-
aiPrompts: boolean;
|
|
96
92
|
claudeCode: boolean;
|
|
97
93
|
}
|
|
98
94
|
export type GenerationMode = 'dx-only' | 'full';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,QAAQ,GACR,IAAI,GACJ,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAEX,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,cAAc,EAAE;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,QAAQ,GACR,IAAI,GACJ,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAEX,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,cAAc,EAAE;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC"}
|
package/dist/update.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAOA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAOA,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD1F"}
|
package/dist/update.js
CHANGED
|
@@ -62,10 +62,6 @@ async function runUpdate(cwd, force, rescan = false) {
|
|
|
62
62
|
const config = {
|
|
63
63
|
...detected,
|
|
64
64
|
coverageThreshold: manifest.config.coverageThreshold,
|
|
65
|
-
precommit: manifest.config.precommit,
|
|
66
|
-
qualityChecks: manifest.config.qualityChecks,
|
|
67
|
-
aiSessions: manifest.config.aiSessions,
|
|
68
|
-
aiPrompts: manifest.config.aiPrompts,
|
|
69
65
|
claudeCode: manifest.config.claudeCode,
|
|
70
66
|
};
|
|
71
67
|
// Merge languages: keep enabled if previously enabled OR newly detected
|
package/dist/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vyuhlabs/dxkit",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "AI-native developer experience toolkit for any
|
|
3
|
+
"version": "2.5.0",
|
|
4
|
+
"description": "AI-native developer experience toolkit for any codebase",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vyuh Labs",
|
|
7
7
|
"repository": {
|
|
@@ -80,16 +80,22 @@
|
|
|
80
80
|
"vitest": "^3.2.4"
|
|
81
81
|
},
|
|
82
82
|
"keywords": [
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"claude",
|
|
86
|
-
"copilot",
|
|
83
|
+
"ai-coding-agents",
|
|
84
|
+
"agentic-development",
|
|
85
|
+
"claude-code",
|
|
87
86
|
"codex",
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
87
|
+
"guardrails",
|
|
88
|
+
"brownfield",
|
|
89
|
+
"baseline",
|
|
90
|
+
"static-analysis",
|
|
91
|
+
"code-quality",
|
|
92
|
+
"security-scanning",
|
|
93
|
+
"pre-commit-hooks",
|
|
94
|
+
"ci-cd",
|
|
95
|
+
"codespaces",
|
|
96
|
+
"devcontainers",
|
|
97
|
+
"dxkit",
|
|
98
|
+
"vyuh"
|
|
93
99
|
],
|
|
94
100
|
"dependencies": {
|
|
95
101
|
"exceljs": "^4.4.0",
|
|
@@ -22,7 +22,7 @@ Read these first for context (skip any that don't exist):
|
|
|
22
22
|
- `.claude/skills/learned/references/gotchas.md` — Known gotchas
|
|
23
23
|
- `.claude/skills/learned/references/conventions.md` — Team conventions
|
|
24
24
|
- `README.md` — Project readme
|
|
25
|
-
- `package.json`, `go.mod`, `pyproject.toml`, `*.csproj` — Dependencies
|
|
25
|
+
- `package.json`, `go.mod`, `pyproject.toml`, `*.csproj`, `Cargo.toml`, `Gemfile` — Dependencies
|
|
26
26
|
|
|
27
27
|
## How to Help
|
|
28
28
|
|
|
@@ -48,9 +48,10 @@ Prioritize by learning order:
|
|
|
48
48
|
5. Tests — how things are verified
|
|
49
49
|
|
|
50
50
|
### If asked about setup/environment:
|
|
51
|
-
1. Check for
|
|
52
|
-
2. Walk through the setup process step by step
|
|
53
|
-
3.
|
|
51
|
+
1. Check for the standard entry points: `package.json` scripts, `docker-compose.yml`, `.devcontainer/`, language-specific build files
|
|
52
|
+
2. Walk through the setup process step by step (clone → install deps → run the dev/test command shown in README)
|
|
53
|
+
3. If the repo has dxkit installed, point them at `/doctor` for environment validation
|
|
54
|
+
4. Warn about common setup issues from gotchas.md
|
|
54
55
|
|
|
55
56
|
## Rules
|
|
56
57
|
|
|
@@ -21,7 +21,7 @@ Explore this repository and generate a thorough understanding of:
|
|
|
21
21
|
|
|
22
22
|
### Phase 1: Orientation (broad scan)
|
|
23
23
|
1. `Glob("**/*")` to see the directory tree
|
|
24
|
-
2. Read top-level config files: `package.json`, `go.mod`, `pyproject.toml`, `*.csproj`, `Cargo.toml`, `
|
|
24
|
+
2. Read top-level config files: `package.json`, `go.mod`, `pyproject.toml`, `*.csproj`, `Cargo.toml`, `Gemfile`, `pom.xml`, `build.gradle`, `docker-compose.yml`, `.devcontainer/`
|
|
25
25
|
3. Read `README.md` if it exists
|
|
26
26
|
4. Identify what languages, frameworks, and tools are in use
|
|
27
27
|
|
|
@@ -17,7 +17,7 @@ You are a debugging specialist. You trace root causes systematically, never gues
|
|
|
17
17
|
|
|
18
18
|
## Tools
|
|
19
19
|
|
|
20
|
-
- Use `Bash` to run tests and reproduce failures
|
|
20
|
+
- Use `Bash` to run tests and reproduce failures with the project's native test runner (`npm test`, `pytest -x`, `go test -run TestName -v`, `dotnet test`, `cargo test`, etc.)
|
|
21
21
|
- Use `Grep` to trace function calls, error messages, and variable usage
|
|
22
22
|
- Use `Read` to examine the code around the failure point
|
|
23
23
|
|
|
@@ -26,4 +26,4 @@ You are a debugging specialist. You trace root causes systematically, never gues
|
|
|
26
26
|
- Do not modify source code — diagnose and report only
|
|
27
27
|
- Do not guess — if you're unsure, gather more evidence
|
|
28
28
|
- Do not run destructive commands (no `rm`, `drop`, `reset`)
|
|
29
|
-
- **NEVER read `.env` files** — if you suspect a config issue,
|
|
29
|
+
- **NEVER read `.env` files** — if you suspect a config issue, grep for the variable name only
|
|
@@ -47,10 +47,10 @@ You are a codebase health auditor. Your job is to give an honest, comprehensive
|
|
|
47
47
|
- **Score: 0-10**
|
|
48
48
|
|
|
49
49
|
### 6. Developer Experience
|
|
50
|
-
- Check for
|
|
50
|
+
- Check for `package.json` scripts, project-specific run/test scripts (easy to run?)
|
|
51
51
|
- Check for Docker/devcontainer setup
|
|
52
52
|
- Check for CI/CD configuration
|
|
53
|
-
- Check for pre-commit hooks
|
|
53
|
+
- Check for pre-commit/pre-push hooks (`.githooks/` or equivalent)
|
|
54
54
|
- **Score: 0-10**
|
|
55
55
|
|
|
56
56
|
## Output Format
|
|
@@ -2,20 +2,28 @@
|
|
|
2
2
|
description: Diagnose development environment issues
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
Diagnose this development environment.
|
|
5
|
+
Diagnose this development environment.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Step 1: dxkit doctor
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. **Node** (if package.json): `node --version`, `npm --version`, check if `node_modules/` exists
|
|
11
|
-
3. **Python** (if pyproject.toml): `python3 --version`, check virtual env, check if deps installed
|
|
12
|
-
4. **Go** (if go.mod): `go version`, check if modules downloaded
|
|
13
|
-
5. **C#** (if .csproj): `dotnet --version`
|
|
14
|
-
6. **Rust** (if Cargo.toml): `rustc --version`, `cargo --version`
|
|
15
|
-
7. **Docker** (if docker-compose.yml): `docker --version`, check if running
|
|
16
|
-
8. **Make** (if Makefile): `make --version`
|
|
17
|
-
9. **Claude Code DX**: check `.claude/` directory, `CLAUDE.md`, `.vyuh-dxkit.json`
|
|
9
|
+
Run dxkit's own health check first — it covers tool availability (gitleaks, semgrep, cloc, etc.), `.claude/` install state, and hook configuration:
|
|
18
10
|
|
|
19
|
-
|
|
11
|
+
```bash
|
|
12
|
+
npx vyuh-dxkit doctor 2>/dev/null
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If the command isn't available, fall back to Step 2.
|
|
16
|
+
|
|
17
|
+
## Step 2: Environment checks
|
|
18
|
+
|
|
19
|
+
1. **Git**: `git --version` and `git status`
|
|
20
|
+
2. **Node** (if `package.json`): `node --version` / `npm --version`; is `node_modules/` populated?
|
|
21
|
+
3. **Python** (if `pyproject.toml`): `python3 --version`; virtual env activated? deps installed?
|
|
22
|
+
4. **Go** (if `go.mod`): `go version`; modules downloaded?
|
|
23
|
+
5. **.NET** (if `*.csproj`): `dotnet --version`
|
|
24
|
+
6. **Rust** (if `Cargo.toml`): `rustc --version` / `cargo --version`
|
|
25
|
+
7. **Docker** (if `docker-compose.yml`): `docker --version`; daemon running?
|
|
26
|
+
8. **Hooks active**: `git config core.hooksPath` should report `.githooks` if dxkit hooks are installed
|
|
27
|
+
9. **dxkit install**: `.claude/`, `CLAUDE.md`, `.vyuh-dxkit.json` present?
|
|
20
28
|
|
|
21
29
|
Report any issues found and provide remediation steps.
|