@jeger-ai/opengantry 2.2.0 → 2.2.2
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 +9 -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 +3 -2
- 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
|
@@ -35,11 +35,14 @@ npx @jeger-ai/opengantry init --tutorial
|
|
|
35
35
|
|
|
36
36
|
Developing this repository from source: `npm ci && npm run build` — see [gapman CLI](#gapman-cli) and [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
|
|
37
37
|
|
|
38
|
+
*Want to see the ROI? Run `npm run examples:benchmark` to compare an orchestrator specimen (improvised agent glue) against OpenGantry's TMVC protocol.* (Requires clone + `npm run build` — see [`docs/ADOPTION.md`](docs/ADOPTION.md).)
|
|
39
|
+
|
|
38
40
|
## Documentation map (start here)
|
|
39
41
|
|
|
40
42
|
| Goal | Read first |
|
|
41
43
|
|------|------------|
|
|
42
|
-
| **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
|
|
44
|
+
| **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) → [`docs/KATA.md`](docs/KATA.md) |
|
|
45
|
+
| **See benchmark ROI (3 min)** | [`examples/benchmark-agent/`](examples/benchmark-agent/) → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
|
|
43
46
|
| **Wire IDE agents** | [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md) |
|
|
44
47
|
| **Contribute / dogfood** | [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) |
|
|
45
48
|
| **Governance law + workflow** | [`.gitagent/README.md`](.gitagent/README.md) · [`.gitagent/teacher/RULES.md`](.gitagent/teacher/RULES.md) |
|
|
@@ -57,14 +60,16 @@ Developing this repository from source: `npm ci && npm run build` — see [gapma
|
|
|
57
60
|
| **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
61
|
| **Faster recovery from failure** | Stable `GXT_*` error codes, `gapman verify --fix`, role output via `--audience worker\|teacher\|verifier` |
|
|
59
62
|
|
|
60
|
-
**Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.
|
|
63
|
+
**Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.2** — Time-to-Scaffold public benchmark, measured LOC matrix. Current npm publish: **v2.2.2**. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
|
|
61
64
|
|
|
62
65
|
## Release timeline (latest first)
|
|
63
66
|
|
|
64
|
-
Current npm release in this repository: **`gapman` v2.2.
|
|
67
|
+
Current npm release in this repository: **`gapman` v2.2.2**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
|
|
65
68
|
|
|
66
69
|
| Release | Highlights |
|
|
67
70
|
|---------|------------|
|
|
71
|
+
| **v2.2.2** | Time-to-Scaffold benchmark — `npm run examples:benchmark`, measured LOC matrix, adoption discovery ([#79](https://github.com/jeger-ai/opengantry/issues/79)) |
|
|
72
|
+
| **v2.2.1** | Thermo remediation — unified `NormalizedVerifyFailure` contract across JSON/human/context-feed; race-safe remediation snapshot writes; canonical `verify-presentation` entrypoint |
|
|
68
73
|
| **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
74
|
| **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
75
|
| **v2.0.0** | `gapman scan` + KPI gate, `register`, `check-imports`, `perimeter`; BYO `llm_verifiers`; KPI stale binding on `--pre-push`/`--ci` |
|
|
@@ -363,7 +368,7 @@ GXT deliberately trades "always-on improvisation" for a **narrow, inspectable en
|
|
|
363
368
|
|
|
364
369
|
## Relationship to this repository
|
|
365
370
|
|
|
366
|
-
**jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.
|
|
371
|
+
**jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.2** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
|
|
367
372
|
|
|
368
373
|
## Security
|
|
369
374
|
|
|
@@ -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"}
|