@jeger-ai/opengantry 3.2.5 → 3.3.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 +10 -3
- package/dist/cli/commands/deps.d.ts +18 -0
- package/dist/cli/commands/deps.d.ts.map +1 -0
- package/dist/cli/commands/deps.js +63 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -6
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +8 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/events-push.d.ts +9 -0
- package/dist/cli/commands/events-push.d.ts.map +1 -0
- package/dist/cli/commands/events-push.js +84 -0
- package/dist/cli/commands/events-push.js.map +1 -0
- package/dist/cli/commands/interrogate.js +3 -3
- package/dist/cli/commands/interrogate.js.map +1 -1
- package/dist/cli/commands/ledger.d.ts +24 -0
- package/dist/cli/commands/ledger.d.ts.map +1 -0
- package/dist/cli/commands/ledger.js +88 -0
- package/dist/cli/commands/ledger.js.map +1 -0
- package/dist/cli/commands/mission.d.ts +6 -0
- package/dist/cli/commands/mission.d.ts.map +1 -1
- package/dist/cli/commands/mission.js +43 -3
- package/dist/cli/commands/mission.js.map +1 -1
- package/dist/cli/commands/perimeter.d.ts.map +1 -1
- package/dist/cli/commands/perimeter.js +4 -0
- package/dist/cli/commands/perimeter.js.map +1 -1
- package/dist/cli/commands/policy.d.ts +10 -0
- package/dist/cli/commands/policy.d.ts.map +1 -0
- package/dist/cli/commands/policy.js +49 -0
- package/dist/cli/commands/policy.js.map +1 -0
- package/dist/cli/commands/report.d.ts +8 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +23 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/tmvc-guard.d.ts.map +1 -1
- package/dist/cli/commands/tmvc-guard.js +20 -0
- package/dist/cli/commands/tmvc-guard.js.map +1 -1
- package/dist/cli/commands/triage.d.ts.map +1 -1
- package/dist/cli/commands/triage.js +2 -1
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +30 -11
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/kernel.d.ts +10 -3
- package/dist/cli/kernel.d.ts.map +1 -1
- package/dist/cli/kernel.js +18 -2
- package/dist/cli/kernel.js.map +1 -1
- package/dist/cli/lib/adapter-preflight-checks.d.ts +55 -0
- package/dist/cli/lib/adapter-preflight-checks.d.ts.map +1 -0
- package/dist/cli/lib/adapter-preflight-checks.js +275 -0
- package/dist/cli/lib/adapter-preflight-checks.js.map +1 -0
- package/dist/cli/lib/atomic-fs.d.ts +3 -0
- package/dist/cli/lib/atomic-fs.d.ts.map +1 -1
- package/dist/cli/lib/atomic-fs.js +39 -0
- package/dist/cli/lib/atomic-fs.js.map +1 -1
- package/dist/cli/lib/attest-mission.d.ts.map +1 -1
- package/dist/cli/lib/attest-mission.js +7 -0
- package/dist/cli/lib/attest-mission.js.map +1 -1
- package/dist/cli/lib/break-glass.d.ts +1 -1
- package/dist/cli/lib/break-glass.d.ts.map +1 -1
- package/dist/cli/lib/break-glass.js +6 -0
- package/dist/cli/lib/break-glass.js.map +1 -1
- package/dist/cli/lib/command-boundary.d.ts +7 -3
- package/dist/cli/lib/command-boundary.d.ts.map +1 -1
- package/dist/cli/lib/command-boundary.js +20 -4
- package/dist/cli/lib/command-boundary.js.map +1 -1
- package/dist/cli/lib/constants.d.ts +15 -0
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +15 -0
- package/dist/cli/lib/constants.js.map +1 -1
- package/dist/cli/lib/context-feed-remediation.d.ts +2 -2
- package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
- package/dist/cli/lib/context-feed-remediation.js +28 -26
- package/dist/cli/lib/context-feed-remediation.js.map +1 -1
- package/dist/cli/lib/context-feed-store.d.ts +10 -2
- package/dist/cli/lib/context-feed-store.d.ts.map +1 -1
- package/dist/cli/lib/context-feed-store.js +8 -28
- package/dist/cli/lib/context-feed-store.js.map +1 -1
- package/dist/cli/lib/defensive-profile-presets.d.ts +6 -0
- package/dist/cli/lib/defensive-profile-presets.d.ts.map +1 -1
- package/dist/cli/lib/defensive-profile-presets.js +15 -1
- package/dist/cli/lib/defensive-profile-presets.js.map +1 -1
- package/dist/cli/lib/deps/deps-fetch.d.ts +4 -0
- package/dist/cli/lib/deps/deps-fetch.d.ts.map +1 -0
- package/dist/cli/lib/deps/deps-fetch.js +16 -0
- package/dist/cli/lib/deps/deps-fetch.js.map +1 -0
- package/dist/cli/lib/deps/deps-resolve.d.ts +18 -0
- package/dist/cli/lib/deps/deps-resolve.d.ts.map +1 -0
- package/dist/cli/lib/deps/deps-resolve.js +66 -0
- package/dist/cli/lib/deps/deps-resolve.js.map +1 -0
- package/dist/cli/lib/deps/deps-slug.d.ts +5 -0
- package/dist/cli/lib/deps/deps-slug.d.ts.map +1 -0
- package/dist/cli/lib/deps/deps-slug.js +44 -0
- package/dist/cli/lib/deps/deps-slug.js.map +1 -0
- package/dist/cli/lib/doctor-adapter-preflight.d.ts +24 -0
- package/dist/cli/lib/doctor-adapter-preflight.d.ts.map +1 -0
- package/dist/cli/lib/doctor-adapter-preflight.js +98 -0
- package/dist/cli/lib/doctor-adapter-preflight.js.map +1 -0
- package/dist/cli/lib/doctor-core.d.ts +7 -1
- package/dist/cli/lib/doctor-core.d.ts.map +1 -1
- package/dist/cli/lib/doctor-core.js +36 -5
- package/dist/cli/lib/doctor-core.js.map +1 -1
- package/dist/cli/lib/doctor-integration.d.ts +2 -0
- package/dist/cli/lib/doctor-integration.d.ts.map +1 -1
- package/dist/cli/lib/doctor-integration.js +4 -2
- package/dist/cli/lib/doctor-integration.js.map +1 -1
- package/dist/cli/lib/doctor-preflight/eslint.d.ts +4 -0
- package/dist/cli/lib/doctor-preflight/eslint.d.ts.map +1 -0
- package/dist/cli/lib/doctor-preflight/eslint.js +41 -0
- package/dist/cli/lib/doctor-preflight/eslint.js.map +1 -0
- package/dist/cli/lib/doctor-preflight/index.d.ts +3 -0
- package/dist/cli/lib/doctor-preflight/index.d.ts.map +1 -0
- package/dist/cli/lib/doctor-preflight/index.js +3 -0
- package/dist/cli/lib/doctor-preflight/index.js.map +1 -0
- package/dist/cli/lib/doctor-preflight/tsc.d.ts +4 -0
- package/dist/cli/lib/doctor-preflight/tsc.d.ts.map +1 -0
- package/dist/cli/lib/doctor-preflight/tsc.js +42 -0
- package/dist/cli/lib/doctor-preflight/tsc.js.map +1 -0
- package/dist/cli/lib/doctor-substrate.d.ts +2 -2
- package/dist/cli/lib/doctor-substrate.d.ts.map +1 -1
- package/dist/cli/lib/doctor-types.d.ts +4 -4
- package/dist/cli/lib/doctor-types.d.ts.map +1 -1
- package/dist/cli/lib/draft-token.d.ts +3 -0
- package/dist/cli/lib/draft-token.d.ts.map +1 -1
- package/dist/cli/lib/draft-token.js +7 -0
- package/dist/cli/lib/draft-token.js.map +1 -1
- package/dist/cli/lib/event-spool.d.ts +17 -0
- package/dist/cli/lib/event-spool.d.ts.map +1 -0
- package/dist/cli/lib/event-spool.js +57 -0
- package/dist/cli/lib/event-spool.js.map +1 -0
- package/dist/cli/lib/gate-adapters/adapter-findings.d.ts +41 -0
- package/dist/cli/lib/gate-adapters/adapter-findings.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/adapter-findings.js +99 -0
- package/dist/cli/lib/gate-adapters/adapter-findings.js.map +1 -0
- package/dist/cli/lib/gate-adapters/eslint-json-adapter.d.ts +14 -0
- package/dist/cli/lib/gate-adapters/eslint-json-adapter.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/eslint-json-adapter.js +63 -0
- package/dist/cli/lib/gate-adapters/eslint-json-adapter.js.map +1 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-id.d.ts +10 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-id.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-id.js +12 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-id.js.map +1 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-types.d.ts +17 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-types.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-types.js +2 -0
- package/dist/cli/lib/gate-adapters/gate-adapter-types.js.map +1 -0
- package/dist/cli/lib/gate-adapters/generic-spawn-adapter.d.ts +4 -0
- package/dist/cli/lib/gate-adapters/generic-spawn-adapter.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/generic-spawn-adapter.js +12 -0
- package/dist/cli/lib/gate-adapters/generic-spawn-adapter.js.map +1 -0
- package/dist/cli/lib/gate-adapters/parsing-adapter.d.ts +5 -0
- package/dist/cli/lib/gate-adapters/parsing-adapter.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/parsing-adapter.js +13 -0
- package/dist/cli/lib/gate-adapters/parsing-adapter.js.map +1 -0
- package/dist/cli/lib/gate-adapters/registry.d.ts +6 -0
- package/dist/cli/lib/gate-adapters/registry.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/registry.js +13 -0
- package/dist/cli/lib/gate-adapters/registry.js.map +1 -0
- package/dist/cli/lib/gate-adapters/spawn-stream-core.d.ts +36 -0
- package/dist/cli/lib/gate-adapters/spawn-stream-core.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/spawn-stream-core.js +99 -0
- package/dist/cli/lib/gate-adapters/spawn-stream-core.js.map +1 -0
- package/dist/cli/lib/gate-adapters/tsc-adapter.d.ts +16 -0
- package/dist/cli/lib/gate-adapters/tsc-adapter.d.ts.map +1 -0
- package/dist/cli/lib/gate-adapters/tsc-adapter.js +51 -0
- package/dist/cli/lib/gate-adapters/tsc-adapter.js.map +1 -0
- package/dist/cli/lib/gate-log-writer.d.ts +13 -0
- package/dist/cli/lib/gate-log-writer.d.ts.map +1 -0
- package/dist/cli/lib/gate-log-writer.js +64 -0
- package/dist/cli/lib/gate-log-writer.js.map +1 -0
- package/dist/cli/lib/gate.d.ts +2 -0
- package/dist/cli/lib/gate.d.ts.map +1 -1
- package/dist/cli/lib/gate.js +2 -2
- package/dist/cli/lib/gate.js.map +1 -1
- package/dist/cli/lib/git-metrics.d.ts +12 -0
- package/dist/cli/lib/git-metrics.d.ts.map +1 -1
- package/dist/cli/lib/git-metrics.js +34 -11
- package/dist/cli/lib/git-metrics.js.map +1 -1
- package/dist/cli/lib/git.d.ts +8 -2
- package/dist/cli/lib/git.d.ts.map +1 -1
- package/dist/cli/lib/git.js +14 -7
- package/dist/cli/lib/git.js.map +1 -1
- package/dist/cli/lib/gxt-config.d.ts +9 -0
- package/dist/cli/lib/gxt-config.d.ts.map +1 -1
- package/dist/cli/lib/gxt-config.js +16 -0
- package/dist/cli/lib/gxt-config.js.map +1 -1
- package/dist/cli/lib/gxt-error-codes.d.ts +13 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +13 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/ingest-wait.d.ts +21 -0
- package/dist/cli/lib/ingest-wait.d.ts.map +1 -0
- package/dist/cli/lib/ingest-wait.js +24 -0
- package/dist/cli/lib/ingest-wait.js.map +1 -0
- package/dist/cli/lib/init-tutorial.js +3 -4
- package/dist/cli/lib/init-tutorial.js.map +1 -1
- package/dist/cli/lib/kpi-scan.js +5 -1
- package/dist/cli/lib/kpi-scan.js.map +1 -1
- package/dist/cli/lib/ledger/ledger-append.d.ts +14 -0
- package/dist/cli/lib/ledger/ledger-append.d.ts.map +1 -0
- package/dist/cli/lib/ledger/ledger-append.js +63 -0
- package/dist/cli/lib/ledger/ledger-append.js.map +1 -0
- package/dist/cli/lib/ledger/ledger-chain.d.ts +24 -0
- package/dist/cli/lib/ledger/ledger-chain.d.ts.map +1 -0
- package/dist/cli/lib/ledger/ledger-chain.js +101 -0
- package/dist/cli/lib/ledger/ledger-chain.js.map +1 -0
- package/dist/cli/lib/ledger/ledger-entry.d.ts +79 -0
- package/dist/cli/lib/ledger/ledger-entry.d.ts.map +1 -0
- package/dist/cli/lib/ledger/ledger-entry.js +36 -0
- package/dist/cli/lib/ledger/ledger-entry.js.map +1 -0
- package/dist/cli/lib/ledger/ledger-export.d.ts +28 -0
- package/dist/cli/lib/ledger/ledger-export.d.ts.map +1 -0
- package/dist/cli/lib/ledger/ledger-export.js +36 -0
- package/dist/cli/lib/ledger/ledger-export.js.map +1 -0
- package/dist/cli/lib/legislate-gate-options.d.ts +3 -4
- package/dist/cli/lib/legislate-gate-options.d.ts.map +1 -1
- package/dist/cli/lib/legislate-gate-options.js +9 -4
- package/dist/cli/lib/legislate-gate-options.js.map +1 -1
- package/dist/cli/lib/legislate-policy-warn.d.ts +3 -0
- package/dist/cli/lib/legislate-policy-warn.d.ts.map +1 -0
- package/dist/cli/lib/legislate-policy-warn.js +17 -0
- package/dist/cli/lib/legislate-policy-warn.js.map +1 -0
- package/dist/cli/lib/legislate.d.ts +3 -1
- package/dist/cli/lib/legislate.d.ts.map +1 -1
- package/dist/cli/lib/legislate.js +14 -12
- package/dist/cli/lib/legislate.js.map +1 -1
- package/dist/cli/lib/mcp-doctor.d.ts +18 -0
- package/dist/cli/lib/mcp-doctor.d.ts.map +1 -0
- package/dist/cli/lib/mcp-doctor.js +35 -0
- package/dist/cli/lib/mcp-doctor.js.map +1 -0
- package/dist/cli/lib/mcp-draft-legislation.d.ts.map +1 -1
- package/dist/cli/lib/mcp-draft-legislation.js +12 -7
- 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 +1 -0
- package/dist/cli/lib/mcp-execute-legislation.js.map +1 -1
- package/dist/cli/lib/mcp-governance-shared.d.ts +3 -1
- package/dist/cli/lib/mcp-governance-shared.d.ts.map +1 -1
- package/dist/cli/lib/mcp-governance-shared.js.map +1 -1
- package/dist/cli/lib/mcp-interrogate.js +3 -3
- package/dist/cli/lib/mcp-interrogate.js.map +1 -1
- package/dist/cli/lib/mcp-org.d.ts +19 -0
- package/dist/cli/lib/mcp-org.d.ts.map +1 -0
- package/dist/cli/lib/mcp-org.js +51 -0
- package/dist/cli/lib/mcp-org.js.map +1 -0
- package/dist/cli/lib/mcp-runtime.d.ts +1 -1
- package/dist/cli/lib/mcp-runtime.d.ts.map +1 -1
- package/dist/cli/lib/mcp-runtime.js +1 -1
- package/dist/cli/lib/mcp-runtime.js.map +1 -1
- package/dist/cli/lib/mcp-start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/mcp-start-orchestration.js +1 -0
- 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 +90 -17
- package/dist/cli/lib/mcp-tools-register.js.map +1 -1
- package/dist/cli/lib/mission-changed.d.ts +27 -0
- package/dist/cli/lib/mission-changed.d.ts.map +1 -0
- package/dist/cli/lib/mission-changed.js +107 -0
- package/dist/cli/lib/mission-changed.js.map +1 -0
- package/dist/cli/lib/missions/formatter.d.ts +1 -1
- 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 +3 -1
- package/dist/cli/lib/missions/parser.d.ts.map +1 -1
- package/dist/cli/lib/missions/parser.js +16 -0
- package/dist/cli/lib/missions/parser.js.map +1 -1
- package/dist/cli/lib/msn-allocate.d.ts.map +1 -1
- package/dist/cli/lib/msn-allocate.js +17 -24
- package/dist/cli/lib/msn-allocate.js.map +1 -1
- package/dist/cli/lib/planner-signature.d.ts +7 -0
- package/dist/cli/lib/planner-signature.d.ts.map +1 -1
- package/dist/cli/lib/planner-signature.js +18 -1
- package/dist/cli/lib/planner-signature.js.map +1 -1
- package/dist/cli/lib/policy/policy-bundle.d.ts +6 -0
- package/dist/cli/lib/policy/policy-bundle.d.ts.map +1 -0
- package/dist/cli/lib/policy/policy-bundle.js +62 -0
- package/dist/cli/lib/policy/policy-bundle.js.map +1 -0
- package/dist/cli/lib/policy/policy-doctor.d.ts +4 -0
- package/dist/cli/lib/policy/policy-doctor.d.ts.map +1 -0
- package/dist/cli/lib/policy/policy-doctor.js +34 -0
- package/dist/cli/lib/policy/policy-doctor.js.map +1 -0
- package/dist/cli/lib/policy/policy-fetch.d.ts +10 -0
- package/dist/cli/lib/policy/policy-fetch.d.ts.map +1 -0
- package/dist/cli/lib/policy/policy-fetch.js +78 -0
- package/dist/cli/lib/policy/policy-fetch.js.map +1 -0
- package/dist/cli/lib/policy/policy-resolve.d.ts +38 -0
- package/dist/cli/lib/policy/policy-resolve.d.ts.map +1 -0
- package/dist/cli/lib/policy/policy-resolve.js +194 -0
- package/dist/cli/lib/policy/policy-resolve.js.map +1 -0
- package/dist/cli/lib/policy/policy-types.d.ts +76 -0
- package/dist/cli/lib/policy/policy-types.d.ts.map +1 -0
- package/dist/cli/lib/policy/policy-types.js +3 -0
- package/dist/cli/lib/policy/policy-types.js.map +1 -0
- package/dist/cli/lib/policy-digest-doctor.d.ts +1 -0
- package/dist/cli/lib/policy-digest-doctor.d.ts.map +1 -1
- package/dist/cli/lib/policy-digest-doctor.js +4 -2
- package/dist/cli/lib/policy-digest-doctor.js.map +1 -1
- package/dist/cli/lib/report-demo-fixtures.d.ts +8 -0
- package/dist/cli/lib/report-demo-fixtures.d.ts.map +1 -0
- package/dist/cli/lib/report-demo-fixtures.js +48 -0
- package/dist/cli/lib/report-demo-fixtures.js.map +1 -0
- package/dist/cli/lib/report-demo-mode.d.ts +8 -0
- package/dist/cli/lib/report-demo-mode.d.ts.map +1 -0
- package/dist/cli/lib/report-demo-mode.js +33 -0
- package/dist/cli/lib/report-demo-mode.js.map +1 -0
- package/dist/cli/lib/report-overview-projector.d.ts +53 -0
- package/dist/cli/lib/report-overview-projector.d.ts.map +1 -0
- package/dist/cli/lib/report-overview-projector.js +179 -0
- package/dist/cli/lib/report-overview-projector.js.map +1 -0
- package/dist/cli/lib/report-projector.d.ts +60 -0
- package/dist/cli/lib/report-projector.d.ts.map +1 -0
- package/dist/cli/lib/report-projector.js +166 -0
- package/dist/cli/lib/report-projector.js.map +1 -0
- package/dist/cli/lib/report-server.d.ts +20 -0
- package/dist/cli/lib/report-server.d.ts.map +1 -0
- package/dist/cli/lib/report-server.js +221 -0
- package/dist/cli/lib/report-server.js.map +1 -0
- package/dist/cli/lib/report-template-css.d.ts +4 -0
- package/dist/cli/lib/report-template-css.d.ts.map +1 -0
- package/dist/cli/lib/report-template-css.js +196 -0
- package/dist/cli/lib/report-template-css.js.map +1 -0
- package/dist/cli/lib/report-template-html.d.ts +6 -0
- package/dist/cli/lib/report-template-html.d.ts.map +1 -0
- package/dist/cli/lib/report-template-html.js +189 -0
- package/dist/cli/lib/report-template-html.js.map +1 -0
- package/dist/cli/lib/report-template-overview.d.ts +3 -0
- package/dist/cli/lib/report-template-overview.d.ts.map +1 -0
- package/dist/cli/lib/report-template-overview.js +200 -0
- package/dist/cli/lib/report-template-overview.js.map +1 -0
- package/dist/cli/lib/report-template-shared.d.ts +8 -0
- package/dist/cli/lib/report-template-shared.d.ts.map +1 -0
- package/dist/cli/lib/report-template-shared.js +52 -0
- package/dist/cli/lib/report-template-shared.js.map +1 -0
- package/dist/cli/lib/runtime-exec.d.ts.map +1 -1
- package/dist/cli/lib/runtime-exec.js +1 -1
- package/dist/cli/lib/runtime-exec.js.map +1 -1
- package/dist/cli/lib/start-orchestration.d.ts +2 -1
- package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/start-orchestration.js +5 -3
- package/dist/cli/lib/start-orchestration.js.map +1 -1
- package/dist/cli/lib/surgeons/banned-import.js +1 -1
- package/dist/cli/lib/surgeons/banned-import.js.map +1 -1
- package/dist/cli/lib/surgeons/import-layer.d.ts.map +1 -1
- package/dist/cli/lib/surgeons/import-layer.js +1 -1
- package/dist/cli/lib/surgeons/import-layer.js.map +1 -1
- package/dist/cli/lib/surgeons/registry.d.ts.map +1 -1
- package/dist/cli/lib/surgeons/registry.js +2 -4
- package/dist/cli/lib/surgeons/registry.js.map +1 -1
- 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 +14 -1
- package/dist/cli/lib/telemetry-log.js.map +1 -1
- package/dist/cli/lib/types.d.ts +23 -0
- package/dist/cli/lib/types.d.ts.map +1 -1
- package/dist/cli/lib/types.js +5 -1
- package/dist/cli/lib/types.js.map +1 -1
- package/dist/cli/lib/verify-engine.d.ts +7 -3
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +83 -181
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/verify-evidence-snippet.d.ts +7 -0
- package/dist/cli/lib/verify-evidence-snippet.d.ts.map +1 -0
- package/dist/cli/lib/verify-evidence-snippet.js +29 -0
- package/dist/cli/lib/verify-evidence-snippet.js.map +1 -0
- package/dist/cli/lib/verify-export.d.ts.map +1 -1
- package/dist/cli/lib/verify-export.js +18 -2
- package/dist/cli/lib/verify-export.js.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -1
- package/dist/cli/lib/verify-failure-normalize.js +20 -4
- package/dist/cli/lib/verify-failure-normalize.js.map +1 -1
- package/dist/cli/lib/verify-failure.d.ts +24 -5
- package/dist/cli/lib/verify-failure.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding-fingerprint.d.ts +26 -0
- package/dist/cli/lib/verify-finding-fingerprint.d.ts.map +1 -0
- package/dist/cli/lib/verify-finding-fingerprint.js +117 -0
- package/dist/cli/lib/verify-finding-fingerprint.js.map +1 -0
- package/dist/cli/lib/verify-finding-gate-projector.d.ts +4 -0
- package/dist/cli/lib/verify-finding-gate-projector.d.ts.map +1 -0
- package/dist/cli/lib/verify-finding-gate-projector.js +31 -0
- package/dist/cli/lib/verify-finding-gate-projector.js.map +1 -0
- package/dist/cli/lib/verify-finding.d.ts +17 -4
- package/dist/cli/lib/verify-finding.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding.js +9 -3
- 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 +14 -3
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-options.d.ts +6 -0
- package/dist/cli/lib/verify-options.d.ts.map +1 -1
- package/dist/cli/lib/verify-org-phases.d.ts +18 -0
- package/dist/cli/lib/verify-org-phases.d.ts.map +1 -0
- package/dist/cli/lib/verify-org-phases.js +61 -0
- package/dist/cli/lib/verify-org-phases.js.map +1 -0
- package/dist/cli/lib/verify-payload.d.ts +5 -4
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +59 -38
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-phase-clock.d.ts +17 -0
- package/dist/cli/lib/verify-phase-clock.d.ts.map +1 -0
- package/dist/cli/lib/verify-phase-clock.js +52 -0
- package/dist/cli/lib/verify-phase-clock.js.map +1 -0
- package/dist/cli/lib/verify-phase-steps.d.ts +61 -0
- package/dist/cli/lib/verify-phase-steps.d.ts.map +1 -0
- package/dist/cli/lib/verify-phase-steps.js +167 -0
- package/dist/cli/lib/verify-phase-steps.js.map +1 -0
- package/dist/cli/lib/verify-presenters.d.ts +3 -0
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +102 -18
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-remediation-pipeline.d.ts +36 -0
- package/dist/cli/lib/verify-remediation-pipeline.d.ts.map +1 -0
- package/dist/cli/lib/verify-remediation-pipeline.js +99 -0
- package/dist/cli/lib/verify-remediation-pipeline.js.map +1 -0
- package/dist/cli/lib/verify-run-ring.d.ts +56 -0
- package/dist/cli/lib/verify-run-ring.d.ts.map +1 -0
- package/dist/cli/lib/verify-run-ring.js +165 -0
- package/dist/cli/lib/verify-run-ring.js.map +1 -0
- package/dist/cli/lib/verify-run.d.ts +2 -2
- package/dist/cli/lib/verify-run.d.ts.map +1 -1
- package/dist/cli/lib/verify-run.js +63 -19
- 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/lib/virtual-scratch-store.d.ts.map +1 -1
- package/dist/cli/lib/virtual-scratch-store.js +2 -16
- package/dist/cli/lib/virtual-scratch-store.js.map +1 -1
- package/dist/cli/program-core.d.ts +1 -1
- package/dist/cli/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +79 -5
- package/dist/cli/program-core.js.map +1 -1
- package/dist/cli/program-mission.d.ts.map +1 -1
- package/dist/cli/program-mission.js +59 -35
- package/dist/cli/program-mission.js.map +1 -1
- package/dist/cli/program-org.d.ts +3 -0
- package/dist/cli/program-org.d.ts.map +1 -0
- package/dist/cli/program-org.js +119 -0
- package/dist/cli/program-org.js.map +1 -0
- package/dist/cli/program-workflow.d.ts +2 -1
- package/dist/cli/program-workflow.d.ts.map +1 -1
- package/dist/cli/program-workflow.js +54 -3
- package/dist/cli/program-workflow.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +11 -0
- package/dist/cli/program.js.map +1 -1
- package/package.json +2 -1
- package/templates/.gitagent/config.json +4 -0
- package/templates/.gitagent/foreman/MANIFEST.json +1 -0
- package/templates/.gitagent/foreman/PLANNER.signing.pub +3 -0
- package/templates/.gitagent/foreman/POLICY.pointer.json +11 -0
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/.gitagent/planner/MISSION.schema.yaml +51 -0
- package/templates/.gitagent/planner/ORG-POLICY.schema.yaml +174 -0
- package/templates/.gitagent/planner/RULES.md +36 -2
- package/templates/.github/workflows/gxt-attest-ingest.yml +82 -6
- package/templates/.github/workflows/gxt-validate.yml +33 -0
- package/templates/.gitignore.gxt +1 -0
- package/templates/integrations/asset-catalog.json +2 -0
- package/templates/integrations/compatibility.json +1 -1
- package/templates/scripts/validate-mcp-dogfood.mjs +5 -0
- package/templates/scripts/verify-pr-missions.sh +20 -41
|
@@ -35,6 +35,16 @@ properties:
|
|
|
35
35
|
minLength: 1
|
|
36
36
|
gate_success_substring:
|
|
37
37
|
type: ["string", "null"]
|
|
38
|
+
gate_adapter:
|
|
39
|
+
type: string
|
|
40
|
+
enum: [generic, eslint, tsc]
|
|
41
|
+
default: generic
|
|
42
|
+
description: >-
|
|
43
|
+
Explicit gate output parser (ADR-0041). generic: exit code + optional
|
|
44
|
+
success substring only. eslint: gate_command must emit `eslint --format
|
|
45
|
+
json`; tsc: gate_command must emit plain tsc diagnostics. Adapters map
|
|
46
|
+
tool output to envelope v3 findings with offending_file/line/rule_id.
|
|
47
|
+
Routing is never inferred from gate_command text.
|
|
38
48
|
virtual_capture:
|
|
39
49
|
type: boolean
|
|
40
50
|
default: false
|
|
@@ -208,3 +218,44 @@ properties:
|
|
|
208
218
|
items:
|
|
209
219
|
type: string
|
|
210
220
|
minLength: 1
|
|
221
|
+
depends_on:
|
|
222
|
+
type: array
|
|
223
|
+
default: []
|
|
224
|
+
description: >-
|
|
225
|
+
Cross-repo mission dependencies (ADR-0044). Resolved offline from fetched
|
|
226
|
+
refs/gxt/deps/<slug> ledger chains. gantry deps fetch is the only network
|
|
227
|
+
path; verify/doctor/check read local refs only.
|
|
228
|
+
items:
|
|
229
|
+
type: object
|
|
230
|
+
additionalProperties: false
|
|
231
|
+
required:
|
|
232
|
+
- repo
|
|
233
|
+
- msn_id
|
|
234
|
+
properties:
|
|
235
|
+
repo:
|
|
236
|
+
type: string
|
|
237
|
+
minLength: 1
|
|
238
|
+
description: Canonical host/owner/repo or git URL.
|
|
239
|
+
ref:
|
|
240
|
+
type: string
|
|
241
|
+
default: refs/gxt/ledger
|
|
242
|
+
msn_id:
|
|
243
|
+
type: string
|
|
244
|
+
pattern: "^MSN-[0-9]{4}$"
|
|
245
|
+
require:
|
|
246
|
+
type: object
|
|
247
|
+
additionalProperties: false
|
|
248
|
+
properties:
|
|
249
|
+
verify_status:
|
|
250
|
+
type: string
|
|
251
|
+
enum: [passed]
|
|
252
|
+
default: passed
|
|
253
|
+
signed:
|
|
254
|
+
type: boolean
|
|
255
|
+
default: false
|
|
256
|
+
max_age_days:
|
|
257
|
+
type: number
|
|
258
|
+
exclusiveMinimum: 0
|
|
259
|
+
expected_repository_hash:
|
|
260
|
+
type: string
|
|
261
|
+
pattern: "^[0-9a-f]{64}$"
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# ORG-POLICY.schema — JSON Schema (YAML encoding) for organization policy bundles
|
|
2
|
+
# Consumed by gantry (Ajv). ADR-0042. Version label for docs only.
|
|
3
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
4
|
+
$id: https://opengantry.local/schemas/org-policy.v1.json
|
|
5
|
+
title: OpenGantryOrgPolicy
|
|
6
|
+
type: object
|
|
7
|
+
additionalProperties: false
|
|
8
|
+
required:
|
|
9
|
+
- schema_version
|
|
10
|
+
- org_id
|
|
11
|
+
- policy_id
|
|
12
|
+
- version
|
|
13
|
+
properties:
|
|
14
|
+
schema_version:
|
|
15
|
+
type: string
|
|
16
|
+
const: "1.0.0"
|
|
17
|
+
org_id:
|
|
18
|
+
type: string
|
|
19
|
+
minLength: 1
|
|
20
|
+
policy_id:
|
|
21
|
+
type: string
|
|
22
|
+
minLength: 1
|
|
23
|
+
version:
|
|
24
|
+
type: string
|
|
25
|
+
minLength: 1
|
|
26
|
+
description: Semver or monotonic label for the bundle (not the CLI).
|
|
27
|
+
signers:
|
|
28
|
+
type: array
|
|
29
|
+
default: []
|
|
30
|
+
items:
|
|
31
|
+
type: object
|
|
32
|
+
additionalProperties: false
|
|
33
|
+
required:
|
|
34
|
+
- principal
|
|
35
|
+
properties:
|
|
36
|
+
principal:
|
|
37
|
+
type: string
|
|
38
|
+
minLength: 1
|
|
39
|
+
description: SSH or GPG principal allowed to sign the policy commit.
|
|
40
|
+
kind:
|
|
41
|
+
type: string
|
|
42
|
+
enum: [ssh, gpg]
|
|
43
|
+
mandatory_gates:
|
|
44
|
+
type: array
|
|
45
|
+
default: []
|
|
46
|
+
items:
|
|
47
|
+
type: object
|
|
48
|
+
additionalProperties: false
|
|
49
|
+
required:
|
|
50
|
+
- id
|
|
51
|
+
- command
|
|
52
|
+
properties:
|
|
53
|
+
id:
|
|
54
|
+
type: string
|
|
55
|
+
minLength: 1
|
|
56
|
+
command:
|
|
57
|
+
type: string
|
|
58
|
+
minLength: 1
|
|
59
|
+
adapter:
|
|
60
|
+
type: string
|
|
61
|
+
enum: [generic, eslint, tsc]
|
|
62
|
+
default: generic
|
|
63
|
+
success_substring:
|
|
64
|
+
type: ["string", "null"]
|
|
65
|
+
banned_imports:
|
|
66
|
+
type: array
|
|
67
|
+
default: []
|
|
68
|
+
items:
|
|
69
|
+
type: object
|
|
70
|
+
additionalProperties: false
|
|
71
|
+
required:
|
|
72
|
+
- specifier
|
|
73
|
+
properties:
|
|
74
|
+
specifier:
|
|
75
|
+
type: string
|
|
76
|
+
minLength: 1
|
|
77
|
+
scope:
|
|
78
|
+
type: string
|
|
79
|
+
enum: [changed, all]
|
|
80
|
+
default: changed
|
|
81
|
+
description: changed = gantry check-imports on the mission diff; all = whole tree.
|
|
82
|
+
producers:
|
|
83
|
+
type: object
|
|
84
|
+
default: {}
|
|
85
|
+
additionalProperties:
|
|
86
|
+
type: string
|
|
87
|
+
minLength: 1
|
|
88
|
+
description: >-
|
|
89
|
+
Map of KPI metric name to producer command. kpi_thresholds[].metric MUST
|
|
90
|
+
name a key in this object (CLI/schema error otherwise).
|
|
91
|
+
kpi_thresholds:
|
|
92
|
+
type: array
|
|
93
|
+
default: []
|
|
94
|
+
items:
|
|
95
|
+
type: object
|
|
96
|
+
additionalProperties: false
|
|
97
|
+
required:
|
|
98
|
+
- metric
|
|
99
|
+
- op
|
|
100
|
+
- value
|
|
101
|
+
properties:
|
|
102
|
+
metric:
|
|
103
|
+
type: string
|
|
104
|
+
minLength: 1
|
|
105
|
+
description: MUST match a key in producers.
|
|
106
|
+
op:
|
|
107
|
+
type: string
|
|
108
|
+
enum: ["<=", ">=", "==", "<", ">"]
|
|
109
|
+
value:
|
|
110
|
+
type: number
|
|
111
|
+
config_floor:
|
|
112
|
+
type: object
|
|
113
|
+
additionalProperties: false
|
|
114
|
+
properties:
|
|
115
|
+
planner_signature:
|
|
116
|
+
type: string
|
|
117
|
+
enum: [off, warn, require]
|
|
118
|
+
receipt_signature:
|
|
119
|
+
type: string
|
|
120
|
+
enum: [off, warn, require]
|
|
121
|
+
ledger_signature:
|
|
122
|
+
type: string
|
|
123
|
+
enum: [off, warn, require]
|
|
124
|
+
ledger_mode:
|
|
125
|
+
type: string
|
|
126
|
+
enum: [off, local]
|
|
127
|
+
flight_telemetry:
|
|
128
|
+
type: object
|
|
129
|
+
additionalProperties: false
|
|
130
|
+
properties:
|
|
131
|
+
body_mode:
|
|
132
|
+
type: string
|
|
133
|
+
enum: [hash_only, full]
|
|
134
|
+
break_glass:
|
|
135
|
+
type: object
|
|
136
|
+
additionalProperties: false
|
|
137
|
+
properties:
|
|
138
|
+
require_ledger_entry:
|
|
139
|
+
type: boolean
|
|
140
|
+
manifest_constraints:
|
|
141
|
+
type: object
|
|
142
|
+
additionalProperties: false
|
|
143
|
+
properties:
|
|
144
|
+
forbidden_zones_add:
|
|
145
|
+
type: array
|
|
146
|
+
items:
|
|
147
|
+
type: string
|
|
148
|
+
minLength: 1
|
|
149
|
+
path_risks_min:
|
|
150
|
+
type: object
|
|
151
|
+
additionalProperties:
|
|
152
|
+
type: string
|
|
153
|
+
enum: [Tier-1, Tier-2, Tier-3]
|
|
154
|
+
perimeter_protected_add:
|
|
155
|
+
type: array
|
|
156
|
+
items:
|
|
157
|
+
type: string
|
|
158
|
+
minLength: 1
|
|
159
|
+
expected_digests:
|
|
160
|
+
type: object
|
|
161
|
+
additionalProperties: false
|
|
162
|
+
properties:
|
|
163
|
+
schema_version:
|
|
164
|
+
type: string
|
|
165
|
+
const: "0.1.0"
|
|
166
|
+
manifest_sha256:
|
|
167
|
+
type: string
|
|
168
|
+
pattern: "^[0-9a-f]{64}$"
|
|
169
|
+
target_architecture_sha256:
|
|
170
|
+
type: ["string", "null"]
|
|
171
|
+
pattern: "^[0-9a-f]{64}$"
|
|
172
|
+
config_sha256:
|
|
173
|
+
type: ["string", "null"]
|
|
174
|
+
pattern: "^[0-9a-f]{64}$"
|
|
@@ -24,13 +24,47 @@ Normative keywords **MUST**, **MUST NOT**, and **SHOULD** follow RFC 2119.
|
|
|
24
24
|
- Access outside effective TMVC requires a context request recorded in `EXECUTOR_LOG.md`.
|
|
25
25
|
- Access into forbidden zones MUST fail closed unless Planner policy explicitly allows it.
|
|
26
26
|
|
|
27
|
-
## 5
|
|
27
|
+
## 4.5 Interrogation record (legislation gate)
|
|
28
|
+
|
|
29
|
+
- Computed interrogation findings MUST have an `operator_answer` before legislation.
|
|
30
|
+
- Placeholder or fabricated answers are evidence tampering under §3.
|
|
31
|
+
|
|
32
|
+
## 5. Rule 4.4 — Planner-driven manifest sync
|
|
33
|
+
|
|
34
|
+
- Adding, removing, or renaming a skill MUST update `MANIFEST.json` in the same commit set.
|
|
35
|
+
|
|
36
|
+
## 6. Git-native mission index
|
|
28
37
|
|
|
29
38
|
- Mission-related commits MUST begin with `[MSN-XXXX]` in the subject line.
|
|
30
39
|
- Keep mission files for `gantry verify` under `.gitagent/missions/`.
|
|
31
40
|
|
|
32
|
-
## 6.
|
|
41
|
+
## 6.1 Planner legislation proof
|
|
42
|
+
|
|
43
|
+
- `gantry verify` requires a Planner stamp: a `[MSN-XXXX]` commit by an allowlisted author that modifies the mission file.
|
|
44
|
+
|
|
45
|
+
## 6.2 Break-glass (v0.8.0)
|
|
33
46
|
|
|
34
47
|
- Set `GXT_BYPASS_SECRET` to match `.gitagent/foreman/BYPASS.sha256` (SHA-256 hex of the team secret).
|
|
35
48
|
- Use `gantry verify --break-glass --reason "..."` only in emergencies; push `refs/notes/gxt-bypass` with the branch.
|
|
36
49
|
- Forbidden-zone runtime policy is never bypassed.
|
|
50
|
+
- A bypass MUST also append a `break_glass` ledger entry when `ledger.mode` is `local`.
|
|
51
|
+
|
|
52
|
+
## 7. Local history (no bloat)
|
|
53
|
+
|
|
54
|
+
- Bulky traces live under `.gitagent/history/` (git-ignored). Do not commit large trace dumps.
|
|
55
|
+
|
|
56
|
+
## 8. Organization policy floor (v3.3.0)
|
|
57
|
+
|
|
58
|
+
- A present `POLICY.pointer.json` is a tighten-only floor: policy MUST NOT loosen local law.
|
|
59
|
+
- `gantry policy pull` is the only network path; doctor and verify read disk/cache only.
|
|
60
|
+
|
|
61
|
+
## 9. Compliance ledger (v3.3.0)
|
|
62
|
+
|
|
63
|
+
- `refs/gxt/ledger` is an orphan signed (optional) commit chain of digest-only entries.
|
|
64
|
+
- Append uses CAS `git update-ref` with bounded retries; unsigned entries are checksums, not proofs.
|
|
65
|
+
|
|
66
|
+
## 10. Cross-repository dependencies (v3.3.0)
|
|
67
|
+
|
|
68
|
+
- Optional mission `depends_on[]` is resolved from fetched `refs/gxt/deps/<slug>`.
|
|
69
|
+
- Same-org proof uses `repository_hash` + the consumer's `GANTRY_ORG_PEPPER`.
|
|
70
|
+
- `gantry deps fetch` is the only network path.
|
|
@@ -9,12 +9,18 @@ permissions:
|
|
|
9
9
|
jobs:
|
|
10
10
|
attest_ingest:
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
HAS_ORG_EXPORT: ${{ vars.GANTRY_ORG_ID != '' && secrets.GANTRY_ORG_PEPPER != '' }}
|
|
14
|
+
HAS_PLANE_INGEST: ${{ vars.PLANE_INGEST_URL != '' && secrets.PLANE_INGEST_TOKEN != '' }}
|
|
12
15
|
steps:
|
|
13
16
|
- uses: actions/checkout@v7
|
|
14
17
|
with:
|
|
15
18
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
16
19
|
fetch-depth: 0
|
|
17
20
|
|
|
21
|
+
- name: Install ripgrep
|
|
22
|
+
run: sudo apt-get update && sudo apt-get install -y ripgrep
|
|
23
|
+
|
|
18
24
|
- uses: actions/setup-node@v7
|
|
19
25
|
with:
|
|
20
26
|
node-version: 24
|
|
@@ -28,13 +34,40 @@ jobs:
|
|
|
28
34
|
echo "GANTRY_SIGNER_PRINCIPAL_KIND=github_actor" >> "$GITHUB_ENV"
|
|
29
35
|
echo "GANTRY_BRANCH_NAME=${{ github.event.pull_request.head.ref }}" >> "$GITHUB_ENV"
|
|
30
36
|
|
|
37
|
+
- name: Resolve ingest configuration
|
|
38
|
+
run: |
|
|
39
|
+
if [ "${HAS_ORG_EXPORT}" != "true" ]; then
|
|
40
|
+
echo "Skipping envelope export: GANTRY_ORG_ID or GANTRY_ORG_PEPPER not configured"
|
|
41
|
+
fi
|
|
42
|
+
if [ "${HAS_PLANE_INGEST}" != "true" ]; then
|
|
43
|
+
echo "Skipping plane ingest: PLANE_INGEST_URL or PLANE_INGEST_TOKEN not configured"
|
|
44
|
+
fi
|
|
45
|
+
|
|
31
46
|
- name: Resolve changed mission
|
|
32
47
|
id: mission
|
|
33
48
|
run: |
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
json="$(node dist/cli/index.js mission changed --base-ref "${{ github.event.pull_request.base.sha }}" --json)" || {
|
|
50
|
+
echo "$json"
|
|
51
|
+
exit 1
|
|
52
|
+
}
|
|
53
|
+
path="$(printf '%s' "$json" | node -e '
|
|
54
|
+
let s = "";
|
|
55
|
+
process.stdin.setEncoding("utf8");
|
|
56
|
+
process.stdin.on("data", (c) => { s += c; });
|
|
57
|
+
process.stdin.on("end", () => {
|
|
58
|
+
const j = JSON.parse(s);
|
|
59
|
+
if (j.status !== "ok") {
|
|
60
|
+
console.error(j.message || "mission changed failed");
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
process.stdout.write((j.missions && j.missions[0]) || "");
|
|
64
|
+
});
|
|
65
|
+
')"
|
|
66
|
+
echo "path=$path" >> "$GITHUB_OUTPUT"
|
|
67
|
+
|
|
68
|
+
- name: Fetch cross-repo mission dependencies
|
|
69
|
+
if: steps.mission.outputs.path != ''
|
|
70
|
+
run: node dist/cli/index.js deps fetch --mission "${{ steps.mission.outputs.path }}"
|
|
38
71
|
|
|
39
72
|
- name: Verify and export envelope
|
|
40
73
|
id: verify
|
|
@@ -45,19 +78,29 @@ jobs:
|
|
|
45
78
|
GANTRY_ORG_PEPPER: ${{ secrets.GANTRY_ORG_PEPPER }}
|
|
46
79
|
GANTRY_ORG_PEPPER_VERSION: ${{ vars.GANTRY_ORG_PEPPER_VERSION || '1' }}
|
|
47
80
|
run: |
|
|
81
|
+
extra=()
|
|
82
|
+
if [ "${HAS_ORG_EXPORT}" != "true" ] || [ -z "${GANTRY_ORG_ID}" ] || [ -z "${GANTRY_ORG_PEPPER}" ]; then
|
|
83
|
+
echo "Skipping envelope export: GANTRY_ORG_ID or GANTRY_ORG_PEPPER not configured"
|
|
84
|
+
else
|
|
85
|
+
extra+=(--export envelope.json)
|
|
86
|
+
fi
|
|
48
87
|
node dist/cli/index.js verify \
|
|
49
88
|
--mission "${{ steps.mission.outputs.path }}" \
|
|
50
89
|
--audience verifier \
|
|
51
90
|
--ci \
|
|
52
91
|
--base-ref "${{ github.event.pull_request.base.sha }}" \
|
|
53
|
-
|
|
92
|
+
"${extra[@]}"
|
|
54
93
|
|
|
55
94
|
- name: Ingest to control plane
|
|
56
|
-
if: steps.mission.outputs.path != '' && hashFiles('envelope.json') != ''
|
|
95
|
+
if: steps.mission.outputs.path != '' && hashFiles('envelope.json') != '' && env.HAS_PLANE_INGEST == 'true'
|
|
57
96
|
env:
|
|
58
97
|
PLANE_INGEST_URL: ${{ vars.PLANE_INGEST_URL }}
|
|
59
98
|
PLANE_INGEST_TOKEN: ${{ secrets.PLANE_INGEST_TOKEN }}
|
|
60
99
|
run: |
|
|
100
|
+
if [ -z "${PLANE_INGEST_URL}" ] || [ -z "${PLANE_INGEST_TOKEN}" ]; then
|
|
101
|
+
echo "Skipping plane ingest: PLANE_INGEST_URL or PLANE_INGEST_TOKEN not configured"
|
|
102
|
+
exit 0
|
|
103
|
+
fi
|
|
61
104
|
code="$(curl -sS -o response.json -w '%{http_code}' \
|
|
62
105
|
-X POST "$PLANE_INGEST_URL/api/v1/attestations/ingest" \
|
|
63
106
|
-H "Authorization: Bearer $PLANE_INGEST_TOKEN" \
|
|
@@ -66,6 +109,39 @@ jobs:
|
|
|
66
109
|
--data-binary @envelope.json)"
|
|
67
110
|
cat response.json
|
|
68
111
|
[ "$code" = "202" ] || { echo "ingest failed: HTTP $code" >&2; exit 1; }
|
|
112
|
+
request_id="$(sed -n 's/.*"request_id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' response.json)"
|
|
113
|
+
[ -n "$request_id" ] || { echo "missing request_id in 202 response" >&2; exit 1; }
|
|
114
|
+
for _ in $(seq 1 120); do
|
|
115
|
+
status_body="$(curl -sS -H "Authorization: Bearer $PLANE_INGEST_TOKEN" \
|
|
116
|
+
"$PLANE_INGEST_URL/api/v1/ingest/requests/$request_id")"
|
|
117
|
+
echo "$status_body"
|
|
118
|
+
case "$status_body" in
|
|
119
|
+
*'"status":"chained"'*|*'"status": "chained"'*) exit 0 ;;
|
|
120
|
+
*'"status":"rejected"'*|*'"status": "rejected"'*)
|
|
121
|
+
echo "ingest rejected (request_id=$request_id)" >&2
|
|
122
|
+
exit 1
|
|
123
|
+
;;
|
|
124
|
+
esac
|
|
125
|
+
sleep 0.5
|
|
126
|
+
done
|
|
127
|
+
echo "ingest poll timeout (request_id=$request_id)" >&2
|
|
128
|
+
exit 1
|
|
129
|
+
|
|
130
|
+
- name: Append compliance ledger and push ref
|
|
131
|
+
if: steps.mission.outputs.path != '' && hashFiles('envelope.json') != '' && env.HAS_ORG_EXPORT == 'true'
|
|
132
|
+
continue-on-error: true
|
|
133
|
+
run: |
|
|
134
|
+
node dist/cli/index.js ledger append --from-envelope envelope.json || true
|
|
135
|
+
git push origin refs/gxt/ledger || echo "ledger push skipped (ref absent or no permission)"
|
|
136
|
+
|
|
137
|
+
- name: Push pre-commit agent events
|
|
138
|
+
if: steps.mission.outputs.path != ''
|
|
139
|
+
continue-on-error: true
|
|
140
|
+
env:
|
|
141
|
+
PLANE_INGEST_URL: ${{ vars.PLANE_INGEST_URL }}
|
|
142
|
+
PLANE_INGEST_TOKEN: ${{ secrets.PLANE_INGEST_TOKEN }}
|
|
143
|
+
run: |
|
|
144
|
+
node dist/cli/index.js events push --json || true
|
|
69
145
|
|
|
70
146
|
- name: Propagate verify outcome
|
|
71
147
|
if: steps.verify.outcome == 'failure'
|
|
@@ -162,6 +162,39 @@ jobs:
|
|
|
162
162
|
- name: Build gantry
|
|
163
163
|
run: npm run build
|
|
164
164
|
|
|
165
|
+
- name: Fetch cross-repo mission dependencies
|
|
166
|
+
env:
|
|
167
|
+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
|
168
|
+
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
|
169
|
+
run: |
|
|
170
|
+
json="$(node dist/cli/index.js mission changed --base-ref "$BASE_SHA" --head-ref "$HEAD_SHA" --json)" || {
|
|
171
|
+
echo "$json"
|
|
172
|
+
exit 1
|
|
173
|
+
}
|
|
174
|
+
mapfile -t missions < <(
|
|
175
|
+
printf '%s' "$json" | node -e '
|
|
176
|
+
let s = "";
|
|
177
|
+
process.stdin.setEncoding("utf8");
|
|
178
|
+
process.stdin.on("data", (c) => { s += c; });
|
|
179
|
+
process.stdin.on("end", () => {
|
|
180
|
+
const j = JSON.parse(s);
|
|
181
|
+
if (j.status !== "ok") process.exit(1);
|
|
182
|
+
for (const m of j.missions || []) console.log(m);
|
|
183
|
+
});
|
|
184
|
+
'
|
|
185
|
+
)
|
|
186
|
+
if [ ${#missions[@]} -eq 1 ] && [ -z "${missions[0]:-}" ]; then
|
|
187
|
+
missions=()
|
|
188
|
+
fi
|
|
189
|
+
if [ ${#missions[@]} -eq 0 ]; then
|
|
190
|
+
echo "deps fetch: no PR-changed missions"
|
|
191
|
+
exit 0
|
|
192
|
+
fi
|
|
193
|
+
for m in "${missions[@]}"; do
|
|
194
|
+
[ -n "$m" ] || continue
|
|
195
|
+
node dist/cli/index.js deps fetch --mission "$m"
|
|
196
|
+
done
|
|
197
|
+
|
|
165
198
|
- name: Full verify on PR-changed missions
|
|
166
199
|
env:
|
|
167
200
|
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
package/templates/.gitignore.gxt
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
{ "targetPath": ".gitagent/config.json", "mode": "scaffold_only", "tags": ["core"] },
|
|
15
15
|
{ "targetPath": ".gitagent/foreman/BYPASS.sha256", "mode": "scaffold_only", "tags": ["core"] },
|
|
16
16
|
{ "targetPath": ".gitagent/foreman/MANIFEST.json", "mode": "scaffold_only", "tags": ["core"] },
|
|
17
|
+
{ "targetPath": ".gitagent/foreman/POLICY.pointer.json", "mode": "scaffold_only", "tags": ["core"] },
|
|
17
18
|
{ "targetPath": ".gitagent/foreman/SUBSTRATE.version.json", "mode": "scaffold_only", "tags": ["core"] },
|
|
18
19
|
{ "targetPath": ".gitagent/missions/README.md", "mode": "scaffold_only", "tags": ["core"] },
|
|
19
20
|
{ "targetPath": ".gitagent/planner/ARCHITECTURE-ACCESS.md", "mode": "scaffold_only", "tags": ["core"] },
|
|
@@ -22,6 +23,7 @@
|
|
|
22
23
|
{ "targetPath": ".gitagent/planner/KPI-REPORT.schema.yaml", "mode": "managed_strict", "tags": ["core"] },
|
|
23
24
|
{ "targetPath": ".gitagent/planner/MISSION-ARCHITECT.md", "mode": "scaffold_only", "tags": ["core"] },
|
|
24
25
|
{ "targetPath": ".gitagent/planner/MISSION.schema.yaml", "mode": "managed_strict", "tags": ["core"] },
|
|
26
|
+
{ "targetPath": ".gitagent/planner/ORG-POLICY.schema.yaml", "mode": "managed_strict", "tags": ["core"] },
|
|
25
27
|
{ "targetPath": ".gitagent/planner/RULES.md", "mode": "scaffold_only", "tags": ["core"] },
|
|
26
28
|
{ "targetPath": ".githooks/post-checkout", "mode": "managed_strict", "executable": true, "tags": ["hooks"] },
|
|
27
29
|
{ "targetPath": ".githooks/pre-commit", "mode": "managed_strict", "executable": true, "tags": ["hooks"] },
|
|
@@ -5,6 +5,7 @@ import { handleDraftLegislation } from "../dist/cli/lib/mcp-draft-legislation.js
|
|
|
5
5
|
import { handleExecuteLegislation } from "../dist/cli/lib/mcp-execute-legislation.js";
|
|
6
6
|
import { handleCheckSignature } from "../dist/cli/lib/mcp-check-signature.js";
|
|
7
7
|
import { handlePinMission, handleRuntimeEnv } from "../dist/cli/lib/mcp-runtime.js";
|
|
8
|
+
import { handleDoctor } from "../dist/cli/lib/mcp-doctor.js";
|
|
8
9
|
|
|
9
10
|
const dest = process.env.GXT_DOGFOOD_TMP;
|
|
10
11
|
if (!dest) throw new Error("GXT_DOGFOOD_TMP unset");
|
|
@@ -50,4 +51,8 @@ if (pinned.status !== "pinned") throw new Error("pin failed");
|
|
|
50
51
|
const env = handleRuntimeEnv(executed.mission_file_path);
|
|
51
52
|
if (env.status !== "ok") throw new Error(`runtime env failed: ${JSON.stringify(env)}`);
|
|
52
53
|
|
|
54
|
+
const doctor = handleDoctor({});
|
|
55
|
+
if (doctor.status === "error") throw new Error(`doctor failed: ${JSON.stringify(doctor)}`);
|
|
56
|
+
if (!Array.isArray(doctor.lines)) throw new Error("doctor lines missing");
|
|
57
|
+
|
|
53
58
|
console.log("OK: MCP dogfood flow passed");
|
|
@@ -42,19 +42,6 @@ else
|
|
|
42
42
|
exit 2
|
|
43
43
|
fi
|
|
44
44
|
|
|
45
|
-
mapfile -t UNIQUE_MSNS < <(
|
|
46
|
-
git log --no-merges --format=%s "${BASE_SHA}..${HEAD_SHA}" \
|
|
47
|
-
| grep -Eo '\[MSN-[0-9]{4}\]' | sort -u || true
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
if [[ ${#UNIQUE_MSNS[@]} -gt 1 ]]; then
|
|
51
|
-
echo "verify-pr-missions FAILED: mission contamination detected" >&2
|
|
52
|
-
echo " This PR contains commits from multiple missions:" >&2
|
|
53
|
-
printf ' %s\n' "${UNIQUE_MSNS[@]}" >&2
|
|
54
|
-
echo " OpenGantry requires strict blast-radius isolation. Rebase this branch onto the integration branch (e.g. origin/main)." >&2
|
|
55
|
-
exit 1
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
45
|
if [[ -f dist/cli/index.js ]]; then
|
|
59
46
|
GANTRY=(node dist/cli/index.js)
|
|
60
47
|
elif command -v gantry >/dev/null 2>&1; then
|
|
@@ -64,14 +51,6 @@ else
|
|
|
64
51
|
exit 1
|
|
65
52
|
fi
|
|
66
53
|
|
|
67
|
-
is_verifiable_mission() {
|
|
68
|
-
local p="$1"
|
|
69
|
-
[[ "$p" == "${MISSIONS_PREFIX}"* ]] || return 1
|
|
70
|
-
[[ "$p" =~ \.(ya?ml|md)$ ]] || return 1
|
|
71
|
-
[[ "$(basename "$p")" == "README.md" ]] && return 1
|
|
72
|
-
return 0
|
|
73
|
-
}
|
|
74
|
-
|
|
75
54
|
is_msn_enforced_path() {
|
|
76
55
|
local p="$1"
|
|
77
56
|
local prefix
|
|
@@ -99,14 +78,28 @@ for f in "${DIFF_FILES[@]}"; do
|
|
|
99
78
|
fi
|
|
100
79
|
done
|
|
101
80
|
|
|
81
|
+
changed_json="$("${GANTRY[@]}" mission changed --base-ref "$BASE_SHA" --head-ref "$HEAD_SHA" --json)" || {
|
|
82
|
+
printf '%s\n' "$changed_json" >&2
|
|
83
|
+
exit 1
|
|
84
|
+
}
|
|
102
85
|
mapfile -t CHANGED_MISSIONS < <(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
86
|
+
printf '%s' "$changed_json" | node -e '
|
|
87
|
+
let s = "";
|
|
88
|
+
process.stdin.setEncoding("utf8");
|
|
89
|
+
process.stdin.on("data", (c) => { s += c; });
|
|
90
|
+
process.stdin.on("end", () => {
|
|
91
|
+
const j = JSON.parse(s);
|
|
92
|
+
if (j.status !== "ok") {
|
|
93
|
+
console.error(j.message || "mission changed failed");
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
for (const m of j.missions || []) console.log(m);
|
|
97
|
+
});
|
|
98
|
+
'
|
|
109
99
|
)
|
|
100
|
+
if [[ ${#CHANGED_MISSIONS[@]} -eq 1 && -z "${CHANGED_MISSIONS[0]:-}" ]]; then
|
|
101
|
+
CHANGED_MISSIONS=()
|
|
102
|
+
fi
|
|
110
103
|
|
|
111
104
|
if [[ "$needs_mission" -eq 1 && ${#CHANGED_MISSIONS[@]} -eq 0 ]]; then
|
|
112
105
|
if eval_out="$(node "$GXT_MANIFEST_LIB" eval-range "$ROOT" "$BASE_SHA" "$HEAD_SHA" 2>&1)"; then
|
|
@@ -125,20 +118,6 @@ if [[ ${#CHANGED_MISSIONS[@]} -eq 0 ]]; then
|
|
|
125
118
|
exit 0
|
|
126
119
|
fi
|
|
127
120
|
|
|
128
|
-
if [[ ${#UNIQUE_MSNS[@]} -eq 1 ]]; then
|
|
129
|
-
purity_msn="${UNIQUE_MSNS[0]}"
|
|
130
|
-
purity_msn="${purity_msn#[}"
|
|
131
|
-
purity_msn="${purity_msn%]}"
|
|
132
|
-
for mission in "${CHANGED_MISSIONS[@]}"; do
|
|
133
|
-
base="$(basename "$mission")"
|
|
134
|
-
if [[ "$base" != "${purity_msn}."* ]]; then
|
|
135
|
-
echo "verify-pr-missions FAILED: changed mission file does not match commit MSN tag" >&2
|
|
136
|
-
echo " commits: [${purity_msn}] mission file: ${mission}" >&2
|
|
137
|
-
exit 1
|
|
138
|
-
fi
|
|
139
|
-
done
|
|
140
|
-
fi
|
|
141
|
-
|
|
142
121
|
for mission in "${CHANGED_MISSIONS[@]}"; do
|
|
143
122
|
echo "verify-pr-missions: gantry verify --mission ${mission}" >&2
|
|
144
123
|
"${GANTRY[@]}" verify --mission "$mission" --audience verifier || exit 1
|