@jeger-ai/opengantry 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -59
- package/dist/cli/commands/arch.d.ts +9 -0
- package/dist/cli/commands/arch.d.ts.map +1 -1
- package/dist/cli/commands/arch.js +65 -0
- package/dist/cli/commands/arch.js.map +1 -1
- package/dist/cli/commands/context-request.d.ts +2 -2
- package/dist/cli/commands/context-request.d.ts.map +1 -1
- package/dist/cli/commands/context-request.js +13 -13
- package/dist/cli/commands/context-request.js.map +1 -1
- package/dist/cli/commands/init.js +2 -2
- package/dist/cli/commands/onboarding.js +4 -4
- package/dist/cli/commands/onboarding.js.map +1 -1
- package/dist/cli/commands/planner.d.ts +11 -0
- package/dist/cli/commands/{teacher.d.ts.map → planner.d.ts.map} +1 -1
- package/dist/cli/commands/{teacher.js → planner.js} +11 -11
- package/dist/cli/commands/{teacher.js.map → planner.js.map} +1 -1
- package/dist/cli/commands/runtime.d.ts +1 -1
- package/dist/cli/commands/runtime.d.ts.map +1 -1
- package/dist/cli/commands/runtime.js +4 -4
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/lib/arch-override.d.ts +4 -0
- package/dist/cli/lib/arch-override.d.ts.map +1 -0
- package/dist/cli/lib/arch-override.js +8 -0
- package/dist/cli/lib/arch-override.js.map +1 -0
- package/dist/cli/lib/architecture-fetch.d.ts +24 -0
- package/dist/cli/lib/architecture-fetch.d.ts.map +1 -0
- package/dist/cli/lib/architecture-fetch.js +88 -0
- package/dist/cli/lib/architecture-fetch.js.map +1 -0
- package/dist/cli/lib/audience-output.d.ts +1 -1
- package/dist/cli/lib/audience-output.d.ts.map +1 -1
- package/dist/cli/lib/audience-output.js +16 -16
- package/dist/cli/lib/audience-output.js.map +1 -1
- package/dist/cli/lib/break-glass.js +1 -1
- package/dist/cli/lib/command-reporter.d.ts +1 -0
- package/dist/cli/lib/command-reporter.d.ts.map +1 -1
- package/dist/cli/lib/command-reporter.js +10 -5
- package/dist/cli/lib/command-reporter.js.map +1 -1
- package/dist/cli/lib/config-namespace.d.ts +2 -2
- package/dist/cli/lib/config-namespace.js +2 -2
- package/dist/cli/lib/constants.d.ts +8 -8
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +8 -8
- package/dist/cli/lib/constants.js.map +1 -1
- package/dist/cli/lib/context-request.d.ts +4 -4
- package/dist/cli/lib/context-request.d.ts.map +1 -1
- package/dist/cli/lib/context-request.js +11 -11
- package/dist/cli/lib/context-request.js.map +1 -1
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +49 -22
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/doctor-types.d.ts +2 -2
- package/dist/cli/lib/errors.js +6 -6
- package/dist/cli/lib/errors.js.map +1 -1
- package/dist/cli/lib/executor-log-integrity.d.ts +4 -0
- package/dist/cli/lib/executor-log-integrity.d.ts.map +1 -0
- package/dist/cli/lib/{worker-log-integrity.js → executor-log-integrity.js} +8 -8
- package/dist/cli/lib/executor-log-integrity.js.map +1 -0
- package/dist/cli/lib/{worker-log-line-map.d.ts → executor-log-line-map.d.ts} +4 -4
- package/dist/cli/lib/executor-log-line-map.d.ts.map +1 -0
- package/dist/cli/lib/{worker-log-line-map.js → executor-log-line-map.js} +4 -4
- package/dist/cli/lib/executor-log-line-map.js.map +1 -0
- package/dist/cli/lib/file-merge-gxt.js +1 -1
- package/dist/cli/lib/file-merge-gxt.js.map +1 -1
- package/dist/cli/lib/fix-hints.d.ts +6 -6
- package/dist/cli/lib/fix-hints.d.ts.map +1 -1
- package/dist/cli/lib/fix-hints.js +36 -30
- package/dist/cli/lib/fix-hints.js.map +1 -1
- package/dist/cli/lib/git-metrics.js +10 -10
- package/dist/cli/lib/git-metrics.js.map +1 -1
- package/dist/cli/lib/git-proof.d.ts +7 -5
- package/dist/cli/lib/git-proof.d.ts.map +1 -1
- package/dist/cli/lib/git-proof.js +48 -19
- package/dist/cli/lib/git-proof.js.map +1 -1
- package/dist/cli/lib/gxt-config.d.ts +9 -0
- package/dist/cli/lib/gxt-config.d.ts.map +1 -0
- package/dist/cli/lib/gxt-config.js +20 -0
- package/dist/cli/lib/gxt-config.js.map +1 -0
- package/dist/cli/lib/gxt-error-codes.d.ts +3 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +8 -3
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/init-compose.js +1 -1
- package/dist/cli/lib/init-interactive.js +1 -1
- package/dist/cli/lib/init-interactive.js.map +1 -1
- package/dist/cli/lib/init-tutorial.js +14 -14
- package/dist/cli/lib/init-tutorial.js.map +1 -1
- package/dist/cli/lib/kpi-engine.d.ts +1 -1
- package/dist/cli/lib/kpi-engine.d.ts.map +1 -1
- package/dist/cli/lib/kpi-engine.js +17 -11
- package/dist/cli/lib/kpi-engine.js.map +1 -1
- package/dist/cli/lib/legislate-forbidden-zone.d.ts +1 -1
- package/dist/cli/lib/legislate-forbidden-zone.js +1 -1
- package/dist/cli/lib/legislate.js +4 -4
- package/dist/cli/lib/mcp-governance.d.ts +2 -2
- package/dist/cli/lib/mcp-governance.d.ts.map +1 -1
- package/dist/cli/lib/mcp-governance.js +40 -10
- package/dist/cli/lib/mcp-governance.js.map +1 -1
- package/dist/cli/lib/mcp-tools-register.js +3 -3
- package/dist/cli/lib/mcp-tools-register.js.map +1 -1
- package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
- package/dist/cli/lib/mcp-upgrade.js +8 -0
- package/dist/cli/lib/mcp-upgrade.js.map +1 -1
- package/dist/cli/lib/mcp-write-guard.d.ts +20 -0
- package/dist/cli/lib/mcp-write-guard.d.ts.map +1 -0
- package/dist/cli/lib/mcp-write-guard.js +82 -0
- package/dist/cli/lib/mcp-write-guard.js.map +1 -0
- package/dist/cli/lib/missions/formatter.d.ts +1 -1
- package/dist/cli/lib/missions/formatter.js +1 -1
- package/dist/cli/lib/onboarding-flow.js +1 -1
- package/dist/cli/lib/out-of-scope-hint.js +1 -1
- package/dist/cli/lib/perimeter.d.ts +1 -1
- package/dist/cli/lib/perimeter.js +10 -10
- package/dist/cli/lib/planner-identity.d.ts +23 -0
- package/dist/cli/lib/{teacher-identity.d.ts.map → planner-identity.d.ts.map} +1 -1
- package/dist/cli/lib/{teacher-identity.js → planner-identity.js} +34 -34
- package/dist/cli/lib/{teacher-identity.js.map → planner-identity.js.map} +1 -1
- package/dist/cli/lib/planner-signature.d.ts +11 -0
- package/dist/cli/lib/planner-signature.d.ts.map +1 -0
- package/dist/cli/lib/planner-signature.js +17 -0
- package/dist/cli/lib/planner-signature.js.map +1 -0
- package/dist/cli/lib/program-audience-hook.js +1 -1
- package/dist/cli/lib/program-audience-hook.js.map +1 -1
- package/dist/cli/lib/register-proposals.js +1 -1
- package/dist/cli/lib/runtime-env.d.ts +3 -3
- package/dist/cli/lib/runtime-env.d.ts.map +1 -1
- package/dist/cli/lib/runtime-env.js +4 -4
- package/dist/cli/lib/runtime-env.js.map +1 -1
- package/dist/cli/lib/runtime-exec.d.ts +4 -4
- package/dist/cli/lib/runtime-exec.d.ts.map +1 -1
- package/dist/cli/lib/runtime-exec.js +14 -14
- package/dist/cli/lib/runtime-exec.js.map +1 -1
- package/dist/cli/lib/staged-tmvc-guard.js +1 -1
- package/dist/cli/lib/staged-tmvc-guard.js.map +1 -1
- package/dist/cli/lib/start-orchestration.js +7 -7
- package/dist/cli/lib/start-orchestration.js.map +1 -1
- package/dist/cli/lib/status-report.d.ts +1 -1
- package/dist/cli/lib/status-report.js +7 -7
- package/dist/cli/lib/status-report.js.map +1 -1
- package/dist/cli/lib/surgeon.d.ts +3 -3
- package/dist/cli/lib/surgeon.d.ts.map +1 -1
- package/dist/cli/lib/surgeon.js +7 -7
- package/dist/cli/lib/surgeon.js.map +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
- package/dist/cli/lib/target-architecture.d.ts +37 -0
- package/dist/cli/lib/target-architecture.d.ts.map +1 -0
- package/dist/cli/lib/target-architecture.js +155 -0
- package/dist/cli/lib/target-architecture.js.map +1 -0
- package/dist/cli/lib/telemetry-log.d.ts +1 -1
- package/dist/cli/lib/telemetry-log.d.ts.map +1 -1
- package/dist/cli/lib/telemetry-log.js +4 -4
- package/dist/cli/lib/telemetry-log.js.map +1 -1
- package/dist/cli/lib/tmvc-path.d.ts +1 -1
- package/dist/cli/lib/tmvc-path.d.ts.map +1 -1
- package/dist/cli/lib/tmvc-path.js +1 -1
- package/dist/cli/lib/tmvc-path.js.map +1 -1
- package/dist/cli/lib/trace.d.ts +8 -8
- package/dist/cli/lib/trace.d.ts.map +1 -1
- package/dist/cli/lib/trace.js +21 -21
- package/dist/cli/lib/trace.js.map +1 -1
- package/dist/cli/lib/triage-logic.js +1 -1
- package/dist/cli/lib/types.d.ts +2 -1
- package/dist/cli/lib/types.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-apply.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-apply.js +14 -2
- package/dist/cli/lib/upgrade-apply.js.map +1 -1
- package/dist/cli/lib/upgrade-plan.js +3 -3
- package/dist/cli/lib/verify-engine.d.ts +11 -5
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +47 -30
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-export.d.ts +6 -0
- package/dist/cli/lib/verify-export.d.ts.map +1 -0
- package/dist/cli/lib/verify-export.js +106 -0
- package/dist/cli/lib/verify-export.js.map +1 -0
- package/dist/cli/lib/verify-failure-normalize-phases.js +1 -1
- package/dist/cli/lib/verify-failure-normalize-phases.js.map +1 -1
- package/dist/cli/lib/verify-hints.d.ts +1 -1
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-hints.js +16 -16
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-payload-types.d.ts +1 -0
- package/dist/cli/lib/verify-payload-types.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +3 -0
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +12 -6
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-sinks.d.ts.map +1 -1
- package/dist/cli/lib/verify-sinks.js +3 -2
- package/dist/cli/lib/verify-sinks.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-arch.d.ts.map +1 -1
- package/dist/cli/program-arch.js +16 -1
- package/dist/cli/program-arch.js.map +1 -1
- package/dist/cli/program-core.js +4 -4
- package/dist/cli/program-core.js.map +1 -1
- package/dist/cli/program-mission.js +15 -15
- package/dist/cli/program-mission.js.map +1 -1
- package/dist/cli/program-planner.d.ts +3 -0
- package/dist/cli/program-planner.d.ts.map +1 -0
- package/dist/cli/program-planner.js +19 -0
- package/dist/cli/{program-teacher.js.map → program-planner.js.map} +1 -1
- package/dist/cli/program-workflow.d.ts.map +1 -1
- package/dist/cli/program-workflow.js +19 -8
- package/dist/cli/program-workflow.js.map +1 -1
- package/dist/cli/program.js +3 -3
- package/dist/cli/program.js.map +1 -1
- package/package.json +1 -1
- package/templates/.cursor/hooks/gxt-before-shell.sh +4 -4
- package/templates/.cursor/hooks/gxt-session-start.sh +2 -2
- package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +4 -4
- package/templates/.gitagent/ARCHITECTURE.pointer.json +2 -2
- package/templates/.gitagent/foreman/MANIFEST.json +3 -3
- package/templates/.gitagent/foreman/PLANNER.allowlist.example +4 -0
- package/templates/.gitagent/missions/README.md +1 -1
- package/templates/.gitagent/{teacher → planner}/ARCHITECTURE-ACCESS.md +3 -3
- package/templates/.gitagent/{teacher → planner}/ARCHITECTURE-DISCOVERY.md +2 -2
- package/templates/.gitagent/planner/ARCHITECTURE_RUBRIC.template.md +25 -0
- package/templates/.gitagent/{teacher/WORKER_LOG.template.md → planner/EXECUTOR_LOG.template.md} +2 -2
- package/templates/.gitagent/{teacher → planner}/MISSION-ARCHITECT.md +11 -11
- package/templates/.gitagent/{teacher → planner}/RULES.md +4 -4
- package/templates/.githooks/post-checkout +4 -4
- package/templates/.githooks/pre-push +1 -1
- package/templates/.github/workflows/gxt-validate.yml +1 -1
- package/templates/.gitignore.gxt +1 -1
- package/templates/.prettierignore.gxt +1 -1
- package/templates/AGENTS.md +6 -6
- package/templates/docs/ARCHITECTURE.md +2 -2
- package/templates/integrations/aider/.aider.conf.yml +1 -1
- package/templates/integrations/antigravity/.agent/rules/gxt.md +1 -1
- package/templates/integrations/asset-catalog.json +7 -7
- package/templates/integrations/claude-code/CLAUDE.md +1 -1
- package/templates/integrations/cline/.clinerules/gxt.md +1 -1
- package/templates/integrations/compatibility.json +1 -1
- package/templates/integrations/junie/.junie/guidelines.md +1 -1
- package/templates/integrations/opencode/opencode.json +1 -1
- package/templates/integrations/openhands/.openhands/microagents/gxt.md +1 -1
- package/templates/integrations/recipes/_footer.md +7 -7
- package/templates/integrations/recipes/_preamble.md +7 -7
- package/templates/integrations/recipes/claude-code.md +1 -1
- package/templates/integrations/recipes/cursor.md +2 -2
- package/templates/scripts/gxt-manifest-lib.mjs +1 -1
- package/templates/scripts/gxt-runtime-env.sh +1 -1
- package/templates/skills/gantry.md +1 -1
- package/templates/skills/substrate.md +1 -1
- package/dist/cli/commands/teacher.d.ts +0 -11
- package/dist/cli/lib/teacher-identity.d.ts +0 -23
- package/dist/cli/lib/worker-log-integrity.d.ts +0 -4
- package/dist/cli/lib/worker-log-integrity.d.ts.map +0 -1
- package/dist/cli/lib/worker-log-integrity.js.map +0 -1
- package/dist/cli/lib/worker-log-line-map.d.ts.map +0 -1
- package/dist/cli/lib/worker-log-line-map.js.map +0 -1
- package/dist/cli/program-teacher.d.ts +0 -3
- package/dist/cli/program-teacher.d.ts.map +0 -1
- package/dist/cli/program-teacher.js +0 -19
- package/templates/.gitagent/foreman/TEACHER.allowlist.example +0 -4
- /package/templates/.gitagent/{teacher → planner}/KPI-REPORT.schema.yaml +0 -0
- /package/templates/.gitagent/{teacher → planner}/MISSION.schema.yaml +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logInfo } from "./cli-io.js";
|
|
2
|
-
import {
|
|
2
|
+
import { plannerIdentitySetupHint } from "./planner-identity.js";
|
|
3
3
|
const REL_MISSIONS_PREFIX = ".gitagent/missions/";
|
|
4
4
|
/** Human remediation only — never mix with machine JSON streams. */
|
|
5
5
|
export function logFixHint(hint) {
|
|
@@ -37,29 +37,29 @@ export function hintGitProof(code, ctx) {
|
|
|
37
37
|
"see .gitagent/missions/example.verify.yaml",
|
|
38
38
|
verifyCmd,
|
|
39
39
|
].join("; ");
|
|
40
|
-
case "
|
|
40
|
+
case "PLANNER_IDENTITY_UNCONFIGURED":
|
|
41
41
|
return hintTeacherEmails(root);
|
|
42
42
|
case "NO_MSN_COMMITS": {
|
|
43
43
|
const msn = ctx.msnId ?? "MSN-NNNN";
|
|
44
44
|
return [
|
|
45
45
|
`git add ${mission} && git commit -m "[${msn}] legislate mission"`,
|
|
46
|
-
`gantry
|
|
46
|
+
`gantry planner set "$(git config user.email)"`,
|
|
47
47
|
verifyCmd,
|
|
48
48
|
].join("; ");
|
|
49
49
|
}
|
|
50
|
-
case "
|
|
50
|
+
case "NO_PLANNER_MSN_COMMIT": {
|
|
51
51
|
const email = ctx.latestAuthorEmail ?? "$(git log -1 --format=%ae)";
|
|
52
52
|
return [
|
|
53
|
-
`gantry
|
|
54
|
-
"add each
|
|
53
|
+
`gantry planner set "${email}"`,
|
|
54
|
+
"add each Planner email allowed to legislate in this repo",
|
|
55
55
|
verifyCmd,
|
|
56
56
|
].join("; ");
|
|
57
57
|
}
|
|
58
|
-
case "
|
|
58
|
+
case "MISSION_FILE_NOT_MODIFIED_BY_PLANNER": {
|
|
59
59
|
const msn = ctx.msnId ?? "MSN-NNNN";
|
|
60
60
|
const rel = ctx.repoRelMission ?? mission;
|
|
61
61
|
return [
|
|
62
|
-
`git add ${rel} && git commit -m "[${msn}] include mission in
|
|
62
|
+
`git add ${rel} && git commit -m "[${msn}] include mission in Planner stamp"`,
|
|
63
63
|
verifyCmd,
|
|
64
64
|
].join("; ");
|
|
65
65
|
}
|
|
@@ -67,12 +67,18 @@ export function hintGitProof(code, ctx) {
|
|
|
67
67
|
return `move mission under ${REL_MISSIONS_PREFIX} (got path outside missions dir)`;
|
|
68
68
|
case "MISSION_NO_GATE":
|
|
69
69
|
return hintMissionNoGate(mission);
|
|
70
|
+
case "PLANNER_STAMP_UNSIGNED":
|
|
71
|
+
return [
|
|
72
|
+
"enable commit signing for Planner legislation (git config commit.gpgsign true or SSH signing)",
|
|
73
|
+
"or set planner_signature to off or warn in .gitagent/config.json",
|
|
74
|
+
verifyCmd,
|
|
75
|
+
].join("; ");
|
|
70
76
|
default:
|
|
71
77
|
return verifyCmd;
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
export function hintTeacherEmails(repoRoot) {
|
|
75
|
-
return
|
|
81
|
+
return plannerIdentitySetupHint(repoRoot);
|
|
76
82
|
}
|
|
77
83
|
export function hintGate(command, missionPath) {
|
|
78
84
|
return `re-run gate: ${command} # then gantry verify --mission ${missionPath}`;
|
|
@@ -80,33 +86,33 @@ export function hintGate(command, missionPath) {
|
|
|
80
86
|
export function hintTraceStrictTrace(missionPath) {
|
|
81
87
|
return `remove --strict-trace to allow auto line-drift resolution: gantry verify --mission ${missionPath}`;
|
|
82
88
|
}
|
|
83
|
-
export function hintTraceAmbiguous(
|
|
89
|
+
export function hintTraceAmbiguous(executorLogPath, missionPath, traceQuote) {
|
|
84
90
|
if (traceQuote !== undefined && traceQuote.trim().length <= 12) {
|
|
85
|
-
return `trace_quote "${traceQuote.trim()}" matches multiple lines in ${
|
|
91
|
+
return `trace_quote "${traceQuote.trim()}" matches multiple lines in ${executorLogPath} — 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
92
|
}
|
|
87
|
-
return `disambiguate quotes in ${
|
|
93
|
+
return `disambiguate quotes in ${executorLogPath} or re-run: gantry runtime exec --mission ${missionPath} -- <worker>`;
|
|
88
94
|
}
|
|
89
|
-
export function hintTraceMissing(
|
|
90
|
-
return `append verbatim trace_quote to ${
|
|
95
|
+
export function hintTraceMissing(executorLogPath) {
|
|
96
|
+
return `append verbatim trace_quote to ${executorLogPath} from executor flight evidence`;
|
|
91
97
|
}
|
|
92
|
-
export function hintTraceStaleEvidence(
|
|
98
|
+
export function hintTraceStaleEvidence(executorLogPath, missionPath) {
|
|
93
99
|
return [
|
|
94
|
-
`TMVC drift since
|
|
95
|
-
`append a fresh unique trace line to ${
|
|
100
|
+
`TMVC drift since EXECUTOR_LOG trace attestation — re-run gate (${missionPath})`,
|
|
101
|
+
`append a fresh unique trace line to ${executorLogPath} and set mission trace_quote to that verbatim line`,
|
|
96
102
|
"after interactive rebase/squash, re-run gate + verify (historical attestation may be invalidated)",
|
|
97
103
|
].join("; ");
|
|
98
104
|
}
|
|
99
|
-
export function hintTraceQuoteStillPlaceholder(missionPath,
|
|
100
|
-
return `edit ${missionPath}: replace trace_quote placeholder with a verbatim substring from ${
|
|
105
|
+
export function hintTraceQuoteStillPlaceholder(missionPath, executorLogPath) {
|
|
106
|
+
return `edit ${missionPath}: replace trace_quote placeholder with a verbatim substring from ${executorLogPath} (not the other way around)`;
|
|
101
107
|
}
|
|
102
|
-
export function hintTracePendingSteps(
|
|
108
|
+
export function hintTracePendingSteps(executorLogPath, missionPath, gateCommand) {
|
|
103
109
|
const verifyCmd = `gantry verify --mission ${missionPath}`;
|
|
104
110
|
return [
|
|
105
|
-
`eval "$(gantry runtime env --mission ${missionPath})" then execute
|
|
111
|
+
`eval "$(gantry runtime env --mission ${missionPath})" then execute executor within TMVC`,
|
|
106
112
|
gateCommand
|
|
107
|
-
? `run gate (${gateCommand}); append a unique mission-specific line to ${
|
|
108
|
-
: `append a unique mission-specific evidence line to ${
|
|
109
|
-
`edit ${missionPath}: set trace row status PASS and trace_quote to verbatim substring from ${
|
|
113
|
+
? `run gate (${gateCommand}); append a unique mission-specific line to ${executorLogPath} (not bare gate output if "OK" appears elsewhere)`
|
|
114
|
+
: `append a unique mission-specific evidence line to ${executorLogPath}`,
|
|
115
|
+
`edit ${missionPath}: set trace row status PASS and trace_quote to verbatim substring from ${executorLogPath}`,
|
|
110
116
|
verifyCmd,
|
|
111
117
|
];
|
|
112
118
|
}
|
|
@@ -116,22 +122,22 @@ export function hintForbiddenZone(firstPath, missionPath) {
|
|
|
116
122
|
export function hintRuntimeHumanSummary(summary, errorFile) {
|
|
117
123
|
return `${summary} See ${errorFile} (GXT_LAST_ERROR_FILE).`;
|
|
118
124
|
}
|
|
119
|
-
export function hintForTraceKind(traceKind,
|
|
125
|
+
export function hintForTraceKind(traceKind, executorLog, mission, traceQuote) {
|
|
120
126
|
switch (traceKind) {
|
|
121
127
|
case "ambiguous":
|
|
122
|
-
return hintTraceAmbiguous(
|
|
128
|
+
return hintTraceAmbiguous(executorLog, mission, traceQuote);
|
|
123
129
|
case "placeholder_quote":
|
|
124
|
-
return hintTraceQuoteStillPlaceholder(mission,
|
|
130
|
+
return hintTraceQuoteStillPlaceholder(mission, executorLog);
|
|
125
131
|
case "strict_line_drift":
|
|
126
132
|
return hintTraceStrictTrace(mission);
|
|
127
133
|
case "stale_evidence":
|
|
128
|
-
return hintTraceStaleEvidence(
|
|
134
|
+
return hintTraceStaleEvidence(executorLog, mission);
|
|
129
135
|
case "quote_missing":
|
|
130
|
-
case "
|
|
136
|
+
case "executor_log_missing":
|
|
131
137
|
case "empty_quote":
|
|
132
138
|
case "anchor_mismatch":
|
|
133
139
|
case "other":
|
|
134
|
-
return hintTraceMissing(
|
|
140
|
+
return hintTraceMissing(executorLog);
|
|
135
141
|
}
|
|
136
142
|
}
|
|
137
143
|
//# sourceMappingURL=fix-hints.js.map
|
|
@@ -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,MAAM,UAAU,6BAA6B,CAAC,OAAe;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO;QACL,0DAA0D,WAAW,EAAE;QACvE,yEAAyE;KAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAwB;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC;IAC/C,MAAM,SAAS,GAAG,2BAA2B,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;IAE7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,qBAAqB;YACxB,OAAO;gBACL,0EAA0E;gBAC1E,4CAA4C;gBAC5C,SAAS;aACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,+BAA+B;YAClC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC;YACpC,OAAO;gBACL,WAAW,OAAO,uBAAuB,GAAG,sBAAsB;gBAClE,+CAA+C;gBAC/C,SAAS;aACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;YACpE,OAAO;gBACL,uBAAuB,KAAK,GAAG;gBAC/B,0DAA0D;gBAC1D,SAAS;aACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,KAAK,sCAAsC,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC;YACpC,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;YAC1C,OAAO;gBACL,WAAW,GAAG,uBAAuB,GAAG,qCAAqC;gBAC7E,SAAS;aACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,KAAK,8BAA8B;YACjC,OAAO,sBAAsB,mBAAmB,kCAAkC,CAAC;QACrF,KAAK,iBAAiB;YACpB,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,WAAmB;IAC3D,OAAO,gBAAgB,OAAO,oCAAoC,WAAW,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,sFAAsF,WAAW,EAAE,CAAC;AAC7G,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,
|
|
1
|
+
{"version":3,"file":"fix-hints.js","sourceRoot":"","sources":["../../../src/cli/lib/fix-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import YAML from "yaml";
|
|
2
2
|
import { GXT_BYPASS_NOTES_REF } from "./break-glass.js";
|
|
3
|
-
import { MSN_ID_PATTERN,
|
|
4
|
-
import {
|
|
3
|
+
import { MSN_ID_PATTERN, EXECUTOR_LOG_FILENAME } from "./constants.js";
|
|
4
|
+
import { parsePlannerEmailsFromEnv, commitSubjectHasMsnPrefix } from "./git-proof.js";
|
|
5
5
|
import { gitRevParse, gitRunOk } from "./git.js";
|
|
6
6
|
const MISSIONS_PREFIX = ".gitagent/missions/";
|
|
7
7
|
const diffCache = new Map();
|
|
@@ -96,14 +96,14 @@ function commitChangedPaths(root, hash) {
|
|
|
96
96
|
diffCache.set(hash, paths);
|
|
97
97
|
return paths;
|
|
98
98
|
}
|
|
99
|
-
function
|
|
99
|
+
function isPlannerEmail(email) {
|
|
100
100
|
const normalizedAuthor = email.trim().toLowerCase();
|
|
101
101
|
if (!normalizedAuthor)
|
|
102
102
|
return false;
|
|
103
|
-
const allow =
|
|
103
|
+
const allow = parsePlannerEmailsFromEnv();
|
|
104
104
|
if (allow.length === 0)
|
|
105
105
|
return false;
|
|
106
|
-
return allow.some((
|
|
106
|
+
return allow.some((plannerEmail) => plannerEmail.length > 0 && plannerEmail === normalizedAuthor);
|
|
107
107
|
}
|
|
108
108
|
function subjectMsnId(subject) {
|
|
109
109
|
const m = subject.trim().match(/^\[(MSN-\d{4})\]/);
|
|
@@ -146,10 +146,10 @@ export function aggregateFromLogStream(root, records) {
|
|
|
146
146
|
missionIdsFromLog.add(msnFromSubject);
|
|
147
147
|
const paths = commitChangedPaths(root, rec.hash);
|
|
148
148
|
let touchesMission = false;
|
|
149
|
-
let
|
|
149
|
+
let touchesExecutorLog = false;
|
|
150
150
|
for (const p of paths) {
|
|
151
|
-
if (p ===
|
|
152
|
-
|
|
151
|
+
if (p === EXECUTOR_LOG_FILENAME)
|
|
152
|
+
touchesExecutorLog = true;
|
|
153
153
|
const msnFromPath = msnFromMissionPath(p);
|
|
154
154
|
if (msnFromPath) {
|
|
155
155
|
touchesMission = true;
|
|
@@ -160,12 +160,12 @@ export function aggregateFromLogStream(root, records) {
|
|
|
160
160
|
}
|
|
161
161
|
const isLegislative = msnFromSubject !== null &&
|
|
162
162
|
commitSubjectHasMsnPrefix(rec.subject, msnFromSubject) &&
|
|
163
|
-
|
|
163
|
+
isPlannerEmail(rec.email) &&
|
|
164
164
|
touchesMission;
|
|
165
165
|
if (isLegislative) {
|
|
166
166
|
legislative++;
|
|
167
167
|
}
|
|
168
|
-
else if (
|
|
168
|
+
else if (touchesExecutorLog && !touchesMission) {
|
|
169
169
|
worker_trace++;
|
|
170
170
|
}
|
|
171
171
|
if (msnFromSubject)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-metrics.js","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"git-metrics.js","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Missions verified by `gantry verify` must live under this repo-relative prefix. */
|
|
2
2
|
export declare const REL_MISSIONS_PREFIX: ".gitagent/missions/";
|
|
3
|
-
export {
|
|
3
|
+
export { ENV_PLANNER_EMAILS, parsePlannerEmailsFromEnv } from "./planner-identity.js";
|
|
4
4
|
export declare const ENV_MSN_SCAN_DEPTH: "GXT_MSN_SCAN_DEPTH";
|
|
5
5
|
export declare const DEFAULT_MSN_SCAN_DEPTH = 200;
|
|
6
6
|
/** Resolve git-proof scan depth: explicit option, then env, then default. */
|
|
@@ -24,18 +24,20 @@ export declare function commitSubjectHasMsnPrefix(subject: string, msnId: string
|
|
|
24
24
|
export declare function listMsnSubjectCommits(root: string, msnId: string, scanDepth?: number): MsnCommitRow[];
|
|
25
25
|
/** Paths changed in commit `hash` (repo-relative forward slashes). */
|
|
26
26
|
export declare function listCommitChangedPaths(root: string, hash: string): string[];
|
|
27
|
-
export interface
|
|
27
|
+
export interface PlannerMissionProofOptions {
|
|
28
28
|
/** Max commits to scan in `git log` (default 200). */
|
|
29
29
|
scanDepth?: number;
|
|
30
30
|
/** When set, must match parser-resolved mission MSN (avoids re-resolving identity from disk). */
|
|
31
31
|
msnId?: string;
|
|
32
|
+
/** Collect non-fatal planner_signature warn-tier messages (verify). */
|
|
33
|
+
warnings?: string[];
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Forensic gate (v0.6.2): MSN is read from the mission file; the most recent
|
|
35
|
-
*
|
|
37
|
+
* Planner-authored commit whose subject starts with `[MSN-XXXX]` must modify
|
|
36
38
|
* that mission path. Returns the resolved MSN id.
|
|
37
39
|
*/
|
|
38
|
-
export declare function
|
|
40
|
+
export declare function assertPlannerMissionProof(root: string, missionAbsolutePath: string, options?: PlannerMissionProofOptions): string;
|
|
39
41
|
/** Non-throwing git-proof check for onboarding/tutorial flows. */
|
|
40
|
-
export declare function
|
|
42
|
+
export declare function plannerMissionStamped(root: string, missionAbsolutePath: string, options?: PlannerMissionProofOptions): boolean;
|
|
41
43
|
//# sourceMappingURL=git-proof.d.ts.map
|
|
@@ -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":"AA0BA,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;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AA2BD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,CA+ER;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAOT"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { GIT_CONFIG_PLANNER_EMAILS } from "./config-namespace.js";
|
|
3
3
|
import { CLI_NAME, MSN_ID_PATTERN } from "./constants.js";
|
|
4
4
|
import { toPosixRel } from "./cli-io.js";
|
|
5
5
|
import { gitRun } from "./git.js";
|
|
6
6
|
import { hintGitProof } from "./fix-hints.js";
|
|
7
7
|
import { GapmanUserError } from "./errors.js";
|
|
8
8
|
import { extractMsnIdFromMissionPath } from "./missions/parser.js";
|
|
9
|
-
import {
|
|
9
|
+
import { resolvePlannerEmails } from "./planner-identity.js";
|
|
10
|
+
import { loadGxtConfig, resolvePlannerSignatureTier } from "./gxt-config.js";
|
|
11
|
+
import { checkPlannerStampSignature } from "./planner-signature.js";
|
|
12
|
+
import { logWarn } from "./cli-io.js";
|
|
13
|
+
import { archOverrideAdvisoryMessage, commitSubjectHasArchOverride } from "./arch-override.js";
|
|
10
14
|
function throwGitProofError(code, detail, ctx = {}) {
|
|
11
15
|
throw new GapmanUserError(code, `${CLI_NAME} verify: git-proof: ${code} — ${detail}`, hintGitProof(code, ctx));
|
|
12
16
|
}
|
|
13
17
|
/** Missions verified by `gantry verify` must live under this repo-relative prefix. */
|
|
14
18
|
export const REL_MISSIONS_PREFIX = ".gitagent/missions/";
|
|
15
|
-
export {
|
|
19
|
+
export { ENV_PLANNER_EMAILS, parsePlannerEmailsFromEnv } from "./planner-identity.js";
|
|
16
20
|
export const ENV_MSN_SCAN_DEPTH = "GXT_MSN_SCAN_DEPTH";
|
|
17
21
|
export const DEFAULT_MSN_SCAN_DEPTH = 200;
|
|
18
22
|
/** Resolve git-proof scan depth: explicit option, then env, then default. */
|
|
@@ -102,19 +106,38 @@ export function listCommitChangedPaths(root, hash) {
|
|
|
102
106
|
.map((l) => normalizeChangedPath(l))
|
|
103
107
|
.filter((l) => l.length > 0);
|
|
104
108
|
}
|
|
105
|
-
function
|
|
106
|
-
return
|
|
109
|
+
function isPlannerEmail(authorEmail, plannerEmails) {
|
|
110
|
+
return plannerEmails.includes(authorEmail.trim().toLowerCase());
|
|
107
111
|
}
|
|
108
112
|
function commitTouchesMission(changed, repoRelMission) {
|
|
109
113
|
const normMission = repoRelMission.replace(/\\/g, "/");
|
|
110
114
|
return changed.some((p) => p.replace(/\\/g, "/") === normMission);
|
|
111
115
|
}
|
|
116
|
+
function enforcePlannerStampSignature(root, stamp, ctx, options) {
|
|
117
|
+
const signatureTier = resolvePlannerSignatureTier(loadGxtConfig(root));
|
|
118
|
+
if (signatureTier === "off")
|
|
119
|
+
return;
|
|
120
|
+
const sig = checkPlannerStampSignature(root, stamp.hash);
|
|
121
|
+
if (sig.ok)
|
|
122
|
+
return;
|
|
123
|
+
const detail = `Planner stamp ${stamp.hash} is unsigned (git %G?=${sig.status})`;
|
|
124
|
+
if (signatureTier === "require") {
|
|
125
|
+
throwGitProofError("PLANNER_STAMP_UNSIGNED", detail, {
|
|
126
|
+
...ctx,
|
|
127
|
+
stampHash: stamp.hash,
|
|
128
|
+
stampSubject: stamp.subject.trim(),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const warning = `${CLI_NAME} verify: ${detail}`;
|
|
132
|
+
options?.warnings?.push(warning);
|
|
133
|
+
logWarn(warning);
|
|
134
|
+
}
|
|
112
135
|
/**
|
|
113
136
|
* Forensic gate (v0.6.2): MSN is read from the mission file; the most recent
|
|
114
|
-
*
|
|
137
|
+
* Planner-authored commit whose subject starts with `[MSN-XXXX]` must modify
|
|
115
138
|
* that mission path. Returns the resolved MSN id.
|
|
116
139
|
*/
|
|
117
|
-
export function
|
|
140
|
+
export function assertPlannerMissionProof(root, missionAbsolutePath, options) {
|
|
118
141
|
const msnId = options?.msnId && MSN_ID_PATTERN.test(options.msnId)
|
|
119
142
|
? options.msnId
|
|
120
143
|
: extractMsnIdFromMissionPath(missionAbsolutePath);
|
|
@@ -122,10 +145,10 @@ export function assertTeacherMissionProof(root, missionAbsolutePath, options) {
|
|
|
122
145
|
if (!msnId || !MSN_ID_PATTERN.test(msnId)) {
|
|
123
146
|
throwGitProofError("MISSION_MISSING_MSN", "The mission file is missing a valid [MSN-XXXX] identifier (YAML/frontmatter msn_id or msnId, line-start [MSN-NNNN], or # Mission: line).", { root, missionPath });
|
|
124
147
|
}
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
if (
|
|
128
|
-
throwGitProofError("
|
|
148
|
+
const plannerIdentity = resolvePlannerEmails(root);
|
|
149
|
+
const plannerEmails = plannerIdentity.emails;
|
|
150
|
+
if (plannerEmails.length === 0) {
|
|
151
|
+
throwGitProofError("PLANNER_IDENTITY_UNCONFIGURED", "No Planner allowlist configured for this repository.", { root, missionPath, msnId });
|
|
129
152
|
}
|
|
130
153
|
const repoRelMission = missionPathRepoRelative(root, missionAbsolutePath);
|
|
131
154
|
assertMissionUnderMissionsDir(repoRelMission);
|
|
@@ -133,17 +156,17 @@ export function assertTeacherMissionProof(root, missionAbsolutePath, options) {
|
|
|
133
156
|
if (rows.length === 0) {
|
|
134
157
|
throwGitProofError("NO_MSN_COMMITS", `No commits found starting with [${msnId}]. Did you commit the mission?`, { root, missionPath, msnId, repoRelMission });
|
|
135
158
|
}
|
|
136
|
-
const stamp = rows.find((r) =>
|
|
159
|
+
const stamp = rows.find((r) => isPlannerEmail(r.authorEmail, plannerEmails));
|
|
137
160
|
if (!stamp) {
|
|
138
161
|
const latest = rows[0];
|
|
139
|
-
throwGitProofError("
|
|
140
|
-
`Add that email to .gitagent/foreman/
|
|
162
|
+
throwGitProofError("NO_PLANNER_MSN_COMMIT", `The legislation was committed by ${JSON.stringify(latest.authorEmail)}, who is not in the Planner allowlist (${plannerIdentity.detail}). ` +
|
|
163
|
+
`Add that email to .gitagent/foreman/PLANNER.allowlist.local, git config ${GIT_CONFIG_PLANNER_EMAILS}, or run ${CLI_NAME} planner set.`, { root, missionPath, msnId, latestAuthorEmail: latest.authorEmail });
|
|
141
164
|
}
|
|
142
165
|
const changed = listCommitChangedPaths(root, stamp.hash);
|
|
143
166
|
if (!commitTouchesMission(changed, repoRelMission)) {
|
|
144
|
-
throwGitProofError("
|
|
145
|
-
`The stamp is the newest (scanning backward) commit authored by a
|
|
146
|
-
`Either add a newer
|
|
167
|
+
throwGitProofError("MISSION_FILE_NOT_MODIFIED_BY_PLANNER", `The Planner stamp for [${msnId}] is commit ${stamp.hash}: ${stamp.subject.trim()}; it did not change this mission file (${repoRelMission}). ` +
|
|
168
|
+
`The stamp is the newest (scanning backward) commit authored by a Planner allowlist email (${plannerIdentity.detail}) whose subject begins with [${msnId}]. ` +
|
|
169
|
+
`Either add a newer Planner commit with that subject that includes ${repoRelMission}, or reuse a distinct MSN whose only qualifying commits touch this file.`, {
|
|
147
170
|
root,
|
|
148
171
|
missionPath,
|
|
149
172
|
msnId,
|
|
@@ -152,12 +175,18 @@ export function assertTeacherMissionProof(root, missionAbsolutePath, options) {
|
|
|
152
175
|
stampSubject: stamp.subject.trim(),
|
|
153
176
|
});
|
|
154
177
|
}
|
|
178
|
+
enforcePlannerStampSignature(root, stamp, { root, missionPath, msnId, repoRelMission }, options);
|
|
179
|
+
if (commitSubjectHasArchOverride(stamp.subject)) {
|
|
180
|
+
const msg = archOverrideAdvisoryMessage(msnId, stamp.hash);
|
|
181
|
+
options?.warnings?.push(msg);
|
|
182
|
+
logWarn(msg);
|
|
183
|
+
}
|
|
155
184
|
return msnId;
|
|
156
185
|
}
|
|
157
186
|
/** Non-throwing git-proof check for onboarding/tutorial flows. */
|
|
158
|
-
export function
|
|
187
|
+
export function plannerMissionStamped(root, missionAbsolutePath, options) {
|
|
159
188
|
try {
|
|
160
|
-
|
|
189
|
+
assertPlannerMissionProof(root, missionAbsolutePath, options);
|
|
161
190
|
return true;
|
|
162
191
|
}
|
|
163
192
|
catch {
|
|
@@ -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,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,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;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"git-proof.js","sourceRoot":"","sources":["../../../src/cli/lib/git-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type PlannerSignatureTier = "off" | "warn" | "require";
|
|
2
|
+
export declare const PLANNER_SIGNATURE_TIERS: readonly PlannerSignatureTier[];
|
|
3
|
+
export interface GxtConfig {
|
|
4
|
+
planner_signature?: PlannerSignatureTier;
|
|
5
|
+
trusted_automation?: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadGxtConfig(root: string): GxtConfig;
|
|
8
|
+
export declare function resolvePlannerSignatureTier(config: GxtConfig): PlannerSignatureTier;
|
|
9
|
+
//# sourceMappingURL=gxt-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gxt-config.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gxt-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9D,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAA+B,CAAC;AAEnG,MAAM,WAAW,SAAS;IACxB,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CASrD;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAGnF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export const PLANNER_SIGNATURE_TIERS = ["off", "warn", "require"];
|
|
4
|
+
export function loadGxtConfig(root) {
|
|
5
|
+
const configPath = path.join(root, ".gitagent", "config.json");
|
|
6
|
+
if (!fs.existsSync(configPath))
|
|
7
|
+
return {};
|
|
8
|
+
try {
|
|
9
|
+
const parsed = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
10
|
+
return parsed ?? {};
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function resolvePlannerSignatureTier(config) {
|
|
17
|
+
const tier = config.planner_signature ?? "off";
|
|
18
|
+
return PLANNER_SIGNATURE_TIERS.includes(tier) ? tier : "off";
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=gxt-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gxt-config.js","sourceRoot":"","sources":["../../../src/cli/lib/gxt-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,CAAC,MAAM,uBAAuB,GAAoC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAOnG,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAc,CAAC;QAC5E,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAC/C,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC"}
|
|
@@ -12,6 +12,7 @@ export declare const GXT_ERROR: {
|
|
|
12
12
|
readonly KPI_REPORT_STALE: "GXT_KPI_REPORT_STALE";
|
|
13
13
|
readonly BANNED_IMPORT_DETECTED: "GXT_BANNED_IMPORT_DETECTED";
|
|
14
14
|
readonly IMPORT_LAYER_VIOLATION: "GXT_IMPORT_LAYER_VIOLATION";
|
|
15
|
+
readonly ARCH_BOUNDARY_VIOLATION: "GXT_ARCH_BOUNDARY_VIOLATION";
|
|
15
16
|
readonly PERIMETER_VIOLATION: "GXT_PERIMETER_VIOLATION";
|
|
16
17
|
readonly PERIMETER_SHALLOW_HISTORY: "GXT_PERIMETER_SHALLOW_HISTORY";
|
|
17
18
|
readonly MISSION_SCHEMA_INVALID: "GXT_MISSION_SCHEMA_INVALID";
|
|
@@ -20,6 +21,8 @@ export declare const GXT_ERROR: {
|
|
|
20
21
|
readonly VERIFY_FAILED: "GXT_VERIFY_FAILED";
|
|
21
22
|
readonly PARSE_ERROR: "GXT_PARSE_ERROR";
|
|
22
23
|
readonly INVALID_ARGUMENT: "GXT_INVALID_ARGUMENT";
|
|
24
|
+
readonly MCP_WRITE_DENIED: "GXT_MCP_WRITE_DENIED";
|
|
25
|
+
readonly PLANNER_STAMP_UNSIGNED: "GXT_PLANNER_STAMP_UNSIGNED";
|
|
23
26
|
};
|
|
24
27
|
export type GxtErrorCode = (typeof GXT_ERROR)[keyof typeof GXT_ERROR];
|
|
25
28
|
/** Map runtime exec / MCP error codes to stable GXT codes. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gxt-error-codes.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gxt-error-codes.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"gxt-error-codes.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gxt-error-codes.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AA6BtE,8DAA8D;AAC9D,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAMnE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE/D;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAMrE;AAED,4GAA4G;AAC5G,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
|
@@ -12,6 +12,7 @@ export const GXT_ERROR = {
|
|
|
12
12
|
KPI_REPORT_STALE: "GXT_KPI_REPORT_STALE",
|
|
13
13
|
BANNED_IMPORT_DETECTED: "GXT_BANNED_IMPORT_DETECTED",
|
|
14
14
|
IMPORT_LAYER_VIOLATION: "GXT_IMPORT_LAYER_VIOLATION",
|
|
15
|
+
ARCH_BOUNDARY_VIOLATION: "GXT_ARCH_BOUNDARY_VIOLATION",
|
|
15
16
|
PERIMETER_VIOLATION: "GXT_PERIMETER_VIOLATION",
|
|
16
17
|
PERIMETER_SHALLOW_HISTORY: "GXT_PERIMETER_SHALLOW_HISTORY",
|
|
17
18
|
MISSION_SCHEMA_INVALID: "GXT_MISSION_SCHEMA_INVALID",
|
|
@@ -20,15 +21,18 @@ export const GXT_ERROR = {
|
|
|
20
21
|
VERIFY_FAILED: "GXT_VERIFY_FAILED",
|
|
21
22
|
PARSE_ERROR: "GXT_PARSE_ERROR",
|
|
22
23
|
INVALID_ARGUMENT: "GXT_INVALID_ARGUMENT",
|
|
24
|
+
MCP_WRITE_DENIED: "GXT_MCP_WRITE_DENIED",
|
|
25
|
+
PLANNER_STAMP_UNSIGNED: "GXT_PLANNER_STAMP_UNSIGNED",
|
|
23
26
|
};
|
|
24
27
|
const GIT_PROOF_TO_GXT = {
|
|
25
28
|
MISSION_MISSING_MSN: GXT_ERROR.MISSION_UNSTAMPED,
|
|
26
|
-
|
|
29
|
+
PLANNER_IDENTITY_UNCONFIGURED: GXT_ERROR.MISSION_UNSTAMPED,
|
|
27
30
|
NO_MSN_COMMITS: GXT_ERROR.MISSION_UNSTAMPED,
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
NO_PLANNER_MSN_COMMIT: GXT_ERROR.MISSION_UNSTAMPED,
|
|
32
|
+
MISSION_FILE_NOT_MODIFIED_BY_PLANNER: GXT_ERROR.MISSION_UNSTAMPED,
|
|
30
33
|
MISSION_OUTSIDE_MISSIONS_DIR: GXT_ERROR.MISSION_UNSTAMPED,
|
|
31
34
|
MISSION_NO_GATE: GXT_ERROR.MISSION_UNSTAMPED,
|
|
35
|
+
PLANNER_STAMP_UNSIGNED: GXT_ERROR.PLANNER_STAMP_UNSIGNED,
|
|
32
36
|
};
|
|
33
37
|
/** Explicit mapping for non-git-proof GapmanUserError codes. */
|
|
34
38
|
const GAPMAN_USER_ERROR_TO_GXT = {
|
|
@@ -43,6 +47,7 @@ const GAPMAN_USER_ERROR_TO_GXT = {
|
|
|
43
47
|
RUNTIME_EXEC_FAILED: GXT_ERROR.RUNTIME_EXEC_FAILED,
|
|
44
48
|
RUNTIME_ENV_FAILED: GXT_ERROR.VERIFY_FAILED,
|
|
45
49
|
INVALID_ARGUMENT: GXT_ERROR.INVALID_ARGUMENT,
|
|
50
|
+
MCP_WRITE_DENIED: GXT_ERROR.MCP_WRITE_DENIED,
|
|
46
51
|
};
|
|
47
52
|
/** Map runtime exec / MCP error codes to stable GXT codes. */
|
|
48
53
|
export function mapRuntimeErrorCodeToGxt(code) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gxt-error-codes.js","sourceRoot":"","sources":["../../../src/cli/lib/gxt-error-codes.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,iBAAiB,EAAE,uBAAuB;IAC1C,WAAW,EAAE,iBAAiB;IAC9B,aAAa,EAAE,mBAAmB;IAClC,eAAe,EAAE,qBAAqB;IACtC,aAAa,EAAE,mBAAmB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,qBAAqB;IACtC,kBAAkB,EAAE,wBAAwB;IAC5C,kBAAkB,EAAE,wBAAwB;IAC5C,gBAAgB,EAAE,sBAAsB;IACxC,sBAAsB,EAAE,4BAA4B;IACpD,sBAAsB,EAAE,4BAA4B;IACpD,mBAAmB,EAAE,yBAAyB;IAC9C,yBAAyB,EAAE,+BAA+B;IAC1D,sBAAsB,EAAE,4BAA4B;IACpD,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,yBAAyB;IAC9C,aAAa,EAAE,mBAAmB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,gBAAgB,EAAE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"gxt-error-codes.js","sourceRoot":"","sources":["../../../src/cli/lib/gxt-error-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export function composeArchitecturePointer(profile) {
|
|
|
24
24
|
schema_version: "0.1.0",
|
|
25
25
|
kind: "unset",
|
|
26
26
|
location: "",
|
|
27
|
-
read_hint: "Architecture source not selected. Do NOT invent layer layout, module boundaries, or dependency rules. Read .gitagent/
|
|
27
|
+
read_hint: "Architecture source not selected. Do NOT invent layer layout, module boundaries, or dependency rules. Read .gitagent/planner/ARCHITECTURE-DISCOVERY.md and ask the user structured questions before any application code changes.",
|
|
28
28
|
discovery: { skill: REL_ARCHITECTURE_DISCOVERY_SKILL },
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -115,7 +115,7 @@ async function promptInitInfrastructure(partial, base) {
|
|
|
115
115
|
return null;
|
|
116
116
|
}
|
|
117
117
|
const gitHooks = await p.confirm({
|
|
118
|
-
message: "Install .githooks (pre-commit TMVC guard, pre-push verify, post-checkout
|
|
118
|
+
message: "Install .githooks (pre-commit TMVC guard, pre-push verify, post-checkout EXECUTOR_LOG)?",
|
|
119
119
|
initialValue: partial.gitHooks ?? base.gitHooks,
|
|
120
120
|
});
|
|
121
121
|
if (wizardCancelled(gitHooks)) {
|