@vyuhlabs/dxkit 2.22.0 → 2.24.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 +97 -0
- package/dist/analyzers/correctness/run.d.ts +79 -0
- package/dist/analyzers/correctness/run.d.ts.map +1 -0
- package/dist/analyzers/correctness/run.js +173 -0
- package/dist/analyzers/correctness/run.js.map +1 -0
- package/dist/analyzers/correctness/surface-run.d.ts +73 -0
- package/dist/analyzers/correctness/surface-run.d.ts.map +1 -0
- package/dist/analyzers/correctness/surface-run.js +142 -0
- package/dist/analyzers/correctness/surface-run.js.map +1 -0
- package/dist/analyzers/correctness/surface.d.ts +69 -0
- package/dist/analyzers/correctness/surface.d.ts.map +1 -0
- package/dist/analyzers/correctness/surface.js +281 -0
- package/dist/analyzers/correctness/surface.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +144 -4
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +5 -0
- package/dist/generator.js.map +1 -1
- package/dist/issue-cli.d.ts +2 -1
- package/dist/issue-cli.d.ts.map +1 -1
- package/dist/issue-cli.js +4 -0
- package/dist/issue-cli.js.map +1 -1
- package/dist/languages/capabilities/correctness.d.ts +54 -0
- package/dist/languages/capabilities/correctness.d.ts.map +1 -0
- package/dist/languages/capabilities/correctness.js +20 -0
- package/dist/languages/capabilities/correctness.js.map +1 -0
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +84 -0
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +51 -0
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +11 -0
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +12 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +12 -0
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/jvm-build.d.ts +54 -0
- package/dist/languages/jvm-build.d.ts.map +1 -0
- package/dist/languages/jvm-build.js +245 -0
- package/dist/languages/jvm-build.js.map +1 -0
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +13 -0
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +78 -0
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +64 -0
- package/dist/languages/ruby.js.map +1 -1
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +110 -0
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +20 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +109 -0
- package/dist/languages/typescript.js.map +1 -1
- package/dist/loop/floor-gate.d.ts +54 -0
- package/dist/loop/floor-gate.d.ts.map +1 -0
- package/dist/loop/floor-gate.js +157 -0
- package/dist/loop/floor-gate.js.map +1 -0
- package/dist/loop/floor-state.d.ts +66 -0
- package/dist/loop/floor-state.d.ts.map +1 -0
- package/dist/loop/floor-state.js +138 -0
- package/dist/loop/floor-state.js.map +1 -0
- package/dist/loop/scaffold.d.ts +4 -0
- package/dist/loop/scaffold.d.ts.map +1 -1
- package/dist/loop/scaffold.js +7 -7
- package/dist/loop/scaffold.js.map +1 -1
- package/dist/loop/stop-gate.d.ts +2 -1
- package/dist/loop/stop-gate.d.ts.map +1 -1
- package/dist/loop/stop-gate.js +44 -6
- package/dist/loop/stop-gate.js.map +1 -1
- package/dist/ship-installers.d.ts +20 -0
- package/dist/ship-installers.d.ts.map +1 -1
- package/dist/ship-installers.js +17 -16
- package/dist/ship-installers.js.map +1 -1
- package/dist/uninstall/index.d.ts +47 -0
- package/dist/uninstall/index.d.ts.map +1 -0
- package/dist/uninstall/index.js +418 -0
- package/dist/uninstall/index.js.map +1 -0
- package/dist/uninstall/reversals.d.ts +70 -0
- package/dist/uninstall/reversals.d.ts.map +1 -0
- package/dist/uninstall/reversals.js +202 -0
- package/dist/uninstall/reversals.js.map +1 -0
- package/package.json +1 -1
- package/templates/.claude/skills/dxkit-uninstall/SKILL.md +55 -0
- package/templates/.githooks/pre-push +10 -0
- package/templates/.github/workflows/dxkit-guardrails.yml +17 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The correctness-floor state ledger for the loop Stop-gate.
|
|
4
|
+
*
|
|
5
|
+
* The floor is diff-scoped like the finding gate — a PRE-EXISTING compile
|
|
6
|
+
* error or failing test must not block the loop — but it is deliberately NOT a
|
|
7
|
+
* baseline artifact: no fingerprint, no identity scheme, no version to migrate.
|
|
8
|
+
* A failing test is a pass/fail signal, not a grandfathered finding.
|
|
9
|
+
*
|
|
10
|
+
* Instead we capture the ALREADY-BROKEN set ONCE, at loop activation, when the
|
|
11
|
+
* working tree is still the pristine base the agent has not yet touched, and
|
|
12
|
+
* store it in `.dxkit/loop/` (gitignored, transient). Each Stop re-runs the
|
|
13
|
+
* AFFECTED floor and blocks only on failures ABSENT from that entry snapshot
|
|
14
|
+
* (net-new). This is testmon's insight — persist last-known state rather than
|
|
15
|
+
* recompute it from a git ref — scoped to one loop, so a Stop never pays a
|
|
16
|
+
* `git worktree add` + `npm install` + full re-run (minutes) to learn what was
|
|
17
|
+
* already broken.
|
|
18
|
+
*
|
|
19
|
+
* Granularity: a check's identity is `pack:label` (e.g. `typescript:typecheck`,
|
|
20
|
+
* `typescript:affected-tests`). This is EXACT in the dominant case — a green
|
|
21
|
+
* base captures an empty failing set, so every failure at a later Stop is
|
|
22
|
+
* net-new and blocks. It degrades gracefully when the base is ALREADY red in a
|
|
23
|
+
* check: additional net-new failures piled onto that same already-red check are
|
|
24
|
+
* not distinguished from the pre-existing one (the check stays reported, not
|
|
25
|
+
* silently cleared). Per-test attribution is a future refinement; check-level
|
|
26
|
+
* is the honest v1 because you do not normally start a loop on a red branch —
|
|
27
|
+
* the snapshot exists for the exception, and there it is conservative about the
|
|
28
|
+
* pre-existing failure rather than about the new one.
|
|
29
|
+
*/
|
|
30
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
31
|
+
if (k2 === undefined) k2 = k;
|
|
32
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
33
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
34
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
35
|
+
}
|
|
36
|
+
Object.defineProperty(o, k2, desc);
|
|
37
|
+
}) : (function(o, m, k, k2) {
|
|
38
|
+
if (k2 === undefined) k2 = k;
|
|
39
|
+
o[k2] = m[k];
|
|
40
|
+
}));
|
|
41
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
42
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
43
|
+
}) : function(o, v) {
|
|
44
|
+
o["default"] = v;
|
|
45
|
+
});
|
|
46
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
47
|
+
var ownKeys = function(o) {
|
|
48
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
49
|
+
var ar = [];
|
|
50
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
51
|
+
return ar;
|
|
52
|
+
};
|
|
53
|
+
return ownKeys(o);
|
|
54
|
+
};
|
|
55
|
+
return function (mod) {
|
|
56
|
+
if (mod && mod.__esModule) return mod;
|
|
57
|
+
var result = {};
|
|
58
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
59
|
+
__setModuleDefault(result, mod);
|
|
60
|
+
return result;
|
|
61
|
+
};
|
|
62
|
+
})();
|
|
63
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
64
|
+
exports.FLOOR_BASELINE_FILE = void 0;
|
|
65
|
+
exports.checkKey = checkKey;
|
|
66
|
+
exports.writeFloorBaseline = writeFloorBaseline;
|
|
67
|
+
exports.readFloorBaseline = readFloorBaseline;
|
|
68
|
+
exports.clearFloorBaseline = clearFloorBaseline;
|
|
69
|
+
exports.netNewFloorFailures = netNewFloorFailures;
|
|
70
|
+
const fs = __importStar(require("fs"));
|
|
71
|
+
const path = __importStar(require("path"));
|
|
72
|
+
const ledger_1 = require("./ledger");
|
|
73
|
+
/** File under `.dxkit/loop/` holding the entry snapshot. */
|
|
74
|
+
exports.FLOOR_BASELINE_FILE = 'floor-baseline.json';
|
|
75
|
+
/** Stable per-check identity used to diff a Stop against the entry snapshot. */
|
|
76
|
+
function checkKey(pack, label) {
|
|
77
|
+
return `${pack}:${label}`;
|
|
78
|
+
}
|
|
79
|
+
function floorBaselinePath(cwd) {
|
|
80
|
+
return path.join(cwd, ledger_1.LEDGER_DIR, exports.FLOOR_BASELINE_FILE);
|
|
81
|
+
}
|
|
82
|
+
/** Keep only the pass/fail checks — skipped ones carry no liveness signal. */
|
|
83
|
+
function liveChecks(checks) {
|
|
84
|
+
return checks
|
|
85
|
+
.filter((c) => c.status === 'pass' || c.status === 'fail')
|
|
86
|
+
.map((c) => ({ pack: c.pack, label: c.label, status: c.status }));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Persist the entry snapshot from a floor run on the pristine base. Best-effort
|
|
90
|
+
* — a write failure leaves no snapshot, which the diff below treats as "assume
|
|
91
|
+
* the base was green" (every later failure is then net-new, the safe default).
|
|
92
|
+
*/
|
|
93
|
+
function writeFloorBaseline(cwd, result, capturedAtCommit) {
|
|
94
|
+
const baseline = { capturedAtCommit, checks: liveChecks(result.checks) };
|
|
95
|
+
try {
|
|
96
|
+
const dir = path.join(cwd, ledger_1.LEDGER_DIR);
|
|
97
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
98
|
+
fs.writeFileSync(floorBaselinePath(cwd), JSON.stringify(baseline, null, 2) + '\n', 'utf8');
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
/* best-effort — absence is handled as a green base by the diff */
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** Read the entry snapshot; null when absent or malformed (→ green base). */
|
|
105
|
+
function readFloorBaseline(cwd) {
|
|
106
|
+
try {
|
|
107
|
+
const raw = fs.readFileSync(floorBaselinePath(cwd), 'utf8');
|
|
108
|
+
const parsed = JSON.parse(raw);
|
|
109
|
+
if (!Array.isArray(parsed.checks))
|
|
110
|
+
return null;
|
|
111
|
+
return parsed;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Delete the entry snapshot (loop teardown). Best-effort. */
|
|
118
|
+
function clearFloorBaseline(cwd) {
|
|
119
|
+
try {
|
|
120
|
+
fs.rmSync(floorBaselinePath(cwd), { force: true });
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
/* best-effort */
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The net-new failures at this Stop: checks failing now that were NOT already
|
|
128
|
+
* failing in the entry snapshot. A null/absent baseline is treated as a green
|
|
129
|
+
* base — every current failure is net-new — so a missing snapshot fails toward
|
|
130
|
+
* blocking (broken code), never toward a silent pass.
|
|
131
|
+
*/
|
|
132
|
+
function netNewFloorFailures(current, baseline) {
|
|
133
|
+
const alreadyFailing = new Set((baseline?.checks ?? [])
|
|
134
|
+
.filter((c) => c.status === 'fail')
|
|
135
|
+
.map((c) => checkKey(c.pack, c.label)));
|
|
136
|
+
return current.checks.filter((c) => c.status === 'fail' && !alreadyFailing.has(checkKey(c.pack, c.label)));
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=floor-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floor-state.js","sourceRoot":"","sources":["../../src/loop/floor-state.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/scaffold.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export declare const STOP_HOOK_COMMAND: string;
|
|
|
14
14
|
* gathers fast; this generous ceiling covers the cold case.
|
|
15
15
|
*/
|
|
16
16
|
export declare const STOP_HOOK_TIMEOUT_SECONDS = 600;
|
|
17
|
+
/** Sentinel markers bounding the dxkit-managed region of CLAUDE.md. Only
|
|
18
|
+
* the text between them is ever rewritten. */
|
|
19
|
+
export declare const CLAUDE_BLOCK_START = "<!-- dxkit:loop:start -->";
|
|
20
|
+
export declare const CLAUDE_BLOCK_END = "<!-- dxkit:loop:end -->";
|
|
17
21
|
interface LoopScaffoldOpts {
|
|
18
22
|
/**
|
|
19
23
|
* Explicit loop posture to write into `.dxkit/policy.json`. When set
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/loop/scaffold.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhE;;;4EAG4E;AAC5E,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/loop/scaffold.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhE;;;4EAG4E;AAC5E,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;+CAC+C;AAC/C,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAC9D,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AA2B1D,UAAU,gBAAgB;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAWD;;gDAEgD;AAChD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1D;AA6ID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,iBAAiB,CAM7F"}
|
package/dist/loop/scaffold.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.STOP_HOOK_TIMEOUT_SECONDS = exports.STOP_HOOK_COMMAND = void 0;
|
|
36
|
+
exports.CLAUDE_BLOCK_END = exports.CLAUDE_BLOCK_START = exports.STOP_HOOK_TIMEOUT_SECONDS = exports.STOP_HOOK_COMMAND = void 0;
|
|
37
37
|
exports.isClaudeLoopInstalled = isClaudeLoopInstalled;
|
|
38
38
|
exports.installClaudeLoop = installClaudeLoop;
|
|
39
39
|
/**
|
|
@@ -72,8 +72,8 @@ exports.STOP_HOOK_COMMAND = (0, self_invocation_1.dxkitCli)('hook stop-gate');
|
|
|
72
72
|
exports.STOP_HOOK_TIMEOUT_SECONDS = 600;
|
|
73
73
|
/** Sentinel markers bounding the dxkit-managed region of CLAUDE.md. Only
|
|
74
74
|
* the text between them is ever rewritten. */
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
exports.CLAUDE_BLOCK_START = '<!-- dxkit:loop:start -->';
|
|
76
|
+
exports.CLAUDE_BLOCK_END = '<!-- dxkit:loop:end -->';
|
|
77
77
|
/** Preset-agnostic loop norm. Points at `.dxkit/policy.json` as the
|
|
78
78
|
* source of truth for the active posture, so this prose stays correct
|
|
79
79
|
* when the preset is switched without re-running init. */
|
|
@@ -164,19 +164,19 @@ function stopEntry() {
|
|
|
164
164
|
function upsertClaudeBlock(cwd, result) {
|
|
165
165
|
const rel = 'CLAUDE.md';
|
|
166
166
|
const abs = path.join(cwd, rel);
|
|
167
|
-
const block = `${CLAUDE_BLOCK_START}\n${CLAUDE_LOOP_NORM}\n${CLAUDE_BLOCK_END}`;
|
|
167
|
+
const block = `${exports.CLAUDE_BLOCK_START}\n${CLAUDE_LOOP_NORM}\n${exports.CLAUDE_BLOCK_END}`;
|
|
168
168
|
let existing = '';
|
|
169
169
|
let existed = false;
|
|
170
170
|
if (fs.existsSync(abs)) {
|
|
171
171
|
existed = true;
|
|
172
172
|
existing = fs.readFileSync(abs, 'utf8');
|
|
173
173
|
}
|
|
174
|
-
const startIdx = existing.indexOf(CLAUDE_BLOCK_START);
|
|
175
|
-
const endIdx = existing.indexOf(CLAUDE_BLOCK_END);
|
|
174
|
+
const startIdx = existing.indexOf(exports.CLAUDE_BLOCK_START);
|
|
175
|
+
const endIdx = existing.indexOf(exports.CLAUDE_BLOCK_END);
|
|
176
176
|
let next;
|
|
177
177
|
if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
|
|
178
178
|
const before = existing.slice(0, startIdx);
|
|
179
|
-
const after = existing.slice(endIdx + CLAUDE_BLOCK_END.length);
|
|
179
|
+
const after = existing.slice(endIdx + exports.CLAUDE_BLOCK_END.length);
|
|
180
180
|
next = before + block + after;
|
|
181
181
|
if (next === existing) {
|
|
182
182
|
result.skipped.push(rel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/loop/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA,sDAYC;AAiJD,8CAMC;AA9PD;;;;;;;;;;;;;;;GAeG;AACH,uCAAyB;AACzB,2CAA6B;AAE7B,qCAAgE;AAChE,wDAA8C;AAE9C;;;4EAG4E;AAC/D,QAAA,iBAAiB,GAAG,IAAA,0BAAQ,EAAC,gBAAgB,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACU,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAE7C;+CAC+C;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/loop/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/loop/stop-gate.d.ts
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
*/
|
|
31
31
|
import type { GuardrailJsonPayload } from '../baseline/check-renderers';
|
|
32
32
|
import { type LedgerEvent } from './ledger';
|
|
33
|
+
import { type FloorGateOutcome } from './floor-gate';
|
|
33
34
|
/** Subset of the Claude Code Stop-hook stdin payload we consume. */
|
|
34
35
|
interface StopHookPayload {
|
|
35
36
|
readonly session_id?: string;
|
|
@@ -70,7 +71,7 @@ export declare function buildRepairMessage(json: GuardrailJsonPayload): string;
|
|
|
70
71
|
* turns into process output + exit code. `runCheck` is injected so tests
|
|
71
72
|
* can drive the gate without a real repo + baseline.
|
|
72
73
|
*/
|
|
73
|
-
export declare function computeStopGate(cwd: string, payload: StopHookPayload, runCheck: (repoDir: string) => Promise<GuardrailJsonPayload
|
|
74
|
+
export declare function computeStopGate(cwd: string, payload: StopHookPayload, runCheck: (repoDir: string) => Promise<GuardrailJsonPayload>, runFloor?: (repoDir: string) => FloorGateOutcome | null): Promise<StopGateDecision>;
|
|
74
75
|
/**
|
|
75
76
|
* CLI entry for `vyuh-dxkit hook stop-gate`. Reads the hook payload from
|
|
76
77
|
* stdin, runs the guardrail in-process, writes the ledger + last-guardrail
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-gate.d.ts","sourceRoot":"","sources":["../../src/loop/stop-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"stop-gate.d.ts","sourceRoot":"","sources":["../../src/loop/stop-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAWlB,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAEtB,oEAAoE;AACpE,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B;8CAC0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC7D,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAuBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA2BrE;AAqBD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,EAC5D,QAAQ,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAiB,GAClE,OAAO,CAAC,gBAAgB,CAAC,CAuK3B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqI5D"}
|
package/dist/loop/stop-gate.js
CHANGED
|
@@ -42,6 +42,7 @@ const fs = __importStar(require("fs"));
|
|
|
42
42
|
const path = __importStar(require("path"));
|
|
43
43
|
const self_invocation_1 = require("../self-invocation");
|
|
44
44
|
const gate_cache_1 = require("./gate-cache");
|
|
45
|
+
const floor_gate_1 = require("./floor-gate");
|
|
45
46
|
/** Read and parse the stdin hook payload; {} on any problem. */
|
|
46
47
|
function readStdinPayload() {
|
|
47
48
|
let raw = '';
|
|
@@ -120,7 +121,7 @@ function runConfiguredTests(repoDir) {
|
|
|
120
121
|
* turns into process output + exit code. `runCheck` is injected so tests
|
|
121
122
|
* can drive the gate without a real repo + baseline.
|
|
122
123
|
*/
|
|
123
|
-
async function computeStopGate(cwd, payload, runCheck) {
|
|
124
|
+
async function computeStopGate(cwd, payload, runCheck, runFloor = () => null) {
|
|
124
125
|
const start = Date.now();
|
|
125
126
|
const repoDir = payload.cwd || cwd;
|
|
126
127
|
const stopActive = !!payload.stop_hook_active;
|
|
@@ -196,7 +197,42 @@ async function computeStopGate(cwd, payload, runCheck) {
|
|
|
196
197
|
});
|
|
197
198
|
return { outcome: 'block-model', event, message: buildRepairMessage(json) };
|
|
198
199
|
}
|
|
199
|
-
// Guardrail passed — run the
|
|
200
|
+
// Guardrail passed — run the correctness FLOOR (liveness) before the optional
|
|
201
|
+
// configured test command. The floor asks "does this code compile + do the
|
|
202
|
+
// tests it affects pass", and blocks only on failures that are NET-NEW vs the
|
|
203
|
+
// loop's entry snapshot — a pre-existing compile error / failing test recorded
|
|
204
|
+
// on the pristine base never blocks (that would be punishing the agent for
|
|
205
|
+
// debt it did not introduce). A skipped floor (no active pack provides one,
|
|
206
|
+
// or the toolchain isn't installed) is a no-op.
|
|
207
|
+
const floor = runFloor(repoDir);
|
|
208
|
+
if (floor && floor.netNew.length > 0) {
|
|
209
|
+
const floorStatuses = (0, floor_gate_1.floorLedgerStatuses)(floor.result);
|
|
210
|
+
const event = (0, ledger_1.buildLedgerEvent)(repoDir, {
|
|
211
|
+
session_id: session,
|
|
212
|
+
...agentFields,
|
|
213
|
+
cwd: repoDir,
|
|
214
|
+
branch: json.current.branch,
|
|
215
|
+
commit: json.current.commitSha,
|
|
216
|
+
guardrail_status: 'pass',
|
|
217
|
+
net_new_findings: 0,
|
|
218
|
+
baseline_findings: json.baseline.findingsCount,
|
|
219
|
+
files_changed: 0,
|
|
220
|
+
allowed: false,
|
|
221
|
+
stop_hook_active: stopActive,
|
|
222
|
+
tests_status: floorStatuses.tests_status,
|
|
223
|
+
lint_status: 'not_configured',
|
|
224
|
+
typecheck_status: floorStatuses.typecheck_status,
|
|
225
|
+
duration_ms: Date.now() - start,
|
|
226
|
+
});
|
|
227
|
+
return { outcome: 'block-model', event, message: (0, floor_gate_1.buildFloorRepairMessage)(floor.netNew) };
|
|
228
|
+
}
|
|
229
|
+
const floorStatuses = floor
|
|
230
|
+
? (0, floor_gate_1.floorLedgerStatuses)(floor.result)
|
|
231
|
+
: {
|
|
232
|
+
typecheck_status: 'not_configured',
|
|
233
|
+
tests_status: 'not_configured',
|
|
234
|
+
};
|
|
235
|
+
// Guardrail + floor passed — run the optional configured test command.
|
|
200
236
|
const tests = runConfiguredTests(repoDir);
|
|
201
237
|
if (tests.status === 'fail') {
|
|
202
238
|
const event = (0, ledger_1.buildLedgerEvent)(repoDir, {
|
|
@@ -213,7 +249,7 @@ async function computeStopGate(cwd, payload, runCheck) {
|
|
|
213
249
|
stop_hook_active: stopActive,
|
|
214
250
|
tests_status: 'fail',
|
|
215
251
|
lint_status: 'not_configured',
|
|
216
|
-
typecheck_status:
|
|
252
|
+
typecheck_status: floorStatuses.typecheck_status,
|
|
217
253
|
duration_ms: Date.now() - start,
|
|
218
254
|
});
|
|
219
255
|
return {
|
|
@@ -236,9 +272,11 @@ async function computeStopGate(cwd, payload, runCheck) {
|
|
|
236
272
|
files_changed: 0,
|
|
237
273
|
allowed: true,
|
|
238
274
|
stop_hook_active: stopActive,
|
|
239
|
-
|
|
275
|
+
// Prefer the explicit configured-test status; otherwise report what the
|
|
276
|
+
// correctness floor's affected-test stage saw.
|
|
277
|
+
tests_status: tests.status !== 'not_configured' ? tests.status : floorStatuses.tests_status,
|
|
240
278
|
lint_status: 'not_configured',
|
|
241
|
-
typecheck_status:
|
|
279
|
+
typecheck_status: floorStatuses.typecheck_status,
|
|
242
280
|
duration_ms: Date.now() - start,
|
|
243
281
|
});
|
|
244
282
|
return { outcome: 'allow', event, message: '' };
|
|
@@ -337,7 +375,7 @@ async function runStopGate(cwd) {
|
|
|
337
375
|
}
|
|
338
376
|
return json;
|
|
339
377
|
};
|
|
340
|
-
const decision = await computeStopGate(cwd, payload, runCheck);
|
|
378
|
+
const decision = await computeStopGate(cwd, payload, runCheck, floor_gate_1.buildFloorGate);
|
|
341
379
|
// Stamp the active preset onto the ledger line so the audit trail shows
|
|
342
380
|
// which posture was in force when the gate allowed/blocked.
|
|
343
381
|
(0, ledger_1.appendLedgerEvent)(repoDir, { ...decision.event, preset });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-gate.js","sourceRoot":"","sources":["../../src/loop/stop-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stop-gate.js","sourceRoot":"","sources":["../../src/loop/stop-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,8 @@ export declare function installCiDeepSastRefresh(cwd: string, opts?: InstallerOp
|
|
|
88
88
|
* separately).
|
|
89
89
|
*/
|
|
90
90
|
export declare function installPrReview(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
91
|
+
export declare const GITIGNORE_HEADER = "# dxkit \u2014 runtime outputs (analyzer reports + dashboard)";
|
|
92
|
+
export declare const GITIGNORE_ENTRIES: string[];
|
|
91
93
|
/**
|
|
92
94
|
* Seed `.gitignore` with dxkit's runtime-output paths and write a
|
|
93
95
|
* starter `.dxkit-ignore` template explaining the optional dxkit-
|
|
@@ -108,7 +110,25 @@ export declare function installPrReview(cwd: string, opts?: InstallerOpts): Ship
|
|
|
108
110
|
* never overwritten.
|
|
109
111
|
*/
|
|
110
112
|
export declare function installIgnoreFiles(cwd: string, opts?: InstallerOpts): ShipInstallResult;
|
|
113
|
+
/**
|
|
114
|
+
* Wire `vyuh-dxkit hooks activate` into the consumer's `package.json`
|
|
115
|
+
* postinstall script so cloning + `npm install` auto-activates the
|
|
116
|
+
* dxkit hook directory. Closes the per-clone "run this one git config
|
|
117
|
+
* command" friction step that today's installHooks emits as a note.
|
|
118
|
+
*
|
|
119
|
+
* Conflict policy (mirrors the rest of the ship surface):
|
|
120
|
+
* - No package.json → skip cleanly (Python-only / Go-only / etc.
|
|
121
|
+
* repos use the existing manual-activation path).
|
|
122
|
+
* - scripts.postinstall absent → write ours.
|
|
123
|
+
* - scripts.postinstall already mentions `vyuh-dxkit hooks activate`
|
|
124
|
+
* → skip (idempotent re-runs).
|
|
125
|
+
* - scripts.postinstall is set to something else → leave it alone
|
|
126
|
+
* and emit a note asking the consumer to chain. Auto-chaining
|
|
127
|
+
* risks breaking their existing script's exit-code semantics.
|
|
128
|
+
*/
|
|
129
|
+
export declare const POSTINSTALL_CMD = "vyuh-dxkit hooks activate";
|
|
111
130
|
export declare function installHooksPostinstall(cwd: string, _opts?: InstallerOpts): ShipInstallResult;
|
|
131
|
+
export declare const DXKIT_PACKAGE = "@vyuhlabs/dxkit";
|
|
112
132
|
/**
|
|
113
133
|
* Ensure `@vyuhlabs/dxkit` is in the consumer's package.json
|
|
114
134
|
* devDependencies, pinned to the version that ran init.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship-installers.d.ts","sourceRoot":"","sources":["../src/ship-installers.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;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;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CA2D5F;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,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CASjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAUxF;
|
|
1
|
+
{"version":3,"file":"ship-installers.d.ts","sourceRoot":"","sources":["../src/ship-installers.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;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;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CA2D5F;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,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CASjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAUxF;AAED,eAAO,MAAM,gBAAgB,kEAA6D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,UAM7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,iBAAiB,CAqC3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAE3D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,aAAkB,GAAG,iBAAiB,CAiEjG;AAED,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,aAAkB,GACxB,iBAAiB,CAsDnB"}
|
package/dist/ship-installers.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DXKIT_PACKAGE = exports.POSTINSTALL_CMD = exports.GITIGNORE_ENTRIES = exports.GITIGNORE_HEADER = void 0;
|
|
36
37
|
exports.detectDefaultBranch = detectDefaultBranch;
|
|
37
38
|
exports.installHooks = installHooks;
|
|
38
39
|
exports.installDevcontainer = installDevcontainer;
|
|
@@ -400,8 +401,8 @@ function installPrReview(cwd, opts = {}) {
|
|
|
400
401
|
}
|
|
401
402
|
return result;
|
|
402
403
|
}
|
|
403
|
-
|
|
404
|
-
|
|
404
|
+
exports.GITIGNORE_HEADER = '# dxkit — runtime outputs (analyzer reports + dashboard)';
|
|
405
|
+
exports.GITIGNORE_ENTRIES = [
|
|
405
406
|
'.dxkit/reports/',
|
|
406
407
|
'.dxkit/dashboard.html',
|
|
407
408
|
'.dxkit/cache/',
|
|
@@ -434,14 +435,14 @@ function installIgnoreFiles(cwd, opts = {}) {
|
|
|
434
435
|
let existing = '';
|
|
435
436
|
if (fs.existsSync(gitignorePath)) {
|
|
436
437
|
existing = fs.readFileSync(gitignorePath, 'utf-8');
|
|
437
|
-
if (existing.includes(GITIGNORE_HEADER)) {
|
|
438
|
+
if (existing.includes(exports.GITIGNORE_HEADER)) {
|
|
438
439
|
result.skipped.push('.gitignore');
|
|
439
440
|
}
|
|
440
441
|
else {
|
|
441
442
|
const existingLines = new Set(existing.split('\n').map((l) => l.trim()));
|
|
442
|
-
const newEntries = GITIGNORE_ENTRIES.filter((e) => !existingLines.has(e));
|
|
443
|
+
const newEntries = exports.GITIGNORE_ENTRIES.filter((e) => !existingLines.has(e));
|
|
443
444
|
if (newEntries.length > 0) {
|
|
444
|
-
const block = '\n' + GITIGNORE_HEADER + '\n' + newEntries.join('\n') + '\n';
|
|
445
|
+
const block = '\n' + exports.GITIGNORE_HEADER + '\n' + newEntries.join('\n') + '\n';
|
|
445
446
|
fs.appendFileSync(gitignorePath, block, 'utf-8');
|
|
446
447
|
result.installed.push('.gitignore');
|
|
447
448
|
}
|
|
@@ -451,7 +452,7 @@ function installIgnoreFiles(cwd, opts = {}) {
|
|
|
451
452
|
}
|
|
452
453
|
}
|
|
453
454
|
else {
|
|
454
|
-
const content = GITIGNORE_HEADER + '\n' + GITIGNORE_ENTRIES.join('\n') + '\n';
|
|
455
|
+
const content = exports.GITIGNORE_HEADER + '\n' + exports.GITIGNORE_ENTRIES.join('\n') + '\n';
|
|
455
456
|
fs.writeFileSync(gitignorePath, content, 'utf-8');
|
|
456
457
|
result.installed.push('.gitignore');
|
|
457
458
|
}
|
|
@@ -482,7 +483,7 @@ function installIgnoreFiles(cwd, opts = {}) {
|
|
|
482
483
|
* and emit a note asking the consumer to chain. Auto-chaining
|
|
483
484
|
* risks breaking their existing script's exit-code semantics.
|
|
484
485
|
*/
|
|
485
|
-
|
|
486
|
+
exports.POSTINSTALL_CMD = 'vyuh-dxkit hooks activate';
|
|
486
487
|
function installHooksPostinstall(cwd, _opts = {}) {
|
|
487
488
|
const result = emptyResult();
|
|
488
489
|
const pkgPath = path.join(cwd, 'package.json');
|
|
@@ -509,7 +510,7 @@ function installHooksPostinstall(cwd, _opts = {}) {
|
|
|
509
510
|
return result;
|
|
510
511
|
}
|
|
511
512
|
const existing = pkg.scripts?.postinstall;
|
|
512
|
-
if (existing && existing.includes(POSTINSTALL_CMD)) {
|
|
513
|
+
if (existing && existing.includes(exports.POSTINSTALL_CMD)) {
|
|
513
514
|
result.skipped.push('package.json (postinstall)');
|
|
514
515
|
return result;
|
|
515
516
|
}
|
|
@@ -521,15 +522,15 @@ function installHooksPostinstall(cwd, _opts = {}) {
|
|
|
521
522
|
// this, the common case of an existing postinstall (patch-package,
|
|
522
523
|
// a husky bootstrap, etc.) silently leaves the pre-push guardrail
|
|
523
524
|
// inactive — exactly the gap that lets pushes bypass the check.
|
|
524
|
-
pkg.scripts = { ...(pkg.scripts ?? {}), postinstall: `${existing} && ${POSTINSTALL_CMD}` };
|
|
525
|
+
pkg.scripts = { ...(pkg.scripts ?? {}), postinstall: `${existing} && ${exports.POSTINSTALL_CMD}` };
|
|
525
526
|
const trailing = raw.endsWith('\n') ? '\n' : '';
|
|
526
527
|
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + trailing, 'utf-8');
|
|
527
528
|
result.installed.push('package.json (postinstall)');
|
|
528
|
-
result.notes.push(`Chained \`${POSTINSTALL_CMD}\` after your existing postinstall so dxkit hooks activate ` +
|
|
529
|
+
result.notes.push(`Chained \`${exports.POSTINSTALL_CMD}\` after your existing postinstall so dxkit hooks activate ` +
|
|
529
530
|
`on every clone. It exits 0, so your script's result is unaffected.`);
|
|
530
531
|
return result;
|
|
531
532
|
}
|
|
532
|
-
pkg.scripts = { ...(pkg.scripts ?? {}), postinstall: POSTINSTALL_CMD };
|
|
533
|
+
pkg.scripts = { ...(pkg.scripts ?? {}), postinstall: exports.POSTINSTALL_CMD };
|
|
533
534
|
// Preserve trailing newline if the original had one — many editors
|
|
534
535
|
// and linters expect it.
|
|
535
536
|
const trailingNewline = raw.endsWith('\n') ? '\n' : '';
|
|
@@ -539,7 +540,7 @@ function installHooksPostinstall(cwd, _opts = {}) {
|
|
|
539
540
|
'will activate `core.hooksPath = .githooks` automatically. (Manual one-time activation no longer needed.)');
|
|
540
541
|
return result;
|
|
541
542
|
}
|
|
542
|
-
|
|
543
|
+
exports.DXKIT_PACKAGE = '@vyuhlabs/dxkit';
|
|
543
544
|
/**
|
|
544
545
|
* Ensure `@vyuhlabs/dxkit` is in the consumer's package.json
|
|
545
546
|
* devDependencies, pinned to the version that ran init.
|
|
@@ -584,11 +585,11 @@ function installDxkitDevDependency(cwd, _opts = {}) {
|
|
|
584
585
|
// own generated artifacts against the local build, and a package declaring
|
|
585
586
|
// itself as a devDependency is invalid. (Only reachable when init/update
|
|
586
587
|
// runs inside this repo; no customer package is named DXKIT_PACKAGE.)
|
|
587
|
-
if (pkg.name === DXKIT_PACKAGE) {
|
|
588
|
+
if (pkg.name === exports.DXKIT_PACKAGE) {
|
|
588
589
|
result.skipped.push('package.json (devDependencies)');
|
|
589
590
|
return result;
|
|
590
591
|
}
|
|
591
|
-
if (pkg.dependencies?.[DXKIT_PACKAGE] || pkg.devDependencies?.[DXKIT_PACKAGE]) {
|
|
592
|
+
if (pkg.dependencies?.[exports.DXKIT_PACKAGE] || pkg.devDependencies?.[exports.DXKIT_PACKAGE]) {
|
|
592
593
|
result.skipped.push('package.json (devDependencies)');
|
|
593
594
|
return result;
|
|
594
595
|
}
|
|
@@ -598,11 +599,11 @@ function installDxkitDevDependency(cwd, _opts = {}) {
|
|
|
598
599
|
// fallback when the version is unreadable (broken install reports
|
|
599
600
|
// '0.0.0').
|
|
600
601
|
const spec = constants_1.VERSION && constants_1.VERSION !== '0.0.0' ? `^${constants_1.VERSION}` : 'latest';
|
|
601
|
-
pkg.devDependencies = { ...(pkg.devDependencies ?? {}), [DXKIT_PACKAGE]: spec };
|
|
602
|
+
pkg.devDependencies = { ...(pkg.devDependencies ?? {}), [exports.DXKIT_PACKAGE]: spec };
|
|
602
603
|
const trailingNewline = raw.endsWith('\n') ? '\n' : '';
|
|
603
604
|
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + trailingNewline, 'utf-8');
|
|
604
605
|
result.installed.push('package.json (devDependencies)');
|
|
605
|
-
result.notes.push(`Added ${DXKIT_PACKAGE}@${spec} to devDependencies — run \`npm install\` to provision it so the ` +
|
|
606
|
+
result.notes.push(`Added ${exports.DXKIT_PACKAGE}@${spec} to devDependencies — run \`npm install\` to provision it so the ` +
|
|
606
607
|
`git hooks + CI guardrail resolve a project-local dxkit instead of a global (or missing) one.`);
|
|
607
608
|
return result;
|
|
608
609
|
}
|