@jeger-ai/opengantry 2.2.3 → 2.2.5
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 +97 -78
- package/dist/cli/commands/arch.js +4 -4
- package/dist/cli/commands/check-imports.js +1 -1
- package/dist/cli/commands/onboarding.js +5 -5
- package/dist/cli/commands/perimeter.js +2 -2
- package/dist/cli/commands/runtime.js +1 -1
- package/dist/cli/commands/scan.js +2 -2
- package/dist/cli/commands/teacher.js +1 -1
- package/dist/cli/commands/verify.d.ts +0 -2
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +3 -11
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/lib/ajv-loader.d.ts +3 -0
- package/dist/cli/lib/ajv-loader.d.ts.map +1 -0
- package/dist/cli/lib/ajv-loader.js +10 -0
- package/dist/cli/lib/ajv-loader.js.map +1 -0
- package/dist/cli/lib/architecture-credential.js +1 -1
- package/dist/cli/lib/architecture-pointer.d.ts +0 -1
- package/dist/cli/lib/architecture-pointer.d.ts.map +1 -1
- package/dist/cli/lib/architecture-pointer.js +2 -5
- package/dist/cli/lib/architecture-pointer.js.map +1 -1
- package/dist/cli/lib/ast-discovery.js +1 -1
- package/dist/cli/lib/audience-output.js +7 -7
- package/dist/cli/lib/cli-io.js +1 -1
- package/dist/cli/lib/config-namespace.d.ts +18 -0
- package/dist/cli/lib/config-namespace.d.ts.map +1 -0
- package/dist/cli/lib/config-namespace.js +39 -0
- package/dist/cli/lib/config-namespace.js.map +1 -0
- package/dist/cli/lib/constants.d.ts +6 -5
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +6 -5
- package/dist/cli/lib/constants.js.map +1 -1
- package/dist/cli/lib/context-feed-store.d.ts +1 -1
- package/dist/cli/lib/context-feed-store.js +1 -1
- package/dist/cli/lib/dirty-missions.js +1 -1
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +8 -7
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/doctor-integration.js +1 -1
- package/dist/cli/lib/doctor-substrate.js +4 -4
- package/dist/cli/lib/errors.d.ts.map +1 -1
- package/dist/cli/lib/errors.js +2 -1
- package/dist/cli/lib/errors.js.map +1 -1
- package/dist/cli/lib/file-merge-gxt.js +2 -2
- package/dist/cli/lib/fix-hints.d.ts +1 -0
- package/dist/cli/lib/fix-hints.d.ts.map +1 -1
- package/dist/cli/lib/fix-hints.js +10 -10
- package/dist/cli/lib/fix-hints.js.map +1 -1
- package/dist/cli/lib/git-metrics.js +1 -1
- package/dist/cli/lib/git-proof.d.ts +1 -1
- package/dist/cli/lib/git-proof.d.ts.map +1 -1
- package/dist/cli/lib/git-proof.js +5 -4
- package/dist/cli/lib/git-proof.js.map +1 -1
- package/dist/cli/lib/init-asset-catalog.d.ts +0 -2
- package/dist/cli/lib/init-asset-catalog.d.ts.map +1 -1
- package/dist/cli/lib/init-asset-catalog.js +1 -13
- package/dist/cli/lib/init-asset-catalog.js.map +1 -1
- package/dist/cli/lib/init-interactive.js +2 -2
- package/dist/cli/lib/init-plan.js +6 -6
- package/dist/cli/lib/init-tutorial.js +10 -10
- package/dist/cli/lib/kpi-engine.d.ts +6 -1
- package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
- package/dist/cli/lib/kpi-engine.js +21 -22
- package/dist/cli/lib/kpi-engine.js.map +1 -1
- package/dist/cli/lib/kpi-scan.js +3 -3
- package/dist/cli/lib/legislate.d.ts.map +1 -1
- package/dist/cli/lib/legislate.js +11 -5
- package/dist/cli/lib/legislate.js.map +1 -1
- package/dist/cli/lib/manifest.js +2 -2
- package/dist/cli/lib/manifest.js.map +1 -1
- package/dist/cli/lib/mcp-governance.d.ts +0 -2
- package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
- package/dist/cli/lib/mcp-governance.js +4 -5
- package/dist/cli/lib/mcp-governance.js.map +1 -1
- package/dist/cli/lib/mcp-tools-register.js +4 -4
- package/dist/cli/lib/missions/formatter.js +1 -1
- package/dist/cli/lib/missions/parser.d.ts.map +1 -1
- package/dist/cli/lib/missions/parser.js +7 -5
- package/dist/cli/lib/missions/parser.js.map +1 -1
- package/dist/cli/lib/missions/validator.d.ts.map +1 -1
- package/dist/cli/lib/missions/validator.js +3 -8
- package/dist/cli/lib/missions/validator.js.map +1 -1
- package/dist/cli/lib/msn-allocate.js +2 -2
- package/dist/cli/lib/onboarding-flow.js +5 -5
- package/dist/cli/lib/perimeter.d.ts +0 -2
- package/dist/cli/lib/perimeter.d.ts.map +1 -1
- package/dist/cli/lib/perimeter.js +1 -8
- package/dist/cli/lib/perimeter.js.map +1 -1
- package/dist/cli/lib/register-proposals.js +1 -1
- package/dist/cli/lib/runtime-env.d.ts.map +1 -1
- package/dist/cli/lib/runtime-env.js +7 -4
- package/dist/cli/lib/runtime-env.js.map +1 -1
- package/dist/cli/lib/skill-key.d.ts +12 -0
- package/dist/cli/lib/skill-key.d.ts.map +1 -0
- package/dist/cli/lib/skill-key.js +28 -0
- package/dist/cli/lib/skill-key.js.map +1 -0
- package/dist/cli/lib/staged-tmvc-guard.js +1 -1
- package/dist/cli/lib/start-orchestration.js +5 -5
- package/dist/cli/lib/status-report.js +3 -3
- package/dist/cli/lib/substrate-version.js +2 -2
- package/dist/cli/lib/surgeons/banned-import.d.ts +0 -1
- package/dist/cli/lib/surgeons/banned-import.d.ts.map +1 -1
- package/dist/cli/lib/surgeons/banned-import.js +0 -1
- package/dist/cli/lib/surgeons/banned-import.js.map +1 -1
- package/dist/cli/lib/surgeons/quarantine-import.d.ts +0 -5
- package/dist/cli/lib/surgeons/quarantine-import.d.ts.map +1 -1
- package/dist/cli/lib/surgeons/quarantine-import.js +0 -11
- package/dist/cli/lib/surgeons/quarantine-import.js.map +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts +0 -1
- package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
- package/dist/cli/lib/surgeons/registry.js +0 -3
- package/dist/cli/lib/surgeons/registry.js.map +1 -1
- package/dist/cli/lib/surgeons/typescript-workspace.d.ts +1 -1
- package/dist/cli/lib/surgeons/typescript-workspace.js +3 -3
- package/dist/cli/lib/teacher-identity.d.ts +1 -2
- package/dist/cli/lib/teacher-identity.d.ts.map +1 -1
- package/dist/cli/lib/teacher-identity.js +11 -15
- package/dist/cli/lib/teacher-identity.js.map +1 -1
- package/dist/cli/lib/tmvc-path.d.ts.map +1 -1
- package/dist/cli/lib/tmvc-path.js +5 -2
- package/dist/cli/lib/tmvc-path.js.map +1 -1
- package/dist/cli/lib/trace.d.ts +0 -1
- package/dist/cli/lib/trace.d.ts.map +1 -1
- package/dist/cli/lib/trace.js +0 -3
- package/dist/cli/lib/trace.js.map +1 -1
- package/dist/cli/lib/types.d.ts +1 -1
- package/dist/cli/lib/upgrade-apply.js +5 -5
- package/dist/cli/lib/upgrade-plan.d.ts +1 -1
- package/dist/cli/lib/upgrade-plan.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-plan.js +14 -14
- package/dist/cli/lib/upgrade-plan.js.map +1 -1
- package/dist/cli/lib/verify-engine.js +3 -3
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +1 -1
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-hints.js +10 -14
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-run.d.ts.map +1 -1
- package/dist/cli/lib/verify-run.js +3 -2
- package/dist/cli/lib/verify-run.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/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +6 -2
- package/dist/cli/program-core.js.map +1 -1
- package/package.json +10 -5
- package/templates/.cursor/hooks/gxt-before-shell.sh +2 -2
- package/templates/.cursor/hooks/gxt-session-start.sh +5 -5
- package/templates/.cursor/mcp.json +1 -1
- package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +4 -4
- package/templates/.gitagent/foreman/MANIFEST.json +2 -2
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/.gitagent/foreman/TEACHER.allowlist.example +1 -1
- package/templates/.gitagent/missions/README.md +3 -3
- package/templates/.gitagent/teacher/ARCHITECTURE-ACCESS.md +8 -8
- package/templates/.gitagent/teacher/KPI-REPORT.schema.yaml +1 -1
- package/templates/.gitagent/teacher/MISSION-ARCHITECT.md +5 -5
- package/templates/.gitagent/teacher/MISSION.schema.yaml +2 -2
- package/templates/.gitagent/teacher/RULES.md +2 -2
- package/templates/.githooks/pre-commit +4 -4
- package/templates/.githooks/pre-push +6 -6
- package/templates/.github/workflows/gxt-validate.yml +8 -8
- package/templates/AGENTS.md +1 -1
- package/templates/integrations/asset-catalog.json +1 -1
- package/templates/integrations/compatibility.json +1 -1
- package/templates/integrations/recipes/_footer.md +6 -6
- package/templates/integrations/recipes/_preamble.md +9 -9
- package/templates/integrations/recipes/aider.md +1 -1
- package/templates/integrations/recipes/antigravity.md +1 -1
- package/templates/integrations/recipes/claude-code.md +1 -1
- package/templates/integrations/recipes/codex-cli.md +2 -2
- package/templates/integrations/recipes/cursor.md +3 -3
- package/templates/scripts/dev-validate.sh +1 -1
- package/templates/scripts/gxt-resolve-mission.sh +2 -2
- package/templates/scripts/gxt-runtime-env.sh +4 -4
- package/templates/scripts/validate-gxt.sh +1 -1
- package/templates/scripts/verify-pr-missions.sh +6 -6
- package/templates/skills/{gapman.md → gantry.md} +2 -2
- package/dist/cli/lib/verify-changed-missions.d.ts +0 -3
- package/dist/cli/lib/verify-changed-missions.d.ts.map +0 -1
- package/dist/cli/lib/verify-changed-missions.js +0 -30
- package/dist/cli/lib/verify-changed-missions.js.map +0 -1
- package/dist/cli/lib/verify-remediation.d.ts +0 -5
- package/dist/cli/lib/verify-remediation.d.ts.map +0 -1
- package/dist/cli/lib/verify-remediation.js +0 -3
- package/dist/cli/lib/verify-remediation.js.map +0 -1
|
@@ -10,7 +10,7 @@ export function parseGitProofCode(message) {
|
|
|
10
10
|
const m = GIT_PROOF_CODE_RE.exec(message);
|
|
11
11
|
return m?.[1] ?? null;
|
|
12
12
|
}
|
|
13
|
-
function parseMsnIdFromGitProofMessage(message) {
|
|
13
|
+
export function parseMsnIdFromGitProofMessage(message) {
|
|
14
14
|
const m = message.match(/\[(MSN-\d{4})\]/);
|
|
15
15
|
return m?.[1];
|
|
16
16
|
}
|
|
@@ -28,7 +28,7 @@ export function hintMissionNoGate(missionPath) {
|
|
|
28
28
|
}
|
|
29
29
|
export function hintGitProof(code, ctx) {
|
|
30
30
|
const mission = ctx.missionPath ?? "<mission>";
|
|
31
|
-
const verifyCmd = `
|
|
31
|
+
const verifyCmd = `gantry verify --mission ${mission}`;
|
|
32
32
|
const root = ctx.root ?? ".";
|
|
33
33
|
switch (code) {
|
|
34
34
|
case "MISSION_MISSING_MSN":
|
|
@@ -43,14 +43,14 @@ export function hintGitProof(code, ctx) {
|
|
|
43
43
|
const msn = ctx.msnId ?? "MSN-NNNN";
|
|
44
44
|
return [
|
|
45
45
|
`git add ${mission} && git commit -m "[${msn}] legislate mission"`,
|
|
46
|
-
`
|
|
46
|
+
`gantry teacher set "$(git config user.email)"`,
|
|
47
47
|
verifyCmd,
|
|
48
48
|
].join("; ");
|
|
49
49
|
}
|
|
50
50
|
case "NO_TEACHER_MSN_COMMIT": {
|
|
51
51
|
const email = ctx.latestAuthorEmail ?? "$(git log -1 --format=%ae)";
|
|
52
52
|
return [
|
|
53
|
-
`
|
|
53
|
+
`gantry teacher set "${email}"`,
|
|
54
54
|
"add each Teacher email allowed to legislate in this repo",
|
|
55
55
|
verifyCmd,
|
|
56
56
|
].join("; ");
|
|
@@ -75,16 +75,16 @@ export function hintTeacherEmails(repoRoot) {
|
|
|
75
75
|
return teacherIdentitySetupHint(repoRoot);
|
|
76
76
|
}
|
|
77
77
|
export function hintGate(command, missionPath) {
|
|
78
|
-
return `re-run gate: ${command} # then
|
|
78
|
+
return `re-run gate: ${command} # then gantry verify --mission ${missionPath}`;
|
|
79
79
|
}
|
|
80
80
|
export function hintTraceStrictTrace(missionPath) {
|
|
81
|
-
return `remove --strict-trace to allow auto line-drift resolution:
|
|
81
|
+
return `remove --strict-trace to allow auto line-drift resolution: gantry verify --mission ${missionPath}`;
|
|
82
82
|
}
|
|
83
83
|
export function hintTraceAmbiguous(workerLogPath, missionPath, traceQuote) {
|
|
84
84
|
if (traceQuote !== undefined && traceQuote.trim().length <= 12) {
|
|
85
85
|
return `trace_quote "${traceQuote.trim()}" matches multiple lines in ${workerLogPath} — append a unique mission-specific line (e.g. "- DoD 1: MSN-… gate passed") and set trace_quote to that full verbatim line in ${missionPath}`;
|
|
86
86
|
}
|
|
87
|
-
return `disambiguate quotes in ${workerLogPath} or re-run:
|
|
87
|
+
return `disambiguate quotes in ${workerLogPath} or re-run: gantry runtime exec --mission ${missionPath} -- <worker>`;
|
|
88
88
|
}
|
|
89
89
|
export function hintTraceMissing(workerLogPath) {
|
|
90
90
|
return `append verbatim trace_quote to ${workerLogPath} from worker flight evidence`;
|
|
@@ -100,9 +100,9 @@ export function hintTraceQuoteStillPlaceholder(missionPath, workerLogPath) {
|
|
|
100
100
|
return `edit ${missionPath}: replace trace_quote placeholder with a verbatim substring from ${workerLogPath} (not the other way around)`;
|
|
101
101
|
}
|
|
102
102
|
export function hintTracePendingSteps(workerLogPath, missionPath, gateCommand) {
|
|
103
|
-
const verifyCmd = `
|
|
103
|
+
const verifyCmd = `gantry verify --mission ${missionPath}`;
|
|
104
104
|
return [
|
|
105
|
-
`eval "$(
|
|
105
|
+
`eval "$(gantry runtime env --mission ${missionPath})" then execute worker within TMVC`,
|
|
106
106
|
gateCommand
|
|
107
107
|
? `run gate (${gateCommand}); append a unique mission-specific line to ${workerLogPath} (not bare gate output if "OK" appears elsewhere)`
|
|
108
108
|
: `append a unique mission-specific evidence line to ${workerLogPath}`,
|
|
@@ -111,7 +111,7 @@ export function hintTracePendingSteps(workerLogPath, missionPath, gateCommand) {
|
|
|
111
111
|
];
|
|
112
112
|
}
|
|
113
113
|
export function hintForbiddenZone(firstPath, missionPath) {
|
|
114
|
-
return `revert changes under ${firstPath}; stay inside GXT_TMVC_ROOTS —
|
|
114
|
+
return `revert changes under ${firstPath}; stay inside GXT_TMVC_ROOTS — gantry runtime exec --mission ${missionPath}`;
|
|
115
115
|
}
|
|
116
116
|
export function hintRuntimeHumanSummary(summary, errorFile) {
|
|
117
117
|
return `${summary} See ${errorFile} (GXT_LAST_ERROR_FILE).`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-hints.js","sourceRoot":"","sources":["../../../src/cli/lib/fix-hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC1B,CAAC;AAYD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAEvD,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"fix-hints.js","sourceRoot":"","sources":["../../../src/cli/lib/fix-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -200,7 +200,7 @@ export function collectGitMetrics(root, refName) {
|
|
|
200
200
|
clearMetricsDiffCache();
|
|
201
201
|
const ref = gitRevParse(root, refName);
|
|
202
202
|
if (!ref)
|
|
203
|
-
throw new Error(`
|
|
203
|
+
throw new Error(`gantry metrics: invalid ref ${refName}`);
|
|
204
204
|
const records = streamLogRecords(root, ref);
|
|
205
205
|
const stream = aggregateFromLogStream(root, records);
|
|
206
206
|
const fromMissions = listMissionMsnIdsAtRef(root, ref);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Missions verified by `
|
|
1
|
+
/** Missions verified by `gantry verify` must live under this repo-relative prefix. */
|
|
2
2
|
export declare const REL_MISSIONS_PREFIX: ".gitagent/missions/";
|
|
3
3
|
export { ENV_TEACHER_EMAILS, parseTeacherEmailsFromEnv } from "./teacher-identity.js";
|
|
4
4
|
export declare const ENV_MSN_SCAN_DEPTH: "GXT_MSN_SCAN_DEPTH";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-proof.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/git-proof.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git-proof.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/git-proof.ts"],"names":[],"mappings":"AAsBA,sFAAsF;AACtF,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,eAAO,MAAM,kBAAkB,EAAG,oBAA6B,CAAC;AAChE,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAUzF;AAED,wBAAgB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAS9E;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,EAAE,CA0BhB;AAMD,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW3E;AAWD,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,CAkER;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAOT"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { GIT_CONFIG_TEACHER_EMAILS } from "./config-namespace.js";
|
|
2
3
|
import { CLI_NAME, MSN_ID_PATTERN } from "./constants.js";
|
|
3
4
|
import { toPosixRel } from "./cli-io.js";
|
|
4
5
|
import { gitRun } from "./git.js";
|
|
5
6
|
import { hintGitProof } from "./fix-hints.js";
|
|
6
7
|
import { GapmanUserError } from "./errors.js";
|
|
8
|
+
import { extractMsnIdFromMissionPath } from "./missions/parser.js";
|
|
9
|
+
import { resolveTeacherEmails } from "./teacher-identity.js";
|
|
7
10
|
function throwGitProofError(code, detail, ctx = {}) {
|
|
8
11
|
throw new GapmanUserError(code, `${CLI_NAME} verify: git-proof: ${code} — ${detail}`, hintGitProof(code, ctx));
|
|
9
12
|
}
|
|
10
|
-
|
|
11
|
-
import { resolveTeacherEmails } from "./teacher-identity.js";
|
|
12
|
-
/** Missions verified by `gapman verify` must live under this repo-relative prefix. */
|
|
13
|
+
/** Missions verified by `gantry verify` must live under this repo-relative prefix. */
|
|
13
14
|
export const REL_MISSIONS_PREFIX = ".gitagent/missions/";
|
|
14
15
|
export { ENV_TEACHER_EMAILS, parseTeacherEmailsFromEnv } from "./teacher-identity.js";
|
|
15
16
|
export const ENV_MSN_SCAN_DEPTH = "GXT_MSN_SCAN_DEPTH";
|
|
@@ -136,7 +137,7 @@ export function assertTeacherMissionProof(root, missionAbsolutePath, options) {
|
|
|
136
137
|
if (!stamp) {
|
|
137
138
|
const latest = rows[0];
|
|
138
139
|
throwGitProofError("NO_TEACHER_MSN_COMMIT", `The legislation was committed by ${JSON.stringify(latest.authorEmail)}, who is not in the Teacher allowlist (${teacherIdentity.detail}). ` +
|
|
139
|
-
`Add that email to .gitagent/foreman/TEACHER.allowlist.local, git config
|
|
140
|
+
`Add that email to .gitagent/foreman/TEACHER.allowlist.local, git config ${GIT_CONFIG_TEACHER_EMAILS}, or run ${CLI_NAME} teacher set.`, { root, missionPath, msnId, latestAuthorEmail: latest.authorEmail });
|
|
140
141
|
}
|
|
141
142
|
const changed = listCommitChangedPaths(root, stamp.hash);
|
|
142
143
|
if (!commitTouchesMission(changed, repoRelMission)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-proof.js","sourceRoot":"","sources":["../../../src/cli/lib/git-proof.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"git-proof.js","sourceRoot":"","sources":["../../../src/cli/lib/git-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,4 @@ export interface InitAssetSpec extends InitAsset {
|
|
|
15
15
|
export declare function loadInitAssetCatalog(templatesRoot: string): readonly InitAssetSpec[];
|
|
16
16
|
export declare function resolveAssetsFromProfile(profile: InitProfile, compat: IntegrationCompatManifest, templatesRoot: string): InitAssetSpec[];
|
|
17
17
|
export declare function templatePathForAsset(asset: InitAssetSpec): string;
|
|
18
|
-
/** Legacy default profile asset target paths (non-TTY / --yes parity). */
|
|
19
|
-
export declare function legacyDefaultInitTargetPaths(templatesRoot?: string): string[];
|
|
20
18
|
//# sourceMappingURL=init-asset-catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-asset-catalog.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-asset-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"init-asset-catalog.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-asset-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,eAAe,GACf,gBAAgB,GAChB,OAAO,GACP,IAAI,GACJ,SAAS,GACT,QAAQ,GACR,aAAa,GACb,WAAW,GACX,UAAU,GACV,OAAO,GACP,aAAa,GACb,OAAO,GACP,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AASD,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,aAAa,EAAE,CAgBpF;AAmBD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,MAAM,GACpB,aAAa,EAAE,CAGjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAEjE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { loadIntegrationCompat,
|
|
3
|
+
import { loadIntegrationCompat, } from "./integration-compat.js";
|
|
4
4
|
const catalogCache = new Map();
|
|
5
5
|
export function loadInitAssetCatalog(templatesRoot) {
|
|
6
6
|
const cached = catalogCache.get(templatesRoot);
|
|
@@ -41,16 +41,4 @@ export function resolveAssetsFromProfile(profile, compat, templatesRoot) {
|
|
|
41
41
|
export function templatePathForAsset(asset) {
|
|
42
42
|
return (asset.templatePath ?? asset.targetPath).split("/").join(path.sep);
|
|
43
43
|
}
|
|
44
|
-
/** Legacy default profile asset target paths (non-TTY / --yes parity). */
|
|
45
|
-
export function legacyDefaultInitTargetPaths(templatesRoot) {
|
|
46
|
-
const root = templatesRoot ?? resolveTemplateRootFromModule();
|
|
47
|
-
return resolveAssetsFromProfile({
|
|
48
|
-
ides: ["cursor"],
|
|
49
|
-
integrationsDocPath: "docs/INTEGRATIONS.md",
|
|
50
|
-
skillsPreset: "specimen",
|
|
51
|
-
gitHooks: true,
|
|
52
|
-
ciWorkflow: true,
|
|
53
|
-
architectureSource: "unset",
|
|
54
|
-
}, loadIntegrationCompat(root), root).map((a) => a.targetPath);
|
|
55
|
-
}
|
|
56
44
|
//# sourceMappingURL=init-asset-catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-asset-catalog.js","sourceRoot":"","sources":["../../../src/cli/lib/init-asset-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"init-asset-catalog.js","sourceRoot":"","sources":["../../../src/cli/lib/init-asset-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAuCjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,IAAI,iCAAiC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAqB,CAAC;IACjF,IAAI,GAAG,CAAC,cAAc,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,sBAAsB,CAAC,CAAC;IACvD,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAoB;IACpC,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACjF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAoB,EAAE,OAAoB;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAe;QACvC,MAAM;QACN,KAAK;QACL,SAAS;QACT,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,CAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,CAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,OAAO,CAAC,IAAI;KAChB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,MAAiC,EACjC,aAAqB;IAErB,KAAK,MAAM,CAAC;IACZ,OAAO,oBAAoB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -106,7 +106,7 @@ async function promptInitInfrastructure(partial, base) {
|
|
|
106
106
|
message: "Skills preset",
|
|
107
107
|
options: [
|
|
108
108
|
{ value: "minimal", label: "minimal (ui + logic)" },
|
|
109
|
-
{ value: "specimen", label: "specimen (ui, logic,
|
|
109
|
+
{ value: "specimen", label: "specimen (ui, logic, gantry, substrate)" },
|
|
110
110
|
],
|
|
111
111
|
initialValue: (partial.skillsPreset ?? base.skillsPreset),
|
|
112
112
|
});
|
|
@@ -138,7 +138,7 @@ async function promptInitInfrastructure(partial, base) {
|
|
|
138
138
|
}
|
|
139
139
|
export async function runInitInteractiveWizard(repoRoot, templatesRoot, partial) {
|
|
140
140
|
const compat = loadIntegrationCompat(templatesRoot);
|
|
141
|
-
p.intro("
|
|
141
|
+
p.intro("gantry init — OpenGantry substrate bootstrap");
|
|
142
142
|
const base = defaultInitProfile();
|
|
143
143
|
const integrations = await promptInitIntegrations(repoRoot, partial, base, compat);
|
|
144
144
|
if (!integrations)
|
|
@@ -61,16 +61,16 @@ export function logInitSummary(writes, skippedUserMutable, unchanged) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
const INIT_NEXT_STEPS = [
|
|
64
|
-
"edit .gitagent/foreman/MANIFEST.json (tmvc_roots, forbidden_zones, skills) and run
|
|
64
|
+
"edit .gitagent/foreman/MANIFEST.json (tmvc_roots, forbidden_zones, skills) and run gantry check",
|
|
65
65
|
"git config core.hooksPath .githooks",
|
|
66
|
-
'
|
|
67
|
-
'
|
|
66
|
+
'gantry teacher set "$(git config user.email)"',
|
|
67
|
+
'gantry start "<intent>" --msn MSN-0001 --skill-key <manifest-key>',
|
|
68
68
|
'Teacher: git commit -m "[MSN-0001] legislate mission" including mission file',
|
|
69
|
-
"eval \"$(
|
|
70
|
-
"
|
|
69
|
+
"eval \"$(gantry runtime env --mission .gitagent/missions/<file>.yaml)\"",
|
|
70
|
+
"gantry verify --mission .gitagent/missions/<file>.yaml",
|
|
71
71
|
"source scripts/gxt-runtime-env.sh .gitagent/missions/<file>.yaml",
|
|
72
72
|
"scripts/gxt-pin-mission.sh .gitagent/missions/<file>.yaml",
|
|
73
|
-
"
|
|
73
|
+
"gantry onboarding # guided walkthrough (strict checks)",
|
|
74
74
|
];
|
|
75
75
|
export function logInitNextSteps(profile) {
|
|
76
76
|
const steps = [...INIT_NEXT_STEPS];
|
|
@@ -20,7 +20,7 @@ function findExistingTutorialMission(repoRoot) {
|
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
22
|
function pickTutorialSkillKey(skillKeys) {
|
|
23
|
-
const preferred = ["logic", "ui", "
|
|
23
|
+
const preferred = ["logic", "ui", "gantry"];
|
|
24
24
|
for (const key of preferred) {
|
|
25
25
|
if (skillKeys.includes(key))
|
|
26
26
|
return key;
|
|
@@ -35,7 +35,7 @@ async function confirmTeacherStamp(repoRoot, missionPath) {
|
|
|
35
35
|
while (true) {
|
|
36
36
|
logInfo(tutorialTeacherStampBlock(missionPath, TUTORIAL_MSN_ID));
|
|
37
37
|
const ready = await p.confirm({
|
|
38
|
-
message: "I've run the git commands above (
|
|
38
|
+
message: "I've run the git commands above (gantry will check git history before continuing)",
|
|
39
39
|
initialValue: false,
|
|
40
40
|
});
|
|
41
41
|
if (p.isCancel(ready) || !ready)
|
|
@@ -54,7 +54,7 @@ async function confirmTeacherStamp(repoRoot, missionPath) {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
async function scaffoldTutorialMission(repoRoot, skillKey) {
|
|
57
|
-
p.log.step("Step 2 — Scaffold tutorial mission (
|
|
57
|
+
p.log.step("Step 2 — Scaffold tutorial mission (gantry start)");
|
|
58
58
|
const existing = findExistingTutorialMission(repoRoot);
|
|
59
59
|
if (existing) {
|
|
60
60
|
p.log.message(`Using existing tutorial mission: ${existing}`);
|
|
@@ -64,13 +64,13 @@ async function scaffoldTutorialMission(repoRoot, skillKey) {
|
|
|
64
64
|
intent: TUTORIAL_INTENT,
|
|
65
65
|
msn: TUTORIAL_MSN_ID,
|
|
66
66
|
skillKey,
|
|
67
|
-
gateCommand: "
|
|
67
|
+
gateCommand: "gantry check",
|
|
68
68
|
writeMission: true,
|
|
69
69
|
silent: true,
|
|
70
70
|
audience: "teacher",
|
|
71
71
|
});
|
|
72
72
|
if (!start.ok || !start.mission_file_path) {
|
|
73
|
-
logError("Tutorial start failed — run
|
|
73
|
+
logError("Tutorial start failed — run gantry onboarding or pass --skill-key");
|
|
74
74
|
setExitCode(start.exit_code);
|
|
75
75
|
p.outro("Tutorial incomplete");
|
|
76
76
|
return null;
|
|
@@ -82,7 +82,7 @@ async function runTutorialVerifyStep(missionPath) {
|
|
|
82
82
|
p.log.step("Step 5 — Verify");
|
|
83
83
|
logInfo(` ${onboardingVerifyHint(missionPath)}`);
|
|
84
84
|
const runVerifyNow = await p.confirm({
|
|
85
|
-
message: "Run
|
|
85
|
+
message: "Run gantry verify now (git-proof, gate, trace — expect errors until trace is complete)?",
|
|
86
86
|
initialValue: true,
|
|
87
87
|
});
|
|
88
88
|
if (p.isCancel(runVerifyNow) || !runVerifyNow) {
|
|
@@ -103,11 +103,11 @@ async function runTutorialVerifyStep(missionPath) {
|
|
|
103
103
|
function emitTutorialOutro(missionPath, verifyOk, ranVerify, verifyExitCode) {
|
|
104
104
|
if (!verifyOk) {
|
|
105
105
|
setExitCode(verifyExitCode ?? 1);
|
|
106
|
-
p.outro(`Tutorial incomplete — finish stamp/trace, then:
|
|
106
|
+
p.outro(`Tutorial incomplete — finish stamp/trace, then: gantry verify --mission ${missionPath} — see ${ONBOARDING_ADOPTION_DOC}`);
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
109
|
if (!ranVerify) {
|
|
110
|
-
p.outro(`Tutorial paused before verify — run:
|
|
110
|
+
p.outro(`Tutorial paused before verify — run: gantry verify --mission ${missionPath} — see ${ONBOARDING_ADOPTION_DOC}`);
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
113
|
p.outro(`Tutorial complete — full loop: ${ONBOARDING_ADOPTION_DOC}`);
|
|
@@ -130,13 +130,13 @@ export async function runInitTutorial() {
|
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
132
|
p.log.step("Step 1 — Teacher allowlist");
|
|
133
|
-
logInfo('
|
|
133
|
+
logInfo(' gantry teacher set "$(git config user.email)"');
|
|
134
134
|
const missionPath = await scaffoldTutorialMission(repoRoot, pickTutorialSkillKey(Object.keys(manifest.skills)));
|
|
135
135
|
if (!missionPath)
|
|
136
136
|
return;
|
|
137
137
|
p.log.step("Step 3 — Teacher stamp (manual, required)");
|
|
138
138
|
if (!(await confirmTeacherStamp(repoRoot, missionPath))) {
|
|
139
|
-
p.note("Verify will fail until git-proof passes. Re-run:
|
|
139
|
+
p.note("Verify will fail until git-proof passes. Re-run: gantry verify --mission " + missionPath, "Paused");
|
|
140
140
|
p.outro(`Tutorial paused — see ${ONBOARDING_ADOPTION_DOC}`);
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
@@ -26,7 +26,12 @@ export interface KpiReportStaleResult {
|
|
|
26
26
|
}
|
|
27
27
|
/** Bind KPI report attestation to TMVC drift (mirrors trace-evidence committed/uncommitted split). */
|
|
28
28
|
export declare function verifyKpiReportFreshness(repoRoot: string, manifest: Manifest, skillKey: string | null, reportPath: string, options?: KpiReportStaleOptions): KpiReportStaleResult;
|
|
29
|
-
export
|
|
29
|
+
export type KpiPhaseOutcome = {
|
|
30
|
+
kind: "ok";
|
|
30
31
|
warnings: string[];
|
|
32
|
+
} | {
|
|
33
|
+
kind: "fail";
|
|
34
|
+
failure: VerifyPhaseFailure;
|
|
31
35
|
} | null;
|
|
36
|
+
export declare function evaluateKpiPhase(root: string, manifest: Manifest, skillKey: string | null, kpiGate: KpiGateSpec, options: VerifyOptions, workerLogPath: string): KpiPhaseOutcome;
|
|
32
37
|
//# sourceMappingURL=kpi-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-engine.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/kpi-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kpi-engine.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/kpi-engine.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA0B7D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAK9F;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AA0CD,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,YAAY,EAAE,GAClC,mBAAmB,EAAE,CA8BvB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAU5E;AAID,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsBD,sGAAsG;AACtG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CA6EtB;AA6DD,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAC7C,IAAI,CAAC;AAET,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,GACpB,eAAe,CAsCjB"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import Ajv2020Import from "ajv/dist/2020.js";
|
|
4
|
-
import addFormatsImport from "ajv-formats";
|
|
5
3
|
import YAML from "yaml";
|
|
4
|
+
import { createSchemaValidator } from "./ajv-loader.js";
|
|
6
5
|
import { REL_KPI_REPORT_SCHEMA } from "./constants.js";
|
|
7
6
|
import { toPosixRel } from "./cli-io.js";
|
|
8
7
|
import { gitDiffNameOnlySinceCommit, gitRunOk } from "./git.js";
|
|
9
8
|
import { readBlamePorcelainByLine, UNCOMMITTED_BLAME_COMMIT } from "./trace.js";
|
|
10
9
|
import { tmvcRootsForSkill } from "./tmvc-path.js";
|
|
11
10
|
import { isVirtualScratchPath } from "./virtual-scratch-store.js";
|
|
12
|
-
const Ajv2020 = Ajv2020Import;
|
|
13
|
-
const addFormats = addFormatsImport;
|
|
14
11
|
let compiledValidator = null;
|
|
15
12
|
let compiledForRoot = null;
|
|
16
13
|
function loadKpiReportSchemaValidator(root) {
|
|
@@ -19,9 +16,7 @@ function loadKpiReportSchemaValidator(root) {
|
|
|
19
16
|
}
|
|
20
17
|
const schemaPath = path.join(root, REL_KPI_REPORT_SCHEMA);
|
|
21
18
|
const schemaDoc = YAML.parse(fs.readFileSync(schemaPath, "utf8"));
|
|
22
|
-
const
|
|
23
|
-
addFormats(ajv);
|
|
24
|
-
const validate = ajv.compile(schemaDoc);
|
|
19
|
+
const validate = createSchemaValidator(schemaDoc);
|
|
25
20
|
compiledValidator = validate;
|
|
26
21
|
compiledForRoot = root;
|
|
27
22
|
return validate;
|
|
@@ -39,7 +34,7 @@ export function assertKpiReportSchemaValid(root, data, filePath) {
|
|
|
39
34
|
if (validate(data))
|
|
40
35
|
return;
|
|
41
36
|
const detail = formatAjvErrors(validate.errors ?? []);
|
|
42
|
-
throw new Error(`
|
|
37
|
+
throw new Error(`gantry kpi: ${filePath}: schema validation failed: ${detail}`);
|
|
43
38
|
}
|
|
44
39
|
function metricNumericValue(value) {
|
|
45
40
|
if (value === undefined)
|
|
@@ -181,7 +176,7 @@ export function verifyKpiReportFreshness(repoRoot, manifest, skillKey, reportPat
|
|
|
181
176
|
? ` (+${String(diffResult.paths.length - shown.length)} more)`
|
|
182
177
|
: "";
|
|
183
178
|
const reason = `KPI report STALE (attested at ${shortCommit}): TMVC drift since scan — ` +
|
|
184
|
-
`${shown.join(", ")}${suffix}. Re-run
|
|
179
|
+
`${shown.join(", ")}${suffix}. Re-run gantry scan and commit the updated report.`;
|
|
185
180
|
if (options.strictStale === true) {
|
|
186
181
|
return {
|
|
187
182
|
stale: true,
|
|
@@ -248,32 +243,36 @@ export function evaluateKpiPhase(root, manifest, skillKey, kpiGate, options, wor
|
|
|
248
243
|
const reportRel = kpiGate.reportPath.replace(/\\/g, "/");
|
|
249
244
|
const loaded = loadReportOrFail(root, reportRel, workerLogPath);
|
|
250
245
|
if ("ok" in loaded)
|
|
251
|
-
return loaded;
|
|
246
|
+
return { kind: "fail", failure: loaded };
|
|
252
247
|
const stale = verifyKpiReportFreshness(root, manifest, skillKey, reportRel, {
|
|
253
248
|
skipStaleEvidence: options.skipStaleEvidence === true,
|
|
254
249
|
strictStale: options.prePush === true || options.ci === true,
|
|
255
250
|
});
|
|
256
251
|
const warnings = [];
|
|
257
252
|
if (stale.advisoryOnly && stale.reason) {
|
|
258
|
-
warnings.push(`
|
|
253
|
+
warnings.push(`gantry verify: advisory — ${stale.reason}`);
|
|
259
254
|
}
|
|
260
255
|
if (stale.stale)
|
|
261
|
-
return staleFailure(reportRel, workerLogPath, stale);
|
|
256
|
+
return { kind: "fail", failure: staleFailure(reportRel, workerLogPath, stale) };
|
|
262
257
|
const report = loaded.report;
|
|
263
258
|
const failures = evaluateKpiThresholds(report, kpiGate.thresholds);
|
|
264
|
-
if (failures.length > 0)
|
|
265
|
-
return thresholdFailure(reportRel, workerLogPath, failures[0]);
|
|
259
|
+
if (failures.length > 0) {
|
|
260
|
+
return { kind: "fail", failure: thresholdFailure(reportRel, workerLogPath, failures[0]) };
|
|
261
|
+
}
|
|
266
262
|
if (report.exit_code !== 0) {
|
|
267
263
|
return {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
264
|
+
kind: "fail",
|
|
265
|
+
failure: {
|
|
266
|
+
ok: false,
|
|
267
|
+
phase: "kpi",
|
|
268
|
+
message: `KPI report exit_code=${String(report.exit_code)} (expected 0)`,
|
|
269
|
+
exitCode: 1,
|
|
270
|
+
workerLogPath,
|
|
271
|
+
kpiReportPath: reportRel,
|
|
272
|
+
kpiReason: `report exit_code=${String(report.exit_code)}`,
|
|
273
|
+
},
|
|
275
274
|
};
|
|
276
275
|
}
|
|
277
|
-
return warnings.length > 0 ? { warnings } : null;
|
|
276
|
+
return warnings.length > 0 ? { kind: "ok", warnings } : null;
|
|
278
277
|
}
|
|
279
278
|
//# sourceMappingURL=kpi-engine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kpi-engine.js","sourceRoot":"","sources":["../../../src/cli/lib/kpi-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"kpi-engine.js","sourceRoot":"","sources":["../../../src/cli/lib/kpi-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/lib/kpi-scan.js
CHANGED
|
@@ -68,11 +68,11 @@ function applyAggregators(metrics, aggregators) {
|
|
|
68
68
|
export function runKpiScan(root, mission, options = {}) {
|
|
69
69
|
const msnId = mission.msnId;
|
|
70
70
|
if (!msnId) {
|
|
71
|
-
throw new Error("
|
|
71
|
+
throw new Error("gantry scan: mission missing msn_id");
|
|
72
72
|
}
|
|
73
73
|
const verifiers = mission.llmVerifiers;
|
|
74
74
|
if (verifiers.length === 0) {
|
|
75
|
-
throw new Error("
|
|
75
|
+
throw new Error("gantry scan: mission has no llm_verifiers configured");
|
|
76
76
|
}
|
|
77
77
|
const reportPath = mission.kpiGate?.reportPath.replace(/\\/g, "/") ??
|
|
78
78
|
`${DEFAULT_KPI_REPORT_DIR}/${msnId}.json`;
|
|
@@ -83,7 +83,7 @@ export function runKpiScan(root, mission, options = {}) {
|
|
|
83
83
|
for (const verifier of verifiers) {
|
|
84
84
|
const outcome = runSingleVerifier(workDir, verifier);
|
|
85
85
|
if (outcome.failed && verifier.required) {
|
|
86
|
-
throw new Error(`
|
|
86
|
+
throw new Error(`gantry scan: required verifier "${verifier.id}" failed (exit ${String(outcome.exitCode)})`);
|
|
87
87
|
}
|
|
88
88
|
if (outcome.failed) {
|
|
89
89
|
mergedMetrics[`${verifier.id}::__verifier_ok`] = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legislate.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/legislate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"legislate.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/legislate.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE/D;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAAA;CAAE,CAAC;AAE7F,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,qBAAqB,CA8BxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAAC;AAuI/B,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAsCvE"}
|