@jeger-ai/opengantry 1.0.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/LICENSE +235 -0
- package/NOTICE +16 -0
- package/README.md +337 -0
- package/dist/cli/commands/arch.d.ts +19 -0
- package/dist/cli/commands/arch.d.ts.map +1 -0
- package/dist/cli/commands/arch.js +86 -0
- package/dist/cli/commands/arch.js.map +1 -0
- package/dist/cli/commands/check.d.ts +2 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +16 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +12 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +40 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +18 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +185 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/legislate.d.ts +21 -0
- package/dist/cli/commands/legislate.d.ts.map +1 -0
- package/dist/cli/commands/legislate.js +143 -0
- package/dist/cli/commands/legislate.js.map +1 -0
- package/dist/cli/commands/mcp-serve.d.ts +2 -0
- package/dist/cli/commands/mcp-serve.d.ts.map +1 -0
- package/dist/cli/commands/mcp-serve.js +14 -0
- package/dist/cli/commands/mcp-serve.js.map +1 -0
- package/dist/cli/commands/metrics.d.ts +6 -0
- package/dist/cli/commands/metrics.d.ts.map +1 -0
- package/dist/cli/commands/metrics.js +20 -0
- package/dist/cli/commands/metrics.js.map +1 -0
- package/dist/cli/commands/mission.d.ts +3 -0
- package/dist/cli/commands/mission.d.ts.map +1 -0
- package/dist/cli/commands/mission.js +29 -0
- package/dist/cli/commands/mission.js.map +1 -0
- package/dist/cli/commands/onboarding.d.ts +2 -0
- package/dist/cli/commands/onboarding.d.ts.map +1 -0
- package/dist/cli/commands/onboarding.js +85 -0
- package/dist/cli/commands/onboarding.js.map +1 -0
- package/dist/cli/commands/runtime.d.ts +19 -0
- package/dist/cli/commands/runtime.d.ts.map +1 -0
- package/dist/cli/commands/runtime.js +101 -0
- package/dist/cli/commands/runtime.js.map +1 -0
- package/dist/cli/commands/start.d.ts +4 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +3 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +8 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +65 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/teacher.d.ts +11 -0
- package/dist/cli/commands/teacher.d.ts.map +1 -0
- package/dist/cli/commands/teacher.js +48 -0
- package/dist/cli/commands/teacher.js.map +1 -0
- package/dist/cli/commands/triage.d.ts +10 -0
- package/dist/cli/commands/triage.d.ts.map +1 -0
- package/dist/cli/commands/triage.js +48 -0
- package/dist/cli/commands/triage.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +10 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +89 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +6 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +33 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +13 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/agent-error.d.ts +20 -0
- package/dist/cli/lib/agent-error.d.ts.map +1 -0
- package/dist/cli/lib/agent-error.js +58 -0
- package/dist/cli/lib/agent-error.js.map +1 -0
- package/dist/cli/lib/architecture-credential.d.ts +22 -0
- package/dist/cli/lib/architecture-credential.d.ts.map +1 -0
- package/dist/cli/lib/architecture-credential.js +198 -0
- package/dist/cli/lib/architecture-credential.js.map +1 -0
- package/dist/cli/lib/architecture-pointer-discovery.d.ts +7 -0
- package/dist/cli/lib/architecture-pointer-discovery.d.ts.map +1 -0
- package/dist/cli/lib/architecture-pointer-discovery.js +60 -0
- package/dist/cli/lib/architecture-pointer-discovery.js.map +1 -0
- package/dist/cli/lib/architecture-pointer-doctor.d.ts +3 -0
- package/dist/cli/lib/architecture-pointer-doctor.d.ts.map +1 -0
- package/dist/cli/lib/architecture-pointer-doctor.js +114 -0
- package/dist/cli/lib/architecture-pointer-doctor.js.map +1 -0
- package/dist/cli/lib/architecture-pointer-schema.d.ts +5 -0
- package/dist/cli/lib/architecture-pointer-schema.d.ts.map +1 -0
- package/dist/cli/lib/architecture-pointer-schema.js +137 -0
- package/dist/cli/lib/architecture-pointer-schema.js.map +1 -0
- package/dist/cli/lib/architecture-pointer-types.d.ts +24 -0
- package/dist/cli/lib/architecture-pointer-types.d.ts.map +1 -0
- package/dist/cli/lib/architecture-pointer-types.js +7 -0
- package/dist/cli/lib/architecture-pointer-types.js.map +1 -0
- package/dist/cli/lib/architecture-pointer.d.ts +7 -0
- package/dist/cli/lib/architecture-pointer.d.ts.map +1 -0
- package/dist/cli/lib/architecture-pointer.js +10 -0
- package/dist/cli/lib/architecture-pointer.js.map +1 -0
- package/dist/cli/lib/atomic-fs.d.ts +9 -0
- package/dist/cli/lib/atomic-fs.d.ts.map +1 -0
- package/dist/cli/lib/atomic-fs.js +63 -0
- package/dist/cli/lib/atomic-fs.js.map +1 -0
- package/dist/cli/lib/audience-output.d.ts +18 -0
- package/dist/cli/lib/audience-output.d.ts.map +1 -0
- package/dist/cli/lib/audience-output.js +80 -0
- package/dist/cli/lib/audience-output.js.map +1 -0
- package/dist/cli/lib/break-glass.d.ts +25 -0
- package/dist/cli/lib/break-glass.d.ts.map +1 -0
- package/dist/cli/lib/break-glass.js +134 -0
- package/dist/cli/lib/break-glass.js.map +1 -0
- package/dist/cli/lib/cli-io.d.ts +9 -0
- package/dist/cli/lib/cli-io.d.ts.map +1 -0
- package/dist/cli/lib/cli-io.js +38 -0
- package/dist/cli/lib/cli-io.js.map +1 -0
- package/dist/cli/lib/cli-timeout.d.ts +9 -0
- package/dist/cli/lib/cli-timeout.d.ts.map +1 -0
- package/dist/cli/lib/cli-timeout.js +17 -0
- package/dist/cli/lib/cli-timeout.js.map +1 -0
- package/dist/cli/lib/constants.d.ts +26 -0
- package/dist/cli/lib/constants.d.ts.map +1 -0
- package/dist/cli/lib/constants.js +26 -0
- package/dist/cli/lib/constants.js.map +1 -0
- package/dist/cli/lib/dirty-missions.d.ts +8 -0
- package/dist/cli/lib/dirty-missions.d.ts.map +1 -0
- package/dist/cli/lib/dirty-missions.js +65 -0
- package/dist/cli/lib/dirty-missions.js.map +1 -0
- package/dist/cli/lib/doctor-checks.d.ts +16 -0
- package/dist/cli/lib/doctor-checks.d.ts.map +1 -0
- package/dist/cli/lib/doctor-checks.js +138 -0
- package/dist/cli/lib/doctor-checks.js.map +1 -0
- package/dist/cli/lib/doctor-integration-checks.d.ts +5 -0
- package/dist/cli/lib/doctor-integration-checks.d.ts.map +1 -0
- package/dist/cli/lib/doctor-integration-checks.js +88 -0
- package/dist/cli/lib/doctor-integration-checks.js.map +1 -0
- package/dist/cli/lib/doctor-orchestration.d.ts +10 -0
- package/dist/cli/lib/doctor-orchestration.d.ts.map +1 -0
- package/dist/cli/lib/doctor-orchestration.js +25 -0
- package/dist/cli/lib/doctor-orchestration.js.map +1 -0
- package/dist/cli/lib/draft-token.d.ts +37 -0
- package/dist/cli/lib/draft-token.d.ts.map +1 -0
- package/dist/cli/lib/draft-token.js +171 -0
- package/dist/cli/lib/draft-token.js.map +1 -0
- package/dist/cli/lib/fix-hints.d.ts +51 -0
- package/dist/cli/lib/fix-hints.d.ts.map +1 -0
- package/dist/cli/lib/fix-hints.js +197 -0
- package/dist/cli/lib/fix-hints.js.map +1 -0
- package/dist/cli/lib/forbidden-scan.d.ts +18 -0
- package/dist/cli/lib/forbidden-scan.d.ts.map +1 -0
- package/dist/cli/lib/forbidden-scan.js +96 -0
- package/dist/cli/lib/forbidden-scan.js.map +1 -0
- package/dist/cli/lib/gate.d.ts +10 -0
- package/dist/cli/lib/gate.d.ts.map +1 -0
- package/dist/cli/lib/gate.js +30 -0
- package/dist/cli/lib/gate.js.map +1 -0
- package/dist/cli/lib/git-metrics-missions.d.ts +3 -0
- package/dist/cli/lib/git-metrics-missions.d.ts.map +1 -0
- package/dist/cli/lib/git-metrics-missions.js +51 -0
- package/dist/cli/lib/git-metrics-missions.js.map +1 -0
- package/dist/cli/lib/git-metrics-stream.d.ts +24 -0
- package/dist/cli/lib/git-metrics-stream.d.ts.map +1 -0
- package/dist/cli/lib/git-metrics-stream.js +137 -0
- package/dist/cli/lib/git-metrics-stream.js.map +1 -0
- package/dist/cli/lib/git-metrics.d.ts +18 -0
- package/dist/cli/lib/git-metrics.d.ts.map +1 -0
- package/dist/cli/lib/git-metrics.js +39 -0
- package/dist/cli/lib/git-metrics.js.map +1 -0
- package/dist/cli/lib/git-proof-errors.d.ts +3 -0
- package/dist/cli/lib/git-proof-errors.d.ts.map +1 -0
- package/dist/cli/lib/git-proof-errors.js +7 -0
- package/dist/cli/lib/git-proof-errors.js.map +1 -0
- package/dist/cli/lib/git-proof.d.ts +37 -0
- package/dist/cli/lib/git-proof.d.ts.map +1 -0
- package/dist/cli/lib/git-proof.js +147 -0
- package/dist/cli/lib/git-proof.js.map +1 -0
- package/dist/cli/lib/git-repo.d.ts +17 -0
- package/dist/cli/lib/git-repo.d.ts.map +1 -0
- package/dist/cli/lib/git-repo.js +39 -0
- package/dist/cli/lib/git-repo.js.map +1 -0
- package/dist/cli/lib/git.d.ts +2 -0
- package/dist/cli/lib/git.d.ts.map +1 -0
- package/dist/cli/lib/git.js +19 -0
- package/dist/cli/lib/git.js.map +1 -0
- package/dist/cli/lib/gitignore-gxt.d.ts +2 -0
- package/dist/cli/lib/gitignore-gxt.d.ts.map +1 -0
- package/dist/cli/lib/gitignore-gxt.js +24 -0
- package/dist/cli/lib/gitignore-gxt.js.map +1 -0
- package/dist/cli/lib/gxt-error-codes.d.ts +19 -0
- package/dist/cli/lib/gxt-error-codes.d.ts.map +1 -0
- package/dist/cli/lib/gxt-error-codes.js +60 -0
- package/dist/cli/lib/gxt-error-codes.js.map +1 -0
- package/dist/cli/lib/init-asset-catalog.d.ts +15 -0
- package/dist/cli/lib/init-asset-catalog.d.ts.map +1 -0
- package/dist/cli/lib/init-asset-catalog.js +163 -0
- package/dist/cli/lib/init-asset-catalog.js.map +1 -0
- package/dist/cli/lib/init-assets.d.ts +8 -0
- package/dist/cli/lib/init-assets.d.ts.map +1 -0
- package/dist/cli/lib/init-assets.js +3 -0
- package/dist/cli/lib/init-assets.js.map +1 -0
- package/dist/cli/lib/init-compose-arch-pointer.d.ts +6 -0
- package/dist/cli/lib/init-compose-arch-pointer.d.ts.map +1 -0
- package/dist/cli/lib/init-compose-arch-pointer.js +64 -0
- package/dist/cli/lib/init-compose-arch-pointer.js.map +1 -0
- package/dist/cli/lib/init-compose-doc.d.ts +5 -0
- package/dist/cli/lib/init-compose-doc.d.ts.map +1 -0
- package/dist/cli/lib/init-compose-doc.js +37 -0
- package/dist/cli/lib/init-compose-doc.js.map +1 -0
- package/dist/cli/lib/init-interactive.d.ts +8 -0
- package/dist/cli/lib/init-interactive.d.ts.map +1 -0
- package/dist/cli/lib/init-interactive.js +195 -0
- package/dist/cli/lib/init-interactive.js.map +1 -0
- package/dist/cli/lib/init-plan.d.ts +20 -0
- package/dist/cli/lib/init-plan.d.ts.map +1 -0
- package/dist/cli/lib/init-plan.js +92 -0
- package/dist/cli/lib/init-plan.js.map +1 -0
- package/dist/cli/lib/init-profile.d.ts +39 -0
- package/dist/cli/lib/init-profile.d.ts.map +1 -0
- package/dist/cli/lib/init-profile.js +93 -0
- package/dist/cli/lib/init-profile.js.map +1 -0
- package/dist/cli/lib/init-tutorial.d.ts +2 -0
- package/dist/cli/lib/init-tutorial.d.ts.map +1 -0
- package/dist/cli/lib/init-tutorial.js +156 -0
- package/dist/cli/lib/init-tutorial.js.map +1 -0
- package/dist/cli/lib/integration-compat.d.ts +24 -0
- package/dist/cli/lib/integration-compat.d.ts.map +1 -0
- package/dist/cli/lib/integration-compat.js +50 -0
- package/dist/cli/lib/integration-compat.js.map +1 -0
- package/dist/cli/lib/legislate-skill.d.ts +20 -0
- package/dist/cli/lib/legislate-skill.d.ts.map +1 -0
- package/dist/cli/lib/legislate-skill.js +30 -0
- package/dist/cli/lib/legislate-skill.js.map +1 -0
- package/dist/cli/lib/manifest.d.ts +6 -0
- package/dist/cli/lib/manifest.d.ts.map +1 -0
- package/dist/cli/lib/manifest.js +53 -0
- package/dist/cli/lib/manifest.js.map +1 -0
- package/dist/cli/lib/mcp-legislation.d.ts +82 -0
- package/dist/cli/lib/mcp-legislation.d.ts.map +1 -0
- package/dist/cli/lib/mcp-legislation.js +181 -0
- package/dist/cli/lib/mcp-legislation.js.map +1 -0
- package/dist/cli/lib/mcp-orchestration.d.ts +12 -0
- package/dist/cli/lib/mcp-orchestration.d.ts.map +1 -0
- package/dist/cli/lib/mcp-orchestration.js +54 -0
- package/dist/cli/lib/mcp-orchestration.js.map +1 -0
- package/dist/cli/lib/mcp-runtime.d.ts +60 -0
- package/dist/cli/lib/mcp-runtime.d.ts.map +1 -0
- package/dist/cli/lib/mcp-runtime.js +133 -0
- package/dist/cli/lib/mcp-runtime.js.map +1 -0
- package/dist/cli/lib/mcp-tools-register.d.ts +4 -0
- package/dist/cli/lib/mcp-tools-register.d.ts.map +1 -0
- package/dist/cli/lib/mcp-tools-register.js +78 -0
- package/dist/cli/lib/mcp-tools-register.js.map +1 -0
- package/dist/cli/lib/mcp-upgrade.d.ts +7 -0
- package/dist/cli/lib/mcp-upgrade.d.ts.map +1 -0
- package/dist/cli/lib/mcp-upgrade.js +38 -0
- package/dist/cli/lib/mcp-upgrade.js.map +1 -0
- package/dist/cli/lib/mission-emit.d.ts +7 -0
- package/dist/cli/lib/mission-emit.d.ts.map +1 -0
- package/dist/cli/lib/mission-emit.js +23 -0
- package/dist/cli/lib/mission-emit.js.map +1 -0
- package/dist/cli/lib/mission-legislative-stub.d.ts +9 -0
- package/dist/cli/lib/mission-legislative-stub.d.ts.map +1 -0
- package/dist/cli/lib/mission-legislative-stub.js +36 -0
- package/dist/cli/lib/mission-legislative-stub.js.map +1 -0
- package/dist/cli/lib/mission-markdown.d.ts +6 -0
- package/dist/cli/lib/mission-markdown.d.ts.map +1 -0
- package/dist/cli/lib/mission-markdown.js +84 -0
- package/dist/cli/lib/mission-markdown.js.map +1 -0
- package/dist/cli/lib/mission-msn.d.ts +10 -0
- package/dist/cli/lib/mission-msn.d.ts.map +1 -0
- package/dist/cli/lib/mission-msn.js +85 -0
- package/dist/cli/lib/mission-msn.js.map +1 -0
- package/dist/cli/lib/mission-parser.d.ts +6 -0
- package/dist/cli/lib/mission-parser.d.ts.map +1 -0
- package/dist/cli/lib/mission-parser.js +29 -0
- package/dist/cli/lib/mission-parser.js.map +1 -0
- package/dist/cli/lib/mission-path.d.ts +4 -0
- package/dist/cli/lib/mission-path.d.ts.map +1 -0
- package/dist/cli/lib/mission-path.js +28 -0
- package/dist/cli/lib/mission-path.js.map +1 -0
- package/dist/cli/lib/mission-resolution.d.ts +14 -0
- package/dist/cli/lib/mission-resolution.d.ts.map +1 -0
- package/dist/cli/lib/mission-resolution.js +60 -0
- package/dist/cli/lib/mission-resolution.js.map +1 -0
- package/dist/cli/lib/mission-yaml.d.ts +12 -0
- package/dist/cli/lib/mission-yaml.d.ts.map +1 -0
- package/dist/cli/lib/mission-yaml.js +96 -0
- package/dist/cli/lib/mission-yaml.js.map +1 -0
- package/dist/cli/lib/msn-allocate.d.ts +13 -0
- package/dist/cli/lib/msn-allocate.d.ts.map +1 -0
- package/dist/cli/lib/msn-allocate.js +98 -0
- package/dist/cli/lib/msn-allocate.js.map +1 -0
- package/dist/cli/lib/msn.d.ts +2 -0
- package/dist/cli/lib/msn.d.ts.map +1 -0
- package/dist/cli/lib/msn.js +5 -0
- package/dist/cli/lib/msn.js.map +1 -0
- package/dist/cli/lib/onboarding-flow.d.ts +11 -0
- package/dist/cli/lib/onboarding-flow.d.ts.map +1 -0
- package/dist/cli/lib/onboarding-flow.js +25 -0
- package/dist/cli/lib/onboarding-flow.js.map +1 -0
- package/dist/cli/lib/out-of-scope-hint.d.ts +7 -0
- package/dist/cli/lib/out-of-scope-hint.d.ts.map +1 -0
- package/dist/cli/lib/out-of-scope-hint.js +79 -0
- package/dist/cli/lib/out-of-scope-hint.js.map +1 -0
- package/dist/cli/lib/output-context.d.ts +22 -0
- package/dist/cli/lib/output-context.d.ts.map +1 -0
- package/dist/cli/lib/output-context.js +55 -0
- package/dist/cli/lib/output-context.js.map +1 -0
- package/dist/cli/lib/program-audience-hook.d.ts +4 -0
- package/dist/cli/lib/program-audience-hook.d.ts.map +1 -0
- package/dist/cli/lib/program-audience-hook.js +35 -0
- package/dist/cli/lib/program-audience-hook.js.map +1 -0
- package/dist/cli/lib/runtime-env.d.ts +23 -0
- package/dist/cli/lib/runtime-env.d.ts.map +1 -0
- package/dist/cli/lib/runtime-env.js +64 -0
- package/dist/cli/lib/runtime-env.js.map +1 -0
- package/dist/cli/lib/runtime-exec-orchestrator.d.ts +14 -0
- package/dist/cli/lib/runtime-exec-orchestrator.d.ts.map +1 -0
- package/dist/cli/lib/runtime-exec-orchestrator.js +131 -0
- package/dist/cli/lib/runtime-exec-orchestrator.js.map +1 -0
- package/dist/cli/lib/runtime-exec-process.d.ts +23 -0
- package/dist/cli/lib/runtime-exec-process.d.ts.map +1 -0
- package/dist/cli/lib/runtime-exec-process.js +55 -0
- package/dist/cli/lib/runtime-exec-process.js.map +1 -0
- package/dist/cli/lib/runtime-exec-result.d.ts +21 -0
- package/dist/cli/lib/runtime-exec-result.d.ts.map +1 -0
- package/dist/cli/lib/runtime-exec-result.js +42 -0
- package/dist/cli/lib/runtime-exec-result.js.map +1 -0
- package/dist/cli/lib/runtime-exec-worker.d.ts +18 -0
- package/dist/cli/lib/runtime-exec-worker.d.ts.map +1 -0
- package/dist/cli/lib/runtime-exec-worker.js +49 -0
- package/dist/cli/lib/runtime-exec-worker.js.map +1 -0
- package/dist/cli/lib/runtime-exec.d.ts +5 -0
- package/dist/cli/lib/runtime-exec.d.ts.map +1 -0
- package/dist/cli/lib/runtime-exec.js +5 -0
- package/dist/cli/lib/runtime-exec.js.map +1 -0
- package/dist/cli/lib/skill-sync.d.ts +11 -0
- package/dist/cli/lib/skill-sync.d.ts.map +1 -0
- package/dist/cli/lib/skill-sync.js +39 -0
- package/dist/cli/lib/skill-sync.js.map +1 -0
- package/dist/cli/lib/start-orchestration.d.ts +29 -0
- package/dist/cli/lib/start-orchestration.d.ts.map +1 -0
- package/dist/cli/lib/start-orchestration.js +176 -0
- package/dist/cli/lib/start-orchestration.js.map +1 -0
- package/dist/cli/lib/start-state.d.ts +12 -0
- package/dist/cli/lib/start-state.d.ts.map +1 -0
- package/dist/cli/lib/start-state.js +86 -0
- package/dist/cli/lib/start-state.js.map +1 -0
- package/dist/cli/lib/status-report.d.ts +21 -0
- package/dist/cli/lib/status-report.d.ts.map +1 -0
- package/dist/cli/lib/status-report.js +77 -0
- package/dist/cli/lib/status-report.js.map +1 -0
- package/dist/cli/lib/substrate-version.d.ts +22 -0
- package/dist/cli/lib/substrate-version.d.ts.map +1 -0
- package/dist/cli/lib/substrate-version.js +97 -0
- package/dist/cli/lib/substrate-version.js.map +1 -0
- package/dist/cli/lib/teacher-identity.d.ts +24 -0
- package/dist/cli/lib/teacher-identity.d.ts.map +1 -0
- package/dist/cli/lib/teacher-identity.js +123 -0
- package/dist/cli/lib/teacher-identity.js.map +1 -0
- package/dist/cli/lib/telemetry-log.d.ts +22 -0
- package/dist/cli/lib/telemetry-log.d.ts.map +1 -0
- package/dist/cli/lib/telemetry-log.js +50 -0
- package/dist/cli/lib/telemetry-log.js.map +1 -0
- package/dist/cli/lib/trace-failure-kind.d.ts +4 -0
- package/dist/cli/lib/trace-failure-kind.d.ts.map +1 -0
- package/dist/cli/lib/trace-failure-kind.js +23 -0
- package/dist/cli/lib/trace-failure-kind.js.map +1 -0
- package/dist/cli/lib/trace.d.ts +25 -0
- package/dist/cli/lib/trace.d.ts.map +1 -0
- package/dist/cli/lib/trace.js +121 -0
- package/dist/cli/lib/trace.js.map +1 -0
- package/dist/cli/lib/triage-logic.d.ts +10 -0
- package/dist/cli/lib/triage-logic.d.ts.map +1 -0
- package/dist/cli/lib/triage-logic.js +105 -0
- package/dist/cli/lib/triage-logic.js.map +1 -0
- package/dist/cli/lib/types.d.ts +62 -0
- package/dist/cli/lib/types.d.ts.map +1 -0
- package/dist/cli/lib/types.js +2 -0
- package/dist/cli/lib/types.js.map +1 -0
- package/dist/cli/lib/upgrade-apply.d.ts +15 -0
- package/dist/cli/lib/upgrade-apply.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-apply.js +122 -0
- package/dist/cli/lib/upgrade-apply.js.map +1 -0
- package/dist/cli/lib/upgrade-eligible-assets.d.ts +5 -0
- package/dist/cli/lib/upgrade-eligible-assets.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-eligible-assets.js +9 -0
- package/dist/cli/lib/upgrade-eligible-assets.js.map +1 -0
- package/dist/cli/lib/upgrade-plan.d.ts +43 -0
- package/dist/cli/lib/upgrade-plan.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-plan.js +220 -0
- package/dist/cli/lib/upgrade-plan.js.map +1 -0
- package/dist/cli/lib/upgrade-profile.d.ts +4 -0
- package/dist/cli/lib/upgrade-profile.d.ts.map +1 -0
- package/dist/cli/lib/upgrade-profile.js +27 -0
- package/dist/cli/lib/upgrade-profile.js.map +1 -0
- package/dist/cli/lib/user-error.d.ts +20 -0
- package/dist/cli/lib/user-error.d.ts.map +1 -0
- package/dist/cli/lib/user-error.js +64 -0
- package/dist/cli/lib/user-error.js.map +1 -0
- package/dist/cli/lib/verify-engine.d.ts +33 -0
- package/dist/cli/lib/verify-engine.d.ts.map +1 -0
- package/dist/cli/lib/verify-engine.js +104 -0
- package/dist/cli/lib/verify-engine.js.map +1 -0
- package/dist/cli/lib/verify-failure-presentation.d.ts +31 -0
- package/dist/cli/lib/verify-failure-presentation.d.ts.map +1 -0
- package/dist/cli/lib/verify-failure-presentation.js +93 -0
- package/dist/cli/lib/verify-failure-presentation.js.map +1 -0
- package/dist/cli/lib/verify-flow.d.ts +21 -0
- package/dist/cli/lib/verify-flow.d.ts.map +1 -0
- package/dist/cli/lib/verify-flow.js +103 -0
- package/dist/cli/lib/verify-flow.js.map +1 -0
- package/dist/cli/lib/verify-repair.d.ts +4 -0
- package/dist/cli/lib/verify-repair.d.ts.map +1 -0
- package/dist/cli/lib/verify-repair.js +61 -0
- package/dist/cli/lib/verify-repair.js.map +1 -0
- package/dist/cli/lib/verify-types.d.ts +21 -0
- package/dist/cli/lib/verify-types.d.ts.map +1 -0
- package/dist/cli/lib/verify-types.js +2 -0
- package/dist/cli/lib/verify-types.js.map +1 -0
- package/dist/cli/lib/version.gen.d.ts +4 -0
- package/dist/cli/lib/version.gen.d.ts.map +1 -0
- package/dist/cli/lib/version.gen.js +4 -0
- package/dist/cli/lib/version.gen.js.map +1 -0
- package/dist/cli/lib/worker-log-line-map.d.ts +12 -0
- package/dist/cli/lib/worker-log-line-map.d.ts.map +1 -0
- package/dist/cli/lib/worker-log-line-map.js +29 -0
- package/dist/cli/lib/worker-log-line-map.js.map +1 -0
- package/dist/cli/lib/workspace.d.ts +11 -0
- package/dist/cli/lib/workspace.d.ts.map +1 -0
- package/dist/cli/lib/workspace.js +14 -0
- package/dist/cli/lib/workspace.js.map +1 -0
- package/dist/cli/program-arch.d.ts +3 -0
- package/dist/cli/program-arch.d.ts.map +1 -0
- package/dist/cli/program-arch.js +45 -0
- package/dist/cli/program-arch.js.map +1 -0
- package/dist/cli/program-core.d.ts +3 -0
- package/dist/cli/program-core.d.ts.map +1 -0
- package/dist/cli/program-core.js +154 -0
- package/dist/cli/program-core.js.map +1 -0
- package/dist/cli/program-mcp.d.ts +3 -0
- package/dist/cli/program-mcp.d.ts.map +1 -0
- package/dist/cli/program-mcp.js +12 -0
- package/dist/cli/program-mcp.js.map +1 -0
- package/dist/cli/program-mission.d.ts +3 -0
- package/dist/cli/program-mission.d.ts.map +1 -0
- package/dist/cli/program-mission.js +77 -0
- package/dist/cli/program-mission.js.map +1 -0
- package/dist/cli/program-teacher.d.ts +3 -0
- package/dist/cli/program-teacher.d.ts.map +1 -0
- package/dist/cli/program-teacher.js +19 -0
- package/dist/cli/program-teacher.js.map +1 -0
- package/dist/cli/program-workflow.d.ts +3 -0
- package/dist/cli/program-workflow.d.ts.map +1 -0
- package/dist/cli/program-workflow.js +81 -0
- package/dist/cli/program-workflow.js.map +1 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +25 -0
- package/dist/cli/program.js.map +1 -0
- package/package.json +66 -0
- package/templates/.cursor/hooks/gxt-before-shell.sh +63 -0
- package/templates/.cursor/hooks/gxt-session-start.sh +68 -0
- package/templates/.cursor/hooks.json +15 -0
- package/templates/.cursor/mcp.json +8 -0
- package/templates/.cursor/rules/opengantry-gxt-substrate.mdc +43 -0
- package/templates/.gitagent/ARCHITECTURE.pointer.external.example.json +13 -0
- package/templates/.gitagent/ARCHITECTURE.pointer.json +9 -0
- package/templates/.gitagent/foreman/BYPASS.sha256 +2 -0
- package/templates/.gitagent/foreman/MANIFEST.json +37 -0
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +6 -0
- package/templates/.gitagent/foreman/TEACHER.allowlist.example +4 -0
- package/templates/.gitagent/missions/README.md +18 -0
- package/templates/.gitagent/teacher/ARCHITECTURE-ACCESS.md +85 -0
- package/templates/.gitagent/teacher/ARCHITECTURE-DISCOVERY.md +40 -0
- package/templates/.gitagent/teacher/MISSION-ARCHITECT.md +93 -0
- package/templates/.gitagent/teacher/MISSION.schema.yaml +80 -0
- package/templates/.gitagent/teacher/RULES.md +36 -0
- package/templates/.gitagent/teacher/WORKER_LOG.template.md +2 -0
- package/templates/.githooks/post-checkout +26 -0
- package/templates/.githooks/pre-push +53 -0
- package/templates/.github/workflows/gxt-validate.yml +129 -0
- package/templates/.gitignore.gxt +8 -0
- package/templates/AGENTS.md +24 -0
- package/templates/docs/ARCHITECTURE.md +23 -0
- package/templates/integrations/aider/.aider.conf.yml +4 -0
- package/templates/integrations/antigravity/.agent/rules/gxt.md +11 -0
- package/templates/integrations/claude-code/CLAUDE.md +9 -0
- package/templates/integrations/cline/.clinerules/gxt.md +7 -0
- package/templates/integrations/codex-cli/.codex/config.toml +3 -0
- package/templates/integrations/compatibility.json +92 -0
- package/templates/integrations/junie/.junie/guidelines.md +11 -0
- package/templates/integrations/opencode/opencode.json +3 -0
- package/templates/integrations/openhands/.openhands/microagents/gxt.md +11 -0
- package/templates/integrations/recipes/_footer.md +20 -0
- package/templates/integrations/recipes/_preamble.md +46 -0
- package/templates/integrations/recipes/aider.md +13 -0
- package/templates/integrations/recipes/antigravity.md +8 -0
- package/templates/integrations/recipes/claude-code.md +14 -0
- package/templates/integrations/recipes/cline.md +8 -0
- package/templates/integrations/recipes/codex-cli.md +16 -0
- package/templates/integrations/recipes/cursor.md +19 -0
- package/templates/integrations/recipes/junie.md +8 -0
- package/templates/integrations/recipes/opencode.md +8 -0
- package/templates/integrations/recipes/openhands.md +8 -0
- package/templates/scripts/dev-validate.sh +24 -0
- package/templates/scripts/gxt-cursor-env.sh +5 -0
- package/templates/scripts/gxt-manifest-lib.mjs +139 -0
- package/templates/scripts/gxt-pin-mission.sh +31 -0
- package/templates/scripts/gxt-resolve-mission.sh +47 -0
- package/templates/scripts/gxt-runtime-env.sh +32 -0
- package/templates/scripts/validate-gxt.sh +184 -0
- package/templates/skills/gapman.md +5 -0
- package/templates/skills/logic.md +3 -0
- package/templates/skills/substrate.md +3 -0
- package/templates/skills/ui.md +3 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { INTEGRATION_IDE_KEYS, loadIntegrationCompat, integrationWizardLabel, } from "./integration-compat.js";
|
|
5
|
+
function pathExists(repoRoot, rel) {
|
|
6
|
+
const normalized = rel.endsWith("/") ? rel.slice(0, -1) : rel;
|
|
7
|
+
return fs.existsSync(path.join(repoRoot, normalized));
|
|
8
|
+
}
|
|
9
|
+
function readCursorHooksVersion(repoRoot) {
|
|
10
|
+
const p = path.join(repoRoot, ".cursor/hooks.json");
|
|
11
|
+
if (!fs.existsSync(p))
|
|
12
|
+
return null;
|
|
13
|
+
try {
|
|
14
|
+
const j = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
15
|
+
return typeof j.version === "number" ? j.version : null;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function probeCliVersion(cmd, args) {
|
|
22
|
+
const r = spawnSync(cmd, args, { encoding: "utf8", timeout: 5000 });
|
|
23
|
+
if (r.status !== 0)
|
|
24
|
+
return null;
|
|
25
|
+
const out = `${r.stdout ?? ""}${r.stderr ?? ""}`.trim();
|
|
26
|
+
return out.length > 0 ? out.split("\n")[0].trim() : null;
|
|
27
|
+
}
|
|
28
|
+
function detectIntegrationPresent(repoRoot, key, entry) {
|
|
29
|
+
if (key === "codex-cli") {
|
|
30
|
+
// AGENTS.md is core GXT scaffold — only .codex/config.toml signals Codex CLI wiring.
|
|
31
|
+
return pathExists(repoRoot, ".codex/config.toml");
|
|
32
|
+
}
|
|
33
|
+
return entry.canonical_paths.some((p) => pathExists(repoRoot, p));
|
|
34
|
+
}
|
|
35
|
+
export function runIntegrationDoctorChecks(repoRoot, templatesRoot) {
|
|
36
|
+
const lines = [];
|
|
37
|
+
let compat;
|
|
38
|
+
try {
|
|
39
|
+
compat = loadIntegrationCompat(templatesRoot);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
lines.push({
|
|
43
|
+
level: "warn",
|
|
44
|
+
message: `integration compat manifest unavailable: ${e instanceof Error ? e.message : String(e)}`,
|
|
45
|
+
});
|
|
46
|
+
return lines;
|
|
47
|
+
}
|
|
48
|
+
const detected = [];
|
|
49
|
+
for (const key of INTEGRATION_IDE_KEYS) {
|
|
50
|
+
const entry = compat.integrations[key];
|
|
51
|
+
for (const dep of entry.deprecated_paths) {
|
|
52
|
+
if (pathExists(repoRoot, dep)) {
|
|
53
|
+
const canonical = entry.canonical_paths[0] ?? "(see .gitagent/ARCHITECTURE.pointer.json)";
|
|
54
|
+
lines.push({
|
|
55
|
+
level: "warn",
|
|
56
|
+
message: `deprecated path ${dep} — migrate to ${canonical} (${entry.display_name})`,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!detectIntegrationPresent(repoRoot, key, entry))
|
|
61
|
+
continue;
|
|
62
|
+
let label = key;
|
|
63
|
+
if (entry.cli_probe && entry.cli_probe.length >= 2) {
|
|
64
|
+
const ver = probeCliVersion(entry.cli_probe[0], entry.cli_probe.slice(1));
|
|
65
|
+
if (ver)
|
|
66
|
+
label = `${key} (${ver})`;
|
|
67
|
+
}
|
|
68
|
+
detected.push(label);
|
|
69
|
+
if (key === "cursor" && entry.hooks_schema_version != null) {
|
|
70
|
+
const hv = readCursorHooksVersion(repoRoot);
|
|
71
|
+
if (hv != null && hv !== entry.hooks_schema_version) {
|
|
72
|
+
lines.push({
|
|
73
|
+
level: "warn",
|
|
74
|
+
message: `.cursor/hooks.json version ${hv} — expected ${entry.hooks_schema_version} per integration compat`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (detected.length > 0) {
|
|
80
|
+
lines.push({ level: "ok", message: `detected agent wiring: ${detected.join(", ")}` });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
lines.push({ level: "warn", message: "no agent integration files detected — run gapman init" });
|
|
84
|
+
}
|
|
85
|
+
return lines;
|
|
86
|
+
}
|
|
87
|
+
export { integrationWizardLabel, INTEGRATION_IDE_KEYS, loadIntegrationCompat };
|
|
88
|
+
//# sourceMappingURL=doctor-integration-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-integration-checks.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-integration-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-orchestration.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/doctor-orchestration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI1F,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,CAkBd"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { runDoctorChecks, doctorLinesHasFail } from "./doctor-checks.js";
|
|
2
|
+
import { runIntegrationDoctorChecks } from "./doctor-integration-checks.js";
|
|
3
|
+
import { runArchitecturePointerDoctorChecks } from "./architecture-pointer.js";
|
|
4
|
+
import { resolveTemplateRootFromModule } from "./integration-compat.js";
|
|
5
|
+
export function collectDoctorReport(root, manifest, templatesRoot) {
|
|
6
|
+
const result = runDoctorChecks(root, manifest);
|
|
7
|
+
let lines = [...result.lines, ...runArchitecturePointerDoctorChecks(root)];
|
|
8
|
+
try {
|
|
9
|
+
const tpl = templatesRoot ?? resolveTemplateRootFromModule();
|
|
10
|
+
lines = [...lines, ...runIntegrationDoctorChecks(root, tpl)];
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
lines = [
|
|
14
|
+
...lines,
|
|
15
|
+
{ level: "warn", message: "integration compat checks skipped (templates not found)" },
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
lines,
|
|
20
|
+
hasFail: doctorLinesHasFail(lines) || result.hasFail,
|
|
21
|
+
nextStep: result.nextStep,
|
|
22
|
+
teacherAllowlistUnset: result.teacherAllowlistUnset,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=doctor-orchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-orchestration.js","sourceRoot":"","sources":["../../../src/cli/lib/doctor-orchestration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAmB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,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,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;IAC/D,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,EAAE,MAAM,CAAC,QAAQ;QACzB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const DRAFT_TOKEN_TTL_SECONDS_DEFAULT = 600;
|
|
2
|
+
export declare const DRAFT_TOKEN_TTL_SECONDS_MIN = 120;
|
|
3
|
+
export declare const DRAFT_TOKEN_TTL_SECONDS_MAX = 1800;
|
|
4
|
+
export declare const DRAFT_TOKEN_KEY_REL = ".gitagent/foreman/DRAFT_TOKEN.key";
|
|
5
|
+
export declare const DRAFT_TOKEN_REPLAY_REL = ".gitagent/history/.draft-token-replay.json";
|
|
6
|
+
export interface DraftLegislationPayload {
|
|
7
|
+
v: 1;
|
|
8
|
+
draft_id: string;
|
|
9
|
+
iat: number;
|
|
10
|
+
exp: number;
|
|
11
|
+
repo_fingerprint: string;
|
|
12
|
+
title: string;
|
|
13
|
+
msn_id: string;
|
|
14
|
+
skill_key: string;
|
|
15
|
+
gate_command: string;
|
|
16
|
+
gate_success_substring?: string;
|
|
17
|
+
}
|
|
18
|
+
export type DraftTokenErrorCode = "TOKEN_MALFORMED" | "TOKEN_SIGNATURE_INVALID" | "TOKEN_EXPIRED" | "TOKEN_REPO_MISMATCH" | "TOKEN_REPLAYED" | "TOKEN_KEY_MISSING";
|
|
19
|
+
export declare class DraftTokenError extends Error {
|
|
20
|
+
readonly code: DraftTokenErrorCode;
|
|
21
|
+
readonly retryable: boolean;
|
|
22
|
+
constructor(code: DraftTokenErrorCode, message: string, retryable?: boolean);
|
|
23
|
+
}
|
|
24
|
+
/** Deterministic JSON with sorted object keys (recursive). */
|
|
25
|
+
export declare function canonicalJson(value: unknown): string;
|
|
26
|
+
export declare function computeRepoFingerprint(root: string): string;
|
|
27
|
+
export declare function createDraftToken(root: string, input: Omit<DraftLegislationPayload, "v" | "draft_id" | "iat" | "exp" | "repo_fingerprint"> & {
|
|
28
|
+
ttlSeconds?: number;
|
|
29
|
+
}): {
|
|
30
|
+
draft_token: string;
|
|
31
|
+
payload: DraftLegislationPayload;
|
|
32
|
+
expires_at: string;
|
|
33
|
+
};
|
|
34
|
+
export declare function verifyDraftToken(root: string, draftToken: string, options?: {
|
|
35
|
+
consume?: boolean;
|
|
36
|
+
}): DraftLegislationPayload;
|
|
37
|
+
//# sourceMappingURL=draft-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-token.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/draft-token.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AACvE,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACtC,CAAC,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,yBAAyB,GACzB,eAAe,GACf,qBAAqB,GACrB,gBAAgB,GAChB,mBAAmB,CAAC;AAExB,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,UAAO;CAKzE;AAUD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUpD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO3D;AAoDD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,GAAG,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,kBAAkB,CAAC,GAAG;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA8B/E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,uBAAuB,CAgE3H"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { CLI_NAME } from "./constants.js";
|
|
5
|
+
import { gitRun } from "./git-repo.js";
|
|
6
|
+
export const DRAFT_TOKEN_TTL_SECONDS_DEFAULT = 600;
|
|
7
|
+
export const DRAFT_TOKEN_TTL_SECONDS_MIN = 120;
|
|
8
|
+
export const DRAFT_TOKEN_TTL_SECONDS_MAX = 1800;
|
|
9
|
+
export const DRAFT_TOKEN_KEY_REL = ".gitagent/foreman/DRAFT_TOKEN.key";
|
|
10
|
+
export const DRAFT_TOKEN_REPLAY_REL = ".gitagent/history/.draft-token-replay.json";
|
|
11
|
+
export class DraftTokenError extends Error {
|
|
12
|
+
code;
|
|
13
|
+
retryable;
|
|
14
|
+
constructor(code, message, retryable = true) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.code = code;
|
|
17
|
+
this.retryable = retryable;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function base64UrlEncode(buf) {
|
|
21
|
+
return buf.toString("base64url");
|
|
22
|
+
}
|
|
23
|
+
function base64UrlDecode(raw) {
|
|
24
|
+
return Buffer.from(raw, "base64url");
|
|
25
|
+
}
|
|
26
|
+
/** Deterministic JSON with sorted object keys (recursive). */
|
|
27
|
+
export function canonicalJson(value) {
|
|
28
|
+
if (value === null || typeof value !== "object") {
|
|
29
|
+
return JSON.stringify(value);
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
return `[${value.map((v) => canonicalJson(v)).join(",")}]`;
|
|
33
|
+
}
|
|
34
|
+
const obj = value;
|
|
35
|
+
const keys = Object.keys(obj).sort();
|
|
36
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalJson(obj[k])}`).join(",")}}`;
|
|
37
|
+
}
|
|
38
|
+
export function computeRepoFingerprint(root) {
|
|
39
|
+
const absRoot = path.resolve(root);
|
|
40
|
+
const head = gitRun(absRoot, ["rev-parse", "HEAD"]);
|
|
41
|
+
const toplevel = gitRun(absRoot, ["rev-parse", "--show-toplevel"]);
|
|
42
|
+
const headHash = head.ok ? head.stdout.trim() : "no-head";
|
|
43
|
+
const top = toplevel.ok ? path.resolve(toplevel.stdout.trim()) : absRoot;
|
|
44
|
+
return crypto.createHash("sha256").update(`${top}\0${headHash}`).digest("hex");
|
|
45
|
+
}
|
|
46
|
+
function draftTokenKeyPath(root) {
|
|
47
|
+
return path.join(root, DRAFT_TOKEN_KEY_REL.split("/").join(path.sep));
|
|
48
|
+
}
|
|
49
|
+
function ensureDraftTokenKey(root) {
|
|
50
|
+
const keyPath = draftTokenKeyPath(root);
|
|
51
|
+
if (fs.existsSync(keyPath)) {
|
|
52
|
+
const raw = fs.readFileSync(keyPath);
|
|
53
|
+
if (raw.length >= 32)
|
|
54
|
+
return raw;
|
|
55
|
+
}
|
|
56
|
+
fs.mkdirSync(path.dirname(keyPath), { recursive: true, mode: 0o700 });
|
|
57
|
+
const key = crypto.randomBytes(32);
|
|
58
|
+
fs.writeFileSync(keyPath, key, { mode: 0o600 });
|
|
59
|
+
try {
|
|
60
|
+
fs.chmodSync(keyPath, 0o600);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
/* best effort */
|
|
64
|
+
}
|
|
65
|
+
return key;
|
|
66
|
+
}
|
|
67
|
+
function signPayload(payload, key) {
|
|
68
|
+
const body = canonicalJson(payload);
|
|
69
|
+
return base64UrlEncode(crypto.createHmac("sha256", key).update(body, "utf8").digest());
|
|
70
|
+
}
|
|
71
|
+
function replayLedgerPath(root) {
|
|
72
|
+
return path.join(root, DRAFT_TOKEN_REPLAY_REL.split("/").join(path.sep));
|
|
73
|
+
}
|
|
74
|
+
function readReplaySet(root) {
|
|
75
|
+
const abs = replayLedgerPath(root);
|
|
76
|
+
if (!fs.existsSync(abs))
|
|
77
|
+
return new Set();
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(fs.readFileSync(abs, "utf8"));
|
|
80
|
+
return new Set(Array.isArray(parsed.used) ? parsed.used : []);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return new Set();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function markDraftUsed(root, draftId) {
|
|
87
|
+
const abs = replayLedgerPath(root);
|
|
88
|
+
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
89
|
+
const used = readReplaySet(root);
|
|
90
|
+
used.add(draftId);
|
|
91
|
+
const trimmed = [...used].slice(-500);
|
|
92
|
+
fs.writeFileSync(abs, JSON.stringify({ used: trimmed }, null, 2), "utf8");
|
|
93
|
+
}
|
|
94
|
+
export function createDraftToken(root, input) {
|
|
95
|
+
const ttlRaw = input.ttlSeconds ?? DRAFT_TOKEN_TTL_SECONDS_DEFAULT;
|
|
96
|
+
const ttl = Math.min(DRAFT_TOKEN_TTL_SECONDS_MAX, Math.max(DRAFT_TOKEN_TTL_SECONDS_MIN, ttlRaw));
|
|
97
|
+
const now = Math.floor(Date.now() / 1000);
|
|
98
|
+
const payload = {
|
|
99
|
+
v: 1,
|
|
100
|
+
draft_id: crypto.randomUUID(),
|
|
101
|
+
iat: now,
|
|
102
|
+
exp: now + ttl,
|
|
103
|
+
repo_fingerprint: computeRepoFingerprint(root),
|
|
104
|
+
title: input.title.trim(),
|
|
105
|
+
msn_id: input.msn_id.trim(),
|
|
106
|
+
skill_key: input.skill_key.trim(),
|
|
107
|
+
gate_command: input.gate_command.trim(),
|
|
108
|
+
};
|
|
109
|
+
if (input.gate_success_substring?.trim()) {
|
|
110
|
+
payload.gate_success_substring = input.gate_success_substring.trim();
|
|
111
|
+
}
|
|
112
|
+
const key = ensureDraftTokenKey(root);
|
|
113
|
+
const encoded = base64UrlEncode(Buffer.from(canonicalJson(payload), "utf8"));
|
|
114
|
+
const signature = signPayload(payload, key);
|
|
115
|
+
return {
|
|
116
|
+
draft_token: `${encoded}.${signature}`,
|
|
117
|
+
payload,
|
|
118
|
+
expires_at: new Date(payload.exp * 1000).toISOString(),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function verifyDraftToken(root, draftToken, options) {
|
|
122
|
+
const parts = draftToken.trim().split(".");
|
|
123
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
124
|
+
throw new DraftTokenError("TOKEN_MALFORMED", `${CLI_NAME} draft token malformed`, true);
|
|
125
|
+
}
|
|
126
|
+
let payloadRaw;
|
|
127
|
+
try {
|
|
128
|
+
payloadRaw = base64UrlDecode(parts[0]).toString("utf8");
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
throw new DraftTokenError("TOKEN_MALFORMED", `${CLI_NAME} draft token payload decode failed`, true);
|
|
132
|
+
}
|
|
133
|
+
let payload;
|
|
134
|
+
try {
|
|
135
|
+
payload = JSON.parse(payloadRaw);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
throw new DraftTokenError("TOKEN_MALFORMED", `${CLI_NAME} draft token payload JSON invalid`, true);
|
|
139
|
+
}
|
|
140
|
+
if (payload.v !== 1) {
|
|
141
|
+
throw new DraftTokenError("TOKEN_MALFORMED", `${CLI_NAME} draft token version unsupported`, false);
|
|
142
|
+
}
|
|
143
|
+
const keyPath = draftTokenKeyPath(root);
|
|
144
|
+
if (!fs.existsSync(keyPath)) {
|
|
145
|
+
throw new DraftTokenError("TOKEN_KEY_MISSING", `${CLI_NAME} draft token key missing at ${DRAFT_TOKEN_KEY_REL}`, false);
|
|
146
|
+
}
|
|
147
|
+
const key = fs.readFileSync(keyPath);
|
|
148
|
+
const expectedSig = signPayload(payload, key);
|
|
149
|
+
const providedSig = parts[1];
|
|
150
|
+
const expectedBuf = Buffer.from(expectedSig, "utf8");
|
|
151
|
+
const providedBuf = Buffer.from(providedSig, "utf8");
|
|
152
|
+
if (expectedBuf.length !== providedBuf.length || !crypto.timingSafeEqual(expectedBuf, providedBuf)) {
|
|
153
|
+
throw new DraftTokenError("TOKEN_SIGNATURE_INVALID", `${CLI_NAME} draft token signature invalid`, true);
|
|
154
|
+
}
|
|
155
|
+
const now = Math.floor(Date.now() / 1000);
|
|
156
|
+
if (payload.exp < now) {
|
|
157
|
+
throw new DraftTokenError("TOKEN_EXPIRED", `${CLI_NAME} draft token expired; re-run gxt_draft_legislation`, true);
|
|
158
|
+
}
|
|
159
|
+
const fingerprint = computeRepoFingerprint(root);
|
|
160
|
+
if (payload.repo_fingerprint !== fingerprint) {
|
|
161
|
+
throw new DraftTokenError("TOKEN_REPO_MISMATCH", `${CLI_NAME} draft token was issued for a different repository state`, true);
|
|
162
|
+
}
|
|
163
|
+
if (readReplaySet(root).has(payload.draft_id)) {
|
|
164
|
+
throw new DraftTokenError("TOKEN_REPLAYED", `${CLI_NAME} draft token already executed`, true);
|
|
165
|
+
}
|
|
166
|
+
if (options?.consume !== false) {
|
|
167
|
+
markDraftUsed(root, payload.draft_id);
|
|
168
|
+
}
|
|
169
|
+
return payload;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=draft-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-token.js","sourceRoot":"","sources":["../../../src/cli/lib/draft-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type GxtErrorCode } from "./gxt-error-codes.js";
|
|
2
|
+
import type { TraceFailureKind } from "./trace-failure-kind.js";
|
|
3
|
+
/** Human remediation only — never mix with machine JSON streams. */
|
|
4
|
+
export declare function logFixHint(hint: string): void;
|
|
5
|
+
export interface GitProofHintContext {
|
|
6
|
+
root?: string;
|
|
7
|
+
missionPath?: string;
|
|
8
|
+
msnId?: string;
|
|
9
|
+
repoRelMission?: string;
|
|
10
|
+
latestAuthorEmail?: string;
|
|
11
|
+
stampHash?: string;
|
|
12
|
+
stampSubject?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function parseGitProofCode(message: string): string | null;
|
|
15
|
+
export declare function hintGitProofFromMessage(message: string): string | undefined;
|
|
16
|
+
export declare function hintMissionNoGate(missionPath: string): string;
|
|
17
|
+
export declare function hintGitProof(code: string, ctx: GitProofHintContext): string;
|
|
18
|
+
export declare function hintTeacherEmails(repoRoot: string): string;
|
|
19
|
+
export declare function hintGate(command: string, missionPath: string): string;
|
|
20
|
+
export declare function hintTraceStrictTrace(missionPath: string): string;
|
|
21
|
+
export declare function hintTraceAmbiguous(workerLogPath: string, missionPath: string, traceQuote?: string): string;
|
|
22
|
+
export declare function hintTraceMissing(workerLogPath: string): string;
|
|
23
|
+
/** Mission still has legislate stub placeholder in trace_quote (status may already be PASS). */
|
|
24
|
+
export declare function hintTraceQuoteStillPlaceholder(missionPath: string, workerLogPath: string): string;
|
|
25
|
+
/** Worker loop after Teacher legislation — trace rows still PENDING. */
|
|
26
|
+
export declare function hintTracePendingSteps(workerLogPath: string, missionPath: string, gateCommand?: string): string[];
|
|
27
|
+
export declare function hintForbiddenZone(firstPath: string, missionPath: string): string;
|
|
28
|
+
export declare function hintRuntimeHumanSummary(summary: string, errorFile: string): string;
|
|
29
|
+
export type VerifyPhase = "git_proof" | "gate" | "trace" | "trace_pending";
|
|
30
|
+
export interface VerifyHintContext {
|
|
31
|
+
root?: string;
|
|
32
|
+
missionPath: string;
|
|
33
|
+
msnId?: string;
|
|
34
|
+
workerLogPath?: string;
|
|
35
|
+
gateCommand?: string;
|
|
36
|
+
gitProofMessage?: string;
|
|
37
|
+
strictTrace?: boolean;
|
|
38
|
+
/** Typed trace failure — preferred over traceFailureReason for control flow. */
|
|
39
|
+
traceKind?: TraceFailureKind;
|
|
40
|
+
/** When set and still the legislate placeholder, emit targeted hint. */
|
|
41
|
+
traceQuote?: string;
|
|
42
|
+
/** Legacy string reason — use traceKind when available. */
|
|
43
|
+
traceFailureReason?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare function hintsForVerifyPhase(phase: VerifyPhase, ctx: VerifyHintContext): {
|
|
46
|
+
error_code: GxtErrorCode;
|
|
47
|
+
fix_hints: string[];
|
|
48
|
+
next_actions: string[];
|
|
49
|
+
};
|
|
50
|
+
export declare function hintForTraceKind(traceKind: TraceFailureKind, workerLog: string, mission: string, traceQuote?: string): string;
|
|
51
|
+
//# sourceMappingURL=fix-hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-hints.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/fix-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { logInfo } from "./cli-io.js";
|
|
2
|
+
import { GXT_ERROR, mapGitProofCodeToGxt } from "./gxt-error-codes.js";
|
|
3
|
+
import { teacherIdentitySetupHint } from "./teacher-identity.js";
|
|
4
|
+
const REL_MISSIONS_PREFIX = ".gitagent/missions/";
|
|
5
|
+
/** Human remediation only — never mix with machine JSON streams. */
|
|
6
|
+
export function logFixHint(hint) {
|
|
7
|
+
logInfo(`Fix: ${hint}`);
|
|
8
|
+
}
|
|
9
|
+
const GIT_PROOF_CODE_RE = /git-proof:\s*([A-Z_]+)\s*—/;
|
|
10
|
+
export function parseGitProofCode(message) {
|
|
11
|
+
const m = GIT_PROOF_CODE_RE.exec(message);
|
|
12
|
+
return m?.[1] ?? null;
|
|
13
|
+
}
|
|
14
|
+
function parseMsnIdFromGitProofMessage(message) {
|
|
15
|
+
const m = message.match(/\[(MSN-\d{4})\]/);
|
|
16
|
+
return m?.[1];
|
|
17
|
+
}
|
|
18
|
+
export function hintGitProofFromMessage(message) {
|
|
19
|
+
const code = parseGitProofCode(message);
|
|
20
|
+
if (!code)
|
|
21
|
+
return undefined;
|
|
22
|
+
return hintGitProof(code, { msnId: parseMsnIdFromGitProofMessage(message) });
|
|
23
|
+
}
|
|
24
|
+
export function hintMissionNoGate(missionPath) {
|
|
25
|
+
return [
|
|
26
|
+
`add gate_command (YAML) or a Command row (markdown) to ${missionPath}`,
|
|
27
|
+
"see .gitagent/missions/example.verify.yaml for a working verify mission",
|
|
28
|
+
].join("; ");
|
|
29
|
+
}
|
|
30
|
+
export function hintGitProof(code, ctx) {
|
|
31
|
+
const mission = ctx.missionPath ?? "<mission>";
|
|
32
|
+
const verifyCmd = `gapman verify --mission ${mission}`;
|
|
33
|
+
const root = ctx.root ?? ".";
|
|
34
|
+
switch (code) {
|
|
35
|
+
case "MISSION_MISSING_MSN":
|
|
36
|
+
return [
|
|
37
|
+
"add msn_id / msnId (YAML), line-start [MSN-NNNN], or # Mission: MSN-NNNN",
|
|
38
|
+
"see .gitagent/missions/example.verify.yaml",
|
|
39
|
+
verifyCmd,
|
|
40
|
+
].join("; ");
|
|
41
|
+
case "TEACHER_IDENTITY_UNCONFIGURED":
|
|
42
|
+
return hintTeacherEmails(root);
|
|
43
|
+
case "NO_MSN_COMMITS": {
|
|
44
|
+
const msn = ctx.msnId ?? "MSN-NNNN";
|
|
45
|
+
return [
|
|
46
|
+
`git add ${mission} && git commit -m "[${msn}] legislate mission"`,
|
|
47
|
+
`gapman teacher set "$(git config user.email)"`,
|
|
48
|
+
verifyCmd,
|
|
49
|
+
].join("; ");
|
|
50
|
+
}
|
|
51
|
+
case "NO_TEACHER_MSN_COMMIT": {
|
|
52
|
+
const email = ctx.latestAuthorEmail ?? "$(git log -1 --format=%ae)";
|
|
53
|
+
return [
|
|
54
|
+
`gapman teacher set "${email}"`,
|
|
55
|
+
"add each Teacher email allowed to legislate in this repo",
|
|
56
|
+
verifyCmd,
|
|
57
|
+
].join("; ");
|
|
58
|
+
}
|
|
59
|
+
case "MISSION_FILE_NOT_MODIFIED_BY_TEACHER": {
|
|
60
|
+
const msn = ctx.msnId ?? "MSN-NNNN";
|
|
61
|
+
const rel = ctx.repoRelMission ?? mission;
|
|
62
|
+
return [
|
|
63
|
+
`git add ${rel} && git commit -m "[${msn}] include mission in Teacher stamp"`,
|
|
64
|
+
verifyCmd,
|
|
65
|
+
].join("; ");
|
|
66
|
+
}
|
|
67
|
+
case "MISSION_OUTSIDE_MISSIONS_DIR":
|
|
68
|
+
return `move mission under ${REL_MISSIONS_PREFIX} (got path outside missions dir)`;
|
|
69
|
+
case "MISSION_NO_GATE":
|
|
70
|
+
return hintMissionNoGate(mission);
|
|
71
|
+
default:
|
|
72
|
+
return verifyCmd;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function hintTeacherEmails(repoRoot) {
|
|
76
|
+
return teacherIdentitySetupHint(repoRoot);
|
|
77
|
+
}
|
|
78
|
+
export function hintGate(command, missionPath) {
|
|
79
|
+
return `re-run gate: ${command} # then gapman verify --mission ${missionPath}`;
|
|
80
|
+
}
|
|
81
|
+
export function hintTraceStrictTrace(missionPath) {
|
|
82
|
+
return `remove --strict-trace to allow auto line-drift resolution: gapman verify --mission ${missionPath}`;
|
|
83
|
+
}
|
|
84
|
+
export function hintTraceAmbiguous(workerLogPath, missionPath, traceQuote) {
|
|
85
|
+
if (traceQuote !== undefined && traceQuote.trim().length <= 12) {
|
|
86
|
+
return `trace_quote "${traceQuote.trim()}" matches multiple lines in ${workerLogPath} — append a unique mission-specific line (e.g. "- DoD 1: MSN-… gate passed") and set trace_quote to that full verbatim line in ${missionPath}`;
|
|
87
|
+
}
|
|
88
|
+
return `disambiguate quotes in ${workerLogPath} or re-run: gapman runtime exec --mission ${missionPath} -- <worker>`;
|
|
89
|
+
}
|
|
90
|
+
export function hintTraceMissing(workerLogPath) {
|
|
91
|
+
return `append verbatim trace_quote to ${workerLogPath} from worker flight evidence`;
|
|
92
|
+
}
|
|
93
|
+
/** Mission still has legislate stub placeholder in trace_quote (status may already be PASS). */
|
|
94
|
+
export function hintTraceQuoteStillPlaceholder(missionPath, workerLogPath) {
|
|
95
|
+
return `edit ${missionPath}: replace trace_quote placeholder with a verbatim substring from ${workerLogPath} (not the other way around)`;
|
|
96
|
+
}
|
|
97
|
+
/** Worker loop after Teacher legislation — trace rows still PENDING. */
|
|
98
|
+
export function hintTracePendingSteps(workerLogPath, missionPath, gateCommand) {
|
|
99
|
+
const verifyCmd = `gapman verify --mission ${missionPath}`;
|
|
100
|
+
const steps = [
|
|
101
|
+
`eval "$(gapman runtime env --mission ${missionPath})" then execute worker within TMVC`,
|
|
102
|
+
gateCommand
|
|
103
|
+
? `run gate (${gateCommand}); append a unique mission-specific line to ${workerLogPath} (not bare gate output if "OK" appears elsewhere)`
|
|
104
|
+
: `append a unique mission-specific evidence line to ${workerLogPath}`,
|
|
105
|
+
`edit ${missionPath}: set trace row status PASS and trace_quote to verbatim substring from ${workerLogPath}`,
|
|
106
|
+
verifyCmd,
|
|
107
|
+
];
|
|
108
|
+
return steps;
|
|
109
|
+
}
|
|
110
|
+
export function hintForbiddenZone(firstPath, missionPath) {
|
|
111
|
+
return `revert changes under ${firstPath}; stay inside GXT_TMVC_ROOTS — gapman runtime exec --mission ${missionPath}`;
|
|
112
|
+
}
|
|
113
|
+
export function hintRuntimeHumanSummary(summary, errorFile) {
|
|
114
|
+
return `${summary} See ${errorFile} (GXT_LAST_ERROR_FILE).`;
|
|
115
|
+
}
|
|
116
|
+
export function hintsForVerifyPhase(phase, ctx) {
|
|
117
|
+
switch (phase) {
|
|
118
|
+
case "git_proof":
|
|
119
|
+
return hintsForGitProofPhase(ctx);
|
|
120
|
+
case "gate":
|
|
121
|
+
return hintsForGatePhase(ctx);
|
|
122
|
+
case "trace_pending":
|
|
123
|
+
return hintsForTracePendingPhase(ctx);
|
|
124
|
+
case "trace":
|
|
125
|
+
return hintsForTracePhase(ctx);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function hintsForGitProofPhase(ctx) {
|
|
129
|
+
const mission = ctx.missionPath;
|
|
130
|
+
const verifyCmd = `gapman verify --mission ${mission}`;
|
|
131
|
+
const code = parseGitProofCode(ctx.gitProofMessage ?? "");
|
|
132
|
+
const gitCtx = {
|
|
133
|
+
root: ctx.root,
|
|
134
|
+
missionPath: mission,
|
|
135
|
+
msnId: ctx.msnId ?? parseMsnIdFromGitProofMessage(ctx.gitProofMessage ?? ""),
|
|
136
|
+
repoRelMission: mission,
|
|
137
|
+
};
|
|
138
|
+
const hint = code ? hintGitProof(code, gitCtx) : verifyCmd;
|
|
139
|
+
const nextActions = code === "NO_MSN_COMMITS" || code === "MISSION_FILE_NOT_MODIFIED_BY_TEACHER"
|
|
140
|
+
? [hint.split("; ")[0], "gapman teacher set \"$(git config user.email)\"", verifyCmd]
|
|
141
|
+
: ["gapman teacher set \"$(git config user.email)\"", verifyCmd];
|
|
142
|
+
return {
|
|
143
|
+
error_code: code ? mapGitProofCodeToGxt(code) : GXT_ERROR.MISSION_UNSTAMPED,
|
|
144
|
+
fix_hints: [hint],
|
|
145
|
+
next_actions: nextActions,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function hintsForGatePhase(ctx) {
|
|
149
|
+
const mission = ctx.missionPath;
|
|
150
|
+
const verifyCmd = `gapman verify --mission ${mission}`;
|
|
151
|
+
const gate = ctx.gateCommand ?? "<gate>";
|
|
152
|
+
return {
|
|
153
|
+
error_code: GXT_ERROR.GATE_FAILED,
|
|
154
|
+
fix_hints: [hintGate(gate, mission)],
|
|
155
|
+
next_actions: [`re-run gate: ${gate}`, verifyCmd],
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function hintsForTracePendingPhase(ctx) {
|
|
159
|
+
const mission = ctx.missionPath;
|
|
160
|
+
const workerLog = ctx.workerLogPath ?? "WORKER_LOG.md";
|
|
161
|
+
const steps = hintTracePendingSteps(workerLog, mission, ctx.gateCommand);
|
|
162
|
+
return {
|
|
163
|
+
error_code: GXT_ERROR.TRACE_PENDING,
|
|
164
|
+
fix_hints: steps.slice(0, 3),
|
|
165
|
+
next_actions: steps,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function hintsForTracePhase(ctx) {
|
|
169
|
+
const mission = ctx.missionPath;
|
|
170
|
+
const workerLog = ctx.workerLogPath ?? "WORKER_LOG.md";
|
|
171
|
+
const verifyCmd = `gapman verify --mission ${mission}`;
|
|
172
|
+
const traceKind = ctx.traceKind ?? "other";
|
|
173
|
+
const hints = [hintForTraceKind(traceKind, workerLog, mission, ctx.traceQuote)];
|
|
174
|
+
const errorCode = traceKind === "ambiguous" ? GXT_ERROR.TRACE_AMBIGUOUS : GXT_ERROR.TRACE_MISSING;
|
|
175
|
+
return {
|
|
176
|
+
error_code: errorCode,
|
|
177
|
+
fix_hints: hints,
|
|
178
|
+
next_actions: [verifyCmd, `gapman verify --mission ${mission} --fix`],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export function hintForTraceKind(traceKind, workerLog, mission, traceQuote) {
|
|
182
|
+
switch (traceKind) {
|
|
183
|
+
case "ambiguous":
|
|
184
|
+
return hintTraceAmbiguous(workerLog, mission, traceQuote);
|
|
185
|
+
case "placeholder_quote":
|
|
186
|
+
return hintTraceQuoteStillPlaceholder(mission, workerLog);
|
|
187
|
+
case "strict_line_drift":
|
|
188
|
+
return hintTraceStrictTrace(mission);
|
|
189
|
+
case "quote_missing":
|
|
190
|
+
case "worker_log_missing":
|
|
191
|
+
case "empty_quote":
|
|
192
|
+
case "anchor_mismatch":
|
|
193
|
+
case "other":
|
|
194
|
+
return hintTraceMissing(workerLog);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=fix-hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-hints.js","sourceRoot":"","sources":["../../../src/cli/lib/fix-hints.ts"],"names":[],"mappings":"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"}
|