@vyuhlabs/dxkit 2.21.2 → 2.23.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 +94 -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/analyzers/flow/config.d.ts +10 -0
- package/dist/analyzers/flow/config.d.ts.map +1 -1
- package/dist/analyzers/flow/config.js +29 -0
- package/dist/analyzers/flow/config.js.map +1 -1
- package/dist/analyzers/flow/contract.d.ts +12 -0
- package/dist/analyzers/flow/contract.d.ts.map +1 -1
- package/dist/analyzers/flow/contract.js +20 -0
- package/dist/analyzers/flow/contract.js.map +1 -1
- package/dist/analyzers/flow/diagnose.d.ts +62 -0
- package/dist/analyzers/flow/diagnose.d.ts.map +1 -0
- package/dist/analyzers/flow/diagnose.js +120 -0
- package/dist/analyzers/flow/diagnose.js.map +1 -0
- package/dist/analyzers/flow/publish.d.ts +47 -0
- package/dist/analyzers/flow/publish.d.ts.map +1 -0
- package/dist/analyzers/flow/publish.js +146 -0
- package/dist/analyzers/flow/publish.js.map +1 -0
- package/dist/analyzers/flow/setup.d.ts +71 -0
- package/dist/analyzers/flow/setup.d.ts.map +1 -0
- package/dist/analyzers/flow/setup.js +136 -0
- package/dist/analyzers/flow/setup.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +129 -6
- package/dist/cli.js.map +1 -1
- package/dist/doctor.d.ts +7 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +38 -1
- package/dist/doctor.js.map +1 -1
- package/dist/flow-cli.d.ts +10 -0
- package/dist/flow-cli.d.ts.map +1 -1
- package/dist/flow-cli.js +46 -0
- package/dist/flow-cli.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +6 -0
- package/dist/generator.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/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/prompts.d.ts +15 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +66 -0
- package/dist/prompts.js.map +1 -1
- package/dist/workspace.d.ts +52 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +130 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +1 -1
- package/templates/.claude/skills/dxkit-config/SKILL.md +14 -0
- package/templates/.claude/skills/dxkit-fix/SKILL.md +2 -0
- package/templates/.claude/skills/dxkit-flow/SKILL.md +83 -0
- package/templates/.claude/skills/dxkit-hooks/SKILL.md +1 -1
- package/templates/.claude/skills/dxkit-init/SKILL.md +5 -0
- package/templates/.claude/skills/dxkit-onboard/SKILL.md +2 -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/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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"}
|
package/dist/prompts.d.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { DetectedStack, ResolvedConfig, GenerationMode } from './types';
|
|
2
|
+
import type { FlowDetection, FlowSetupDecision } from './analyzers/flow/setup';
|
|
3
|
+
/**
|
|
4
|
+
* The interactive flow-setup step folded into `init` (there is no standalone
|
|
5
|
+
* `flow init`). Called only when `detectFlowTopology` found a UI→API surface;
|
|
6
|
+
* a repo with none never reaches here, so init stays silent on non-flow repos.
|
|
7
|
+
*
|
|
8
|
+
* Non-interactive (`--yes` / `--detect`, or `forceOn` from `--flow`) takes the
|
|
9
|
+
* gentle default: `warn` posture plus the dominant host-helper strip-prefix.
|
|
10
|
+
* Interactive lets the user pick the posture (with a one-line description of
|
|
11
|
+
* each) and confirm the auto-detected strip-prefix + services.
|
|
12
|
+
*/
|
|
13
|
+
export declare function promptFlowSetup(detection: FlowDetection, options: {
|
|
14
|
+
yes: boolean;
|
|
15
|
+
forceOn: boolean;
|
|
16
|
+
}): Promise<FlowSetupDecision>;
|
|
2
17
|
export declare function promptForConfig(detected: DetectedStack, options: {
|
|
3
18
|
yes: boolean;
|
|
4
19
|
detect: boolean;
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAuB/E;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,iBAAiB,CAAC,CAwD5B;AAiBD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAiE3D"}
|
package/dist/prompts.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.promptFlowSetup = promptFlowSetup;
|
|
36
37
|
exports.promptForConfig = promptForConfig;
|
|
37
38
|
const readline = __importStar(require("readline/promises"));
|
|
38
39
|
const process_1 = require("process");
|
|
@@ -49,6 +50,71 @@ async function confirm(rl, question, defaultYes) {
|
|
|
49
50
|
return defaultYes;
|
|
50
51
|
return answer.trim().toLowerCase().startsWith('y');
|
|
51
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* The interactive flow-setup step folded into `init` (there is no standalone
|
|
55
|
+
* `flow init`). Called only when `detectFlowTopology` found a UI→API surface;
|
|
56
|
+
* a repo with none never reaches here, so init stays silent on non-flow repos.
|
|
57
|
+
*
|
|
58
|
+
* Non-interactive (`--yes` / `--detect`, or `forceOn` from `--flow`) takes the
|
|
59
|
+
* gentle default: `warn` posture plus the dominant host-helper strip-prefix.
|
|
60
|
+
* Interactive lets the user pick the posture (with a one-line description of
|
|
61
|
+
* each) and confirm the auto-detected strip-prefix + services.
|
|
62
|
+
*/
|
|
63
|
+
async function promptFlowSetup(detection, options) {
|
|
64
|
+
const defaultPrefixes = detection.suggestedStripPrefixes.slice(0, 1);
|
|
65
|
+
// Non-interactive default: warn + the dominant strip-prefix, no participants
|
|
66
|
+
// (recording multiple services is an explicit interactive confirm).
|
|
67
|
+
if (options.yes || options.forceOn) {
|
|
68
|
+
return { mode: 'warn', stripUrlPrefixes: defaultPrefixes };
|
|
69
|
+
}
|
|
70
|
+
const rl = readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
|
|
71
|
+
try {
|
|
72
|
+
logger.header('UI→API integration gate');
|
|
73
|
+
logger.info(`Detected ${detection.callCount} client call(s) → ${detection.routeCount} route(s) ` +
|
|
74
|
+
`(${detection.resolvedCount} already resolved).`);
|
|
75
|
+
if (detection.topology !== 'monorepo') {
|
|
76
|
+
logger.info(`This repo has only the ${detection.topology === 'consumer-only' ? 'client' : 'server'} ` +
|
|
77
|
+
`side; the gate resolves calls against a counterpart contract (set up later with ` +
|
|
78
|
+
`cross-repo publish) and stays inert until one is present.`);
|
|
79
|
+
}
|
|
80
|
+
console.log(''); // slop-ok
|
|
81
|
+
console.log(' How should a PR that breaks an integration be treated?'); // slop-ok
|
|
82
|
+
console.log(' warn surface broken integrations as warnings (recommended)'); // slop-ok
|
|
83
|
+
console.log(' block fail the check on an exact broken integration (confidence-gated)'); // slop-ok
|
|
84
|
+
console.log(' off scaffold config only, do not gate yet'); // slop-ok
|
|
85
|
+
const mode = await selectMode(rl, 'Posture?', 'warn');
|
|
86
|
+
let stripUrlPrefixes = [];
|
|
87
|
+
if (detection.suggestedStripPrefixes.length > 0) {
|
|
88
|
+
const top = detection.suggestedStripPrefixes[0];
|
|
89
|
+
const ok = await confirm(rl, `Strip base-URL prefix "${top}" so calls match served routes?`, true);
|
|
90
|
+
if (ok)
|
|
91
|
+
stripUrlPrefixes = [top];
|
|
92
|
+
}
|
|
93
|
+
let participants;
|
|
94
|
+
if (detection.detectedServices.length >= 2) {
|
|
95
|
+
const list = detection.detectedServices.join(', ');
|
|
96
|
+
const ok = await confirm(rl, `Detected ${detection.detectedServices.length} services (${list}). Record them as participants?`, true);
|
|
97
|
+
if (ok)
|
|
98
|
+
participants = detection.detectedServices.map((name) => ({ name, path: name }));
|
|
99
|
+
}
|
|
100
|
+
return { mode, stripUrlPrefixes, ...(participants ? { participants } : {}) };
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
rl.close();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Ask for a flow posture, re-prompting until a valid value (or the default on
|
|
107
|
+
* an empty answer). Kept local — the only three-way select dxkit prompts for. */
|
|
108
|
+
async function selectMode(rl, question, defaultValue) {
|
|
109
|
+
for (;;) {
|
|
110
|
+
const answer = (await rl.question(` ${question} [${defaultValue}]: `)).trim().toLowerCase();
|
|
111
|
+
if (!answer)
|
|
112
|
+
return defaultValue;
|
|
113
|
+
if (answer === 'warn' || answer === 'block' || answer === 'off')
|
|
114
|
+
return answer;
|
|
115
|
+
logger.warn('Enter one of: warn, block, off.');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
52
118
|
async function promptForConfig(detected, options) {
|
|
53
119
|
// Non-interactive: accept all defaults
|
|
54
120
|
if (options.yes || options.detect) {
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,0CA2DC;AAiBD,0CAoEC;AAtLD,4DAA8C;AAC9C,qCAAwC;AAExC,2CAA+C;AAC/C,iDAAmC;AAInC,KAAK,UAAU,GAAG,CAChB,EAAsB,EACtB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,EAAsB,EACtB,QAAgB,EAChB,UAAmB;IAEnB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,KAAK,IAAI,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,eAAe,CACnC,SAAwB,EACxB,OAA2C;IAE3C,MAAM,eAAe,GAAG,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAErE,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,eAAK,EAAE,MAAM,EAAE,gBAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CACT,YAAY,SAAS,CAAC,SAAS,qBAAqB,SAAS,CAAC,UAAU,YAAY;YAClF,IAAI,SAAS,CAAC,aAAa,qBAAqB,CACnD,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CACT,0BAA0B,SAAS,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG;gBACvF,kFAAkF;gBAClF,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QAC3B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC,UAAU;QACnF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC,UAAU;QAC3F,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC,UAAU;QACtG,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC,UAAU;QAC3E,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,EAAE,EACF,0BAA0B,GAAG,iCAAiC,EAC9D,IAAI,CACL,CAAC;YACF,IAAI,EAAE;gBAAE,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,YAA+C,CAAC;QACpD,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,EAAE,EACF,YAAY,SAAS,CAAC,gBAAgB,CAAC,MAAM,cAAc,IAAI,iCAAiC,EAChG,IAAI,CACL,CAAC;YACF,IAAI,EAAE;gBAAE,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/E,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;kFACkF;AAClF,KAAK,UAAU,UAAU,CACvB,EAAsB,EACtB,QAAgB,EAChB,YAA0B;IAE1B,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7F,IAAI,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC;QACjC,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,QAAuB,EACvB,OAAyD;IAEzD,uCAAuC;IACvC,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,WAAW,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW;gBACjD,iBAAiB,EAAE,4BAAgB;gBACnC,UAAU,EAAE,IAAI;aACjB;YACD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,eAAK,EAAE,MAAM,EAAE,gBAAM,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,4DAA4D;YAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAyC,EAAE,CAAC;gBAC3F,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,WAAW,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,EAAE,EACF,sDAAsD,EACtD,IAAI,CACL,CAAC;QACF,MAAM,IAAI,GAAmB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,IAAI,iBAAiB,GAAG,4BAAgB,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,iBAAiB,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,qBAAqB,EAAE,4BAAgB,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO;YACL,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,WAAW;gBACX,iBAAiB;gBACjB,UAAU,EAAE,IAAI;aACjB;YACD,IAAI;SACL,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `.dxkit/workspace.json` — the cross-repo participants primitive.
|
|
3
|
+
*
|
|
4
|
+
* A deliberately shared seam, NOT nested under `flow`: it names the repos /
|
|
5
|
+
* services that make up a system, and flow contributes the FIRST relationship
|
|
6
|
+
* over it (consumer→provider api-bindings). Future cross-repo concerns
|
|
7
|
+
* (shared-datastore, emits/consumes-event, build-dependency) read the same
|
|
8
|
+
* participant list, so the primitive lives at the top level rather than inside
|
|
9
|
+
* any one feature's config.
|
|
10
|
+
*
|
|
11
|
+
* A `participant` is a repo/service with a source path and optional base URLs
|
|
12
|
+
* (the addresses its served routes answer on). An `external` is a third-party
|
|
13
|
+
* API addressed by base URL — optionally with an OpenAPI spec dxkit consumes to
|
|
14
|
+
* verify calls — that this system talks to but does not serve.
|
|
15
|
+
*
|
|
16
|
+
* Single reader/writer of the file (Rule 2). Fail-open: a missing or malformed
|
|
17
|
+
* file yields `null` (no participants), never a throw — the same posture every
|
|
18
|
+
* other flow surface takes toward optional config.
|
|
19
|
+
*/
|
|
20
|
+
/** A repo/service in the system — a source root plus the base URLs its served
|
|
21
|
+
* routes answer on (used to attribute a consumed call to the provider it
|
|
22
|
+
* targets). `path` is repo-relative or a `../sibling` path. */
|
|
23
|
+
export interface WorkspaceParticipant {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly path: string;
|
|
26
|
+
readonly baseUrls?: readonly string[];
|
|
27
|
+
/** Git ref to pin the participant's contract at when publishing (e.g. `main`).
|
|
28
|
+
* Omitted → gather from the participant's current working tree. */
|
|
29
|
+
readonly ref?: string;
|
|
30
|
+
}
|
|
31
|
+
/** A third-party API the system consumes but does not serve. `spec` (an
|
|
32
|
+
* OpenAPI/spec file) lets dxkit verify the call shape without serving it. */
|
|
33
|
+
export interface WorkspaceExternal {
|
|
34
|
+
readonly name: string;
|
|
35
|
+
readonly baseUrls?: readonly string[];
|
|
36
|
+
readonly spec?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface Workspace {
|
|
39
|
+
readonly participants: readonly WorkspaceParticipant[];
|
|
40
|
+
readonly external: readonly WorkspaceExternal[];
|
|
41
|
+
}
|
|
42
|
+
/** Absolute path to a repo's workspace file. */
|
|
43
|
+
export declare function workspacePath(cwd: string): string;
|
|
44
|
+
/** Structure-check a parsed workspace object. Returns `null` when it names no
|
|
45
|
+
* participants and no externals (an empty file is indistinguishable from an
|
|
46
|
+
* absent one — both mean "no configured topology"). */
|
|
47
|
+
export declare function normalizeWorkspace(raw: unknown): Workspace | null;
|
|
48
|
+
/** Read `.dxkit/workspace.json`. Fail-open: absent or malformed → `null`. */
|
|
49
|
+
export declare function readWorkspace(cwd: string): Workspace | null;
|
|
50
|
+
/** Write `.dxkit/workspace.json`, creating `.dxkit/` as needed. */
|
|
51
|
+
export declare function writeWorkspace(cwd: string, ws: Workspace): void;
|
|
52
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH;;gEAEgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC;wEACoE;IACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;8EAC8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAID,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AA+BD;;wDAEwD;AACxD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAWjE;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQ3D;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,CAI/D"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `.dxkit/workspace.json` — the cross-repo participants primitive.
|
|
4
|
+
*
|
|
5
|
+
* A deliberately shared seam, NOT nested under `flow`: it names the repos /
|
|
6
|
+
* services that make up a system, and flow contributes the FIRST relationship
|
|
7
|
+
* over it (consumer→provider api-bindings). Future cross-repo concerns
|
|
8
|
+
* (shared-datastore, emits/consumes-event, build-dependency) read the same
|
|
9
|
+
* participant list, so the primitive lives at the top level rather than inside
|
|
10
|
+
* any one feature's config.
|
|
11
|
+
*
|
|
12
|
+
* A `participant` is a repo/service with a source path and optional base URLs
|
|
13
|
+
* (the addresses its served routes answer on). An `external` is a third-party
|
|
14
|
+
* API addressed by base URL — optionally with an OpenAPI spec dxkit consumes to
|
|
15
|
+
* verify calls — that this system talks to but does not serve.
|
|
16
|
+
*
|
|
17
|
+
* Single reader/writer of the file (Rule 2). Fail-open: a missing or malformed
|
|
18
|
+
* file yields `null` (no participants), never a throw — the same posture every
|
|
19
|
+
* other flow surface takes toward optional config.
|
|
20
|
+
*/
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.workspacePath = workspacePath;
|
|
56
|
+
exports.normalizeWorkspace = normalizeWorkspace;
|
|
57
|
+
exports.readWorkspace = readWorkspace;
|
|
58
|
+
exports.writeWorkspace = writeWorkspace;
|
|
59
|
+
const fs = __importStar(require("fs"));
|
|
60
|
+
const path = __importStar(require("path"));
|
|
61
|
+
const WORKSPACE_REL = path.join('.dxkit', 'workspace.json');
|
|
62
|
+
/** Absolute path to a repo's workspace file. */
|
|
63
|
+
function workspacePath(cwd) {
|
|
64
|
+
return path.join(cwd, WORKSPACE_REL);
|
|
65
|
+
}
|
|
66
|
+
function stringList(v) {
|
|
67
|
+
return Array.isArray(v) ? v.filter((s) => typeof s === 'string') : [];
|
|
68
|
+
}
|
|
69
|
+
function normalizeParticipant(v) {
|
|
70
|
+
if (!v || typeof v !== 'object')
|
|
71
|
+
return null;
|
|
72
|
+
const r = v;
|
|
73
|
+
if (typeof r.name !== 'string' || typeof r.path !== 'string')
|
|
74
|
+
return null;
|
|
75
|
+
const baseUrls = stringList(r.baseUrls);
|
|
76
|
+
return {
|
|
77
|
+
name: r.name,
|
|
78
|
+
path: r.path,
|
|
79
|
+
...(baseUrls.length ? { baseUrls } : {}),
|
|
80
|
+
...(typeof r.ref === 'string' ? { ref: r.ref } : {}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function normalizeExternal(v) {
|
|
84
|
+
if (!v || typeof v !== 'object')
|
|
85
|
+
return null;
|
|
86
|
+
const r = v;
|
|
87
|
+
if (typeof r.name !== 'string')
|
|
88
|
+
return null;
|
|
89
|
+
const baseUrls = stringList(r.baseUrls);
|
|
90
|
+
return {
|
|
91
|
+
name: r.name,
|
|
92
|
+
...(baseUrls.length ? { baseUrls } : {}),
|
|
93
|
+
...(typeof r.spec === 'string' ? { spec: r.spec } : {}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** Structure-check a parsed workspace object. Returns `null` when it names no
|
|
97
|
+
* participants and no externals (an empty file is indistinguishable from an
|
|
98
|
+
* absent one — both mean "no configured topology"). */
|
|
99
|
+
function normalizeWorkspace(raw) {
|
|
100
|
+
if (!raw || typeof raw !== 'object')
|
|
101
|
+
return null;
|
|
102
|
+
const r = raw;
|
|
103
|
+
const participants = Array.isArray(r.participants)
|
|
104
|
+
? r.participants.map(normalizeParticipant).filter((p) => p !== null)
|
|
105
|
+
: [];
|
|
106
|
+
const external = Array.isArray(r.external)
|
|
107
|
+
? r.external.map(normalizeExternal).filter((e) => e !== null)
|
|
108
|
+
: [];
|
|
109
|
+
if (participants.length === 0 && external.length === 0)
|
|
110
|
+
return null;
|
|
111
|
+
return { participants, external };
|
|
112
|
+
}
|
|
113
|
+
/** Read `.dxkit/workspace.json`. Fail-open: absent or malformed → `null`. */
|
|
114
|
+
function readWorkspace(cwd) {
|
|
115
|
+
let raw;
|
|
116
|
+
try {
|
|
117
|
+
raw = JSON.parse(fs.readFileSync(workspacePath(cwd), 'utf8'));
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return normalizeWorkspace(raw);
|
|
123
|
+
}
|
|
124
|
+
/** Write `.dxkit/workspace.json`, creating `.dxkit/` as needed. */
|
|
125
|
+
function writeWorkspace(cwd, ws) {
|
|
126
|
+
const abs = workspacePath(cwd);
|
|
127
|
+
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
128
|
+
fs.writeFileSync(abs, JSON.stringify(ws, null, 2) + '\n', 'utf8');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|