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
package/dist/core/init.js
CHANGED
|
@@ -18,6 +18,7 @@ import { AUTHORITATIVE_SKS_SKILL_ROOT_REFERENCE } from './codex-native/sks-skill
|
|
|
18
18
|
import { currentGeneratedFileInventory, installCodexAgents, pruneStaleGeneratedFiles, REMOVED_SKS_SKILL_NAMES } from './init/skills.js';
|
|
19
19
|
import { reconcileManagedSkillInstallation } from './init/managed-skill-install.js';
|
|
20
20
|
import { backupInvalidToml, inspectOfficialSubagentToml, mergeOfficialSubagentConfig, officialSubagentConfigOwnershipProof, officialSubagentConfigWarnings, readInheritedOfficialSubagentConfigText, resolveInheritedOfficialSubagentConfigPath } from './subagents/official-subagent-config.js';
|
|
21
|
+
import { escapeRegExp } from './text/regex.js';
|
|
21
22
|
export { installGlobalSkills, installProjectSkills, installSkills } from './init/skills.js';
|
|
22
23
|
const REFLECTION_MEMORY_PATH = '.sneakoscope/memory/q2_facts/post-route-reflection.md';
|
|
23
24
|
const REMOVED_SKILL_TOKENS = new Set(REMOVED_SKS_SKILL_NAMES.map((name) => name.replace(/[^a-z0-9]/g, '')));
|
|
@@ -72,7 +73,6 @@ const SKS_SKILL_MANIFEST_FILE = '.sks-generated.json';
|
|
|
72
73
|
const GENERATED_PRUNE_POLICY = 'remove_previous_sks_generated_paths_absent_from_current_manifest';
|
|
73
74
|
export const REQUIRED_GENERATED_CODEX_APP_FEATURE_FLAGS = [
|
|
74
75
|
'hooks',
|
|
75
|
-
'multi_agent',
|
|
76
76
|
'fast_mode',
|
|
77
77
|
'apps'
|
|
78
78
|
];
|
|
@@ -283,6 +283,7 @@ const AGENTS_BLOCK = [
|
|
|
283
283
|
'- Keep trust-boundary validation, secrets, permissions, data integrity, rollback, accessibility, and explicit user requirements intact.',
|
|
284
284
|
'- Database and destructive operations are read-only by default. Live mutation, publishing, deployment, credential changes, and other irreversible external actions require explicit scoped authorization.',
|
|
285
285
|
'- Never fabricate fallback implementations or success evidence. If the real requested path is unavailable, stop with evidence.',
|
|
286
|
+
'- Never run `sks doctor --fix` yourself. When repair is needed, tell the user to run it in their own terminal and wait for confirmation.',
|
|
286
287
|
'- Conflicting third-party Codex harness markers are removed from the live surface only via `sks conflicts cleanup --yes`; a backup is kept under `.sneakoscope/quarantine/other-harness/`.',
|
|
287
288
|
'',
|
|
288
289
|
'## Codex App',
|
|
@@ -630,11 +631,11 @@ export async function initProject(root, opts = {}) {
|
|
|
630
631
|
project_install: 'npm i -D sneakoscope && npx sks setup --install-scope project'
|
|
631
632
|
};
|
|
632
633
|
}
|
|
633
|
-
const MANAGED_CODEX_FEATURE_FLAGS = ['hooks', '
|
|
634
|
+
const MANAGED_CODEX_FEATURE_FLAGS = ['hooks', 'fast_mode', 'apps'];
|
|
634
635
|
const REMOVED_CODEX_FEATURE_FLAGS = [
|
|
635
636
|
'remote_control', 'fast_mode_ui', 'codex_git_commit', 'computer_use', 'browser_use',
|
|
636
637
|
'browser_use_external', 'image_generation', 'in_app_browser', 'guardian_approval',
|
|
637
|
-
'tool_suggest', 'plugins', 'codex_hooks'
|
|
638
|
+
'tool_suggest', 'plugins', 'codex_hooks', 'multi_agent'
|
|
638
639
|
];
|
|
639
640
|
function mergeManagedCodexConfigToml(existingContent = '', opts = {}) {
|
|
640
641
|
let next = String(existingContent || '').trimEnd();
|
|
@@ -1155,6 +1156,3 @@ export function codexAppQuickReference(scope, commandPrefix) {
|
|
|
1155
1156
|
'Publishing, deployment, live database mutation, destructive actions, and other irreversible external effects require explicit scoped authorization.'
|
|
1156
1157
|
].join('\n') + '\n';
|
|
1157
1158
|
}
|
|
1158
|
-
function escapeRegExp(value) {
|
|
1159
|
-
return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
1160
|
-
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function isRecord(value) {
|
|
2
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
export function asRecordOrNull(value) {
|
|
5
|
+
return isRecord(value) ? value : null;
|
|
6
|
+
}
|
|
7
|
+
export function asRecordOrEmpty(value) {
|
|
8
|
+
return isRecord(value) ? value : {};
|
|
9
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRecord } from './json/records.js';
|
|
1
2
|
export function validateJsonSchema(value, schema, opts = {}) {
|
|
2
3
|
const issues = [];
|
|
3
4
|
const unsupported = [];
|
|
@@ -207,9 +208,6 @@ function runtimeType(value) {
|
|
|
207
208
|
return 'integer';
|
|
208
209
|
return typeof value;
|
|
209
210
|
}
|
|
210
|
-
function isRecord(value) {
|
|
211
|
-
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
212
|
-
}
|
|
213
211
|
function escapePath(value) {
|
|
214
212
|
return /^[A-Za-z_$][\w$]*$/.test(value) ? value : JSON.stringify(value);
|
|
215
213
|
}
|
|
@@ -2,6 +2,7 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
export const LEAN_ENGINEERING_POLICY_ID = 'sks.lean-engineering-policy.v1';
|
|
3
3
|
export const LEAN_DECISION_SCHEMA = 'sks.lean-decision.v1';
|
|
4
4
|
export const LEAN_CHANGE_EVIDENCE_SCHEMA = 'sks.lean-change-evidence.v1';
|
|
5
|
+
export const ENGINEERING_SANITY_POLICY_ID = 'sks.engineering-sanity-policy.v1';
|
|
5
6
|
export const LEAN_SOLUTION_RUNGS = Object.freeze([
|
|
6
7
|
'skip',
|
|
7
8
|
'reuse-existing',
|
|
@@ -17,6 +18,10 @@ const CORE_ENGINEERING_DIRECTIVE_LINES = Object.freeze([
|
|
|
17
18
|
'Use the real project mechanism. Follow current code and specifications and use authoritative tools or data; never substitute invented mocks, guessed heuristics, remembered architectures, or unsupported fallbacks.',
|
|
18
19
|
'Preserve security, permissions, data integrity, rollback, accessibility, and explicit user requirements. If the real path is unavailable, stop and report evidence.'
|
|
19
20
|
]);
|
|
21
|
+
const ENGINEERING_SANITY_POLICY_LINES = Object.freeze([
|
|
22
|
+
'Continuously review changed code and its real callers for basic SOLID boundaries, N+1 or repeated I/O, unbounded render/recursion/event/retry/polling loops, and disabled checks, swallowed failures, or other verification bypasses.',
|
|
23
|
+
'For database work, inspect the existing canonical data-access path first. Preserve one owned connection/pool lifecycle with bounded acquire, release, shutdown, and reconnect behavior; require atomic transactions, rollback and error propagation, idempotency, and post-commit invariant checks for sensitive, payment, ledger, or multi-step mutations.'
|
|
24
|
+
]);
|
|
20
25
|
const LEAN_ENGINEERING_POLICY_CANONICAL = CORE_ENGINEERING_DIRECTIVE_LINES.join('\n');
|
|
21
26
|
export const LEAN_ENGINEERING_POLICY_HASH = createHash('sha256')
|
|
22
27
|
.update(LEAN_ENGINEERING_POLICY_CANONICAL)
|
|
@@ -24,6 +29,10 @@ export const LEAN_ENGINEERING_POLICY_HASH = createHash('sha256')
|
|
|
24
29
|
.slice(0, 16);
|
|
25
30
|
export const CORE_ENGINEERING_DIRECTIVE_ID = 'sks.core-engineering-directive.v1';
|
|
26
31
|
export const CORE_ENGINEERING_DIRECTIVE_HASH = LEAN_ENGINEERING_POLICY_HASH;
|
|
32
|
+
export const ENGINEERING_SANITY_POLICY_HASH = createHash('sha256')
|
|
33
|
+
.update(ENGINEERING_SANITY_POLICY_LINES.join('\n'))
|
|
34
|
+
.digest('hex')
|
|
35
|
+
.slice(0, 16);
|
|
27
36
|
export function leanPolicyReference() {
|
|
28
37
|
return {
|
|
29
38
|
policy_id: LEAN_ENGINEERING_POLICY_ID,
|
|
@@ -42,6 +51,12 @@ export function coreEngineeringDirectiveText() {
|
|
|
42
51
|
export function coreEngineeringDirectiveReferenceText() {
|
|
43
52
|
return `Apply the Core Engineering Directive (${CORE_ENGINEERING_DIRECTIVE_ID}/${CORE_ENGINEERING_DIRECTIVE_HASH}) from AGENTS.md exactly; do not expand it with legacy global rules.`;
|
|
44
53
|
}
|
|
54
|
+
export function engineeringSanityPolicyText() {
|
|
55
|
+
return [
|
|
56
|
+
`Engineering Sanity Policy (${ENGINEERING_SANITY_POLICY_ID}/${ENGINEERING_SANITY_POLICY_HASH}):`,
|
|
57
|
+
...ENGINEERING_SANITY_POLICY_LINES
|
|
58
|
+
].join('\n');
|
|
59
|
+
}
|
|
45
60
|
export function leanEngineeringCompactText() {
|
|
46
61
|
return coreEngineeringDirectiveText();
|
|
47
62
|
}
|
|
@@ -157,3 +172,42 @@ function booleanValue(value, fallback) {
|
|
|
157
172
|
function record(value) {
|
|
158
173
|
return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
|
|
159
174
|
}
|
|
175
|
+
const MONEY_SENSITIVE_PATTERN = /(^|[\/_.-])(payment|payout|billing|invoice|charge|refund|ledger|settlement|transaction|subscription|checkout|wallet|balance|payroll)([\/_.-]|s?\.|$)/i;
|
|
176
|
+
export function isMoneySensitivePath(file) {
|
|
177
|
+
return MONEY_SENSITIVE_PATTERN.test(String(file || ''));
|
|
178
|
+
}
|
|
179
|
+
export function isTestPath(file) {
|
|
180
|
+
const path = String(file || '');
|
|
181
|
+
return /(^|\/)(__tests__|test|tests)(\/|$)/.test(path) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(path);
|
|
182
|
+
}
|
|
183
|
+
export const TEST_VOLUME_ABSOLUTE_FLOOR = 200;
|
|
184
|
+
export const TEST_VOLUME_RATIO_LIMIT = 4;
|
|
185
|
+
export function assessTestVolume(entries = []) {
|
|
186
|
+
let addedTestLines = 0;
|
|
187
|
+
let addedSourceLines = 0;
|
|
188
|
+
let moneySensitive = false;
|
|
189
|
+
for (const entry of entries) {
|
|
190
|
+
const added = Number(entry?.lines_added || 0);
|
|
191
|
+
if (!Number.isFinite(added) || added <= 0)
|
|
192
|
+
continue;
|
|
193
|
+
if (isTestPath(entry?.path))
|
|
194
|
+
addedTestLines += added;
|
|
195
|
+
else {
|
|
196
|
+
addedSourceLines += added;
|
|
197
|
+
if (isMoneySensitivePath(entry?.path))
|
|
198
|
+
moneySensitive = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const ratio = addedSourceLines > 0 ? addedTestLines / addedSourceLines : null;
|
|
202
|
+
const overBudget = !moneySensitive
|
|
203
|
+
&& addedTestLines >= TEST_VOLUME_ABSOLUTE_FLOOR
|
|
204
|
+
&& ratio !== null
|
|
205
|
+
&& ratio >= TEST_VOLUME_RATIO_LIMIT;
|
|
206
|
+
return {
|
|
207
|
+
added_test_lines: addedTestLines,
|
|
208
|
+
added_source_lines: addedSourceLines,
|
|
209
|
+
ratio,
|
|
210
|
+
money_sensitive: moneySensitive,
|
|
211
|
+
over_budget: overBudget
|
|
212
|
+
};
|
|
213
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { nowIso, readJson, writeJsonAtomic } from '../fsx.js';
|
|
3
3
|
import { loopPlanPath } from './loop-artifacts.js';
|
|
4
|
+
import { isRecord } from '../json/records.js';
|
|
4
5
|
export async function evaluateLoopContinuation(input) {
|
|
5
6
|
const root = path.resolve(input.root || process.cwd());
|
|
6
7
|
const plan = await readJson(loopPlanPath(root, input.missionId), null);
|
|
@@ -34,6 +35,3 @@ function loopNodes(value) {
|
|
|
34
35
|
return value.graph.nodes
|
|
35
36
|
.filter((node) => isRecord(node) && typeof node.loop_id === 'string');
|
|
36
37
|
}
|
|
37
|
-
function isRecord(value) {
|
|
38
|
-
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
39
|
-
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { performance } from 'node:perf_hooks';
|
|
2
2
|
import { nowIso, sha256 } from '../../fsx.js';
|
|
3
|
+
import { PACKAGE_VERSION } from '../../version.js';
|
|
3
4
|
export class MadSksSqlPlaneMcpExecutor {
|
|
4
5
|
profile;
|
|
5
6
|
opts;
|
|
@@ -14,7 +15,7 @@ export class MadSksSqlPlaneMcpExecutor {
|
|
|
14
15
|
if (this.client)
|
|
15
16
|
return;
|
|
16
17
|
const { Client, StreamableHTTPClientTransport } = await loadMcpSdk();
|
|
17
|
-
this.client = new Client({ name: 'sneakoscope-mad-sks-sql-plane', version:
|
|
18
|
+
this.client = new Client({ name: 'sneakoscope-mad-sks-sql-plane', version: PACKAGE_VERSION });
|
|
18
19
|
const headers = authHeaders();
|
|
19
20
|
const options = headers ? { requestInit: { headers } } : {};
|
|
20
21
|
this.transport = new StreamableHTTPClientTransport(new URL(this.profile.server_url), options);
|
|
@@ -177,7 +177,8 @@ description: Enforce Sneakoscope Codex database safety before using SQL, Supabas
|
|
|
177
177
|
---
|
|
178
178
|
|
|
179
179
|
Rules:
|
|
180
|
-
- Default non-MAD-SKS mode is read-only
|
|
180
|
+
- Default non-MAD-SKS mode is read-only. When a migration is required, produce exactly one mission-local manual-migration.sql with active forward SQL and a complete rollback section that remains commented out, then tell the user to apply it manually.
|
|
181
|
+
- Before any DB change, inspect the existing canonical adapter/query helper, pool/client ownership and acquire/release/shutdown/reconnect behavior, N+1/repeated I/O, and transaction integrity for sensitive or multi-step mutations.
|
|
181
182
|
- Supabase MCP must be read-only and project-scoped by default.
|
|
182
183
|
- Live execute_sql writes are blocked unless a bound active MAD-SKS sql-plane capability v2 is present.
|
|
183
184
|
- Active MAD-SKS sql-plane is the explicit exception: SQL-plane mutations requested by $MAD-SKS or sks mad-sks sql|apply-migration are allowed, including DROP, DELETE, TRUNCATE, RLS/policy changes, and execute_sql/apply_migration, and must be executed with read-back verification.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { sha256 } from '../fsx.js';
|
|
2
|
+
import { PACKAGE_VERSION } from '../version.js';
|
|
2
3
|
import { subagentModelProfile } from '../subagents/model-policy.js';
|
|
3
4
|
export const MANAGED_ASSET_SCHEMA_VERSION = 1;
|
|
4
|
-
export const MANAGED_ASSET_VERSION =
|
|
5
|
+
export const MANAGED_ASSET_VERSION = PACKAGE_VERSION;
|
|
5
6
|
export const MANAGED_ASSET_MARKER = 'SKS-MANAGED-ASSET';
|
|
6
7
|
export const MANAGED_OFFICIAL_SUBAGENT_MARKER = 'SKS-MANAGED-OFFICIAL-SUBAGENT';
|
|
7
8
|
export const RETIRED_MANAGED_AGENT_ROLE_TOMBSTONES = Object.freeze([
|
|
@@ -23,7 +24,7 @@ export const MANAGED_OFFICIAL_SUBAGENT_ROLES = Object.freeze([
|
|
|
23
24
|
codexName: 'worker',
|
|
24
25
|
description: 'Luna Max execution subagent only for tiny, short-context, mechanical work with an explicit done condition.',
|
|
25
26
|
policy: 'luna_max_mechanical',
|
|
26
|
-
keywords: ['tiny', 'short context', 'single file', 'mechanical', 'repeatable', 'exact rename', 'format only', 'typo'],
|
|
27
|
+
keywords: ['tiny', 'short context', 'single file', 'mechanical', 'repeatable', 'exact rename', 'format only', 'typo', 'simple search', 'typing', '단순 검색', '타이핑'],
|
|
27
28
|
nicknames: ['Kite', 'Moss', 'Pico', 'Reed', 'Vale', 'Wren'],
|
|
28
29
|
instructions: `You are a bounded execution subagent.
|
|
29
30
|
|
|
@@ -87,7 +88,7 @@ Return a concise result, evidence, risks, and next action.`
|
|
|
87
88
|
description: 'Terra Medium read-only codebase explorer for read-heavy scans, entry points, ownership, dependencies, and distilled evidence.',
|
|
88
89
|
policy: 'terra_medium_context_tools',
|
|
89
90
|
sandbox: 'read-only',
|
|
90
|
-
keywords: ['explore', 'map', 'trace', 'inventory', 'locate', 'search', 'read-only'],
|
|
91
|
+
keywords: ['explore', 'map', 'trace', 'inventory', 'locate', 'search', 'read-only', 'large search', 'repository-wide search', '대규모 검색'],
|
|
91
92
|
nicknames: ['Beacon', 'Compass', 'Maple', 'Scout'],
|
|
92
93
|
instructions: `You are the read-only code explorer.
|
|
93
94
|
|
|
@@ -2,6 +2,7 @@ import fsp from 'node:fs/promises';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { runProcess, which } from '../fsx.js';
|
|
5
|
+
import { isRecord } from '../json/records.js';
|
|
5
6
|
export class CodexMcpCliAdapter {
|
|
6
7
|
configuredPath;
|
|
7
8
|
findExecutable;
|
|
@@ -157,9 +158,6 @@ function failedTransform(publicError) {
|
|
|
157
158
|
public_error: publicError
|
|
158
159
|
};
|
|
159
160
|
}
|
|
160
|
-
function isRecord(value) {
|
|
161
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
162
|
-
}
|
|
163
161
|
async function defaultRun(command, args, options) {
|
|
164
162
|
return runProcess(command, [...args], options);
|
|
165
163
|
}
|
|
@@ -3,6 +3,8 @@ import { parseCodexConfigToml } from '../codex/codex-config-toml.js';
|
|
|
3
3
|
import { publicMcpCommand, redactMcpError, redactMcpUrl, sanitizeMcpArgs } from './redaction.js';
|
|
4
4
|
import { normalizeApprovalMode } from './secret-policy.js';
|
|
5
5
|
import { MCP_DEFAULT_STARTUP_TIMEOUT_SEC, MCP_DEFAULT_TOOL_TIMEOUT_SEC, MCP_SERVER_CONFIG_SCHEMA } from './types.js';
|
|
6
|
+
import { isRecord } from '../json/records.js';
|
|
7
|
+
export { isRecord };
|
|
6
8
|
export class McpConfigReadError extends Error {
|
|
7
9
|
code;
|
|
8
10
|
constructor(code, cause) {
|
|
@@ -117,9 +119,6 @@ export function privateInlineEnvironment(value) {
|
|
|
117
119
|
export function rawStringArray(value) {
|
|
118
120
|
return stringArray(value);
|
|
119
121
|
}
|
|
120
|
-
export function isRecord(value) {
|
|
121
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
122
|
-
}
|
|
123
122
|
function parseToolApprovalModes(value) {
|
|
124
123
|
if (!isRecord(value))
|
|
125
124
|
return {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { escapeRegExp } from '../text/regex.js';
|
|
1
2
|
export function replaceOrAppendMcpServer(text, name, block) {
|
|
2
3
|
const source = String(text || '');
|
|
3
4
|
const range = serverRange(source, name);
|
|
@@ -256,4 +257,3 @@ function escapedAt(value, index) {
|
|
|
256
257
|
function tomlString(value) { return JSON.stringify(String(value)); }
|
|
257
258
|
function tomlKey(value) { return tomlString(value); }
|
|
258
259
|
function tomlArray(values) { return `[${values.map(tomlString).join(', ')}]`; }
|
|
259
|
-
function escapeRegExp(value) { return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
|
|
@@ -7,6 +7,7 @@ import { redactMcpError } from './redaction.js';
|
|
|
7
7
|
import { normalizeMcpServerName } from './secret-policy.js';
|
|
8
8
|
import { resolveMcpScope } from './scope.js';
|
|
9
9
|
import { MCP_HEALTH_SCHEMA } from './types.js';
|
|
10
|
+
import { PACKAGE_VERSION } from '../version.js';
|
|
10
11
|
const PROTOCOL_VERSION = '2024-11-05';
|
|
11
12
|
const OUTPUT_CAP = 64 * 1024;
|
|
12
13
|
let activeHealthChecks = 0;
|
|
@@ -303,7 +304,7 @@ function parseHttpPayload(text) {
|
|
|
303
304
|
function initializeRequest() {
|
|
304
305
|
return {
|
|
305
306
|
jsonrpc: '2.0', id: 1, method: 'initialize',
|
|
306
|
-
params: { protocolVersion: PROTOCOL_VERSION, capabilities: {}, clientInfo: { name: 'sks-mcp-health', version:
|
|
307
|
+
params: { protocolVersion: PROTOCOL_VERSION, capabilities: {}, clientInfo: { name: 'sks-mcp-health', version: PACKAGE_VERSION } }
|
|
307
308
|
};
|
|
308
309
|
}
|
|
309
310
|
function timeoutMs(value, fallback) {
|
|
@@ -9,6 +9,7 @@ import { redactMcpError, redactMcpErrorWithSecrets } from './redaction.js';
|
|
|
9
9
|
import { isOfficialMcpServerName, McpSecretPolicyError, normalizeApprovalMode, normalizeMcpMutationInput, normalizeMcpServerName } from './secret-policy.js';
|
|
10
10
|
import { McpScopeError, resolveMcpScope } from './scope.js';
|
|
11
11
|
import { MCP_MUTATION_SCHEMA } from './types.js';
|
|
12
|
+
import { messageOf } from '../errors/message.js';
|
|
12
13
|
export async function addMcpServer(input, scope, options = {}) {
|
|
13
14
|
let normalized;
|
|
14
15
|
try {
|
|
@@ -363,4 +364,3 @@ function fallbackGenerated(text, reason) {
|
|
|
363
364
|
function generatedFailure(blockers, publicError = null) {
|
|
364
365
|
return { ok: false, text: null, cliUsed: false, fallbackUsed: false, warnings: [], blockers, publicError };
|
|
365
366
|
}
|
|
366
|
-
function messageOf(error) { return error instanceof Error ? error.message : String(error); }
|
|
@@ -7,6 +7,7 @@ import { listMcpInventory } from './inventory.js';
|
|
|
7
7
|
import { redactMcpError } from './redaction.js';
|
|
8
8
|
import { McpScopeError, resolveMcpScope } from './scope.js';
|
|
9
9
|
import { MCP_MUTATION_SCHEMA } from './types.js';
|
|
10
|
+
import { messageOf } from '../errors/message.js';
|
|
10
11
|
export async function restoreMcpBackup(backupId, scope, options = {}) {
|
|
11
12
|
let ref;
|
|
12
13
|
try {
|
|
@@ -103,4 +104,3 @@ function failure(scope, blockers, publicError = null) {
|
|
|
103
104
|
public_error: publicError
|
|
104
105
|
};
|
|
105
106
|
}
|
|
106
|
-
function messageOf(error) { return error instanceof Error ? error.message : String(error); }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MCP_APPROVAL_MODES } from './types.js';
|
|
2
2
|
import { isSensitiveMcpArgumentName, looksLikeMcpSecretValue } from './redaction.js';
|
|
3
|
+
import { isRecord } from '../json/records.js';
|
|
3
4
|
const ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
4
5
|
const SERVER_NAME = /^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$/;
|
|
5
6
|
const TOOL_NAME = /^[A-Za-z0-9][A-Za-z0-9_.:/-]{0,127}$/;
|
|
@@ -191,6 +192,3 @@ function boundedString(value, max) {
|
|
|
191
192
|
const text = value.trim();
|
|
192
193
|
return text && Buffer.byteLength(text) <= max && !/[\r\n\0]/.test(text) ? text : null;
|
|
193
194
|
}
|
|
194
|
-
function isRecord(value) {
|
|
195
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
196
|
-
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import crypto from 'node:crypto';
|
|
3
3
|
import { appendJsonl, ensureDir, nowIso } from '../fsx.js';
|
|
4
|
+
import { PACKAGE_VERSION } from '../version.js';
|
|
4
5
|
export const MIGRATION_JOURNAL_SCHEMA = 'sks.migration-journal.v1';
|
|
5
|
-
export const MIGRATION_JOURNAL_VERSION = '1.20.1';
|
|
6
6
|
export function hashConfigText(text) {
|
|
7
7
|
return crypto.createHash('sha256').update(String(text ?? '')).digest('hex');
|
|
8
8
|
}
|
|
@@ -13,7 +13,7 @@ export function buildMigrationEvent(input) {
|
|
|
13
13
|
const rollbackAvailable = input.rollbackAvailable ?? Boolean(input.backupPath);
|
|
14
14
|
const event = {
|
|
15
15
|
ts: nowIso(),
|
|
16
|
-
migration:
|
|
16
|
+
migration: PACKAGE_VERSION,
|
|
17
17
|
step: input.step,
|
|
18
18
|
target: input.target,
|
|
19
19
|
before_hash: beforeHash,
|
|
@@ -32,7 +32,7 @@ export function migrationJournalPath(root, opts = {}) {
|
|
|
32
32
|
const base = opts.missionId
|
|
33
33
|
? path.join(root, '.sneakoscope', 'missions', opts.missionId)
|
|
34
34
|
: path.join(root, '.sneakoscope', 'reports');
|
|
35
|
-
return path.join(base,
|
|
35
|
+
return path.join(base, 'migration-journal.jsonl');
|
|
36
36
|
}
|
|
37
37
|
export async function appendMigrationEvents(root, events, opts = {}) {
|
|
38
38
|
const journalPath = migrationJournalPath(root, opts);
|
|
@@ -77,10 +77,10 @@ export function decideNarutoConcurrency(input = {}) {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
function normalizeParallelismMode(value) {
|
|
80
|
-
const text = String(value || process.env.SKS_NARUTO_PARALLELISM || '
|
|
80
|
+
const text = String(value || process.env.SKS_NARUTO_PARALLELISM || 'extreme').toLowerCase();
|
|
81
81
|
if (text === 'safe' || text === 'balanced' || text === 'extreme')
|
|
82
82
|
return text;
|
|
83
|
-
return '
|
|
83
|
+
return 'extreme';
|
|
84
84
|
}
|
|
85
85
|
function normalizePositiveInt(value, fallback) {
|
|
86
86
|
const parsed = Number(value);
|
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
import fsp from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { writeJsonAtomic } from '../fsx.js';
|
|
4
|
+
const NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES = [
|
|
5
|
+
forbidden('command-registry', /src\/cli\/command-registry\.ts$/),
|
|
6
|
+
forbidden('route-table', /src\/core\/routes\.ts$/),
|
|
7
|
+
forbidden('telegram', /src\/core\/(?:commands\/telegram-command\.ts|telegram(?:\/|\.ts$))/),
|
|
8
|
+
forbidden('remote', /src\/core\/(?:commands\/remote-command\.ts|remote(?:\/|\.ts$))/),
|
|
9
|
+
forbidden('menubar', /(?:^|\/)(?:menubar|sks-menubar)(?:\/|[-.])/),
|
|
10
|
+
forbidden('provider-ui', /(?:openrouter|provider-card|provider-model-ui|multi-provider)/i),
|
|
11
|
+
forbidden('image-research-route', /src\/core\/(?:wiki-image|image-ux-review|research|search-visibility)(?:\/|\.ts$)/),
|
|
12
|
+
forbidden('release-publish', /src\/core\/release\/(?:main-push|macos-menubar|npm-stage|publish|release-publish)/)
|
|
13
|
+
];
|
|
4
14
|
const IMPORT_BUDGETS = [
|
|
15
|
+
{
|
|
16
|
+
fastPath: 'naruto official runner',
|
|
17
|
+
files: ['src/core/subagents/official-subagent-runner.ts'],
|
|
18
|
+
traverseStaticImports: true,
|
|
19
|
+
forbidden: [],
|
|
20
|
+
forbiddenModules: NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
fastPath: 'agent-bridge manifest',
|
|
24
|
+
files: ['src/core/agent-bridge/agent-manifest.ts'],
|
|
25
|
+
traverseStaticImports: true,
|
|
26
|
+
forbidden: [],
|
|
27
|
+
forbiddenModules: NARUTO_AGENT_BRIDGE_FORBIDDEN_MODULES
|
|
28
|
+
},
|
|
5
29
|
{
|
|
6
30
|
fastPath: '--version',
|
|
7
31
|
files: ['src/bin/sks.ts'],
|
|
@@ -61,10 +85,24 @@ export async function checkImportGraphBudget(root) {
|
|
|
61
85
|
const checked = new Set();
|
|
62
86
|
const violations = [];
|
|
63
87
|
for (const budget of IMPORT_BUDGETS) {
|
|
64
|
-
|
|
88
|
+
const files = budget.traverseStaticImports
|
|
89
|
+
? await staticImportClosure(root, budget.files)
|
|
90
|
+
: budget.files;
|
|
91
|
+
for (const file of files) {
|
|
65
92
|
checked.add(file);
|
|
66
93
|
const text = await fsp.readFile(path.join(root, file), 'utf8').catch(() => '');
|
|
67
94
|
const checkText = budget.sourceSlice ? budget.sourceSlice(file, text) : text;
|
|
95
|
+
for (const rule of budget.forbiddenModules || []) {
|
|
96
|
+
const match = file.match(rule.pattern);
|
|
97
|
+
if (!match)
|
|
98
|
+
continue;
|
|
99
|
+
violations.push({
|
|
100
|
+
fast_path: budget.fastPath,
|
|
101
|
+
file,
|
|
102
|
+
forbidden: rule.id,
|
|
103
|
+
matched: match[0].slice(0, 160)
|
|
104
|
+
});
|
|
105
|
+
}
|
|
68
106
|
for (const rule of budget.forbidden) {
|
|
69
107
|
const match = checkText.match(rule.pattern);
|
|
70
108
|
if (!match)
|
|
@@ -91,6 +129,58 @@ export async function writeImportGraphBudgetReport(root) {
|
|
|
91
129
|
await writeJsonAtomic(path.join(root, '.sneakoscope', 'reports', 'import-graph-budget.json'), report);
|
|
92
130
|
return report;
|
|
93
131
|
}
|
|
132
|
+
async function staticImportClosure(root, entryFiles) {
|
|
133
|
+
const visited = new Set();
|
|
134
|
+
const queue = [...entryFiles];
|
|
135
|
+
while (queue.length) {
|
|
136
|
+
const file = queue.shift();
|
|
137
|
+
if (visited.has(file))
|
|
138
|
+
continue;
|
|
139
|
+
visited.add(file);
|
|
140
|
+
const text = await fsp.readFile(path.join(root, file), 'utf8').catch(() => '');
|
|
141
|
+
for (const specifier of staticModuleSpecifiers(text)) {
|
|
142
|
+
const resolved = await resolveSourceModule(root, file, specifier);
|
|
143
|
+
if (resolved && !visited.has(resolved))
|
|
144
|
+
queue.push(resolved);
|
|
145
|
+
}
|
|
146
|
+
queue.sort();
|
|
147
|
+
}
|
|
148
|
+
return [...visited].sort();
|
|
149
|
+
}
|
|
150
|
+
function staticModuleSpecifiers(text) {
|
|
151
|
+
const specifiers = new Set();
|
|
152
|
+
const pattern = /(?:^|\n)\s*(?:import|export)\s+(?!type\b)(?:[^;'"]{0,2000}?\sfrom\s+)?['"]([^'"]+)['"]/g;
|
|
153
|
+
for (const match of text.matchAll(pattern)) {
|
|
154
|
+
if (match[1]?.startsWith('.'))
|
|
155
|
+
specifiers.add(match[1]);
|
|
156
|
+
}
|
|
157
|
+
return [...specifiers].sort();
|
|
158
|
+
}
|
|
159
|
+
async function resolveSourceModule(root, importer, specifier) {
|
|
160
|
+
const importerDir = path.dirname(path.join(root, importer));
|
|
161
|
+
const raw = path.resolve(importerDir, specifier);
|
|
162
|
+
const candidates = new Set([raw]);
|
|
163
|
+
if (/\.[cm]?js$/.test(raw)) {
|
|
164
|
+
candidates.add(raw.replace(/\.js$/, '.ts'));
|
|
165
|
+
candidates.add(raw.replace(/\.mjs$/, '.mts'));
|
|
166
|
+
candidates.add(raw.replace(/\.cjs$/, '.cts'));
|
|
167
|
+
}
|
|
168
|
+
else if (!path.extname(raw)) {
|
|
169
|
+
candidates.add(`${raw}.ts`);
|
|
170
|
+
candidates.add(`${raw}.mts`);
|
|
171
|
+
candidates.add(`${raw}.cts`);
|
|
172
|
+
candidates.add(path.join(raw, 'index.ts'));
|
|
173
|
+
}
|
|
174
|
+
for (const candidate of candidates) {
|
|
175
|
+
const stat = await fsp.stat(candidate).catch(() => null);
|
|
176
|
+
if (!stat?.isFile())
|
|
177
|
+
continue;
|
|
178
|
+
const relative = path.relative(root, candidate).split(path.sep).join('/');
|
|
179
|
+
if (!relative.startsWith('../') && !path.isAbsolute(relative))
|
|
180
|
+
return relative;
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
94
184
|
function forbidden(id, pattern) {
|
|
95
185
|
return { id, pattern };
|
|
96
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { PIPELINE_PLAN_ARTIFACT, PIPELINE_PLAN_SCHEMA_VERSION, routePrompt, buildPipelinePlan, writePipelinePlan, validatePipelinePlan } from '../pipeline-internals/runtime-core.js';
|
|
1
|
+
export { PIPELINE_PLAN_ARTIFACT, PIPELINE_PLAN_SCHEMA_VERSION, routePrompt, buildPipelinePlan, writePipelinePlan, validatePipelinePlan, pipelinePlanState } from '../pipeline-internals/runtime-core.js';
|