@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.
Files changed (114) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/analyzers/correctness/run.d.ts +79 -0
  3. package/dist/analyzers/correctness/run.d.ts.map +1 -0
  4. package/dist/analyzers/correctness/run.js +173 -0
  5. package/dist/analyzers/correctness/run.js.map +1 -0
  6. package/dist/analyzers/correctness/surface-run.d.ts +73 -0
  7. package/dist/analyzers/correctness/surface-run.d.ts.map +1 -0
  8. package/dist/analyzers/correctness/surface-run.js +142 -0
  9. package/dist/analyzers/correctness/surface-run.js.map +1 -0
  10. package/dist/analyzers/correctness/surface.d.ts +69 -0
  11. package/dist/analyzers/correctness/surface.d.ts.map +1 -0
  12. package/dist/analyzers/correctness/surface.js +281 -0
  13. package/dist/analyzers/correctness/surface.js.map +1 -0
  14. package/dist/analyzers/flow/config.d.ts +10 -0
  15. package/dist/analyzers/flow/config.d.ts.map +1 -1
  16. package/dist/analyzers/flow/config.js +29 -0
  17. package/dist/analyzers/flow/config.js.map +1 -1
  18. package/dist/analyzers/flow/contract.d.ts +12 -0
  19. package/dist/analyzers/flow/contract.d.ts.map +1 -1
  20. package/dist/analyzers/flow/contract.js +20 -0
  21. package/dist/analyzers/flow/contract.js.map +1 -1
  22. package/dist/analyzers/flow/diagnose.d.ts +62 -0
  23. package/dist/analyzers/flow/diagnose.d.ts.map +1 -0
  24. package/dist/analyzers/flow/diagnose.js +120 -0
  25. package/dist/analyzers/flow/diagnose.js.map +1 -0
  26. package/dist/analyzers/flow/publish.d.ts +47 -0
  27. package/dist/analyzers/flow/publish.d.ts.map +1 -0
  28. package/dist/analyzers/flow/publish.js +146 -0
  29. package/dist/analyzers/flow/publish.js.map +1 -0
  30. package/dist/analyzers/flow/setup.d.ts +71 -0
  31. package/dist/analyzers/flow/setup.d.ts.map +1 -0
  32. package/dist/analyzers/flow/setup.js +136 -0
  33. package/dist/analyzers/flow/setup.js.map +1 -0
  34. package/dist/cli.d.ts.map +1 -1
  35. package/dist/cli.js +129 -6
  36. package/dist/cli.js.map +1 -1
  37. package/dist/doctor.d.ts +7 -0
  38. package/dist/doctor.d.ts.map +1 -1
  39. package/dist/doctor.js +38 -1
  40. package/dist/doctor.js.map +1 -1
  41. package/dist/flow-cli.d.ts +10 -0
  42. package/dist/flow-cli.d.ts.map +1 -1
  43. package/dist/flow-cli.js +46 -0
  44. package/dist/flow-cli.js.map +1 -1
  45. package/dist/generator.d.ts.map +1 -1
  46. package/dist/generator.js +6 -0
  47. package/dist/generator.js.map +1 -1
  48. package/dist/languages/capabilities/correctness.d.ts +54 -0
  49. package/dist/languages/capabilities/correctness.d.ts.map +1 -0
  50. package/dist/languages/capabilities/correctness.js +20 -0
  51. package/dist/languages/capabilities/correctness.js.map +1 -0
  52. package/dist/languages/csharp.d.ts.map +1 -1
  53. package/dist/languages/csharp.js +84 -0
  54. package/dist/languages/csharp.js.map +1 -1
  55. package/dist/languages/go.d.ts.map +1 -1
  56. package/dist/languages/go.js +51 -0
  57. package/dist/languages/go.js.map +1 -1
  58. package/dist/languages/index.d.ts +11 -0
  59. package/dist/languages/index.d.ts.map +1 -1
  60. package/dist/languages/index.js +12 -0
  61. package/dist/languages/index.js.map +1 -1
  62. package/dist/languages/java.d.ts.map +1 -1
  63. package/dist/languages/java.js +12 -0
  64. package/dist/languages/java.js.map +1 -1
  65. package/dist/languages/jvm-build.d.ts +54 -0
  66. package/dist/languages/jvm-build.d.ts.map +1 -0
  67. package/dist/languages/jvm-build.js +245 -0
  68. package/dist/languages/jvm-build.js.map +1 -0
  69. package/dist/languages/kotlin.d.ts.map +1 -1
  70. package/dist/languages/kotlin.js +13 -0
  71. package/dist/languages/kotlin.js.map +1 -1
  72. package/dist/languages/python.d.ts.map +1 -1
  73. package/dist/languages/python.js +78 -0
  74. package/dist/languages/python.js.map +1 -1
  75. package/dist/languages/ruby.d.ts.map +1 -1
  76. package/dist/languages/ruby.js +64 -0
  77. package/dist/languages/ruby.js.map +1 -1
  78. package/dist/languages/rust.d.ts.map +1 -1
  79. package/dist/languages/rust.js +110 -0
  80. package/dist/languages/rust.js.map +1 -1
  81. package/dist/languages/types.d.ts +20 -0
  82. package/dist/languages/types.d.ts.map +1 -1
  83. package/dist/languages/typescript.d.ts.map +1 -1
  84. package/dist/languages/typescript.js +109 -0
  85. package/dist/languages/typescript.js.map +1 -1
  86. package/dist/loop/floor-gate.d.ts +54 -0
  87. package/dist/loop/floor-gate.d.ts.map +1 -0
  88. package/dist/loop/floor-gate.js +157 -0
  89. package/dist/loop/floor-gate.js.map +1 -0
  90. package/dist/loop/floor-state.d.ts +66 -0
  91. package/dist/loop/floor-state.d.ts.map +1 -0
  92. package/dist/loop/floor-state.js +138 -0
  93. package/dist/loop/floor-state.js.map +1 -0
  94. package/dist/loop/stop-gate.d.ts +2 -1
  95. package/dist/loop/stop-gate.d.ts.map +1 -1
  96. package/dist/loop/stop-gate.js +44 -6
  97. package/dist/loop/stop-gate.js.map +1 -1
  98. package/dist/prompts.d.ts +15 -0
  99. package/dist/prompts.d.ts.map +1 -1
  100. package/dist/prompts.js +66 -0
  101. package/dist/prompts.js.map +1 -1
  102. package/dist/workspace.d.ts +52 -0
  103. package/dist/workspace.d.ts.map +1 -0
  104. package/dist/workspace.js +130 -0
  105. package/dist/workspace.js.map +1 -0
  106. package/package.json +1 -1
  107. package/templates/.claude/skills/dxkit-config/SKILL.md +14 -0
  108. package/templates/.claude/skills/dxkit-fix/SKILL.md +2 -0
  109. package/templates/.claude/skills/dxkit-flow/SKILL.md +83 -0
  110. package/templates/.claude/skills/dxkit-hooks/SKILL.md +1 -1
  111. package/templates/.claude/skills/dxkit-init/SKILL.md +5 -0
  112. package/templates/.claude/skills/dxkit-onboard/SKILL.md +2 -0
  113. package/templates/.githooks/pre-push +10 -0
  114. 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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"}
@@ -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>): Promise<StopGateDecision>;
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;AAYlB,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,GAC3D,OAAO,CAAC,gBAAgB,CAAC,CAiI3B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqI5D"}
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"}
@@ -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 optional configured test command.
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: 'not_configured',
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
- tests_status: tests.status,
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: 'not_configured',
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;
@@ -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;AAwBxE,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"}
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -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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"}