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
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { GLM_52_OPENROUTER_MODEL, GLM_MAD_MODE } from './glm-52-settings.js';
|
|
2
|
-
import { profileFromConst } from './glm-profile-resolver.js';
|
|
3
|
-
export const GLM_CODEX_APP_PROFILE_ID = 'sks/glm-5.2-mad';
|
|
4
|
-
export const GLM_CODEX_APP_PROFILE_LABEL = 'GLM 5.2 (MAD Speed / OpenRouter)';
|
|
5
|
-
export const GLM_CODEX_CONFIG_PROVIDER_ID = 'openrouter';
|
|
6
|
-
export const GLM_CODEX_CONFIG_PROFILE_ID = 'sks-glm-52-mad';
|
|
7
|
-
export const GLM_CODEX_SELECTABLE_REASONING_EFFORTS = [
|
|
8
|
-
'none',
|
|
9
|
-
'minimal',
|
|
10
|
-
'low',
|
|
11
|
-
'medium',
|
|
12
|
-
'high',
|
|
13
|
-
'xhigh',
|
|
14
|
-
];
|
|
15
|
-
export const GLM_CODEX_CONFIG_REASONING_PROFILES = [
|
|
16
|
-
{
|
|
17
|
-
id: GLM_CODEX_CONFIG_PROFILE_ID,
|
|
18
|
-
label: 'GLM 5.2 MAD Speed',
|
|
19
|
-
reasoning_effort: 'none',
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
id: 'sks-glm-52-minimal',
|
|
23
|
-
label: 'GLM 5.2 Minimal',
|
|
24
|
-
reasoning_effort: 'minimal',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: 'sks-glm-52-low',
|
|
28
|
-
label: 'GLM 5.2 Low',
|
|
29
|
-
reasoning_effort: 'low',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
id: 'sks-glm-52-medium',
|
|
33
|
-
label: 'GLM 5.2 Medium',
|
|
34
|
-
reasoning_effort: 'medium',
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
id: 'sks-glm-52-high',
|
|
38
|
-
label: 'GLM 5.2 High',
|
|
39
|
-
reasoning_effort: 'high',
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
id: 'sks-glm-52-xhigh',
|
|
43
|
-
label: 'GLM 5.2 XHigh',
|
|
44
|
-
reasoning_effort: 'xhigh',
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
export function buildGlmCodexAppModelProfile() {
|
|
48
|
-
const speed = profileFromConst('speed');
|
|
49
|
-
return {
|
|
50
|
-
schema: 'sks.codex-app-model-profile.v1',
|
|
51
|
-
id: GLM_CODEX_APP_PROFILE_ID,
|
|
52
|
-
label: GLM_CODEX_APP_PROFILE_LABEL,
|
|
53
|
-
provider: 'openrouter',
|
|
54
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
55
|
-
codexConfigProvider: GLM_CODEX_CONFIG_PROVIDER_ID,
|
|
56
|
-
codexConfigProfile: GLM_CODEX_CONFIG_PROFILE_ID,
|
|
57
|
-
supportedReasoningEfforts: GLM_CODEX_SELECTABLE_REASONING_EFFORTS,
|
|
58
|
-
reasoningProfiles: GLM_CODEX_CONFIG_REASONING_PROFILES,
|
|
59
|
-
mode: GLM_MAD_MODE,
|
|
60
|
-
strictModelLock: true,
|
|
61
|
-
gptFallbackAllowed: false,
|
|
62
|
-
requiresSecret: 'openrouter-api-key',
|
|
63
|
-
defaultProfile: 'speed',
|
|
64
|
-
defaultSettings: {
|
|
65
|
-
temperature: speed.temperature,
|
|
66
|
-
top_p: speed.top_p,
|
|
67
|
-
reasoning_effort: speed.reasoning_effort || null,
|
|
68
|
-
tool_choice: speed.tool_choice,
|
|
69
|
-
parallel_tool_calls: speed.parallel_tool_calls,
|
|
70
|
-
max_tokens: speed.max_tokens,
|
|
71
|
-
provider_sort: speed.provider.sort || 'throughput',
|
|
72
|
-
provider_allow_fallbacks: false,
|
|
73
|
-
provider_require_parameters: speed.provider.require_parameters
|
|
74
|
-
},
|
|
75
|
-
codexCompatibility: {
|
|
76
|
-
target: 'rust-v0.141.0',
|
|
77
|
-
selectedExecutorPluginMcp: 'defer-to-codex-native',
|
|
78
|
-
duplicateAppMcpDeclarations: 'dedupe-by-codex',
|
|
79
|
-
cwdShellPathSemantics: 'preserve-codex-native'
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { GLM_52_DEFAULT_REQUEST_SETTINGS, GLM_52_OPENROUTER_MODEL, clampGlm52MaxTokens } from './glm-52-settings.js';
|
|
2
|
-
import { buildDeepReasoningConfig, buildFastReasoningConfig } from './glm-reasoning-policy.js';
|
|
3
|
-
import { profileFromConst, reasoningEffortFromGlmSlashModelArgs, resolveGlmProfileFromArgs } from './glm-profile-resolver.js';
|
|
4
|
-
export function buildGlm52Request(input) {
|
|
5
|
-
const profile = resolveInputProfile(input.profile, input.args, input.reasoningEffort);
|
|
6
|
-
if (profile.blockers.length) {
|
|
7
|
-
throw new Error(`GLM request profile blocked: ${profile.blockers.join(', ')}`);
|
|
8
|
-
}
|
|
9
|
-
const strictOrDeepEffort = profile.reasoning_effort || (input.reasoningEffort === 'high' || input.reasoningEffort === 'xhigh' ? input.reasoningEffort : undefined);
|
|
10
|
-
const selectedReasoningEffort = input.reasoningEffort || (input.args ? reasoningEffortFromGlmSlashModelArgs(input.args) || undefined : undefined);
|
|
11
|
-
const reasoning = profile.name === 'speed'
|
|
12
|
-
? buildSpeedReasoningConfig(selectedReasoningEffort, input.reasoningMeta)
|
|
13
|
-
: buildDeepReasoningConfig(strictOrDeepEffort || 'high');
|
|
14
|
-
if (profile.name === 'speed' && (reasoning.effort === 'high' || reasoning.effort === 'xhigh')) {
|
|
15
|
-
throw new Error(`GLM speed profile invariant violated: forbidden reasoning effort ${reasoning.effort}`);
|
|
16
|
-
}
|
|
17
|
-
const request = {
|
|
18
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
19
|
-
messages: input.messages,
|
|
20
|
-
stream: input.stream ?? profile.stream,
|
|
21
|
-
temperature: profile.temperature,
|
|
22
|
-
top_p: profile.top_p,
|
|
23
|
-
...(reasoning ? { reasoning } : {}),
|
|
24
|
-
max_tokens: clampGlm52MaxTokens(input.maxTokens ?? profile.max_tokens),
|
|
25
|
-
tool_choice: input.toolChoice ?? profile.tool_choice,
|
|
26
|
-
parallel_tool_calls: input.parallelToolCalls ?? profile.parallel_tool_calls,
|
|
27
|
-
...(profile.stop && profile.name === 'speed' ? { stop: profile.stop } : {}),
|
|
28
|
-
provider: {
|
|
29
|
-
allow_fallbacks: false,
|
|
30
|
-
require_parameters: profile.provider.require_parameters,
|
|
31
|
-
...(profile.provider.sort || input.providerSort ? { sort: input.providerSort ?? profile.provider.sort } : {}),
|
|
32
|
-
...(profile.provider.preferred_min_throughput ? { preferred_min_throughput: profile.provider.preferred_min_throughput } : {}),
|
|
33
|
-
...(profile.provider.preferred_max_latency ? { preferred_max_latency: profile.provider.preferred_max_latency } : {}),
|
|
34
|
-
...(profile.provider.order ? { order: profile.provider.order } : {})
|
|
35
|
-
},
|
|
36
|
-
...(input.responseFormat || profile.response_format ? { response_format: input.responseFormat ?? profile.response_format } : {})
|
|
37
|
-
};
|
|
38
|
-
return {
|
|
39
|
-
...request,
|
|
40
|
-
...(input.tools && request.tool_choice !== 'none' ? { tools: input.tools } : {})
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function buildGlm52KeyValidationRequest() {
|
|
44
|
-
return buildGlm52Request({
|
|
45
|
-
messages: [{ role: 'user', content: 'Reply with OK.' }],
|
|
46
|
-
profile: 'speed',
|
|
47
|
-
stream: false,
|
|
48
|
-
maxTokens: 1,
|
|
49
|
-
toolChoice: 'none',
|
|
50
|
-
parallelToolCalls: false
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function resolveInputProfile(profile, args, reasoningEffort) {
|
|
54
|
-
if (profile && typeof profile === 'object')
|
|
55
|
-
return profile;
|
|
56
|
-
if (profile)
|
|
57
|
-
return profileFromConst(profile);
|
|
58
|
-
if (args)
|
|
59
|
-
return resolveGlmProfileFromArgs(args);
|
|
60
|
-
if (reasoningEffort === 'xhigh')
|
|
61
|
-
return profileFromConst('xhigh');
|
|
62
|
-
if (reasoningEffort === 'high')
|
|
63
|
-
return profileFromConst('deep');
|
|
64
|
-
return profileFromConst(GLM_52_DEFAULT_REQUEST_SETTINGS.mode === 'mad-glm-speed' ? 'speed' : 'speed');
|
|
65
|
-
}
|
|
66
|
-
function buildSpeedReasoningConfig(reasoningEffort, reasoningMeta) {
|
|
67
|
-
if (reasoningEffort === 'none')
|
|
68
|
-
return { exclude: true };
|
|
69
|
-
if (reasoningEffort === 'minimal' || reasoningEffort === 'low' || reasoningEffort === 'medium') {
|
|
70
|
-
return { effort: reasoningEffort, exclude: true };
|
|
71
|
-
}
|
|
72
|
-
return buildFastReasoningConfig(reasoningMeta);
|
|
73
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { GLM_52_OPENROUTER_MODEL } from './glm-52-settings.js';
|
|
2
|
-
export function assertGlm52ActualModel(responseModel) {
|
|
3
|
-
if (!responseModel) {
|
|
4
|
-
return {
|
|
5
|
-
ok: false,
|
|
6
|
-
code: 'glm_model_missing',
|
|
7
|
-
requestedModel: GLM_52_OPENROUTER_MODEL,
|
|
8
|
-
strictModelLock: true,
|
|
9
|
-
gptFallbackAllowed: false
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
const normalized = responseModel.toLowerCase();
|
|
13
|
-
if (normalized === GLM_52_OPENROUTER_MODEL ||
|
|
14
|
-
normalized.startsWith(`${GLM_52_OPENROUTER_MODEL}-`)) {
|
|
15
|
-
return {
|
|
16
|
-
ok: true,
|
|
17
|
-
code: 'ok',
|
|
18
|
-
actualModel: responseModel,
|
|
19
|
-
requestedModel: GLM_52_OPENROUTER_MODEL,
|
|
20
|
-
strictModelLock: true,
|
|
21
|
-
gptFallbackAllowed: false
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
ok: false,
|
|
26
|
-
code: 'glm_model_mismatch',
|
|
27
|
-
actualModel: responseModel,
|
|
28
|
-
requestedModel: GLM_52_OPENROUTER_MODEL,
|
|
29
|
-
strictModelLock: true,
|
|
30
|
-
gptFallbackAllowed: false
|
|
31
|
-
};
|
|
32
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
export { OPENROUTER_CHAT_COMPLETIONS_URL } from '../openrouter/openrouter-types.js';
|
|
2
|
-
export const GLM_52_OPENROUTER_MODEL = 'z-ai/glm-5.2';
|
|
3
|
-
export const GLM_52_MODEL = GLM_52_OPENROUTER_MODEL;
|
|
4
|
-
export const GLM_SPEED_MODE = 'mad-glm-speed';
|
|
5
|
-
export const GLM_DEEP_MODE = 'mad-glm-deep';
|
|
6
|
-
export const GLM_XHIGH_MODE = 'mad-glm-xhigh';
|
|
7
|
-
export const GLM_STRICT_MODE = 'mad-glm-strict';
|
|
8
|
-
export const GLM_MAD_MODE = GLM_SPEED_MODE;
|
|
9
|
-
export const GLM_52_MAX_TOKENS_SPEED = 4096;
|
|
10
|
-
export const GLM_52_MAX_TOKENS_DEFAULT = GLM_52_MAX_TOKENS_SPEED;
|
|
11
|
-
export const GLM_52_MAX_TOKENS_DEEP = 16384;
|
|
12
|
-
export const GLM_52_MAX_TOKENS_XHIGH = 32768;
|
|
13
|
-
export const GLM_52_MAX_TOKENS_LONG = 65536;
|
|
14
|
-
export const GLM_52_MAX_TOKENS_XLONG = 131072;
|
|
15
|
-
export const GLM_52_TOP_PROVIDER_MAX_COMPLETION_TOKENS = 262144;
|
|
16
|
-
export const GLM_SPEED_PROFILE = {
|
|
17
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
18
|
-
mode: GLM_SPEED_MODE,
|
|
19
|
-
temperature: 0.2,
|
|
20
|
-
top_p: 0.85,
|
|
21
|
-
stream: true,
|
|
22
|
-
provider: {
|
|
23
|
-
allow_fallbacks: false,
|
|
24
|
-
require_parameters: false,
|
|
25
|
-
sort: 'throughput',
|
|
26
|
-
preferred_min_throughput: { p50: 80, p90: 40 },
|
|
27
|
-
preferred_max_latency: { p50: 2, p90: 5 }
|
|
28
|
-
},
|
|
29
|
-
tool_choice: 'none',
|
|
30
|
-
parallel_tool_calls: false,
|
|
31
|
-
max_tokens: GLM_52_MAX_TOKENS_SPEED,
|
|
32
|
-
reasoning_effort: null,
|
|
33
|
-
reasoning_default: 'off-or-minimal-speed'
|
|
34
|
-
};
|
|
35
|
-
export const GLM_DEEP_PROFILE = {
|
|
36
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
37
|
-
mode: GLM_DEEP_MODE,
|
|
38
|
-
temperature: 0.3,
|
|
39
|
-
top_p: 0.9,
|
|
40
|
-
stream: true,
|
|
41
|
-
provider: {
|
|
42
|
-
allow_fallbacks: false,
|
|
43
|
-
require_parameters: true,
|
|
44
|
-
sort: 'throughput'
|
|
45
|
-
},
|
|
46
|
-
tool_choice: 'auto',
|
|
47
|
-
parallel_tool_calls: false,
|
|
48
|
-
max_tokens: GLM_52_MAX_TOKENS_DEEP,
|
|
49
|
-
reasoning_effort: 'high'
|
|
50
|
-
};
|
|
51
|
-
export const GLM_XHIGH_PROFILE = {
|
|
52
|
-
...GLM_DEEP_PROFILE,
|
|
53
|
-
mode: GLM_XHIGH_MODE,
|
|
54
|
-
max_tokens: GLM_52_MAX_TOKENS_XHIGH,
|
|
55
|
-
reasoning_effort: 'xhigh'
|
|
56
|
-
};
|
|
57
|
-
export const GLM_STRICT_PROFILE = {
|
|
58
|
-
...GLM_DEEP_PROFILE,
|
|
59
|
-
mode: GLM_STRICT_MODE,
|
|
60
|
-
structured_outputs: true,
|
|
61
|
-
response_format: 'json_schema'
|
|
62
|
-
};
|
|
63
|
-
export const GLM_52_DEFAULT_REQUEST_SETTINGS = GLM_SPEED_PROFILE;
|
|
64
|
-
export function clampGlm52MaxTokens(value) {
|
|
65
|
-
const numeric = Number.isFinite(value) ? Math.floor(Number(value)) : GLM_52_MAX_TOKENS_DEFAULT;
|
|
66
|
-
return Math.max(1, Math.min(numeric, GLM_52_TOP_PROVIDER_MAX_COMPLETION_TOKENS));
|
|
67
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const GLM_SPEED_CONTEXT_TARGET_TOKENS = 16_000;
|
|
2
|
-
export const GLM_SPEED_CONTEXT_HARD_CAP_TOKENS = 32_000;
|
|
3
|
-
export const GLM_DEEP_CONTEXT_TARGET_TOKENS = 64_000;
|
|
4
|
-
export function estimateGlmTokens(text) {
|
|
5
|
-
if (!text)
|
|
6
|
-
return 0;
|
|
7
|
-
return Math.ceil(text.length / 4);
|
|
8
|
-
}
|
|
9
|
-
export function trimToEstimatedTokens(text, maxTokens) {
|
|
10
|
-
const maxChars = Math.max(0, Math.floor(maxTokens) * 4);
|
|
11
|
-
if (text.length <= maxChars)
|
|
12
|
-
return text;
|
|
13
|
-
return text.slice(0, maxChars);
|
|
14
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { SksLruCache } from '../../perf/lru-cache.js';
|
|
2
|
-
export function createGlmContextCache(maxEntries = 64) {
|
|
3
|
-
const cache = new SksLruCache(maxEntries);
|
|
4
|
-
return {
|
|
5
|
-
getByDigest: (digest) => cache.get(digest),
|
|
6
|
-
set: (context) => cache.set(context.digest, context)
|
|
7
|
-
};
|
|
8
|
-
}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { nowIso, writeJsonAtomic } from '../../fsx.js';
|
|
4
|
-
import { resolveOpenRouterApiKey } from '../openrouter/openrouter-secret-store.js';
|
|
5
|
-
import { sendOpenRouterChatCompletionStream } from '../openrouter/openrouter-stream.js';
|
|
6
|
-
import { assertGlm52ActualModel } from './glm-52-response-guard.js';
|
|
7
|
-
import { GLM_52_OPENROUTER_MODEL } from './glm-52-settings.js';
|
|
8
|
-
import { buildGlm52Request } from './glm-52-request.js';
|
|
9
|
-
import { buildGlmSpeedContext } from './glm-speed-context.js';
|
|
10
|
-
import { parseGlmSpeedOutput } from './glm-speed-output-parser.js';
|
|
11
|
-
import { evaluateGlmSpeedGate } from './glm-speed-gate.js';
|
|
12
|
-
import { checkAndApplyGlmPatch } from './glm-patch-apply.js';
|
|
13
|
-
import { createGlmRunController, writeGlmRunArtifacts } from './glm-run-controller.js';
|
|
14
|
-
import { GLM_SPEED_LIMITS } from './glm-run-timeout.js';
|
|
15
|
-
import { recordGlmLoopIteration } from './glm-loop-guard.js';
|
|
16
|
-
export async function runGlmDirectSpeedRun(input) {
|
|
17
|
-
if (process.env.SKS_GLM_WRAPPER_ACTIVE === '1') {
|
|
18
|
-
return blocked('glm-recursive-blocked', input.task, 'glm_recursive_launch_blocked', ['glm_recursive_launch_blocked']);
|
|
19
|
-
}
|
|
20
|
-
const controller = createGlmRunController({ limits: GLM_SPEED_LIMITS });
|
|
21
|
-
controller.transition('preflight');
|
|
22
|
-
const key = await resolveOpenRouterApiKey({ env: process.env });
|
|
23
|
-
if (!key.key) {
|
|
24
|
-
const termination = controller.terminate('blocked', 'glm_patch_gate_failed', key.blockers, [
|
|
25
|
-
'set_OPENROUTER_API_KEY_or_run_sks_--mad_--glm_--repair'
|
|
26
|
-
]);
|
|
27
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination });
|
|
28
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], key.blockers, termination.warnings);
|
|
29
|
-
}
|
|
30
|
-
controller.transition('context');
|
|
31
|
-
const gitStatus = await readGitStatus(input.cwd);
|
|
32
|
-
const context = await buildGlmSpeedContext({
|
|
33
|
-
cwd: input.cwd,
|
|
34
|
-
task: input.task,
|
|
35
|
-
mentionedPaths: extractMentionedPaths(input.task),
|
|
36
|
-
readFile: async (file) => fs.readFile(file, 'utf8').catch(() => null),
|
|
37
|
-
...(gitStatus ? { gitStatus } : {})
|
|
38
|
-
});
|
|
39
|
-
controller.transition('request');
|
|
40
|
-
const request = buildGlm52Request({
|
|
41
|
-
profile: 'speed',
|
|
42
|
-
...(input.args ? { args: input.args } : {}),
|
|
43
|
-
messages: [
|
|
44
|
-
{ role: 'system', content: 'Return only <sks_patch>, <sks_need_context>, or <sks_blocked>. Use unified diff for patches.' },
|
|
45
|
-
{ role: 'user', content: JSON.stringify({ task: input.task, context }) }
|
|
46
|
-
],
|
|
47
|
-
maxTokens: 4096
|
|
48
|
-
});
|
|
49
|
-
const response = await sendOpenRouterChatCompletionStream({
|
|
50
|
-
apiKey: key.key,
|
|
51
|
-
request: {
|
|
52
|
-
...request,
|
|
53
|
-
session_id: `sks-${controller.state().run_id}`
|
|
54
|
-
},
|
|
55
|
-
timeoutMs: GLM_SPEED_LIMITS.request_timeout_ms
|
|
56
|
-
});
|
|
57
|
-
if (!response.ok) {
|
|
58
|
-
const reason = response.error.code === 'glm_request_timeout' ? 'glm_request_timeout' : 'glm_patch_gate_failed';
|
|
59
|
-
const termination = controller.terminate(reason === 'glm_request_timeout' ? 'timeout' : 'failed', reason, [response.error.code]);
|
|
60
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, contextOmissions: context.omitted });
|
|
61
|
-
return result(reason === 'glm_request_timeout' ? 'timeout' : 'failed', controller.state().run_id, input.task, termination.reason, artifactDir, [], [response.error.code], []);
|
|
62
|
-
}
|
|
63
|
-
controller.transition('model_guard');
|
|
64
|
-
const modelGuard = assertGlm52ActualModel(response.value.model);
|
|
65
|
-
if (!modelGuard.ok) {
|
|
66
|
-
const termination = controller.terminate('blocked', 'glm_model_mismatch', [modelGuard.code]);
|
|
67
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, contextOmissions: context.omitted });
|
|
68
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], [modelGuard.code], []);
|
|
69
|
-
}
|
|
70
|
-
controller.transition('parse_output');
|
|
71
|
-
const parsed = parseGlmSpeedOutput(response.value.content);
|
|
72
|
-
const guard = recordGlmLoopIteration({
|
|
73
|
-
state: controller.state(),
|
|
74
|
-
limits: GLM_SPEED_LIMITS,
|
|
75
|
-
output: response.value.content,
|
|
76
|
-
madeProgress: parsed.kind === 'patch',
|
|
77
|
-
nowIso: nowIso()
|
|
78
|
-
});
|
|
79
|
-
if (!guard.ok) {
|
|
80
|
-
const termination = controller.terminate('blocked', guard.reason === 'glm_loop_repeated_output' ? 'glm_loop_repeated_output' : 'glm_loop_no_progress', [guard.reason || 'glm_loop_blocked']);
|
|
81
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, loopGuard: guard, contextOmissions: context.omitted });
|
|
82
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], termination.blockers, []);
|
|
83
|
-
}
|
|
84
|
-
if (parsed.kind === 'blocked' || parsed.kind === 'need_context' || parsed.kind === 'malformed') {
|
|
85
|
-
const termination = controller.terminate('blocked', parsed.kind === 'malformed' ? 'glm_loop_no_progress' : 'completed_noop', [parsed.reason || parsed.kind]);
|
|
86
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, loopGuard: guard, contextOmissions: context.omitted });
|
|
87
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], termination.blockers, []);
|
|
88
|
-
}
|
|
89
|
-
controller.transition('patch_gate');
|
|
90
|
-
const gate = evaluateGlmSpeedGate(response.value.content);
|
|
91
|
-
if (!gate.ok) {
|
|
92
|
-
const termination = controller.terminate('blocked', 'glm_patch_gate_failed', gate.checks.filter((row) => !row.ok).map((row) => row.reason || row.id));
|
|
93
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, loopGuard: guard, contextOmissions: context.omitted });
|
|
94
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], termination.blockers, []);
|
|
95
|
-
}
|
|
96
|
-
controller.transition('apply_patch');
|
|
97
|
-
const applied = await checkAndApplyGlmPatch({ cwd: input.cwd, patch: parsed.content, apply: !input.dryRun });
|
|
98
|
-
if (!applied.ok) {
|
|
99
|
-
const termination = controller.terminate('blocked', 'glm_patch_gate_failed', [applied.error.code]);
|
|
100
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, loopGuard: guard, contextOmissions: context.omitted });
|
|
101
|
-
return result('blocked', controller.state().run_id, input.task, termination.reason, artifactDir, [], termination.blockers, []);
|
|
102
|
-
}
|
|
103
|
-
controller.transition('verify');
|
|
104
|
-
const termination = controller.terminate('completed', input.dryRun ? 'completed_noop' : 'completed_patch_applied');
|
|
105
|
-
const artifactDir = await writeGlmRunArtifacts({ cwd: input.cwd, state: controller.state(), termination, loopGuard: guard, contextOmissions: context.omitted });
|
|
106
|
-
await writeJsonAtomic(path.join(artifactDir, 'direct-run.json'), { request_model: request.model, stream: true, gate, applied: applied.value });
|
|
107
|
-
return result('completed', controller.state().run_id, input.task, termination.reason, artifactDir, applied.value.touchedPaths, [], []);
|
|
108
|
-
}
|
|
109
|
-
function result(status, runId, task, terminationReason, artifactDir, touchedPaths, blockers, warnings) {
|
|
110
|
-
return {
|
|
111
|
-
schema: 'sks.glm-direct-run-result.v1',
|
|
112
|
-
ok: status === 'completed',
|
|
113
|
-
status,
|
|
114
|
-
run_id: runId,
|
|
115
|
-
task,
|
|
116
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
117
|
-
gpt_fallback_allowed: false,
|
|
118
|
-
termination_reason: terminationReason,
|
|
119
|
-
...(artifactDir ? { artifact_dir: artifactDir } : {}),
|
|
120
|
-
touched_paths: touchedPaths,
|
|
121
|
-
blockers,
|
|
122
|
-
warnings
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
function blocked(runId, task, reason, blockers) {
|
|
126
|
-
return result('blocked', runId, task, reason, undefined, [], blockers, []);
|
|
127
|
-
}
|
|
128
|
-
async function readGitStatus(cwd) {
|
|
129
|
-
const { spawn } = await import('node:child_process');
|
|
130
|
-
return new Promise((resolve) => {
|
|
131
|
-
const child = spawn('git', ['status', '--short'], { cwd, stdio: ['ignore', 'pipe', 'ignore'] });
|
|
132
|
-
let stdout = '';
|
|
133
|
-
child.stdout.on('data', (chunk) => { stdout += String(chunk); });
|
|
134
|
-
child.on('close', () => resolve(stdout.trim() || undefined));
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
function extractMentionedPaths(task) {
|
|
138
|
-
const matches = task.match(/(?:^|\s|[`"'])([A-Za-z0-9_.-]+\/[A-Za-z0-9_./-]+\.[A-Za-z0-9]+)(?:\s|[`"']|$)/g) || [];
|
|
139
|
-
return [...new Set(matches.map((value) => value.trim().replace(/^[`"']|[`"']$/g, '')))];
|
|
140
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { nowIso, writeJsonAtomic } from '../../fsx.js';
|
|
3
|
-
export function createEmptyGlmLatencyTrace(mode) {
|
|
4
|
-
return {
|
|
5
|
-
schema: 'sks.glm-latency-trace.v1',
|
|
6
|
-
version: '4.0.9',
|
|
7
|
-
mode,
|
|
8
|
-
total_ms: 0,
|
|
9
|
-
preflight_ms: 0,
|
|
10
|
-
key_resolve_ms: 0,
|
|
11
|
-
model_meta_ms: 0,
|
|
12
|
-
task_classify_ms: 0,
|
|
13
|
-
context_build_ms: 0,
|
|
14
|
-
context_estimated_tokens: 0,
|
|
15
|
-
context_cache_hit: false,
|
|
16
|
-
tool_schema_build_ms: 0,
|
|
17
|
-
tool_schema_cache_hit: false,
|
|
18
|
-
request_build_ms: 0,
|
|
19
|
-
request_encode_ms: 0,
|
|
20
|
-
encoded_request_cache_hit: false,
|
|
21
|
-
openrouter_ttft_ms: null,
|
|
22
|
-
openrouter_total_ms: null,
|
|
23
|
-
output_parse_ms: 0,
|
|
24
|
-
model_guard_ms: 0,
|
|
25
|
-
patch_apply_ms: 0,
|
|
26
|
-
deterministic_gate_ms: 0,
|
|
27
|
-
proof_write_ms: 0
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export async function writeGlmLatencyTrace(root, trace) {
|
|
31
|
-
const safeTrace = redactTrace(trace);
|
|
32
|
-
const filename = `${nowIso().replace(/[:.]/g, '-')}-glm-${trace.mode}-trace.json`;
|
|
33
|
-
const out = path.join(root, '.sneakoscope', 'glm', 'traces', filename);
|
|
34
|
-
await writeJsonAtomic(out, safeTrace);
|
|
35
|
-
return out;
|
|
36
|
-
}
|
|
37
|
-
function redactTrace(trace) {
|
|
38
|
-
return JSON.parse(JSON.stringify(trace).replace(/sk-or-[A-Za-z0-9_-]+/g, 'sk-or-...redacted...'));
|
|
39
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import crypto from 'node:crypto';
|
|
2
|
-
import { isGlmTerminalPhase } from './glm-run-state.js';
|
|
3
|
-
export function recordGlmLoopIteration(input) {
|
|
4
|
-
if (isGlmTerminalPhase(input.state.phase) || input.state.terminal) {
|
|
5
|
-
return { ok: false, reason: 'terminal_state', state: input.state };
|
|
6
|
-
}
|
|
7
|
-
const outputDigest = input.output ? digestNormalizedOutput(input.output) : input.state.last_output_digest;
|
|
8
|
-
const repeated = Boolean(outputDigest && outputDigest === input.state.last_output_digest);
|
|
9
|
-
const nextState = {
|
|
10
|
-
...input.state,
|
|
11
|
-
updated_at: input.nowIso,
|
|
12
|
-
turn_count: input.state.turn_count + 1,
|
|
13
|
-
no_progress_count: input.madeProgress ? 0 : input.state.no_progress_count + 1,
|
|
14
|
-
repeated_output_count: repeated ? input.state.repeated_output_count + 1 : 0,
|
|
15
|
-
...(outputDigest ? { last_output_digest: outputDigest } : {})
|
|
16
|
-
};
|
|
17
|
-
if (nextState.turn_count > input.limits.max_turns) {
|
|
18
|
-
return { ok: false, reason: 'glm_loop_max_turns', state: nextState };
|
|
19
|
-
}
|
|
20
|
-
if (nextState.repeated_output_count >= input.limits.max_repeated_output) {
|
|
21
|
-
return { ok: false, reason: 'glm_loop_repeated_output', state: nextState };
|
|
22
|
-
}
|
|
23
|
-
if (nextState.no_progress_count > input.limits.max_no_progress_iterations) {
|
|
24
|
-
return { ok: false, reason: 'glm_loop_no_progress', state: nextState };
|
|
25
|
-
}
|
|
26
|
-
return { ok: true, state: nextState };
|
|
27
|
-
}
|
|
28
|
-
export function digestNormalizedOutput(output) {
|
|
29
|
-
return crypto.createHash('sha256').update(output.replace(/\s+/g, ' ').trim()).digest('hex');
|
|
30
|
-
}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { nowIso, writeTextAtomic } from '../../fsx.js';
|
|
4
|
-
import { resolveOpenRouterApiKey, openRouterSecretPaths } from '../openrouter/openrouter-secret-store.js';
|
|
5
|
-
import { GLM_52_OPENROUTER_MODEL } from './glm-52-settings.js';
|
|
6
|
-
import { resolveGlmProfileFromArgs } from './glm-profile-resolver.js';
|
|
7
|
-
export const GLM_MAD_PROFILE_ID = 'sks/glm-5.2-mad';
|
|
8
|
-
export const OPENROUTER_CODEX_PROVIDER = 'openrouter';
|
|
9
|
-
export function buildMadGlmLaunchProfileNoWrite(args = []) {
|
|
10
|
-
const profile = resolveGlmProfileFromArgs(args);
|
|
11
|
-
const effort = codexReasoningEffortForProfile(profile);
|
|
12
|
-
return {
|
|
13
|
-
schema: 'sks.glm-mad-launch-profile.v1',
|
|
14
|
-
profile_name: GLM_MAD_PROFILE_ID,
|
|
15
|
-
provider: OPENROUTER_CODEX_PROVIDER,
|
|
16
|
-
model: GLM_52_OPENROUTER_MODEL,
|
|
17
|
-
glm_profile: profile.name,
|
|
18
|
-
glm_mode: profile.mode,
|
|
19
|
-
launch_args: [
|
|
20
|
-
'--sandbox',
|
|
21
|
-
'danger-full-access',
|
|
22
|
-
'--ask-for-approval',
|
|
23
|
-
'never',
|
|
24
|
-
'-c',
|
|
25
|
-
'service_tier=fast',
|
|
26
|
-
'-c',
|
|
27
|
-
`model_reasoning_effort=${effort}`,
|
|
28
|
-
'-c',
|
|
29
|
-
'model_provider="openrouter"',
|
|
30
|
-
'-c',
|
|
31
|
-
`model="${GLM_52_OPENROUTER_MODEL}"`,
|
|
32
|
-
'-c',
|
|
33
|
-
'model_providers.openrouter.name="OpenRouter"',
|
|
34
|
-
'-c',
|
|
35
|
-
'model_providers.openrouter.base_url="https://openrouter.ai/api/v1"',
|
|
36
|
-
'-c',
|
|
37
|
-
'model_providers.openrouter.env_key="OPENROUTER_API_KEY"',
|
|
38
|
-
'-c',
|
|
39
|
-
'model_providers.openrouter.wire_api="responses"',
|
|
40
|
-
'-c',
|
|
41
|
-
'model_providers.openrouter.requires_openai_auth=false'
|
|
42
|
-
],
|
|
43
|
-
sandbox_mode: 'danger-full-access',
|
|
44
|
-
approval_policy: 'never',
|
|
45
|
-
model_reasoning_effort: effort,
|
|
46
|
-
service_tier: 'fast',
|
|
47
|
-
gpt_fallback_allowed: false,
|
|
48
|
-
writes_user_codex_config: false,
|
|
49
|
-
blockers: profile.blockers
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
export async function resolveMadGlmLaunchKey(env = process.env) {
|
|
53
|
-
return resolveOpenRouterApiKey({ env });
|
|
54
|
-
}
|
|
55
|
-
export async function writeMadGlmCodexWrapper(input) {
|
|
56
|
-
const env = input.env || process.env;
|
|
57
|
-
const paths = openRouterSecretPaths(env);
|
|
58
|
-
const realCodexBin = String(input.realCodexBin || env.SKS_CODEX_BIN || 'codex');
|
|
59
|
-
const wrapperPath = path.join(input.missionDir, 'sks-glm-codex-wrapper.sh');
|
|
60
|
-
await writeTextAtomic(wrapperPath, buildMadGlmCodexWrapperScript({
|
|
61
|
-
realCodexBin,
|
|
62
|
-
secretKeyPath: paths.keyPath
|
|
63
|
-
}));
|
|
64
|
-
await fs.chmod(wrapperPath, 0o700).catch(() => undefined);
|
|
65
|
-
return {
|
|
66
|
-
wrapper_path: wrapperPath,
|
|
67
|
-
real_codex_bin: realCodexBin,
|
|
68
|
-
secret_key_path: paths.keyPath,
|
|
69
|
-
raw_key_written_to_wrapper: false
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export function buildMadGlmCodexWrapperScript(input) {
|
|
73
|
-
return [
|
|
74
|
-
'#!/bin/sh',
|
|
75
|
-
'set -eu',
|
|
76
|
-
'# Generated by SKS GLM MAD launch. This wrapper reads the key at runtime',
|
|
77
|
-
'# so Zellij layout artifacts never contain the raw OpenRouter secret.',
|
|
78
|
-
'if [ -z "${OPENROUTER_API_KEY:-}" ] && [ -n "${SKS_OPENROUTER_API_KEY:-}" ]; then',
|
|
79
|
-
' OPENROUTER_API_KEY="$SKS_OPENROUTER_API_KEY"',
|
|
80
|
-
' export OPENROUTER_API_KEY',
|
|
81
|
-
'fi',
|
|
82
|
-
`if [ -z "\${OPENROUTER_API_KEY:-}" ] && [ -r ${shellQuote(input.secretKeyPath)} ]; then`,
|
|
83
|
-
` OPENROUTER_API_KEY="$(cat ${shellQuote(input.secretKeyPath)})"`,
|
|
84
|
-
' export OPENROUTER_API_KEY',
|
|
85
|
-
'fi',
|
|
86
|
-
'if [ -z "${OPENROUTER_API_KEY:-}" ]; then',
|
|
87
|
-
' echo "SKS GLM MAD blocked: OPENROUTER_API_KEY is missing. Run sks --mad --glm --repair or export OPENROUTER_API_KEY." >&2',
|
|
88
|
-
' exit 66',
|
|
89
|
-
'fi',
|
|
90
|
-
`exec ${shellQuote(input.realCodexBin)} "$@"`,
|
|
91
|
-
''
|
|
92
|
-
].join('\n');
|
|
93
|
-
}
|
|
94
|
-
export function buildMadGlmLaunchArtifact(input) {
|
|
95
|
-
const profile = input.profile || buildMadGlmLaunchProfileNoWrite();
|
|
96
|
-
return {
|
|
97
|
-
schema: 'sks.glm-mad-launch.v1',
|
|
98
|
-
generated_at: nowIso(),
|
|
99
|
-
ok: Boolean(input.keyResolution.key),
|
|
100
|
-
mission_id: input.missionId,
|
|
101
|
-
provider: profile.provider,
|
|
102
|
-
model: profile.model,
|
|
103
|
-
glm_profile: profile.glm_profile,
|
|
104
|
-
glm_mode: profile.glm_mode,
|
|
105
|
-
model_reasoning_effort: profile.model_reasoning_effort,
|
|
106
|
-
profile_name: profile.profile_name,
|
|
107
|
-
strict_model_lock: true,
|
|
108
|
-
gpt_fallback_allowed: false,
|
|
109
|
-
openrouter_key_source: input.keyResolution.source || null,
|
|
110
|
-
key_preview: input.keyResolution.key_preview || null,
|
|
111
|
-
wrapper_path: input.wrapper.wrapper_path,
|
|
112
|
-
real_codex_bin: input.wrapper.real_codex_bin,
|
|
113
|
-
raw_key_written_to_wrapper: false,
|
|
114
|
-
codex_args: profile.launch_args,
|
|
115
|
-
blockers: [...profile.blockers, ...(input.keyResolution.key ? [] : input.keyResolution.blockers)],
|
|
116
|
-
warnings: input.keyResolution.warnings || []
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
function shellQuote(value) {
|
|
120
|
-
return `'${String(value).replace(/'/g, `'\\''`)}'`;
|
|
121
|
-
}
|
|
122
|
-
function codexReasoningEffortForProfile(profile) {
|
|
123
|
-
if (profile.name === 'xhigh')
|
|
124
|
-
return 'xhigh';
|
|
125
|
-
if (profile.name === 'deep' || profile.name === 'strict')
|
|
126
|
-
return 'high';
|
|
127
|
-
return 'low';
|
|
128
|
-
}
|