sneakoscope 7.0.2 → 7.0.5
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 +9 -7
- package/config/codex-releases/{rust-v0.144.5.json → rust-v0.145.0.json} +14 -8
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/sks-dispatch.js +0 -3
- package/dist/cli/command-manifest-lite.js +1 -2
- package/dist/cli/command-registry.js +0 -4
- package/dist/cli/global-mode-router.js +5 -12
- package/dist/cli/install-helpers-codex-lb-chain.js +24 -2
- package/dist/cli/install-helpers-codex-lb-config.js +10 -25
- package/dist/cli/install-helpers-codex-lb-selftest-chain.js +0 -3
- package/dist/cli/install-helpers-codex-lb-selftest.js +0 -17
- package/dist/cli/install-helpers-install-support.js +1 -2
- package/dist/cli/install-helpers.js +83 -99
- package/dist/cli/router.js +22 -31
- package/dist/commands/codex-app.js +20 -2
- package/dist/commands/codex-lb.js +176 -22
- package/dist/commands/codex.js +3 -8
- package/dist/commands/conflicts.js +26 -3
- package/dist/commands/doctor.js +26 -31
- package/dist/commands/perf.js +5 -1
- package/dist/commands/zellij-slot-column-anchor.js +0 -2
- package/dist/commands/zellij-slot-pane.js +0 -7
- package/dist/commands/zellij.js +0 -2
- package/dist/config/skills-manifest.json +52 -52
- package/dist/core/agent-bridge/agent-manifest.js +192 -1
- package/dist/core/agent-bridge/agent-mode.js +0 -5
- package/dist/core/agent-bridge/host-capability-policy.js +189 -0
- package/dist/core/agent-bridge/host-capability-runtime.js +1395 -0
- package/dist/core/agent-bridge/mcp-server.js +1 -11
- package/dist/core/agents/agent-effort-policy.js +7 -10
- package/dist/core/agents/agent-orchestrator.js +0 -4
- package/dist/core/agents/agent-proof-evidence.js +0 -2
- package/dist/core/agents/agent-roster.js +6 -5
- package/dist/core/agents/agent-runner-ollama.js +0 -3
- package/dist/core/agents/agent-scheduler.js +7 -10
- package/dist/core/agents/agent-schema.js +3 -1
- package/dist/core/agents/agent-task-graph.js +4 -1
- package/dist/core/agents/agent-work-partition.js +4 -2
- package/dist/core/agents/native-cli-worker-runtime.js +5 -17
- package/dist/core/agents/work-partition/repo-inventory.js +0 -2
- package/dist/core/auto-review.js +8 -14
- package/dist/core/bench.js +0 -14
- package/dist/core/code-structure.js +0 -3
- package/dist/core/codex/agent-config-file-repair.js +0 -8
- package/dist/core/codex/codex-cli-update.js +122 -20
- package/dist/core/codex/codex-config-eperm-repair.js +0 -4
- package/dist/core/codex/codex-config-guard.js +0 -3
- package/dist/core/codex/codex-config-readability.js +0 -13
- package/dist/core/codex/codex-project-config-policy.js +0 -33
- package/dist/core/codex/codex-startup-config-postcheck.js +5 -0
- package/dist/core/codex/official-goal-mode.js +0 -2
- package/dist/core/codex-app/codex-agent-type-probe.js +31 -24
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +5 -7
- package/dist/core/codex-app/codex-app-ui-state-snapshot.js +44 -7
- package/dist/core/codex-app/glm-model-profile.js +1 -1
- package/dist/core/codex-app/glm-profile-installer.js +40 -41
- package/dist/core/codex-app/glm-profile-schema.js +7 -11
- package/dist/core/codex-app/menubar/constants.js +1 -0
- package/dist/core/codex-app/menubar/launch-agent.js +37 -1
- package/dist/core/codex-app/openrouter-activate.js +152 -0
- package/dist/core/codex-app/openrouter-provider.js +82 -0
- package/dist/core/codex-app/sks-menubar.js +0 -1
- package/dist/core/codex-app.js +14 -32
- package/dist/core/codex-compat/codex-capability-matrix.js +208 -0
- package/dist/core/codex-compat/codex-hook-output-builders.js +9 -1
- package/dist/core/codex-compat/codex-hook-output-normalizer.js +1 -1
- package/dist/core/codex-compat/codex-hook-semantic-validator.js +3 -2
- package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -2
- package/dist/core/codex-compat/codex-release-manifest.js +15 -8
- package/dist/core/codex-compat/codex-version-policy.js +77 -15
- package/dist/core/codex-control/codex-0144-capability.js +1 -1
- package/dist/core/codex-control/codex-lb-launch-recovery.js +0 -3
- package/dist/core/codex-control/codex-reliability-shield.js +0 -8
- package/dist/core/codex-control/codex-sdk-adapter.js +0 -3
- package/dist/core/codex-control/codex-sdk-config-policy.js +0 -2
- package/dist/core/codex-control/codex-sdk-env-policy.js +61 -16
- package/dist/core/codex-control/codex-task-runner.js +0 -7
- package/dist/core/codex-control/codex-thread-registry.js +0 -4
- package/dist/core/codex-lb/codex-lb-env.js +133 -24
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +0 -4
- package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +1 -1
- package/dist/core/codex-model-guard.js +0 -14
- package/dist/core/codex-native/codex-native-feature-broker.js +67 -22
- package/dist/core/codex-native/codex-native-interop-policy.js +81 -9
- package/dist/core/codex-native/confined-report-writer.js +21 -0
- package/dist/core/codex-native/core-skill-integrity.js +169 -20
- package/dist/core/codex-native/project-skill-dedupe.js +55 -13
- package/dist/core/codex-native/skill-registry-ledger.js +137 -16
- package/dist/core/codex-native/sks-skill-paths.js +185 -0
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +3 -3
- package/dist/core/commands/agent-bridge-command.js +28 -8
- package/dist/core/commands/basic-cli.js +89 -42
- package/dist/core/commands/bench-command.js +5 -1
- package/dist/core/commands/command-utils.js +0 -5
- package/dist/core/commands/image-ux-review-command.js +0 -9
- package/dist/core/commands/mad-sks-command.js +55 -208
- package/dist/core/commands/naruto-command.js +55 -21
- package/dist/core/commands/ppt-command.js +0 -9
- package/dist/core/commands/run-command.js +8 -2
- package/dist/core/commands/seo-command.js +0 -6
- package/dist/core/commands/wiki-command.js +0 -14
- package/dist/core/computer-use-live-evidence.js +0 -5
- package/dist/core/config/secret-preservation.js +0 -11
- package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +0 -2
- package/dist/core/daemon/sksd-hook-daemon.js +1 -29
- package/dist/core/daemon/sksd-hook-dispatch.js +0 -17
- package/dist/core/db-safety.js +0 -7
- package/dist/core/doctor/browser-use-repair.js +0 -2
- package/dist/core/doctor/command-alias-cleanup.js +37 -9
- package/dist/core/doctor/current-project-guidance.js +6 -3
- package/dist/core/doctor/doctor-codex-startup-repair.js +0 -3
- package/dist/core/doctor/doctor-dirty-planner.js +1 -1
- package/dist/core/doctor/doctor-readiness-matrix.js +12 -0
- package/dist/core/doctor/doctor-skill-reconcile.js +32 -0
- package/dist/core/doctor/imagegen-repair.js +0 -2
- package/dist/core/doctor/mcp-transport-collision-repair.js +0 -3
- package/dist/core/doctor/retired-auto-review-config.js +9 -1
- package/dist/core/doctor/retired-managed-residue-private.js +5 -4
- package/dist/core/doctor/retired-managed-residue-runtime.js +9 -1
- package/dist/core/doctor/skill-legacy-surface.js +351 -0
- package/dist/core/doctor/supabase-mcp-repair.js +0 -11
- package/dist/core/evaluation.js +3 -0
- package/dist/core/feature-fixture-executor.js +0 -48
- package/dist/core/feature-fixtures.js +0 -6
- package/dist/core/fsx.js +11 -12
- package/dist/core/harness-conflicts.js +177 -18
- package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +0 -5
- package/dist/core/hooks-runtime/hook-context.js +202 -0
- package/dist/core/hooks-runtime/hook-io.js +1 -12
- package/dist/core/hooks-runtime/light-turn.js +0 -2
- package/dist/core/hooks-runtime/naruto-decision-gate.js +4 -1
- package/dist/core/hooks-runtime/naruto-terminal-finalization.js +91 -0
- package/dist/core/hooks-runtime/official-subagent-lifecycle.js +369 -0
- package/dist/core/hooks-runtime/standalone-parent-host-capability.js +98 -0
- package/dist/core/hooks-runtime/subagent-context.js +59 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-contract.js +29 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-evidence.js +195 -0
- package/dist/core/hooks-runtime/subagent-skill-availability-guards.js +316 -0
- package/dist/core/hooks-runtime/subagent-skill-availability.js +217 -0
- package/dist/core/hooks-runtime.js +275 -540
- package/dist/core/image-ux-review/codex-app-generated-image-discovery.js +0 -17
- package/dist/core/image-ux-review/imagegen-adapter.js +0 -14
- package/dist/core/imagegen/imagegen-auth-readiness.js +0 -9
- package/dist/core/imagegen/imagegen-capability.js +0 -3
- package/dist/core/init/managed-skill-install.js +42 -0
- package/dist/core/init/skills.js +248 -75
- package/dist/core/init.js +19 -45
- package/dist/core/lean-engineering-policy.js +0 -2
- package/dist/core/locks/file-lock.js +0 -21
- package/dist/core/loops/loop-planner.js +0 -6
- package/dist/core/loops/loop-runtime.js +0 -1
- package/dist/core/loops/loop-worker-runtime.js +0 -19
- package/dist/core/mad-sks/executors/db-write-executor.js +0 -4
- package/dist/core/mad-sks/executors/executor-base.js +0 -10
- package/dist/core/mad-sks/immutable-harness-guard.js +0 -5
- package/dist/core/mad-sks/sql-plane/coordinator.js +0 -5
- package/dist/core/mad-sks/sql-plane/ledger.js +0 -4
- package/dist/core/mad-sks/sql-plane/lock.js +0 -4
- package/dist/core/mad-sks/sql-plane/mcp-executor.js +0 -9
- package/dist/core/mad-sks/sql-plane/policy-resolver.js +0 -2
- package/dist/core/mad-sks/sql-plane/postconditions.js +0 -4
- package/dist/core/mad-sks/sql-plane/recovery.js +0 -2
- package/dist/core/mad-sks/sql-plane/runtime-profile.js +0 -8
- package/dist/core/managed-assets/managed-assets-manifest.js +1 -7
- package/dist/core/mcp-config/health-check.js +10 -3
- package/dist/core/migration/migration-transaction-journal.js +0 -8
- package/dist/core/mission.js +0 -2
- package/dist/core/naruto/naruto-active-pool.js +0 -2
- package/dist/core/naruto/naruto-concurrency-governor.js +18 -11
- package/dist/core/naruto/naruto-real-write-proof.js +0 -4
- package/dist/core/naruto/naruto-write-e2e.js +0 -1
- package/dist/core/perf/perf-budget.js +0 -5
- package/dist/core/permission-gates.js +0 -2
- package/dist/core/pipeline-internals/runtime-core.js +15 -5
- package/dist/core/pipeline-internals/runtime-gates.js +7 -19
- package/dist/core/preflight/parallel-preflight-engine.js +1 -12
- package/dist/core/proof/evidence-collector.js +0 -2
- package/dist/core/proof/route-finalizer.js +0 -1
- package/dist/core/proof/selftest-proof-fixtures.js +0 -5
- package/dist/core/providers/openrouter/openrouter-client.js +2 -2
- package/dist/core/providers/openrouter/openrouter-provider-health.js +1 -1
- package/dist/core/providers/{glm/glm-request-cache.js → openrouter/openrouter-request-cache.js} +5 -6
- package/dist/core/providers/openrouter/openrouter-secret-store.js +0 -1
- package/dist/core/providers/openrouter/openrouter-stream.js +2 -4
- package/dist/core/questions.js +3 -3
- package/dist/core/release/gate-manifest.js +0 -5
- package/dist/core/release/package-size-budget.js +2 -2
- package/dist/core/release/release-gate-batch-runner.js +11 -2
- package/dist/core/release/release-gate-cache-v2.js +0 -4
- package/dist/core/release/release-gate-contract.js +0 -7
- package/dist/core/release/release-gate-hermetic-env.js +0 -5
- package/dist/core/release/release-pack-receipt.js +1 -0
- package/dist/core/release-parallel-full-coverage.js +0 -2
- package/dist/core/remote/ssh-worker-client.js +0 -3
- package/dist/core/research/research-adversarial-review.js +6 -2
- package/dist/core/responses-retry-policy.js +0 -10
- package/dist/core/retention.js +0 -7
- package/dist/core/routes/constants.js +0 -3
- package/dist/core/routes/model-mode-router.js +10 -19
- package/dist/core/routes.js +91 -17
- package/dist/core/safety/command-contract/contracts.js +2 -0
- package/dist/core/safety/mutation-guard.js +0 -25
- package/dist/core/safety/mutation-ledger.js +0 -9
- package/dist/core/safety/requested-scope-contract.js +0 -0
- package/dist/core/security/high-risk-contracts.js +0 -1
- package/dist/core/skills/core-skill-card.js +0 -0
- package/dist/core/skills/core-skill-deployment.js +0 -13
- package/dist/core/skills/core-skill-epoch.js +0 -11
- package/dist/core/skills/core-skill-meta-update.js +0 -6
- package/dist/core/skills/core-skill-patch-apply.js +0 -7
- package/dist/core/skills/core-skill-patch.js +0 -8
- package/dist/core/skills/core-skill-reflection.js +0 -16
- package/dist/core/skills/core-skill-runtime.js +0 -6
- package/dist/core/skills/core-skill-scorer.js +0 -7
- package/dist/core/skills/core-skill-trainer.js +0 -11
- package/dist/core/skills/core-skill-types.js +0 -9
- package/dist/core/skills/core-skill-validation.js +0 -5
- package/dist/core/skills/rejected-skill-patch-buffer.js +0 -2
- package/dist/core/stop-gate/stop-gate-check.js +0 -8
- package/dist/core/stop-gate/stop-gate-resolver.js +0 -7
- package/dist/core/stop-gate/stop-gate-writer.js +0 -5
- package/dist/core/subagents/model-policy.js +0 -7
- package/dist/core/subagents/naruto-help-contract.js +3 -2
- package/dist/core/subagents/naruto-proof-projection.js +580 -12
- package/dist/core/subagents/official-subagent-config.js +256 -40
- package/dist/core/subagents/official-subagent-preparation.js +11 -7
- package/dist/core/subagents/official-subagent-prompt.js +29 -0
- package/dist/core/subagents/official-subagent-runner.js +379 -39
- package/dist/core/subagents/subagent-evidence.js +378 -9
- package/dist/core/subagents/terminology.js +11 -6
- package/dist/core/subagents/thread-budget.js +6 -3
- package/dist/core/subagents/triwiki-attention.js +0 -4
- package/dist/core/subagents/wave-parent-guidance.js +54 -9
- package/dist/core/telegram/runtime.js +0 -1
- package/dist/core/triwiki/code-index-scanner.js +0 -3
- package/dist/core/triwiki/code-pack-head-freshness.js +0 -10
- package/dist/core/triwiki/code-pack.js +0 -2
- package/dist/core/triwiki/triwiki-cache-key.js +0 -1
- package/dist/core/triwiki/triwiki-proof-bank.js +0 -1
- package/dist/core/triwiki-attention.js +0 -10
- package/dist/core/triwiki-provenance.js +0 -5
- package/dist/core/triwiki-runtime.js +0 -12
- package/dist/core/triwiki-wrongness/wrongness-ledger.js +0 -7
- package/dist/core/triwiki-wrongness/wrongness-schema.js +0 -3
- package/dist/core/trust-kernel/trust-report.js +0 -7
- package/dist/core/update/update-migration-state.js +113 -61
- package/dist/core/update-check.js +2 -14
- package/dist/core/version-manager.js +43 -4
- package/dist/core/version.js +1 -1
- package/dist/core/work-order-ledger.js +0 -17
- package/dist/core/zellij/zellij-clipboard-config.js +0 -18
- package/dist/core/zellij/zellij-fake-adapter.js +16 -0
- package/dist/core/zellij/zellij-lane-renderer.js +5 -46
- package/dist/core/zellij/zellij-lane-runtime.js +0 -1
- package/dist/core/zellij/zellij-launcher.js +35 -35
- package/dist/core/zellij/zellij-official-subagent-activity.js +0 -5
- package/dist/core/zellij/zellij-official-subagent-telemetry.js +0 -5
- package/dist/core/zellij/zellij-pane-proof.js +3 -3
- package/dist/core/zellij/zellij-screen-proof.js +0 -7
- package/dist/core/zellij/zellij-slot-column-anchor.js +0 -1
- package/dist/core/zellij/zellij-slot-pane-renderer.js +0 -9
- package/dist/core/zellij/zellij-slot-telemetry.js +6 -16
- package/dist/core/zellij/zellij-ui-mode.js +0 -7
- package/dist/core/zellij/zellij-update.js +0 -29
- package/dist/core/zellij/zellij-worker-pane-manager.js +0 -39
- package/dist/native/sks-menubar/Sources/DiagnosticsViewController.swift +61 -2
- package/dist/native/sks-menubar/Sources/MCPServersViewController.swift +10 -3
- package/dist/native/sks-menubar/Sources/OverviewViewController.swift +55 -3
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +76 -0
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +273 -54
- package/dist/native/sks-menubar/Sources/RemoteTelegramViewController.swift +5 -1
- package/dist/native/sks-menubar/Sources/SettingsViewController.swift +2 -2
- package/dist/native/sks-menubar/Sources/StatusItemController.swift +28 -2
- package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +96 -13
- package/dist/scripts/agent-message-bus-reader-check.js +0 -1
- package/dist/scripts/all-feature-deep-completion-check.js +0 -1
- package/dist/scripts/appshots-thread-attachment-discovery-check.js +0 -1
- package/dist/scripts/architecture-guard-check.js +0 -1
- package/dist/scripts/build-dist.js +0 -1
- package/dist/scripts/build-once-runner-check.js +0 -1
- package/dist/scripts/canonical-test-runner.js +0 -2
- package/dist/scripts/certificate-sla-check.js +0 -1
- package/dist/scripts/changelog-check.js +0 -1
- package/dist/scripts/check-cli-entrypoint.js +0 -1
- package/dist/scripts/check-command-module-budget.js +0 -7
- package/dist/scripts/check-feature-quality.js +0 -1
- package/dist/scripts/check-legacy-free.js +0 -1
- package/dist/scripts/check-pipeline-runtime.js +0 -1
- package/dist/scripts/check-runtime-schemas.js +0 -1
- package/dist/scripts/codex-0-134-runner-truth-check.js +0 -1
- package/dist/scripts/codex-0-137-compat-check.js +0 -1
- package/dist/scripts/codex-0138-capability-artifact-check.js +0 -1
- package/dist/scripts/codex-0138-capability-check.js +0 -1
- package/dist/scripts/codex-0138-doctor-check.js +0 -1
- package/dist/scripts/codex-0138-feature-probes-check.js +0 -1
- package/dist/scripts/codex-0144-app-server-v2-check.js +5 -5
- package/dist/scripts/codex-0144-core-real-probes-check.js +0 -1
- package/dist/scripts/codex-app-handoff-check.js +0 -1
- package/dist/scripts/codex-app-handoff-launch-check.js +0 -1
- package/dist/scripts/codex-config-load-probe.js +0 -5
- package/dist/scripts/codex-control-all-pipelines-check.js +0 -1
- package/dist/scripts/codex-control-event-stream-ledger-check.js +0 -1
- package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +0 -1
- package/dist/scripts/codex-permission-profiles-check.js +0 -1
- package/dist/scripts/codex-plugin-app-template-policy-check.js +0 -1
- package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -1
- package/dist/scripts/codex-sdk-all-pipelines-check.js +0 -1
- package/dist/scripts/codex-sdk-backend-router-check.js +0 -1
- package/dist/scripts/codex-sdk-capability-check.js +0 -1
- package/dist/scripts/codex-sdk-event-stream-ledger-check.js +0 -1
- package/dist/scripts/codex-sdk-real-smoke-check.js +0 -1
- package/dist/scripts/concurrent-session-collision-check.js +9 -0
- package/dist/scripts/context7-evidence-dedupe-check.js +0 -1
- package/dist/scripts/core-skill-card-schema-check.js +0 -11
- package/dist/scripts/core-skill-deployment-snapshot-check.js +0 -10
- package/dist/scripts/core-skill-heldout-validation-check.js +0 -11
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +0 -11
- package/dist/scripts/core-skill-patch-check.js +0 -11
- package/dist/scripts/core-skill-route-runtime-integration-check.js +0 -11
- package/dist/scripts/current-command-surface-check.js +1 -1
- package/dist/scripts/current-surface-update-e2e-check.js +2 -4
- package/dist/scripts/current-upgrade-matrix-check.js +0 -1
- package/dist/scripts/dfix-fixture-check.js +0 -1
- package/dist/scripts/dfix-patch-handoff-check.js +0 -1
- package/dist/scripts/dfix-verification-check.js +0 -1
- package/dist/scripts/dfix-verification-recommendation-check.js +0 -1
- package/dist/scripts/docs-truthfulness-check.js +7 -7
- package/dist/scripts/doctor-fastpath-check.js +0 -1
- package/dist/scripts/doctor-fix-production-blackbox.js +1 -1
- package/dist/scripts/doctor-fix-proves-codex-read-check.js +0 -11
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +0 -4
- package/dist/scripts/doctor-idempotence-check.js +0 -1
- package/dist/scripts/doctor-ops-semantics-check.js +0 -1
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +1 -1
- package/dist/scripts/ensure-bin-executable.js +0 -1
- package/dist/scripts/evidence-flagship-coverage-check.js +0 -1
- package/dist/scripts/fast-codex-service-tier-proof-check.js +0 -1
- package/dist/scripts/fixtures/fake-codex-config-loader.js +0 -5
- package/dist/scripts/fsx-hotpath-check.js +0 -1
- package/dist/scripts/gate-policy-audit-check.js +1 -1
- package/dist/scripts/geo-claim-evidence-check.js +0 -1
- package/dist/scripts/geo-cli-blackbox-check.js +0 -1
- package/dist/scripts/geo-crawler-policy-check.js +0 -1
- package/dist/scripts/git-worktree-diff-envelope-check.js +0 -1
- package/dist/scripts/git-worktree-dirty-lock-check.js +0 -1
- package/dist/scripts/git-worktree-dirty-main-detection-check.js +0 -1
- package/dist/scripts/git-worktree-integration-primary-check.js +0 -1
- package/dist/scripts/git-worktree-manifest-append-check.js +0 -1
- package/dist/scripts/git-worktree-untracked-diff-check.js +0 -1
- package/dist/scripts/high-risk-contracts-check.js +0 -1
- package/dist/scripts/hook-latency-budget-check.js +0 -1
- package/dist/scripts/hook-latency-quantum-check.js +0 -1
- package/dist/scripts/image-artifact-path-contract-check.js +0 -1
- package/dist/scripts/imagegen-real-smoke-check.js +0 -1
- package/dist/scripts/import-graph-budget-check.js +0 -1
- package/dist/scripts/installed-package-smoke-check.js +0 -1
- package/dist/scripts/legacy-gate-purge-check.js +0 -1
- package/dist/scripts/lib/codex-sdk-gate-lib.js +0 -3
- package/dist/scripts/lib/ensure-dist-fresh.js +0 -1
- package/dist/scripts/lib/valid-png-fixture.js +0 -1
- package/dist/scripts/local-collab-all-pipelines-final-gpt-check.js +0 -1
- package/dist/scripts/loop-directive-check-lib.js +0 -1
- package/dist/scripts/loop-worker-fixture-child.js +0 -1
- package/dist/scripts/mad-preflight-blocks-unreadable-config-check.js +0 -10
- package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +0 -1
- package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +0 -1
- package/dist/scripts/mcp-plugin-inventory-check.js +0 -1
- package/dist/scripts/mcp-tool-naming-parity-check.js +0 -1
- package/dist/scripts/model-call-concurrency-check.js +0 -1
- package/dist/scripts/mutation-callsite-coverage-check.js +0 -5
- package/dist/scripts/naruto-codex-e2e-check.js +0 -1
- package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -1
- package/dist/scripts/official-subagent-workflow-check.js +4 -2
- package/dist/scripts/ops-diagnostics-bundle-check.js +0 -1
- package/dist/scripts/packlist-performance-check.js +1 -3
- package/dist/scripts/perf-budget-check.js +0 -1
- package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -1
- package/dist/scripts/ppt-real-export-adapter-check.js +0 -1
- package/dist/scripts/ppt-real-imagegen-smoke-check.js +0 -1
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +0 -1
- package/dist/scripts/ppt-reexport-rereview-check.js +0 -1
- package/dist/scripts/prepublish-fast-check.js +0 -23
- package/dist/scripts/prepublish-release-check-or-fast.js +0 -7
- package/dist/scripts/probe-memoization-check.js +0 -1
- package/dist/scripts/product-design-plugin-routing-check.js +0 -1
- package/dist/scripts/project-skill-dedupe-blackbox.js +36 -9
- package/dist/scripts/prompt-placeholder-guard-check.js +0 -1
- package/dist/scripts/python-codex-sdk-all-pipelines-check.js +0 -3
- package/dist/scripts/qa-loop-app-handoff-capability-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-cli-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-launch-check.js +0 -1
- package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +0 -1
- package/dist/scripts/qa-loop-budget-policy-check.js +0 -1
- package/dist/scripts/qa-loop-effort-escalation-check.js +0 -1
- package/dist/scripts/qa-loop-image-path-exposure-check.js +0 -1
- package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +0 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +0 -1
- package/dist/scripts/release-cache-input-classifier-check.js +0 -1
- package/dist/scripts/release-cache-neutralization-report-check.js +0 -1
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +0 -1
- package/dist/scripts/release-check-stamp.js +0 -4
- package/dist/scripts/release-dist-freshness-check.js +0 -1
- package/dist/scripts/release-full-parallelism-blackbox.js +3 -3
- package/dist/scripts/release-gate-batch-runner-check.js +22 -0
- package/dist/scripts/release-gate-budget-check.js +0 -6
- package/dist/scripts/release-gate-dag-runner-check.js +0 -1
- package/dist/scripts/release-latency-slo-check.js +0 -1
- package/dist/scripts/release-metadata-1-19-check.js +0 -2
- package/dist/scripts/release-metadata-check.js +0 -3
- package/dist/scripts/release-parallel-speed-budget-check.js +0 -5
- package/dist/scripts/release-proof-truth-check.js +0 -1
- package/dist/scripts/release-provenance-check.js +0 -1
- package/dist/scripts/release-real-check.js +0 -1
- package/dist/scripts/release-runtime-truth-matrix-check.js +0 -1
- package/dist/scripts/release-version-truth-check.js +0 -1
- package/dist/scripts/research-blueprint-densifier-check.js +0 -1
- package/dist/scripts/research-claim-builder-check.js +0 -1
- package/dist/scripts/research-complete-package-fixture-check.js +0 -1
- package/dist/scripts/research-final-reviewer-blackbox.js +0 -1
- package/dist/scripts/responses-retry-policy-centralized-check.js +0 -1
- package/dist/scripts/retention-apply-smoke-check.js +0 -1
- package/dist/scripts/retention-budget-check.js +0 -1
- package/dist/scripts/retention-dry-run-check.js +0 -1
- package/dist/scripts/rollback-recovery-smoke-check.js +0 -1
- package/dist/scripts/route-intent-regression-check.js +0 -1
- package/dist/scripts/runtime-current-terminal-check.js +0 -1
- package/dist/scripts/runtime-dist-parity-check.js +0 -1
- package/dist/scripts/runtime-no-src-mjs-check.js +0 -1
- package/dist/scripts/runtime-proof-summary-check.js +0 -1
- package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -15
- package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -1
- package/dist/scripts/scheduler-batch-dispatch-check.js +0 -1
- package/dist/scripts/scheduler-parallel-proof-consistency-check.js +0 -1
- package/dist/scripts/scheduler-utilization-integral-check.js +0 -1
- package/dist/scripts/search-visibility-gate-lib.js +0 -1
- package/dist/scripts/seo-audit-fixture-check.js +0 -1
- package/dist/scripts/seo-cli-blackbox-check.js +0 -1
- package/dist/scripts/seo-geo-geo-disambiguation-check.js +0 -1
- package/dist/scripts/seo-geo-route-identity-check.js +0 -1
- package/dist/scripts/seo-geo-skill-rich-content-check.js +0 -1
- package/dist/scripts/seo-marketing-truthfulness-check.js +0 -1
- package/dist/scripts/seo-metadata-sync-check.js +0 -1
- package/dist/scripts/seo-no-mutation-by-default-check.js +0 -1
- package/dist/scripts/shared-memory-fixture-check.js +0 -1
- package/dist/scripts/side-effect-runtime-report-check.js +0 -1
- package/dist/scripts/sizecheck.js +2 -3
- package/dist/scripts/sks-1-11-gate-lib.js +0 -1
- package/dist/scripts/sks-1-12-real-execution-check-lib.js +0 -1
- package/dist/scripts/sks-1-18-gate-lib.js +0 -1
- package/dist/scripts/sks-menubar-install-check.js +0 -3
- package/dist/scripts/sksd-daemon-check.js +0 -1
- package/dist/scripts/super-search-live-smoke-check.js +0 -1
- package/dist/scripts/super-search-local-http-smoke-check.js +0 -1
- package/dist/scripts/super-search-offline-contract-check.js +0 -1
- package/dist/scripts/super-search-provider-interface-check.js +0 -1
- package/dist/scripts/triwiki-cache-key-check.js +0 -1
- package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -1
- package/dist/scripts/triwiki-proof-bank-check.js +0 -1
- package/dist/scripts/triwiki-proof-card-check.js +0 -1
- package/dist/scripts/trust-fixture-check.js +0 -1
- package/dist/scripts/ultra-router-auto-router-check.js +0 -1
- package/dist/scripts/update-fastpath-check.js +0 -1
- package/dist/scripts/upgrade-migration-matrix-check.js +0 -1
- package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +0 -1
- package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -1
- package/dist/scripts/ux-review-patch-diff-recheck-check.js +0 -1
- package/dist/scripts/ux-review-real-imagegen-smoke-check.js +0 -1
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +0 -1
- package/dist/scripts/write-build-manifest.js +0 -1
- package/dist/scripts/wrongness-fixture-check.js +0 -1
- package/dist/scripts/zellij-capability-check.js +0 -1
- package/dist/scripts/zellij-developer-controls-check.js +0 -1
- package/dist/scripts/zellij-doctor-readiness-check.js +0 -13
- package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -1
- package/dist/scripts/zellij-fake-adapter-check.js +0 -1
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -1
- package/dist/scripts/zellij-lane-renderer-check.js +0 -1
- package/dist/scripts/zellij-launch-command-truth-check.js +0 -12
- package/dist/scripts/zellij-layout-valid-check.js +0 -1
- package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -1
- package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -1
- package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -1
- package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -1
- package/dist/scripts/zellij-pane-proof-check.js +0 -1
- package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -1
- package/dist/scripts/zellij-real-session-cleanup-check.js +0 -1
- package/dist/scripts/zellij-real-session-launch-check.js +0 -1
- package/dist/scripts/zellij-right-column-geometry-proof.js +0 -1
- package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -1
- package/dist/scripts/zellij-right-column-manager-check.js +0 -1
- package/dist/scripts/zellij-screen-proof-check.js +0 -1
- package/dist/scripts/zellij-slot-only-ui-check.js +0 -1
- package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -1
- package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -7
- package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -1
- package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -1
- package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -1
- package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -1
- package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -1
- package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -1
- package/dist/scripts/zellij-stacked-version-parser-check.js +0 -1
- package/dist/scripts/zellij-ui-design-check.js +0 -12
- package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -1
- package/dist/scripts/zellij-update-prompt-mode-check.js +0 -1
- package/dist/scripts/zellij-update-prompt-safety-check.js +0 -1
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -2
- package/package.json +6 -7
- package/release-gates.v2.json +426 -93
- package/schemas/codex/app-server-0.145/codex_app_server_protocol.v2.schemas.json +19611 -0
- package/dist/core/commands/glm-command.js +0 -93
- package/dist/core/providers/glm/bench/glm-bench-comparison.js +0 -47
- package/dist/core/providers/glm/bench/glm-bench-fixture.js +0 -64
- package/dist/core/providers/glm/bench/glm-bench-model-lock-proof.js +0 -52
- package/dist/core/providers/glm/bench/glm-bench-report.js +0 -74
- package/dist/core/providers/glm/bench/glm-benchmark-runner.js +0 -243
- package/dist/core/providers/glm/bench/glm-benchmark-types.js +0 -1
- package/dist/core/providers/glm/bench/glm-direct-bench-runner.js +0 -72
- package/dist/core/providers/glm/glm-52-profile.js +0 -82
- package/dist/core/providers/glm/glm-52-request.js +0 -73
- package/dist/core/providers/glm/glm-52-response-guard.js +0 -32
- package/dist/core/providers/glm/glm-52-settings.js +0 -67
- package/dist/core/providers/glm/glm-context-budget.js +0 -14
- package/dist/core/providers/glm/glm-context-cache.js +0 -8
- package/dist/core/providers/glm/glm-direct-run.js +0 -140
- package/dist/core/providers/glm/glm-interactive-launch.js +0 -4
- package/dist/core/providers/glm/glm-latency-trace.js +0 -39
- package/dist/core/providers/glm/glm-loop-guard.js +0 -30
- package/dist/core/providers/glm/glm-mad-launch.js +0 -128
- package/dist/core/providers/glm/glm-mad-mode.js +0 -269
- package/dist/core/providers/glm/glm-model-meta-cache.js +0 -18
- package/dist/core/providers/glm/glm-patch-apply.js +0 -72
- package/dist/core/providers/glm/glm-patch-parser.js +0 -18
- package/dist/core/providers/glm/glm-profile-resolver.js +0 -168
- package/dist/core/providers/glm/glm-readiness.js +0 -4
- package/dist/core/providers/glm/glm-reasoning-policy.js +0 -14
- package/dist/core/providers/glm/glm-run-controller.js +0 -65
- package/dist/core/providers/glm/glm-run-state.js +0 -10
- package/dist/core/providers/glm/glm-run-timeout.js +0 -30
- package/dist/core/providers/glm/glm-speed-context.js +0 -81
- package/dist/core/providers/glm/glm-speed-gate.js +0 -39
- package/dist/core/providers/glm/glm-speed-output-parser.js +0 -39
- package/dist/core/providers/glm/glm-tool-schema-cache.js +0 -18
- package/dist/core/providers/glm/naruto/glm-naruto-apply-transaction.js +0 -135
- package/dist/core/providers/glm/naruto/glm-naruto-artifacts.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-bench.js +0 -6
- package/dist/core/providers/glm/naruto/glm-naruto-budget.js +0 -44
- package/dist/core/providers/glm/naruto/glm-naruto-combined-patch.js +0 -48
- package/dist/core/providers/glm/naruto/glm-naruto-command.js +0 -101
- package/dist/core/providers/glm/naruto/glm-naruto-concurrency-governor.js +0 -37
- package/dist/core/providers/glm/naruto/glm-naruto-conflict-graph.js +0 -79
- package/dist/core/providers/glm/naruto/glm-naruto-critical-path.js +0 -50
- package/dist/core/providers/glm/naruto/glm-naruto-decomposer.js +0 -148
- package/dist/core/providers/glm/naruto/glm-naruto-file-lease.js +0 -22
- package/dist/core/providers/glm/naruto/glm-naruto-final-seal.js +0 -81
- package/dist/core/providers/glm/naruto/glm-naruto-finalizer.js +0 -22
- package/dist/core/providers/glm/naruto/glm-naruto-hunk-conflict.js +0 -15
- package/dist/core/providers/glm/naruto/glm-naruto-hunk-parser.js +0 -35
- package/dist/core/providers/glm/naruto/glm-naruto-isolation-policy.js +0 -37
- package/dist/core/providers/glm/naruto/glm-naruto-judge.js +0 -83
- package/dist/core/providers/glm/naruto/glm-naruto-merge-planner.js +0 -61
- package/dist/core/providers/glm/naruto/glm-naruto-metrics.js +0 -33
- package/dist/core/providers/glm/naruto/glm-naruto-orchestrator.js +0 -486
- package/dist/core/providers/glm/naruto/glm-naruto-parallelism-summary.js +0 -54
- package/dist/core/providers/glm/naruto/glm-naruto-patch-candidate-gate.js +0 -41
- package/dist/core/providers/glm/naruto/glm-naruto-patch-candidate-parser.js +0 -61
- package/dist/core/providers/glm/naruto/glm-naruto-patch-envelope.js +0 -54
- package/dist/core/providers/glm/naruto/glm-naruto-quorum.js +0 -36
- package/dist/core/providers/glm/naruto/glm-naruto-rate-limiter.js +0 -17
- package/dist/core/providers/glm/naruto/glm-naruto-repair-wave.js +0 -20
- package/dist/core/providers/glm/naruto/glm-naruto-requirement-coverage.js +0 -108
- package/dist/core/providers/glm/naruto/glm-naruto-requirement-ledger.js +0 -57
- package/dist/core/providers/glm/naruto/glm-naruto-scoreboard.js +0 -74
- package/dist/core/providers/glm/naruto/glm-naruto-secret-audit.js +0 -90
- package/dist/core/providers/glm/naruto/glm-naruto-session-id.js +0 -9
- package/dist/core/providers/glm/naruto/glm-naruto-shard-planner.js +0 -31
- package/dist/core/providers/glm/naruto/glm-naruto-stage-scheduler.js +0 -84
- package/dist/core/providers/glm/naruto/glm-naruto-targeted-checks.js +0 -75
- package/dist/core/providers/glm/naruto/glm-naruto-task-size-classifier.js +0 -11
- package/dist/core/providers/glm/naruto/glm-naruto-terminal.js +0 -43
- package/dist/core/providers/glm/naruto/glm-naruto-trace.js +0 -173
- package/dist/core/providers/glm/naruto/glm-naruto-types.js +0 -36
- package/dist/core/providers/glm/naruto/glm-naruto-usage-extractor.js +0 -30
- package/dist/core/providers/glm/naruto/glm-naruto-verifier-output.js +0 -30
- package/dist/core/providers/glm/naruto/glm-naruto-work-graph.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-worker-artifacts.js +0 -55
- package/dist/core/providers/glm/naruto/glm-naruto-worker-pool.js +0 -275
- package/dist/core/providers/glm/naruto/glm-naruto-worker-runtime.js +0 -421
- package/dist/core/providers/glm/naruto/glm-naruto-worker-scheduler.js +0 -177
- package/dist/core/providers/glm/naruto/glm-naruto-worker.js +0 -1
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-cleanup.js +0 -19
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-manager.js +0 -71
- package/dist/core/providers/glm/naruto/glm-naruto-worktree-worker.js +0 -73
- package/dist/core/providers/glm/naruto/glm-naruto-worktree.js +0 -62
- package/schemas/codex/app-server-0.144/codex_app_server_protocol.v2.schemas.json +0 -1
|
@@ -11,6 +11,8 @@ import { buildCodexHookLifecycle } from '../core/codex-app/codex-hook-lifecycle.
|
|
|
11
11
|
import { resolveCodexAppExecutionProfile } from '../core/codex-app/codex-app-execution-profile.js';
|
|
12
12
|
import { repairCodexNativeManagedAssets } from '../core/codex-native/codex-native-repair-transaction.js';
|
|
13
13
|
import { doctorCodexAppGlmProfile, installCodexAppGlmProfile } from '../core/codex-app/glm-profile-installer.js';
|
|
14
|
+
import { openRouterStatus, useOpenRouter } from '../core/codex-app/openrouter-activate.js';
|
|
15
|
+
import { OPENROUTER_DEFAULT_MODEL } from '../core/codex-app/openrouter-provider.js';
|
|
14
16
|
import { promptForOpenRouterKeyHidden, writeStoredOpenRouterKey } from '../core/providers/openrouter/openrouter-secret-store.js';
|
|
15
17
|
import { restartCodexApp } from '../core/codex-app/codex-app-restart.js';
|
|
16
18
|
export async function run(_command, args = []) {
|
|
@@ -36,7 +38,7 @@ export async function run(_command, args = []) {
|
|
|
36
38
|
if (action === 'glm-profile') {
|
|
37
39
|
const subcommand = args[1] || 'doctor';
|
|
38
40
|
const root = await sksRoot();
|
|
39
|
-
const result = subcommand === 'install' || subcommand === 'repair'
|
|
41
|
+
const result = subcommand === 'install' || subcommand === 'repair' || subcommand === 'remove'
|
|
40
42
|
? await installCodexAppGlmProfile({ root, apply: true })
|
|
41
43
|
: await doctorCodexAppGlmProfile({ root });
|
|
42
44
|
return printCodexAppResult(args, result);
|
|
@@ -58,6 +60,7 @@ export async function run(_command, args = []) {
|
|
|
58
60
|
key_preview: record.key_preview,
|
|
59
61
|
raw_key_recorded: false,
|
|
60
62
|
secret_store: 'sks-openrouter-secret-store',
|
|
63
|
+
selected: false,
|
|
61
64
|
glm_profile: profile,
|
|
62
65
|
restart_app: restart,
|
|
63
66
|
blockers: [...(profile.blockers || []), ...(restart.blockers || [])],
|
|
@@ -65,6 +68,20 @@ export async function run(_command, args = []) {
|
|
|
65
68
|
};
|
|
66
69
|
return printCodexAppResult(args, result);
|
|
67
70
|
}
|
|
71
|
+
if (action === 'use-openrouter' || action === 'use-or') {
|
|
72
|
+
const root = await sksRoot();
|
|
73
|
+
const model = readOption(args, '--model', OPENROUTER_DEFAULT_MODEL);
|
|
74
|
+
const result = await useOpenRouter({
|
|
75
|
+
root,
|
|
76
|
+
model,
|
|
77
|
+
restartApp: flag(args, '--restart-app') || flag(args, '--restart') || !flag(args, '--no-restart-app')
|
|
78
|
+
});
|
|
79
|
+
return printCodexAppResult(args, result);
|
|
80
|
+
}
|
|
81
|
+
if (action === 'openrouter-status') {
|
|
82
|
+
const result = await openRouterStatus({});
|
|
83
|
+
return printCodexAppResult(args, result);
|
|
84
|
+
}
|
|
68
85
|
if (action === 'product-design' || action === 'design-product' || action === 'ensure-product-design') {
|
|
69
86
|
const checkOnly = flag(args, '--check-only') || flag(args, '--no-install');
|
|
70
87
|
const status = await codexProductDesignPluginStatus({
|
|
@@ -125,7 +142,8 @@ export async function run(_command, args = []) {
|
|
|
125
142
|
process.exitCode = 1;
|
|
126
143
|
return;
|
|
127
144
|
}
|
|
128
|
-
console.error('Usage: sks codex-app check|status|harness-matrix|skill-sync|agent-role-sync|init-deep|hook-lifecycle|execution-profile|
|
|
145
|
+
console.error('Usage: sks codex-app check|status|harness-matrix|skill-sync|agent-role-sync|init-deep|hook-lifecycle|execution-profile|set-openrouter-key [--api-key-stdin]|use-openrouter --model <id>|openrouter-status|product-design [--check-only]|ensure-product-design|chrome-extension|pat status|remote-control [--json]');
|
|
146
|
+
console.error('Note: glm-profile is retired (strips leftover Desktop GLM profiles); use set-openrouter-key / use-openrouter.');
|
|
129
147
|
process.exitCode = 1;
|
|
130
148
|
}
|
|
131
149
|
async function readOpenRouterKeyFromArgs(args = []) {
|
|
@@ -10,6 +10,7 @@ import { buildCodexLbSetupPlan, codexLbPersistenceSummary, renderCodexLbSetupPla
|
|
|
10
10
|
import { CODEX_LB_TOOL_OUTPUT_RECOVERY_OVERRIDE_FLAG, codexLbToolOutputRecoveryOverrideAcknowledged } from '../core/codex-lb/codex-lb-tool-output-recovery.js';
|
|
11
11
|
import { restartCodexApp } from '../core/codex-app/codex-app-restart.js';
|
|
12
12
|
import { repairCodexAppFastUi } from '../core/codex-app/codex-app-fast-ui-repair.js';
|
|
13
|
+
import { loadCodexLbEnv } from '../core/codex-lb/codex-lb-env.js';
|
|
13
14
|
export async function run(command, args = []) {
|
|
14
15
|
const root = await projectRoot();
|
|
15
16
|
const action = args[0] || 'status';
|
|
@@ -48,28 +49,52 @@ export async function run(command, args = []) {
|
|
|
48
49
|
if (action === 'health' || action === 'verify-chain' || action === 'chain') {
|
|
49
50
|
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
50
51
|
const status = await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery });
|
|
51
|
-
const
|
|
52
|
-
const
|
|
52
|
+
const modelSelection = await resolveCodexLbHealthModel(status);
|
|
53
|
+
const loadedEnv = await loadCodexLbEnv({ home: path.dirname(path.dirname(status.env_path)), envPath: status.env_path });
|
|
54
|
+
const bindingBlocker = loadedEnv.credential_binding.blockers[0] || null;
|
|
55
|
+
const providerUrlMismatch = status.provider_configured === true && status.provider_base_url_matches_credential !== true;
|
|
56
|
+
const blocker = bindingBlocker
|
|
57
|
+
|| (providerUrlMismatch ? 'provider_base_url_mismatch' : null)
|
|
58
|
+
|| (!status.env_key_configured
|
|
59
|
+
? 'missing_env_key'
|
|
60
|
+
: !status.base_url
|
|
61
|
+
? 'missing_base_url'
|
|
62
|
+
: !modelSelection.model
|
|
63
|
+
? 'model_unselected'
|
|
64
|
+
: 'not_configured');
|
|
65
|
+
const chain = status.selected && status.tool_output_recovery?.ok !== true
|
|
53
66
|
? { ok: false, status: 'tool_output_recovery_blocked', codex_lb: status, tool_output_recovery: status.tool_output_recovery }
|
|
54
|
-
: status.
|
|
55
|
-
? await checkCodexLbResponseChain(status, {
|
|
67
|
+
: !bindingBlocker && !providerUrlMismatch && status.env_key_configured && loadedEnv.base_url && loadedEnv.secret_api_key && modelSelection.model
|
|
68
|
+
? await checkCodexLbResponseChain(status, {
|
|
69
|
+
force: true,
|
|
70
|
+
root,
|
|
71
|
+
fastMode: flag(args, '--fast') || flag(args, '--priority'),
|
|
72
|
+
model: modelSelection.model,
|
|
73
|
+
baseUrl: loadedEnv.base_url,
|
|
74
|
+
apiKey: loadedEnv.secret_api_key
|
|
75
|
+
})
|
|
56
76
|
: { ok: false, status: blocker, codex_lb: status };
|
|
77
|
+
const result = { ...chain, codex_lb: status, model_selection: modelSelection };
|
|
78
|
+
if (!result.ok)
|
|
79
|
+
process.exitCode = 1;
|
|
57
80
|
if (flag(args, '--json'))
|
|
58
81
|
return printJson(result);
|
|
59
82
|
console.log(`codex-lb response chain: ${result.ok ? 'ok' : `failed (${result.status})`}`);
|
|
60
|
-
if (!result.ok)
|
|
61
|
-
process.exitCode = 1;
|
|
62
83
|
return;
|
|
63
84
|
}
|
|
64
85
|
if (action === 'fast-check' || action === 'fast' || action === 'verify-fast') {
|
|
65
86
|
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
66
87
|
const status = await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery });
|
|
67
|
-
const
|
|
88
|
+
const loadedEnv = await loadCodexLbEnv({ home: path.dirname(path.dirname(status.env_path)), envPath: status.env_path });
|
|
89
|
+
const bindingBlocker = loadedEnv.credential_binding.blockers[0] || null;
|
|
90
|
+
const providerUrlMismatch = status.provider_configured === true && status.provider_base_url_matches_credential !== true;
|
|
91
|
+
const blocker = bindingBlocker || (providerUrlMismatch ? 'provider_base_url_mismatch' : null)
|
|
92
|
+
|| (!status.env_key_configured ? 'missing_env_key' : !status.base_url ? 'missing_base_url' : !status.provider_contract_ok ? 'provider_contract_drift' : 'not_configured');
|
|
68
93
|
const modelSelection = await resolveCodexLbFastCheckModel(status);
|
|
69
94
|
const chain = status.selected && status.tool_output_recovery?.ok !== true
|
|
70
95
|
? { ok: false, status: 'tool_output_recovery_blocked', codex_lb: status, tool_output_recovery: status.tool_output_recovery }
|
|
71
|
-
: status.env_key_configured &&
|
|
72
|
-
? await checkCodexLbResponseChain(status, { force: true, cache: false, root, fastMode: true, model: modelSelection.model })
|
|
96
|
+
: !bindingBlocker && !providerUrlMismatch && status.env_key_configured && loadedEnv.base_url && loadedEnv.secret_api_key && modelSelection.model
|
|
97
|
+
? await checkCodexLbResponseChain(status, { force: true, cache: false, root, fastMode: true, model: modelSelection.model, baseUrl: loadedEnv.base_url, apiKey: loadedEnv.secret_api_key })
|
|
73
98
|
: { ok: false, status: modelSelection.model ? blocker : 'model_unselected', codex_lb: status };
|
|
74
99
|
const evidence = await fastEvidenceFromChain(chain, readOption(args, '--request-log', readOption(args, '--request-log-json', null)));
|
|
75
100
|
const providerReady = status.provider_contract_ok === true;
|
|
@@ -199,21 +224,41 @@ export async function run(command, args = []) {
|
|
|
199
224
|
return;
|
|
200
225
|
}
|
|
201
226
|
if (action === 'use-codex-lb' || action === 'use-lb') {
|
|
202
|
-
const
|
|
227
|
+
const restartRequired = flag(args, '--restart-app') || flag(args, '--restart');
|
|
228
|
+
const repairOptions = {
|
|
203
229
|
forceCodexLbApiKeyAuth: true,
|
|
204
230
|
authMode: 'codex-lb',
|
|
205
231
|
forceFastMode: !flag(args, '--no-fast'),
|
|
206
232
|
allowUnverifiedToolOutputRecovery: codexLbToolOutputRecoveryOverrideAcknowledged({ args })
|
|
207
|
-
}
|
|
233
|
+
};
|
|
234
|
+
const result = await repairCodexLbAuth(repairOptions);
|
|
208
235
|
const fastUi = await repairCodexAppFastUiAfterMutation(root, Boolean(result.ok));
|
|
209
236
|
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(result.ok && fastUi.ok));
|
|
210
|
-
const
|
|
211
|
-
const
|
|
237
|
+
const postRestart = await reconcileCodexLbAfterRestart(restart, repairOptions, Boolean(result.ok && fastUi.ok), restartRequired);
|
|
238
|
+
const finalStatus = postRestart.attempted ? postRestart.stable_status : result.codex_lb;
|
|
239
|
+
const readiness = codexLbActivationReadiness(finalStatus);
|
|
240
|
+
const restartRequirement = codexLbRestartPostcondition(restart, restartRequired);
|
|
241
|
+
const restartPerformed = restartRequirement.performed;
|
|
242
|
+
const restartSatisfied = restartRequirement.satisfied;
|
|
243
|
+
const ok = Boolean(result.ok && fastUi.ok && restart?.ok !== false && restartSatisfied && postRestart.ok && readiness.ok);
|
|
244
|
+
const shaped = {
|
|
245
|
+
...result,
|
|
246
|
+
ok,
|
|
247
|
+
mode: 'codex-lb',
|
|
248
|
+
codex_lb: finalStatus,
|
|
249
|
+
readiness,
|
|
250
|
+
restart_required: restartRequired,
|
|
251
|
+
restart_performed: restartPerformed,
|
|
252
|
+
codex_app_fast_ui: fastUi,
|
|
253
|
+
restart_app: restart,
|
|
254
|
+
post_restart: postRestart
|
|
255
|
+
};
|
|
212
256
|
if (!ok)
|
|
213
257
|
process.exitCode = 1;
|
|
214
258
|
if (flag(args, '--json'))
|
|
215
259
|
return printJson(shaped);
|
|
216
|
-
|
|
260
|
+
const failureStatus = !restartSatisfied ? 'restart_not_performed' : postRestart.status || result.status;
|
|
261
|
+
console.log(ok ? 'Auth mode: codex-lb selected (API key).' : `Switch to codex-lb failed: ${failureStatus}${result.error ? `: ${result.error}` : ''}`);
|
|
217
262
|
if (restart?.status === 'restarted')
|
|
218
263
|
console.log('Codex App restarted for codex-lb auth.');
|
|
219
264
|
if (!ok)
|
|
@@ -221,12 +266,22 @@ export async function run(command, args = []) {
|
|
|
221
266
|
return;
|
|
222
267
|
}
|
|
223
268
|
if (action === 'use-oauth' || action === 'use-chatgpt') {
|
|
269
|
+
const restartRequired = flag(args, '--restart-app') || flag(args, '--restart');
|
|
224
270
|
const result = await releaseCodexLbAuthHold({ force: flag(args, '--force') });
|
|
225
271
|
const authOk = !['no_backup', 'auth_in_use', 'failed'].includes(result.status);
|
|
226
272
|
const fastUi = await repairCodexAppFastUiAfterMutation(root, authOk);
|
|
227
273
|
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(authOk && fastUi.ok));
|
|
228
|
-
const
|
|
229
|
-
const
|
|
274
|
+
const restartRequirement = codexLbRestartPostcondition(restart, restartRequired);
|
|
275
|
+
const ok = Boolean(authOk && fastUi.ok && restart?.ok !== false && restartRequirement.satisfied);
|
|
276
|
+
const shaped = {
|
|
277
|
+
...result,
|
|
278
|
+
ok,
|
|
279
|
+
mode: 'oauth',
|
|
280
|
+
restart_required: restartRequired,
|
|
281
|
+
restart_performed: restartRequirement.performed,
|
|
282
|
+
codex_app_fast_ui: fastUi,
|
|
283
|
+
restart_app: restart
|
|
284
|
+
};
|
|
230
285
|
if (!ok)
|
|
231
286
|
process.exitCode = 1;
|
|
232
287
|
if (flag(args, '--json'))
|
|
@@ -238,7 +293,9 @@ export async function run(command, args = []) {
|
|
|
238
293
|
process.exitCode = 1;
|
|
239
294
|
return;
|
|
240
295
|
}
|
|
241
|
-
console.log(
|
|
296
|
+
console.log(ok
|
|
297
|
+
? `Auth mode: ${['released', 'oauth_restored'].includes(result.status) ? 'ChatGPT OAuth restored' : result.status}.`
|
|
298
|
+
: `Switch to ChatGPT OAuth failed: ${restartRequirement.satisfied ? result.status : 'restart_not_performed'}.`);
|
|
242
299
|
if (restart?.status === 'restarted')
|
|
243
300
|
console.log('Codex App restarted for ChatGPT OAuth.');
|
|
244
301
|
if (['auth_in_use', 'failed'].includes(result.status))
|
|
@@ -421,6 +478,95 @@ async function maybeRestartCodexAppForAuthSwitch(args = [], enabled) {
|
|
|
421
478
|
const shouldRestart = requested || (!flag(args, '--json') && !flag(args, '--no-restart-app') && !flag(args, '--no-restart'));
|
|
422
479
|
return restartCodexApp({ enabled: shouldRestart });
|
|
423
480
|
}
|
|
481
|
+
export function codexLbRestartPostcondition(restart = {}, required = false) {
|
|
482
|
+
const performed = restart?.status === 'restarted';
|
|
483
|
+
return {
|
|
484
|
+
required: Boolean(required),
|
|
485
|
+
performed,
|
|
486
|
+
satisfied: !required || performed
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
async function reconcileCodexLbAfterRestart(restart, repairOptions, enabled, restartRequired = false) {
|
|
490
|
+
if (!enabled || restart?.status !== 'restarted') {
|
|
491
|
+
const restartRequirement = codexLbRestartPostcondition(restart, restartRequired);
|
|
492
|
+
return {
|
|
493
|
+
schema: 'sks.codex-lb-post-restart.v1',
|
|
494
|
+
ok: Boolean(enabled && restart?.ok !== false && restartRequirement.satisfied),
|
|
495
|
+
attempted: false,
|
|
496
|
+
status: restartRequired && !restartRequirement.performed ? 'restart_not_performed' : 'skipped',
|
|
497
|
+
reason: !enabled ? 'previous_step_failed' : restart?.reason || restart?.status || 'restart_not_performed',
|
|
498
|
+
attempts: 0,
|
|
499
|
+
observations: [],
|
|
500
|
+
selected: null,
|
|
501
|
+
provider_ready: null,
|
|
502
|
+
auth_routing_coherent: null,
|
|
503
|
+
shared_openai_routing_safe: null,
|
|
504
|
+
reconcile: null,
|
|
505
|
+
codex_lb: null,
|
|
506
|
+
repair: null,
|
|
507
|
+
stable_status: null,
|
|
508
|
+
readiness: null
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
await codexLbRestartSettle(750);
|
|
512
|
+
const repair = await repairCodexLbAuth(repairOptions);
|
|
513
|
+
const observations = [];
|
|
514
|
+
let stableStatus = null;
|
|
515
|
+
for (let attempt = 1; attempt <= 3; attempt += 1) {
|
|
516
|
+
if (attempt > 1)
|
|
517
|
+
await codexLbRestartSettle(750);
|
|
518
|
+
stableStatus = await codexLbStatus({
|
|
519
|
+
probeToolOutputRecovery: false
|
|
520
|
+
});
|
|
521
|
+
observations.push({ attempt, readiness: codexLbActivationReadiness(stableStatus) });
|
|
522
|
+
}
|
|
523
|
+
const readiness = codexLbActivationReadiness(stableStatus);
|
|
524
|
+
const finalTwoReady = observations.slice(-2).every((observation) => observation.readiness.ok === true);
|
|
525
|
+
const regressed = observations.some((observation, index) => index > 0
|
|
526
|
+
&& observations[index - 1].readiness.ok === true
|
|
527
|
+
&& observation.readiness.ok !== true);
|
|
528
|
+
const stable = finalTwoReady && !regressed;
|
|
529
|
+
return {
|
|
530
|
+
schema: 'sks.codex-lb-post-restart.v1',
|
|
531
|
+
ok: Boolean(repair.ok && readiness.ok && stable),
|
|
532
|
+
attempted: true,
|
|
533
|
+
status: repair.ok && readiness.ok && stable ? 'reconciled_stable' : 'reconcile_failed',
|
|
534
|
+
attempts: observations.length,
|
|
535
|
+
stable,
|
|
536
|
+
observations,
|
|
537
|
+
selected: readiness.selected,
|
|
538
|
+
provider_ready: readiness.provider_ready,
|
|
539
|
+
auth_routing_coherent: readiness.auth_routing_coherent,
|
|
540
|
+
shared_openai_routing_safe: readiness.shared_openai_routing_safe,
|
|
541
|
+
reconcile: repair,
|
|
542
|
+
codex_lb: stableStatus,
|
|
543
|
+
repair,
|
|
544
|
+
stable_status: stableStatus,
|
|
545
|
+
readiness
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
function codexLbRestartSettle(ms) {
|
|
549
|
+
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
550
|
+
}
|
|
551
|
+
function codexLbActivationReadiness(status = {}) {
|
|
552
|
+
const selected = status?.selected === true;
|
|
553
|
+
const providerReady = status?.provider_ready === true;
|
|
554
|
+
const authRoutingCoherent = status?.auth_routing_coherent === true;
|
|
555
|
+
const sharedOpenAiRoutingSafe = status?.shared_openai_routing?.safe === true;
|
|
556
|
+
return {
|
|
557
|
+
ok: selected && providerReady && authRoutingCoherent && sharedOpenAiRoutingSafe,
|
|
558
|
+
selected,
|
|
559
|
+
provider_ready: providerReady,
|
|
560
|
+
auth_routing_coherent: authRoutingCoherent,
|
|
561
|
+
shared_openai_routing_safe: sharedOpenAiRoutingSafe,
|
|
562
|
+
blockers: [
|
|
563
|
+
...(selected ? [] : ['codex_lb_not_selected']),
|
|
564
|
+
...(providerReady ? [] : ['codex_lb_provider_not_ready']),
|
|
565
|
+
...(authRoutingCoherent ? [] : ['codex_lb_auth_routing_incoherent']),
|
|
566
|
+
...(sharedOpenAiRoutingSafe ? [] : ['codex_lb_shared_openai_routing_unsafe'])
|
|
567
|
+
]
|
|
568
|
+
};
|
|
569
|
+
}
|
|
424
570
|
async function repairCodexAppFastUiAfterMutation(root, enabled) {
|
|
425
571
|
if (!enabled) {
|
|
426
572
|
return {
|
|
@@ -451,6 +597,12 @@ export function isCodexLbFastChainVerified(chain = {}) {
|
|
|
451
597
|
return chain.ok === true && chain.skipped !== true;
|
|
452
598
|
}
|
|
453
599
|
export async function resolveCodexLbFastCheckModel(status = {}, env = process.env) {
|
|
600
|
+
return resolveCodexLbModel(status, env, { requirePriority: true, blockerPrefix: 'codex_lb_fast_check' });
|
|
601
|
+
}
|
|
602
|
+
export async function resolveCodexLbHealthModel(status = {}, env = process.env) {
|
|
603
|
+
return resolveCodexLbModel(status, env, { requirePriority: false, blockerPrefix: 'codex_lb_health' });
|
|
604
|
+
}
|
|
605
|
+
async function resolveCodexLbModel(status = {}, env = process.env, opts = {}) {
|
|
454
606
|
const explicit = String(env.SKS_CODEX_MODEL || env.CODEX_MODEL || '').trim();
|
|
455
607
|
if (explicit)
|
|
456
608
|
return { model: explicit, source: env.SKS_CODEX_MODEL ? 'SKS_CODEX_MODEL' : 'CODEX_MODEL', blockers: [] };
|
|
@@ -461,7 +613,7 @@ export async function resolveCodexLbFastCheckModel(status = {}, env = process.en
|
|
|
461
613
|
return { model: configured, source: 'global_config', blockers: [] };
|
|
462
614
|
const configuredCatalogPath = topLevelTomlString(config, 'model_catalog_json');
|
|
463
615
|
if (!configuredCatalogPath)
|
|
464
|
-
return { model: null, source: null, blockers: [
|
|
616
|
+
return { model: null, source: null, blockers: [`${opts.blockerPrefix}_model_unselected`] };
|
|
465
617
|
const home = String(env.HOME || '').trim();
|
|
466
618
|
const expandedCatalogPath = configuredCatalogPath.startsWith('~/') && home
|
|
467
619
|
? path.join(home, configuredCatalogPath.slice(2))
|
|
@@ -471,13 +623,13 @@ export async function resolveCodexLbFastCheckModel(status = {}, env = process.en
|
|
|
471
623
|
: path.resolve(path.dirname(configPath), expandedCatalogPath);
|
|
472
624
|
try {
|
|
473
625
|
const payload = JSON.parse(await readText(catalogPath, ''));
|
|
474
|
-
const model =
|
|
626
|
+
const model = selectCatalogModel(payload, opts.requirePriority === true);
|
|
475
627
|
return model
|
|
476
628
|
? { model, source: 'model_catalog_json', blockers: [] }
|
|
477
|
-
: { model: null, source: 'model_catalog_json', blockers: ['
|
|
629
|
+
: { model: null, source: 'model_catalog_json', blockers: [`${opts.blockerPrefix}_${opts.requirePriority === true ? 'priority_' : ''}model_unavailable`] };
|
|
478
630
|
}
|
|
479
631
|
catch {
|
|
480
|
-
return { model: null, source: 'model_catalog_json', blockers: [
|
|
632
|
+
return { model: null, source: 'model_catalog_json', blockers: [`${opts.blockerPrefix}_catalog_invalid`] };
|
|
481
633
|
}
|
|
482
634
|
}
|
|
483
635
|
function topLevelTomlString(text, key) {
|
|
@@ -485,12 +637,14 @@ function topLevelTomlString(text, key) {
|
|
|
485
637
|
const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
486
638
|
return (topLevel.match(new RegExp(`(?:^|\\n)\\s*${escaped}\\s*=\\s*"([^"]+)"`))?.[1] || '').trim();
|
|
487
639
|
}
|
|
488
|
-
function
|
|
640
|
+
function selectCatalogModel(payload = {}, requirePriority = false) {
|
|
489
641
|
const models = Array.isArray(payload?.models) ? payload.models : Array.isArray(payload?.data) ? payload.data : [];
|
|
490
642
|
return models
|
|
491
643
|
.filter((row) => {
|
|
492
644
|
if (!row || typeof row !== 'object' || row.supported_in_api !== true || typeof row.slug !== 'string' || !row.slug.trim())
|
|
493
645
|
return false;
|
|
646
|
+
if (!requirePriority)
|
|
647
|
+
return true;
|
|
494
648
|
const serviceTiers = Array.isArray(row.service_tiers) ? row.service_tiers : [];
|
|
495
649
|
const speedTiers = Array.isArray(row.additional_speed_tiers) ? row.additional_speed_tiers : [];
|
|
496
650
|
return serviceTiers.some((tier) => normalizeTier(typeof tier === 'string' ? tier : tier?.id) === 'priority')
|
package/dist/commands/codex.js
CHANGED
|
@@ -6,7 +6,7 @@ import { codexSchemaSnapshotReport } from '../core/codex-compat/codex-schema-sna
|
|
|
6
6
|
import { detectCodex0141Capability } from '../core/codex-control/codex-0141-capability.js';
|
|
7
7
|
import { detectCodex0144Capability } from '../core/codex-control/codex-0144-capability.js';
|
|
8
8
|
import { CURRENT_CODEX_RELEASE_MANIFEST } from '../core/codex-compat/codex-release-manifest.js';
|
|
9
|
-
import { inspectCodexCliUpdate, updateCodexCliNow } from '../core/codex/codex-cli-update.js';
|
|
9
|
+
import { codexCliUpdateConsoleLines, inspectCodexCliUpdate, updateCodexCliNow } from '../core/codex/codex-cli-update.js';
|
|
10
10
|
export async function run(_command, args = []) {
|
|
11
11
|
const action = args[0] || 'compatibility';
|
|
12
12
|
if (action === 'compatibility' || action === 'compat') {
|
|
@@ -54,13 +54,8 @@ export async function run(_command, args = []) {
|
|
|
54
54
|
process.exitCode = 1;
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.log(result.raw_output);
|
|
60
|
-
for (const blocker of result.blockers)
|
|
61
|
-
console.log(`- blocker: ${blocker}`);
|
|
62
|
-
for (const actionLine of result.guidance)
|
|
63
|
-
console.log(`- ${actionLine}`);
|
|
57
|
+
for (const line of codexCliUpdateConsoleLines(result))
|
|
58
|
+
console.log(line);
|
|
64
59
|
if (!result.ok)
|
|
65
60
|
process.exitCode = 1;
|
|
66
61
|
return;
|
|
@@ -1,16 +1,39 @@
|
|
|
1
1
|
import { projectRoot } from '../core/fsx.js';
|
|
2
|
-
import { formatHarnessConflictReport, llmHarnessCleanupPrompt, scanHarnessConflicts } from '../core/harness-conflicts.js';
|
|
2
|
+
import { cleanupOtherHarnessConflicts, formatHarnessConflictReport, llmHarnessCleanupPrompt, scanHarnessConflicts } from '../core/harness-conflicts.js';
|
|
3
3
|
import { flag } from '../cli/args.js';
|
|
4
4
|
import { printJson } from '../cli/output.js';
|
|
5
5
|
export async function run(_command, args = []) {
|
|
6
6
|
const action = args[0] || 'check';
|
|
7
|
-
const
|
|
7
|
+
const root = await projectRoot();
|
|
8
|
+
if (action === 'cleanup') {
|
|
9
|
+
if (!flag(args, '--yes') && !flag(args, '--json')) {
|
|
10
|
+
process.exitCode = 1;
|
|
11
|
+
console.error('Refusing cleanup without --yes. Re-run: sks conflicts cleanup --yes');
|
|
12
|
+
return { ok: false, status: 'confirmation_required' };
|
|
13
|
+
}
|
|
14
|
+
const cleanup = await cleanupOtherHarnessConflicts(root);
|
|
15
|
+
if (flag(args, '--json'))
|
|
16
|
+
return printJson(cleanup);
|
|
17
|
+
console.log(cleanup.ok
|
|
18
|
+
? `Quarantined ${cleanup.cleaned.length} OMX/DCodex conflict(s).`
|
|
19
|
+
: `Cleanup incomplete: ${cleanup.remaining.length} conflict(s) remain.`);
|
|
20
|
+
for (const row of cleanup.cleaned)
|
|
21
|
+
console.log(`- ${row.action}: ${row.path}`);
|
|
22
|
+
for (const row of cleanup.errors)
|
|
23
|
+
console.error(`- error: ${row.path}: ${row.error}`);
|
|
24
|
+
if (!cleanup.ok)
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
return cleanup;
|
|
27
|
+
}
|
|
28
|
+
const scan = await scanHarnessConflicts(root);
|
|
8
29
|
const result = { ...scan, cleanup_prompt: scan.hard_block ? llmHarnessCleanupPrompt(scan) : null };
|
|
9
30
|
if (flag(args, '--json'))
|
|
10
31
|
return printJson(result);
|
|
11
32
|
if (action === 'prompt')
|
|
12
33
|
return console.log(result.cleanup_prompt || '');
|
|
13
34
|
console.log(formatHarnessConflictReport(scan));
|
|
14
|
-
if (scan.hard_block)
|
|
35
|
+
if (scan.hard_block) {
|
|
36
|
+
console.log('\nAutomatic cleanup: sks conflicts cleanup --yes');
|
|
15
37
|
process.exitCode = 1;
|
|
38
|
+
}
|
|
16
39
|
}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -23,6 +23,7 @@ import { writeMcpPluginInventoryArtifacts } from '../core/mcp/mcp-plugin-invento
|
|
|
23
23
|
import { buildCodexAppHarnessMatrix } from '../core/codex-app/codex-app-harness-matrix.js';
|
|
24
24
|
import { buildCodexNativeFeatureMatrix } from '../core/codex-native/codex-native-feature-broker.js';
|
|
25
25
|
import { withSecretPreservationGuard } from '../core/config/config-migration-journal.js';
|
|
26
|
+
import { reconcileDoctorSkills } from '../core/doctor/doctor-skill-reconcile.js';
|
|
26
27
|
import { isUpdateMigrationReceiptCurrent, projectUpdateMigrationReceiptPath, writeProjectUpdateMigrationReceipt } from '../core/update/update-migration-state.js';
|
|
27
28
|
import { inspectSksMenuBarStatus, installSksMenuBar } from '../core/codex-app/sks-menubar.js';
|
|
28
29
|
import { sweepSksTempDirs } from '../core/retention.js';
|
|
@@ -34,27 +35,32 @@ export async function run(_command, args = [], deps = {}) {
|
|
|
34
35
|
const doctorFix = flag(args, '--fix');
|
|
35
36
|
const globalOnly = doctorFix && flag(args, '--global-only');
|
|
36
37
|
if (doctorFix) {
|
|
38
|
+
const { cleanupOtherHarnessConflicts } = await import('../core/harness-conflicts.js');
|
|
37
39
|
const conflictScan = await scanHarnessConflicts(root);
|
|
38
40
|
if (conflictScan.hard_block) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
const cleanup = await cleanupOtherHarnessConflicts(root);
|
|
42
|
+
if (!cleanup.ok) {
|
|
43
|
+
const blocked = {
|
|
44
|
+
schema: 'sks.doctor-status.v3',
|
|
45
|
+
ok: false,
|
|
46
|
+
status: 'blocked_harness_conflict',
|
|
47
|
+
diagnostic_depth: 'fix',
|
|
48
|
+
root,
|
|
49
|
+
blockers: (cleanup.remaining || conflictScan.hard).map((item) => `${item.name || 'harness'}:${item.path}`),
|
|
50
|
+
conflicts: cleanup.after?.conflicts || conflictScan.conflicts,
|
|
51
|
+
other_harness_cleanup: cleanup,
|
|
52
|
+
cleanup_prompt_command: 'sks conflicts cleanup --yes',
|
|
53
|
+
no_fix_writes_performed: cleanup.cleaned.length === 0
|
|
54
|
+
};
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
if (flag(args, '--json')) {
|
|
57
|
+
printJson(blocked);
|
|
58
|
+
return blocked;
|
|
59
|
+
}
|
|
60
|
+
console.error(formatHarnessConflictReport(cleanup.after || conflictScan, { includePrompt: false }));
|
|
61
|
+
console.error('Automatic OMX/DCodex removal did not clear every conflict. Live markers must be removed; inspect backup under .sneakoscope/quarantine/other-harness/.');
|
|
53
62
|
return blocked;
|
|
54
63
|
}
|
|
55
|
-
console.error(formatHarnessConflictReport(conflictScan, { includePrompt: false }));
|
|
56
|
-
console.error('Run `sks conflicts prompt` and obtain explicit human approval before cleanup.');
|
|
57
|
-
return blocked;
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
const doctorProfile = doctorProfileFromArgs(args, doctorFix);
|
|
@@ -140,6 +146,7 @@ export async function executeDoctorGlobalOnlyFix(args = [], root, deps = {}) {
|
|
|
140
146
|
}));
|
|
141
147
|
const recoveryReady = codexLbRecoveryStatusReady(providerStatus, true);
|
|
142
148
|
const globalSkillsReady = !globalSkills?.error
|
|
149
|
+
&& globalSkills?.ok !== false
|
|
143
150
|
&& globalSkills?.core_skill_integrity?.ok !== false;
|
|
144
151
|
const globalFastModeReady = globalFastMode?.status !== 'failed'
|
|
145
152
|
&& globalFastMode?.ok !== false;
|
|
@@ -445,20 +452,7 @@ async function runDoctor(args = [], root, doctorFix) {
|
|
|
445
452
|
: await (await import('../cli/install-helpers.js')).ensureGlobalCodexFastModeDuringInstall().catch((err) => ({ status: 'failed', error: err?.message || String(err) }))
|
|
446
453
|
};
|
|
447
454
|
}
|
|
448
|
-
const skillsReconcile = doctorFix
|
|
449
|
-
? {
|
|
450
|
-
global: await (await import('../core/init/skills.js')).reconcileSkills({
|
|
451
|
-
targetDir: path.join(process.env.HOME || os.homedir(), '.agents', 'skills'),
|
|
452
|
-
scope: 'global',
|
|
453
|
-
fix: true
|
|
454
|
-
}).catch((err) => ({ ok: false, error: err?.message || String(err) })),
|
|
455
|
-
project: await (await import('../core/init/skills.js')).reconcileSkills({
|
|
456
|
-
targetDir: path.join(root, '.agents', 'skills'),
|
|
457
|
-
scope: 'project',
|
|
458
|
-
fix: true
|
|
459
|
-
}).catch((err) => ({ ok: false, error: err?.message || String(err) }))
|
|
460
|
-
}
|
|
461
|
-
: { skipped: true, reason: 'doctor_without_fix' };
|
|
455
|
+
const skillsReconcile = await reconcileDoctorSkills(root, doctorFix);
|
|
462
456
|
const commandAliasCleanup = await runDoctorCommandAliasCleanup({
|
|
463
457
|
root,
|
|
464
458
|
fix: doctorFix
|
|
@@ -1203,6 +1197,7 @@ async function runDoctor(args = [], root, doctorFix) {
|
|
|
1203
1197
|
doctor_dirty_plan: doctorDirtyPlan,
|
|
1204
1198
|
doctor_fix_postcheck: doctorFixPostcheck,
|
|
1205
1199
|
doctor_native_capability: doctorNativeCapabilityRepair,
|
|
1200
|
+
skills: skillsReconcile,
|
|
1206
1201
|
local_model: localModel,
|
|
1207
1202
|
agent_role_config: agentRoleConfigRepair,
|
|
1208
1203
|
repair: configRepair,
|
package/dist/commands/perf.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { performance } from 'node:perf_hooks';
|
|
2
2
|
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
3
4
|
import { PACKAGE_VERSION, projectRoot } from '../core/fsx.js';
|
|
4
5
|
import { flag } from '../cli/args.js';
|
|
5
6
|
import { printJson } from '../cli/output.js';
|
|
@@ -61,7 +62,7 @@ export async function run(_command, args = []) {
|
|
|
61
62
|
return perfCommand(action, args.slice(1));
|
|
62
63
|
}
|
|
63
64
|
export function runColdStart({ root = process.cwd(), iterations = DEFAULT_COLD_START_ITERATIONS, tier = 'source-local' } = {}) {
|
|
64
|
-
const script =
|
|
65
|
+
const script = coldStartCliEntrypoint();
|
|
65
66
|
const measuredIterations = resolveColdStartIterations(iterations);
|
|
66
67
|
const budgets = (COLD_START_TIERS[tier] || COLD_START_TIERS['source-local']);
|
|
67
68
|
const commands = COLD_START_COMMANDS.map((spec) => measureCommand(root, script, { ...spec, budget_p95_ms: budgets[spec.cmd] }, measuredIterations));
|
|
@@ -76,6 +77,9 @@ export function runColdStart({ root = process.cwd(), iterations = DEFAULT_COLD_S
|
|
|
76
77
|
ok: commands.every((row) => row.ok)
|
|
77
78
|
};
|
|
78
79
|
}
|
|
80
|
+
export function coldStartCliEntrypoint(moduleUrl = import.meta.url) {
|
|
81
|
+
return fileURLToPath(new URL('../bin/sks.js', moduleUrl));
|
|
82
|
+
}
|
|
79
83
|
export function resolveColdStartIterations(value = DEFAULT_COLD_START_ITERATIONS) {
|
|
80
84
|
const parsed = Number(value ?? DEFAULT_COLD_START_ITERATIONS);
|
|
81
85
|
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
@@ -7,8 +7,6 @@ export async function run(_command = 'zellij-slot-column-anchor', args = []) {
|
|
|
7
7
|
const intervalMs = Math.max(250, Number(readOption(args, '--interval-ms', '1000') || 1000));
|
|
8
8
|
for (;;) {
|
|
9
9
|
const text = await renderZellijSlotColumnAnchorFromArtifacts({ artifactRoot, missionId, mode });
|
|
10
|
-
// Cursor-home + clear-to-end redraw; `\x1Bc` (RIS) resets the pane's
|
|
11
|
-
// scrollback/modes every tick and intermittently breaks scrolling.
|
|
12
10
|
process.stdout.write('\x1b[H' + text + '\n\x1b[0J');
|
|
13
11
|
if (!watch)
|
|
14
12
|
break;
|
|
@@ -53,9 +53,6 @@ export async function run(_command = 'zellij-slot-pane', args = []) {
|
|
|
53
53
|
process.stdout.write(redrawFrame(text));
|
|
54
54
|
if (!watch)
|
|
55
55
|
break;
|
|
56
|
-
// Root-cause-3 fix: exit the pane once the worker has reached a terminal state and written its
|
|
57
|
-
// result, so the pane closes (or shows the final exited frame) instead of looping forever and
|
|
58
|
-
// perpetually re-reporting telemetry staleness.
|
|
59
56
|
const shouldExit = await resolveZellijSlotPaneExit({ artifactDir, artifactRoot, missionId, slotId, generationIndex }).catch(() => false);
|
|
60
57
|
if (shouldExit) {
|
|
61
58
|
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
@@ -75,10 +72,6 @@ function readOption(args, name, fallback) {
|
|
|
75
72
|
const index = args.indexOf(name);
|
|
76
73
|
return index >= 0 && args[index + 1] ? String(args[index + 1]) : fallback;
|
|
77
74
|
}
|
|
78
|
-
// Redraw in place with cursor-home + clear-to-end instead of `\x1Bc` (RIS).
|
|
79
|
-
// RIS performs a full terminal reset every tick, which wipes the Zellij pane's
|
|
80
|
-
// scrollback and resets scroll position/modes — the cause of intermittent
|
|
81
|
-
// "scrolling stops working" while a watch pane is refreshing.
|
|
82
75
|
function redrawFrame(text) {
|
|
83
76
|
return '\x1b[H' + text + '\n\x1b[0J';
|
|
84
77
|
}
|
package/dist/commands/zellij.js
CHANGED
|
@@ -315,8 +315,6 @@ async function zellijDispatch(root, args, json) {
|
|
|
315
315
|
process.exitCode = 1;
|
|
316
316
|
}
|
|
317
317
|
async function zellijRepair(root, args, json) {
|
|
318
|
-
// Explain-only by default: SKS never auto-installs Zellij (no Homebrew/cargo
|
|
319
|
-
// side-effects from this command). It surfaces the exact operator steps.
|
|
320
318
|
const capability = await checkZellijCapability({ root, require: false });
|
|
321
319
|
const status = capability.status || 'unknown';
|
|
322
320
|
const autoInstall = false;
|