@jeger-ai/opengantry 2.2.3 → 2.2.4
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 +96 -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.js +3 -3
- package/dist/cli/lib/architecture-credential.js +1 -1
- package/dist/cli/lib/architecture-pointer.js +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.js +9 -9
- 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 +3 -2
- package/dist/cli/lib/git-proof.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.js +3 -3
- 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.map +1 -1
- package/dist/cli/lib/mcp-governance.js +4 -3
- 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.js +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.js +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/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/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.js +4 -4
- package/dist/cli/lib/verify-failure-normalize.js +1 -1
- package/dist/cli/lib/verify-hints.js +9 -9
- 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.js +2 -2
- package/package.json +9 -4
- 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 +7 -7
- 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
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { toPosixRel } from "./cli-io.js";
|
|
4
|
+
import { CLI_NAME } from "./constants.js";
|
|
4
5
|
import { agentErrorAbsolutePath } from "./errors.js";
|
|
5
6
|
import { parseMissionFile } from "./missions/parser.js";
|
|
7
|
+
import { resolveManifestSkillKey } from "./skill-key.js";
|
|
6
8
|
import { defaultWorkerLogPath } from "./trace.js";
|
|
7
9
|
function toRepoRelativePosix(repoRoot, absolutePath) {
|
|
8
10
|
const rel = toPosixRel(repoRoot, path.resolve(absolutePath));
|
|
9
11
|
if (rel.startsWith("..") || path.isAbsolute(rel)) {
|
|
10
|
-
throw new Error(
|
|
12
|
+
throw new Error(`${CLI_NAME} runtime: mission path outside repository`);
|
|
11
13
|
}
|
|
12
14
|
return rel;
|
|
13
15
|
}
|
|
@@ -23,11 +25,12 @@ export function resolveRuntimeEnv(workspace, missionRepoOrAbsPath) {
|
|
|
23
25
|
const mission = parseMissionFile(root, missionArg);
|
|
24
26
|
const skillKey = mission.skillKey?.trim();
|
|
25
27
|
if (!skillKey?.length) {
|
|
26
|
-
throw new Error(
|
|
28
|
+
throw new Error(`${CLI_NAME} runtime: mission missing skill_key / Skill key (${mission.rawPath})`);
|
|
27
29
|
}
|
|
28
|
-
const
|
|
30
|
+
const resolvedKey = resolveManifestSkillKey(manifest, skillKey);
|
|
31
|
+
const skill = manifest.skills[resolvedKey];
|
|
29
32
|
if (!skill) {
|
|
30
|
-
throw new Error(
|
|
33
|
+
throw new Error(`${CLI_NAME} runtime: manifest has no skill "${skillKey}". Rule 4.4: sync manifest with skills.`);
|
|
31
34
|
}
|
|
32
35
|
const missionAbs = path.resolve(mission.rawPath);
|
|
33
36
|
const missionRel = toRepoRelativePosix(root, missionAbs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../../../src/cli/lib/runtime-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAmBlD,SAAS,mBAAmB,CAAC,QAAgB,EAAE,YAAoB;IACjE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,2CAA2C,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,YAA+B;IACrE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoB,EAAE,oBAA4B;IAClF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IACrC,MAAM,UAAU,GAAG,oBAAoB,CAAC;IACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,oDAAoD,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,oCAAoC,QAAQ,yCAAyC,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAExD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAExD,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7B,YAAY,EAAE,UAAU;QACxB,qBAAqB,EAAE,UAAU;QACjC,MAAM;QACN,SAAS,EAAE,QAAQ;QACnB,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,CAAqB;IACnE,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,SAAS;QAC1B,gBAAgB,EAAE,CAAC,CAAC,YAAY;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM;QACpB,aAAa,EAAE,CAAC,CAAC,SAAS;QAC1B,cAAc,EAAE,CAAC,CAAC,iBAAiB;QACnC,mBAAmB,EAAE,CAAC,CAAC,sBAAsB;QAC7C,cAAc,EAAE,CAAC,CAAC,UAAU;QAC5B,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Manifest } from "./types.js";
|
|
2
|
+
/** Canonical manifest skill key for CLI delivery work (init / specimen). */
|
|
3
|
+
export declare const CANONICAL_CLI_SKILL_KEY: "gantry";
|
|
4
|
+
/** Legacy manifest skill key accepted for backward compatibility. */
|
|
5
|
+
export declare const LEGACY_CLI_SKILL_KEY: "gapman";
|
|
6
|
+
/**
|
|
7
|
+
* Resolve a mission skill_key to a manifest.skills entry when legacy aliases apply.
|
|
8
|
+
* Returns the original key when no manifest match or alias mapping exists.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveManifestSkillKey(manifest: Manifest, skillKey: string): string;
|
|
11
|
+
export declare function manifestHasSkill(manifest: Manifest, skillKey: string): boolean;
|
|
12
|
+
//# sourceMappingURL=skill-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-key.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/skill-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,EAAG,QAAiB,CAAC;AACzD,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,EAAG,QAAiB,CAAC;AAOtD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE9E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Canonical manifest skill key for CLI delivery work (init / specimen). */
|
|
2
|
+
export const CANONICAL_CLI_SKILL_KEY = "gantry";
|
|
3
|
+
/** Legacy manifest skill key accepted for backward compatibility. */
|
|
4
|
+
export const LEGACY_CLI_SKILL_KEY = "gapman";
|
|
5
|
+
const CLI_SKILL_ALIASES = {
|
|
6
|
+
[CANONICAL_CLI_SKILL_KEY]: [LEGACY_CLI_SKILL_KEY],
|
|
7
|
+
[LEGACY_CLI_SKILL_KEY]: [CANONICAL_CLI_SKILL_KEY],
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Resolve a mission skill_key to a manifest.skills entry when legacy aliases apply.
|
|
11
|
+
* Returns the original key when no manifest match or alias mapping exists.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveManifestSkillKey(manifest, skillKey) {
|
|
14
|
+
if (skillKey in manifest.skills)
|
|
15
|
+
return skillKey;
|
|
16
|
+
const aliases = CLI_SKILL_ALIASES[skillKey];
|
|
17
|
+
if (!aliases)
|
|
18
|
+
return skillKey;
|
|
19
|
+
for (const alias of aliases) {
|
|
20
|
+
if (alias in manifest.skills)
|
|
21
|
+
return alias;
|
|
22
|
+
}
|
|
23
|
+
return skillKey;
|
|
24
|
+
}
|
|
25
|
+
export function manifestHasSkill(manifest, skillKey) {
|
|
26
|
+
return resolveManifestSkillKey(manifest, skillKey) in manifest.skills;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=skill-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-key.js","sourceRoot":"","sources":["../../../src/cli/lib/skill-key.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAiB,CAAC;AACzD,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAiB,CAAC;AAEtD,MAAM,iBAAiB,GAAgD;IACrE,CAAC,uBAAuB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IACjD,CAAC,oBAAoB,CAAC,EAAE,CAAC,uBAAuB,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAkB,EAAE,QAAgB;IAC1E,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACjD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,QAAgB;IACnE,OAAO,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;AACxE,CAAC"}
|
|
@@ -52,7 +52,7 @@ export function formatStagedTmvcAdvisory(result) {
|
|
|
52
52
|
const label = v.classification === "forbidden_zone" ? "FORBIDDEN" : "OUTSIDE_TMVC";
|
|
53
53
|
lines.push(` [${label}] ${v.path}`);
|
|
54
54
|
}
|
|
55
|
-
lines.push("Record a Context Request in WORKER_LOG.md before editing outside TMVC (
|
|
55
|
+
lines.push("Record a Context Request in WORKER_LOG.md before editing outside TMVC (gantry context-request).");
|
|
56
56
|
return lines;
|
|
57
57
|
}
|
|
58
58
|
//# sourceMappingURL=staged-tmvc-guard.js.map
|
|
@@ -18,9 +18,9 @@ function buildNextSteps(missionRel, msnId) {
|
|
|
18
18
|
const msn = msnId ?? "MSN-NNNN";
|
|
19
19
|
return [
|
|
20
20
|
`Teacher: git add ${mission} && git commit -m "[${msn}] legislate mission"`,
|
|
21
|
-
`eval "$(
|
|
21
|
+
`eval "$(gantry runtime env --mission ${mission})"`,
|
|
22
22
|
"Append gate evidence to WORKER_LOG.md",
|
|
23
|
-
`
|
|
23
|
+
`gantry verify --mission ${mission}`,
|
|
24
24
|
`scripts/gxt-pin-mission.sh ${mission}`,
|
|
25
25
|
];
|
|
26
26
|
}
|
|
@@ -48,7 +48,7 @@ function startEscalationFailure(options, triage, msnId, manifestKeys) {
|
|
|
48
48
|
logError(`${CLI_NAME} start: triage escalation — ${triage.reason}. Pass --skill-key <key> (manifest: ${manifestKeys.join(", ")}).`);
|
|
49
49
|
}
|
|
50
50
|
return createStartFailure(triage, null, triage.skill_key, [
|
|
51
|
-
`
|
|
51
|
+
`gantry start "${options.intent}" --msn ${msnId} --skill-key ${manifestKeys[0] ?? "<key>"}`,
|
|
52
52
|
]);
|
|
53
53
|
}
|
|
54
54
|
function scaffoldStartMission(root, options, msnId, resolvedSkillKey, triage) {
|
|
@@ -76,8 +76,8 @@ function scaffoldStartMission(root, options, msnId, resolvedSkillKey, triage) {
|
|
|
76
76
|
}
|
|
77
77
|
const freshMsn = suggestNextMsn(root);
|
|
78
78
|
return createStartFailure(triage, msnId, resolvedSkillKey, [
|
|
79
|
-
`try a fresh MSN:
|
|
80
|
-
`or
|
|
79
|
+
`try a fresh MSN: gantry start "${options.intent}" --msn ${freshMsn} --skill-key ${resolvedSkillKey}`,
|
|
80
|
+
`or gantry legislate "${options.intent}" --msn ${msnId} --skill-key ${resolvedSkillKey} --allow-duplicate`,
|
|
81
81
|
]);
|
|
82
82
|
}
|
|
83
83
|
export function runStartOrchestration(options) {
|
|
@@ -13,7 +13,7 @@ function collectBlockers(skillSync, doctorLines, verifyReadiness) {
|
|
|
13
13
|
blockers.push(line.message);
|
|
14
14
|
}
|
|
15
15
|
if (verifyReadiness === "needs_teacher") {
|
|
16
|
-
blockers.push("Teacher allowlist unset —
|
|
16
|
+
blockers.push("Teacher allowlist unset — gantry verify git-proof will fail");
|
|
17
17
|
}
|
|
18
18
|
if (verifyReadiness === "needs_mission") {
|
|
19
19
|
blockers.push("No pinned mission — legislate or pin before worker execution");
|
|
@@ -50,10 +50,10 @@ export function buildStatusReport(root, manifest) {
|
|
|
50
50
|
const verifyReadiness = assessVerifyReadiness(root, doctorReport.lines, pinnedMission, doctorReport.teacherAllowlistUnset);
|
|
51
51
|
let nextStep = doctorReport.nextStep;
|
|
52
52
|
if (pinnedMission) {
|
|
53
|
-
nextStep = `
|
|
53
|
+
nextStep = `gantry verify --mission ${pinnedMission}`;
|
|
54
54
|
}
|
|
55
55
|
else if (verifyReadiness === "needs_mission") {
|
|
56
|
-
nextStep = nextStep ?? '
|
|
56
|
+
nextStep = nextStep ?? 'gantry start "<intent>" --msn MSN-0001 --skill-key <key>';
|
|
57
57
|
}
|
|
58
58
|
const hasFail = !skillSync.ok || doctorReport.hasFail;
|
|
59
59
|
const blockers = collectBlockers(skillSync, doctorReport.lines, verifyReadiness);
|
|
@@ -76,7 +76,7 @@ export function alreadyCurrentMessage(installed, bundled) {
|
|
|
76
76
|
return [
|
|
77
77
|
`Substrate is up to date (installed ${installed}, bundled ${bundled}).`,
|
|
78
78
|
"To upgrade to a newer OpenGantry release, first update the package manager dependency",
|
|
79
|
-
`(e.g. npm install ${NPM_PACKAGE_NAME}@latest) and re-run:
|
|
79
|
+
`(e.g. npm install ${NPM_PACKAGE_NAME}@latest) and re-run: gantry upgrade`,
|
|
80
80
|
].join("\n");
|
|
81
81
|
}
|
|
82
82
|
export function ensureSubstrateVersionOnInit(repoRoot, templatesRoot) {
|
|
@@ -84,7 +84,7 @@ export function ensureSubstrateVersionOnInit(repoRoot, templatesRoot) {
|
|
|
84
84
|
if (fs.existsSync(substrateAbs))
|
|
85
85
|
return;
|
|
86
86
|
const version = loadIntegrationCompat(templatesRoot).opengantry_version;
|
|
87
|
-
writeSubstrateVersionFile(repoRoot, version, "
|
|
87
|
+
writeSubstrateVersionFile(repoRoot, version, "gantry init");
|
|
88
88
|
}
|
|
89
89
|
export function legacyVersionWarning(source) {
|
|
90
90
|
if (source === "legacy_default") {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type TsModule = typeof import("typescript");
|
|
2
|
-
/** Resolve TypeScript compiler API from adopter workspace or
|
|
2
|
+
/** Resolve TypeScript compiler API from adopter workspace or gantry package (lazy, fail-soft). */
|
|
3
3
|
export declare function getWorkspaceTypeScript(root: string): TsModule | null;
|
|
4
4
|
/** @internal Reset cache between tests. */
|
|
5
5
|
export declare function clearTypeScriptWorkspaceCache(): void;
|
|
@@ -2,17 +2,17 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
let cachedTs;
|
|
5
|
-
function
|
|
5
|
+
function gantryPackageRoot() {
|
|
6
6
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
7
7
|
return path.resolve(here, "..", "..", "..", "..");
|
|
8
8
|
}
|
|
9
|
-
/** Resolve TypeScript compiler API from adopter workspace or
|
|
9
|
+
/** Resolve TypeScript compiler API from adopter workspace or gantry package (lazy, fail-soft). */
|
|
10
10
|
export function getWorkspaceTypeScript(root) {
|
|
11
11
|
if (cachedTs !== undefined)
|
|
12
12
|
return cachedTs;
|
|
13
13
|
try {
|
|
14
14
|
const require = createRequire(import.meta.url);
|
|
15
|
-
const searchPaths = [root,
|
|
15
|
+
const searchPaths = [root, gantryPackageRoot()];
|
|
16
16
|
let tsPath;
|
|
17
17
|
for (const base of searchPaths) {
|
|
18
18
|
try {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare const GIT_CONFIG_TEACHER_EMAILS: "gapman.teacherEmails";
|
|
1
|
+
export { ENV_TEACHER_EMAILS } from "./config-namespace.js";
|
|
3
2
|
export declare const REL_TEACHER_ALLOWLIST: ".gitagent/foreman/TEACHER.allowlist";
|
|
4
3
|
export declare const REL_TEACHER_ALLOWLIST_LOCAL: ".gitagent/foreman/TEACHER.allowlist.local";
|
|
5
4
|
export type TeacherIdentitySource = "allowlist_file" | "allowlist_local" | "git_config" | "env" | "git_user_email" | "unset";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teacher-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"teacher-identity.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAG,qCAA8C,CAAC;AACpF,eAAO,MAAM,2BAA2B,EAAG,2CAAoD,CAAC;AAEhG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,KAAK,GACL,gBAAgB,GAChB,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AA8BD,6DAA6D;AAC7D,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAIpD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,CA2C9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAGlE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAInF;AAED,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAStE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOlE"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fromPosix } from "./cli-io.js";
|
|
4
|
+
import { CLI_NAME } from "./constants.js";
|
|
5
|
+
import { ENV_TEACHER_EMAILS, GIT_CONFIG_TEACHER_EMAILS, readEnvWithLegacy, readGitConfigWithLegacy, } from "./config-namespace.js";
|
|
4
6
|
import { gitRunOk } from "./git.js";
|
|
5
|
-
export
|
|
6
|
-
export const GIT_CONFIG_TEACHER_EMAILS = "gapman.teacherEmails";
|
|
7
|
+
export { ENV_TEACHER_EMAILS } from "./config-namespace.js";
|
|
7
8
|
export const REL_TEACHER_ALLOWLIST = ".gitagent/foreman/TEACHER.allowlist";
|
|
8
9
|
export const REL_TEACHER_ALLOWLIST_LOCAL = ".gitagent/foreman/TEACHER.allowlist.local";
|
|
9
10
|
function normalizeEmailList(raw) {
|
|
@@ -20,15 +21,10 @@ function readAllowlistFile(repoRoot, relPath) {
|
|
|
20
21
|
return normalizeEmailList(fs.readFileSync(abs, "utf8"));
|
|
21
22
|
}
|
|
22
23
|
function readGitConfigTeacherEmails(repoRoot) {
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
25
|
-
return
|
|
26
|
-
|
|
27
|
-
const global = gitRunOk(repoRoot, ["config", "--global", "--get", GIT_CONFIG_TEACHER_EMAILS]);
|
|
28
|
-
if (global.ok && global.stdout.trim()) {
|
|
29
|
-
return normalizeEmailList(global.stdout);
|
|
30
|
-
}
|
|
31
|
-
return [];
|
|
24
|
+
const raw = readGitConfigWithLegacy(repoRoot, "teacherEmails");
|
|
25
|
+
if (!raw)
|
|
26
|
+
return [];
|
|
27
|
+
return normalizeEmailList(raw);
|
|
32
28
|
}
|
|
33
29
|
function readGitUserEmail(repoRoot) {
|
|
34
30
|
const local = gitRunOk(repoRoot, ["config", "--local", "--get", "user.email"]);
|
|
@@ -39,8 +35,8 @@ function readGitUserEmail(repoRoot) {
|
|
|
39
35
|
}
|
|
40
36
|
/** Legacy env-only parser (tests / explicit CI override). */
|
|
41
37
|
export function parseTeacherEmailsFromEnv() {
|
|
42
|
-
const raw =
|
|
43
|
-
if (!raw
|
|
38
|
+
const raw = readEnvWithLegacy("TEACHER_EMAILS");
|
|
39
|
+
if (!raw)
|
|
44
40
|
return [];
|
|
45
41
|
return normalizeEmailList(raw);
|
|
46
42
|
}
|
|
@@ -116,8 +112,8 @@ export function ensureTeacherAllowlistOnInit(repoRoot) {
|
|
|
116
112
|
export function teacherIdentitySetupHint(_repoRoot) {
|
|
117
113
|
return [
|
|
118
114
|
`echo "$(git config user.email)" >> ${REL_TEACHER_ALLOWLIST_LOCAL}`,
|
|
119
|
-
`or: git config
|
|
120
|
-
`or:
|
|
115
|
+
`or: git config ${GIT_CONFIG_TEACHER_EMAILS} "$(git config user.email)"`,
|
|
116
|
+
`or: ${CLI_NAME} teacher set "$(git config user.email)"`,
|
|
121
117
|
`# env ${ENV_TEACHER_EMAILS} is CI-only fallback; prefer repo-local config`,
|
|
122
118
|
].join("\n ");
|
|
123
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teacher-identity.js","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"teacher-identity.js","sourceRoot":"","sources":["../../../src/cli/lib/teacher-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmvc-path.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/tmvc-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tmvc-path.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/tmvc-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,kEAG7B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,aAAa,GACb,cAAc,GACd,gBAAgB,CAAC;AAErB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAKvF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAK5F;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC,sBAAsB,CAWxB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveManifestSkillKey } from "./skill-key.js";
|
|
1
2
|
/** Governance transport files — never TMVC drift violations during pre-commit scans. */
|
|
2
3
|
export const GOVERNANCE_TRANSPORT_PATHS = [
|
|
3
4
|
"WORKER_LOG.md",
|
|
@@ -13,13 +14,15 @@ export function isGovernanceTransportPath(repoRel) {
|
|
|
13
14
|
export function tmvcRootsForSkill(manifest, skillKey) {
|
|
14
15
|
if (!skillKey?.trim())
|
|
15
16
|
return [];
|
|
16
|
-
const
|
|
17
|
+
const resolved = resolveManifestSkillKey(manifest, skillKey.trim());
|
|
18
|
+
const skill = manifest.skills[resolved];
|
|
17
19
|
return skill ? [...skill.tmvc_roots] : [];
|
|
18
20
|
}
|
|
19
21
|
export function forbiddenZonesForSkill(manifest, skillKey) {
|
|
20
22
|
if (!skillKey?.trim())
|
|
21
23
|
return [];
|
|
22
|
-
const
|
|
24
|
+
const resolved = resolveManifestSkillKey(manifest, skillKey.trim());
|
|
25
|
+
const skill = manifest.skills[resolved];
|
|
23
26
|
return skill ? [...skill.forbidden_zones] : [];
|
|
24
27
|
}
|
|
25
28
|
/** True when `repoRel` is exactly `root` or nested under `root/` (POSIX semantics). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmvc-path.js","sourceRoot":"","sources":["../../../src/cli/lib/tmvc-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tmvc-path.js","sourceRoot":"","sources":["../../../src/cli/lib/tmvc-path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wFAAwF;AACxF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,eAAe;IACf,oCAAoC;CAC5B,CAAC;AAQX,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAQ,0BAAgD,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,QAAuB;IAC3E,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAkB,EAAE,QAAuB;IAChF,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAY;IAC3D,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,SAA4B,EAC5B,cAAiC;IAEjC,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,yBAAyB,CAAC,IAAI,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAEnE,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YAAE,OAAO,gBAAgB,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,aAAa,CAAC;IACxD,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/dist/cli/lib/types.d.ts
CHANGED
|
@@ -92,7 +92,7 @@ export interface ParsedMission {
|
|
|
92
92
|
traceRows: TraceRow[];
|
|
93
93
|
rawPath: string;
|
|
94
94
|
}
|
|
95
|
-
/** Structured mission on disk (YAML), validated by
|
|
95
|
+
/** Structured mission on disk (YAML), validated by gantry */
|
|
96
96
|
export interface YamlMission {
|
|
97
97
|
msn_id?: string;
|
|
98
98
|
msnId?: string;
|
|
@@ -20,7 +20,7 @@ function sha256File(absPath) {
|
|
|
20
20
|
function verifyStagedHashes(repoRoot, payload) {
|
|
21
21
|
const tmpRoot = path.join(repoRoot, fromPosix(REL_UPGRADE_TMP));
|
|
22
22
|
if (!fs.existsSync(tmpRoot)) {
|
|
23
|
-
throw new GapmanUserError("UPGRADE_STAGING_MISSING", `${CLI_NAME} upgrade --apply: staging directory missing at ${REL_UPGRADE_TMP}/ — re-run
|
|
23
|
+
throw new GapmanUserError("UPGRADE_STAGING_MISSING", `${CLI_NAME} upgrade --apply: staging directory missing at ${REL_UPGRADE_TMP}/ — re-run gantry upgrade`, `Run \`gantry upgrade\` to regenerate staged files before apply.`);
|
|
24
24
|
}
|
|
25
25
|
const entries = Object.entries(payload.staged_hashes);
|
|
26
26
|
if (entries.length === 0) {
|
|
@@ -29,11 +29,11 @@ function verifyStagedHashes(repoRoot, payload) {
|
|
|
29
29
|
for (const [relPath, expectedHash] of entries) {
|
|
30
30
|
const stageAbs = path.join(tmpRoot, fromPosix(relPath));
|
|
31
31
|
if (!fs.existsSync(stageAbs)) {
|
|
32
|
-
throw new GapmanUserError("UPGRADE_STAGING_DRIFT", `${CLI_NAME} upgrade --apply: missing staged file ${relPath} under ${REL_UPGRADE_TMP}/`, "Re-run
|
|
32
|
+
throw new GapmanUserError("UPGRADE_STAGING_DRIFT", `${CLI_NAME} upgrade --apply: missing staged file ${relPath} under ${REL_UPGRADE_TMP}/`, "Re-run gantry upgrade to regenerate staging after mission was signed.");
|
|
33
33
|
}
|
|
34
34
|
const actual = sha256File(stageAbs);
|
|
35
35
|
if (actual !== expectedHash) {
|
|
36
|
-
throw new GapmanUserError("UPGRADE_HASH_MISMATCH", `${CLI_NAME} upgrade --apply: staged file hash mismatch for ${relPath}`, "Staging directory was modified after plan. Re-run
|
|
36
|
+
throw new GapmanUserError("UPGRADE_HASH_MISMATCH", `${CLI_NAME} upgrade --apply: staged file hash mismatch for ${relPath}`, "Staging directory was modified after plan. Re-run gantry upgrade and re-sign the mission.");
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -96,7 +96,7 @@ export async function runUpgradeApply(options) {
|
|
|
96
96
|
await promoteStagedWrites(staged.promotions);
|
|
97
97
|
mergeGitignoreFromTemplate(repoRoot, templatesRoot);
|
|
98
98
|
mergePrettierignoreFromTemplate(repoRoot, templatesRoot);
|
|
99
|
-
writeSubstrateVersionFile(repoRoot, payload.to_version, "
|
|
99
|
+
writeSubstrateVersionFile(repoRoot, payload.to_version, "gantry upgrade --apply");
|
|
100
100
|
}
|
|
101
101
|
catch (e) {
|
|
102
102
|
cleanupApplyTmp(applyTmpRoot);
|
|
@@ -112,7 +112,7 @@ export async function runUpgradeApply(options) {
|
|
|
112
112
|
const message = [
|
|
113
113
|
`${CLI_NAME} upgrade: applied substrate ${payload.from_version} → ${payload.to_version}`,
|
|
114
114
|
`Updated ${appliedPaths.length} managed asset(s).`,
|
|
115
|
-
"Next: restart Cursor, confirm MCP enabled, run
|
|
115
|
+
"Next: restart Cursor, confirm MCP enabled, run gantry doctor.",
|
|
116
116
|
].join("\n");
|
|
117
117
|
if (!options.json) {
|
|
118
118
|
logInfo(message);
|
|
@@ -11,7 +11,7 @@ export interface UpgradeFileChange {
|
|
|
11
11
|
sha256_before: string | null;
|
|
12
12
|
sha256_after: string;
|
|
13
13
|
}
|
|
14
|
-
/** managed_strict substrate assets eligible for
|
|
14
|
+
/** managed_strict substrate assets eligible for gantry upgrade (excludes user law / missions). */
|
|
15
15
|
export declare function upgradeEligibleAssets(assets: InitAssetSpec[]): InitAssetSpec[];
|
|
16
16
|
export declare function allUpgradeEligibleFromCatalog(templatesRoot: string): InitAssetSpec[];
|
|
17
17
|
/** Infer init profile from on-disk substrate assets for upgrade planning. */
|
|
@@ -15,7 +15,7 @@ import { loadInitAssetCatalog } from "./init-asset-catalog.js";
|
|
|
15
15
|
import { defaultInitProfile } from "./init-profile.js";
|
|
16
16
|
export const REL_UPGRADE_TMP = ".gitagent/.upgrade-tmp";
|
|
17
17
|
export { UPGRADE_MSN_BAND_MIN, UPGRADE_MSN_BAND_MAX } from "./msn-allocate.js";
|
|
18
|
-
/** managed_strict substrate assets eligible for
|
|
18
|
+
/** managed_strict substrate assets eligible for gantry upgrade (excludes user law / missions). */
|
|
19
19
|
export function upgradeEligibleAssets(assets) {
|
|
20
20
|
return assets.filter((a) => a.mode === "managed_strict");
|
|
21
21
|
}
|
|
@@ -42,7 +42,7 @@ export function inferInitProfileFromRepo(repoRoot, templatesRoot) {
|
|
|
42
42
|
profile.gitHooks =
|
|
43
43
|
pathExists(repoRoot, ".githooks/pre-push") || pathExists(repoRoot, ".githooks/pre-commit");
|
|
44
44
|
profile.ciWorkflow = pathExists(repoRoot, ".github/workflows/gxt-validate.yml");
|
|
45
|
-
profile.skillsPreset = pathExists(repoRoot, "skills/
|
|
45
|
+
profile.skillsPreset = pathExists(repoRoot, "skills/gantry.md") ? "specimen" : "minimal";
|
|
46
46
|
return profile;
|
|
47
47
|
}
|
|
48
48
|
function fileState(absPath) {
|
|
@@ -135,7 +135,7 @@ export function buildUpgradeMissionYaml(opts) {
|
|
|
135
135
|
const doc = {
|
|
136
136
|
msn_id: opts.msnId,
|
|
137
137
|
skill_key: "substrate",
|
|
138
|
-
gate_command: "
|
|
138
|
+
gate_command: "gantry doctor",
|
|
139
139
|
gate_success_substring: null,
|
|
140
140
|
upgrade_payload: opts.payload,
|
|
141
141
|
trace_rows: buildLegislativeTraceRows(),
|
|
@@ -228,7 +228,7 @@ function logUpgradePlanSummary(options, opts) {
|
|
|
228
228
|
logInfo(`${options.dryRun ? "Would write" : "Wrote upgrade"} mission: ${opts.missionRel}`);
|
|
229
229
|
logInfo(`${options.dryRun ? "Suggested Teacher action" : "Review staged diff, then"}:\n${opts.suggestedHumanAction}`);
|
|
230
230
|
if (!options.dryRun) {
|
|
231
|
-
logInfo(`After Teacher commit:
|
|
231
|
+
logInfo(`After Teacher commit: gantry upgrade --apply --mission ${opts.missionRel}`);
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
export function runUpgradePlan(options) {
|
|
@@ -105,7 +105,7 @@ export function toRemediationSnapshot(normalized) {
|
|
|
105
105
|
return {
|
|
106
106
|
schema_version: REMEDIATION_SCHEMA_VERSION,
|
|
107
107
|
written_at: new Date().toISOString(),
|
|
108
|
-
source: "
|
|
108
|
+
source: "gantry verify",
|
|
109
109
|
phase: normalized.phase,
|
|
110
110
|
error_code: normalized.error_code,
|
|
111
111
|
message: normalized.message,
|
|
@@ -27,7 +27,7 @@ function tagStep(audience, step) {
|
|
|
27
27
|
return { audience, step };
|
|
28
28
|
}
|
|
29
29
|
function verifyCmd(mission) {
|
|
30
|
-
return `
|
|
30
|
+
return `gantry verify --mission ${mission}`;
|
|
31
31
|
}
|
|
32
32
|
function hintsForGitProofPhase(ctx) {
|
|
33
33
|
const mission = ctx.missionPath;
|
|
@@ -41,10 +41,10 @@ function hintsForGitProofPhase(ctx) {
|
|
|
41
41
|
};
|
|
42
42
|
const hint = code ? hintGitProof(code, gitCtx) : verifyCmdStr;
|
|
43
43
|
const nextActions = code === "NO_MSN_COMMITS" || code === "MISSION_FILE_NOT_MODIFIED_BY_TEACHER"
|
|
44
|
-
? [hint.split("; ")[0], '
|
|
45
|
-
: ['
|
|
44
|
+
? [hint.split("; ")[0], 'gantry teacher set "$(git config user.email)"', verifyCmdStr]
|
|
45
|
+
: ['gantry teacher set "$(git config user.email)"', verifyCmdStr];
|
|
46
46
|
const tagged_steps = [
|
|
47
|
-
tagStep("teacher", '
|
|
47
|
+
tagStep("teacher", 'gantry teacher set "$(git config user.email)"'),
|
|
48
48
|
tagStep("verifier", verifyCmdStr),
|
|
49
49
|
];
|
|
50
50
|
if (code === "NO_MSN_COMMITS" || code === "MISSION_FILE_NOT_MODIFIED_BY_TEACHER") {
|
|
@@ -92,13 +92,13 @@ function hintsForKpiPhase(ctx) {
|
|
|
92
92
|
return {
|
|
93
93
|
error_code: errorCode,
|
|
94
94
|
fix_hints: [
|
|
95
|
-
`
|
|
95
|
+
`gantry scan --mission ${mission}`,
|
|
96
96
|
`commit updated KPI report under .gitagent/kpi/`,
|
|
97
97
|
verifyCmdStr,
|
|
98
98
|
],
|
|
99
|
-
next_actions: [`
|
|
99
|
+
next_actions: [`gantry scan --mission ${mission}`, verifyCmdStr],
|
|
100
100
|
tagged_steps: [
|
|
101
|
-
tagStep("worker", `
|
|
101
|
+
tagStep("worker", `gantry scan --mission ${mission}`),
|
|
102
102
|
tagStep("verifier", verifyCmdStr),
|
|
103
103
|
],
|
|
104
104
|
};
|
|
@@ -133,10 +133,10 @@ function hintsForTracePhase(ctx) {
|
|
|
133
133
|
return {
|
|
134
134
|
error_code: errorCode,
|
|
135
135
|
fix_hints: hints,
|
|
136
|
-
next_actions: [verifyCmdStr, `
|
|
136
|
+
next_actions: [verifyCmdStr, `gantry verify --mission ${mission} --fix`],
|
|
137
137
|
tagged_steps: [
|
|
138
138
|
tagStep("verifier", verifyCmdStr),
|
|
139
|
-
tagStep("verifier", `
|
|
139
|
+
tagStep("verifier", `gantry verify --mission ${mission} --fix`),
|
|
140
140
|
],
|
|
141
141
|
};
|
|
142
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-run.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify-run.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-run.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAY7B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yFAAyF;AACzF,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA6CpF;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,aAAa,GAAG,mBAAmB,CAY/F;AAED,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CLI_NAME } from "./constants.js";
|
|
1
2
|
import { assertMissionGatePresent, parseMissionFile } from "./missions/parser.js";
|
|
2
3
|
import { GapmanUserError } from "./errors.js";
|
|
3
4
|
import { loadWorkspace } from "./workspace.js";
|
|
@@ -9,7 +10,7 @@ import { presentBreakGlassHuman, presentBreakGlassJson, presentFix, presentHuman
|
|
|
9
10
|
export async function runVerifyCore(options) {
|
|
10
11
|
const { root, manifest } = loadWorkspace();
|
|
11
12
|
if (!options.mission) {
|
|
12
|
-
throw new Error("
|
|
13
|
+
throw new Error("gantry verify: --mission is required");
|
|
13
14
|
}
|
|
14
15
|
const mission = parseMissionFile(root, options.mission);
|
|
15
16
|
const missionArg = options.mission;
|
|
@@ -56,7 +57,7 @@ export async function runVerifyCore(options) {
|
|
|
56
57
|
export function buildVerifyResultPayloadFromOptions(options) {
|
|
57
58
|
try {
|
|
58
59
|
if (!options.mission) {
|
|
59
|
-
throw new GapmanUserError("INVALID_ARGUMENT",
|
|
60
|
+
throw new GapmanUserError("INVALID_ARGUMENT", `${CLI_NAME} verify: --mission is required`, undefined, 2);
|
|
60
61
|
}
|
|
61
62
|
const { root, manifest } = loadWorkspace();
|
|
62
63
|
const mission = parseMissionFile(root, options.mission);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-run.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verify-run.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-run.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/program-core.js
CHANGED
|
@@ -60,7 +60,7 @@ export function registerCoreCommands(program) {
|
|
|
60
60
|
});
|
|
61
61
|
const upgradeCmd = program
|
|
62
62
|
.command("upgrade")
|
|
63
|
-
.description("Plan or apply substrate upgrades from the installed
|
|
63
|
+
.description("Plan or apply substrate upgrades from the installed gantry package (Tier-3)");
|
|
64
64
|
upgradeCmd
|
|
65
65
|
.command("plan")
|
|
66
66
|
.description("Preview upgrade file changes without writing staging dir or mission YAML")
|
|
@@ -93,7 +93,7 @@ export function registerCoreCommands(program) {
|
|
|
93
93
|
.option("--json", "Print JSON only")
|
|
94
94
|
.option("--emit-mission", "Write .gitagent/missions/ACTIVE_MISSION.md from template (DIRECT_EXECUTION only)")
|
|
95
95
|
.option("--msn <id>", "Mission id for --emit-mission", "MSN-0000")
|
|
96
|
-
.option("--out <file>", "Mission output path for --emit-mission (default .gitagent/missions/ACTIVE_MISSION.md; use under .gitagent/missions/ for
|
|
96
|
+
.option("--out <file>", "Mission output path for --emit-mission (default .gitagent/missions/ACTIVE_MISSION.md; use under .gitagent/missions/ for gantry verify)")
|
|
97
97
|
.action(async (intentParts, options, _cmd) => {
|
|
98
98
|
let text = intentParts.join(" ").trim();
|
|
99
99
|
text = await readStdinIfEmpty(text);
|