@jeger-ai/opengantry 3.1.0 → 3.2.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/dist/cli/commands/attest.d.ts +2 -1
- package/dist/cli/commands/attest.d.ts.map +1 -1
- package/dist/cli/commands/attest.js +18 -10
- package/dist/cli/commands/attest.js.map +1 -1
- package/dist/cli/commands/check-imports.d.ts.map +1 -1
- package/dist/cli/commands/check-imports.js +4 -7
- package/dist/cli/commands/check-imports.js.map +1 -1
- package/dist/cli/commands/context-feed.d.ts.map +1 -1
- package/dist/cli/commands/context-feed.js +7 -10
- package/dist/cli/commands/context-feed.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +2 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/interrogate.d.ts +12 -0
- package/dist/cli/commands/interrogate.d.ts.map +1 -0
- package/dist/cli/commands/interrogate.js +62 -0
- package/dist/cli/commands/interrogate.js.map +1 -0
- package/dist/cli/commands/metrics.d.ts.map +1 -1
- package/dist/cli/commands/metrics.js +5 -8
- package/dist/cli/commands/metrics.js.map +1 -1
- package/dist/cli/commands/pin.d.ts +6 -0
- package/dist/cli/commands/pin.d.ts.map +1 -0
- package/dist/cli/commands/pin.js +31 -0
- package/dist/cli/commands/pin.js.map +1 -0
- package/dist/cli/commands/receipt.d.ts +13 -0
- package/dist/cli/commands/receipt.d.ts.map +1 -0
- package/dist/cli/commands/receipt.js +52 -0
- package/dist/cli/commands/receipt.js.map +1 -0
- 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 +20 -26
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +17 -15
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/tmvc-guard.d.ts.map +1 -1
- package/dist/cli/commands/tmvc-guard.js +8 -15
- package/dist/cli/commands/tmvc-guard.js.map +1 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +4 -6
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/lib/arch/cage/target-architecture.d.ts +1 -0
- package/dist/cli/lib/arch/cage/target-architecture.d.ts.map +1 -1
- package/dist/cli/lib/arch/cage/target-architecture.js +1 -1
- package/dist/cli/lib/arch/cage/target-architecture.js.map +1 -1
- package/dist/cli/lib/attest-mission.d.ts +9 -1
- package/dist/cli/lib/attest-mission.d.ts.map +1 -1
- package/dist/cli/lib/attest-mission.js +17 -9
- package/dist/cli/lib/attest-mission.js.map +1 -1
- package/dist/cli/lib/attestation-export.d.ts +11 -0
- package/dist/cli/lib/attestation-export.d.ts.map +1 -0
- package/dist/cli/lib/attestation-export.js +23 -0
- package/dist/cli/lib/attestation-export.js.map +1 -0
- package/dist/cli/lib/attestation-receipt.d.ts +14 -5
- package/dist/cli/lib/attestation-receipt.d.ts.map +1 -1
- package/dist/cli/lib/attestation-receipt.js +82 -40
- package/dist/cli/lib/attestation-receipt.js.map +1 -1
- package/dist/cli/lib/command-boundary.d.ts +18 -0
- package/dist/cli/lib/command-boundary.d.ts.map +1 -1
- package/dist/cli/lib/command-boundary.js +50 -4
- package/dist/cli/lib/command-boundary.js.map +1 -1
- package/dist/cli/lib/draft-token.d.ts +5 -1
- package/dist/cli/lib/draft-token.d.ts.map +1 -1
- package/dist/cli/lib/draft-token.js +19 -3
- package/dist/cli/lib/draft-token.js.map +1 -1
- package/dist/cli/lib/errors.d.ts +9 -1
- package/dist/cli/lib/errors.d.ts.map +1 -1
- package/dist/cli/lib/errors.js +31 -10
- package/dist/cli/lib/errors.js.map +1 -1
- package/dist/cli/lib/gxt-error-codes.d.ts +5 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +8 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/interrogate/answers.d.ts +8 -0
- package/dist/cli/lib/interrogate/answers.d.ts.map +1 -0
- package/dist/cli/lib/interrogate/answers.js +50 -0
- package/dist/cli/lib/interrogate/answers.js.map +1 -0
- package/dist/cli/lib/interrogate/findings.d.ts +27 -0
- package/dist/cli/lib/interrogate/findings.d.ts.map +1 -0
- package/dist/cli/lib/interrogate/findings.js +36 -0
- package/dist/cli/lib/interrogate/findings.js.map +1 -0
- package/dist/cli/lib/interrogate/gaps.d.ts +13 -0
- package/dist/cli/lib/interrogate/gaps.d.ts.map +1 -0
- package/dist/cli/lib/interrogate/gaps.js +110 -0
- package/dist/cli/lib/interrogate/gaps.js.map +1 -0
- package/dist/cli/lib/interrogate/gate-integrity.d.ts +7 -0
- package/dist/cli/lib/interrogate/gate-integrity.d.ts.map +1 -0
- package/dist/cli/lib/interrogate/gate-integrity.js +30 -0
- package/dist/cli/lib/interrogate/gate-integrity.js.map +1 -0
- package/dist/cli/lib/interrogate/run.d.ts +26 -0
- package/dist/cli/lib/interrogate/run.d.ts.map +1 -0
- package/dist/cli/lib/interrogate/run.js +43 -0
- package/dist/cli/lib/interrogate/run.js.map +1 -0
- package/dist/cli/lib/kpi-scan.d.ts.map +1 -1
- package/dist/cli/lib/kpi-scan.js +4 -3
- package/dist/cli/lib/kpi-scan.js.map +1 -1
- package/dist/cli/lib/legislate-gate-options.d.ts +9 -0
- package/dist/cli/lib/legislate-gate-options.d.ts.map +1 -0
- package/dist/cli/lib/legislate-gate-options.js +11 -0
- package/dist/cli/lib/legislate-gate-options.js.map +1 -0
- package/dist/cli/lib/legislate.d.ts +23 -12
- package/dist/cli/lib/legislate.d.ts.map +1 -1
- package/dist/cli/lib/legislate.js +61 -13
- package/dist/cli/lib/legislate.js.map +1 -1
- package/dist/cli/lib/manifest.d.ts.map +1 -1
- package/dist/cli/lib/manifest.js +10 -0
- package/dist/cli/lib/manifest.js.map +1 -1
- package/dist/cli/lib/mcp-attest.d.ts.map +1 -1
- package/dist/cli/lib/mcp-attest.js +8 -1
- package/dist/cli/lib/mcp-attest.js.map +1 -1
- package/dist/cli/lib/mcp-draft-legislation.d.ts.map +1 -1
- package/dist/cli/lib/mcp-draft-legislation.js +49 -5
- package/dist/cli/lib/mcp-draft-legislation.js.map +1 -1
- package/dist/cli/lib/mcp-execute-legislation.d.ts.map +1 -1
- package/dist/cli/lib/mcp-execute-legislation.js +6 -0
- package/dist/cli/lib/mcp-execute-legislation.js.map +1 -1
- package/dist/cli/lib/mcp-governance-shared.d.ts +7 -0
- package/dist/cli/lib/mcp-governance-shared.d.ts.map +1 -1
- package/dist/cli/lib/mcp-governance-shared.js +10 -0
- package/dist/cli/lib/mcp-governance-shared.js.map +1 -1
- package/dist/cli/lib/mcp-interrogate.d.ts +18 -0
- package/dist/cli/lib/mcp-interrogate.d.ts.map +1 -0
- package/dist/cli/lib/mcp-interrogate.js +29 -0
- package/dist/cli/lib/mcp-interrogate.js.map +1 -0
- package/dist/cli/lib/mcp-pin-mission.d.ts.map +1 -1
- package/dist/cli/lib/mcp-pin-mission.js +10 -10
- package/dist/cli/lib/mcp-pin-mission.js.map +1 -1
- package/dist/cli/lib/mcp-start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/mcp-start-orchestration.js +9 -4
- package/dist/cli/lib/mcp-start-orchestration.js.map +1 -1
- package/dist/cli/lib/mcp-tools-register.d.ts.map +1 -1
- package/dist/cli/lib/mcp-tools-register.js +22 -1
- package/dist/cli/lib/mcp-tools-register.js.map +1 -1
- package/dist/cli/lib/mission-arg.d.ts +18 -0
- package/dist/cli/lib/mission-arg.d.ts.map +1 -0
- package/dist/cli/lib/mission-arg.js +45 -0
- package/dist/cli/lib/mission-arg.js.map +1 -0
- package/dist/cli/lib/missions/formatter.d.ts.map +1 -1
- package/dist/cli/lib/missions/formatter.js +3 -0
- package/dist/cli/lib/missions/formatter.js.map +1 -1
- package/dist/cli/lib/missions/parser.d.ts +4 -0
- package/dist/cli/lib/missions/parser.d.ts.map +1 -1
- package/dist/cli/lib/missions/parser.js +36 -0
- package/dist/cli/lib/missions/parser.js.map +1 -1
- package/dist/cli/lib/org-export-config.d.ts +9 -0
- package/dist/cli/lib/org-export-config.d.ts.map +1 -0
- package/dist/cli/lib/org-export-config.js +45 -0
- package/dist/cli/lib/org-export-config.js.map +1 -0
- package/dist/cli/lib/pepper-keyring.d.ts +18 -0
- package/dist/cli/lib/pepper-keyring.d.ts.map +1 -0
- package/dist/cli/lib/pepper-keyring.js +128 -0
- package/dist/cli/lib/pepper-keyring.js.map +1 -0
- package/dist/cli/lib/perimeter.d.ts +1 -0
- package/dist/cli/lib/perimeter.d.ts.map +1 -1
- package/dist/cli/lib/perimeter.js +1 -1
- package/dist/cli/lib/perimeter.js.map +1 -1
- package/dist/cli/lib/principal-hmac.d.ts +20 -0
- package/dist/cli/lib/principal-hmac.d.ts.map +1 -0
- package/dist/cli/lib/principal-hmac.js +74 -0
- package/dist/cli/lib/principal-hmac.js.map +1 -0
- package/dist/cli/lib/receipt-attribution.d.ts +23 -0
- package/dist/cli/lib/receipt-attribution.d.ts.map +1 -0
- package/dist/cli/lib/receipt-attribution.js +113 -0
- package/dist/cli/lib/receipt-attribution.js.map +1 -0
- package/dist/cli/lib/receipt-inspect.d.ts +28 -0
- package/dist/cli/lib/receipt-inspect.d.ts.map +1 -0
- package/dist/cli/lib/receipt-inspect.js +105 -0
- package/dist/cli/lib/receipt-inspect.js.map +1 -0
- package/dist/cli/lib/receipt-signing.d.ts +18 -1
- package/dist/cli/lib/receipt-signing.d.ts.map +1 -1
- package/dist/cli/lib/receipt-signing.js +34 -8
- package/dist/cli/lib/receipt-signing.js.map +1 -1
- package/dist/cli/lib/start-orchestration.d.ts +1 -0
- package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/start-orchestration.js +55 -4
- package/dist/cli/lib/start-orchestration.js.map +1 -1
- package/dist/cli/lib/tmvc-path.d.ts +2 -0
- package/dist/cli/lib/tmvc-path.d.ts.map +1 -1
- package/dist/cli/lib/tmvc-path.js +16 -0
- package/dist/cli/lib/tmvc-path.js.map +1 -1
- package/dist/cli/lib/triage-logic.d.ts +1 -0
- package/dist/cli/lib/triage-logic.d.ts.map +1 -1
- package/dist/cli/lib/triage-logic.js +3 -0
- package/dist/cli/lib/triage-logic.js.map +1 -1
- package/dist/cli/lib/types.d.ts +16 -0
- package/dist/cli/lib/types.d.ts.map +1 -1
- package/dist/cli/lib/verify-context.d.ts +15 -0
- package/dist/cli/lib/verify-context.d.ts.map +1 -0
- package/dist/cli/lib/verify-context.js +2 -0
- package/dist/cli/lib/verify-context.js.map +1 -0
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +37 -7
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +14 -0
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
- package/dist/cli/lib/verify-failure.d.ts +8 -2
- package/dist/cli/lib/verify-failure.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding.d.ts +1 -1
- package/dist/cli/lib/verify-finding.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding.js.map +1 -1
- package/dist/cli/lib/verify-hints.d.ts.map +1 -1
- package/dist/cli/lib/verify-hints.js +17 -0
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-interrogation.d.ts +18 -0
- package/dist/cli/lib/verify-interrogation.d.ts.map +1 -0
- package/dist/cli/lib/verify-interrogation.js +205 -0
- package/dist/cli/lib/verify-interrogation.js.map +1 -0
- package/dist/cli/lib/verify-options.d.ts +4 -2
- package/dist/cli/lib/verify-options.d.ts.map +1 -1
- package/dist/cli/lib/verify-options.js +1 -12
- package/dist/cli/lib/verify-options.js.map +1 -1
- package/dist/cli/lib/verify-payload.d.ts +7 -2
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +3 -3
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts +23 -15
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +49 -42
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-receipt.d.ts +5 -1
- package/dist/cli/lib/verify-receipt.d.ts.map +1 -1
- package/dist/cli/lib/verify-receipt.js +27 -7
- package/dist/cli/lib/verify-receipt.js.map +1 -1
- package/dist/cli/lib/verify-run.d.ts +1 -0
- package/dist/cli/lib/verify-run.d.ts.map +1 -1
- package/dist/cli/lib/verify-run.js +90 -38
- 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 +52 -0
- package/dist/cli/program-core.js.map +1 -1
- package/dist/cli/program-mission.js +2 -2
- package/dist/cli/program-mission.js.map +1 -1
- package/dist/cli/program-workflow.d.ts +44 -0
- package/dist/cli/program-workflow.d.ts.map +1 -1
- package/dist/cli/program-workflow.js +69 -7
- package/dist/cli/program-workflow.js.map +1 -1
- package/package.json +1 -1
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/.gitagent/planner/MISSION.schema.yaml +54 -0
- package/templates/.github/workflows/gxt-attest-ingest.yml +72 -0
- package/templates/.gitignore.gxt +1 -0
- package/templates/integrations/compatibility.json +52 -16
- package/templates/scripts/gxt-pin-mission.sh +15 -2
- package/templates/scripts/gxt-runtime-env.sh +12 -6
- package/templates/scripts/validate-mcp-dogfood.mjs +56 -0
|
@@ -16,16 +16,29 @@ usage: scripts/gxt-pin-mission.sh .gitagent/missions/<file>.yaml
|
|
|
16
16
|
Writes .gitagent/missions/.active-mission (gitignored) for:
|
|
17
17
|
- scripts/gxt-runtime-env.sh (no arg)
|
|
18
18
|
- .cursor/hooks/gxt-session-start.sh (new Agent sessions)
|
|
19
|
+
|
|
20
|
+
Prefer: gantry pin <mission> (writes repo-relative path)
|
|
19
21
|
EOF
|
|
20
22
|
exit 1
|
|
21
23
|
fi
|
|
22
24
|
|
|
23
25
|
MISSION="$1"
|
|
26
|
+
if command -v gantry >/dev/null 2>&1; then
|
|
27
|
+
gantry pin "$MISSION"
|
|
28
|
+
exit $?
|
|
29
|
+
fi
|
|
30
|
+
|
|
24
31
|
if [ ! -f "$MISSION" ]; then
|
|
25
32
|
echo "gxt-pin-mission: mission file not found: $MISSION" >&2
|
|
26
33
|
exit 1
|
|
27
34
|
fi
|
|
28
35
|
|
|
29
36
|
mkdir -p .gitagent/missions
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
# Repo-relative path (matches gantry pin / pinMissionFile; portable — no GNU realpath)
|
|
38
|
+
if [[ "$MISSION" = /* ]]; then
|
|
39
|
+
MISSION_REL="${MISSION#"$ROOT"/}"
|
|
40
|
+
else
|
|
41
|
+
MISSION_REL="$MISSION"
|
|
42
|
+
fi
|
|
43
|
+
printf '%s\n' "$MISSION_REL" > .gitagent/missions/.active-mission
|
|
44
|
+
printf 'Pinned active mission: %s\n' "$MISSION_REL"
|
|
@@ -2,22 +2,29 @@
|
|
|
2
2
|
# Load GXT Executor Runtime Contract into the current shell (any IDE terminal / manual runs).
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
|
+
_gxt_runtime_die() {
|
|
6
|
+
echo "$1" >&2
|
|
7
|
+
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
|
|
8
|
+
return 1
|
|
9
|
+
fi
|
|
10
|
+
exit 1
|
|
11
|
+
}
|
|
12
|
+
|
|
5
13
|
ROOT="$(git rev-parse --show-toplevel 2>/dev/null || true)"
|
|
6
14
|
if [ -z "$ROOT" ]; then
|
|
7
|
-
|
|
8
|
-
exit 1
|
|
15
|
+
_gxt_runtime_die "gxt-runtime-env: not inside a git repository"
|
|
9
16
|
fi
|
|
10
17
|
cd "$ROOT"
|
|
11
18
|
|
|
12
19
|
MISSION=""
|
|
13
20
|
if ! MISSION="$(scripts/gxt-resolve-mission.sh "${1:-}" 2>/dev/null)"; then
|
|
14
|
-
cat
|
|
21
|
+
_gxt_runtime_die "$(cat <<'EOF'
|
|
15
22
|
gxt-runtime-env: no mission file resolved.
|
|
16
23
|
scripts/gxt-pin-mission.sh .gitagent/missions/<file>.yaml
|
|
17
24
|
source scripts/gxt-runtime-env.sh .gitagent/missions/<file>.yaml
|
|
18
25
|
export GANTRY_MISSION=.gitagent/missions/<file>.yaml
|
|
19
26
|
EOF
|
|
20
|
-
|
|
27
|
+
)"
|
|
21
28
|
fi
|
|
22
29
|
|
|
23
30
|
if command -v gantry >/dev/null 2>&1; then
|
|
@@ -25,8 +32,7 @@ if command -v gantry >/dev/null 2>&1; then
|
|
|
25
32
|
elif [ -f "dist/cli/index.js" ]; then
|
|
26
33
|
eval "$(node dist/cli/index.js runtime env --mission "$MISSION")"
|
|
27
34
|
else
|
|
28
|
-
|
|
29
|
-
exit 1
|
|
35
|
+
_gxt_runtime_die "gxt-runtime-env: gantry not found (npm ci && npm run build)"
|
|
30
36
|
fi
|
|
31
37
|
|
|
32
38
|
printf 'GXT runtime loaded: mission=%s skill=%s\n' "$GXT_MISSION_FILE" "${GXT_SKILL_KEY:-unknown}"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import {
|
|
5
|
+
handleDraftLegislation,
|
|
6
|
+
handleExecuteLegislation,
|
|
7
|
+
handleCheckSignature,
|
|
8
|
+
handlePinMission,
|
|
9
|
+
} from "../dist/cli/lib/mcp-governance.js";
|
|
10
|
+
import { handleRuntimeEnv } from "../dist/cli/lib/mcp-runtime.js";
|
|
11
|
+
|
|
12
|
+
const dest = process.env.GXT_DOGFOOD_TMP;
|
|
13
|
+
if (!dest) throw new Error("GXT_DOGFOOD_TMP unset");
|
|
14
|
+
process.chdir(dest);
|
|
15
|
+
|
|
16
|
+
const draft = handleDraftLegislation({
|
|
17
|
+
title: "Dogfood gantry MCP flow",
|
|
18
|
+
msn_id: "MSN-0301",
|
|
19
|
+
skill_key: "gantry",
|
|
20
|
+
gate_command: "npm test",
|
|
21
|
+
gate_success_substring: "pass",
|
|
22
|
+
interrogation: [],
|
|
23
|
+
});
|
|
24
|
+
if (draft.status !== "awaiting_human_approval") throw new Error("draft failed");
|
|
25
|
+
|
|
26
|
+
const before = fs.readdirSync(path.join(dest, ".gitagent", "missions"));
|
|
27
|
+
if (before.length !== 0) throw new Error("draft wrote files");
|
|
28
|
+
|
|
29
|
+
const executed = handleExecuteLegislation(draft.draft_token);
|
|
30
|
+
if (executed.status !== "pending_signature") throw new Error("execute failed");
|
|
31
|
+
|
|
32
|
+
const missing = handleCheckSignature(executed.mission_file_path);
|
|
33
|
+
if (missing.status !== "signature_missing") throw new Error("expected missing signature");
|
|
34
|
+
|
|
35
|
+
const addResult = spawnSync("git", ["add", "--", executed.mission_file_path], {
|
|
36
|
+
cwd: dest,
|
|
37
|
+
stdio: "inherit",
|
|
38
|
+
});
|
|
39
|
+
if (addResult.status !== 0) throw new Error("git add failed");
|
|
40
|
+
|
|
41
|
+
const commitResult = spawnSync("git", ["commit", "-m", executed.commit_message], {
|
|
42
|
+
cwd: dest,
|
|
43
|
+
stdio: "inherit",
|
|
44
|
+
});
|
|
45
|
+
if (commitResult.status !== 0) throw new Error("git commit failed");
|
|
46
|
+
|
|
47
|
+
const valid = handleCheckSignature(executed.mission_file_path);
|
|
48
|
+
if (valid.status !== "signature_valid") throw new Error("expected valid signature");
|
|
49
|
+
|
|
50
|
+
const pinned = handlePinMission(executed.mission_file_path);
|
|
51
|
+
if (pinned.status !== "pinned") throw new Error("pin failed");
|
|
52
|
+
|
|
53
|
+
const env = handleRuntimeEnv(executed.mission_file_path);
|
|
54
|
+
if (env.status !== "ok") throw new Error(`runtime env failed: ${JSON.stringify(env)}`);
|
|
55
|
+
|
|
56
|
+
console.log("OK: MCP dogfood flow passed");
|