@jeger-ai/opengantry 2.0.0 → 2.1.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 +20 -11
- package/dist/cli/commands/context-request.d.ts +11 -0
- package/dist/cli/commands/context-request.d.ts.map +1 -0
- package/dist/cli/commands/context-request.js +74 -0
- package/dist/cli/commands/context-request.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +1 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/legislate.d.ts +1 -1
- package/dist/cli/commands/legislate.d.ts.map +1 -1
- package/dist/cli/commands/legislate.js +1 -1
- package/dist/cli/commands/legislate.js.map +1 -1
- package/dist/cli/commands/mission.js +3 -3
- package/dist/cli/commands/mission.js.map +1 -1
- package/dist/cli/commands/onboarding.d.ts.map +1 -1
- package/dist/cli/commands/onboarding.js +4 -6
- package/dist/cli/commands/onboarding.js.map +1 -1
- package/dist/cli/commands/perimeter.js +1 -1
- package/dist/cli/commands/perimeter.js.map +1 -1
- package/dist/cli/commands/runtime.js +1 -1
- package/dist/cli/commands/runtime.js.map +1 -1
- package/dist/cli/commands/scan.js +1 -1
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/tmvc-guard.d.ts +7 -0
- package/dist/cli/commands/tmvc-guard.d.ts.map +1 -0
- package/dist/cli/commands/tmvc-guard.js +63 -0
- package/dist/cli/commands/tmvc-guard.js.map +1 -0
- package/dist/cli/commands/triage.js +2 -2
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/upgrade.js +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/verify.d.ts +2 -2
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +7 -7
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/architecture-pointer.d.ts +33 -5
- package/dist/cli/lib/architecture-pointer.d.ts.map +1 -1
- package/dist/cli/lib/architecture-pointer.js +304 -5
- package/dist/cli/lib/architecture-pointer.js.map +1 -1
- package/dist/cli/lib/ast-discovery.d.ts.map +1 -1
- package/dist/cli/lib/ast-discovery.js +7 -16
- package/dist/cli/lib/ast-discovery.js.map +1 -1
- package/dist/cli/lib/banned-import-violation.d.ts +8 -0
- package/dist/cli/lib/banned-import-violation.d.ts.map +1 -0
- package/dist/cli/lib/banned-import-violation.js +15 -0
- package/dist/cli/lib/banned-import-violation.js.map +1 -0
- package/dist/cli/lib/break-glass.d.ts +17 -0
- package/dist/cli/lib/break-glass.d.ts.map +1 -1
- package/dist/cli/lib/break-glass.js +28 -1
- package/dist/cli/lib/break-glass.js.map +1 -1
- package/dist/cli/lib/cli-io.d.ts +8 -0
- package/dist/cli/lib/cli-io.d.ts.map +1 -1
- package/dist/cli/lib/cli-io.js +16 -0
- package/dist/cli/lib/cli-io.js.map +1 -1
- package/dist/cli/lib/command-reporter.d.ts +3 -3
- package/dist/cli/lib/command-reporter.d.ts.map +1 -1
- package/dist/cli/lib/constants.d.ts +2 -0
- package/dist/cli/lib/constants.d.ts.map +1 -1
- package/dist/cli/lib/constants.js +2 -0
- package/dist/cli/lib/constants.js.map +1 -1
- package/dist/cli/lib/context-request.d.ts +22 -0
- package/dist/cli/lib/context-request.d.ts.map +1 -0
- package/dist/cli/lib/context-request.js +45 -0
- package/dist/cli/lib/context-request.js.map +1 -0
- package/dist/cli/lib/dirty-missions.js +1 -1
- package/dist/cli/lib/dirty-missions.js.map +1 -1
- package/dist/cli/lib/doctor.d.ts +31 -0
- package/dist/cli/lib/doctor.d.ts.map +1 -0
- package/dist/cli/lib/doctor.js +282 -0
- package/dist/cli/lib/doctor.js.map +1 -0
- package/dist/cli/lib/draft-token.js +1 -1
- package/dist/cli/lib/draft-token.js.map +1 -1
- package/dist/cli/lib/{user-error.d.ts → errors.d.ts} +20 -1
- package/dist/cli/lib/errors.d.ts.map +1 -0
- package/dist/cli/lib/{agent-error.js → errors.js} +64 -1
- package/dist/cli/lib/errors.js.map +1 -0
- package/dist/cli/lib/fix-hints.d.ts +1 -1
- package/dist/cli/lib/fix-hints.d.ts.map +1 -1
- package/dist/cli/lib/gate-work-dir.d.ts +6 -0
- package/dist/cli/lib/gate-work-dir.d.ts.map +1 -0
- package/dist/cli/lib/gate-work-dir.js +6 -0
- package/dist/cli/lib/gate-work-dir.js.map +1 -0
- package/dist/cli/lib/git-metrics.d.ts +34 -0
- package/dist/cli/lib/git-metrics.d.ts.map +1 -1
- package/dist/cli/lib/git-metrics.js +199 -3
- package/dist/cli/lib/git-metrics.js.map +1 -1
- package/dist/cli/lib/git-proof.d.ts +4 -0
- package/dist/cli/lib/git-proof.d.ts.map +1 -1
- package/dist/cli/lib/git-proof.js +22 -8
- package/dist/cli/lib/git-proof.js.map +1 -1
- package/dist/cli/lib/git-staged.d.ts +20 -0
- package/dist/cli/lib/git-staged.d.ts.map +1 -0
- package/dist/cli/lib/git-staged.js +37 -0
- package/dist/cli/lib/git-staged.js.map +1 -0
- package/dist/cli/lib/git.d.ts +25 -0
- package/dist/cli/lib/git.d.ts.map +1 -1
- package/dist/cli/lib/git.js +52 -0
- package/dist/cli/lib/git.js.map +1 -1
- package/dist/cli/lib/gxt-error-codes.d.ts +4 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -1
- package/dist/cli/lib/gxt-error-codes.js +4 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -1
- package/dist/cli/lib/import-scanner.d.ts +14 -0
- package/dist/cli/lib/import-scanner.d.ts.map +1 -0
- package/dist/cli/lib/import-scanner.js +67 -0
- package/dist/cli/lib/import-scanner.js.map +1 -0
- package/dist/cli/lib/{init-compose-arch-pointer.d.ts → init-compose.d.ts} +4 -1
- package/dist/cli/lib/init-compose.d.ts.map +1 -0
- package/dist/cli/lib/{init-compose-arch-pointer.js → init-compose.js} +37 -1
- package/dist/cli/lib/init-compose.js.map +1 -0
- package/dist/cli/lib/init-interactive.js +2 -2
- package/dist/cli/lib/init-interactive.js.map +1 -1
- package/dist/cli/lib/init-tutorial.d.ts.map +1 -1
- package/dist/cli/lib/init-tutorial.js +10 -10
- package/dist/cli/lib/init-tutorial.js.map +1 -1
- package/dist/cli/lib/kpi-engine.d.ts +34 -0
- package/dist/cli/lib/kpi-engine.d.ts.map +1 -0
- package/dist/cli/lib/kpi-engine.js +281 -0
- package/dist/cli/lib/kpi-engine.js.map +1 -0
- package/dist/cli/lib/kpi-report-stale.js +2 -2
- package/dist/cli/lib/kpi-report-stale.js.map +1 -1
- package/dist/cli/lib/kpi-scan.d.ts +2 -0
- package/dist/cli/lib/kpi-scan.d.ts.map +1 -1
- package/dist/cli/lib/kpi-scan.js +8 -4
- package/dist/cli/lib/kpi-scan.js.map +1 -1
- package/dist/cli/lib/legislate.d.ts +39 -0
- package/dist/cli/lib/legislate.d.ts.map +1 -0
- package/dist/cli/lib/{legislate-core.js → legislate.js} +31 -6
- package/dist/cli/lib/legislate.js.map +1 -0
- package/dist/cli/lib/mcp-governance.d.ts +124 -0
- package/dist/cli/lib/mcp-governance.d.ts.map +1 -0
- package/dist/cli/lib/mcp-governance.js +231 -0
- package/dist/cli/lib/mcp-governance.js.map +1 -0
- package/dist/cli/lib/mcp-runtime.d.ts +4 -4
- package/dist/cli/lib/mcp-runtime.d.ts.map +1 -1
- package/dist/cli/lib/mcp-runtime.js +3 -3
- package/dist/cli/lib/mcp-runtime.js.map +1 -1
- package/dist/cli/lib/mcp-tools-register.js +1 -2
- package/dist/cli/lib/mcp-tools-register.js.map +1 -1
- package/dist/cli/lib/mcp-upgrade.d.ts +11 -2
- package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -1
- package/dist/cli/lib/mcp-upgrade.js +1 -1
- package/dist/cli/lib/mcp-upgrade.js.map +1 -1
- package/dist/cli/lib/missions/formatter.d.ts +17 -0
- package/dist/cli/lib/missions/formatter.d.ts.map +1 -0
- package/dist/cli/lib/{mission-markdown.js → missions/formatter.js} +57 -2
- package/dist/cli/lib/missions/formatter.js.map +1 -0
- package/dist/cli/lib/missions/parser.d.ts +45 -0
- package/dist/cli/lib/missions/parser.d.ts.map +1 -0
- package/dist/cli/lib/missions/parser.js +270 -0
- package/dist/cli/lib/missions/parser.js.map +1 -0
- package/dist/cli/lib/{mission-schema-validate.d.ts → missions/validator.d.ts} +1 -1
- package/dist/cli/lib/missions/validator.d.ts.map +1 -0
- package/dist/cli/lib/{mission-schema-validate.js → missions/validator.js} +4 -3
- package/dist/cli/lib/missions/validator.js.map +1 -0
- package/dist/cli/lib/msn-allocate.js +3 -3
- package/dist/cli/lib/msn-allocate.js.map +1 -1
- package/dist/cli/lib/perimeter.d.ts +19 -1
- package/dist/cli/lib/perimeter.d.ts.map +1 -1
- package/dist/cli/lib/perimeter.js +139 -51
- package/dist/cli/lib/perimeter.js.map +1 -1
- package/dist/cli/lib/register-proposals.d.ts +1 -1
- package/dist/cli/lib/register-proposals.d.ts.map +1 -1
- package/dist/cli/lib/register-proposals.js +5 -1
- package/dist/cli/lib/register-proposals.js.map +1 -1
- package/dist/cli/lib/runtime-env.js +2 -2
- package/dist/cli/lib/runtime-env.js.map +1 -1
- package/dist/cli/lib/runtime-exec.d.ts +48 -4
- package/dist/cli/lib/runtime-exec.d.ts.map +1 -1
- package/dist/cli/lib/runtime-exec.js +218 -4
- package/dist/cli/lib/runtime-exec.js.map +1 -1
- package/dist/cli/lib/staged-tmvc-guard.d.ts +26 -0
- package/dist/cli/lib/staged-tmvc-guard.d.ts.map +1 -0
- package/dist/cli/lib/staged-tmvc-guard.js +58 -0
- package/dist/cli/lib/staged-tmvc-guard.js.map +1 -0
- package/dist/cli/lib/start-orchestration.d.ts +11 -1
- package/dist/cli/lib/start-orchestration.d.ts.map +1 -1
- package/dist/cli/lib/start-orchestration.js +105 -42
- package/dist/cli/lib/start-orchestration.js.map +1 -1
- package/dist/cli/lib/status-report.d.ts +1 -1
- package/dist/cli/lib/status-report.d.ts.map +1 -1
- package/dist/cli/lib/status-report.js +2 -2
- package/dist/cli/lib/status-report.js.map +1 -1
- package/dist/cli/lib/surgeon.d.ts +23 -0
- package/dist/cli/lib/surgeon.d.ts.map +1 -0
- package/dist/cli/lib/surgeon.js +63 -0
- package/dist/cli/lib/surgeon.js.map +1 -0
- package/dist/cli/lib/surgeons/banned-import.d.ts +4 -0
- package/dist/cli/lib/surgeons/banned-import.d.ts.map +1 -0
- package/dist/cli/lib/surgeons/banned-import.js +37 -0
- package/dist/cli/lib/surgeons/banned-import.js.map +1 -0
- package/dist/cli/lib/surgeons/import-layer.d.ts +3 -0
- package/dist/cli/lib/surgeons/import-layer.d.ts.map +1 -0
- package/dist/cli/lib/surgeons/import-layer.js +74 -0
- package/dist/cli/lib/surgeons/import-layer.js.map +1 -0
- package/dist/cli/lib/surgeons/quarantine-import.d.ts +24 -0
- package/dist/cli/lib/surgeons/quarantine-import.d.ts.map +1 -0
- package/dist/cli/lib/surgeons/quarantine-import.js +128 -0
- package/dist/cli/lib/surgeons/quarantine-import.js.map +1 -0
- package/dist/cli/lib/surgeons/registry.d.ts +22 -0
- package/dist/cli/lib/surgeons/registry.d.ts.map +1 -0
- package/dist/cli/lib/surgeons/registry.js +27 -0
- package/dist/cli/lib/surgeons/registry.js.map +1 -0
- package/dist/cli/lib/surgeons/typescript-workspace.d.ts +7 -0
- package/dist/cli/lib/surgeons/typescript-workspace.d.ts.map +1 -0
- package/dist/cli/lib/surgeons/typescript-workspace.js +41 -0
- package/dist/cli/lib/surgeons/typescript-workspace.js.map +1 -0
- package/dist/cli/lib/teacher-identity.js +1 -1
- package/dist/cli/lib/teacher-identity.js.map +1 -1
- package/dist/cli/lib/tmvc-path.d.ts +12 -0
- package/dist/cli/lib/tmvc-path.d.ts.map +1 -0
- package/dist/cli/lib/tmvc-path.js +47 -0
- package/dist/cli/lib/tmvc-path.js.map +1 -0
- package/dist/cli/lib/trace-evidence.js +1 -1
- package/dist/cli/lib/trace-evidence.js.map +1 -1
- package/dist/cli/lib/trace.d.ts +28 -1
- package/dist/cli/lib/trace.d.ts.map +1 -1
- package/dist/cli/lib/trace.js +158 -3
- package/dist/cli/lib/trace.js.map +1 -1
- package/dist/cli/lib/types.d.ts +1 -1
- package/dist/cli/lib/types.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-apply.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-apply.js +6 -2
- package/dist/cli/lib/upgrade-apply.js.map +1 -1
- package/dist/cli/lib/upgrade-plan.d.ts +19 -1
- package/dist/cli/lib/upgrade-plan.d.ts.map +1 -1
- package/dist/cli/lib/upgrade-plan.js +78 -6
- package/dist/cli/lib/upgrade-plan.js.map +1 -1
- package/dist/cli/lib/verify-changed-missions.js +1 -1
- package/dist/cli/lib/verify-changed-missions.js.map +1 -1
- package/dist/cli/lib/verify-engine.d.ts +36 -6
- package/dist/cli/lib/verify-engine.d.ts.map +1 -1
- package/dist/cli/lib/verify-engine.js +35 -12
- package/dist/cli/lib/verify-engine.js.map +1 -1
- package/dist/cli/lib/{verify-result-payload.d.ts → verify-payload.d.ts} +2 -7
- package/dist/cli/lib/verify-payload.d.ts.map +1 -0
- package/dist/cli/lib/{verify-result-payload.js → verify-payload.js} +7 -11
- package/dist/cli/lib/verify-payload.js.map +1 -0
- package/dist/cli/lib/verify-present.d.ts +9 -5
- package/dist/cli/lib/verify-present.d.ts.map +1 -1
- package/dist/cli/lib/verify-present.js +101 -8
- package/dist/cli/lib/verify-present.js.map +1 -1
- package/dist/cli/lib/verify-presentation.d.ts +7 -0
- package/dist/cli/lib/verify-presentation.d.ts.map +1 -0
- package/dist/cli/lib/verify-presentation.js +4 -0
- package/dist/cli/lib/verify-presentation.js.map +1 -0
- package/dist/cli/lib/verify-remediation.d.ts +29 -3
- package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
- package/dist/cli/lib/verify-remediation.js +78 -1
- package/dist/cli/lib/verify-remediation.js.map +1 -1
- package/dist/cli/lib/version.gen.d.ts +1 -1
- package/dist/cli/lib/version.gen.js +1 -1
- package/dist/cli/program-core.d.ts.map +1 -1
- package/dist/cli/program-core.js +9 -26
- 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 +38 -1
- package/dist/cli/program-mission.js.map +1 -1
- package/dist/cli/program-workflow.d.ts.map +1 -1
- package/dist/cli/program-workflow.js +30 -20
- package/dist/cli/program-workflow.js.map +1 -1
- package/package.json +3 -2
- package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +1 -0
- package/templates/.gitagent/teacher/WORKER_LOG.template.md +1 -0
- package/templates/.githooks/pre-commit +26 -0
- package/templates/.github/workflows/gxt-validate.yml +5 -0
- package/templates/AGENTS.md +4 -0
- package/templates/integrations/asset-catalog.json +29 -28
- package/templates/integrations/compatibility.json +1 -1
- package/templates/integrations/recipes/_footer.md +4 -0
- package/dist/cli/lib/agent-error.d.ts +0 -20
- package/dist/cli/lib/agent-error.d.ts.map +0 -1
- package/dist/cli/lib/agent-error.js.map +0 -1
- package/dist/cli/lib/architecture-pointer-discovery.d.ts +0 -7
- package/dist/cli/lib/architecture-pointer-discovery.d.ts.map +0 -1
- package/dist/cli/lib/architecture-pointer-discovery.js +0 -60
- package/dist/cli/lib/architecture-pointer-discovery.js.map +0 -1
- package/dist/cli/lib/architecture-pointer-doctor.d.ts +0 -3
- package/dist/cli/lib/architecture-pointer-doctor.d.ts.map +0 -1
- package/dist/cli/lib/architecture-pointer-doctor.js +0 -115
- package/dist/cli/lib/architecture-pointer-doctor.js.map +0 -1
- package/dist/cli/lib/architecture-pointer-schema.d.ts +0 -5
- package/dist/cli/lib/architecture-pointer-schema.d.ts.map +0 -1
- package/dist/cli/lib/architecture-pointer-schema.js +0 -138
- package/dist/cli/lib/architecture-pointer-schema.js.map +0 -1
- package/dist/cli/lib/architecture-pointer-types.d.ts +0 -24
- package/dist/cli/lib/architecture-pointer-types.d.ts.map +0 -1
- package/dist/cli/lib/architecture-pointer-types.js +0 -7
- package/dist/cli/lib/architecture-pointer-types.js.map +0 -1
- package/dist/cli/lib/break-glass-flow.d.ts +0 -18
- package/dist/cli/lib/break-glass-flow.d.ts.map +0 -1
- package/dist/cli/lib/break-glass-flow.js +0 -29
- package/dist/cli/lib/break-glass-flow.js.map +0 -1
- package/dist/cli/lib/cli-timeout.d.ts +0 -9
- package/dist/cli/lib/cli-timeout.d.ts.map +0 -1
- package/dist/cli/lib/cli-timeout.js +0 -17
- package/dist/cli/lib/cli-timeout.js.map +0 -1
- package/dist/cli/lib/doctor-checks.d.ts +0 -16
- package/dist/cli/lib/doctor-checks.d.ts.map +0 -1
- package/dist/cli/lib/doctor-checks.js +0 -138
- package/dist/cli/lib/doctor-checks.js.map +0 -1
- package/dist/cli/lib/doctor-integration-checks.d.ts +0 -5
- package/dist/cli/lib/doctor-integration-checks.d.ts.map +0 -1
- package/dist/cli/lib/doctor-integration-checks.js +0 -89
- package/dist/cli/lib/doctor-integration-checks.js.map +0 -1
- package/dist/cli/lib/doctor-orchestration.d.ts +0 -10
- package/dist/cli/lib/doctor-orchestration.d.ts.map +0 -1
- package/dist/cli/lib/doctor-orchestration.js +0 -32
- package/dist/cli/lib/doctor-orchestration.js.map +0 -1
- package/dist/cli/lib/doctor-substrate-drift.d.ts +0 -7
- package/dist/cli/lib/doctor-substrate-drift.d.ts.map +0 -1
- package/dist/cli/lib/doctor-substrate-drift.js +0 -35
- package/dist/cli/lib/doctor-substrate-drift.js.map +0 -1
- package/dist/cli/lib/git-metrics-missions.d.ts +0 -3
- package/dist/cli/lib/git-metrics-missions.d.ts.map +0 -1
- package/dist/cli/lib/git-metrics-missions.js +0 -51
- package/dist/cli/lib/git-metrics-missions.js.map +0 -1
- package/dist/cli/lib/git-metrics-stream.d.ts +0 -24
- package/dist/cli/lib/git-metrics-stream.d.ts.map +0 -1
- package/dist/cli/lib/git-metrics-stream.js +0 -137
- package/dist/cli/lib/git-metrics-stream.js.map +0 -1
- package/dist/cli/lib/git-repo.d.ts +0 -26
- package/dist/cli/lib/git-repo.d.ts.map +0 -1
- package/dist/cli/lib/git-repo.js +0 -53
- package/dist/cli/lib/git-repo.js.map +0 -1
- package/dist/cli/lib/init-compose-arch-pointer.d.ts.map +0 -1
- package/dist/cli/lib/init-compose-arch-pointer.js.map +0 -1
- package/dist/cli/lib/init-compose-doc.d.ts +0 -5
- package/dist/cli/lib/init-compose-doc.d.ts.map +0 -1
- package/dist/cli/lib/init-compose-doc.js +0 -37
- package/dist/cli/lib/init-compose-doc.js.map +0 -1
- package/dist/cli/lib/kpi-phase.d.ts +0 -7
- package/dist/cli/lib/kpi-phase.d.ts.map +0 -1
- package/dist/cli/lib/kpi-phase.js +0 -80
- package/dist/cli/lib/kpi-phase.js.map +0 -1
- package/dist/cli/lib/kpi-report.d.ts +0 -13
- package/dist/cli/lib/kpi-report.d.ts.map +0 -1
- package/dist/cli/lib/kpi-report.js +0 -115
- package/dist/cli/lib/kpi-report.js.map +0 -1
- package/dist/cli/lib/legislate-core.d.ts +0 -21
- package/dist/cli/lib/legislate-core.d.ts.map +0 -1
- package/dist/cli/lib/legislate-core.js.map +0 -1
- package/dist/cli/lib/legislate-skill.d.ts +0 -20
- package/dist/cli/lib/legislate-skill.d.ts.map +0 -1
- package/dist/cli/lib/legislate-skill.js +0 -30
- package/dist/cli/lib/legislate-skill.js.map +0 -1
- package/dist/cli/lib/mcp-legislation-draft.d.ts +0 -6
- package/dist/cli/lib/mcp-legislation-draft.d.ts.map +0 -1
- package/dist/cli/lib/mcp-legislation-draft.js +0 -62
- package/dist/cli/lib/mcp-legislation-draft.js.map +0 -1
- package/dist/cli/lib/mcp-legislation-execute.d.ts +0 -6
- package/dist/cli/lib/mcp-legislation-execute.d.ts.map +0 -1
- package/dist/cli/lib/mcp-legislation-execute.js +0 -43
- package/dist/cli/lib/mcp-legislation-execute.js.map +0 -1
- package/dist/cli/lib/mcp-legislation-mission.d.ts +0 -12
- package/dist/cli/lib/mcp-legislation-mission.d.ts.map +0 -1
- package/dist/cli/lib/mcp-legislation-mission.js +0 -82
- package/dist/cli/lib/mcp-legislation-mission.js.map +0 -1
- package/dist/cli/lib/mcp-legislation-types.d.ts +0 -69
- package/dist/cli/lib/mcp-legislation-types.d.ts.map +0 -1
- package/dist/cli/lib/mcp-legislation-types.js +0 -4
- package/dist/cli/lib/mcp-legislation-types.js.map +0 -1
- package/dist/cli/lib/mcp-legislation.d.ts +0 -5
- package/dist/cli/lib/mcp-legislation.d.ts.map +0 -1
- package/dist/cli/lib/mcp-legislation.js +0 -4
- package/dist/cli/lib/mcp-legislation.js.map +0 -1
- package/dist/cli/lib/mcp-orchestration-types.d.ts +0 -28
- package/dist/cli/lib/mcp-orchestration-types.d.ts.map +0 -1
- package/dist/cli/lib/mcp-orchestration-types.js +0 -2
- package/dist/cli/lib/mcp-orchestration-types.js.map +0 -1
- package/dist/cli/lib/mcp-orchestration.d.ts +0 -14
- package/dist/cli/lib/mcp-orchestration.d.ts.map +0 -1
- package/dist/cli/lib/mcp-orchestration.js +0 -54
- package/dist/cli/lib/mcp-orchestration.js.map +0 -1
- package/dist/cli/lib/mcp-upgrade-types.d.ts +0 -12
- package/dist/cli/lib/mcp-upgrade-types.d.ts.map +0 -1
- package/dist/cli/lib/mcp-upgrade-types.js +0 -2
- package/dist/cli/lib/mcp-upgrade-types.js.map +0 -1
- package/dist/cli/lib/mission-emit.d.ts +0 -7
- package/dist/cli/lib/mission-emit.d.ts.map +0 -1
- package/dist/cli/lib/mission-emit.js +0 -23
- package/dist/cli/lib/mission-emit.js.map +0 -1
- package/dist/cli/lib/mission-legislative-stub.d.ts +0 -9
- package/dist/cli/lib/mission-legislative-stub.d.ts.map +0 -1
- package/dist/cli/lib/mission-legislative-stub.js +0 -37
- package/dist/cli/lib/mission-legislative-stub.js.map +0 -1
- package/dist/cli/lib/mission-markdown.d.ts +0 -6
- package/dist/cli/lib/mission-markdown.d.ts.map +0 -1
- package/dist/cli/lib/mission-markdown.js.map +0 -1
- package/dist/cli/lib/mission-msn.d.ts +0 -9
- package/dist/cli/lib/mission-msn.d.ts.map +0 -1
- package/dist/cli/lib/mission-msn.js +0 -86
- package/dist/cli/lib/mission-msn.js.map +0 -1
- package/dist/cli/lib/mission-parser.d.ts +0 -6
- package/dist/cli/lib/mission-parser.d.ts.map +0 -1
- package/dist/cli/lib/mission-parser.js +0 -29
- package/dist/cli/lib/mission-parser.js.map +0 -1
- package/dist/cli/lib/mission-path.d.ts +0 -4
- package/dist/cli/lib/mission-path.d.ts.map +0 -1
- package/dist/cli/lib/mission-path.js +0 -28
- package/dist/cli/lib/mission-path.js.map +0 -1
- package/dist/cli/lib/mission-resolution.d.ts +0 -14
- package/dist/cli/lib/mission-resolution.d.ts.map +0 -1
- package/dist/cli/lib/mission-resolution.js +0 -60
- package/dist/cli/lib/mission-resolution.js.map +0 -1
- package/dist/cli/lib/mission-schema-validate.d.ts.map +0 -1
- package/dist/cli/lib/mission-schema-validate.js.map +0 -1
- package/dist/cli/lib/mission-yaml.d.ts +0 -18
- package/dist/cli/lib/mission-yaml.d.ts.map +0 -1
- package/dist/cli/lib/mission-yaml.js +0 -228
- package/dist/cli/lib/mission-yaml.js.map +0 -1
- package/dist/cli/lib/register-proposals-format.d.ts +0 -2
- package/dist/cli/lib/register-proposals-format.d.ts.map +0 -1
- package/dist/cli/lib/register-proposals-format.js +0 -6
- package/dist/cli/lib/register-proposals-format.js.map +0 -1
- package/dist/cli/lib/runtime-exec-orchestrator.d.ts +0 -14
- package/dist/cli/lib/runtime-exec-orchestrator.d.ts.map +0 -1
- package/dist/cli/lib/runtime-exec-orchestrator.js +0 -132
- package/dist/cli/lib/runtime-exec-orchestrator.js.map +0 -1
- package/dist/cli/lib/runtime-exec-result.d.ts +0 -21
- package/dist/cli/lib/runtime-exec-result.d.ts.map +0 -1
- package/dist/cli/lib/runtime-exec-result.js +0 -42
- package/dist/cli/lib/runtime-exec-result.js.map +0 -1
- package/dist/cli/lib/runtime-exec-worker.d.ts +0 -18
- package/dist/cli/lib/runtime-exec-worker.d.ts.map +0 -1
- package/dist/cli/lib/runtime-exec-worker.js +0 -49
- package/dist/cli/lib/runtime-exec-worker.js.map +0 -1
- package/dist/cli/lib/start-state.d.ts +0 -12
- package/dist/cli/lib/start-state.d.ts.map +0 -1
- package/dist/cli/lib/start-state.js +0 -86
- package/dist/cli/lib/start-state.js.map +0 -1
- package/dist/cli/lib/trace-failure-kind.d.ts +0 -4
- package/dist/cli/lib/trace-failure-kind.d.ts.map +0 -1
- package/dist/cli/lib/trace-failure-kind.js +0 -25
- package/dist/cli/lib/trace-failure-kind.js.map +0 -1
- package/dist/cli/lib/trace-status.d.ts +0 -7
- package/dist/cli/lib/trace-status.d.ts.map +0 -1
- package/dist/cli/lib/trace-status.js +0 -20
- package/dist/cli/lib/trace-status.js.map +0 -1
- package/dist/cli/lib/upgrade-eligible-assets.d.ts +0 -5
- package/dist/cli/lib/upgrade-eligible-assets.d.ts.map +0 -1
- package/dist/cli/lib/upgrade-eligible-assets.js +0 -9
- package/dist/cli/lib/upgrade-eligible-assets.js.map +0 -1
- package/dist/cli/lib/upgrade-plan-preview.d.ts +0 -13
- package/dist/cli/lib/upgrade-plan-preview.d.ts.map +0 -1
- package/dist/cli/lib/upgrade-plan-preview.js +0 -51
- package/dist/cli/lib/upgrade-plan-preview.js.map +0 -1
- package/dist/cli/lib/upgrade-profile.d.ts +0 -4
- package/dist/cli/lib/upgrade-profile.d.ts.map +0 -1
- package/dist/cli/lib/upgrade-profile.js +0 -27
- package/dist/cli/lib/upgrade-profile.js.map +0 -1
- package/dist/cli/lib/user-error.d.ts.map +0 -1
- package/dist/cli/lib/user-error.js +0 -64
- package/dist/cli/lib/user-error.js.map +0 -1
- package/dist/cli/lib/verify-failure-presentation.d.ts +0 -30
- package/dist/cli/lib/verify-failure-presentation.d.ts.map +0 -1
- package/dist/cli/lib/verify-failure-presentation.js +0 -68
- package/dist/cli/lib/verify-failure-presentation.js.map +0 -1
- package/dist/cli/lib/verify-result-payload.d.ts.map +0 -1
- package/dist/cli/lib/verify-result-payload.js.map +0 -1
- package/dist/cli/lib/verify-run.d.ts +0 -10
- package/dist/cli/lib/verify-run.d.ts.map +0 -1
- package/dist/cli/lib/verify-run.js +0 -55
- package/dist/cli/lib/verify-run.js.map +0 -1
- package/dist/cli/lib/verify-types.d.ts +0 -31
- package/dist/cli/lib/verify-types.d.ts.map +0 -1
- package/dist/cli/lib/verify-types.js +0 -2
- package/dist/cli/lib/verify-types.js.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { ENV_BYPASS_SECRET, isBypassSecretAuthorized, REL_BYPASS_SHA256 } from "./break-glass.js";
|
|
4
|
-
import { REL_AGENT_ERROR_FILE, REL_MANIFEST } from "./constants.js";
|
|
5
|
-
import { agentErrorAbsolutePath } from "./agent-error.js";
|
|
6
|
-
import { gitConfigGet } from "./git-repo.js";
|
|
7
|
-
import { resolveTeacherEmails } from "./teacher-identity.js";
|
|
8
|
-
import { checkSkillManifestSync } from "./skill-sync.js";
|
|
9
|
-
function readBypassAnchorState(repoRoot) {
|
|
10
|
-
const p = path.join(repoRoot, REL_BYPASS_SHA256);
|
|
11
|
-
if (!fs.existsSync(p))
|
|
12
|
-
return "missing";
|
|
13
|
-
const raw = fs.readFileSync(p, "utf8");
|
|
14
|
-
if (/^[a-f0-9]{64}$/im.test(raw))
|
|
15
|
-
return "configured";
|
|
16
|
-
return "placeholder";
|
|
17
|
-
}
|
|
18
|
-
function readHooksPath(repoRoot) {
|
|
19
|
-
return gitConfigGet(repoRoot, "core.hooksPath");
|
|
20
|
-
}
|
|
21
|
-
export function pickNextStep(current, candidate) {
|
|
22
|
-
return current ?? candidate;
|
|
23
|
-
}
|
|
24
|
-
export function doctorLinesHasFail(lines) {
|
|
25
|
-
return lines.some((line) => line.level === "fail");
|
|
26
|
-
}
|
|
27
|
-
function appendTeacherAllowlistChecks(root, lines, nextStep) {
|
|
28
|
-
const teacherIdentity = resolveTeacherEmails(root);
|
|
29
|
-
if (teacherIdentity.emails.length > 0) {
|
|
30
|
-
lines.push({
|
|
31
|
-
level: "ok",
|
|
32
|
-
message: `Teacher allowlist (${teacherIdentity.source}): ${teacherIdentity.emails.join(", ")}`,
|
|
33
|
-
});
|
|
34
|
-
if (teacherIdentity.source === "env") {
|
|
35
|
-
lines.push({
|
|
36
|
-
level: "warn",
|
|
37
|
-
message: "Teacher identity from GAPMAN_TEACHER_EMAILS env — prefer repo-local .gitagent/foreman/TEACHER.allowlist.local when working across projects",
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
return { nextStep, teacherAllowlistUnset: false };
|
|
41
|
-
}
|
|
42
|
-
lines.push({ level: "warn", message: "Teacher allowlist unset — verify git-proof will fail" });
|
|
43
|
-
nextStep = pickNextStep(nextStep, 'gapman teacher set "$(git config user.email)"');
|
|
44
|
-
return { nextStep, teacherAllowlistUnset: true };
|
|
45
|
-
}
|
|
46
|
-
function appendBypassChecks(root, lines) {
|
|
47
|
-
const bypassState = readBypassAnchorState(root);
|
|
48
|
-
if (bypassState === "configured") {
|
|
49
|
-
lines.push({ level: "ok", message: "BYPASS.sha256 anchor present" });
|
|
50
|
-
const secret = process.env[ENV_BYPASS_SECRET];
|
|
51
|
-
if (secret?.length) {
|
|
52
|
-
const authorized = isBypassSecretAuthorized(root);
|
|
53
|
-
lines.push({
|
|
54
|
-
level: authorized ? "ok" : "warn",
|
|
55
|
-
message: authorized
|
|
56
|
-
? "bypass: GXT_BYPASS_SECRET matches anchor"
|
|
57
|
-
: "bypass: GXT_BYPASS_SECRET does NOT match anchor",
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
lines.push({ level: "warn", message: "bypass: GXT_BYPASS_SECRET unset (expected unless in emergency)" });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (bypassState === "placeholder") {
|
|
65
|
-
lines.push({ level: "warn", message: "BYPASS.sha256 has no hash line — break-glass not provisioned" });
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
lines.push({ level: "warn", message: `${REL_BYPASS_SHA256} missing` });
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function appendHooksAndExampleMissionChecks(root, lines, nextStep) {
|
|
72
|
-
const hooks = readHooksPath(root);
|
|
73
|
-
if (hooks === ".githooks") {
|
|
74
|
-
lines.push({ level: "ok", message: "core.hooksPath=.githooks" });
|
|
75
|
-
}
|
|
76
|
-
else if (hooks) {
|
|
77
|
-
lines.push({ level: "warn", message: `core.hooksPath=${hooks} (expected .githooks for GXT hooks)` });
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
lines.push({ level: "warn", message: "core.hooksPath unset — run: git config core.hooksPath .githooks" });
|
|
81
|
-
}
|
|
82
|
-
const exampleMission = ".gitagent/missions/example.verify.yaml";
|
|
83
|
-
const teacherIdentity = resolveTeacherEmails(root);
|
|
84
|
-
if (fs.existsSync(path.join(root, exampleMission))) {
|
|
85
|
-
lines.push({ level: "ok", message: `example mission: ${exampleMission}` });
|
|
86
|
-
if (teacherIdentity.emails.length > 0) {
|
|
87
|
-
nextStep = pickNextStep(nextStep, `gapman verify --mission ${exampleMission}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
lines.push({ level: "warn", message: "no example.verify.yaml — legislate a mission first" });
|
|
92
|
-
nextStep = pickNextStep(nextStep, 'gapman legislate "<intent>" --msn MSN-0001 --skill-key <key>');
|
|
93
|
-
}
|
|
94
|
-
return nextStep;
|
|
95
|
-
}
|
|
96
|
-
function appendAgentErrorCheck(root, lines) {
|
|
97
|
-
const errPath = agentErrorAbsolutePath(root);
|
|
98
|
-
if (!fs.existsSync(errPath))
|
|
99
|
-
return;
|
|
100
|
-
try {
|
|
101
|
-
const payload = JSON.parse(fs.readFileSync(errPath, "utf8"));
|
|
102
|
-
const summary = typeof payload.summary === "string" ? payload.summary : "(no summary)";
|
|
103
|
-
lines.push({ level: "warn", message: `last agent error: ${summary}` });
|
|
104
|
-
lines.push({ level: "warn", message: ` file: ${REL_AGENT_ERROR_FILE}` });
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
lines.push({ level: "warn", message: `stale ${REL_AGENT_ERROR_FILE} (unreadable)` });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
export function runDoctorChecks(root, manifest) {
|
|
111
|
-
const lines = [{ level: "ok", message: `repo: ${root}` }];
|
|
112
|
-
let hasFail = false;
|
|
113
|
-
let nextStep = null;
|
|
114
|
-
let teacherAllowlistUnset = false;
|
|
115
|
-
const skillSync = checkSkillManifestSync(root, manifest);
|
|
116
|
-
if (skillSync.ok) {
|
|
117
|
-
lines.push({ level: "ok", message: "manifest + skills/ Rule 4.4 sync" });
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
for (const err of skillSync.errors)
|
|
121
|
-
lines.push({ level: "fail", message: err });
|
|
122
|
-
hasFail = true;
|
|
123
|
-
nextStep = pickNextStep(nextStep, "gapman check");
|
|
124
|
-
}
|
|
125
|
-
const teacherResult = appendTeacherAllowlistChecks(root, lines, nextStep);
|
|
126
|
-
nextStep = teacherResult.nextStep;
|
|
127
|
-
teacherAllowlistUnset = teacherResult.teacherAllowlistUnset;
|
|
128
|
-
appendBypassChecks(root, lines);
|
|
129
|
-
nextStep = appendHooksAndExampleMissionChecks(root, lines, nextStep);
|
|
130
|
-
appendAgentErrorCheck(root, lines);
|
|
131
|
-
if (!fs.existsSync(path.join(root, REL_MANIFEST))) {
|
|
132
|
-
lines.push({ level: "fail", message: `${REL_MANIFEST} missing` });
|
|
133
|
-
hasFail = true;
|
|
134
|
-
nextStep = pickNextStep(nextStep, "gapman init");
|
|
135
|
-
}
|
|
136
|
-
return { lines, hasFail, nextStep, teacherAllowlistUnset };
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=doctor-checks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-checks.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { INTEGRATION_IDE_KEYS, loadIntegrationCompat, integrationWizardLabel } from "./integration-compat.js";
|
|
2
|
-
import type { DoctorLine } from "./doctor-checks.js";
|
|
3
|
-
export declare function runIntegrationDoctorChecks(repoRoot: string, templatesRoot: string): DoctorLine[];
|
|
4
|
-
export { integrationWizardLabel, INTEGRATION_IDE_KEYS, loadIntegrationCompat };
|
|
5
|
-
//# sourceMappingURL=doctor-integration-checks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-integration-checks.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/doctor-integration-checks.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAiCrD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,UAAU,EAAE,CAsDd;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { errorMessage } from "./cli-io.js";
|
|
4
|
-
import { spawnSync } from "node:child_process";
|
|
5
|
-
import { INTEGRATION_IDE_KEYS, loadIntegrationCompat, integrationWizardLabel, } from "./integration-compat.js";
|
|
6
|
-
function pathExists(repoRoot, rel) {
|
|
7
|
-
const normalized = rel.endsWith("/") ? rel.slice(0, -1) : rel;
|
|
8
|
-
return fs.existsSync(path.join(repoRoot, normalized));
|
|
9
|
-
}
|
|
10
|
-
function readCursorHooksVersion(repoRoot) {
|
|
11
|
-
const p = path.join(repoRoot, ".cursor/hooks.json");
|
|
12
|
-
if (!fs.existsSync(p))
|
|
13
|
-
return null;
|
|
14
|
-
try {
|
|
15
|
-
const j = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
16
|
-
return typeof j.version === "number" ? j.version : null;
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function probeCliVersion(cmd, args) {
|
|
23
|
-
const r = spawnSync(cmd, args, { encoding: "utf8", timeout: 5000 });
|
|
24
|
-
if (r.status !== 0)
|
|
25
|
-
return null;
|
|
26
|
-
const out = `${r.stdout ?? ""}${r.stderr ?? ""}`.trim();
|
|
27
|
-
return out.length > 0 ? out.split("\n")[0].trim() : null;
|
|
28
|
-
}
|
|
29
|
-
function detectIntegrationPresent(repoRoot, key, entry) {
|
|
30
|
-
if (key === "codex-cli") {
|
|
31
|
-
// AGENTS.md is core GXT scaffold — only .codex/config.toml signals Codex CLI wiring.
|
|
32
|
-
return pathExists(repoRoot, ".codex/config.toml");
|
|
33
|
-
}
|
|
34
|
-
return entry.canonical_paths.some((p) => pathExists(repoRoot, p));
|
|
35
|
-
}
|
|
36
|
-
export function runIntegrationDoctorChecks(repoRoot, templatesRoot) {
|
|
37
|
-
const lines = [];
|
|
38
|
-
let compat;
|
|
39
|
-
try {
|
|
40
|
-
compat = loadIntegrationCompat(templatesRoot);
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
lines.push({
|
|
44
|
-
level: "warn",
|
|
45
|
-
message: `integration compat manifest unavailable: ${errorMessage(e)}`,
|
|
46
|
-
});
|
|
47
|
-
return lines;
|
|
48
|
-
}
|
|
49
|
-
const detected = [];
|
|
50
|
-
for (const key of INTEGRATION_IDE_KEYS) {
|
|
51
|
-
const entry = compat.integrations[key];
|
|
52
|
-
for (const dep of entry.deprecated_paths) {
|
|
53
|
-
if (pathExists(repoRoot, dep)) {
|
|
54
|
-
const canonical = entry.canonical_paths[0] ?? "(see .gitagent/ARCHITECTURE.pointer.json)";
|
|
55
|
-
lines.push({
|
|
56
|
-
level: "warn",
|
|
57
|
-
message: `deprecated path ${dep} — migrate to ${canonical} (${entry.display_name})`,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (!detectIntegrationPresent(repoRoot, key, entry))
|
|
62
|
-
continue;
|
|
63
|
-
let label = key;
|
|
64
|
-
if (entry.cli_probe && entry.cli_probe.length >= 2) {
|
|
65
|
-
const ver = probeCliVersion(entry.cli_probe[0], entry.cli_probe.slice(1));
|
|
66
|
-
if (ver)
|
|
67
|
-
label = `${key} (${ver})`;
|
|
68
|
-
}
|
|
69
|
-
detected.push(label);
|
|
70
|
-
if (key === "cursor" && entry.hooks_schema_version != null) {
|
|
71
|
-
const hv = readCursorHooksVersion(repoRoot);
|
|
72
|
-
if (hv != null && hv !== entry.hooks_schema_version) {
|
|
73
|
-
lines.push({
|
|
74
|
-
level: "warn",
|
|
75
|
-
message: `.cursor/hooks.json version ${hv} — expected ${entry.hooks_schema_version} per integration compat`,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (detected.length > 0) {
|
|
81
|
-
lines.push({ level: "ok", message: `detected agent wiring: ${detected.join(", ")}` });
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
lines.push({ level: "warn", message: "no agent integration files detected — run gapman init" });
|
|
85
|
-
}
|
|
86
|
-
return lines;
|
|
87
|
-
}
|
|
88
|
-
export { integrationWizardLabel, INTEGRATION_IDE_KEYS, loadIntegrationCompat };
|
|
89
|
-
//# sourceMappingURL=doctor-integration-checks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-integration-checks.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-integration-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type DoctorLine } from "./doctor-checks.js";
|
|
2
|
-
import type { Manifest } from "./types.js";
|
|
3
|
-
export interface DoctorReport {
|
|
4
|
-
lines: DoctorLine[];
|
|
5
|
-
hasFail: boolean;
|
|
6
|
-
nextStep: string | null;
|
|
7
|
-
teacherAllowlistUnset: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare function collectDoctorReport(root: string, manifest: Manifest, templatesRoot?: string): DoctorReport;
|
|
10
|
-
//# sourceMappingURL=doctor-orchestration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-orchestration.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/doctor-orchestration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,CAwBd"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { runDoctorChecks, doctorLinesHasFail, pickNextStep } from "./doctor-checks.js";
|
|
2
|
-
import { runIntegrationDoctorChecks } from "./doctor-integration-checks.js";
|
|
3
|
-
import { runSubstrateDriftDoctorChecks } from "./doctor-substrate-drift.js";
|
|
4
|
-
import { runArchitecturePointerDoctorChecks } from "./architecture-pointer.js";
|
|
5
|
-
import { resolveTemplateRootFromModule } from "./integration-compat.js";
|
|
6
|
-
export function collectDoctorReport(root, manifest, templatesRoot) {
|
|
7
|
-
const result = runDoctorChecks(root, manifest);
|
|
8
|
-
let lines = [...result.lines, ...runArchitecturePointerDoctorChecks(root)];
|
|
9
|
-
let nextStep = result.nextStep;
|
|
10
|
-
try {
|
|
11
|
-
const tpl = templatesRoot ?? resolveTemplateRootFromModule();
|
|
12
|
-
lines = [...lines, ...runIntegrationDoctorChecks(root, tpl)];
|
|
13
|
-
const drift = runSubstrateDriftDoctorChecks(root, tpl);
|
|
14
|
-
lines = [...lines, ...drift.lines];
|
|
15
|
-
if (drift.nextStep) {
|
|
16
|
-
nextStep = pickNextStep(nextStep, drift.nextStep);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
lines = [
|
|
21
|
-
...lines,
|
|
22
|
-
{ level: "warn", message: "integration compat checks skipped (templates not found)" },
|
|
23
|
-
];
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
lines,
|
|
27
|
-
hasFail: doctorLinesHasFail(lines) || result.hasFail,
|
|
28
|
-
nextStep,
|
|
29
|
-
teacherAllowlistUnset: result.teacherAllowlistUnset,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=doctor-orchestration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-orchestration.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-orchestration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAUxE,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAAkB,EAClB,aAAsB;IAEtB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,IAAI,6BAA6B,EAAE,CAAC;QAC7D,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvD,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG;YACN,GAAG,KAAK;YACR,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yDAAyD,EAAE;SACtF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO;QACpD,QAAQ;QACR,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { DoctorLine } from "./doctor-checks.js";
|
|
2
|
-
export interface SubstrateDriftDoctorResult {
|
|
3
|
-
lines: DoctorLine[];
|
|
4
|
-
nextStep: string | null;
|
|
5
|
-
}
|
|
6
|
-
export declare function runSubstrateDriftDoctorChecks(repoRoot: string, templatesRoot: string): SubstrateDriftDoctorResult;
|
|
7
|
-
//# sourceMappingURL=doctor-substrate-drift.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-substrate-drift.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/doctor-substrate-drift.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQrD,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,0BAA0B,CA+B5B"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { NPM_PACKAGE_NAME } from "./constants.js";
|
|
2
|
-
import { loadIntegrationCompat } from "./integration-compat.js";
|
|
3
|
-
import { compareSemver, legacyVersionWarning, readInstalledSubstrateVersion, } from "./substrate-version.js";
|
|
4
|
-
export function runSubstrateDriftDoctorChecks(repoRoot, templatesRoot) {
|
|
5
|
-
const installed = readInstalledSubstrateVersion(repoRoot);
|
|
6
|
-
const bundled = loadIntegrationCompat(templatesRoot).opengantry_version;
|
|
7
|
-
const lines = [];
|
|
8
|
-
let nextStep = null;
|
|
9
|
-
const legacyWarn = legacyVersionWarning(installed.source);
|
|
10
|
-
if (legacyWarn) {
|
|
11
|
-
lines.push({ level: "warn", message: legacyWarn });
|
|
12
|
-
}
|
|
13
|
-
const cmp = compareSemver(installed.version, bundled);
|
|
14
|
-
if (cmp === 0) {
|
|
15
|
-
lines.push({
|
|
16
|
-
level: "ok",
|
|
17
|
-
message: `substrate version: ${installed.version} (matches bundled gapman)`,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
else if (cmp < 0) {
|
|
21
|
-
lines.push({
|
|
22
|
-
level: "warn",
|
|
23
|
-
message: `substrate version ${installed.version} is behind bundled gapman ${bundled} — run gapman upgrade after updating ${NPM_PACKAGE_NAME}`,
|
|
24
|
-
});
|
|
25
|
-
nextStep = "gapman upgrade";
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
lines.push({
|
|
29
|
-
level: "warn",
|
|
30
|
-
message: `substrate version ${installed.version} is ahead of bundled gapman ${bundled} — update ${NPM_PACKAGE_NAME} (e.g. npm install ${NPM_PACKAGE_NAME}@latest), then re-run gapman doctor`,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return { lines, nextStep };
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=doctor-substrate-drift.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-substrate-drift.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-substrate-drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAOhC,MAAM,UAAU,6BAA6B,CAC3C,QAAgB,EAChB,aAAqB;IAErB,MAAM,SAAS,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC,kBAAkB,CAAC;IACxE,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,sBAAsB,SAAS,CAAC,OAAO,2BAA2B;SAC5E,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,qBAAqB,SAAS,CAAC,OAAO,6BAA6B,OAAO,wCAAwC,gBAAgB,EAAE;SAC9I,CAAC,CAAC;QACH,QAAQ,GAAG,gBAAgB,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,qBAAqB,SAAS,CAAC,OAAO,+BAA+B,OAAO,aAAa,gBAAgB,sBAAsB,gBAAgB,qCAAqC;SAC9L,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-metrics-missions.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics-missions.ts"],"names":[],"mappings":"AAiBA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAmB7E"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import YAML from "yaml";
|
|
2
|
-
import { MSN_ID_PATTERN } from "./constants.js";
|
|
3
|
-
import { gitRunOk } from "./git-repo.js";
|
|
4
|
-
const MISSIONS_PREFIX = ".gitagent/missions/";
|
|
5
|
-
function parseMsnFromYamlContent(content) {
|
|
6
|
-
try {
|
|
7
|
-
const data = YAML.parse(content);
|
|
8
|
-
const raw = data.msn_id ?? data.msnId;
|
|
9
|
-
if (typeof raw === "string" && MSN_ID_PATTERN.test(raw.trim()))
|
|
10
|
-
return raw.trim();
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
/* skip */
|
|
14
|
-
}
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
export function msnFromMissionPath(rel) {
|
|
18
|
-
const norm = rel.trim().replace(/\\/g, "/");
|
|
19
|
-
if (!norm.startsWith(MISSIONS_PREFIX))
|
|
20
|
-
return null;
|
|
21
|
-
if (!/\.(ya?ml|md)$/i.test(norm))
|
|
22
|
-
return null;
|
|
23
|
-
const fromName = norm.match(/MSN-\d{4}/)?.[0];
|
|
24
|
-
if (fromName && MSN_ID_PATTERN.test(fromName))
|
|
25
|
-
return fromName;
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
export function listMissionMsnIdsAtRef(root, ref) {
|
|
29
|
-
const ids = new Set();
|
|
30
|
-
const tree = gitRunOk(root, ["ls-tree", "-r", "--name-only", ref, MISSIONS_PREFIX]);
|
|
31
|
-
if (!tree.ok)
|
|
32
|
-
return ids;
|
|
33
|
-
for (const rel of tree.stdout.split("\n")) {
|
|
34
|
-
const norm = rel.trim().replace(/\\/g, "/");
|
|
35
|
-
if (!norm)
|
|
36
|
-
continue;
|
|
37
|
-
const fromName = msnFromMissionPath(norm);
|
|
38
|
-
if (fromName) {
|
|
39
|
-
ids.add(fromName);
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
const show = gitRunOk(root, ["show", `${ref}:${norm}`]);
|
|
43
|
-
if (!show.ok)
|
|
44
|
-
continue;
|
|
45
|
-
const parsed = parseMsnFromYamlContent(show.stdout);
|
|
46
|
-
if (parsed)
|
|
47
|
-
ids.add(parsed);
|
|
48
|
-
}
|
|
49
|
-
return ids;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=git-metrics-missions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-metrics-missions.js","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics-missions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,SAAS,uBAAuB,CAAC,OAAe;IAC9C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,UAAU;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,GAAW;IAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,SAAS;QACvB,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface LogRecord {
|
|
2
|
-
hash: string;
|
|
3
|
-
subject: string;
|
|
4
|
-
email: string;
|
|
5
|
-
ts: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function streamLogRecords(root: string, ref: string): LogRecord[];
|
|
8
|
-
export declare function countBypassNotes(root: string): number;
|
|
9
|
-
export declare function median(values: number[]): number | null;
|
|
10
|
-
export declare function clearMetricsDiffCache(): void;
|
|
11
|
-
export declare function aggregateFromLogStream(root: string, records: LogRecord[]): {
|
|
12
|
-
missionIdsFromLog: Set<string>;
|
|
13
|
-
legislative: number;
|
|
14
|
-
worker_trace: number;
|
|
15
|
-
bypass_audit: number;
|
|
16
|
-
firstSeen: Map<string, number>;
|
|
17
|
-
lastSeen: Map<string, number>;
|
|
18
|
-
};
|
|
19
|
-
export declare function computeTurnaround(firstSeen: Map<string, number>, lastSeen: Map<string, number>): {
|
|
20
|
-
mean: number | null;
|
|
21
|
-
median: number | null;
|
|
22
|
-
samples: number;
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=git-metrics-stream.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-metrics-stream.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics-stream.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAiBvE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AA4BD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAWtD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAAE,GACnB;IACD,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAuDA;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAWjE"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { GXT_BYPASS_NOTES_REF } from "./break-glass.js";
|
|
2
|
-
import { MSN_ID_PATTERN, WORKER_LOG_FILENAME } from "./constants.js";
|
|
3
|
-
import { parseTeacherEmailsFromEnv, commitSubjectHasMsnPrefix } from "./git-proof.js";
|
|
4
|
-
import { gitRunOk } from "./git-repo.js";
|
|
5
|
-
import { msnFromMissionPath } from "./git-metrics-missions.js";
|
|
6
|
-
const diffCache = new Map();
|
|
7
|
-
export function streamLogRecords(root, ref) {
|
|
8
|
-
const r = gitRunOk(root, ["log", ref, "-z", "--reverse", "--format=%H%x1f%s%x1f%aE%x1f%cI"], 64 * 1024 * 1024);
|
|
9
|
-
if (!r.ok || !r.stdout.trim())
|
|
10
|
-
return [];
|
|
11
|
-
const records = [];
|
|
12
|
-
for (const chunk of r.stdout.split("\0").filter((c) => c.length > 0)) {
|
|
13
|
-
const parts = chunk.split("\x1f");
|
|
14
|
-
if (parts.length < 4)
|
|
15
|
-
continue;
|
|
16
|
-
const [hash, subject, email, ts] = parts;
|
|
17
|
-
if (!hash || !subject || !email || !ts)
|
|
18
|
-
continue;
|
|
19
|
-
records.push({ hash, subject, email, ts });
|
|
20
|
-
}
|
|
21
|
-
return records;
|
|
22
|
-
}
|
|
23
|
-
export function countBypassNotes(root) {
|
|
24
|
-
const r = gitRunOk(root, ["notes", `--ref=${GXT_BYPASS_NOTES_REF}`, "list"]);
|
|
25
|
-
if (!r.ok || !r.stdout.trim())
|
|
26
|
-
return 0;
|
|
27
|
-
return r.stdout.split("\n").filter((l) => l.trim().length > 0).length;
|
|
28
|
-
}
|
|
29
|
-
function commitChangedPaths(root, hash) {
|
|
30
|
-
const cached = diffCache.get(hash);
|
|
31
|
-
if (cached)
|
|
32
|
-
return cached;
|
|
33
|
-
const r = gitRunOk(root, ["diff-tree", "--no-commit-id", "--name-only", "-r", hash]);
|
|
34
|
-
const paths = r.ok
|
|
35
|
-
? r.stdout
|
|
36
|
-
.split("\n")
|
|
37
|
-
.map((p) => p.trim().replace(/\\/g, "/"))
|
|
38
|
-
.filter((p) => p.length > 0)
|
|
39
|
-
: [];
|
|
40
|
-
diffCache.set(hash, paths);
|
|
41
|
-
return paths;
|
|
42
|
-
}
|
|
43
|
-
function isTeacherEmail(email) {
|
|
44
|
-
const allow = parseTeacherEmailsFromEnv();
|
|
45
|
-
if (allow.length === 0)
|
|
46
|
-
return false;
|
|
47
|
-
return allow.includes(email.trim().toLowerCase());
|
|
48
|
-
}
|
|
49
|
-
function subjectMsnId(subject) {
|
|
50
|
-
const m = subject.trim().match(/^\[(MSN-\d{4})\]/);
|
|
51
|
-
const id = m?.[1];
|
|
52
|
-
return id && MSN_ID_PATTERN.test(id) ? id : null;
|
|
53
|
-
}
|
|
54
|
-
export function median(values) {
|
|
55
|
-
if (values.length === 0)
|
|
56
|
-
return null;
|
|
57
|
-
const sorted = [...values].sort((a, b) => a - b);
|
|
58
|
-
const mid = Math.floor(sorted.length / 2);
|
|
59
|
-
if (sorted.length % 2 === 0) {
|
|
60
|
-
const a = sorted[mid - 1];
|
|
61
|
-
const b = sorted[mid];
|
|
62
|
-
if (a === undefined || b === undefined)
|
|
63
|
-
return null;
|
|
64
|
-
return (a + b) / 2;
|
|
65
|
-
}
|
|
66
|
-
return sorted[mid] ?? null;
|
|
67
|
-
}
|
|
68
|
-
export function clearMetricsDiffCache() {
|
|
69
|
-
diffCache.clear();
|
|
70
|
-
}
|
|
71
|
-
export function aggregateFromLogStream(root, records) {
|
|
72
|
-
const missionIdsFromLog = new Set();
|
|
73
|
-
let legislative = 0;
|
|
74
|
-
let worker_trace = 0;
|
|
75
|
-
let bypass_audit = 0;
|
|
76
|
-
const firstSeen = new Map();
|
|
77
|
-
const lastSeen = new Map();
|
|
78
|
-
for (const rec of records) {
|
|
79
|
-
const ts = Date.parse(rec.ts);
|
|
80
|
-
if (!Number.isFinite(ts))
|
|
81
|
-
continue;
|
|
82
|
-
if (rec.subject.trim().startsWith("[GXT-AUDIT] break-glass:")) {
|
|
83
|
-
bypass_audit++;
|
|
84
|
-
}
|
|
85
|
-
const msnFromSubject = subjectMsnId(rec.subject);
|
|
86
|
-
if (msnFromSubject)
|
|
87
|
-
missionIdsFromLog.add(msnFromSubject);
|
|
88
|
-
const paths = commitChangedPaths(root, rec.hash);
|
|
89
|
-
let touchesMission = false;
|
|
90
|
-
let touchesWorkerLog = false;
|
|
91
|
-
for (const p of paths) {
|
|
92
|
-
if (p === WORKER_LOG_FILENAME)
|
|
93
|
-
touchesWorkerLog = true;
|
|
94
|
-
const msnFromPath = msnFromMissionPath(p);
|
|
95
|
-
if (msnFromPath) {
|
|
96
|
-
touchesMission = true;
|
|
97
|
-
if (!firstSeen.has(msnFromPath))
|
|
98
|
-
firstSeen.set(msnFromPath, ts);
|
|
99
|
-
missionIdsFromLog.add(msnFromPath);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (msnFromSubject &&
|
|
103
|
-
commitSubjectHasMsnPrefix(rec.subject, msnFromSubject) &&
|
|
104
|
-
isTeacherEmail(rec.email) &&
|
|
105
|
-
touchesMission) {
|
|
106
|
-
legislative++;
|
|
107
|
-
}
|
|
108
|
-
if (touchesWorkerLog && !touchesMission)
|
|
109
|
-
worker_trace++;
|
|
110
|
-
if (msnFromSubject)
|
|
111
|
-
lastSeen.set(msnFromSubject, ts);
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
missionIdsFromLog,
|
|
115
|
-
legislative,
|
|
116
|
-
worker_trace,
|
|
117
|
-
bypass_audit,
|
|
118
|
-
firstSeen,
|
|
119
|
-
lastSeen,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
export function computeTurnaround(firstSeen, lastSeen) {
|
|
123
|
-
const deltas = [];
|
|
124
|
-
for (const [msn, end] of lastSeen) {
|
|
125
|
-
const start = firstSeen.get(msn);
|
|
126
|
-
if (start === undefined)
|
|
127
|
-
continue;
|
|
128
|
-
const delta = (end - start) / 1000;
|
|
129
|
-
if (Number.isFinite(delta) && delta >= 0)
|
|
130
|
-
deltas.push(delta);
|
|
131
|
-
}
|
|
132
|
-
if (deltas.length === 0)
|
|
133
|
-
return { mean: null, median: null, samples: 0 };
|
|
134
|
-
const sum = deltas.reduce((a, b) => a + b, 0);
|
|
135
|
-
return { mean: sum / deltas.length, median: median(deltas), samples: deltas.length };
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=git-metrics-stream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-metrics-stream.js","sourceRoot":"","sources":["../../../src/cli/lib/git-metrics-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface GitRunResult {
|
|
2
|
-
ok: boolean;
|
|
3
|
-
stdout: string;
|
|
4
|
-
stderr: string;
|
|
5
|
-
status: number | null;
|
|
6
|
-
}
|
|
7
|
-
/** Run git in repository root (`git -C root ...args`). */
|
|
8
|
-
export declare function gitRun(repoRoot: string, args: string[], maxBuffer?: number): GitRunResult;
|
|
9
|
-
export declare function gitRunOk(repoRoot: string, args: string[], maxBuffer?: number): {
|
|
10
|
-
ok: boolean;
|
|
11
|
-
stdout: string;
|
|
12
|
-
};
|
|
13
|
-
export declare function gitRevParse(repoRoot: string, ref: string): string | null;
|
|
14
|
-
export declare function gitHead(repoRoot: string): string | null;
|
|
15
|
-
export declare function gitLogSubjects(repoRoot: string, grep: string, limit: number): string[];
|
|
16
|
-
export declare function gitConfigGet(repoRoot: string, key: string): string | null;
|
|
17
|
-
export type GitDiffSinceCommitResult = {
|
|
18
|
-
ok: true;
|
|
19
|
-
paths: string[];
|
|
20
|
-
} | {
|
|
21
|
-
ok: false;
|
|
22
|
-
stderr: string;
|
|
23
|
-
};
|
|
24
|
-
/** Paths under tmvcRoots that differ between ref and the working tree; empty paths = fresh. */
|
|
25
|
-
export declare function gitDiffNameOnlySinceCommit(repoRoot: string, commit: string, tmvcRoots: readonly string[]): GitDiffSinceCommitResult;
|
|
26
|
-
//# sourceMappingURL=git-repo.d.ts.map
|