sneakoscope 6.0.3 → 6.1.2
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 +29 -12
- package/config/codex-releases/{rust-v0.142.0.json → rust-v0.144.1.json} +6 -6
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/fast-inline.js +18 -14
- package/dist/bin/sks-dispatch.js +2 -4
- package/dist/cli/args.js +2 -0
- package/dist/cli/command-manifest-lite.js +2 -3
- package/dist/cli/command-registry.js +3 -4
- package/dist/cli/help-fast.js +1 -1
- package/dist/cli/install-helpers.js +348 -763
- package/dist/cli/install-tool-helpers.js +287 -0
- package/dist/cli/router.js +91 -6
- package/dist/commands/codex-lb.js +188 -53
- package/dist/commands/codex.js +44 -5
- package/dist/commands/doctor.js +302 -46
- package/dist/commands/tmux.js +5 -1
- package/dist/commands/versioning.js +7 -0
- package/dist/commands/zellij-monitor-pane.js +2 -0
- package/dist/commands/zellij-viewport-pane.js +3 -1
- package/dist/commands/zellij.js +1 -1
- package/dist/config/skills-manifest.json +59 -59
- package/dist/core/agent-bridge/agent-manifest.js +48 -0
- package/dist/core/agents/agent-central-ledger.js +9 -0
- package/dist/core/agents/agent-cleanup-executor.js +334 -41
- package/dist/core/agents/agent-cleanup.js +20 -1
- package/dist/core/agents/agent-command-surface.js +3 -1
- package/dist/core/agents/agent-effort-policy.js +30 -38
- package/dist/core/agents/agent-janitor.js +9 -10
- package/dist/core/agents/agent-namespace-safety.js +56 -0
- package/dist/core/agents/agent-orchestrator.js +25 -3
- package/dist/core/agents/agent-output-validator.js +1 -1
- package/dist/core/agents/agent-plan.js +100 -21
- package/dist/core/agents/agent-role-config.js +43 -49
- package/dist/core/agents/agent-runner-codex-exec.js +18 -3
- package/dist/core/agents/agent-runner-process.js +1 -0
- package/dist/core/agents/agent-schema.js +3 -2
- package/dist/core/agents/fast-mode-policy.js +3 -5
- package/dist/core/agents/native-cli-session-swarm.js +1 -1
- package/dist/core/agents/native-worker-backend-router.js +2 -1
- package/dist/core/agents/work-partition/repo-inventory.js +68 -7
- package/dist/core/agents/zellij-right-lane-cockpit.js +2 -2
- package/dist/core/code-structure.js +5 -4
- package/dist/core/codex/agent-config-file-repair.js +94 -193
- package/dist/core/codex/codex-cli-update.js +723 -0
- package/dist/core/codex/codex-config-guard.js +38 -11
- package/dist/core/codex/codex-project-config-policy.js +3 -6
- package/dist/core/codex/codex-startup-config-postcheck.js +52 -42
- package/dist/core/codex-adapter.js +35 -22
- package/dist/core/codex-app/codex-agent-role-sync.js +13 -54
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +51 -20
- package/dist/core/codex-app/codex-app-launcher.js +48 -17
- package/dist/core/codex-app/codex-app-restart.js +23 -2
- package/dist/core/codex-app/codex-app-ui-state-snapshot.js +11 -3
- package/dist/core/codex-app/sks-menubar.js +136 -5
- package/dist/core/codex-app.js +35 -14
- package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -1
- package/dist/core/codex-compat/codex-release-manifest.js +6 -6
- package/dist/core/codex-control/codex-0139-doctor-real-probe.js +7 -1
- package/dist/core/codex-control/codex-0139-image-path-real-probe.js +29 -12
- package/dist/core/codex-control/codex-0139-probe-runner.js +103 -28
- package/dist/core/codex-control/codex-0139-real-probe-summary.js +7 -3
- package/dist/core/codex-control/codex-0139-real-probes.js +21 -6
- package/dist/core/codex-control/codex-0139-sandbox-real-probe.js +39 -13
- package/dist/core/codex-control/codex-0139-web-search-probe.js +28 -14
- package/dist/core/codex-control/{codex-0142-capability.js → codex-0144-capability.js} +22 -22
- package/dist/core/codex-control/codex-0144-collab-agent-real-probe.js +63 -0
- package/dist/core/codex-control/codex-lb-launch-recovery.js +278 -0
- package/dist/core/codex-control/codex-multi-agent-event-normalizer.js +5 -1
- package/dist/core/codex-control/codex-reliability-shield.js +93 -30
- package/dist/core/codex-control/codex-sdk-adapter.js +96 -13
- package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
- package/dist/core/codex-control/codex-sdk-sandbox-policy.js +6 -3
- package/dist/core/codex-control/codex-task-runner.js +62 -9
- package/dist/core/codex-control/python-codex-sdk-adapter.js +30 -3
- package/dist/core/codex-exec-output-schema.js +35 -6
- package/dist/core/codex-lb/codex-lb-env.js +30 -1
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +478 -0
- package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +291 -0
- package/dist/core/codex-native/codex-native-feature-broker.js +31 -38
- package/dist/core/codex-native/codex-native-feature-matrix.js +2 -2
- package/dist/core/codex-native/codex-native-repair-transaction.js +1 -1
- package/dist/core/codex-native/core-skill-manifest.js +8 -4
- package/dist/core/codex-native/native-capability-postcheck.js +16 -8
- package/dist/core/codex-native/native-capability-repair-matrix.js +76 -27
- package/dist/core/codex-plugins/codex-plugin-json.js +67 -21
- package/dist/core/codex-plugins/codex-plugin-repair.js +118 -0
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +305 -0
- package/dist/core/commands/agent-bridge-command.js +23 -2
- package/dist/core/commands/agent-command.js +38 -5
- package/dist/core/commands/basic-cli.js +77 -30
- package/dist/core/commands/command-utils.js +1 -1
- package/dist/core/commands/gc-command.js +27 -4
- package/dist/core/commands/image-ux-review-command.js +55 -24
- package/dist/core/commands/mad-sks-command.js +182 -137
- package/dist/core/commands/naruto-command.js +643 -1153
- package/dist/core/commands/pipeline-command.js +1 -0
- package/dist/core/commands/research-command.js +293 -231
- package/dist/core/commands/run-command.js +100 -23
- package/dist/core/commands/team-command.js +2 -3
- package/dist/core/commands/team-legacy-observe-command.js +94 -359
- package/dist/core/commands/wiki-command.js +179 -83
- package/dist/core/computer-use-live-evidence.js +166 -3
- package/dist/core/computer-use-status.js +5 -2
- package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +2 -2
- package/dist/core/daemon/sksd-hook-daemon.js +171 -28
- package/dist/core/daemon/sksd-hook-dispatch.js +2 -2
- package/dist/core/db-safety.js +2 -2
- package/dist/core/decision-lattice.js +6 -6
- package/dist/core/dfix/verification-selector.js +6 -4
- package/dist/core/doctor/browser-use-repair.js +54 -13
- package/dist/core/doctor/codex-0139-doctor.js +3 -2
- package/dist/core/doctor/codex-startup-config-repair.js +8 -3
- package/dist/core/doctor/computer-use-repair.js +28 -39
- package/dist/core/doctor/doctor-codex-startup-repair.js +24 -149
- package/dist/core/doctor/doctor-context7-repair.js +1 -1
- package/dist/core/doctor/doctor-dirty-planner.js +1 -1
- package/dist/core/doctor/doctor-native-capability-repair.js +74 -3
- package/dist/core/doctor/imagegen-repair.js +47 -12
- package/dist/core/doctor/legacy-global-hook-cleanup.js +179 -0
- package/dist/core/feature-fixture-executor.js +71 -7
- package/dist/core/feature-fixture-runner.js +53 -12
- package/dist/core/feature-fixtures.js +47 -14
- package/dist/core/feature-registry.js +53 -58
- package/dist/core/fsx.js +54 -6
- package/dist/core/harness-conflicts.js +19 -10
- package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +5 -4
- package/dist/core/hooks-runtime/hook-invocation-dedupe.js +147 -0
- package/dist/core/hooks-runtime/hook-io.js +14 -4
- package/dist/core/hooks-runtime/light-turn.js +70 -0
- package/dist/core/hooks-runtime/payload-signals.js +270 -0
- package/dist/core/hooks-runtime/team-digest.js +0 -1
- package/dist/core/hooks-runtime/tool-output-quarantine.js +93 -0
- package/dist/core/hooks-runtime.js +418 -250
- package/dist/core/image/image-artifact-path-contract.js +8 -6
- package/dist/core/image/image-artifact-registry.js +5 -1
- package/dist/core/image-ux-review/imagegen-adapter.js +5 -2
- package/dist/core/imagegen/imagegen-capability.js +10 -13
- package/dist/core/imagegen/require-imagegen.js +37 -11
- package/dist/core/init/skills.js +16 -30
- package/dist/core/init.js +144 -36
- package/dist/core/managed-assets/managed-assets-manifest.js +417 -14
- package/dist/core/mission.js +24 -1
- package/dist/core/naruto/naruto-work-graph.js +70 -4
- package/dist/core/ops/reporting.js +3 -0
- package/dist/core/pipeline-internals/runtime-core.js +578 -180
- package/dist/core/pipeline-internals/runtime-gates.js +191 -49
- package/dist/core/ppt/style-tokens.js +1 -1
- package/dist/core/ppt-review/index.js +1 -1
- package/dist/core/ppt-review/slide-exporter.js +23 -17
- package/dist/core/ppt-review/slide-imagegen-review.js +1 -1
- package/dist/core/ppt-review/slide-issue-extraction.js +4 -2
- package/dist/core/preflight/parallel-preflight-engine.js +50 -1
- package/dist/core/product-design-plugin.js +2 -2
- package/dist/core/proof/route-finalizer.js +1 -1
- package/dist/core/proof/route-proof-gate.js +7 -2
- package/dist/core/proof-field.js +3 -3
- package/dist/core/provider/model-router.js +38 -32
- package/dist/core/recallpulse/policy.js +12 -28
- package/dist/core/recallpulse.js +11 -6
- package/dist/core/release/gate-manifest.js +18 -12
- package/dist/core/release/gate-pack-manifest.js +1 -1
- package/dist/core/release/npm-pack-proof.js +247 -0
- package/dist/core/release/package-dist-snapshot.js +151 -0
- package/dist/core/release/package-size-budget.js +5 -0
- package/dist/core/release/release-authorization-snapshot.js +115 -0
- package/dist/core/release/release-gate-affected-selector.js +15 -3
- package/dist/core/release/release-gate-cache-v2.js +30 -0
- package/dist/core/release/release-gate-contract.js +161 -0
- package/dist/core/release/release-gate-dag.js +44 -3
- package/dist/core/release/release-gate-hermetic-env.js +28 -17
- package/dist/core/release/release-real-contract.js +496 -0
- package/dist/core/release-parallel-full-coverage.js +31 -143
- package/dist/core/research/claim-evidence-matrix.js +41 -6
- package/dist/core/research/experiment-plan.js +14 -10
- package/dist/core/research/falsification.js +9 -2
- package/dist/core/research/implementation-blueprint-densifier.js +82 -60
- package/dist/core/research/implementation-blueprint.js +32 -26
- package/dist/core/research/mock-result.js +122 -11
- package/dist/core/research/replication-pack.js +15 -8
- package/dist/core/research/research-adversarial-review.js +1068 -0
- package/dist/core/research/research-claim-builder.js +69 -17
- package/dist/core/research/research-claim-synthesizer.js +343 -0
- package/dist/core/research/research-cycle-runner.js +53 -3
- package/dist/core/research/research-falsification-runner.js +176 -0
- package/dist/core/research/research-final-reviewer.js +44 -125
- package/dist/core/research/research-realistic-report.js +14 -6
- package/dist/core/research/research-review-artifact-digest.js +66 -0
- package/dist/core/research/research-source-evidence.js +144 -0
- package/dist/core/research/research-source-layer-catalog.js +68 -0
- package/dist/core/research/research-source-ledger-merge.js +250 -12
- package/dist/core/research/research-source-shards.js +26 -70
- package/dist/core/research/research-stage-runner.js +237 -247
- package/dist/core/research/research-super-search.js +184 -0
- package/dist/core/research/research-synthesis-prompt.js +20 -1
- package/dist/core/research/research-synthesis-writer.js +86 -5
- package/dist/core/research/research-work-graph.js +25 -18
- package/dist/core/research/source-quality-report.js +21 -0
- package/dist/core/research.js +429 -280
- package/dist/core/retention/retention-budget.js +25 -6
- package/dist/core/retention.js +980 -101
- package/dist/core/routes/constants.js +1 -1
- package/dist/core/routes/dollar-manifest-lite.js +11 -11
- package/dist/core/routes/evidence.js +4 -4
- package/dist/core/routes/ppt-policy.js +1 -1
- package/dist/core/routes.js +92 -64
- package/dist/core/runtime/task-profile.js +66 -0
- package/dist/core/runtime/verification-budget.js +12 -0
- package/dist/core/secret-redaction.js +4 -0
- package/dist/core/security/high-risk-contracts.js +6 -6
- package/dist/core/stop-gate/stop-gate-check.js +49 -12
- package/dist/core/subagents/agent-catalog.js +215 -0
- package/dist/core/subagents/model-policy.js +118 -0
- package/dist/core/subagents/naruto-help-contract.js +40 -0
- package/dist/core/subagents/official-subagent-config.js +488 -0
- package/dist/core/subagents/official-subagent-preparation.js +251 -0
- package/dist/core/subagents/official-subagent-prompt.js +137 -0
- package/dist/core/subagents/official-subagent-runner.js +129 -0
- package/dist/core/subagents/subagent-evidence.js +663 -0
- package/dist/core/subagents/terminology.js +16 -0
- package/dist/core/subagents/thread-budget.js +21 -0
- package/dist/core/subagents/triwiki-attention.js +65 -0
- package/dist/core/super-search/runtime-helpers.js +173 -19
- package/dist/core/super-search/runtime.js +140 -15
- package/dist/core/super-search/source-records.js +49 -8
- package/dist/core/team-review-policy.js +15 -0
- package/dist/core/triwiki/code-pack.js +8 -2
- package/dist/core/triwiki/triwiki-cache-key.js +108 -29
- package/dist/core/triwiki/triwiki-module-card.js +1 -1
- package/dist/core/triwiki-attention.js +13 -6
- package/dist/core/triwiki-provenance.js +274 -0
- package/dist/core/triwiki-runtime.js +21 -7
- package/dist/core/triwiki-wrongness/wrongness-ledger.js +187 -61
- package/dist/core/triwiki-wrongness/wrongness-retrieval.js +11 -2
- package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +2 -0
- package/dist/core/update-check.js +23 -15
- package/dist/core/version-manager.js +51 -1
- package/dist/core/version.js +1 -1
- package/dist/core/wiki-coordinate.js +128 -12
- package/dist/core/work-order-ledger.js +208 -10
- package/dist/core/zellij/zellij-command.js +12 -1
- package/dist/core/zellij/zellij-dashboard-pane.js +3 -3
- package/dist/core/zellij/zellij-fake-adapter.js +3 -1
- package/dist/core/zellij/zellij-launcher.js +51 -21
- package/dist/core/zellij/zellij-layout-builder.js +14 -5
- package/dist/core/zellij/zellij-official-subagent-activity.js +477 -0
- package/dist/core/zellij/zellij-official-subagent-telemetry.js +264 -0
- package/dist/core/zellij/zellij-pane-proof.js +32 -6
- package/dist/core/zellij/zellij-slot-pane-renderer.js +17 -5
- package/dist/core/zellij/zellij-slot-telemetry.js +15 -3
- package/dist/core/zellij/zellij-ui-mode.js +1 -1
- package/dist/core/zellij/zellij-viewport-binder.js +3 -0
- package/dist/core/zellij/zellij-worker-pane-manager.js +5 -3
- package/dist/scripts/agent-fast-mode-default-check.js +48 -29
- package/dist/scripts/agent-role-config-repair-check.js +34 -15
- package/dist/scripts/agent-wiki-context-proof-check.js +16 -2
- package/dist/scripts/all-feature-deep-completion-check.js +14 -4
- package/dist/scripts/architecture-guard-check.js +8 -1
- package/dist/scripts/build-dist.js +17 -5
- package/dist/scripts/canonical-test-runner.js +188 -0
- package/dist/scripts/check-command-module-budget.js +38 -16
- package/dist/scripts/check-legacy-free.js +1 -1
- package/dist/scripts/check-route-modularity.js +0 -1
- package/dist/scripts/check-ts-contracts.js +1 -1
- package/dist/scripts/codex-0139-interrupt-agent-check.js +5 -1
- package/dist/scripts/{codex-0142-app-server-v2-check.js → codex-0144-app-server-v2-check.js} +11 -10
- package/dist/scripts/{codex-0142-binary-identity-check.js → codex-0144-binary-identity-check.js} +4 -4
- package/dist/scripts/codex-0144-capability-check.js +21 -0
- package/dist/scripts/{codex-0139-real-probes-check.js → codex-0144-core-real-probes-check.js} +19 -5
- package/dist/scripts/{codex-0142-doctor-wiring-check.js → codex-0144-doctor-wiring-check.js} +6 -6
- package/dist/scripts/{codex-0142-manifest-check.js → codex-0144-manifest-check.js} +11 -3
- package/dist/scripts/{codex-0142-policy-check.js → codex-0144-policy-check.js} +2 -2
- package/dist/scripts/{codex-0142-thread-store-check.js → codex-0144-thread-store-check.js} +3 -3
- package/dist/scripts/codex-app-provider-model-ui-check.js +53 -19
- package/dist/scripts/codex-app-ui-preservation-check.js +35 -4
- package/dist/scripts/codex-control-all-pipelines-check.js +7 -3
- package/dist/scripts/codex-control-side-effect-scope-check.js +2 -2
- package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +27 -0
- package/dist/scripts/codex-effort-auto-discovery-check.js +1 -1
- package/dist/scripts/codex-lb-fast-mode-truth-check.js +1 -0
- package/dist/scripts/{codex-lb-gpt55-fast-profile-check.js → codex-lb-gpt56-fast-profile-check.js} +56 -5
- package/dist/scripts/codex-model-metadata-check.js +1 -1
- package/dist/scripts/codex-native-agent-role-content-check.js +15 -7
- package/dist/scripts/codex-native-repair-transaction-check.js +3 -1
- package/dist/scripts/codex-sdk-all-pipelines-check.js +7 -4
- package/dist/scripts/codex-sdk-research-pipeline-check.js +30 -8
- package/dist/scripts/codex-sdk-sandbox-policy-check.js +5 -1
- package/dist/scripts/codex-sdk-version-compat-check.js +2 -1
- package/dist/scripts/db-route-materialization-check.js +33 -0
- package/dist/scripts/dfix-fixture-check.js +1 -1
- package/dist/scripts/docs-truthfulness-check.js +4 -2
- package/dist/scripts/doctor-codex-startup-repair-check.js +47 -25
- package/dist/scripts/doctor-context7-repair-check.js +2 -1
- package/dist/scripts/doctor-fix-production-blackbox.js +12 -2
- package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +34 -7
- package/dist/scripts/doctor-imagegen-repair-check.js +14 -4
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +9 -3
- package/dist/scripts/doctor-startup-config-repair-check.js +13 -3
- package/dist/scripts/install-update-preserves-config-check.js +7 -2
- package/dist/scripts/legacy-gate-inventory-check.js +7 -5
- package/dist/scripts/legacy-strong-inventory-check.js +7 -5
- package/dist/scripts/legacy-upgrade-matrix-check.js +4 -4
- package/dist/scripts/lib/native-cli-session-swarm-check-lib.js +173 -13
- package/dist/scripts/mad-sks-app-ui-no-mutation-check.js +165 -6
- package/dist/scripts/managed-role-manifest-parity-check.js +5 -4
- package/dist/scripts/mutation-callsite-coverage-check.js +0 -11
- package/dist/scripts/naruto-codex-e2e-check.js +14 -7
- package/dist/scripts/naruto-shadow-clone-swarm-check.js +4 -201
- package/dist/scripts/npm-publish-performance-check.js +20 -12
- package/dist/scripts/official-subagent-workflow-check.js +145 -0
- package/dist/scripts/package-published-contract-check.js +6 -20
- package/dist/scripts/packlist-performance-check.js +17 -3
- package/dist/scripts/parallel-verification-engine-check.js +2 -2
- package/dist/scripts/postinstall-safe-side-effects-check.js +8 -3
- package/dist/scripts/ppt-no-mock-as-real-check.js +3 -1
- package/dist/scripts/prepublish-release-check-or-fast.js +23 -86
- package/dist/scripts/product-design-plugin-routing-check.js +1 -1
- package/dist/scripts/release-affected-selector-check.js +74 -1
- package/dist/scripts/release-check-stamp.js +324 -239
- package/dist/scripts/release-dag-full-coverage-check.js +7 -15
- package/dist/scripts/release-dynamic-presets-check.js +10 -1
- package/dist/scripts/release-gate-dag-runner-check.js +3 -3
- package/dist/scripts/release-gate-dag-runner.js +35 -11
- package/dist/scripts/release-gate-existence-audit.js +1 -2
- package/dist/scripts/release-gate-script-parity-check.js +1 -1
- package/dist/scripts/release-parallel-full-coverage-check.js +12 -6
- package/dist/scripts/release-parallel-speed-budget-check.js +18 -2
- package/dist/scripts/release-real-check.js +390 -157
- package/dist/scripts/release-registry-check.js +61 -16
- package/dist/scripts/release-runtime-truth-matrix-check.js +22 -0
- package/dist/scripts/research-blueprint-densifier-check.js +2 -2
- package/dist/scripts/research-real-cycle-no-legacy-final-md-check.js +11 -7
- package/dist/scripts/route-proof-artifact-structure-check.js +1 -0
- package/dist/scripts/search-visibility-gate-lib.js +1 -1
- package/dist/scripts/seo-geo-route-identity-check.js +30 -4
- package/dist/scripts/sizecheck.js +4 -4
- package/dist/scripts/sks-1-11-gate-lib.js +53 -6
- package/dist/scripts/sks-3-1-4-directive-check-lib.js +8 -2
- package/dist/scripts/sks-3-1-5-directive-check-lib.js +3 -2
- package/dist/scripts/sks-3-1-6-directive-check-lib.js +5 -3
- package/dist/scripts/sks-menubar-install-check.js +8 -0
- package/dist/scripts/sks-uninstall-regression-check.js +1 -1
- package/dist/scripts/sksd-daemon-check.js +16 -6
- package/dist/scripts/trust-fixture-check.js +32 -10
- package/dist/scripts/write-build-manifest.js +2 -1
- package/dist/scripts/wrongness-fixture-check.js +1 -1
- package/dist/scripts/zellij-layout-valid-check.js +36 -11
- package/dist/scripts/zellij-pane-proof-check.js +33 -2
- package/dist/scripts/zellij-real-session-cleanup-check.js +122 -2
- package/dist/scripts/zellij-real-session-launch-check.js +76 -5
- package/dist/scripts/zellij-slot-pane-renderer-check.js +4 -4
- package/dist/scripts/zellij-spawn-on-demand-layout-check.js +3 -3
- package/docs/demo.tape +1 -1
- package/infra-harness-gates.json +1486 -0
- package/package.json +32 -19
- package/release-gates.v2.json +4060 -0
- package/runtime-required-scripts.json +9 -0
- package/schemas/codex/{app-server-0.142 → app-server-0.144}/codex_app_server_protocol.v2.schemas.json +1146 -781
- package/schemas/codex/codex-0139-real-probe-result.schema.json +39 -5
- package/schemas/codex/ppt-slide-issue-ledger.schema.json +2 -1
- package/dist/commands/db.js +0 -6
- package/dist/core/codex-control/codex-0139-multi-agent-real-probe.js +0 -107
- package/dist/core/commands/db-command.js +0 -146
- package/dist/core/research/prompt.js +0 -15
- package/dist/scripts/agent-native-release-gate.js +0 -274
- package/dist/scripts/codex-0142-capability-check.js +0 -21
- package/dist/scripts/codex-control-tool-call-sequence-repair-check.js +0 -14
- package/dist/scripts/command-performance-scorecard-check.js +0 -204
- package/dist/scripts/config-managed-merge-callsite-coverage-check.js +0 -212
- package/dist/scripts/dollar-performance-scorecard-check.js +0 -257
- package/dist/scripts/gate-timing-check.js +0 -16
- package/dist/scripts/ops-maturity-scorecard-check.js +0 -12
- package/dist/scripts/performance-baseline-check.js +0 -12
- package/dist/scripts/performance-improvement-report-check.js +0 -58
- package/dist/scripts/release-parallel-check.js +0 -389
- package/dist/scripts/release-runner-efficiency-check.js +0 -15
- package/dist/scripts/retention-long-run-smoke-check.js +0 -299
- package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
|
@@ -7,7 +7,9 @@ import { printJson } from '../cli/output.js';
|
|
|
7
7
|
import { codexLbMetrics, readCodexLbCircuit, recordCodexLbHealthEvent, resetCodexLbCircuit, codexLbProofEvidence } from '../core/codex-lb-circuit.js';
|
|
8
8
|
import { checkCodexLbResponseChain, codexLbStatus, configureCodexLb, formatCodexLbStatusText, releaseCodexLbAuthHold, repairCodexLbAuth, unselectCodexLbProvider } from '../cli/install-helpers.js';
|
|
9
9
|
import { buildCodexLbSetupPlan, codexLbPersistenceSummary, renderCodexLbSetupPlan } from '../core/codex-lb/codex-lb-setup.js';
|
|
10
|
+
import { CODEX_LB_TOOL_OUTPUT_RECOVERY_OVERRIDE_FLAG, codexLbToolOutputRecoveryOverrideAcknowledged } from '../core/codex-lb/codex-lb-tool-output-recovery.js';
|
|
10
11
|
import { restartCodexApp } from '../core/codex-app/codex-app-restart.js';
|
|
12
|
+
import { repairCodexAppFastUi } from '../core/codex-app/codex-app-fast-ui-repair.js';
|
|
11
13
|
export async function run(command, args = []) {
|
|
12
14
|
const root = await projectRoot();
|
|
13
15
|
const action = args[0] || 'status';
|
|
@@ -21,15 +23,19 @@ export async function run(command, args = []) {
|
|
|
21
23
|
return;
|
|
22
24
|
}
|
|
23
25
|
if (action === 'status' || action === 'check') {
|
|
24
|
-
const
|
|
26
|
+
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
27
|
+
const result = await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery });
|
|
25
28
|
const shaped = shapeCodexLbStatus(result);
|
|
29
|
+
if (result.selected && result.tool_output_recovery?.ok !== true)
|
|
30
|
+
process.exitCode = 1;
|
|
26
31
|
if (flag(args, '--json'))
|
|
27
32
|
return printJson(shaped);
|
|
28
33
|
process.stdout.write(formatCodexLbStatusText(result));
|
|
29
34
|
return;
|
|
30
35
|
}
|
|
31
36
|
if (action === 'doctor') {
|
|
32
|
-
const
|
|
37
|
+
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
38
|
+
const status = shapeCodexLbStatus(await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery }));
|
|
33
39
|
const metrics = codexLbMetrics(await readCodexLbCircuit(root));
|
|
34
40
|
const result = { schema: 'sks.codex-lb-doctor.v1', ok: Boolean(status.ok && metrics.ok), deep: flag(args, '--deep'), status, metrics };
|
|
35
41
|
if (flag(args, '--json'))
|
|
@@ -40,9 +46,14 @@ export async function run(command, args = []) {
|
|
|
40
46
|
return;
|
|
41
47
|
}
|
|
42
48
|
if (action === 'health' || action === 'verify-chain' || action === 'chain') {
|
|
43
|
-
const
|
|
49
|
+
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
50
|
+
const status = await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery });
|
|
44
51
|
const blocker = !status.env_key_configured ? 'missing_env_key' : !status.base_url ? 'missing_base_url' : 'not_configured';
|
|
45
|
-
const result = status.
|
|
52
|
+
const result = status.selected && status.tool_output_recovery?.ok !== true
|
|
53
|
+
? { ok: false, status: 'tool_output_recovery_blocked', codex_lb: status, tool_output_recovery: status.tool_output_recovery }
|
|
54
|
+
: status.ok
|
|
55
|
+
? await checkCodexLbResponseChain(status, { force: true, root, fastMode: flag(args, '--fast') || flag(args, '--priority') })
|
|
56
|
+
: { ok: false, status: blocker, codex_lb: status };
|
|
46
57
|
if (flag(args, '--json'))
|
|
47
58
|
return printJson(result);
|
|
48
59
|
console.log(`codex-lb response chain: ${result.ok ? 'ok' : `failed (${result.status})`}`);
|
|
@@ -51,37 +62,48 @@ export async function run(command, args = []) {
|
|
|
51
62
|
return;
|
|
52
63
|
}
|
|
53
64
|
if (action === 'fast-check' || action === 'fast' || action === 'verify-fast') {
|
|
54
|
-
const
|
|
65
|
+
const allowUnverifiedToolOutputRecovery = codexLbToolOutputRecoveryOverrideAcknowledged({ args });
|
|
66
|
+
const status = await codexLbStatus({ probeToolOutputRecovery: true, allowUnverifiedToolOutputRecovery });
|
|
55
67
|
const blocker = !status.env_key_configured ? 'missing_env_key' : !status.base_url ? 'missing_base_url' : !status.provider_contract_ok ? 'provider_contract_drift' : 'not_configured';
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
const modelSelection = await resolveCodexLbFastCheckModel(status);
|
|
69
|
+
const chain = status.selected && status.tool_output_recovery?.ok !== true
|
|
70
|
+
? { ok: false, status: 'tool_output_recovery_blocked', codex_lb: status, tool_output_recovery: status.tool_output_recovery }
|
|
71
|
+
: status.env_key_configured && status.base_url && modelSelection.model
|
|
72
|
+
? await checkCodexLbResponseChain(status, { force: true, cache: false, root, fastMode: true, model: modelSelection.model })
|
|
73
|
+
: { ok: false, status: modelSelection.model ? blocker : 'model_unselected', codex_lb: status };
|
|
59
74
|
const evidence = await fastEvidenceFromChain(chain, readOption(args, '--request-log', readOption(args, '--request-log-json', null)));
|
|
60
75
|
const providerReady = status.provider_contract_ok === true;
|
|
76
|
+
const chainVerified = isCodexLbFastChainVerified(chain);
|
|
61
77
|
const result = {
|
|
62
78
|
schema: 'sks.codex-lb-fast-check.v1',
|
|
63
|
-
ok: Boolean(providerReady &&
|
|
79
|
+
ok: Boolean(providerReady && chainVerified && evidence.fast_requested && evidence.fast_actual),
|
|
64
80
|
status: !providerReady
|
|
65
81
|
? 'provider_contract_drift'
|
|
66
|
-
: chain.
|
|
67
|
-
?
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
? '
|
|
71
|
-
:
|
|
72
|
-
|
|
82
|
+
: chain.skipped === true
|
|
83
|
+
? 'fast_check_chain_skipped'
|
|
84
|
+
: chainVerified
|
|
85
|
+
? evidence.fast_actual
|
|
86
|
+
? 'fast_verified'
|
|
87
|
+
: evidence.fast_requested
|
|
88
|
+
? 'fast_requested_but_actual_unverified'
|
|
89
|
+
: 'fast_not_requested'
|
|
90
|
+
: chain.status,
|
|
73
91
|
codex_lb: status,
|
|
92
|
+
model_selection: modelSelection,
|
|
74
93
|
chain,
|
|
75
94
|
evidence,
|
|
76
95
|
degraded_models: Array.isArray(chain.degraded_models) ? chain.degraded_models : [],
|
|
77
96
|
quota_low: Boolean(chain.quota_low),
|
|
78
97
|
blockers: [
|
|
79
98
|
...(providerReady ? [] : ['codex_lb_provider_contract_drift']),
|
|
80
|
-
...
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
99
|
+
...modelSelection.blockers,
|
|
100
|
+
...(chain.skipped === true
|
|
101
|
+
? ['codex_lb_fast_check_chain_skipped']
|
|
102
|
+
: chainVerified
|
|
103
|
+
? evidence.fast_actual
|
|
104
|
+
? []
|
|
105
|
+
: [evidence.fast_requested ? 'codex_lb_actual_fast_service_tier_unverified' : 'codex_lb_fast_service_tier_not_requested']
|
|
106
|
+
: [chain.status || blocker])
|
|
85
107
|
]
|
|
86
108
|
};
|
|
87
109
|
if (flag(args, '--json'))
|
|
@@ -94,12 +116,16 @@ export async function run(command, args = []) {
|
|
|
94
116
|
return;
|
|
95
117
|
}
|
|
96
118
|
if (action === 'repair' || action === 'resync' || action === 'login') {
|
|
97
|
-
const result = await repairCodexLbAuth(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
119
|
+
const result = await repairCodexLbAuth({
|
|
120
|
+
allowUnverifiedToolOutputRecovery: codexLbToolOutputRecoveryOverrideAcknowledged({ args })
|
|
121
|
+
});
|
|
122
|
+
const fastUi = await repairCodexAppFastUiAfterMutation(root, Boolean(result.ok));
|
|
123
|
+
const shaped = { ...result, ok: Boolean(result.ok && fastUi.ok), codex_app_fast_ui: fastUi };
|
|
124
|
+
if (!shaped.ok)
|
|
102
125
|
process.exitCode = 1;
|
|
126
|
+
if (flag(args, '--json'))
|
|
127
|
+
return printJson(shaped);
|
|
128
|
+
console.log(`codex-lb repair: ${shaped.ok ? 'ok' : result.ok ? 'fast_ui_repair_failed' : result.status}`);
|
|
103
129
|
return;
|
|
104
130
|
}
|
|
105
131
|
if (action === 'release') {
|
|
@@ -145,10 +171,17 @@ export async function run(command, args = []) {
|
|
|
145
171
|
process.exitCode = 1;
|
|
146
172
|
return;
|
|
147
173
|
}
|
|
148
|
-
const result = await configureCodexLb({
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
174
|
+
const result = await configureCodexLb({
|
|
175
|
+
host,
|
|
176
|
+
apiKey: newKey,
|
|
177
|
+
authMode: flag(args, '--preserve-auth') ? 'preserve' : 'codex-lb',
|
|
178
|
+
forceCodexLbApiKeyAuth: !flag(args, '--preserve-auth'),
|
|
179
|
+
allowUnverifiedToolOutputRecovery: codexLbToolOutputRecoveryOverrideAcknowledged({ args })
|
|
180
|
+
});
|
|
181
|
+
const fastUi = await repairCodexAppFastUiAfterMutation(root, Boolean(result.ok));
|
|
182
|
+
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(result.ok && fastUi.ok));
|
|
183
|
+
const ok = Boolean(result.ok && fastUi.ok && restart?.ok !== false);
|
|
184
|
+
const output = { ...result, ok, action: 'set-key', codex_app_fast_ui: fastUi, restart_app: restart };
|
|
152
185
|
if (!ok)
|
|
153
186
|
process.exitCode = 1;
|
|
154
187
|
if (flag(args, '--json'))
|
|
@@ -162,10 +195,16 @@ export async function run(command, args = []) {
|
|
|
162
195
|
}
|
|
163
196
|
if (action === 'use-codex-lb' || action === 'use-lb') {
|
|
164
197
|
// Switch auth mode -> codex-lb (API key). Re-selects the provider and re-syncs auth.
|
|
165
|
-
const result = await repairCodexLbAuth({
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
198
|
+
const result = await repairCodexLbAuth({
|
|
199
|
+
forceCodexLbApiKeyAuth: true,
|
|
200
|
+
authMode: 'codex-lb',
|
|
201
|
+
forceFastMode: !flag(args, '--no-fast'),
|
|
202
|
+
allowUnverifiedToolOutputRecovery: codexLbToolOutputRecoveryOverrideAcknowledged({ args })
|
|
203
|
+
});
|
|
204
|
+
const fastUi = await repairCodexAppFastUiAfterMutation(root, Boolean(result.ok));
|
|
205
|
+
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(result.ok && fastUi.ok));
|
|
206
|
+
const ok = Boolean(result.ok && fastUi.ok && restart?.ok !== false);
|
|
207
|
+
const shaped = { ...result, ok, mode: 'codex-lb', codex_app_fast_ui: fastUi, restart_app: restart };
|
|
169
208
|
if (!ok)
|
|
170
209
|
process.exitCode = 1;
|
|
171
210
|
if (flag(args, '--json'))
|
|
@@ -181,9 +220,10 @@ export async function run(command, args = []) {
|
|
|
181
220
|
// Switch auth mode -> ChatGPT OAuth. Restores the saved OAuth login if present.
|
|
182
221
|
const result = await releaseCodexLbAuthHold({ force: flag(args, '--force') });
|
|
183
222
|
const authOk = !['no_backup', 'auth_in_use', 'failed'].includes(result.status);
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
const
|
|
223
|
+
const fastUi = await repairCodexAppFastUiAfterMutation(root, authOk);
|
|
224
|
+
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(authOk && fastUi.ok));
|
|
225
|
+
const ok = Boolean(authOk && fastUi.ok && restart?.ok !== false);
|
|
226
|
+
const shaped = { ...result, ok, mode: 'oauth', codex_app_fast_ui: fastUi, restart_app: restart };
|
|
187
227
|
if (!ok)
|
|
188
228
|
process.exitCode = 1;
|
|
189
229
|
if (flag(args, '--json'))
|
|
@@ -311,16 +351,18 @@ export async function run(command, args = []) {
|
|
|
311
351
|
shellProfile: options.shellProfile,
|
|
312
352
|
runHealth: options.health,
|
|
313
353
|
apiKeySource: options.apiKeySource,
|
|
314
|
-
allowInsecureHttp: options.allowInsecureLocalhost
|
|
354
|
+
allowInsecureHttp: options.allowInsecureLocalhost,
|
|
355
|
+
allowUnverifiedToolOutputRecovery: codexLbToolOutputRecoveryOverrideAcknowledged({ args })
|
|
315
356
|
});
|
|
316
|
-
const
|
|
317
|
-
const
|
|
357
|
+
const fastUi = await repairCodexAppFastUiAfterMutation(root, Boolean(result.ok));
|
|
358
|
+
const restart = await maybeRestartCodexAppForAuthSwitch(args, Boolean(result.ok && fastUi.ok) && !flag(args, '--preserve-auth'));
|
|
359
|
+
const shaped = { schema: 'sks.codex-lb-setup.v1', ...result, api_key: { present: Boolean(options.apiKey), redacted: true }, env_file_chmod: '0600', codex_app_fast_ui: fastUi };
|
|
318
360
|
shaped.restart_app = restart;
|
|
319
361
|
if (options.health)
|
|
320
362
|
shaped.applied_actions = [...(shaped.applied_actions || []), { type: 'run_health_check', target: 'codex-lb response chain', ok: true }];
|
|
321
363
|
if (options.health)
|
|
322
364
|
shaped.chain_health = result.ok ? await checkCodexLbResponseChain(result, { force: true, root }) : null;
|
|
323
|
-
shaped.ok = Boolean(result.ok && restart?.ok !== false);
|
|
365
|
+
shaped.ok = Boolean(result.ok && fastUi.ok && restart?.ok !== false);
|
|
324
366
|
if (!shaped.ok)
|
|
325
367
|
process.exitCode = 1;
|
|
326
368
|
if (flag(args, '--json'))
|
|
@@ -363,6 +405,7 @@ export async function run(command, args = []) {
|
|
|
363
405
|
return;
|
|
364
406
|
}
|
|
365
407
|
console.error('Usage: sks codex-lb status|metrics|doctor --deep|health|setup|set-key|use-codex-lb|use-oauth|repair|release|unselect|circuit reset|circuit record-fixture|proof-evidence [--json]');
|
|
408
|
+
console.error(` ${CODEX_LB_TOOL_OUTPUT_RECOVERY_OVERRIDE_FLAG} explicitly acknowledge an old/unverified proxy for this command (unsafe)`);
|
|
366
409
|
console.error(' set-key swap the codex-lb API key (reuses the stored host): sks codex-lb set-key --api-key-stdin');
|
|
367
410
|
console.error(' use-codex-lb switch auth mode to codex-lb (API key)');
|
|
368
411
|
console.error(' use-oauth switch auth mode to ChatGPT OAuth (restores saved login, else: codex login)');
|
|
@@ -375,7 +418,85 @@ async function maybeRestartCodexAppForAuthSwitch(args = [], enabled) {
|
|
|
375
418
|
const shouldRestart = requested || (!flag(args, '--json') && !flag(args, '--no-restart-app') && !flag(args, '--no-restart'));
|
|
376
419
|
return restartCodexApp({ enabled: shouldRestart });
|
|
377
420
|
}
|
|
378
|
-
async function
|
|
421
|
+
async function repairCodexAppFastUiAfterMutation(root, enabled) {
|
|
422
|
+
if (!enabled) {
|
|
423
|
+
return {
|
|
424
|
+
schema: 'sks.codex-app-fast-ui-repair.v1',
|
|
425
|
+
ok: true,
|
|
426
|
+
status: 'skipped',
|
|
427
|
+
skipped: true,
|
|
428
|
+
reason: 'previous_step_failed',
|
|
429
|
+
actions: [],
|
|
430
|
+
blockers: []
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
try {
|
|
434
|
+
return await repairCodexAppFastUi(root, { apply: true });
|
|
435
|
+
}
|
|
436
|
+
catch (err) {
|
|
437
|
+
return {
|
|
438
|
+
schema: 'sks.codex-app-fast-ui-repair.v1',
|
|
439
|
+
ok: false,
|
|
440
|
+
status: 'failed',
|
|
441
|
+
actions: [],
|
|
442
|
+
blockers: ['codex_app_fast_ui_repair_failed'],
|
|
443
|
+
error: String(err?.message || err)
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
export function isCodexLbFastChainVerified(chain = {}) {
|
|
448
|
+
return chain.ok === true && chain.skipped !== true;
|
|
449
|
+
}
|
|
450
|
+
export async function resolveCodexLbFastCheckModel(status = {}, env = process.env) {
|
|
451
|
+
const explicit = String(env.SKS_CODEX_MODEL || env.CODEX_MODEL || '').trim();
|
|
452
|
+
if (explicit)
|
|
453
|
+
return { model: explicit, source: env.SKS_CODEX_MODEL ? 'SKS_CODEX_MODEL' : 'CODEX_MODEL', blockers: [] };
|
|
454
|
+
const configPath = String(status.config_path || '').trim();
|
|
455
|
+
const config = configPath ? await readText(configPath, '').catch(() => '') : '';
|
|
456
|
+
const configured = topLevelTomlString(config, 'model');
|
|
457
|
+
if (configured)
|
|
458
|
+
return { model: configured, source: 'global_config', blockers: [] };
|
|
459
|
+
const configuredCatalogPath = topLevelTomlString(config, 'model_catalog_json');
|
|
460
|
+
if (!configuredCatalogPath)
|
|
461
|
+
return { model: null, source: null, blockers: ['codex_lb_fast_check_model_unselected'] };
|
|
462
|
+
const home = String(env.HOME || '').trim();
|
|
463
|
+
const expandedCatalogPath = configuredCatalogPath.startsWith('~/') && home
|
|
464
|
+
? path.join(home, configuredCatalogPath.slice(2))
|
|
465
|
+
: configuredCatalogPath;
|
|
466
|
+
const catalogPath = path.isAbsolute(expandedCatalogPath)
|
|
467
|
+
? expandedCatalogPath
|
|
468
|
+
: path.resolve(path.dirname(configPath), expandedCatalogPath);
|
|
469
|
+
try {
|
|
470
|
+
const payload = JSON.parse(await readText(catalogPath, ''));
|
|
471
|
+
const model = selectPriorityCapableCatalogModel(payload);
|
|
472
|
+
return model
|
|
473
|
+
? { model, source: 'model_catalog_json', blockers: [] }
|
|
474
|
+
: { model: null, source: 'model_catalog_json', blockers: ['codex_lb_fast_check_priority_model_unavailable'] };
|
|
475
|
+
}
|
|
476
|
+
catch {
|
|
477
|
+
return { model: null, source: 'model_catalog_json', blockers: ['codex_lb_fast_check_catalog_invalid'] };
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
function topLevelTomlString(text, key) {
|
|
481
|
+
const topLevel = String(text || '').split(/\n\s*\[/)[0] || '';
|
|
482
|
+
const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
483
|
+
return (topLevel.match(new RegExp(`(?:^|\\n)\\s*${escaped}\\s*=\\s*"([^"]+)"`))?.[1] || '').trim();
|
|
484
|
+
}
|
|
485
|
+
function selectPriorityCapableCatalogModel(payload = {}) {
|
|
486
|
+
const models = Array.isArray(payload?.models) ? payload.models : Array.isArray(payload?.data) ? payload.data : [];
|
|
487
|
+
return models
|
|
488
|
+
.filter((row) => {
|
|
489
|
+
if (!row || typeof row !== 'object' || row.supported_in_api !== true || typeof row.slug !== 'string' || !row.slug.trim())
|
|
490
|
+
return false;
|
|
491
|
+
const serviceTiers = Array.isArray(row.service_tiers) ? row.service_tiers : [];
|
|
492
|
+
const speedTiers = Array.isArray(row.additional_speed_tiers) ? row.additional_speed_tiers : [];
|
|
493
|
+
return serviceTiers.some((tier) => normalizeTier(typeof tier === 'string' ? tier : tier?.id) === 'priority')
|
|
494
|
+
|| speedTiers.some((tier) => normalizeTier(tier) === 'priority');
|
|
495
|
+
})
|
|
496
|
+
.sort((left, right) => Number(left.priority ?? Number.MAX_SAFE_INTEGER) - Number(right.priority ?? Number.MAX_SAFE_INTEGER)
|
|
497
|
+
|| String(left.slug).localeCompare(String(right.slug)))[0]?.slug || null;
|
|
498
|
+
}
|
|
499
|
+
export async function fastEvidenceFromChain(chain = {}, requestLogPath = null) {
|
|
379
500
|
const chainEvidence = chain.service_tier_evidence || {};
|
|
380
501
|
const logRows = requestLogPath ? await readRequestLogRows(String(requestLogPath)) : [];
|
|
381
502
|
const logEvidence = serviceTierEvidenceFromRows(logRows);
|
|
@@ -423,14 +544,14 @@ async function readRequestLogRows(file) {
|
|
|
423
544
|
}
|
|
424
545
|
return rows;
|
|
425
546
|
}
|
|
426
|
-
function serviceTierEvidenceFromRows(rows = []) {
|
|
547
|
+
export function serviceTierEvidenceFromRows(rows = []) {
|
|
427
548
|
let requested = null;
|
|
428
549
|
let actual = null;
|
|
429
550
|
let effective = null;
|
|
430
551
|
for (const row of rows) {
|
|
431
552
|
requested ||= normalizeTier(row?.requestedServiceTier || row?.requested_service_tier || row?.request?.service_tier || row?.body?.service_tier);
|
|
432
|
-
actual ||= normalizeTier(row?.actualServiceTier || row?.actual_service_tier || row?.response?.actualServiceTier);
|
|
433
|
-
effective ||=
|
|
553
|
+
actual ||= normalizeTier(row?.actualServiceTier || row?.actual_service_tier || row?.response?.actualServiceTier || row?.response?.actual_service_tier);
|
|
554
|
+
effective ||= responseServiceTier(row);
|
|
434
555
|
}
|
|
435
556
|
return {
|
|
436
557
|
requested_service_tier: requested,
|
|
@@ -439,6 +560,17 @@ function serviceTierEvidenceFromRows(rows = []) {
|
|
|
439
560
|
fast_actual: actual === 'priority' || effective === 'priority'
|
|
440
561
|
};
|
|
441
562
|
}
|
|
563
|
+
function responseServiceTier(row) {
|
|
564
|
+
const nested = normalizeTier(row?.response?.serviceTier || row?.response?.service_tier || row?.event?.response?.serviceTier || row?.event?.response?.service_tier);
|
|
565
|
+
if (nested)
|
|
566
|
+
return nested;
|
|
567
|
+
const responseKind = String(row?.direction || row?.phase || row?.kind || row?.type || '').trim().toLowerCase();
|
|
568
|
+
const responseBody = row?.object === 'response' || /^resp[_-]/i.test(String(row?.id || '')) || Array.isArray(row?.output);
|
|
569
|
+
if (responseBody || responseKind === 'response' || responseKind === 'inbound' || responseKind.startsWith('response.')) {
|
|
570
|
+
return normalizeTier(row?.serviceTier || row?.service_tier);
|
|
571
|
+
}
|
|
572
|
+
return null;
|
|
573
|
+
}
|
|
442
574
|
function normalizeTier(value) {
|
|
443
575
|
const text = String(value || '').trim().toLowerCase();
|
|
444
576
|
if (text === 'fast')
|
|
@@ -483,9 +615,10 @@ function shapeCodexLbStatus(status = {}) {
|
|
|
483
615
|
return {
|
|
484
616
|
schema: 'sks.codex-lb-status.v1',
|
|
485
617
|
...status,
|
|
486
|
-
configured: Boolean(status.ok),
|
|
487
|
-
setup_needed: !status.ok,
|
|
488
|
-
|
|
618
|
+
configured: Boolean(status.provider_ready ?? status.ok),
|
|
619
|
+
setup_needed: !Boolean(status.provider_ready ?? status.ok),
|
|
620
|
+
upgrade_needed: Boolean(status.selected && status.tool_output_recovery?.ok !== true),
|
|
621
|
+
repair_available: !Boolean(status.provider_ready ?? status.ok),
|
|
489
622
|
api_key: {
|
|
490
623
|
present: Boolean(status.env_key_configured),
|
|
491
624
|
source: status.env_loader?.api_key?.source || null,
|
|
@@ -494,11 +627,13 @@ function shapeCodexLbStatus(status = {}) {
|
|
|
494
627
|
persistence,
|
|
495
628
|
env_loader: status.env_loader || null,
|
|
496
629
|
env_auto_load: Boolean(status.env_file && status.env_key_configured),
|
|
497
|
-
guidance: status.
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
630
|
+
guidance: status.selected && status.tool_output_recovery?.ok !== true
|
|
631
|
+
? status.tool_output_recovery.operator_actions || []
|
|
632
|
+
: status.ok ? [] : [
|
|
633
|
+
'codex-lb API key is not configured.',
|
|
634
|
+
'Run: sks codex-lb setup',
|
|
635
|
+
'Or: sks codex-lb setup --host <domain> --api-key-stdin --yes'
|
|
636
|
+
]
|
|
502
637
|
};
|
|
503
638
|
}
|
|
504
639
|
async function codexLbSetupOptions(args = []) {
|
package/dist/commands/codex.js
CHANGED
|
@@ -4,7 +4,9 @@ import { codexCompatibilityReport, codexDoctorReport } from '../core/codex-compa
|
|
|
4
4
|
import { codexVersionReport } from '../core/codex-compat/codex-version.js';
|
|
5
5
|
import { codexSchemaSnapshotReport } from '../core/codex-compat/codex-schema-snapshot.js';
|
|
6
6
|
import { detectCodex0141Capability } from '../core/codex-control/codex-0141-capability.js';
|
|
7
|
-
import {
|
|
7
|
+
import { detectCodex0144Capability } from '../core/codex-control/codex-0144-capability.js';
|
|
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';
|
|
8
10
|
export async function run(_command, args = []) {
|
|
9
11
|
const action = args[0] || 'compatibility';
|
|
10
12
|
if (action === 'compatibility' || action === 'compat') {
|
|
@@ -26,6 +28,43 @@ export async function run(_command, args = []) {
|
|
|
26
28
|
console.log(`Codex detected: ${result.detected.version || 'not installed'} (${result.policy.status})`);
|
|
27
29
|
return;
|
|
28
30
|
}
|
|
31
|
+
if (action === 'update-status' || action === 'update-check') {
|
|
32
|
+
const result = await inspectCodexCliUpdate({ force: flag(args, '--refresh') || flag(args, '--force') });
|
|
33
|
+
if (flag(args, '--json')) {
|
|
34
|
+
printJson(result);
|
|
35
|
+
if (!result.ok)
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.log(`Codex CLI: ${result.current_version || 'not installed'}${result.latest_version ? ` (latest ${result.latest_version})` : ''}`);
|
|
40
|
+
console.log(`Update: ${result.update_available === true ? 'available' : result.update_available === false ? 'current' : 'unverified'}`);
|
|
41
|
+
for (const warning of result.warnings)
|
|
42
|
+
console.log(`- warning: ${warning}`);
|
|
43
|
+
for (const actionLine of result.guidance)
|
|
44
|
+
console.log(`- ${actionLine}`);
|
|
45
|
+
if (!result.ok)
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (action === 'update' || action === 'update-now') {
|
|
50
|
+
const result = await updateCodexCliNow();
|
|
51
|
+
if (flag(args, '--json')) {
|
|
52
|
+
printJson(result);
|
|
53
|
+
if (!result.ok)
|
|
54
|
+
process.exitCode = 1;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
console.log(`Codex CLI update: ${result.status}${result.after_version ? ` (${result.before_version || 'unknown'} -> ${result.after_version})` : ''}`);
|
|
58
|
+
if (result.raw_output)
|
|
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}`);
|
|
64
|
+
if (!result.ok)
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
29
68
|
if (action === '0.141' || action === '0141' || action === 'rust-v0.141.0') {
|
|
30
69
|
const result = await detectCodex0141Capability();
|
|
31
70
|
if (flag(args, '--json'))
|
|
@@ -39,11 +78,11 @@ export async function run(_command, args = []) {
|
|
|
39
78
|
process.exitCode = 1;
|
|
40
79
|
return;
|
|
41
80
|
}
|
|
42
|
-
if (action === '0.
|
|
43
|
-
const result = await
|
|
81
|
+
if (action === '0.144' || action === '0144' || action === CURRENT_CODEX_RELEASE_MANIFEST.targetTag) {
|
|
82
|
+
const result = await detectCodex0144Capability({ requireReal: flag(args, '--require-real') });
|
|
44
83
|
if (flag(args, '--json'))
|
|
45
84
|
return printJson(result);
|
|
46
|
-
console.log(`Codex
|
|
85
|
+
console.log(`Codex ${CURRENT_CODEX_RELEASE_MANIFEST.requiredCliVersion} compatibility: ${result.ok ? 'ok' : 'blocked'} (${result.probe_mode})`);
|
|
47
86
|
for (const blocker of result.blockers || [])
|
|
48
87
|
console.log(`- blocker: ${blocker}`);
|
|
49
88
|
for (const warning of result.warnings || [])
|
|
@@ -70,7 +109,7 @@ export async function run(_command, args = []) {
|
|
|
70
109
|
process.exitCode = 1;
|
|
71
110
|
return;
|
|
72
111
|
}
|
|
73
|
-
console.error('Usage: sks codex compatibility|version|doctor|schema|0.
|
|
112
|
+
console.error('Usage: sks codex compatibility|version|update-status [--refresh]|update|doctor|schema|0.144|0.141 [--json]');
|
|
74
113
|
process.exitCode = 1;
|
|
75
114
|
}
|
|
76
115
|
//# sourceMappingURL=codex.js.map
|