@jeger-ai/opengantry 2.2.5 → 2.3.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/README.md +5 -4
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +2 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/status.js +2 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/lib/audience-output.d.ts +1 -1
- package/dist/cli/lib/audience-output.d.ts.map +1 -1
- package/dist/cli/lib/audience-output.js +16 -27
- package/dist/cli/lib/audience-output.js.map +1 -1
- package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
- package/dist/cli/lib/context-feed-remediation.js +25 -3
- package/dist/cli/lib/context-feed-remediation.js.map +1 -1
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +2 -0
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/init-plan.d.ts.map +1 -1
- package/dist/cli/lib/init-plan.js +6 -18
- package/dist/cli/lib/init-plan.js.map +1 -1
- package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
- package/dist/cli/lib/kpi-engine.js +4 -0
- package/dist/cli/lib/kpi-engine.js.map +1 -1
- package/dist/cli/lib/legislate-forbidden-zone.d.ts +7 -0
- package/dist/cli/lib/legislate-forbidden-zone.d.ts.map +1 -0
- package/dist/cli/lib/legislate-forbidden-zone.js +43 -0
- package/dist/cli/lib/legislate-forbidden-zone.js.map +1 -0
- package/dist/cli/lib/legislate.d.ts.map +1 -1
- package/dist/cli/lib/legislate.js +4 -0
- package/dist/cli/lib/legislate.js.map +1 -1
- package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/start-orchestration.js +28 -13
- package/dist/cli/lib/start-orchestration.js.map +1 -1
- package/dist/cli/lib/verify-engine.d.ts +2 -0
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.d.ts +54 -8
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +0 -25
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
- package/dist/cli/lib/verify-hints.d.ts +2 -1
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-hints.js +17 -8
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-presentation.d.ts +4 -4
- package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
- package/dist/cli/lib/verify-presentation.js +6 -2
- package/dist/cli/lib/verify-presentation.js.map +1 -1
- package/dist/cli/lib/version.gen.d.ts +1 -1
- package/dist/cli/lib/version.gen.js +1 -1
- package/dist/cli/lib/worker-log-integrity.d.ts +4 -0
- package/dist/cli/lib/worker-log-integrity.d.ts.map +1 -0
- package/dist/cli/lib/worker-log-integrity.js +48 -0
- package/dist/cli/lib/worker-log-integrity.js.map +1 -0
- package/dist/cli/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +0 -13
- package/dist/cli/program-core.js.map +1 -1
- package/package.json +3 -2
- package/templates/integrations/compatibility.json +1 -1
- package/templates/scripts/gxt-manifest-lib.mjs +29 -4
- package/templates/scripts/validate-gxt.sh +6 -1
- package/dist/cli/lib/verify-failure-format.d.ts +0 -4
- package/dist/cli/lib/verify-failure-format.d.ts.map +0 -1
- package/dist/cli/lib/verify-failure-format.js +0 -6
- package/dist/cli/lib/verify-failure-format.js.map +0 -1
- package/dist/cli/lib/verify-failure-normalize-types.d.ts +0 -32
- package/dist/cli/lib/verify-failure-normalize-types.d.ts.map +0 -1
- package/dist/cli/lib/verify-failure-normalize-types.js +0 -2
- package/dist/cli/lib/verify-failure-normalize-types.js.map +0 -1
- package/dist/cli/lib/verify-failure-presentation-types.d.ts +0 -29
- package/dist/cli/lib/verify-failure-presentation-types.d.ts.map +0 -1
- package/dist/cli/lib/verify-failure-presentation-types.js +0 -2
- package/dist/cli/lib/verify-failure-presentation-types.js.map +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const PLACEHOLDER_QUOTE = "REPLACE_WITH_VERBATIM";
|
|
4
|
+
/** Warn-level integrity checks for WORKER_LOG.md before verify fails opaquely. */
|
|
5
|
+
export function runWorkerLogIntegrityDoctorChecks(repoRoot) {
|
|
6
|
+
const logPath = path.join(repoRoot, "WORKER_LOG.md");
|
|
7
|
+
if (!fs.existsSync(logPath)) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
const content = fs.readFileSync(logPath, "utf8");
|
|
11
|
+
const lines = [];
|
|
12
|
+
if (/^<{7}\s/m.test(content) || /^>{7}\s/m.test(content) || /^={7}$/m.test(content)) {
|
|
13
|
+
lines.push({
|
|
14
|
+
level: "warn",
|
|
15
|
+
message: "WORKER_LOG.md: merge conflict markers detected — resolve before verify",
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const dodLines = content.split("\n").filter((line) => /^- DoD \d+/.test(line.trim()));
|
|
19
|
+
const seen = new Set();
|
|
20
|
+
for (const line of dodLines) {
|
|
21
|
+
const norm = line.trim();
|
|
22
|
+
if (seen.has(norm)) {
|
|
23
|
+
lines.push({
|
|
24
|
+
level: "warn",
|
|
25
|
+
message: `WORKER_LOG.md: duplicate DoD trace line — ${norm.slice(0, 72)}`,
|
|
26
|
+
});
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
seen.add(norm);
|
|
30
|
+
}
|
|
31
|
+
if (content.includes(PLACEHOLDER_QUOTE)) {
|
|
32
|
+
lines.push({
|
|
33
|
+
level: "warn",
|
|
34
|
+
message: "WORKER_LOG.md: placeholder trace quote remains (REPLACE_WITH_VERBATIM)",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const emptyQuoteLines = content
|
|
38
|
+
.split("\n")
|
|
39
|
+
.filter((line) => /^- DoD \d+/.test(line.trim()) && line.includes('trace_quote: ""'));
|
|
40
|
+
if (emptyQuoteLines.length > 0) {
|
|
41
|
+
lines.push({
|
|
42
|
+
level: "warn",
|
|
43
|
+
message: "WORKER_LOG.md: empty trace_quote on DoD line(s)",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return lines;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=worker-log-integrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-log-integrity.js","sourceRoot":"","sources":["../../../src/cli/lib/worker-log-integrity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAElD,kFAAkF;AAClF,MAAM,UAAU,iCAAiC,CAAC,QAAgB;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,wEAAwE;SAClF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,6CAA6C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;aAC1E,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,wEAAwE;SAClF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GAAG,OAAO;SAC5B,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,iDAAiD;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-core.d.ts","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program-core.d.ts","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiK3D"}
|
package/dist/cli/program-core.js
CHANGED
|
@@ -10,7 +10,6 @@ import { runStart } from "./commands/start.js";
|
|
|
10
10
|
import { runTriage } from "./commands/triage.js";
|
|
11
11
|
import { readStdinIfEmpty } from "./lib/program-stdin.js";
|
|
12
12
|
import { getOutputAudience } from "./lib/output-context.js";
|
|
13
|
-
import { logWarn } from "./lib/cli-io.js";
|
|
14
13
|
import { logError, setExitCode } from "./lib/cli-io.js";
|
|
15
14
|
export function registerCoreCommands(program) {
|
|
16
15
|
program
|
|
@@ -78,18 +77,6 @@ export function registerCoreCommands(program) {
|
|
|
78
77
|
.action((options) => {
|
|
79
78
|
runUpgrade({ ...options, apply: true });
|
|
80
79
|
});
|
|
81
|
-
upgradeCmd
|
|
82
|
-
.option("--apply", "Apply a Teacher-signed upgrade mission after hash verification")
|
|
83
|
-
.option("--dry-run", "Print upgrade plan without writing staging dir or mission YAML")
|
|
84
|
-
.option("--json", "Emit structured JSON")
|
|
85
|
-
.option("--msn <id>", "Mission id for upgrade plan (default: next MSN in 9000-9099 band)")
|
|
86
|
-
.option("--mission <path>", "Signed upgrade mission YAML (required for --apply unless pinned)")
|
|
87
|
-
.action((options) => {
|
|
88
|
-
if (options.apply === true || options.dryRun === true) {
|
|
89
|
-
logWarn("gantry upgrade: --apply and --dry-run on the parent command are deprecated; use `gantry upgrade apply` or `gantry upgrade plan` (removal planned in v2.3).");
|
|
90
|
-
}
|
|
91
|
-
runUpgrade(options);
|
|
92
|
-
});
|
|
93
80
|
program
|
|
94
81
|
.command("triage")
|
|
95
82
|
.description("Foreman-style triage from manifest (SOUL-aligned)")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-core.js","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"program-core.js","sourceRoot":"","sources":["../../src/cli/program-core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeger-ai/opengantry",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Open Source Gantry — vendor-neutral GXT substrate and Gantry CLI for local git-native agent governance",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"gen:version": "node scripts/gen-version.mjs",
|
|
20
20
|
"gen:catalog": "node scripts/gen-asset-catalog.mjs",
|
|
21
|
-
"
|
|
21
|
+
"gen:dogfood": "node scripts/gen-dogfood.mjs",
|
|
22
|
+
"build": "npm run gen:version && npm run gen:catalog && npm run gen:dogfood && tsc",
|
|
22
23
|
"gapman": "node dist/cli/index.js",
|
|
23
24
|
"lint": "eslint src/cli/**/*.ts",
|
|
24
25
|
"check:changed": "./scripts/check-changed-code.sh",
|
|
@@ -129,6 +129,11 @@ export function loadTrustedAutomationRules(repoRoot) {
|
|
|
129
129
|
|
|
130
130
|
export function matchGlob(pattern, filePath) {
|
|
131
131
|
const normalized = normalizePath(filePath);
|
|
132
|
+
const g = normalizePath(pattern);
|
|
133
|
+
if (g.startsWith("**/")) {
|
|
134
|
+
const suffix = g.slice(3);
|
|
135
|
+
return normalized.endsWith(suffix) || normalized.includes(`/${suffix}`);
|
|
136
|
+
}
|
|
132
137
|
const re = new RegExp(
|
|
133
138
|
`^${normalizePath(pattern)
|
|
134
139
|
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
@@ -187,6 +192,16 @@ export function validateManifestStructure(repoRoot) {
|
|
|
187
192
|
if (!Array.isArray(m.risk_keywords)) {
|
|
188
193
|
throw new Error("validate-gxt: risk_keywords must be an array");
|
|
189
194
|
}
|
|
195
|
+
if (m.perimeter_protected !== undefined) {
|
|
196
|
+
if (!Array.isArray(m.perimeter_protected)) {
|
|
197
|
+
throw new Error("validate-gxt: perimeter_protected must be an array when present");
|
|
198
|
+
}
|
|
199
|
+
for (const g of m.perimeter_protected) {
|
|
200
|
+
if (typeof g !== "string" || g.length === 0) {
|
|
201
|
+
throw new Error("validate-gxt: perimeter_protected items must be non-empty strings");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
190
205
|
for (const [key, skill] of Object.entries(skills)) {
|
|
191
206
|
if (!skill || typeof skill !== "object") {
|
|
192
207
|
throw new Error(`validate-gxt: skills.${key} must be an object`);
|
|
@@ -443,6 +458,8 @@ export function evaluateTrustedAutomationCommit(repoRoot, commitSha) {
|
|
|
443
458
|
|
|
444
459
|
/**
|
|
445
460
|
* Evaluate a PR commit range for trusted automation eligibility.
|
|
461
|
+
* Range net_loc uses the full base...head diff; actor is the author of the last commit
|
|
462
|
+
* in the range (same as prior behavior, documented here for audit).
|
|
446
463
|
* @returns {{ eligible: boolean, reason: string }}
|
|
447
464
|
*/
|
|
448
465
|
export function evaluateTrustedAutomationRange(repoRoot, baseSha, headSha) {
|
|
@@ -463,11 +480,10 @@ export function evaluateTrustedAutomationRange(repoRoot, baseSha, headSha) {
|
|
|
463
480
|
const files = commitChangedFiles(repoRoot, commit).filter((f) => isMsnEnforcedPath(f, prefixes));
|
|
464
481
|
if (files.length === 0) continue;
|
|
465
482
|
const actorEmail = commitAuthorEmail(repoRoot, commit);
|
|
466
|
-
|
|
467
|
-
if (!commitResult.eligible) {
|
|
483
|
+
if (findMatchingRule(rules, actorEmail).length === 0) {
|
|
468
484
|
return {
|
|
469
485
|
eligible: false,
|
|
470
|
-
reason: `commit ${commit.slice(0, 7)}
|
|
486
|
+
reason: `commit ${commit.slice(0, 7)}: actor ${actorEmail} not covered by trusted_automation policy`,
|
|
471
487
|
};
|
|
472
488
|
}
|
|
473
489
|
}
|
|
@@ -508,6 +524,15 @@ function main() {
|
|
|
508
524
|
const stdin = fs.readFileSync(0, "utf8");
|
|
509
525
|
process.exit(validateBypassNoteJson(stdin) ? 0 : 1);
|
|
510
526
|
}
|
|
527
|
+
case "match-glob": {
|
|
528
|
+
const pattern = process.argv[4];
|
|
529
|
+
const filePath = process.argv[5];
|
|
530
|
+
if (!pattern || !filePath) {
|
|
531
|
+
console.error("Usage: gxt-manifest-lib.mjs match-glob <repoRoot> <pattern> <filePath>");
|
|
532
|
+
process.exit(2);
|
|
533
|
+
}
|
|
534
|
+
process.exit(matchGlob(pattern, filePath) ? 0 : 1);
|
|
535
|
+
}
|
|
511
536
|
case "eval-commit": {
|
|
512
537
|
const commitSha = process.argv[4];
|
|
513
538
|
if (!commitSha) {
|
|
@@ -539,7 +564,7 @@ function main() {
|
|
|
539
564
|
}
|
|
540
565
|
default:
|
|
541
566
|
console.error(
|
|
542
|
-
"Usage: gxt-manifest-lib.mjs <prefixes|validate-manifest|validate-bypass-note|eval-commit|eval-range> [args]",
|
|
567
|
+
"Usage: gxt-manifest-lib.mjs <prefixes|validate-manifest|validate-bypass-note|match-glob|eval-commit|eval-range> [args]",
|
|
543
568
|
);
|
|
544
569
|
process.exit(2);
|
|
545
570
|
}
|
|
@@ -87,7 +87,12 @@ cmd_upgrade_tmp() {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
cmd_manifest() {
|
|
90
|
-
|
|
90
|
+
if [[ -f dist/cli/index.js ]]; then
|
|
91
|
+
node dist/cli/index.js check >/dev/null
|
|
92
|
+
echo "MANIFEST OK (gantry check)"
|
|
93
|
+
else
|
|
94
|
+
node "$GXT_MANIFEST_LIB" validate-manifest "$ROOT"
|
|
95
|
+
fi
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
cmd_msn() {
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { VerifyFailurePresentation, VerifyFailurePresentationInput } from "./verify-failure-presentation-types.js";
|
|
2
|
-
export type { AudienceTaggedStep, VerifyFailurePresentation, VerifyFailurePresentationInput, } from "./verify-failure-presentation-types.js";
|
|
3
|
-
export declare function verifyFailurePresentation(input: VerifyFailurePresentationInput): VerifyFailurePresentation;
|
|
4
|
-
//# sourceMappingURL=verify-failure-format.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-format.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,wCAAwC,CAAC;AAEhD,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,wCAAwC,CAAC;AAEhD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,CAG3B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { normalizeVerifyPhaseFailure, toFailurePresentation, } from "./verify-failure-normalize.js";
|
|
2
|
-
export function verifyFailurePresentation(input) {
|
|
3
|
-
const normalized = normalizeVerifyPhaseFailure(input);
|
|
4
|
-
return toFailurePresentation(normalized);
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=verify-failure-format.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-format.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AAYvC,MAAM,UAAU,yBAAyB,CACvC,KAAqC;IAErC,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAA0C,CAAC,CAAC;IAC3F,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { GxtErrorCode } from "./gxt-error-codes.js";
|
|
2
|
-
import type { AudienceTaggedStep } from "./verify-hints.js";
|
|
3
|
-
import type { RemediationSnapshot } from "./context-feed-store.js";
|
|
4
|
-
/** Canonical verify-failure contract — single mapping for all sinks. */
|
|
5
|
-
export interface NormalizedVerifyFailure {
|
|
6
|
-
phase: string;
|
|
7
|
-
message: string;
|
|
8
|
-
exit_code: number;
|
|
9
|
-
error_code: GxtErrorCode;
|
|
10
|
-
fix_hints: string[];
|
|
11
|
-
next_actions: string[];
|
|
12
|
-
tagged_steps?: AudienceTaggedStep[];
|
|
13
|
-
headline: string;
|
|
14
|
-
detail_lines: string[];
|
|
15
|
-
stdout?: string;
|
|
16
|
-
stderr?: string;
|
|
17
|
-
failures?: string[];
|
|
18
|
-
gate?: RemediationSnapshot["gate"];
|
|
19
|
-
kpi?: RemediationSnapshot["kpi"];
|
|
20
|
-
presentation_gate?: {
|
|
21
|
-
stdout?: string;
|
|
22
|
-
stderr?: string;
|
|
23
|
-
exitCode?: number;
|
|
24
|
-
};
|
|
25
|
-
trace?: {
|
|
26
|
-
failures?: string[];
|
|
27
|
-
};
|
|
28
|
-
mission_file_path?: string;
|
|
29
|
-
msn_id?: string;
|
|
30
|
-
}
|
|
31
|
-
export type NormalizedVerifyFailureBase = Pick<NormalizedVerifyFailure, "phase" | "message" | "exit_code" | "error_code" | "fix_hints" | "next_actions" | "tagged_steps" | "mission_file_path" | "msn_id">;
|
|
32
|
-
//# sourceMappingURL=verify-failure-normalize-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-normalize-types.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,YAAY,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACjC,iBAAiB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,uBAAuB,EACrB,OAAO,GACP,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,QAAQ,CACX,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-normalize-types.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-types.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { GxtErrorCode } from "./gxt-error-codes.js";
|
|
2
|
-
import type { VerifyOptions, VerifyPhaseFailure } from "./verify-engine.js";
|
|
3
|
-
import type { AudienceTaggedStep } from "./verify-hints.js";
|
|
4
|
-
export type { AudienceTaggedStep };
|
|
5
|
-
export interface VerifyFailurePresentationInput {
|
|
6
|
-
failure: VerifyPhaseFailure;
|
|
7
|
-
missionArg: string;
|
|
8
|
-
options: Pick<VerifyOptions, "strictTrace" | "audience">;
|
|
9
|
-
root?: string;
|
|
10
|
-
msnId?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface VerifyFailurePresentation {
|
|
13
|
-
error_code: GxtErrorCode;
|
|
14
|
-
headline: string;
|
|
15
|
-
detail_lines: string[];
|
|
16
|
-
fix_hints: string[];
|
|
17
|
-
next_actions: string[];
|
|
18
|
-
tagged_steps?: AudienceTaggedStep[];
|
|
19
|
-
exit_code: number;
|
|
20
|
-
gate?: {
|
|
21
|
-
stdout?: string;
|
|
22
|
-
stderr?: string;
|
|
23
|
-
exitCode?: number;
|
|
24
|
-
};
|
|
25
|
-
trace?: {
|
|
26
|
-
failures?: string[];
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=verify-failure-presentation-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-presentation-types.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-presentation-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-presentation-types.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-presentation-types.ts"],"names":[],"mappings":""}
|