sneakoscope 7.1.0 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/config/architecture-budgets.v1.json +1 -8
- package/crates/sks-core/Cargo.lock +225 -1
- package/crates/sks-core/Cargo.toml +8 -1
- package/crates/sks-core/src/main.rs +7 -1
- package/crates/sks-core/src/search/files.rs +114 -0
- package/crates/sks-core/src/search/mod.rs +274 -0
- package/crates/sks-core/src/search/text.rs +175 -0
- package/dist/bin/sks-dispatch.js +4 -3
- package/dist/cli/command-manifest-lite.js +177 -6
- package/dist/cli/command-registry.js +42 -8
- package/dist/cli/help.js +30 -0
- package/dist/cli/install-helpers-codex-lb-config.js +9 -6
- package/dist/cli/install-helpers-codex-lb-selftest-chain.js +1 -1
- package/dist/cli/install-helpers-install-support.js +1 -1
- package/dist/cli/install-helpers.js +19 -9
- package/dist/cli/router.js +16 -3
- package/dist/commands/codex-app.js +40 -5
- package/dist/commands/doctor-profile.js +78 -0
- package/dist/commands/doctor.js +29 -69
- package/dist/commands/search.js +4 -0
- package/dist/config/skills-manifest.json +53 -60
- package/dist/core/agent-bridge/agent-manifest.js +22 -26
- package/dist/core/agent-bridge/host-capability-policy.js +109 -8
- package/dist/core/agent-bridge/host-capability-runtime.js +178 -50
- package/dist/core/agent-guidance/directive-registry.js +123 -0
- package/dist/core/agents/agent-effort-policy.js +45 -6
- package/dist/core/agents/agent-worker-pipeline.js +1 -3
- package/dist/core/agents/native-worker-backend-router.js +43 -19
- package/dist/core/auto-review.js +1 -3
- package/dist/core/code-structure.js +282 -19
- package/dist/core/codex/codex-config-guard.js +14 -4
- package/dist/core/codex/codex-config-toml.js +1 -3
- package/dist/core/codex-app/codex-agent-role-sync.js +1 -3
- package/dist/core/codex-app/codex-app-fast-ui-repair.js +14 -1
- package/dist/core/codex-app/codex-app-types.js +2 -3
- package/dist/core/codex-app/codex-desktop-routing-ownership.js +91 -0
- package/dist/core/codex-app/codex-hook-approval-probe.js +1 -3
- package/dist/core/codex-app/codex-hook-lifecycle.js +1 -3
- package/dist/core/codex-app/codex-init-deep.js +22 -10
- package/dist/core/codex-app/codex-model-catalog.js +384 -0
- package/dist/core/codex-app/codex-models-cache.js +160 -0
- package/dist/core/codex-app/desktop-routing-snapshot.js +233 -0
- package/dist/core/codex-app/glm-profile-installer.js +1 -3
- package/dist/core/codex-app/mcp-manager.js +1 -3
- package/dist/core/codex-app/menubar/constants.js +3 -0
- package/dist/core/codex-app/menubar/installer.js +11 -1
- package/dist/core/codex-app/multi-provider-router-support.js +202 -0
- package/dist/core/codex-app/multi-provider-router.js +379 -0
- package/dist/core/codex-app/openrouter-activate.js +189 -26
- package/dist/core/codex-app/openrouter-base-instructions.js +1 -0
- package/dist/core/codex-app/openrouter-model-catalog.js +217 -0
- package/dist/core/codex-app/role-model-catalog-priority.js +61 -0
- package/dist/core/codex-app.js +30 -6
- package/dist/core/codex-compat/codex-hook-semantic-validator.js +1 -3
- package/dist/core/codex-control/codex-app-server-v2-client.js +39 -2
- package/dist/core/codex-lb/codex-lb-env.js +1 -3
- package/dist/core/codex-lb/codex-lb-tool-catalog.js +6 -1
- package/dist/core/codex-native/codex-native-feature-broker.js +2 -6
- package/dist/core/codex-native/codex-native-interop-policy.js +1 -3
- package/dist/core/codex-native/codex-native-reference-cache.js +1 -3
- package/dist/core/codex-native/codex-native-reference-source.js +1 -3
- package/dist/core/codex-native/codex-native-repair-transaction.js +1 -3
- package/dist/core/codex-native/core-skill-manifest.js +3 -2
- package/dist/core/codex-native/native-capability-repair-matrix.js +1 -3
- package/dist/core/codex-plugins/codex-plugin-repair.js +1 -3
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +4 -4
- package/dist/core/commands/agent-bridge-command.js +24 -3
- package/dist/core/commands/image-ux-review-command.js +5 -11
- package/dist/core/commands/menubar-command.js +1 -1
- package/dist/core/commands/naruto-command.js +40 -13
- package/dist/core/commands/pipeline-command.js +5 -2
- package/dist/core/commands/release-command.js +63 -1
- package/dist/core/commands/remote-command.js +18 -0
- package/dist/core/commands/search-command.js +151 -0
- package/dist/core/commands/telegram-command.js +251 -108
- package/dist/core/commands/uninstall-command.js +1 -1
- package/dist/core/config/secret-preservation.js +1 -3
- package/dist/core/context7-client.js +2 -1
- package/dist/core/db-review.js +704 -0
- package/dist/core/db-safety.js +17 -23
- package/dist/core/doctor/browser-use-repair.js +1 -3
- package/dist/core/doctor/codex-startup-config-repair.js +1 -3
- package/dist/core/doctor/computer-use-repair.js +1 -3
- package/dist/core/doctor/context7-mcp-repair.js +1 -3
- package/dist/core/doctor/current-project-guidance.js +1 -3
- package/dist/core/doctor/doctor-codex-startup-repair.js +1 -3
- package/dist/core/doctor/doctor-dirty-planner.js +2 -2
- package/dist/core/doctor/doctor-native-capability-repair.js +1 -3
- package/dist/core/doctor/doctor-transaction.js +1 -3
- package/dist/core/doctor/imagegen-repair.js +1 -3
- package/dist/core/doctor/legacy-global-hook-cleanup.js +1 -3
- package/dist/core/doctor/mcp-transport-collision-repair.js +1 -3
- package/dist/core/doctor/retired-managed-residue-private.js +1 -3
- package/dist/core/doctor/supabase-mcp-repair.js +1 -3
- package/dist/core/engineering-sanity-review.js +186 -0
- package/dist/core/errors/message.js +3 -0
- package/dist/core/evidence/evidence-schema.js +1 -3
- package/dist/core/feature-fixtures.js +1 -0
- package/dist/core/feature-registry.js +1 -3
- package/dist/core/fsx.js +13 -0
- package/dist/core/git-hygiene/shared-memory-publish.js +1 -3
- package/dist/core/git-hygiene/validators.js +1 -3
- package/dist/core/harness-guard.js +21 -3
- package/dist/core/hooks-runtime/hook-context.js +2 -2
- package/dist/core/image-ux-review/imagegen-adapter.js +52 -56
- package/dist/core/image-ux-review/real-callout-extractor.js +6 -1
- package/dist/core/image-ux-review.js +3 -5
- package/dist/core/imagegen/codex-lb-imagegen-target.js +70 -0
- package/dist/core/imagegen/imagegen-capability.js +11 -11
- package/dist/core/imagegen/imagegen-evidence.js +32 -0
- package/dist/core/init/skills.js +9 -11
- package/dist/core/init.js +4 -6
- package/dist/core/json/records.js +9 -0
- package/dist/core/json-schema-validator.js +1 -3
- package/dist/core/lean-engineering-policy.js +54 -0
- package/dist/core/loops/loop-continuation-enforcer.js +1 -3
- package/dist/core/mad-sks/sql-plane/mcp-executor.js +2 -1
- package/dist/core/mad-sks/sql-plane/policy.js +2 -1
- package/dist/core/managed-assets/managed-assets-manifest.js +4 -3
- package/dist/core/mcp-config/codex-cli-adapter.js +1 -3
- package/dist/core/mcp-config/config-reader.js +2 -3
- package/dist/core/mcp-config/guarded-patch.js +1 -1
- package/dist/core/mcp-config/health-check.js +2 -1
- package/dist/core/mcp-config/mutation.js +1 -1
- package/dist/core/mcp-config/restore.js +1 -1
- package/dist/core/mcp-config/secret-policy.js +1 -3
- package/dist/core/migration/migration-transaction-journal.js +3 -3
- package/dist/core/naruto/naruto-concurrency-governor.js +2 -2
- package/dist/core/perf/import-graph-budget.js +91 -1
- package/dist/core/pipeline/pipeline-plan-writer.js +1 -1
- package/dist/core/pipeline-internals/runtime-core.js +121 -23
- package/dist/core/pipeline-internals/runtime-gates.js +193 -4
- package/dist/core/pipeline.js +1 -1
- package/dist/core/ppt-review/slide-imagegen-review.js +7 -7
- package/dist/core/ppt.js +3 -3
- package/dist/core/product-design-app-server.js +2 -1
- package/dist/core/proof/fake-real-proof-policy.js +1 -3
- package/dist/core/proof/root-cause-policy.js +1 -3
- package/dist/core/proof/validation.js +1 -3
- package/dist/core/provider/model-router.js +4 -0
- package/dist/core/provider/provider-context.js +1 -3
- package/dist/core/providers/openrouter/openrouter-account.js +1 -3
- package/dist/core/quality/helper-dedup.js +0 -0
- package/dist/core/recallpulse.js +1 -1
- package/dist/core/release/file-ownership.js +26 -17
- package/dist/core/release/macos-menubar-proof.js +59 -1
- package/dist/core/release/main-push-guard.js +288 -24
- package/dist/core/release/main-push-receipt.js +10 -45
- package/dist/core/release/package-size-budget.js +1 -1
- package/dist/core/release/release-gate-contract.js +2 -0
- package/dist/core/release/release-pack-receipt.js +1 -1
- package/dist/core/release/release-proof-io.js +33 -0
- package/dist/core/release/release-upgrade-baseline.js +9 -0
- package/dist/core/release/runtime-script-pack-closure.js +153 -4
- package/dist/core/release/stage-publish.js +194 -0
- package/dist/core/remote/index.js +2 -0
- package/dist/core/remote/local-worker-client.js +35 -0
- package/dist/core/remote/machine-registry.js +18 -13
- package/dist/core/remote/owner-proof.js +1 -3
- package/dist/core/remote/protocol.js +1 -3
- package/dist/core/remote/readiness.js +1 -3
- package/dist/core/remote/session-binding.js +153 -0
- package/dist/core/remote/session-index.js +1 -3
- package/dist/core/remote/types.js +1 -0
- package/dist/core/remote/worker.js +228 -14
- package/dist/core/responses-stream.js +151 -0
- package/dist/core/routes/dollar-manifest-lite.js +1 -1
- package/dist/core/routes.js +8 -8
- package/dist/core/rust-accelerator.js +12 -2
- package/dist/core/safety/ssot-guard.js +1 -3
- package/dist/core/search/benchmark.js +358 -0
- package/dist/core/search/cache.js +65 -0
- package/dist/core/search/context.js +144 -0
- package/dist/core/search/doctor.js +74 -0
- package/dist/core/search/files.js +192 -0
- package/dist/core/search/index.js +5 -0
- package/dist/core/search/ipc.js +64 -0
- package/dist/core/search/provider.js +142 -0
- package/dist/core/search/rust-bridge.js +24 -0
- package/dist/core/search/structure.js +230 -0
- package/dist/core/search/symbol.js +272 -0
- package/dist/core/search/text.js +146 -0
- package/dist/core/search/types.js +22 -0
- package/dist/core/search/typescript-ls.js +215 -0
- package/dist/core/search-visibility/discovery.js +1 -3
- package/dist/core/skill-forge.js +1 -1
- package/dist/core/stop-gate/gate-evaluator.js +3 -3
- package/dist/core/stop-gate/stop-gate-check.js +1 -3
- package/dist/core/structured-output-adapter.js +62 -2
- package/dist/core/subagents/agent-catalog.js +56 -43
- package/dist/core/subagents/model-policy.js +17 -7
- package/dist/core/subagents/naruto-proof-projection.js +2 -6
- package/dist/core/subagents/official-subagent-config.js +1 -3
- package/dist/core/subagents/official-subagent-preparation.js +73 -10
- package/dist/core/subagents/official-subagent-prompt.js +85 -18
- package/dist/core/subagents/official-subagent-runner.js +10 -5
- package/dist/core/subagents/role-model-preferences.js +202 -44
- package/dist/core/subagents/subagent-evidence.js +1 -3
- package/dist/core/subagents/thread-budget.js +1 -1
- package/dist/core/subagents/triwiki-attention.js +1 -5
- package/dist/core/telegram/config.js +29 -12
- package/dist/core/telegram/hub.js +8 -2
- package/dist/core/telegram/index.js +2 -0
- package/dist/core/telegram/messages.js +8 -2
- package/dist/core/telegram/runtime-projection.js +8 -5
- package/dist/core/telegram/runtime.js +19 -9
- package/dist/core/telegram/service.js +181 -0
- package/dist/core/telegram/setup.js +220 -0
- package/dist/core/text/regex.js +3 -0
- package/dist/core/text/strings.js +6 -0
- package/dist/core/triwiki-wrongness/image-wrongness.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-ledger.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-proof-linker.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-retrieval.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-schema.js +1 -3
- package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +1 -3
- package/dist/core/trust-kernel/completion-contract.js +1 -3
- package/dist/core/trust-kernel/route-contract.js +1 -3
- package/dist/core/update/update-migration-state.js +1 -3
- package/dist/core/update-check.js +20 -6
- package/dist/core/verification/diff-quality.js +3 -4
- package/dist/core/verification/impact-scan.js +36 -89
- package/dist/core/verification/mistake-rule-compiler.js +17 -4
- package/dist/core/version-manager.js +3 -20
- package/dist/core/version.js +1 -1
- package/dist/native/sks-menubar/Sources/ControlCenterWindowController.swift +23 -3
- package/dist/native/sks-menubar/Sources/ControlKit.swift +102 -0
- package/dist/native/sks-menubar/Sources/DiagnosticsViewController.swift +23 -11
- package/dist/native/sks-menubar/Sources/MCPServersViewController.swift +7 -3
- package/dist/native/sks-menubar/Sources/OperationCoordinator.swift +17 -1
- package/dist/native/sks-menubar/Sources/OverviewViewController.swift +22 -15
- package/dist/native/sks-menubar/Sources/ProcessClient.swift +15 -5
- package/dist/native/sks-menubar/Sources/ProvidersMultiProvider.swift +324 -0
- package/dist/native/sks-menubar/Sources/ProvidersOpenRouter.swift +154 -214
- package/dist/native/sks-menubar/Sources/ProvidersRoleModels.swift +252 -0
- package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +77 -71
- package/dist/native/sks-menubar/Sources/RemoteTelegramViewController.swift +167 -51
- package/dist/native/sks-menubar/Sources/SettingsViewController.swift +14 -5
- package/dist/native/sks-menubar/Sources/SidebarItem.swift +15 -1
- package/dist/native/sks-menubar/Sources/StatusItemController.swift +2 -2
- package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +16 -12
- package/dist/scripts/agent-guidance-dedup-check.js +23 -0
- package/dist/scripts/agent-message-bus-reader-check.js +1 -1
- package/dist/scripts/all-feature-deep-completion-check.js +1 -1
- package/dist/scripts/appshots-thread-attachment-discovery-check.js +1 -1
- package/dist/scripts/architecture-guard-check.js +1 -2
- package/dist/scripts/certificate-sla-check.js +1 -1
- package/dist/scripts/cli-output-consistency-check.js +1 -1
- package/dist/scripts/codex-0-134-runner-truth-check.js +1 -1
- package/dist/scripts/codex-0138-capability-artifact-check.js +1 -1
- package/dist/scripts/codex-0138-capability-check.js +1 -1
- package/dist/scripts/codex-0138-doctor-check.js +1 -1
- package/dist/scripts/codex-0138-feature-probes-check.js +1 -1
- package/dist/scripts/codex-0144-app-server-v2-check.js +1 -1
- package/dist/scripts/codex-0144-binary-identity-check.js +1 -1
- package/dist/scripts/codex-0144-capability-check.js +1 -1
- package/dist/scripts/codex-0144-core-real-probes-check.js +1 -1
- package/dist/scripts/codex-0144-manifest-check.js +1 -1
- package/dist/scripts/codex-0144-policy-check.js +1 -1
- package/dist/scripts/codex-0144-thread-store-check.js +1 -1
- package/dist/scripts/codex-agent-role-rich-content-check.js +2 -2
- package/dist/scripts/codex-agent-role-sync-check.js +2 -2
- package/dist/scripts/codex-agent-type-routing-check.js +2 -2
- package/dist/scripts/codex-app-execution-profile-check.js +2 -2
- package/dist/scripts/codex-app-handoff-check.js +1 -1
- package/dist/scripts/codex-app-handoff-launch-check.js +1 -1
- package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +1 -1
- package/dist/scripts/codex-lb-fast-ui-preservation-check.js +1 -3
- package/dist/scripts/codex-native-feature-broker-blackbox.js +2 -2
- package/dist/scripts/codex-native-feature-broker-check.js +2 -2
- package/dist/scripts/{sks-3-1-6-directive-check-lib.js → codex-native-gate-lib.js} +5 -5
- package/dist/scripts/codex-native-harness-compat-check.js +2 -2
- package/dist/scripts/codex-native-hook-lifecycle-proof-check.js +2 -2
- package/dist/scripts/codex-plugin-app-template-policy-check.js +1 -1
- package/dist/scripts/codex-sdk-backend-router-check.js +1 -1
- package/dist/scripts/codex-sdk-capability-check.js +1 -1
- package/dist/scripts/context7-evidence-dedupe-check.js +1 -1
- package/dist/scripts/core-skill-card-schema-check.js +1 -1
- package/dist/scripts/core-skill-deployment-snapshot-check.js +1 -1
- package/dist/scripts/core-skill-heldout-validation-check.js +1 -1
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +1 -1
- package/dist/scripts/core-skill-patch-check.js +1 -1
- package/dist/scripts/core-skill-route-runtime-integration-check.js +1 -1
- package/dist/scripts/current-command-surface-check.js +1 -1
- package/dist/scripts/current-surface-update-e2e-check.js +4 -1
- package/dist/scripts/current-upgrade-matrix-check.js +1 -1
- package/dist/scripts/dfix-fixture-check.js +1 -1
- package/dist/scripts/dfix-patch-handoff-check.js +1 -1
- package/dist/scripts/dfix-verification-check.js +1 -1
- package/dist/scripts/dfix-verification-recommendation-check.js +1 -1
- package/dist/scripts/docs-truthfulness-check.js +16 -3
- package/dist/scripts/doctor-codex-app-harness-check.js +2 -2
- package/dist/scripts/evidence-flagship-coverage-check.js +1 -1
- package/dist/scripts/{sks-1-18-gate-lib.js → gate-lib.js} +1 -1
- package/dist/scripts/gate-policy-audit-check.js +4 -1
- package/dist/scripts/git-worktree-checkpoint-check.js +1 -1
- package/dist/scripts/git-worktree-cross-rebase-check.js +1 -1
- package/dist/scripts/git-worktree-diff-envelope-check.js +1 -1
- package/dist/scripts/git-worktree-dirty-lock-check.js +1 -1
- package/dist/scripts/git-worktree-dirty-main-detection-check.js +1 -1
- package/dist/scripts/git-worktree-integration-primary-check.js +1 -1
- package/dist/scripts/git-worktree-manifest-append-check.js +1 -1
- package/dist/scripts/git-worktree-untracked-diff-check.js +1 -1
- package/dist/scripts/harness-benchmark-check.js +1 -1
- package/dist/scripts/helper-dedup-check.js +62 -0
- package/dist/scripts/hook-latency-budget-check.js +1 -1
- package/dist/scripts/image-artifact-path-contract-check.js +1 -1
- package/dist/scripts/imagegen-real-smoke-check.js +2 -5
- package/dist/scripts/installed-package-smoke-check.js +1 -1
- package/dist/scripts/legacy-gate-inventory-check.js +1 -1
- package/dist/scripts/legacy-gate-purge-check.js +1 -1
- package/dist/scripts/legacy-strong-inventory-check.js +1 -1
- package/dist/scripts/lib/codex-sdk-gate-lib.js +1 -1
- package/dist/scripts/mad-sks-launch-sql-plane-boundary-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-capability-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +1 -1
- package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +1 -1
- package/dist/scripts/managed-config-merge-check.js +1 -1
- package/dist/scripts/mcp-plugin-inventory-check.js +1 -1
- package/dist/scripts/model-call-concurrency-check.js +1 -1
- package/dist/scripts/mutation-callsite-coverage-check.js +1 -1
- package/dist/scripts/naruto-ssot-gate-aliases-check.js +1 -1
- package/dist/scripts/naruto-ssot-pipeline-default-check.js +1 -1
- package/dist/scripts/naruto-ssot-route-normalization-check.js +1 -1
- package/dist/scripts/naruto-ssot-routing-check.js +1 -1
- package/dist/scripts/naruto-worktree-coding-blackbox.js +1 -1
- package/dist/scripts/native-capability-repair-matrix-check.js +1 -1
- package/dist/scripts/native-image-generation-repair-check.js +1 -1
- package/dist/scripts/official-subagent-workflow-check.js +3 -3
- package/dist/scripts/package-published-contract-check.js +37 -4
- package/dist/scripts/packlist-performance-check.js +17 -1
- package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +1 -3
- package/dist/scripts/ppt-real-export-adapter-check.js +1 -1
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +1 -1
- package/dist/scripts/ppt-reexport-rereview-check.js +1 -1
- package/dist/scripts/prepublish-fast-check.js +1 -1
- package/dist/scripts/probe-memoization-check.js +2 -2
- package/dist/scripts/prompt-placeholder-guard-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-capability-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-cli-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-launch-check.js +1 -1
- package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +1 -1
- package/dist/scripts/qa-loop-budget-policy-check.js +1 -1
- package/dist/scripts/qa-loop-effort-escalation-check.js +1 -1
- package/dist/scripts/qa-loop-execution-profile-routing-check.js +2 -2
- package/dist/scripts/qa-loop-image-path-exposure-check.js +1 -1
- package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +1 -1
- package/dist/scripts/{sks-1-12-real-execution-check-lib.js → real-execution-check-lib.js} +1 -1
- package/dist/scripts/release-affected-selector-check.js +1 -1
- package/dist/scripts/release-aggressive-resource-governor-check.js +1 -1
- package/dist/scripts/release-cache-glob-hashing-check.js +1 -1
- package/dist/scripts/release-cache-input-classifier-check.js +1 -1
- package/dist/scripts/release-cache-neutralization-report-check.js +1 -1
- package/dist/scripts/release-cache-version-neutral-fixture-check.js +1 -1
- package/dist/scripts/release-dynamic-presets-check.js +2 -2
- package/dist/scripts/release-full-parallelism-blackbox.js +1 -1
- package/dist/scripts/release-gate-batch-runner-check.js +1 -1
- package/dist/scripts/release-gate-budget-check.js +1 -1
- package/dist/scripts/release-gate-dag-runner-check.js +1 -1
- package/dist/scripts/release-latency-slo-check.js +1 -1
- package/dist/scripts/release-metadata-check.js +256 -2
- package/dist/scripts/release-parallel-speed-budget-check.js +1 -1
- package/dist/scripts/release-proof-truth-check.js +1 -1
- package/dist/scripts/release-provenance-check.js +4 -2
- package/dist/scripts/release-runtime-truth-matrix-check.js +1 -1
- package/dist/scripts/research-blueprint-densifier-check.js +1 -1
- package/dist/scripts/research-claim-builder-check.js +1 -1
- package/dist/scripts/research-complete-package-fixture-check.js +1 -1
- package/dist/scripts/research-execution-profile-routing-check.js +2 -2
- package/dist/scripts/research-final-reviewer-blackbox.js +1 -1
- package/dist/scripts/{sks-3-1-4-directive-check-lib.js → runtime-domain-gate-lib.js} +2 -2
- package/dist/scripts/runtime-proof-summary-check.js +1 -1
- package/dist/scripts/runtime-script-pack-closure-check.js +7 -1
- package/dist/scripts/scheduler-batch-dispatch-check.js +1 -1
- package/dist/scripts/scheduler-parallel-proof-consistency-check.js +1 -1
- package/dist/scripts/scheduler-utilization-integral-check.js +1 -1
- package/dist/scripts/search-visibility-gate-lib.js +1 -1
- package/dist/scripts/secret-preservation-check.js +1 -1
- package/dist/scripts/seo-geo-geo-disambiguation-check.js +1 -1
- package/dist/scripts/seo-geo-skill-rich-content-check.js +1 -1
- package/dist/scripts/side-effect-runtime-report-check.js +1 -1
- package/dist/scripts/{sks-3-1-8-check-lib.js → skill-fixture-check-lib.js} +1 -1
- package/dist/scripts/skill-name-canonicalizer-check.js +1 -1
- package/dist/scripts/skills-manifest-continuity-check.js +1 -1
- package/dist/scripts/sks-uninstall-regression-check.js +1 -1
- package/dist/scripts/sksd-daemon-check.js +1 -1
- package/dist/scripts/super-search-provider-interface-check.js +1 -1
- package/dist/scripts/triwiki-cache-key-check.js +1 -1
- package/dist/scripts/triwiki-proof-bank-blackbox.js +2 -2
- package/dist/scripts/triwiki-proof-bank-check.js +1 -1
- package/dist/scripts/triwiki-proof-card-check.js +1 -1
- package/dist/scripts/type-surface-codex-app-check.js +2 -2
- package/dist/scripts/{sks-3-1-5-directive-check-lib.js → typed-routing-gate-lib.js} +2 -2
- package/dist/scripts/ultra-router-auto-router-check.js +1 -1
- package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +1 -1
- package/dist/scripts/ux-review-patch-diff-recheck-check.js +1 -1
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +9 -2
- package/package.json +5 -7
- package/release-gates.v2.json +66 -11
- package/runtime-required-scripts.json +138 -14
- package/config/bench-baseline.json +0 -7
- package/dist/core/codex-app/sks-menubar.js +0 -1
- package/dist/core/release/release-closure-contract.js +0 -30
- package/dist/core/release/release-closure-helpers.js +0 -293
- package/dist/core/release/release-closure-validation.js +0 -284
- package/dist/core/release/release-closure.js +0 -163
- package/dist/scripts/build-dist.js +0 -124
- package/dist/scripts/build-once-runner-check.js +0 -6
- package/dist/scripts/canonical-test-runner.js +0 -234
- package/dist/scripts/changelog-check.js +0 -45
- package/dist/scripts/check-architecture.js +0 -295
- package/dist/scripts/check-cli-entrypoint.js +0 -41
- package/dist/scripts/check-command-module-budget.js +0 -77
- package/dist/scripts/check-feature-quality.js +0 -51
- package/dist/scripts/check-legacy-free.js +0 -64
- package/dist/scripts/check-pipeline-budget.js +0 -49
- package/dist/scripts/check-pipeline-runtime.js +0 -16
- package/dist/scripts/check-publish-tag.js +0 -56
- package/dist/scripts/check-route-modularity.js +0 -72
- package/dist/scripts/codex-0140-capability-check.js +0 -14
- package/dist/scripts/codex-0140-feature-probes-check.js +0 -23
- package/dist/scripts/codex-permission-profiles-check.js +0 -34
- package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -49
- package/dist/scripts/competitor-scorecard-check.js +0 -24
- package/dist/scripts/core-skill-no-drift-check.js +0 -23
- package/dist/scripts/db-route-materialization-check.js +0 -32
- package/dist/scripts/doctor-context7-mcp-repair-blackbox.js +0 -15
- package/dist/scripts/doctor-fastpath-check.js +0 -25
- package/dist/scripts/doctor-fix-production-blackbox.js +0 -35
- package/dist/scripts/doctor-idempotence-check.js +0 -6
- package/dist/scripts/doctor-ops-semantics-check.js +0 -83
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +0 -18
- package/dist/scripts/doctor-supabase-mcp-repair-blackbox.js +0 -13
- package/dist/scripts/ensure-bin-executable.js +0 -16
- package/dist/scripts/fsx-hotpath-check.js +0 -9
- package/dist/scripts/high-risk-contracts-check.js +0 -183
- package/dist/scripts/hook-latency-quantum-check.js +0 -120
- package/dist/scripts/import-graph-budget-check.js +0 -9
- package/dist/scripts/mcp-tool-naming-parity-check.js +0 -14
- package/dist/scripts/naruto-codex-e2e-check.js +0 -105
- package/dist/scripts/naruto-write-e2e-check.js +0 -31
- package/dist/scripts/native-capability-postcheck-check.js +0 -16
- package/dist/scripts/ops-diagnostics-bundle-check.js +0 -11
- package/dist/scripts/parallel-production-smoke-check.js +0 -20
- package/dist/scripts/perf-budget-check.js +0 -12
- package/dist/scripts/project-skill-dedupe-blackbox.js +0 -62
- package/dist/scripts/release-dag-full-coverage-check.js +0 -98
- package/dist/scripts/release-dist-freshness-check.js +0 -6
- package/dist/scripts/release-file-ownership-check.js +0 -35
- package/dist/scripts/release-gate-script-parity-check.js +0 -148
- package/dist/scripts/release-macos-menubar-proof.js +0 -167
- package/dist/scripts/release-main-push-guard.js +0 -37
- package/dist/scripts/release-main-push-receipt.js +0 -43
- package/dist/scripts/release-metadata-1-19-check.js +0 -257
- package/dist/scripts/release-version-truth-check.js +0 -138
- package/dist/scripts/retention-apply-smoke-check.js +0 -19
- package/dist/scripts/retention-budget-check.js +0 -6
- package/dist/scripts/retention-dry-run-check.js +0 -8
- package/dist/scripts/rollback-recovery-smoke-check.js +0 -70
- package/dist/scripts/route-intent-regression-check.js +0 -42
- package/dist/scripts/runtime-current-terminal-check.js +0 -108
- package/dist/scripts/runtime-dist-parity-check.js +0 -76
- package/dist/scripts/runtime-no-src-mjs-check.js +0 -30
- package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -58
- package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -53
- package/dist/scripts/secret-preservation-guard-check.js +0 -36
- package/dist/scripts/seo-marketing-truthfulness-check.js +0 -98
- package/dist/scripts/seo-metadata-sync-check.js +0 -60
- package/dist/scripts/sizecheck.js +0 -148
- package/dist/scripts/sks-menubar-install-check.js +0 -333
- package/dist/scripts/supabase-secret-preservation-blackbox.js +0 -28
- package/dist/scripts/super-search-live-smoke-check.js +0 -115
- package/dist/scripts/super-search-local-http-smoke-check.js +0 -16
- package/dist/scripts/super-search-offline-contract-check.js +0 -43
- package/dist/scripts/update-fastpath-check.js +0 -28
- package/dist/scripts/update-preserves-supabase-keys-blackbox.js +0 -26
- package/dist/scripts/upgrade-migration-matrix-check.js +0 -351
- package/dist/scripts/write-build-manifest.js +0 -70
- package/dist/scripts/zellij-capability-check.js +0 -13
- package/dist/scripts/zellij-developer-controls-check.js +0 -16
- package/dist/scripts/zellij-doctor-readiness-check.js +0 -49
- package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -19
- package/dist/scripts/zellij-fake-adapter-check.js +0 -31
- package/dist/scripts/zellij-first-slot-down-stack-check.js +0 -20
- package/dist/scripts/zellij-first-slot-down-stack-real-check.js +0 -348
- package/dist/scripts/zellij-homebrew-policy-check.js +0 -3
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -21
- package/dist/scripts/zellij-lane-renderer-check.js +0 -78
- package/dist/scripts/zellij-launch-command-truth-check.js +0 -62
- package/dist/scripts/zellij-layout-valid-check.js +0 -120
- package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -10
- package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -78
- package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -12
- package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -134
- package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -7
- package/dist/scripts/zellij-right-column-geometry-proof.js +0 -158
- package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -20
- package/dist/scripts/zellij-right-column-manager-check.js +0 -24
- package/dist/scripts/zellij-self-heal-check.js +0 -3
- package/dist/scripts/zellij-self-heal-dry-run-check.js +0 -3
- package/dist/scripts/zellij-self-heal-status-contract-check.js +0 -3
- package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -3
- package/dist/scripts/zellij-slot-column-anchor-check.js +0 -65
- package/dist/scripts/zellij-slot-column-anchor-telemetry-check.js +0 -8
- package/dist/scripts/zellij-slot-only-ui-check.js +0 -29
- package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -149
- package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -65
- package/dist/scripts/zellij-slot-pane-telemetry-renderer-check.js +0 -11
- package/dist/scripts/zellij-slot-renderer-proof-semantics-check.js +0 -58
- package/dist/scripts/zellij-slot-telemetry-check.js +0 -38
- package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -46
- package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -55
- package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -32
- package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -19
- package/dist/scripts/zellij-slot-telemetry-renderer-check.js +0 -11
- package/dist/scripts/zellij-slot-telemetry-runtime-check.js +0 -23
- package/dist/scripts/zellij-spawn-on-demand-layout-check.js +0 -45
- package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -9
- package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -78
- package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -29
- package/dist/scripts/zellij-stacked-version-parser-check.js +0 -19
- package/dist/scripts/zellij-ui-design-check.js +0 -92
- package/dist/scripts/zellij-update-missing-self-heal-check.js +0 -3
- package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -16
- package/dist/scripts/zellij-update-prompt-mode-check.js +0 -18
- package/dist/scripts/zellij-update-prompt-safety-check.js +0 -8
- package/dist/scripts/zellij-worker-pane-manager-check.js +0 -108
- package/dist/scripts/zellij-worker-pane-manager-single-owner-check.js +0 -47
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -199
- /package/dist/scripts/{sks-1-11-gate-lib.js → sks-cli-gate-lib.js} +0 -0
|
@@ -13,11 +13,14 @@ import { createSubagentWaveLifecycle } from './wave-lifecycle.js';
|
|
|
13
13
|
import { decideOfficialSubagentModel } from '../agents/agent-effort-policy.js';
|
|
14
14
|
import { readBoundedTriwikiAttention } from './triwiki-attention.js';
|
|
15
15
|
import { readRoleModelPreferences } from './role-model-preferences.js';
|
|
16
|
+
import { inferProviderFromModel, readConfiguredCodexModelRoutingContext } from '../codex-app/codex-model-catalog.js';
|
|
17
|
+
import { childInheritsActiveMainModel } from '../provider/model-router.js';
|
|
16
18
|
import { SUBAGENT_EVIDENCE_FILENAME, SUBAGENT_EVENT_LOG_FILENAME, SUBAGENT_PARENT_SUMMARY_FILENAME, normalizeSubagentParentSummary, writeSubagentEvidence } from './subagent-evidence.js';
|
|
17
19
|
import { sksPrefixedDollarCommand, unprefixedSksSkillName } from '../routes/dollar-prefix.js';
|
|
18
20
|
import { withFileLock, tryWithFileLock } from '../locks/file-lock.js';
|
|
19
21
|
import { updateCurrentIfMissionAndRun } from '../mission.js';
|
|
20
22
|
import { HOST_CAPABILITY_HOOK_EVIDENCE_FILENAME, HOST_CAPABILITY_HOOK_OBSERVATIONS_FILENAME, HOST_CAPABILITY_HOOK_PENDING_RUNTIME_FILENAME, HOST_CAPABILITY_HOOK_RUNTIME_FILENAME } from '../agent-bridge/host-capability-runtime.js';
|
|
23
|
+
import { uniqueStrings } from '../text/strings.js';
|
|
21
24
|
export const NARUTO_RESULT_SCHEMA = 'sks.naruto-subagent-workflow.v1';
|
|
22
25
|
export const SUBAGENT_PLAN_FILENAME = 'subagent-plan.json';
|
|
23
26
|
export const NARUTO_SUMMARY_FILENAME = 'naruto-summary.json';
|
|
@@ -58,6 +61,33 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
58
61
|
const officialConfig = await readOfficialSubagentConfig(input.root);
|
|
59
62
|
const triwikiAttention = await readBoundedTriwikiAttention(input.root, triwikiAttentionLimit(taskProfile), goal);
|
|
60
63
|
const roleModelPreferences = await readRoleModelPreferences({ env: input.env || process.env });
|
|
64
|
+
const roleModelRouting = await readConfiguredCodexModelRoutingContext({ env: input.env || process.env });
|
|
65
|
+
const roleModelCatalog = roleModelRouting.catalog;
|
|
66
|
+
const activeMainModel = input.sessionScope && roleModelRouting.selected_provider && roleModelRouting.selected_model
|
|
67
|
+
? {
|
|
68
|
+
provider: roleModelRouting.selected_provider,
|
|
69
|
+
model: roleModelRouting.selected_model
|
|
70
|
+
}
|
|
71
|
+
: null;
|
|
72
|
+
const roleModelCatalogBlockers = Object.entries(roleModelPreferences.store.roles).flatMap(([name, preference]) => {
|
|
73
|
+
const routed = preference.provider !== 'openai' || preference.model.includes('/');
|
|
74
|
+
if (!routed)
|
|
75
|
+
return [];
|
|
76
|
+
if (roleModelRouting.selected_provider !== 'sks-router') {
|
|
77
|
+
return [`role_model_router_not_selected:${name}`];
|
|
78
|
+
}
|
|
79
|
+
const catalogEntry = roleModelCatalog.models.find((entry) => entry.model === preference.model);
|
|
80
|
+
if (!roleModelCatalog.ok || !catalogEntry) {
|
|
81
|
+
return [`role_model_preference_not_in_active_catalog:${name}:${preference.model}`];
|
|
82
|
+
}
|
|
83
|
+
if (!catalogEntry.reasoning_efforts.includes(preference.reasoning_effort)) {
|
|
84
|
+
return [`role_model_preference_reasoning_not_in_active_catalog:${name}:${preference.model}:${preference.reasoning_effort}`];
|
|
85
|
+
}
|
|
86
|
+
if (catalogEntry.multi_agent_version !== 'v2') {
|
|
87
|
+
return [`role_model_preference_multi_agent_v2_required:${name}:${preference.model}`];
|
|
88
|
+
}
|
|
89
|
+
return [];
|
|
90
|
+
});
|
|
61
91
|
const operatorRequested = input.requestedSubagentsExplicit ?? input.requestedSubagents !== undefined;
|
|
62
92
|
const routeContract = mode === 'generic' && !operatorRequested
|
|
63
93
|
? routeOwnedSubagentContract(input.route)
|
|
@@ -75,6 +105,7 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
75
105
|
taskProfile,
|
|
76
106
|
suggestedRoles: suggestedAgents,
|
|
77
107
|
goal,
|
|
108
|
+
maxThreads: input.maxThreads ?? officialConfig.maxThreads,
|
|
78
109
|
...(slices.length > 0 ? { independentSliceCount: slices.length } : {})
|
|
79
110
|
});
|
|
80
111
|
const budget = resolveSubagentThreadBudget({
|
|
@@ -119,7 +150,8 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
119
150
|
capacity: budget.capacity,
|
|
120
151
|
triwikiAttention,
|
|
121
152
|
recommendedAgents: suggestedAgents,
|
|
122
|
-
roleModelPreferences: roleModelPreferences.store.roles
|
|
153
|
+
roleModelPreferences: roleModelPreferences.store.roles,
|
|
154
|
+
activeMainModel
|
|
123
155
|
});
|
|
124
156
|
const selectedAgentPlan = officialSubagentOnDemandRolePlan(suggestedAgents);
|
|
125
157
|
const agentRouting = Object.fromEntries(Object.entries(selectedAgentPlan).map(([name, config]) => {
|
|
@@ -135,13 +167,33 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
135
167
|
readonly: config.sandbox_mode === 'read-only'
|
|
136
168
|
});
|
|
137
169
|
const preference = roleModelPreferences.store.roles[name];
|
|
170
|
+
const inheritActiveMain = childInheritsActiveMainModel(activeMainModel?.model);
|
|
171
|
+
const routedProvider = preference?.provider
|
|
172
|
+
|| (inheritActiveMain ? activeMainModel?.provider : null)
|
|
173
|
+
|| inferProviderFromModel(config.model || decision.model);
|
|
174
|
+
const routedModel = preference?.model
|
|
175
|
+
|| (inheritActiveMain ? activeMainModel?.model : null)
|
|
176
|
+
|| config.model
|
|
177
|
+
|| decision.model;
|
|
178
|
+
const routedReasoning = preference?.reasoning_effort
|
|
179
|
+
|| config.model_reasoning_effort
|
|
180
|
+
|| decision.model_reasoning_effort;
|
|
138
181
|
return [name, {
|
|
139
182
|
...config,
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
183
|
+
routed_provider: routedProvider,
|
|
184
|
+
routed_model: routedModel,
|
|
185
|
+
routed_model_reasoning_effort: routedReasoning,
|
|
186
|
+
routed_model_policy: preference
|
|
187
|
+
? 'user_role_model_preference'
|
|
188
|
+
: inheritActiveMain
|
|
189
|
+
? 'active_main_model'
|
|
190
|
+
: (config.model_policy || decision.model_selection_reason),
|
|
191
|
+
routing_dynamic: !preference && !inheritActiveMain,
|
|
192
|
+
role_model_preference_source: preference
|
|
193
|
+
? 'user-scoped-owner-only'
|
|
194
|
+
: inheritActiveMain
|
|
195
|
+
? 'active-main-model'
|
|
196
|
+
: 'managed-default'
|
|
145
197
|
}];
|
|
146
198
|
}));
|
|
147
199
|
const agentCatalog = onDemandAgentCatalogMetadata(selectedAgentPlan);
|
|
@@ -150,6 +202,7 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
150
202
|
const configBlockers = [
|
|
151
203
|
...officialConfig.blockers,
|
|
152
204
|
...roleModelPreferences.blockers,
|
|
205
|
+
...roleModelCatalogBlockers,
|
|
153
206
|
...ssotGuardValidation.issues.map((issue) => `ssot_guard:${issue}`),
|
|
154
207
|
...sliceSafety.blockers.map((blocker) => `subagent_slice:${blocker}`),
|
|
155
208
|
...(budget.capacity.exhausted ? ['subagent_capacity_exhausted'] : [])
|
|
@@ -201,7 +254,20 @@ async function prepareOfficialSubagentMissionLocked(input) {
|
|
|
201
254
|
schema: roleModelPreferences.store.schema,
|
|
202
255
|
path: roleModelPreferences.path,
|
|
203
256
|
overrides: roleModelPreferences.store.roles,
|
|
204
|
-
|
|
257
|
+
routing: {
|
|
258
|
+
selected_provider: roleModelRouting.selected_provider,
|
|
259
|
+
selected_model: roleModelRouting.selected_model,
|
|
260
|
+
active_main_model_inherited: childInheritsActiveMainModel(activeMainModel?.model),
|
|
261
|
+
runtime_verified: false
|
|
262
|
+
},
|
|
263
|
+
catalog: {
|
|
264
|
+
configured: roleModelCatalog.configured,
|
|
265
|
+
ok: roleModelCatalog.ok,
|
|
266
|
+
path: roleModelCatalog.path,
|
|
267
|
+
model_count: roleModelCatalog.model_count,
|
|
268
|
+
blockers: roleModelCatalog.blockers
|
|
269
|
+
},
|
|
270
|
+
blockers: [...roleModelPreferences.blockers, ...roleModelCatalogBlockers]
|
|
205
271
|
},
|
|
206
272
|
verification_budget: verification,
|
|
207
273
|
verification_checks: [],
|
|
@@ -974,6 +1040,3 @@ function isNarutoRecord(value) {
|
|
|
974
1040
|
function narutoErrorCode(error) {
|
|
975
1041
|
return error && typeof error === 'object' && 'code' in error ? String(error.code) : '';
|
|
976
1042
|
}
|
|
977
|
-
function uniqueStrings(values) {
|
|
978
|
-
return [...new Set(values.map((value) => String(value || '').trim()).filter(Boolean))];
|
|
979
|
-
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HARD_NARUTO_MAX_THREADS } from './thread-budget.js';
|
|
2
2
|
import { coreEngineeringDirectiveReferenceText } from '../lean-engineering-policy.js';
|
|
3
3
|
import { MAX_AUTOMATIC_REVIEWER_COUNT, MAX_AUTOMATIC_SUBAGENT_COUNT, MAX_CRITICAL_AUTOMATIC_REVIEWER_COUNT, officialSubagentOnDemandRoleCatalog, officialSubagentRoleCatalog, selectOfficialSubagentRole } from './agent-catalog.js';
|
|
4
|
+
import { childInheritsActiveMainModel } from '../provider/model-router.js';
|
|
4
5
|
export function buildOfficialSubagentPrompt(input) {
|
|
5
6
|
const maxThreads = clampThreads(input.maxThreads);
|
|
6
7
|
const requestedSubagents = normalizeRequestedSubagents(input.requestedSubagents, input.slices.length);
|
|
@@ -41,18 +42,37 @@ export function buildOfficialSubagentPrompt(input) {
|
|
|
41
42
|
...resolvedSlices.map((row) => row.agentName),
|
|
42
43
|
...(input.recommendedAgents || [])
|
|
43
44
|
]);
|
|
45
|
+
const activeMainModel = normalizedActiveMainModel(input.activeMainModel);
|
|
46
|
+
const inheritActiveMainOntoChildren = childInheritsActiveMainModel(activeMainModel?.model);
|
|
47
|
+
const spawnModelRouting = renderSpawnModelRouting(activeMainModel);
|
|
44
48
|
const rows = resolvedSlices.map(({ slice, agentName }, index) => {
|
|
45
49
|
const mode = slice.readOnly ? 'read-only' : 'use the parent permission mode';
|
|
46
50
|
const paths = (slice.paths || []).map((entry) => String(entry).trim()).filter(Boolean);
|
|
47
51
|
const role = officialSubagentOnDemandRoleCatalog([agentName])[0];
|
|
48
52
|
const preference = input.roleModelPreferences?.[agentName];
|
|
53
|
+
const sealedReasoning = role?.model_reasoning_effort || 'medium';
|
|
54
|
+
const sealedModel = role?.model || null;
|
|
55
|
+
const effectiveModel = preference
|
|
56
|
+
? `${preference.provider}:${preference.model}/${preference.reasoning_effort} (user override)`
|
|
57
|
+
: inheritActiveMainOntoChildren && activeMainModel
|
|
58
|
+
? `${activeMainModel.provider}:${activeMainModel.model}/${sealedReasoning} (active main model)`
|
|
59
|
+
: sealedModel
|
|
60
|
+
? `${inferDisplayProvider(sealedModel)}:${sealedModel}/${sealedReasoning} (sealed role policy)`
|
|
61
|
+
: 'managed default/dynamic routing';
|
|
62
|
+
const spawnContract = preference
|
|
63
|
+
? `pass the exact catalog slug model=${JSON.stringify(preference.model)} and reasoning_effort=${JSON.stringify(preference.reasoning_effort)} when spawning this role; logical provider=${JSON.stringify(preference.provider)} is encoded by the active router/catalog and is not a spawn_agent argument`
|
|
64
|
+
: inheritActiveMainOntoChildren && activeMainModel
|
|
65
|
+
? `pass the exact active main model=${JSON.stringify(activeMainModel.model)} and reasoning_effort=${JSON.stringify(sealedReasoning)} when spawning this role; the current app session already owns provider=${JSON.stringify(activeMainModel.provider)}`
|
|
66
|
+
: sealedModel
|
|
67
|
+
? `pass model=${JSON.stringify(sealedModel)} and reasoning_effort=${JSON.stringify(sealedReasoning)} from the sealed role policy; do not replace Luna/Terra/Sol High/Sol Max with the parent active main model`
|
|
68
|
+
: 'omit model/reasoning overrides and preserve the installed custom-agent default';
|
|
49
69
|
return [
|
|
50
70
|
`${index + 1}. [${slice.id}] use custom agent \`${agentName}\``,
|
|
51
71
|
` title: ${slice.title}`,
|
|
52
72
|
` task: ${slice.description}`,
|
|
53
73
|
` model policy: ${role ? `${role.model_policy} (${role.model}/${role.model_reasoning_effort})` : 'resolve from installed custom agent'}`,
|
|
54
|
-
` effective model preference: ${
|
|
55
|
-
` spawn contract: ${
|
|
74
|
+
` effective model preference: ${effectiveModel}`,
|
|
75
|
+
` spawn contract: ${spawnContract}`,
|
|
56
76
|
' context contract: pass fork_turns="none" and carry this complete bounded slice contract in message because agent_type is selected',
|
|
57
77
|
` mode: ${mode}`,
|
|
58
78
|
` paths: ${paths.join(', ') || 'assigned by parent'}`
|
|
@@ -64,33 +84,34 @@ Use a Codex subagent workflow for the independent slices below.
|
|
|
64
84
|
${coreEngineeringDirectiveReferenceText()}
|
|
65
85
|
|
|
66
86
|
Parent agent:
|
|
67
|
-
- model policy: gpt-5.6-sol with max reasoning
|
|
87
|
+
- model policy: ${activeMainModel ? `keep the current app-selected main model ${activeMainModel.provider}:${activeMainModel.model}` : 'gpt-5.6-sol with max reasoning'}
|
|
68
88
|
- owns decomposition, integration, and final answer
|
|
69
89
|
- do not do duplicate work already delegated
|
|
70
90
|
|
|
71
91
|
Host capability policy:
|
|
72
|
-
-
|
|
73
|
-
- SQL-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- document delivery: editable source -> render -> artifact receipt
|
|
78
|
-
- when a requested host capability is missing or unhealthy, return blocked proof; do not fabricate a fallback or success evidence
|
|
79
|
-
- Slack delivery belongs to the ACAS runtime and is never a model tool
|
|
92
|
+
- confirm requested tools in the project MCP inventory; if unavailable or unhealthy, return blocked proof and never fabricate a fallback
|
|
93
|
+
- DB: schema first. SQL-only may stop there; retrieval defaults to one bounded query and allows at most four total for separate aggregation or verification. Every query needs a prior schema receipt for the same datasource and matching snapshot
|
|
94
|
+
- spreadsheet: prefer the smallest create/edit mutation; allow at most three updates, inspect after create and every update, and require the final mutation artifact receipt
|
|
95
|
+
- document: write_file/edit_file then html_to_pdf|html_to_screenshot(source_path=...); never raw html
|
|
96
|
+
- Slack delivery is ACAS-runtime-only, never a model tool
|
|
80
97
|
|
|
81
98
|
Subagent rules:
|
|
82
99
|
- use only Codex official subagent threads; do not launch shell workers, a custom scheduler, a worker pool, or model fanout
|
|
83
100
|
- select the narrowest matching project custom agent by its description; the custom agent name is the spawn type
|
|
84
101
|
- custom \`agent_type\` selection and spawn-time \`model\`/\`reasoning_effort\` overrides must use \`fork_turns="none"\` or a positive bounded turn count, with the complete bounded slice contract in \`message\`
|
|
102
|
+
- \`spawn_agent\` has no per-child provider argument; cross-provider preferences must use exact model slugs advertised by the active Codex backend/catalog (for example a single multi-provider router exposing \`provider/model\`)
|
|
85
103
|
- never combine \`fork_turns="all"\` or the omitted/default full-history mode with \`agent_type\`, \`model\`, or \`reasoning_effort\`; Codex rejects that start before SubagentStart
|
|
86
104
|
- a full-history fork is allowed only when \`agent_type\`, \`model\`, and \`reasoning_effort\` are all omitted
|
|
87
|
-
|
|
105
|
+
${spawnModelRouting}
|
|
106
|
+
- use \`worker\` with gpt-5.6-luna and max reasoning for tiny short-context mechanical work such as simple search, typing, rename, copy, label, or one-line edits with no exploration or judgment
|
|
88
107
|
- use gpt-5.6-sol with high reasoning for ordinary UI, logic, backend, and native implementation
|
|
89
108
|
- use gpt-5.6-sol with max reasoning only for focused unresolved, high-risk, final-review, architecture, security, database, research, release, or other explicit judgment slices
|
|
90
|
-
- use gpt-5.6-terra with medium reasoning for read-heavy documentation/exploration, long-context analysis, and direct Computer Use, Browser/Chrome, or image-generation execution
|
|
91
|
-
- explicit task class and phase win over incidental keywords: Terra gathers/explores, Sol High implements, and Sol Max performs the focused judgment pass
|
|
92
|
-
- never assign Luna to long-context, exploration, review, debugging, planning, or tool-heavy work
|
|
93
|
-
-
|
|
109
|
+
- use gpt-5.6-terra with medium reasoning for read-heavy documentation/exploration, long-context analysis, large or repository-wide search, and direct Computer Use, Browser/Chrome, or image-generation execution
|
|
110
|
+
- explicit task class and phase win over incidental keywords: Terra gathers/explores/searches broadly, Luna handles tiny mechanical edits, Sol High implements, and Sol Max performs the focused judgment pass
|
|
111
|
+
- never assign Luna to long-context, broad exploration, review, debugging, planning, or tool-heavy work
|
|
112
|
+
- never collapse every child onto the parent Sol model when a sealed Luna or Terra role matches the slice
|
|
113
|
+
- automatic fan-out starts at four for bounded non-trivial work, six for explicit parallel work, and eight for large-scale work; it may expand only up to ${MAX_AUTOMATIC_SUBAGENT_COUNT} when independent useful slices and healthy host capacity remain positive
|
|
114
|
+
- prefer the largest useful first wave the host can sustain; shrink only under live resource pressure or unsafe overlapping ownership
|
|
94
115
|
- automatic reviewer-only fan-out is capped at ${MAX_AUTOMATIC_REVIEWER_COUNT} for ordinary work and ${MAX_CRITICAL_AUTOMATIC_REVIEWER_COUNT} for critical multi-domain review
|
|
95
116
|
- requested subagents: ${requestedPolicy}
|
|
96
117
|
- max open agent threads: ${maxThreads} (hard cap, never a utilization target)
|
|
@@ -128,7 +149,7 @@ Central TriWiki context:
|
|
|
128
149
|
${triwiki}
|
|
129
150
|
|
|
130
151
|
Role model preference metadata:
|
|
131
|
-
${renderRoleModelPreferenceMetadata(input.roleModelPreferences)}
|
|
152
|
+
${renderRoleModelPreferenceMetadata(input.roleModelPreferences, activeMainModel)}
|
|
132
153
|
|
|
133
154
|
Project custom agent catalog:
|
|
134
155
|
${catalog}
|
|
@@ -181,15 +202,61 @@ Final parent output:
|
|
|
181
202
|
- keep completion summary and Honest Mode wording inside the JSON fields; do not add prose outside the object
|
|
182
203
|
`.trim();
|
|
183
204
|
}
|
|
184
|
-
function renderRoleModelPreferenceMetadata(preferences) {
|
|
205
|
+
function renderRoleModelPreferenceMetadata(preferences, activeMainModel) {
|
|
185
206
|
const rows = Object.entries(preferences || {}).map(([role, preference]) => ({
|
|
186
207
|
role,
|
|
208
|
+
provider: preference.provider,
|
|
187
209
|
model: preference.model,
|
|
188
210
|
reasoning_effort: preference.reasoning_effort,
|
|
189
211
|
source: 'user-scoped-owner-only'
|
|
190
212
|
}));
|
|
213
|
+
if (activeMainModel && childInheritsActiveMainModel(activeMainModel.model)) {
|
|
214
|
+
rows.push({
|
|
215
|
+
role: '*',
|
|
216
|
+
provider: activeMainModel.provider,
|
|
217
|
+
model: activeMainModel.model,
|
|
218
|
+
reasoning_effort: 'role-managed',
|
|
219
|
+
source: 'active-main-model-fallback'
|
|
220
|
+
});
|
|
221
|
+
}
|
|
191
222
|
return rows.length ? JSON.stringify(rows) : '[]';
|
|
192
223
|
}
|
|
224
|
+
function normalizedActiveMainModel(value) {
|
|
225
|
+
const provider = String(value?.provider || '').trim();
|
|
226
|
+
const model = String(value?.model || '').trim();
|
|
227
|
+
return provider && model ? { provider, model } : null;
|
|
228
|
+
}
|
|
229
|
+
function inferDisplayProvider(model) {
|
|
230
|
+
return model.includes('/') ? model.split('/', 1)[0] || 'openai' : 'openai';
|
|
231
|
+
}
|
|
232
|
+
function renderSpawnModelRouting(activeMainModel) {
|
|
233
|
+
const inheritActiveMain = childInheritsActiveMainModel(activeMainModel?.model);
|
|
234
|
+
const precedence = inheritActiveMain
|
|
235
|
+
? '- model routing precedence applies to every child, including slices created after parent decomposition: exact user role override -> active main model -> installed custom-agent default'
|
|
236
|
+
: '- model routing precedence applies to every child, including slices created after parent decomposition: exact user role override -> sealed role policy (Luna Max / Terra Medium / Sol High / Sol Max) -> installed custom-agent default';
|
|
237
|
+
const roleOverride = '- when Role model preference metadata lists the selected role with source "user-scoped-owner-only", pass that row\'s exact model and reasoning_effort to spawn_agent';
|
|
238
|
+
if (!activeMainModel) {
|
|
239
|
+
return [
|
|
240
|
+
precedence,
|
|
241
|
+
roleOverride,
|
|
242
|
+
'- when no user override exists, pass the sealed role model/effort from the selected custom agent; do not default every child to Sol'
|
|
243
|
+
].join('\n');
|
|
244
|
+
}
|
|
245
|
+
if (!inheritActiveMain) {
|
|
246
|
+
return [
|
|
247
|
+
precedence,
|
|
248
|
+
roleOverride,
|
|
249
|
+
`- parent keeps the app-selected main model ${activeMainModel.provider}:${activeMainModel.model}, but children must keep sealed Luna/Terra/Sol High/Sol Max role profiles`,
|
|
250
|
+
'- for every role without a user override, including slices created after parent decomposition, pass that role\'s sealed model and reasoning_effort; never replace Luna or Terra with the parent Sol model'
|
|
251
|
+
].join('\n');
|
|
252
|
+
}
|
|
253
|
+
return [
|
|
254
|
+
precedence,
|
|
255
|
+
roleOverride,
|
|
256
|
+
`- for every role without a user override, including slices created after parent decomposition, pass model=${JSON.stringify(activeMainModel.model)} and the selected custom role's installed reasoning effort; provider=${JSON.stringify(activeMainModel.provider)} remains owned by the current app session`,
|
|
257
|
+
`- do not substitute a managed GPT model for the active main model ${activeMainModel.provider}:${activeMainModel.model}`
|
|
258
|
+
].join('\n');
|
|
259
|
+
}
|
|
193
260
|
export function validateOfficialSubagentSlices(slices) {
|
|
194
261
|
const blockers = [];
|
|
195
262
|
const duplicateSliceIds = [];
|
|
@@ -2,14 +2,17 @@ import fsp from 'node:fs/promises';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { randomId, runProcess, writeJsonAtomic } from '../fsx.js';
|
|
5
|
-
import { missionDir } from '../mission.js';
|
|
6
5
|
import { DEFAULT_SUBAGENT_EFFORT, DEFAULT_SUBAGENT_MODEL, NARUTO_PARENT_EFFORT, NARUTO_PARENT_MODEL } from './model-policy.js';
|
|
7
6
|
import { inspectCodexLbCliLaunchRecovery } from '../codex-control/codex-lb-launch-recovery.js';
|
|
8
7
|
import { probeNarutoCodexCapability } from '../codex-compat/codex-capability-matrix.js';
|
|
9
8
|
import { resolveOfficialCodexPackageRuntime } from '../codex-runtime/resolve-codex-runtime.js';
|
|
10
9
|
import { withFileLock } from '../locks/file-lock.js';
|
|
11
10
|
import { HOST_CAPABILITY_HOOK_PENDING_RUNTIME_FILENAME, HOST_CAPABILITY_MCP_SERVER, createHostCapabilityHookPendingRuntime, createHostCapabilityEventCollector, hostCapabilityCodexConfigArgs, inspectHostCapabilityRuntime, requestHostCapabilities } from '../agent-bridge/host-capability-runtime.js';
|
|
11
|
+
import { uniqueStringsSorted as uniqueStrings } from '../text/strings.js';
|
|
12
12
|
export const OFFICIAL_SUBAGENT_WORKFLOW_SCHEMA = 'sks.subagent-workflow.v1';
|
|
13
|
+
function officialSubagentMissionDir(root, missionId) {
|
|
14
|
+
return path.join(root, '.sneakoscope', 'missions', missionId);
|
|
15
|
+
}
|
|
13
16
|
const OFFICIAL_SUBAGENT_CHILD_ENV_ALLOWLIST = Object.freeze([
|
|
14
17
|
'HOME',
|
|
15
18
|
'USER',
|
|
@@ -45,6 +48,11 @@ const OFFICIAL_SUBAGENT_CHILD_ENV_ALLOWLIST = Object.freeze([
|
|
|
45
48
|
'CODEX_INTERNAL_ORIGINATOR',
|
|
46
49
|
'CODEX_SANDBOX_NETWORK_DISABLED',
|
|
47
50
|
'SKS_AGENT_MODE',
|
|
51
|
+
'SKS_NARUTO_PARENT_EDGE_ID',
|
|
52
|
+
'SKS_NARUTO_PARENT_LEASE_OWNER',
|
|
53
|
+
'SKS_NARUTO_PARENT_LEASE_GENERATION',
|
|
54
|
+
'SKS_NARUTO_PARENT_MISSION_GENERATION',
|
|
55
|
+
'ACAS_CUSTOMER_ID',
|
|
48
56
|
'ACAS_AGENT_SLUG',
|
|
49
57
|
'ACAS_AGENT_WORKSPACE',
|
|
50
58
|
'ALFREDO_AGENT_SOULS_FILE',
|
|
@@ -333,7 +341,7 @@ export async function runOfficialSubagentWorkflow(input) {
|
|
|
333
341
|
};
|
|
334
342
|
}
|
|
335
343
|
hostCapabilityLaunchNonce = randomId(32);
|
|
336
|
-
hostCapabilityPendingDir =
|
|
344
|
+
hostCapabilityPendingDir = officialSubagentMissionDir(canonicalRoot, input.missionId);
|
|
337
345
|
}
|
|
338
346
|
const childEnv = buildOfficialSubagentChildEnv({
|
|
339
347
|
...(input.env ? { env: input.env } : {}),
|
|
@@ -589,6 +597,3 @@ function summarizeCodexJsonlOutput(text, secretValues) {
|
|
|
589
597
|
event_types: uniqueStrings(eventTypes)
|
|
590
598
|
};
|
|
591
599
|
}
|
|
592
|
-
function uniqueStrings(values) {
|
|
593
|
-
return [...new Set(values.map((value) => String(value || '').trim()).filter(Boolean))].sort();
|
|
594
|
-
}
|