@jeger-ai/opengantry 3.2.6 → 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 +7 -0
- 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/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/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 +2 -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/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 +13 -0
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +13 -0
- package/dist/cli/lib/constants.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/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 +8 -0
- package/dist/cli/lib/gate-log-writer.d.ts.map +1 -1
- package/dist/cli/lib/gate-log-writer.js +35 -0
- package/dist/cli/lib/gate-log-writer.js.map +1 -1
- 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.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 +12 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +12 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- 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/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/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 +1 -1
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +32 -17
- 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-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 +22 -5
- package/dist/cli/lib/verify-failure.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding-gate-projector.d.ts +1 -1
- package/dist/cli/lib/verify-finding-gate-projector.d.ts.map +1 -1
- package/dist/cli/lib/verify-finding-gate-projector.js +6 -28
- package/dist/cli/lib/verify-finding-gate-projector.js.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 +14 -3
- package/dist/cli/lib/verify-hints.js.map +1 -1
- package/dist/cli/lib/verify-options.d.ts +5 -14
- 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 +1 -1
- package/dist/cli/lib/verify-payload.d.ts.map +1 -1
- package/dist/cli/lib/verify-payload.js +48 -27
- package/dist/cli/lib/verify-payload.js.map +1 -1
- package/dist/cli/lib/verify-phase-clock.d.ts +3 -2
- package/dist/cli/lib/verify-phase-clock.d.ts.map +1 -1
- package/dist/cli/lib/verify-phase-clock.js +16 -5
- package/dist/cli/lib/verify-phase-clock.js.map +1 -1
- package/dist/cli/lib/verify-phase-steps.d.ts +14 -7
- package/dist/cli/lib/verify-phase-steps.d.ts.map +1 -1
- package/dist/cli/lib/verify-phase-steps.js +33 -24
- package/dist/cli/lib/verify-phase-steps.js.map +1 -1
- package/dist/cli/lib/verify-presenters.d.ts +1 -0
- package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
- package/dist/cli/lib/verify-presenters.js +15 -4
- package/dist/cli/lib/verify-presenters.js.map +1 -1
- package/dist/cli/lib/verify-remediation-pipeline.d.ts +2 -0
- package/dist/cli/lib/verify-remediation-pipeline.d.ts.map +1 -1
- package/dist/cli/lib/verify-remediation-pipeline.js +5 -2
- package/dist/cli/lib/verify-remediation-pipeline.js.map +1 -1
- 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 +27 -13
- 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 +1 -1
- package/dist/cli/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +62 -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 +41 -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 +56 -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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-findings.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/adapter-findings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ESLint adapter (ADR-0041): gate_command MUST run `eslint --format json`.
|
|
3
|
+
* Maps `results[].messages[]` to envelope v3 findings. Selected only via the
|
|
4
|
+
* mission `gate_adapter: eslint` field, never inferred from the command text.
|
|
5
|
+
*/
|
|
6
|
+
import type { VerifyFinding } from "../verify-finding.js";
|
|
7
|
+
import { type AdapterParseResult, type GateRunSnapshot } from "./adapter-findings.js";
|
|
8
|
+
import type { GateExecContext } from "./gate-adapter-types.js";
|
|
9
|
+
export type EslintParseResult = AdapterParseResult;
|
|
10
|
+
/** Pure parser for `eslint --format json` stdout. */
|
|
11
|
+
export declare function parseEslintJsonOutput(stdout: string): EslintParseResult;
|
|
12
|
+
export declare function eslintFindingsFromRun(ctx: GateExecContext, run: GateRunSnapshot): VerifyFinding[];
|
|
13
|
+
export declare const eslintJsonAdapter: import("./gate-adapter-types.js").GateExecAdapter;
|
|
14
|
+
//# sourceMappingURL=eslint-json-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-json-adapter.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/eslint-json-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAmB/D,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAsCnD,qDAAqD;AACrD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAgBvE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa,EAAE,CAEjG;AAED,eAAO,MAAM,iBAAiB,mDAAkD,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { findingsFromRun, } from "./adapter-findings.js";
|
|
2
|
+
import { parsingAdapter } from "./parsing-adapter.js";
|
|
3
|
+
function isRecord(v) {
|
|
4
|
+
return typeof v === "object" && v !== null;
|
|
5
|
+
}
|
|
6
|
+
function tryParseJsonArray(text) {
|
|
7
|
+
const trimmed = text.trim();
|
|
8
|
+
const attempts = [trimmed];
|
|
9
|
+
const start = trimmed.indexOf("[");
|
|
10
|
+
const end = trimmed.lastIndexOf("]");
|
|
11
|
+
if (start > 0 && end > start)
|
|
12
|
+
attempts.push(trimmed.slice(start, end + 1));
|
|
13
|
+
for (const candidate of attempts) {
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(candidate);
|
|
16
|
+
if (Array.isArray(parsed))
|
|
17
|
+
return parsed;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// try next candidate
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function messageToDiagnostic(filePath, m) {
|
|
26
|
+
const fatal = m.fatal === true;
|
|
27
|
+
const ruleId = typeof m.ruleId === "string" && m.ruleId.length > 0 ? m.ruleId : fatal ? "eslint/parse" : "eslint";
|
|
28
|
+
return {
|
|
29
|
+
file: filePath,
|
|
30
|
+
line: typeof m.line === "number" && m.line > 0 ? m.line : 0,
|
|
31
|
+
column: typeof m.column === "number" && m.column > 0 ? m.column : 0,
|
|
32
|
+
...(typeof m.endLine === "number" ? { endLine: m.endLine } : {}),
|
|
33
|
+
...(typeof m.endColumn === "number" ? { endColumn: m.endColumn } : {}),
|
|
34
|
+
severity: m.severity === 2 || fatal ? "error" : "warning",
|
|
35
|
+
ruleId,
|
|
36
|
+
message: typeof m.message === "string" && m.message.length > 0 ? m.message : `${ruleId} violation`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Pure parser for `eslint --format json` stdout. */
|
|
40
|
+
export function parseEslintJsonOutput(stdout) {
|
|
41
|
+
const results = tryParseJsonArray(stdout);
|
|
42
|
+
if (results === null) {
|
|
43
|
+
return { ok: false, reason: "stdout is not an ESLint JSON results array" };
|
|
44
|
+
}
|
|
45
|
+
const diagnostics = [];
|
|
46
|
+
for (const entry of results) {
|
|
47
|
+
if (!isRecord(entry))
|
|
48
|
+
continue;
|
|
49
|
+
const result = entry;
|
|
50
|
+
const filePath = typeof result.filePath === "string" ? result.filePath : "";
|
|
51
|
+
for (const m of result.messages ?? []) {
|
|
52
|
+
if (!isRecord(m))
|
|
53
|
+
continue;
|
|
54
|
+
diagnostics.push(messageToDiagnostic(filePath, m));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { ok: true, diagnostics };
|
|
58
|
+
}
|
|
59
|
+
export function eslintFindingsFromRun(ctx, run) {
|
|
60
|
+
return findingsFromRun("eslint", ctx, run, parseEslintJsonOutput);
|
|
61
|
+
}
|
|
62
|
+
export const eslintJsonAdapter = parsingAdapter("eslint", parseEslintJsonOutput);
|
|
63
|
+
//# sourceMappingURL=eslint-json-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-json-adapter.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/eslint-json-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Explicit gate output parser (ADR-0041). Never inferred from gate_command text. */
|
|
2
|
+
export declare const GATE_ADAPTER_IDS: readonly ["generic", "eslint", "tsc"];
|
|
3
|
+
export type GateAdapterId = (typeof GATE_ADAPTER_IDS)[number];
|
|
4
|
+
/** Adapters that parse structured compiler/linter output (not the generic spawn). */
|
|
5
|
+
export declare const TYPED_GATE_ADAPTER_IDS: readonly ["tsc", "eslint"];
|
|
6
|
+
export type TypedGateAdapterId = (typeof TYPED_GATE_ADAPTER_IDS)[number];
|
|
7
|
+
export declare const DEFAULT_GATE_ADAPTER: GateAdapterId;
|
|
8
|
+
export declare function isGateAdapterId(value: unknown): value is GateAdapterId;
|
|
9
|
+
export declare function isTypedGateAdapterId(value: unknown): value is TypedGateAdapterId;
|
|
10
|
+
//# sourceMappingURL=gate-adapter-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-adapter-id.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/gate-adapter-id.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,uCAAwC,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,4BAA6B,CAAC;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,eAAO,MAAM,oBAAoB,EAAE,aAAyB,CAAC;AAE7D,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Explicit gate output parser (ADR-0041). Never inferred from gate_command text. */
|
|
2
|
+
export const GATE_ADAPTER_IDS = ["generic", "eslint", "tsc"];
|
|
3
|
+
/** Adapters that parse structured compiler/linter output (not the generic spawn). */
|
|
4
|
+
export const TYPED_GATE_ADAPTER_IDS = ["tsc", "eslint"];
|
|
5
|
+
export const DEFAULT_GATE_ADAPTER = "generic";
|
|
6
|
+
export function isGateAdapterId(value) {
|
|
7
|
+
return typeof value === "string" && GATE_ADAPTER_IDS.includes(value);
|
|
8
|
+
}
|
|
9
|
+
export function isTypedGateAdapterId(value) {
|
|
10
|
+
return typeof value === "string" && TYPED_GATE_ADAPTER_IDS.includes(value);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=gate-adapter-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-adapter-id.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/gate-adapter-id.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGtE,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAC;AAGjE,MAAM,CAAC,MAAM,oBAAoB,GAAkB,SAAS,CAAC;AAE7D,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,sBAA4C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VerifyFinding } from "../verify-finding.js";
|
|
2
|
+
import type { GateAdapterId } from "./gate-adapter-id.js";
|
|
3
|
+
export interface GateExecContext {
|
|
4
|
+
cwd: string;
|
|
5
|
+
/** Repository root for repo-relative `offending_file`; defaults to `cwd`. */
|
|
6
|
+
repoRoot?: string;
|
|
7
|
+
/** Absolute path for streaming gate subprocess I/O. */
|
|
8
|
+
gateLogPath: string;
|
|
9
|
+
successSubstring: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface GateExecutionResult {
|
|
12
|
+
exitCode: number | null;
|
|
13
|
+
adapter_id: GateAdapterId | string;
|
|
14
|
+
findings: VerifyFinding[];
|
|
15
|
+
}
|
|
16
|
+
export type GateExecAdapter = (command: string, ctx: GateExecContext) => Promise<GateExecutionResult>;
|
|
17
|
+
//# sourceMappingURL=gate-adapter-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-adapter-types.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/gate-adapter-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,aAAa,GAAG,MAAM,CAAC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,KACjB,OAAO,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-adapter-types.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/gate-adapter-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-spawn-adapter.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/generic-spawn-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,EAAE,eAOjC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { findingsFromRun } from "./adapter-findings.js";
|
|
2
|
+
import { spawnGateStreaming } from "./spawn-stream-core.js";
|
|
3
|
+
/** Exit code + optional success substring; one coarse finding on failure. */
|
|
4
|
+
export const genericSpawnAdapter = async (command, ctx) => {
|
|
5
|
+
const run = await spawnGateStreaming(command, ctx);
|
|
6
|
+
return {
|
|
7
|
+
exitCode: run.exitCode,
|
|
8
|
+
adapter_id: "generic",
|
|
9
|
+
findings: findingsFromRun("generic", ctx, run),
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=generic-spawn-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-spawn-adapter.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/generic-spawn-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAoB,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;IACzE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type AdapterParseResult } from "./adapter-findings.js";
|
|
2
|
+
import type { TypedGateAdapterId } from "./gate-adapter-id.js";
|
|
3
|
+
import type { GateExecAdapter } from "./gate-adapter-types.js";
|
|
4
|
+
export declare function parsingAdapter(toolId: TypedGateAdapterId, parse: (stdout: string) => AdapterParseResult): GateExecAdapter;
|
|
5
|
+
//# sourceMappingURL=parsing-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing-adapter.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/parsing-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,wBAAgB,cAAc,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAC5C,eAAe,CASjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { findingsFromRun } from "./adapter-findings.js";
|
|
2
|
+
import { spawnGateStreaming } from "./spawn-stream-core.js";
|
|
3
|
+
export function parsingAdapter(toolId, parse) {
|
|
4
|
+
return async (command, ctx) => {
|
|
5
|
+
const run = await spawnGateStreaming(command, ctx, { captureStdout: true });
|
|
6
|
+
return {
|
|
7
|
+
exitCode: run.exitCode,
|
|
8
|
+
adapter_id: toolId,
|
|
9
|
+
findings: findingsFromRun(toolId, ctx, run, parse),
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parsing-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing-adapter.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/parsing-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA2B,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,UAAU,cAAc,CAC5B,MAA0B,EAC1B,KAA6C;IAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;SACnD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GateAdapterId } from "./gate-adapter-id.js";
|
|
2
|
+
import type { GateExecAdapter } from "./gate-adapter-types.js";
|
|
3
|
+
/** Explicit routing from mission `gate_adapter` (ADR-0041). Exhaustive by construction. */
|
|
4
|
+
export declare const GATE_EXEC_ADAPTERS: Record<GateAdapterId, GateExecAdapter>;
|
|
5
|
+
export declare function resolveGateExecAdapter(id: GateAdapterId | undefined): GateExecAdapter;
|
|
6
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,CAIrE,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,aAAa,GAAG,SAAS,GAAG,eAAe,CAErF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { eslintJsonAdapter } from "./eslint-json-adapter.js";
|
|
2
|
+
import { genericSpawnAdapter } from "./generic-spawn-adapter.js";
|
|
3
|
+
import { tscAdapter } from "./tsc-adapter.js";
|
|
4
|
+
/** Explicit routing from mission `gate_adapter` (ADR-0041). Exhaustive by construction. */
|
|
5
|
+
export const GATE_EXEC_ADAPTERS = {
|
|
6
|
+
generic: genericSpawnAdapter,
|
|
7
|
+
eslint: eslintJsonAdapter,
|
|
8
|
+
tsc: tscAdapter,
|
|
9
|
+
};
|
|
10
|
+
export function resolveGateExecAdapter(id) {
|
|
11
|
+
return GATE_EXEC_ADAPTERS[id ?? "generic"];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAA2C;IACxE,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,iBAAiB;IACzB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,EAA6B;IAClE,OAAO,kBAAkB,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared subprocess core for gate adapters: spawn via shell, stream stdout+stderr
|
|
3
|
+
* to `gateLogPath`, and optionally capture stdout in memory (bounded by
|
|
4
|
+
* MAX_IO_BUFFER_BYTES, truncation flagged). Success-substring is checked after
|
|
5
|
+
* close against the written log (fixes multibyte chunk-split false negatives).
|
|
6
|
+
*
|
|
7
|
+
* Adapter-layer module: imports only gate.ts, gate-log-writer, and sibling types.
|
|
8
|
+
*/
|
|
9
|
+
import { spawn, type ChildProcess } from "node:child_process";
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import type { GateExecContext } from "./gate-adapter-types.js";
|
|
12
|
+
export interface SpawnStreamOptions {
|
|
13
|
+
/** Keep a bounded copy of stdout in memory for structured parsing. */
|
|
14
|
+
captureStdout?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface SpawnStreamResult {
|
|
17
|
+
exitCode: number | null;
|
|
18
|
+
successSubstringMatched: boolean;
|
|
19
|
+
/** Captured stdout (UTF-8); empty when capture disabled. */
|
|
20
|
+
stdout: string;
|
|
21
|
+
/** True when stdout byte count reached MAX_IO_BUFFER_BYTES and capture stopped. */
|
|
22
|
+
stdoutTruncated: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function spawnOrDestroyStream(spawnFn: typeof spawn, writeStream: fs.WriteStream, command: string, options: Parameters<typeof spawn>[2]): ChildProcess;
|
|
25
|
+
export declare class BoundedStdoutCapture {
|
|
26
|
+
private readonly enabled;
|
|
27
|
+
private readonly limit;
|
|
28
|
+
private readonly chunks;
|
|
29
|
+
private bytes;
|
|
30
|
+
truncated: boolean;
|
|
31
|
+
constructor(enabled: boolean, limit: number);
|
|
32
|
+
push(chunk: Buffer): void;
|
|
33
|
+
text(): string;
|
|
34
|
+
}
|
|
35
|
+
export declare function spawnGateStreaming(command: string, ctx: GateExecContext, options?: SpawnStreamOptions): Promise<SpawnStreamResult>;
|
|
36
|
+
//# sourceMappingURL=spawn-stream-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-stream-core.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/spawn-stream-core.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,eAAe,EAAE,OAAO,CAAC;CAC1B;AAkBD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,KAAK,EACrB,WAAW,EAAE,EAAE,CAAC,WAAW,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GACnC,YAAY,CAOd;AAED,qBAAa,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,KAAK,CAAK;IAClB,SAAS,UAAS;gBAGC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM;IAGhC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAazB,IAAI,IAAI,MAAM;CAGf;AAMD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAqC5B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared subprocess core for gate adapters: spawn via shell, stream stdout+stderr
|
|
3
|
+
* to `gateLogPath`, and optionally capture stdout in memory (bounded by
|
|
4
|
+
* MAX_IO_BUFFER_BYTES, truncation flagged). Success-substring is checked after
|
|
5
|
+
* close against the written log (fixes multibyte chunk-split false negatives).
|
|
6
|
+
*
|
|
7
|
+
* Adapter-layer module: imports only gate.ts, gate-log-writer, and sibling types.
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import { MAX_IO_BUFFER_BYTES, shellForPlatform } from "../gate.js";
|
|
12
|
+
import { readGateLogAbs } from "../gate-log-writer.js";
|
|
13
|
+
function waitForChildClose(child) {
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
child.once("error", reject);
|
|
16
|
+
child.once("close", (code, signal) => resolve({ exitCode: code, signal }));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function endWriteStream(stream) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
stream.once("error", reject);
|
|
22
|
+
stream.end(() => resolve());
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function spawnOrDestroyStream(spawnFn, writeStream, command, options) {
|
|
26
|
+
try {
|
|
27
|
+
return spawnFn(command, [], options);
|
|
28
|
+
}
|
|
29
|
+
catch (spawnErr) {
|
|
30
|
+
writeStream.destroy();
|
|
31
|
+
throw spawnErr;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class BoundedStdoutCapture {
|
|
35
|
+
enabled;
|
|
36
|
+
limit;
|
|
37
|
+
chunks = [];
|
|
38
|
+
bytes = 0;
|
|
39
|
+
truncated = false;
|
|
40
|
+
constructor(enabled, limit) {
|
|
41
|
+
this.enabled = enabled;
|
|
42
|
+
this.limit = limit;
|
|
43
|
+
}
|
|
44
|
+
push(chunk) {
|
|
45
|
+
if (!this.enabled || this.truncated)
|
|
46
|
+
return;
|
|
47
|
+
const remaining = this.limit - this.bytes;
|
|
48
|
+
if (chunk.length >= remaining) {
|
|
49
|
+
this.chunks.push(chunk.subarray(0, remaining));
|
|
50
|
+
this.bytes = this.limit;
|
|
51
|
+
this.truncated = true;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.chunks.push(chunk);
|
|
55
|
+
this.bytes += chunk.length;
|
|
56
|
+
}
|
|
57
|
+
text() {
|
|
58
|
+
return this.enabled ? Buffer.concat(this.chunks).toString("utf8") : "";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function toBuffer(chunk) {
|
|
62
|
+
return Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
|
|
63
|
+
}
|
|
64
|
+
export async function spawnGateStreaming(command, ctx, options = {}) {
|
|
65
|
+
const capture = new BoundedStdoutCapture(options.captureStdout === true, MAX_IO_BUFFER_BYTES);
|
|
66
|
+
const stream = fs.createWriteStream(ctx.gateLogPath, { flags: "w" });
|
|
67
|
+
try {
|
|
68
|
+
const child = spawnOrDestroyStream(spawn, stream, command, {
|
|
69
|
+
cwd: ctx.cwd,
|
|
70
|
+
shell: shellForPlatform(),
|
|
71
|
+
env: process.env,
|
|
72
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
73
|
+
});
|
|
74
|
+
const forward = (chunk) => {
|
|
75
|
+
stream.write(toBuffer(chunk));
|
|
76
|
+
};
|
|
77
|
+
child.stdout?.on("data", (chunk) => {
|
|
78
|
+
const buf = toBuffer(chunk);
|
|
79
|
+
capture.push(buf);
|
|
80
|
+
forward(buf);
|
|
81
|
+
});
|
|
82
|
+
child.stderr?.on("data", forward);
|
|
83
|
+
const { exitCode } = await waitForChildClose(child);
|
|
84
|
+
await endWriteStream(stream);
|
|
85
|
+
const needle = ctx.successSubstring ?? "";
|
|
86
|
+
const logText = readGateLogAbs(ctx.gateLogPath);
|
|
87
|
+
return {
|
|
88
|
+
exitCode,
|
|
89
|
+
successSubstringMatched: needle.length === 0 || logText.includes(needle),
|
|
90
|
+
stdout: capture.text(),
|
|
91
|
+
stdoutTruncated: capture.truncated,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
stream.destroy();
|
|
96
|
+
throw e;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=spawn-stream-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-stream-core.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/spawn-stream-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript compiler adapter (ADR-0041): parses plain `tsc` diagnostics
|
|
3
|
+
* path(line,col): error TS2322: message
|
|
4
|
+
* into envelope v3 findings. Line-oriented and noise tolerant: paths may
|
|
5
|
+
* contain parentheses (the `(line,col): error TSnnnn:` tail is the anchor),
|
|
6
|
+
* indented lines extend the active diagnostic, anything else is skipped.
|
|
7
|
+
* Selected only via `gate_adapter: tsc`.
|
|
8
|
+
*/
|
|
9
|
+
import type { VerifyFinding } from "../verify-finding.js";
|
|
10
|
+
import { type GateRunSnapshot, type ParsedDiagnostic } from "./adapter-findings.js";
|
|
11
|
+
import type { GateExecContext } from "./gate-adapter-types.js";
|
|
12
|
+
/** Pure parser for tsc stdout; never throws on noise. */
|
|
13
|
+
export declare function parseTscOutput(stdout: string): ParsedDiagnostic[];
|
|
14
|
+
export declare function tscFindingsFromRun(ctx: GateExecContext, run: GateRunSnapshot): VerifyFinding[];
|
|
15
|
+
export declare const tscAdapter: import("./gate-adapter-types.js").GateExecAdapter;
|
|
16
|
+
//# sourceMappingURL=tsc-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsc-adapter.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/tsc-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAyB/D,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAiBjE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa,EAAE,CAE9F;AAED,eAAO,MAAM,UAAU,mDAGpB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { findingsFromRun, } from "./adapter-findings.js";
|
|
2
|
+
import { parsingAdapter } from "./parsing-adapter.js";
|
|
3
|
+
/** `path(line,col): error TS1234: message` — greedy path, right-anchored tail. */
|
|
4
|
+
const PAREN_DIAGNOSTIC = /^(.*)\((\d+),(\d+)\): (error|warning) (TS\d+): (.*)$/;
|
|
5
|
+
/** `path:line:col - error TS1234: message` (pretty output with colors stripped). */
|
|
6
|
+
const COLON_DIAGNOSTIC = /^(.*?):(\d+):(\d+) - (error|warning) (TS\d+): (.*)$/;
|
|
7
|
+
// eslint-disable-next-line no-control-regex
|
|
8
|
+
const ANSI_ESCAPES = /\u001b\[[0-9;]*m/g;
|
|
9
|
+
function matchDiagnosticLine(line) {
|
|
10
|
+
const m = PAREN_DIAGNOSTIC.exec(line) ?? COLON_DIAGNOSTIC.exec(line);
|
|
11
|
+
if (m === null)
|
|
12
|
+
return null;
|
|
13
|
+
const [, file, lineNo, col, level, code, message] = m;
|
|
14
|
+
if (file === undefined || file.trim().length === 0)
|
|
15
|
+
return null;
|
|
16
|
+
return {
|
|
17
|
+
file: file.trim(),
|
|
18
|
+
line: Number.parseInt(lineNo ?? "0", 10),
|
|
19
|
+
column: Number.parseInt(col ?? "0", 10),
|
|
20
|
+
severity: level === "warning" ? "warning" : "error",
|
|
21
|
+
ruleId: code ?? "TS0000",
|
|
22
|
+
message: (message ?? "").trim(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Pure parser for tsc stdout; never throws on noise. */
|
|
26
|
+
export function parseTscOutput(stdout) {
|
|
27
|
+
const diagnostics = [];
|
|
28
|
+
let active = null;
|
|
29
|
+
for (const raw of stdout.replace(ANSI_ESCAPES, "").split(/\r?\n/)) {
|
|
30
|
+
const diagnostic = matchDiagnosticLine(raw);
|
|
31
|
+
if (diagnostic !== null) {
|
|
32
|
+
diagnostics.push(diagnostic);
|
|
33
|
+
active = diagnostic;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (active !== null && /^\s+\S/.test(raw)) {
|
|
37
|
+
active.message = `${active.message} ${raw.trim()}`;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
active = null;
|
|
41
|
+
}
|
|
42
|
+
return diagnostics;
|
|
43
|
+
}
|
|
44
|
+
export function tscFindingsFromRun(ctx, run) {
|
|
45
|
+
return findingsFromRun("tsc", ctx, run, (stdout) => ({ ok: true, diagnostics: parseTscOutput(stdout) }));
|
|
46
|
+
}
|
|
47
|
+
export const tscAdapter = parsingAdapter("tsc", (stdout) => ({
|
|
48
|
+
ok: true,
|
|
49
|
+
diagnostics: parseTscOutput(stdout),
|
|
50
|
+
}));
|
|
51
|
+
//# sourceMappingURL=tsc-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsc-adapter.js","sourceRoot":"","sources":["../../../../src/cli/lib/gate-adapters/tsc-adapter.ts"],"names":[],"mappings":"AASA,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,sDAAsD,CAAC;AAChF,oFAAoF;AACpF,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AAC/E,4CAA4C;AAC5C,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC;QACvC,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACnD,MAAM,EAAE,IAAI,IAAI,QAAQ;QACxB,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,WAAW,GAAuB,EAAE,CAAC;IAC3C,IAAI,MAAM,GAA4B,IAAI,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,MAAM,GAAG,UAAU,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,SAAS;QACX,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,GAAoB;IAC3E,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3D,EAAE,EAAE,IAAI;IACR,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC;CACpC,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
export declare const REL_GATE_LOGS_DIR: ".gitagent/tmp/gate-logs";
|
|
2
2
|
export declare function gateLogRelPath(msnId: string): string;
|
|
3
|
+
export declare function ensureGateLogPath(root: string, msnId: string): {
|
|
4
|
+
abs: string;
|
|
5
|
+
rel: string;
|
|
6
|
+
};
|
|
7
|
+
/** Read an absolute gate log; tail-capped at MAX_IO_BUFFER_BYTES to avoid V8 OOM. */
|
|
8
|
+
export declare function readGateLogAbs(absPath: string): string;
|
|
9
|
+
/** Read gate log from disk; tail-capped at MAX_IO_BUFFER_BYTES to avoid V8 OOM. */
|
|
10
|
+
export declare function readGateLogText(root: string, gateLogRel: string | undefined): string;
|
|
3
11
|
/** Write combined gate stdout/stderr; returns repo-relative POSIX path. */
|
|
4
12
|
export declare function writeGateLog(root: string, msnId: string | undefined, stdout: string | undefined, stderr: string | undefined): string | undefined;
|
|
5
13
|
//# sourceMappingURL=gate-log-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-log-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gate-log-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gate-log-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gate-log-writer.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,EAAG,yBAAkC,CAAC;AAEpE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAK3F;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBtD;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGpF;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,GAAG,SAAS,CAkBpB"}
|
|
@@ -1,10 +1,45 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { MAX_IO_BUFFER_BYTES } from "./gate.js";
|
|
3
4
|
export const REL_GATE_LOGS_DIR = ".gitagent/tmp/gate-logs";
|
|
4
5
|
export function gateLogRelPath(msnId) {
|
|
5
6
|
const safe = msnId.replace(/[^A-Za-z0-9-]/g, "_");
|
|
6
7
|
return `${REL_GATE_LOGS_DIR}/${safe}.last.log`;
|
|
7
8
|
}
|
|
9
|
+
export function ensureGateLogPath(root, msnId) {
|
|
10
|
+
const rel = gateLogRelPath(msnId);
|
|
11
|
+
const absDir = path.join(root, REL_GATE_LOGS_DIR);
|
|
12
|
+
fs.mkdirSync(absDir, { recursive: true });
|
|
13
|
+
return { abs: path.join(root, rel), rel: rel.replace(/\\/g, "/") };
|
|
14
|
+
}
|
|
15
|
+
/** Read an absolute gate log; tail-capped at MAX_IO_BUFFER_BYTES to avoid V8 OOM. */
|
|
16
|
+
export function readGateLogAbs(absPath) {
|
|
17
|
+
try {
|
|
18
|
+
const stat = fs.statSync(absPath);
|
|
19
|
+
if (stat.size <= MAX_IO_BUFFER_BYTES) {
|
|
20
|
+
return fs.readFileSync(absPath, "utf8");
|
|
21
|
+
}
|
|
22
|
+
const fd = fs.openSync(absPath, "r");
|
|
23
|
+
try {
|
|
24
|
+
const buffer = Buffer.alloc(MAX_IO_BUFFER_BYTES);
|
|
25
|
+
const start = stat.size - MAX_IO_BUFFER_BYTES;
|
|
26
|
+
const bytesRead = fs.readSync(fd, buffer, 0, MAX_IO_BUFFER_BYTES, start);
|
|
27
|
+
return buffer.subarray(0, bytesRead).toString("utf8");
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
fs.closeSync(fd);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return "";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Read gate log from disk; tail-capped at MAX_IO_BUFFER_BYTES to avoid V8 OOM. */
|
|
38
|
+
export function readGateLogText(root, gateLogRel) {
|
|
39
|
+
if (!gateLogRel)
|
|
40
|
+
return "";
|
|
41
|
+
return readGateLogAbs(path.join(root, gateLogRel));
|
|
42
|
+
}
|
|
8
43
|
/** Write combined gate stdout/stderr; returns repo-relative POSIX path. */
|
|
9
44
|
export function writeGateLog(root, msnId, stdout, stderr) {
|
|
10
45
|
if (!msnId?.trim())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-log-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/gate-log-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"gate-log-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/gate-log-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/lib/gate.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GateSpec } from "./types.js";
|
|
2
|
+
export declare const MAX_IO_BUFFER_BYTES: number;
|
|
2
3
|
export interface GateWorkDirOptions {
|
|
3
4
|
cwd?: string;
|
|
4
5
|
}
|
|
@@ -10,6 +11,7 @@ export interface GateRunResult {
|
|
|
10
11
|
stderr: string;
|
|
11
12
|
combined: string;
|
|
12
13
|
}
|
|
14
|
+
export declare function shellForPlatform(): boolean | string;
|
|
13
15
|
export declare function runGate(workingDirectory: string, spec: GateSpec): GateRunResult;
|
|
14
16
|
export declare function gatePassed(result: GateRunResult, successSubstring: string | null): boolean;
|
|
15
17
|
//# sourceMappingURL=gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/gate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAEzF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAgB/E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAI1F"}
|
package/dist/cli/lib/gate.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
const MAX_IO_BUFFER_BYTES = 20 * 1024 * 1024;
|
|
3
|
+
export const MAX_IO_BUFFER_BYTES = 20 * 1024 * 1024;
|
|
4
4
|
/** Resolve working directory for gate/scan subprocess execution. */
|
|
5
5
|
export function resolveGateWorkDir(root, options = {}) {
|
|
6
6
|
return options.cwd ? path.resolve(root, options.cwd) : root;
|
|
7
7
|
}
|
|
8
|
-
function shellForPlatform() {
|
|
8
|
+
export function shellForPlatform() {
|
|
9
9
|
return process.platform === "win32" ? true : "/bin/sh";
|
|
10
10
|
}
|
|
11
11
|
export function runGate(workingDirectory, spec) {
|
package/dist/cli/lib/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../../src/cli/lib/gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../../src/cli/lib/gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAMpD,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,UAA8B,EAAE;IAC/E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AASD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,gBAAwB,EAAE,IAAc;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QACnC,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,gBAAgB,EAAE;QACzB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,mBAAmB;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,MAAM;QACN,MAAM;QACN,QAAQ,EAAE,GAAG,MAAM,KAAK,MAAM,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,gBAA+B;IAC/E,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC"}
|