@vyuhlabs/dxkit 2.4.8 → 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 +235 -0
- package/README.md +360 -439
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +4 -46
- package/dist/analyzers/security/aggregator.js.map +1 -1
- 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 +6 -1
- 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 +20 -11
- package/dist/analyzers/tools/gitleaks.js.map +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 +360 -81
- 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/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/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +0 -9
- 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 +1 -1
- package/dist/languages/index.d.ts.map +1 -1
- 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 +2 -28
- 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,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect the consumer repo's default branch so workflow templates
|
|
3
|
+
* that fire on pushes to "the main branch" point at the right name.
|
|
4
|
+
* The resolution order is intentionally lenient — we'd rather
|
|
5
|
+
* substitute *some* sensible branch and let the consumer edit the
|
|
6
|
+
* workflow than refuse to install when git state is incomplete.
|
|
7
|
+
*
|
|
8
|
+
* 1. `git symbolic-ref refs/remotes/origin/HEAD` (set whenever the
|
|
9
|
+
* repo was cloned from a remote with a default-branch HEAD)
|
|
10
|
+
* 2. `git rev-parse --verify <name>` against `main` / `master` /
|
|
11
|
+
* `trunk` / `develop` — the four conventions that cover ~all
|
|
12
|
+
* real repos
|
|
13
|
+
* 3. The current branch (`git branch --show-current`) — the best
|
|
14
|
+
* guess in a freshly-`git init`'d repo that hasn't been pushed
|
|
15
|
+
* 4. Fallback to `'main'` — the GitHub default-branch default
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectDefaultBranch(cwd: string): string;
|
|
18
|
+
export interface ShipInstallResult {
|
|
19
|
+
/** Relative paths (from cwd) of files newly written to the consumer repo. */
|
|
20
|
+
installed: string[];
|
|
21
|
+
/** Relative paths the installer left alone because the consumer already had them. */
|
|
22
|
+
skipped: string[];
|
|
23
|
+
/** Sidecar paths emitted when a conflict was detected (foo.dxkit form). */
|
|
24
|
+
sidecars: string[];
|
|
25
|
+
/** Human-readable merge instructions. Surfaced by the CLI summary. */
|
|
26
|
+
notes: string[];
|
|
27
|
+
}
|
|
28
|
+
interface InstallerOpts {
|
|
29
|
+
/** Overwrite consumer files in place rather than emitting sidecars. */
|
|
30
|
+
readonly force?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Install the pre-commit hook in addition to pre-push.
|
|
33
|
+
*
|
|
34
|
+
* Default off: pre-commit re-runs every analyzer on the full repo
|
|
35
|
+
* (no incremental scope yet), which makes it slow on large
|
|
36
|
+
* codebases (~3 min on a 500-file repo). Pre-push is faster to
|
|
37
|
+
* tolerate because it fires once per push regardless of how many
|
|
38
|
+
* commits batch up.
|
|
39
|
+
*
|
|
40
|
+
* Customers who want commit-time gating (e.g. on small repos where
|
|
41
|
+
* the scan is fast) can opt in with `--with-precommit-hook`.
|
|
42
|
+
* Incremental scoped scanning lands in a future phase; the trade-
|
|
43
|
+
* off goes away then.
|
|
44
|
+
*/
|
|
45
|
+
readonly withPrecommit?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Hooks installer. Writes `.githooks/pre-push` by default;
|
|
49
|
+
* additionally writes `.githooks/pre-commit` when
|
|
50
|
+
* `opts.withPrecommit === true`. When the consumer already has a
|
|
51
|
+
* matching hook (via .githooks/ or .husky/), emits a `.dxkit`
|
|
52
|
+
* sidecar instead and prints merge instructions.
|
|
53
|
+
*
|
|
54
|
+
* Customer still needs to run `git config core.hooksPath .githooks`
|
|
55
|
+
* to activate. We don't run it for them — that's a global git config
|
|
56
|
+
* mutation outside dxkit's purview.
|
|
57
|
+
*
|
|
58
|
+
* Why pre-commit is opt-in: see `InstallerOpts.withPrecommit`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function installHooks(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
61
|
+
/**
|
|
62
|
+
* Devcontainer installer. Writes the dxkit lightweight devcontainer
|
|
63
|
+
* (devcontainer.json + post-create.sh + install-agent-clis.sh) into
|
|
64
|
+
* `.devcontainer/`. If the consumer already has a devcontainer.json,
|
|
65
|
+
* writes the entire dxkit set into `.devcontainer/.dxkit-reference/`
|
|
66
|
+
* for manual merge.
|
|
67
|
+
*/
|
|
68
|
+
export declare function installDevcontainer(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
69
|
+
export declare function installCiGuardrails(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
70
|
+
export declare function installCiBaselineRefresh(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
71
|
+
/**
|
|
72
|
+
* AI PR-review workflow installer. Writes
|
|
73
|
+
* `.github/workflows/pr-review.yml` — a workflow that runs Claude
|
|
74
|
+
* Code over a PR's diff and posts a review comment.
|
|
75
|
+
*
|
|
76
|
+
* Opt-in (via `--with-pr-review`) because the workflow needs an
|
|
77
|
+
* `ANTHROPIC_API_KEY` repo secret AND a flipped `ENABLE_AI_REVIEW`
|
|
78
|
+
* repo variable to actually run anything; without both, the
|
|
79
|
+
* workflow file just sits inert in the repo and clutters the
|
|
80
|
+
* Actions tab. Customers who want this should opt in explicitly
|
|
81
|
+
* with the flag (and configure the repo secret + variable
|
|
82
|
+
* separately).
|
|
83
|
+
*/
|
|
84
|
+
export declare function installPrReview(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
85
|
+
/**
|
|
86
|
+
* Seed `.gitignore` with dxkit's runtime-output paths and write a
|
|
87
|
+
* starter `.dxkit-ignore` template explaining the optional dxkit-
|
|
88
|
+
* specific scan-exclusion file.
|
|
89
|
+
*
|
|
90
|
+
* Concerns the seeded files address:
|
|
91
|
+
* - `.gitignore`: stops customers from accidentally committing
|
|
92
|
+
* `.dxkit/reports/*.md` and `.dxkit/dashboard.html` (which
|
|
93
|
+
* churn on every analyzer run). Selectively keeps
|
|
94
|
+
* `.dxkit/baselines/` tracked — it IS the guardrail anchor.
|
|
95
|
+
* - `.dxkit-ignore`: dxkit's own scan-exclusion file. Loaded by
|
|
96
|
+
* `loadExclusions()` if present; never created by dxkit before
|
|
97
|
+
* this commit. Seeding a documented template makes the feature
|
|
98
|
+
* discoverable.
|
|
99
|
+
*
|
|
100
|
+
* Both are additive: existing `.gitignore` entries are preserved
|
|
101
|
+
* (dedup against current contents); existing `.dxkit-ignore` is
|
|
102
|
+
* never overwritten.
|
|
103
|
+
*/
|
|
104
|
+
export declare function installIgnoreFiles(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=ship-installers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-installers.d.ts","sourceRoot":"","sources":["../src/ship-installers.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkCvD;AAED,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA+CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CA8DrF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CA8C5F;AA0CD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAE5F;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAYjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAUxF;AAKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAqC3F"}
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,kDAkCC;AA2FD,oCA8DC;AASD,kDA8CC;AA0CD,kDAEC;AAED,4DAYC;AAeD,0CAUC;AAwBD,gDAqCC;AAnaD;;;;;;;;;;;GAWG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAA6C;AAC7C,mCAAyC;AAEzC;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,4BAAY,EAAC,KAAK,EAAE,CAAC,cAAc,EAAE,0BAA0B,CAAC,EAAE;YAC5E,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACzD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,IAAA,4BAAY,EAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;gBACnE,GAAG;gBACH,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,4BAAY,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;YAChE,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAiCD,SAAS,WAAW;IAClB,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,MAAc,EACd,OAAe,EACf,GAAW,EACX,IAAmB,EACnB,MAAyB,EACzB,UAA4D,EAAE;IAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC;QACjD,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,UAAU;YAAE,IAAA,sBAAc,EAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,UAAU;QAAE,IAAA,sBAAc,EAAC,OAAO,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY,CAAC,GAAW,EAAE,OAAsB,EAAE;IAChE,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE5C,gEAAgE;IAChE,mEAAmE;IACnE,iEAAiE;IACjE,kEAAkE;IAClE,EAAE;IACF,8DAA8D;IAC9D,+DAA+D;IAC/D,MAAM,SAAS,GAA+C,IAAI,CAAC,aAAa;QAC9E,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,QAAQ;YAAE,WAAW,GAAG,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,4DAA4D;YAC5D,+DAA+D;YAC/D,gEAAgE;YAChE,6DAA6D;YAC7D,qBAAqB;YACrB,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;YACtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACpC,IAAA,sBAAc,EAAC,UAAU,CAAC,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,IAAA,sBAAc,EAAC,OAAO,CAAC,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,sEAAsE;YACpE,kEAAkE;YAClE,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,kFAAkF,CACnF,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,qFAAqF;YACnF,uFAAuF;YACvF,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,GAAW,EAAE,OAAsB,EAAE;IACvE,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG;QACrB,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE;QAChD,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;QAC5C,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE;KACpD,CAAC;IAEF,MAAM,uBAAuB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEvF,IAAI,uBAAuB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3C,yDAAyD;QACzD,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACtD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,UAAU;gBAAE,IAAA,sBAAc,EAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,gEAAgE;YAC9D,mEAAmE;YACnE,oEAAoE;YACpE,4EAA4E;YAC5E,6DAA6D;YAC7D,gDAAgD,CACnD,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,YAAY,CACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,EAC1B,GAAG,EACH,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,MAAM,EACN,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,eAAe,CACtB,GAAW,EACX,QAAgB,EAChB,IAAmB,EACnB,gBAAkD,EAAE;IAEpD,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEjE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW,EAAE,OAAsB,EAAE;IACvE,OAAO,eAAe,CAAC,GAAG,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,wBAAwB,CAAC,GAAW,EAAE,OAAsB,EAAE;IAC5E,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE;QACtE,wBAAwB,EAAE,aAAa;KACxC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,0CAA0C,aAAa,sCAAsC;YAC3F,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,GAAW,EAAE,OAAsB,EAAE;IACnE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,qDAAqD;YACnD,2CAA2C;YAC3C,4CAA4C,CAC/C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,gBAAgB,GAAG,0DAA0D,CAAC;AACpF,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,kBAAkB,CAAC,GAAW,EAAE,OAAsB,EAAE;IACtE,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAE7B,4CAA4C;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC5E,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,gBAAgB,GAAG,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC9E,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,0DAA0D;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB7B,CAAC"}
|
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",
|