@jeger-ai/opengantry 2.2.0 → 2.2.1
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/lib/context-feed-remediation.d.ts +2 -2
- package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
- package/dist/cli/lib/context-feed-remediation.js +13 -60
- package/dist/cli/lib/context-feed-remediation.js.map +1 -1
- package/dist/cli/lib/context-feed-store.d.ts +2 -0
- package/dist/cli/lib/context-feed-store.d.ts.map +1 -1
- package/dist/cli/lib/context-feed-store.js +8 -6
- package/dist/cli/lib/context-feed-store.js.map +1 -1
- package/dist/cli/lib/verify-failure-format.d.ts +2 -27
- package/dist/cli/lib/verify-failure-format.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-format.js +3 -65
- package/dist/cli/lib/verify-failure-format.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts +8 -0
- package/dist/cli/lib/verify-failure-normalize-phases.d.ts.map +1 -0
- package/dist/cli/lib/verify-failure-normalize-phases.js +70 -0
- package/dist/cli/lib/verify-failure-normalize-phases.js.map +1 -0
- package/dist/cli/lib/verify-failure-normalize-types.d.ts +32 -0
- package/dist/cli/lib/verify-failure-normalize-types.d.ts.map +1 -0
- package/dist/cli/lib/verify-failure-normalize-types.js +2 -0
- package/dist/cli/lib/verify-failure-normalize-types.js.map +1 -0
- package/dist/cli/lib/verify-failure-normalize.d.ts +28 -0
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -0
- package/dist/cli/lib/verify-failure-normalize.js +146 -0
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -0
- package/dist/cli/lib/verify-failure-presentation-types.d.ts +29 -0
- package/dist/cli/lib/verify-failure-presentation-types.d.ts.map +1 -0
- package/dist/cli/lib/verify-failure-presentation-types.js +2 -0
- package/dist/cli/lib/verify-failure-presentation-types.js.map +1 -0
- package/dist/cli/lib/verify-payload-types.d.ts +33 -0
- package/dist/cli/lib/verify-payload-types.d.ts.map +1 -0
- package/dist/cli/lib/verify-payload-types.js +2 -0
- package/dist/cli/lib/verify-payload-types.js.map +1 -0
- package/dist/cli/lib/verify-payload.d.ts +2 -32
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +14 -65
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-presentation.d.ts +13 -6
- package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
- package/dist/cli/lib/verify-presentation.js +6 -3
- package/dist/cli/lib/verify-presentation.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +7 -6
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-remediation.d.ts +1 -1
- package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
- package/dist/cli/lib/version.gen.d.ts +1 -1
- package/dist/cli/lib/version.gen.js +1 -1
- package/package.json +1 -1
- package/templates/integrations/compatibility.json +1 -1
- package/dist/cli/lib/verify-present.d.ts +0 -7
- package/dist/cli/lib/verify-present.d.ts.map +0 -1
- package/dist/cli/lib/verify-present.js +0 -4
- package/dist/cli/lib/verify-present.js.map +0 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ Developing this repository from source: `npm ci && npm run build` — see [gapma
|
|
|
39
39
|
|
|
40
40
|
| Goal | Read first |
|
|
41
41
|
|------|------------|
|
|
42
|
-
| **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
|
|
42
|
+
| **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) → [`docs/KATA.md`](docs/KATA.md) |
|
|
43
43
|
| **Wire IDE agents** | [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md) |
|
|
44
44
|
| **Contribute / dogfood** | [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) |
|
|
45
45
|
| **Governance law + workflow** | [`.gitagent/README.md`](.gitagent/README.md) · [`.gitagent/teacher/RULES.md`](.gitagent/teacher/RULES.md) |
|
|
@@ -57,14 +57,15 @@ Developing this repository from source: `npm ci && npm run build` — see [gapma
|
|
|
57
57
|
| **Regulated / ISO-aligned workflows** | SOD, mission authorization, and Git-native trace — see [`docs/COMPLIANCE-ISO.md`](docs/COMPLIANCE-ISO.md) (27001 change control, 42001 AI governance) |
|
|
58
58
|
| **Faster recovery from failure** | Stable `GXT_*` error codes, `gapman verify --fix`, role output via `--audience worker\|teacher\|verifier` |
|
|
59
59
|
|
|
60
|
-
**Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.
|
|
60
|
+
**Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.1** — verify-failure contract unification, race-safe context-feed. Current npm publish: **v2.2.1**. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
|
|
61
61
|
|
|
62
62
|
## Release timeline (latest first)
|
|
63
63
|
|
|
64
|
-
Current npm release in this repository: **`gapman` v2.2.
|
|
64
|
+
Current npm release in this repository: **`gapman` v2.2.1**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
|
|
65
65
|
|
|
66
66
|
| Release | Highlights |
|
|
67
67
|
|---------|------------|
|
|
68
|
+
| **v2.2.1** | Thermo remediation — unified `NormalizedVerifyFailure` contract across JSON/human/context-feed; race-safe remediation snapshot writes; canonical `verify-presentation` entrypoint |
|
|
68
69
|
| **v2.2.0** | `gapman context-feed`, `gapman audit-rigor`, `virtual_capture` ephemeral virtualization ([#68](https://github.com/jeger-ai/opengantry/issues/68)), product positioning, docs quality ([#66](https://github.com/jeger-ai/opengantry/issues/66)–[#69](https://github.com/jeger-ai/opengantry/issues/69), [#76](https://github.com/jeger-ai/opengantry/issues/76)) |
|
|
69
70
|
| **v2.1.0** | Import-layer Code Surgeon (`check-import-layers.mjs --json`, AST quarantine, `GXT_IMPORT_LAYER_VIOLATION`); workspace-resolved optional TypeScript for surgeons |
|
|
70
71
|
| **v2.0.0** | `gapman scan` + KPI gate, `register`, `check-imports`, `perimeter`; BYO `llm_verifiers`; KPI stale binding on `--pre-push`/`--ci` |
|
|
@@ -363,7 +364,7 @@ GXT deliberately trades "always-on improvisation" for a **narrow, inspectable en
|
|
|
363
364
|
|
|
364
365
|
## Relationship to this repository
|
|
365
366
|
|
|
366
|
-
**jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.
|
|
367
|
+
**jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.1** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
|
|
367
368
|
|
|
368
369
|
## Security
|
|
369
370
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { VerifyFailedPayload } from "./verify-payload.js";
|
|
1
|
+
import type { VerifyFailedPayload } from "./verify-payload-types.js";
|
|
2
2
|
import type { ParsedMission } from "./types.js";
|
|
3
3
|
import type { VerifyPhaseFailure } from "./verify-engine.js";
|
|
4
|
-
import { readRemediationSnapshot, type RemediationSnapshot } from "./context-feed-store.js";
|
|
5
4
|
import type { VerifyOptions } from "./verify-engine.js";
|
|
5
|
+
import { readRemediationSnapshot, type RemediationSnapshot } from "./context-feed-store.js";
|
|
6
6
|
export declare function remediationFromFailedPayload(root: string, mission: ParsedMission | null, missionArg: string | undefined, payload: VerifyFailedPayload): RemediationSnapshot;
|
|
7
7
|
export declare function remediationFromPhaseFailure(root: string, mission: ParsedMission, missionArg: string, options: VerifyOptions, failure: VerifyPhaseFailure): RemediationSnapshot;
|
|
8
8
|
export declare function persistRemediationSnapshot(root: string, snapshot: RemediationSnapshot): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,uBAAuB,EAEvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAOjC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAUrB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAUrB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAM5F;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,74 +1,27 @@
|
|
|
1
1
|
import { toPosixRel } from "./cli-io.js";
|
|
2
2
|
import { readRemediationSnapshot, writeRemediationSnapshot, } from "./context-feed-store.js";
|
|
3
|
-
import {
|
|
3
|
+
import { normalizeFromFailedPayload, normalizeVerifyPhaseFailure, toRemediationSnapshot, } from "./verify-failure-normalize.js";
|
|
4
4
|
export function remediationFromFailedPayload(root, mission, missionArg, payload) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
...(missionArg && !mission ? { mission_file_path: missionArg } : {}),
|
|
15
|
-
fix_hints: payload.fix_hints,
|
|
16
|
-
next_actions: payload.next_actions,
|
|
17
|
-
...(payload.failures ? { failures: payload.failures } : {}),
|
|
18
|
-
...(payload.stdout !== undefined || payload.stderr !== undefined
|
|
19
|
-
? {
|
|
20
|
-
gate: {
|
|
21
|
-
...(payload.stdout !== undefined ? { stdout: payload.stdout } : {}),
|
|
22
|
-
...(payload.stderr !== undefined ? { stderr: payload.stderr } : {}),
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
: {}),
|
|
26
|
-
};
|
|
5
|
+
const meta = mission
|
|
6
|
+
? {
|
|
7
|
+
mission_file_path: toPosixRel(root, mission.rawPath),
|
|
8
|
+
...(mission.msnId ? { msn_id: mission.msnId } : {}),
|
|
9
|
+
}
|
|
10
|
+
: missionArg
|
|
11
|
+
? { mission_file_path: missionArg }
|
|
12
|
+
: {};
|
|
13
|
+
return toRemediationSnapshot(normalizeFromFailedPayload(payload, meta));
|
|
27
14
|
}
|
|
28
15
|
export function remediationFromPhaseFailure(root, mission, missionArg, options, failure) {
|
|
29
|
-
const
|
|
16
|
+
const normalized = normalizeVerifyPhaseFailure({
|
|
30
17
|
failure,
|
|
31
18
|
missionArg,
|
|
32
19
|
options,
|
|
33
20
|
root,
|
|
34
21
|
msnId: mission.msnId ?? undefined,
|
|
22
|
+
mission,
|
|
35
23
|
});
|
|
36
|
-
return
|
|
37
|
-
schema_version: 1,
|
|
38
|
-
written_at: new Date().toISOString(),
|
|
39
|
-
source: "gapman verify",
|
|
40
|
-
phase: failure.phase,
|
|
41
|
-
error_code: presentation.error_code,
|
|
42
|
-
message: failure.message,
|
|
43
|
-
mission_file_path: toPosixRel(root, mission.rawPath),
|
|
44
|
-
...(mission.msnId ? { msn_id: mission.msnId } : {}),
|
|
45
|
-
fix_hints: presentation.fix_hints,
|
|
46
|
-
next_actions: presentation.next_actions,
|
|
47
|
-
...(failure.phase === "gate"
|
|
48
|
-
? {
|
|
49
|
-
gate: {
|
|
50
|
-
...(failure.gateStdout !== undefined ? { stdout: failure.gateStdout } : {}),
|
|
51
|
-
...(failure.gateStderr !== undefined ? { stderr: failure.gateStderr } : {}),
|
|
52
|
-
...(failure.gateExitCode !== undefined ? { exit_code: failure.gateExitCode } : {}),
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
: {}),
|
|
56
|
-
...(failure.phase === "kpi"
|
|
57
|
-
? {
|
|
58
|
-
failures: [failure.kpiReason ?? failure.message],
|
|
59
|
-
kpi: {
|
|
60
|
-
...(failure.kpiMetric ? { metric: failure.kpiMetric } : {}),
|
|
61
|
-
...(failure.kpiOp ? { op: failure.kpiOp } : {}),
|
|
62
|
-
...(failure.kpiExpected !== undefined ? { expected: failure.kpiExpected } : {}),
|
|
63
|
-
...(failure.kpiActual !== undefined ? { actual: failure.kpiActual } : {}),
|
|
64
|
-
...(failure.kpiReportPath ? { report_path: failure.kpiReportPath } : {}),
|
|
65
|
-
},
|
|
66
|
-
}
|
|
67
|
-
: {}),
|
|
68
|
-
...(failure.phase === "trace" && failure.traceReason
|
|
69
|
-
? { failures: [`DoD trace: ${failure.traceReason}`] }
|
|
70
|
-
: {}),
|
|
71
|
-
};
|
|
24
|
+
return toRemediationSnapshot(normalized);
|
|
72
25
|
}
|
|
73
26
|
export function persistRemediationSnapshot(root, snapshot) {
|
|
74
27
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-feed-remediation.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-feed-remediation.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,OAA6B,EAC7B,UAA8B,EAC9B,OAA4B;IAE5B,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC;YACE,iBAAiB,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;QACH,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,qBAAqB,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,OAAsB,EACtB,UAAkB,EAClB,OAAsB,EACtB,OAA2B;IAE3B,MAAM,UAAU,GAAG,2BAA2B,CAAC;QAC7C,OAAO;QACP,UAAU;QACV,OAAO;QACP,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,OAAO;KACR,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAY,EAAE,QAA6B;IACpF,IAAI,CAAC;QACH,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,IAAY,EACZ,OAA6B,EAC7B,UAA8B,EAC9B,OAA4B;IAE5B,0BAA0B,CAAC,IAAI,EAAE,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,IAAY,EACZ,OAAsB,EACtB,UAAkB,EAClB,OAAsB,EACtB,OAA2B;IAE3B,0BAA0B,CACxB,IAAI,EACJ,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -25,6 +25,8 @@ export interface RemediationSnapshot {
|
|
|
25
25
|
report_path?: string;
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
/** Remove abandoned temp files older than maxAgeMs (optional scavenger — not on hot write path). */
|
|
29
|
+
export declare function scavengerStaleRemediationTemps(repoRoot: string, maxAgeMs?: number): void;
|
|
28
30
|
/** Atomic replace: write temp file in same directory, then rename onto target. */
|
|
29
31
|
export declare function writeRemediationSnapshot(repoRoot: string, snapshot: RemediationSnapshot): void;
|
|
30
32
|
export declare function readRemediationSnapshot(repoRoot: string): RemediationSnapshot | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-feed-store.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,OAAO,0BAA0B,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"context-feed-store.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,OAAO,0BAA0B,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAqBD,oGAAoG;AACpG,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAU,GAAG,IAAI,CAgBzF;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAgB9F;AAmBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAWpF;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAa/D"}
|
|
@@ -17,19 +17,24 @@ function tempRemediationPath(repoRoot) {
|
|
|
17
17
|
function ensureRemediationDir(repoRoot) {
|
|
18
18
|
fs.mkdirSync(remediationDir(repoRoot), { recursive: true });
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
/** Remove abandoned temp files older than maxAgeMs (optional scavenger — not on hot write path). */
|
|
21
|
+
export function scavengerStaleRemediationTemps(repoRoot, maxAgeMs = 300_000) {
|
|
21
22
|
const dir = remediationDir(repoRoot);
|
|
22
23
|
if (!fs.existsSync(dir))
|
|
23
24
|
return;
|
|
25
|
+
const now = Date.now();
|
|
24
26
|
for (const entry of fs.readdirSync(dir)) {
|
|
25
27
|
if (!entry.startsWith(TMP_PREFIX))
|
|
26
28
|
continue;
|
|
27
29
|
const full = path.join(dir, entry);
|
|
28
30
|
try {
|
|
29
|
-
fs.
|
|
31
|
+
const stat = fs.statSync(full);
|
|
32
|
+
if (now - stat.mtimeMs > maxAgeMs) {
|
|
33
|
+
fs.unlinkSync(full);
|
|
34
|
+
}
|
|
30
35
|
}
|
|
31
36
|
catch {
|
|
32
|
-
//
|
|
37
|
+
// ignore per-file errors
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
40
|
}
|
|
@@ -53,9 +58,6 @@ export function writeRemediationSnapshot(repoRoot, snapshot) {
|
|
|
53
58
|
}
|
|
54
59
|
throw e;
|
|
55
60
|
}
|
|
56
|
-
finally {
|
|
57
|
-
bestEffortCleanupStaleTemps(repoRoot);
|
|
58
|
-
}
|
|
59
61
|
}
|
|
60
62
|
function readFileWithRetry(absPath, attempts = 3) {
|
|
61
63
|
for (let i = 0; i < attempts; i += 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-feed-store.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAU,CAAC;AAyBrD,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"context-feed-store.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
import { type AudienceTaggedStep } from "./verify-hints.js";
|
|
4
|
-
export interface VerifyFailurePresentationInput {
|
|
5
|
-
failure: VerifyPhaseFailure;
|
|
6
|
-
missionArg: string;
|
|
7
|
-
options: Pick<VerifyOptions, "strictTrace" | "audience">;
|
|
8
|
-
root?: string;
|
|
9
|
-
msnId?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface VerifyFailurePresentation {
|
|
12
|
-
error_code: GxtErrorCode;
|
|
13
|
-
headline: string;
|
|
14
|
-
detail_lines: string[];
|
|
15
|
-
fix_hints: string[];
|
|
16
|
-
next_actions: string[];
|
|
17
|
-
tagged_steps?: AudienceTaggedStep[];
|
|
18
|
-
exit_code: number;
|
|
19
|
-
gate?: {
|
|
20
|
-
stdout?: string;
|
|
21
|
-
stderr?: string;
|
|
22
|
-
exitCode?: number;
|
|
23
|
-
};
|
|
24
|
-
trace?: {
|
|
25
|
-
failures?: string[];
|
|
26
|
-
};
|
|
27
|
-
}
|
|
1
|
+
import type { VerifyFailurePresentation, VerifyFailurePresentationInput } from "./verify-failure-presentation-types.js";
|
|
2
|
+
export type { AudienceTaggedStep, VerifyFailurePresentation, VerifyFailurePresentationInput, } from "./verify-failure-presentation-types.js";
|
|
28
3
|
export declare function verifyFailurePresentation(input: VerifyFailurePresentationInput): VerifyFailurePresentation;
|
|
29
4
|
//# sourceMappingURL=verify-failure-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-format.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"
|
|
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,68 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { buildVerifyHintContext, hintsForVerifyPhase, } from "./verify-hints.js";
|
|
1
|
+
import { normalizeVerifyPhaseFailure, toFailurePresentation, } from "./verify-failure-normalize.js";
|
|
3
2
|
export function verifyFailurePresentation(input) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const base = {
|
|
7
|
-
error_code: remediation.error_code,
|
|
8
|
-
fix_hints: remediation.fix_hints,
|
|
9
|
-
next_actions: remediation.next_actions,
|
|
10
|
-
tagged_steps: remediation.tagged_steps,
|
|
11
|
-
exit_code: failure.exitCode,
|
|
12
|
-
};
|
|
13
|
-
switch (failure.phase) {
|
|
14
|
-
case "git_proof":
|
|
15
|
-
return {
|
|
16
|
-
...base,
|
|
17
|
-
headline: failure.message,
|
|
18
|
-
detail_lines: [],
|
|
19
|
-
};
|
|
20
|
-
case "gate":
|
|
21
|
-
return {
|
|
22
|
-
...base,
|
|
23
|
-
headline: "verify: GATE FAILED",
|
|
24
|
-
detail_lines: [
|
|
25
|
-
...(failure.gateStdout !== undefined ? [`--- stdout ---\n${failure.gateStdout}`] : []),
|
|
26
|
-
...(failure.gateStderr !== undefined ? [`--- stderr ---\n${failure.gateStderr}`] : []),
|
|
27
|
-
...(failure.gateExitCode !== undefined ? [`exit code: ${String(failure.gateExitCode)}`] : []),
|
|
28
|
-
],
|
|
29
|
-
gate: {
|
|
30
|
-
stdout: failure.gateStdout,
|
|
31
|
-
stderr: failure.gateStderr,
|
|
32
|
-
exitCode: failure.gateExitCode,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
case "kpi":
|
|
36
|
-
return {
|
|
37
|
-
...base,
|
|
38
|
-
headline: "verify: KPI GATE FAILED",
|
|
39
|
-
detail_lines: [
|
|
40
|
-
failure.kpiReason ?? failure.message,
|
|
41
|
-
...(failure.kpiMetric
|
|
42
|
-
? [`metric: ${failure.kpiMetric} ${failure.kpiOp ?? ""} ${String(failure.kpiExpected ?? "")} (actual: ${String(failure.kpiActual ?? "missing")})`]
|
|
43
|
-
: []),
|
|
44
|
-
...(failure.kpiReportPath ? [`report: ${failure.kpiReportPath}`] : []),
|
|
45
|
-
],
|
|
46
|
-
};
|
|
47
|
-
case "trace_pending":
|
|
48
|
-
return {
|
|
49
|
-
...base,
|
|
50
|
-
headline: `${CLI_NAME} verify: legislative stub complete (git-proof OK) — worker must execute, append ${failure.workerLogPath}, set trace row PASS, then re-verify`,
|
|
51
|
-
detail_lines: [],
|
|
52
|
-
};
|
|
53
|
-
case "trace":
|
|
54
|
-
return {
|
|
55
|
-
...base,
|
|
56
|
-
headline: "verify: TRACE MAPPING FAILED (Evidence Tampering / missing evidence)",
|
|
57
|
-
detail_lines: [`DoD trace failure: ${failure.traceReason ?? failure.message}`],
|
|
58
|
-
trace: failure.traceReason
|
|
59
|
-
? { failures: [`DoD trace: ${failure.traceReason}`] }
|
|
60
|
-
: undefined,
|
|
61
|
-
};
|
|
62
|
-
default: {
|
|
63
|
-
const _exhaustive = failure.phase;
|
|
64
|
-
return _exhaustive;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
3
|
+
const normalized = normalizeVerifyPhaseFailure(input);
|
|
4
|
+
return toFailurePresentation(normalized);
|
|
67
5
|
}
|
|
68
6
|
//# sourceMappingURL=verify-failure-format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-failure-format.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VerifyPhaseFailure } from "./verify-engine.js";
|
|
2
|
+
import type { NormalizedVerifyFailure, NormalizedVerifyFailureBase } from "./verify-failure-normalize-types.js";
|
|
3
|
+
export declare function normalizeGitProofPhase(base: NormalizedVerifyFailureBase): NormalizedVerifyFailure;
|
|
4
|
+
export declare function normalizeGatePhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
|
|
5
|
+
export declare function normalizeKpiPhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
|
|
6
|
+
export declare function normalizeTracePendingPhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
|
|
7
|
+
export declare function normalizeTracePhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
|
|
8
|
+
//# sourceMappingURL=verify-failure-normalize-phases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-failure-normalize-phases.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-phases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,uBAAuB,CAEjG;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAsBzB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAqBzB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAMzB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAYzB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { CLI_NAME } from "./constants.js";
|
|
2
|
+
export function normalizeGitProofPhase(base) {
|
|
3
|
+
return { ...base, headline: base.message, detail_lines: [] };
|
|
4
|
+
}
|
|
5
|
+
export function normalizeGatePhase(base, failure) {
|
|
6
|
+
return {
|
|
7
|
+
...base,
|
|
8
|
+
headline: "verify: GATE FAILED",
|
|
9
|
+
detail_lines: [
|
|
10
|
+
...(failure.gateStdout !== undefined ? [`--- stdout ---\n${failure.gateStdout}`] : []),
|
|
11
|
+
...(failure.gateStderr !== undefined ? [`--- stderr ---\n${failure.gateStderr}`] : []),
|
|
12
|
+
...(failure.gateExitCode !== undefined ? [`exit code: ${String(failure.gateExitCode)}`] : []),
|
|
13
|
+
],
|
|
14
|
+
stdout: failure.gateStdout,
|
|
15
|
+
stderr: failure.gateStderr,
|
|
16
|
+
gate: {
|
|
17
|
+
...(failure.gateStdout !== undefined ? { stdout: failure.gateStdout } : {}),
|
|
18
|
+
...(failure.gateStderr !== undefined ? { stderr: failure.gateStderr } : {}),
|
|
19
|
+
...(failure.gateExitCode !== undefined ? { exit_code: failure.gateExitCode } : {}),
|
|
20
|
+
},
|
|
21
|
+
presentation_gate: {
|
|
22
|
+
stdout: failure.gateStdout,
|
|
23
|
+
stderr: failure.gateStderr,
|
|
24
|
+
exitCode: failure.gateExitCode,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function normalizeKpiPhase(base, failure) {
|
|
29
|
+
const reason = failure.kpiReason ?? failure.message;
|
|
30
|
+
return {
|
|
31
|
+
...base,
|
|
32
|
+
headline: "verify: KPI GATE FAILED",
|
|
33
|
+
detail_lines: [
|
|
34
|
+
reason,
|
|
35
|
+
...(failure.kpiMetric
|
|
36
|
+
? [`metric: ${failure.kpiMetric} ${failure.kpiOp ?? ""} ${String(failure.kpiExpected ?? "")} (actual: ${String(failure.kpiActual ?? "missing")})`]
|
|
37
|
+
: []),
|
|
38
|
+
...(failure.kpiReportPath ? [`report: ${failure.kpiReportPath}`] : []),
|
|
39
|
+
],
|
|
40
|
+
failures: [reason],
|
|
41
|
+
kpi: {
|
|
42
|
+
...(failure.kpiMetric ? { metric: failure.kpiMetric } : {}),
|
|
43
|
+
...(failure.kpiOp ? { op: failure.kpiOp } : {}),
|
|
44
|
+
...(failure.kpiExpected !== undefined ? { expected: failure.kpiExpected } : {}),
|
|
45
|
+
...(failure.kpiActual !== undefined ? { actual: failure.kpiActual } : {}),
|
|
46
|
+
...(failure.kpiReportPath ? { report_path: failure.kpiReportPath } : {}),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function normalizeTracePendingPhase(base, failure) {
|
|
51
|
+
return {
|
|
52
|
+
...base,
|
|
53
|
+
headline: `${CLI_NAME} verify: legislative stub complete (git-proof OK) — worker must execute, append ${failure.workerLogPath}, set trace row PASS, then re-verify`,
|
|
54
|
+
detail_lines: [],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function normalizeTracePhase(base, failure) {
|
|
58
|
+
return {
|
|
59
|
+
...base,
|
|
60
|
+
headline: "verify: TRACE MAPPING FAILED (Evidence Tampering / missing evidence)",
|
|
61
|
+
detail_lines: [`DoD trace failure: ${failure.traceReason ?? failure.message}`],
|
|
62
|
+
...(failure.traceReason
|
|
63
|
+
? {
|
|
64
|
+
failures: [`DoD trace: ${failure.traceReason}`],
|
|
65
|
+
trace: { failures: [`DoD trace: ${failure.traceReason}`] },
|
|
66
|
+
}
|
|
67
|
+
: {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=verify-failure-normalize-phases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-failure-normalize-phases.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-phases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-failure-normalize-types.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ParsedMission } from "./types.js";
|
|
2
|
+
import type { VerifyOptions, VerifyPhaseFailure } from "./verify-engine.js";
|
|
3
|
+
import { type RemediationSnapshot } from "./context-feed-store.js";
|
|
4
|
+
import type { VerifyFailurePresentation } from "./verify-failure-presentation-types.js";
|
|
5
|
+
import type { VerifyFailedPayload } from "./verify-payload-types.js";
|
|
6
|
+
import type { NormalizedVerifyFailure } from "./verify-failure-normalize-types.js";
|
|
7
|
+
export type { NormalizedVerifyFailure } from "./verify-failure-normalize-types.js";
|
|
8
|
+
export interface NormalizePhaseFailureInput {
|
|
9
|
+
failure: VerifyPhaseFailure;
|
|
10
|
+
missionArg: string;
|
|
11
|
+
options: Pick<VerifyOptions, "strictTrace" | "audience">;
|
|
12
|
+
root?: string;
|
|
13
|
+
msnId?: string;
|
|
14
|
+
mission?: ParsedMission | null;
|
|
15
|
+
}
|
|
16
|
+
/** Map engine phase failure to canonical contract (hints + phase artifacts in one switch). */
|
|
17
|
+
export declare function normalizeVerifyPhaseFailure(input: NormalizePhaseFailureInput): NormalizedVerifyFailure;
|
|
18
|
+
/** Map init/pre-phase errors to canonical contract. */
|
|
19
|
+
export declare function normalizeInitFailure(error: unknown): NormalizedVerifyFailure;
|
|
20
|
+
export declare function toVerifyFailedPayload(normalized: NormalizedVerifyFailure): VerifyFailedPayload;
|
|
21
|
+
export declare function toFailurePresentation(normalized: NormalizedVerifyFailure): VerifyFailurePresentation;
|
|
22
|
+
export declare function toRemediationSnapshot(normalized: NormalizedVerifyFailure): RemediationSnapshot;
|
|
23
|
+
/** Project an existing JSON failure payload into remediation snapshot (init / replay paths). */
|
|
24
|
+
export declare function normalizeFromFailedPayload(payload: VerifyFailedPayload, meta?: {
|
|
25
|
+
mission_file_path?: string;
|
|
26
|
+
msn_id?: string;
|
|
27
|
+
}): NormalizedVerifyFailure;
|
|
28
|
+
//# sourceMappingURL=verify-failure-normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-failure-normalize.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK5E,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,YAAY,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,MAAM,WAAW,0BAA0B;IACzC,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;IACf,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC;AAoBD,8FAA8F;AAC9F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,uBAAuB,CAiCtG;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAyB5E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,mBAAmB,CAa9F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,yBAAyB,CAYpG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,mBAAmB,CAgB9F;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,uBAAuB,CAuBzB"}
|