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
|
@@ -2,96 +2,212 @@ import Cocoa
|
|
|
2
2
|
|
|
3
3
|
final class RemoteTelegramViewController: NSViewController, ControlCenterPage {
|
|
4
4
|
private let processClient: ProcessClient
|
|
5
|
-
private let
|
|
5
|
+
private let operations: OperationCoordinator
|
|
6
|
+
private let readinessStatus = NativeView.detail("Remote readiness has not been checked.")
|
|
7
|
+
private let setupStatus = NativeView.detail("Telegram setup has not been checked.")
|
|
8
|
+
private let hubStatus = NativeView.detail("Telegram Hub status has not been checked.")
|
|
6
9
|
private var generation = 0
|
|
10
|
+
private var busy = false
|
|
11
|
+
private var setupReady = false
|
|
12
|
+
private var hubRunning = false
|
|
7
13
|
private var checkButton: NSButton!
|
|
14
|
+
private var connectButton: NSButton!
|
|
15
|
+
private var startButton: NSButton!
|
|
16
|
+
private var stopButton: NSButton!
|
|
17
|
+
private var restartButton: NSButton!
|
|
8
18
|
|
|
9
|
-
init(processClient: ProcessClient
|
|
19
|
+
init(processClient: ProcessClient, operations: OperationCoordinator) {
|
|
20
|
+
self.processClient = processClient
|
|
21
|
+
self.operations = operations
|
|
22
|
+
super.init(nibName: nil, bundle: nil)
|
|
23
|
+
}
|
|
10
24
|
required init?(coder: NSCoder) { nil }
|
|
11
25
|
|
|
12
26
|
override func loadView() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
connectButton = NativeView.button("Connect Bot & Register Coding Session…", target: self, action: #selector(connectBot))
|
|
28
|
+
startButton = NativeView.button("Start Hub", target: self, action: #selector(startHub))
|
|
29
|
+
stopButton = NativeView.button("Stop Hub", target: self, action: #selector(stopHub))
|
|
30
|
+
restartButton = NativeView.button("Restart Hub", target: self, action: #selector(restartHub))
|
|
31
|
+
checkButton = NativeView.button("Refresh Status", target: self, action: #selector(check))
|
|
32
|
+
|
|
33
|
+
let setupCard = NativeView.card(
|
|
34
|
+
title: "1. Connect your private Telegram bot",
|
|
35
|
+
subtitle: "Create a bot with BotFather, open that bot in Telegram, send /start, then paste the bot token here. SKS verifies the bot, detects only that private chat/user, saves the token in macOS Keychain, and registers one dedicated coding session for this project.",
|
|
36
|
+
views: [setupStatus, NativeView.row([connectButton])]
|
|
37
|
+
)
|
|
38
|
+
let hubCard = NativeView.card(
|
|
39
|
+
title: "2. Keep remote coding available",
|
|
40
|
+
subtitle: "The LaunchAgent keeps the Hub running and prevents idle system sleep while this Mac user is logged in. Closing the lid or logging out can still stop access. It uses a local in-process worker on this Mac; SSH remains available only for explicitly configured remote machines.",
|
|
41
|
+
views: [hubStatus, NativeView.row([startButton, stopButton, restartButton])]
|
|
42
|
+
)
|
|
43
|
+
let usageCard = NativeView.card(
|
|
44
|
+
title: "3. Code from Telegram",
|
|
45
|
+
subtitle: "Send ordinary text in the paired private chat. The first message creates and persists the Codex thread with its first turn; later messages resume that exact thread, wait for completion, and return Codex’s final answer. /status, /diff, /proof, and /verify remain available. Arbitrary remote shell and unpaired chats stay blocked.",
|
|
46
|
+
views: []
|
|
47
|
+
)
|
|
48
|
+
let readinessCard = NativeView.card(
|
|
49
|
+
title: "Project readiness",
|
|
50
|
+
subtitle: "Codex app, CLI, and Git state for this project — checked together with every status refresh.",
|
|
51
|
+
views: [readinessStatus]
|
|
52
|
+
)
|
|
53
|
+
view = NativeView.page([
|
|
54
|
+
ControlKit.header("Remote & Telegram", "Telegram remote coding is isolated to this project, uses workspace-write with network disabled, and never exposes the bot token in config, arguments, or logs."),
|
|
55
|
+
NativeView.row([checkButton]),
|
|
56
|
+
setupCard, hubCard, usageCard, readinessCard
|
|
18
57
|
])
|
|
58
|
+
updateButtons()
|
|
19
59
|
check()
|
|
20
60
|
}
|
|
21
61
|
|
|
22
62
|
func refreshOnAppear() { check() }
|
|
23
63
|
|
|
64
|
+
@objc private func connectBot() {
|
|
65
|
+
guard let window = view.window else { return }
|
|
66
|
+
AlertFactory.textSheet(
|
|
67
|
+
window: window,
|
|
68
|
+
title: "Telegram Bot Token",
|
|
69
|
+
message: "First send /start to your bot from the private Telegram account you want to pair. Paste the BotFather token below. It is sent through stdin, stored in macOS Keychain, and never logged.",
|
|
70
|
+
secure: true,
|
|
71
|
+
placeholder: "123456789:ABC…"
|
|
72
|
+
) { [weak self] token in
|
|
73
|
+
guard let self = self, let token = token else { return }
|
|
74
|
+
self.runMutation(
|
|
75
|
+
args: ["telegram", "setup", "--bot-token-stdin", "--project-root", AppRuntime.projectRoot, "--json"],
|
|
76
|
+
stdin: token + "\n",
|
|
77
|
+
kind: "telegram-setup",
|
|
78
|
+
summary: "Connect Telegram bot and register dedicated Codex session"
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@objc private func startHub() {
|
|
84
|
+
runMutation(
|
|
85
|
+
args: ["telegram", "hub", "start", "--project-root", AppRuntime.projectRoot, "--json"],
|
|
86
|
+
kind: "telegram-hub-start",
|
|
87
|
+
summary: "Start Telegram Hub"
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@objc private func stopHub() {
|
|
92
|
+
runMutation(
|
|
93
|
+
args: ["telegram", "hub", "stop", "--project-root", AppRuntime.projectRoot, "--json"],
|
|
94
|
+
kind: "telegram-hub-stop",
|
|
95
|
+
summary: "Stop Telegram Hub"
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@objc private func restartHub() {
|
|
100
|
+
runMutation(
|
|
101
|
+
args: ["telegram", "hub", "restart", "--project-root", AppRuntime.projectRoot, "--json"],
|
|
102
|
+
kind: "telegram-hub-restart",
|
|
103
|
+
summary: "Restart Telegram Hub"
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
24
107
|
@objc private func check() {
|
|
108
|
+
guard !busy else { return }
|
|
25
109
|
generation += 1
|
|
26
110
|
let requestGeneration = generation
|
|
27
111
|
checkButton?.isEnabled = false
|
|
28
|
-
|
|
112
|
+
readinessStatus.stringValue = "Checking project readiness…"
|
|
113
|
+
setupStatus.stringValue = "Checking Keychain, pairing, and dedicated Codex session…"
|
|
114
|
+
hubStatus.stringValue = "Checking LaunchAgent state…"
|
|
29
115
|
var remote: [String: Any]?
|
|
30
116
|
var telegram: [String: Any]?
|
|
31
|
-
var remoteFailed = false
|
|
32
|
-
var telegramFailed = false
|
|
33
117
|
let group = DispatchGroup()
|
|
34
118
|
group.enter()
|
|
35
119
|
processClient.run(["remote", "readiness", "--project-root", AppRuntime.projectRoot, "--json"], timeout: NativeView.statusTimeout) { [weak self] result in
|
|
36
120
|
remote = self?.json(result.output)
|
|
37
|
-
remoteFailed = result.code != 0 || remote == nil
|
|
38
121
|
group.leave()
|
|
39
122
|
}
|
|
40
123
|
group.enter()
|
|
41
124
|
processClient.run(["telegram", "status", "--project-root", AppRuntime.projectRoot, "--json"], timeout: NativeView.statusTimeout) { [weak self] result in
|
|
42
|
-
telegram =
|
|
43
|
-
telegramFailed = result.code != 0 || telegram == nil
|
|
125
|
+
telegram = self?.json(result.output)
|
|
44
126
|
group.leave()
|
|
45
127
|
}
|
|
46
128
|
group.notify(queue: .main) { [weak self] in
|
|
47
129
|
guard let self = self, self.generation == requestGeneration else { return }
|
|
48
|
-
self.
|
|
49
|
-
self.
|
|
130
|
+
self.render(remote: remote, telegram: telegram)
|
|
131
|
+
self.updateButtons()
|
|
50
132
|
}
|
|
51
133
|
}
|
|
52
134
|
|
|
53
|
-
private func
|
|
54
|
-
|
|
55
|
-
|
|
135
|
+
private func runMutation(args: [String], stdin: String? = nil, kind: String, summary: String) {
|
|
136
|
+
guard !busy else {
|
|
137
|
+
hubStatus.stringValue = "Another Telegram operation is already running."
|
|
138
|
+
return
|
|
56
139
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
140
|
+
guard let operation = operations.begin(kind: kind, mutationGroup: "telegram", summary: summary) else {
|
|
141
|
+
hubStatus.stringValue = "Another guarded mutation is already running. Wait or open Diagnostics."
|
|
142
|
+
return
|
|
143
|
+
}
|
|
144
|
+
setBusy(true)
|
|
145
|
+
_ = operations.update(operation, state: .running, stage: "running", progress: nil, summary: summary)
|
|
146
|
+
hubStatus.stringValue = "\(summary)…"
|
|
147
|
+
processClient.run(args, stdin: stdin, timeout: NativeView.mutationTimeout) { [weak self] result in
|
|
148
|
+
guard let self = self else { return }
|
|
149
|
+
let ok = result.code == 0
|
|
150
|
+
_ = self.operations.update(
|
|
151
|
+
operation,
|
|
152
|
+
state: ok ? .succeeded : .failed,
|
|
153
|
+
stage: "complete",
|
|
154
|
+
progress: 1,
|
|
155
|
+
summary: ok ? "\(summary) completed" : "\(summary) failed"
|
|
156
|
+
)
|
|
157
|
+
self.setBusy(false)
|
|
158
|
+
if !ok {
|
|
159
|
+
// Route setup failures to the setup card so the guidance sits
|
|
160
|
+
// next to the Connect button instead of the Hub status line.
|
|
161
|
+
if kind == "telegram-setup" {
|
|
162
|
+
self.setupStatus.stringValue = "Setup failed. Confirm you sent /start to this bot, then retry. The token was not written to logs."
|
|
163
|
+
} else {
|
|
164
|
+
self.hubStatus.stringValue = "\(summary) failed · \(NativeView.redactPreview(result.output))"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
self.check()
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
private func setBusy(_ value: Bool) {
|
|
172
|
+
busy = value
|
|
173
|
+
updateButtons()
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
private func updateButtons() {
|
|
177
|
+
connectButton?.isEnabled = !busy
|
|
178
|
+
startButton?.isEnabled = !busy && setupReady && !hubRunning
|
|
179
|
+
stopButton?.isEnabled = !busy && hubRunning
|
|
180
|
+
restartButton?.isEnabled = !busy && setupReady && hubRunning
|
|
181
|
+
checkButton?.isEnabled = !busy
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
private func render(remote: [String: Any]?, telegram: [String: Any]?) {
|
|
185
|
+
if let remote = remote {
|
|
61
186
|
let host = remote["host"] as? [String: Any]
|
|
62
187
|
let project = remote["project"] as? [String: Any]
|
|
63
|
-
let
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
lines.append("Official Remote compatibility: \(remote["ok"] as? Bool == true ? "Ready" : "Needs attention") · Codex app \(host?["codex_app_found"] as? Bool == true ? "found" : "missing") · CLI \(host?["codex_cli_found"] as? Bool == true ? "found" : "missing")")
|
|
68
|
-
lines.append("Project: Git \(project?["git_repo"] as? Bool == true ? "ready" : "missing") · worktree \(project?["worktree"] as? Bool == true ? "yes" : "no") · dirty \(project?["dirty"] as? Bool == true ? "yes" : "no") · allowlist \(project?["allowed"] as? Bool == true ? "ready" : "blocked")")
|
|
69
|
-
lines.append("MCP: \(mcp?["effective_count"] as? Int ?? 0) effective · \(mcp?["failed_count"] as? Int ?? 0) failed · SKS proof \(sks?["proof_surfaces_ready"] as? Bool == true ? "ready" : "missing")")
|
|
70
|
-
if !remoteBlockers.isEmpty {
|
|
71
|
-
lines.append("Remote blockers: \(remoteBlockers.prefix(3).joined(separator: "; "))\(remoteBlockers.count > 3 ? "…" : "")")
|
|
72
|
-
} else if !remoteWarnings.isEmpty {
|
|
73
|
-
lines.append("Remote warnings: \(remoteWarnings.prefix(3).joined(separator: "; "))\(remoteWarnings.count > 3 ? "…" : "")")
|
|
74
|
-
} else {
|
|
75
|
-
lines.append("Remote blockers 0 · warnings 0")
|
|
76
|
-
}
|
|
188
|
+
let blockers = remote["blockers"] as? [String] ?? []
|
|
189
|
+
readinessStatus.stringValue = "Project readiness: \(remote["ok"] as? Bool == true ? "Ready" : "Needs attention") · Codex app \(host?["codex_app_found"] as? Bool == true ? "found" : "missing") · CLI \(host?["codex_cli_found"] as? Bool == true ? "found" : "missing") · Git \(project?["git_repo"] as? Bool == true ? "ready" : "missing")" + (blockers.isEmpty ? "" : " · \(blockers.prefix(2).joined(separator: "; "))")
|
|
190
|
+
} else {
|
|
191
|
+
readinessStatus.stringValue = "Project readiness is unavailable. Open Diagnostics for the redacted log."
|
|
77
192
|
}
|
|
78
193
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
let hubState = owner != nil ? "Running" : configured == true ? "Stopped" : configured == false ? "Not configured" : "Unknown"
|
|
86
|
-
let telegramIssues = (telegram["config_issues"] as? [String] ?? []) + (telegram["remote_config_issues"] as? [String] ?? [])
|
|
87
|
-
lines.append("Telegram Hub: \(hubState) · \(telegram["topic_count"] as? Int ?? 0) topics · \(telegram["machine_count"] as? Int ?? 0) machines · \(telegram["target_count"] as? Int ?? 0) targets")
|
|
88
|
-
if telegramIssues.isEmpty {
|
|
89
|
-
lines.append("Telegram issues 0")
|
|
90
|
-
} else {
|
|
91
|
-
lines.append("Telegram issues \(telegramIssues.count): \(telegramIssues.prefix(2).joined(separator: "; "))\(telegramIssues.count > 2 ? "…" : "")")
|
|
92
|
-
}
|
|
194
|
+
guard let telegram = telegram else {
|
|
195
|
+
setupReady = false
|
|
196
|
+
hubRunning = false
|
|
197
|
+
setupStatus.stringValue = "Telegram setup status is unavailable."
|
|
198
|
+
hubStatus.stringValue = "Telegram Hub status is unavailable."
|
|
199
|
+
return
|
|
93
200
|
}
|
|
94
|
-
|
|
201
|
+
let token = telegram["token_configured"] as? Bool == true
|
|
202
|
+
let pairing = telegram["pairing_valid"] as? Bool == true
|
|
203
|
+
let sessions = telegram["registered_session_count"] as? Int ?? 0
|
|
204
|
+
setupReady = token && pairing && sessions > 0
|
|
205
|
+
hubRunning = telegram["hub_running"] as? Bool == true
|
|
206
|
+
setupStatus.stringValue = "Keychain token \(token ? "ready" : "missing") · private pairing \(pairing ? "ready" : "missing") · dedicated Codex sessions \(sessions)" + (setupReady ? " · ready to start" : " · connect the bot to continue")
|
|
207
|
+
let service = telegram["service"] as? [String: Any]
|
|
208
|
+
let installed = service?["installed"] as? Bool == true
|
|
209
|
+
let state = service?["state"] as? String
|
|
210
|
+
hubStatus.stringValue = "Hub \(hubRunning ? "Running" : installed ? "Stopped" : "Not installed")" + (state.map { " · launchd \($0)" } ?? "") + (hubRunning ? " · send a Telegram message to code" : setupReady ? " · click Start Hub" : "")
|
|
95
211
|
}
|
|
96
212
|
|
|
97
213
|
private func json(_ text: String) -> [String: Any]? {
|
|
@@ -2,7 +2,7 @@ import Cocoa
|
|
|
2
2
|
|
|
3
3
|
final class SettingsViewController: NSViewController, ControlCenterPage {
|
|
4
4
|
private let notifications: NotificationCoordinator
|
|
5
|
-
private let quitWithCodex = NSButton(checkboxWithTitle: "Quit SKS Menu when Codex quits
|
|
5
|
+
private let quitWithCodex = NSButton(checkboxWithTitle: "Quit SKS Menu when Codex quits", target: nil, action: nil)
|
|
6
6
|
private let status = NativeView.detail("Settings use the native app configuration file.")
|
|
7
7
|
init(notifications: NotificationCoordinator) { self.notifications = notifications; super.init(nibName: nil, bundle: nil) }
|
|
8
8
|
required init?(coder: NSCoder) { nil }
|
|
@@ -12,10 +12,19 @@ final class SettingsViewController: NSViewController, ControlCenterPage {
|
|
|
12
12
|
quitWithCodex.state = readConfig()["quit_with_codex"] as? Bool == true ? .on : .off
|
|
13
13
|
quitWithCodex.setAccessibilityLabel("Quit SKS Menu when Codex quits")
|
|
14
14
|
let authorize = NativeView.button("Enable Notifications", target: self, action: #selector(enableNotifications))
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
quitWithCodex
|
|
15
|
+
let lifecycleCard = NativeView.card(
|
|
16
|
+
title: "Codex lifecycle",
|
|
17
|
+
subtitle: "Off keeps the menu icon available on cold start and hides it only after a Codex session ends.",
|
|
18
|
+
views: [quitWithCodex]
|
|
19
|
+
)
|
|
20
|
+
let notificationsCard = NativeView.card(
|
|
21
|
+
title: "Notifications",
|
|
22
|
+
subtitle: "Operation results always stay available in Control Center, even when notifications are denied.",
|
|
23
|
+
views: [NativeView.row([authorize]), status]
|
|
24
|
+
)
|
|
25
|
+
view = NativeView.page([
|
|
26
|
+
ControlKit.header("Settings", "These options stay on this Mac. Notification permission and Codex lifecycle behavior never leave the machine."),
|
|
27
|
+
lifecycleCard, notificationsCard
|
|
19
28
|
])
|
|
20
29
|
refreshOnAppear()
|
|
21
30
|
}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
|
|
3
|
+
// Ordered by expected use frequency: provider/model work first, then updates,
|
|
4
|
+
// then integrations, then maintenance.
|
|
3
5
|
enum SidebarItem: String, CaseIterable {
|
|
4
6
|
case overview = "Overview"
|
|
7
|
+
case providers = "Providers"
|
|
5
8
|
case updates = "Updates"
|
|
6
9
|
case mcpServers = "MCP Servers"
|
|
7
|
-
case providers = "Providers"
|
|
8
10
|
case remoteTelegram = "Remote & Telegram"
|
|
9
11
|
case diagnostics = "Diagnostics"
|
|
10
12
|
case settings = "Settings"
|
|
13
|
+
|
|
14
|
+
var symbolName: String {
|
|
15
|
+
switch self {
|
|
16
|
+
case .overview: return "gauge"
|
|
17
|
+
case .providers: return "cpu"
|
|
18
|
+
case .updates: return "arrow.down.circle"
|
|
19
|
+
case .mcpServers: return "server.rack"
|
|
20
|
+
case .remoteTelegram: return "paperplane"
|
|
21
|
+
case .diagnostics: return "stethoscope"
|
|
22
|
+
case .settings: return "gearshape"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
11
25
|
}
|
|
@@ -124,7 +124,7 @@ final class StatusItemController: NSObject, NSMenuDelegate {
|
|
|
124
124
|
else if operationFailed { icon = .warning; summary = "Needs attention — last operation failed" }
|
|
125
125
|
else if actionRequired || notificationAuthorizationDenied || pendingCount > 0 {
|
|
126
126
|
icon = .attention
|
|
127
|
-
summary =
|
|
127
|
+
summary = pendingCount > 0 ? "Input or approval required" : notificationAuthorizationDenied ? "Notifications require attention" : "Input or approval required"
|
|
128
128
|
}
|
|
129
129
|
else if sksUpdate || codexUpdate {
|
|
130
130
|
icon = .updateAvailable
|
|
@@ -231,7 +231,7 @@ final class StatusItemController: NSObject, NSMenuDelegate {
|
|
|
231
231
|
if update["source"] as? String == "disabled" { return false }
|
|
232
232
|
guard update["schema"] as? String == "sks.update-status.v3",
|
|
233
233
|
let expiresAt = update["expires_at"] as? String,
|
|
234
|
-
let expiry =
|
|
234
|
+
let expiry = SKSTimestamp.date(from: expiresAt) else { return true }
|
|
235
235
|
return expiry <= now
|
|
236
236
|
}
|
|
237
237
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import Cocoa
|
|
2
2
|
|
|
3
3
|
final class UpdatesViewController: NSViewController, ControlCenterPage {
|
|
4
|
-
private static let controlCenterUpdateEnvironment = [
|
|
4
|
+
private static let controlCenterUpdateEnvironment = [
|
|
5
|
+
"SKS_UPDATE_DEFER_MENUBAR_RESTART": "1",
|
|
6
|
+
"SKS_SKIP_SKS_MENUBAR_LAUNCH": "1"
|
|
7
|
+
]
|
|
5
8
|
private let processClient: ProcessClient
|
|
6
9
|
private let operations: OperationCoordinator
|
|
7
10
|
private let notifications: NotificationCoordinator
|
|
@@ -31,15 +34,17 @@ final class UpdatesViewController: NSViewController, ControlCenterPage {
|
|
|
31
34
|
checkButton = NativeView.button("Check Now", target: self, action: #selector(checkNow))
|
|
32
35
|
codexUpdateButton = NativeView.button("Update Codex CLI", target: self, action: #selector(updateCodexCLI))
|
|
33
36
|
codexUpdateButton.setAccessibilityHelp("Update the operator Codex CLI using its verified installation method.")
|
|
34
|
-
reviewButton =
|
|
37
|
+
reviewButton = ControlKit.primaryButton("Review and Update", target: self, action: #selector(reviewAndUpdate))
|
|
38
|
+
reviewButton.setAccessibilityHelp("Review the staged update first, then confirm before anything is installed.")
|
|
35
39
|
codexUpdateStatus.setAccessibilityLabel("Codex CLI update result")
|
|
36
40
|
let buttons = NSStackView(views: [checkButton, codexUpdateButton, reviewButton, progress])
|
|
37
41
|
buttons.orientation = .horizontal; buttons.spacing = 8
|
|
38
|
-
view = NativeView.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
NativeView.
|
|
42
|
+
view = NativeView.page([
|
|
43
|
+
ControlKit.header("Updates", "SKS, Codex CLI, and Menu Bar status share one local snapshot. Prefer the latest Codex CLI; SKS stays version-agnostic and capability-gates features. Network refresh only runs on demand or after expiry."),
|
|
44
|
+
buttons,
|
|
45
|
+
NativeView.card(title: "Status", subtitle: "Versions from the shared local snapshot.", views: [status, codexUpdateStatus]),
|
|
46
|
+
NativeView.card(title: "Progress", subtitle: "Authoritative stage checklist from the update receipt.", views: [stageStatus]),
|
|
47
|
+
NativeView.card(title: "Recovery", subtitle: "Rollback guidance and the previous Menu Bar app remain available if final verification fails. The update receipt records the exact recovery command and stage state.", views: [remediation])
|
|
43
48
|
])
|
|
44
49
|
loadCached()
|
|
45
50
|
}
|
|
@@ -295,7 +300,7 @@ final class UpdatesViewController: NSViewController, ControlCenterPage {
|
|
|
295
300
|
let menu = json["menubar"] as? [String: Any]
|
|
296
301
|
let generatedAt = json["generated_at"] as? String ?? "unknown"
|
|
297
302
|
let expiresAt = json["expires_at"] as? String ?? "unknown"
|
|
298
|
-
let expired =
|
|
303
|
+
let expired = SKSTimestamp.date(from: expiresAt).map { $0 <= Date() } ?? true
|
|
299
304
|
status.stringValue = [
|
|
300
305
|
"SKS \(sks?["current"] as? String ?? "unknown") → \(sks?["latest"] as? String ?? "unknown") · Codex CLI \(codex?["current"] as? String ?? "unknown") → \(codex?["latest"] as? String ?? "unknown")",
|
|
301
306
|
"Menu Bar expected \(menu?["expected_version"] as? String ?? AppRuntime.packageVersion) · installed \(menu?["installed_version"] as? String ?? "unknown") · rebuild \(menu?["rebuild_required"] as? Bool == true ? "required" : "not required")",
|
|
@@ -334,8 +339,7 @@ final class UpdatesViewController: NSViewController, ControlCenterPage {
|
|
|
334
339
|
|
|
335
340
|
private func receipt(_ receipt: UpdateOperationReceiptSnapshot, belongsTo operation: OperationSnapshot) -> Bool {
|
|
336
341
|
guard receipt.kind == "update" || receipt.kind == "rollback" else { return false }
|
|
337
|
-
let
|
|
338
|
-
guard let receiptDate = parser.date(from: receipt.startedAt), let operationDate = parser.date(from: operation.startedAt) else { return receipt.startedAt >= operation.startedAt }
|
|
342
|
+
guard let receiptDate = SKSTimestamp.date(from: receipt.startedAt), let operationDate = SKSTimestamp.date(from: operation.startedAt) else { return receipt.startedAt >= operation.startedAt }
|
|
339
343
|
return receiptDate >= operationDate.addingTimeInterval(-1)
|
|
340
344
|
}
|
|
341
345
|
|
|
@@ -362,11 +366,11 @@ final class UpdatesViewController: NSViewController, ControlCenterPage {
|
|
|
362
366
|
if id == current { return "● \(id) — running" }
|
|
363
367
|
return "○ \(id)"
|
|
364
368
|
}
|
|
365
|
-
return "Update stages (
|
|
369
|
+
return "Update stages (\(OperationCoordinator.updateStageOrder.count)):\n" + rows.joined(separator: "\n")
|
|
366
370
|
}
|
|
367
371
|
|
|
368
372
|
private func formatTimestamp(_ value: String) -> String {
|
|
369
|
-
guard let date =
|
|
373
|
+
guard let date = SKSTimestamp.date(from: value) else { return value }
|
|
370
374
|
let formatter = DateFormatter()
|
|
371
375
|
formatter.dateStyle = .medium
|
|
372
376
|
formatter.timeStyle = .medium
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { analyzeAgentGuidance } from '../core/agent-guidance/directive-registry.js';
|
|
5
|
+
import { renderInitDeepAgentGuidance } from '../core/codex-app/codex-init-deep.js';
|
|
6
|
+
import { writeJsonAtomic } from '../core/fsx.js';
|
|
7
|
+
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
8
|
+
const files = renderInitDeepAgentGuidance([
|
|
9
|
+
{ score: 1, dir: '.', file_count: 120, languages: ['ts'], guidance: 'Use local source conventions and keep changes owner-scoped.' },
|
|
10
|
+
{ score: 1, dir: 'src/core', file_count: 79, languages: ['ts'], guidance: 'Use local source conventions and keep changes owner-scoped.' },
|
|
11
|
+
{ score: 1, dir: 'src/core/release', file_count: 47, languages: ['ts'], guidance: 'High-risk SKS runtime area; hydrate TriWiki/current source before edits.' },
|
|
12
|
+
{ score: 1, dir: 'src/cli', file_count: 27, languages: ['ts'], guidance: 'Use local source conventions and keep changes owner-scoped.' },
|
|
13
|
+
{ score: 1, dir: 'docs', file_count: 40, languages: ['md'], guidance: 'Use local source conventions and keep changes owner-scoped.' }
|
|
14
|
+
]);
|
|
15
|
+
const report = analyzeAgentGuidance(files, { sharedScopePath: 'ROOT' });
|
|
16
|
+
const output = path.join(root, '.sneakoscope', 'reports', 'agent-guidance-dedup.json');
|
|
17
|
+
await writeJsonAtomic(output, report);
|
|
18
|
+
console.log(JSON.stringify(report, null, 2));
|
|
19
|
+
if (!report.ok) {
|
|
20
|
+
console.error('Agent guidance carries directives that say nothing new.');
|
|
21
|
+
console.error('State a directive once, at the broadest scope that covers its readers, and prefer the canonical principle over its restatements.');
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
}
|
|
@@ -3,7 +3,7 @@ import fs from 'node:fs/promises';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { appendAgentMessage, readAgentMessageBus } from '../core/agents/agent-message-bus.js';
|
|
6
|
-
import { assertGate, emitGate } from './
|
|
6
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
7
7
|
const missionId = 'M-agent-message-reader';
|
|
8
8
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-agent-message-'));
|
|
9
9
|
const agents = path.join(root, '.sneakoscope', 'missions', missionId, 'agents');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, requireContains, root, runSksJson } from './
|
|
4
|
+
import { assertGate, emitGate, requireContains, root, runSksJson } from './real-execution-check-lib.js';
|
|
5
5
|
const requiredGates = [
|
|
6
6
|
'ux-review:run-wires-imagegen',
|
|
7
7
|
'ux-review:extract-wires-real-extractor',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
4
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
5
5
|
const detector = await importDist('core/codex/appshots-detector.js');
|
|
6
6
|
const evidenceMod = await importDist('core/source-intelligence/appshots-evidence.js');
|
|
7
7
|
const fixture = writeAppshotFixture();
|
|
@@ -33,7 +33,6 @@ if (architectureBudgets.schema !== 'sks.architecture-budgets.v1')
|
|
|
33
33
|
if (architectureBudgets.waiver_policy?.mode !== 'shrink-only')
|
|
34
34
|
issues.push('architecture waivers must be shrink-only');
|
|
35
35
|
for (const [id, maxLines] of [
|
|
36
|
-
['menubar-facade', 80],
|
|
37
36
|
['menubar-typescript', 450],
|
|
38
37
|
['menubar-swift', 500],
|
|
39
38
|
['menubar-app-delegate', 250],
|
|
@@ -52,7 +51,7 @@ assertIncludes('src/scripts/check-architecture.ts', "args.includes('--strict-all
|
|
|
52
51
|
assertIncludes('src/scripts/check-architecture.ts', "'config', 'architecture-budgets.v1.json'", 'architecture check must load the budget SSOT');
|
|
53
52
|
assertIncludes('src/scripts/check-architecture.ts', 'shrink-only ceiling', 'architecture check must enforce shrink-only waivers');
|
|
54
53
|
assertIncludes('docs/architecture.md', '`config/architecture-budgets.v1.json`', 'architecture docs must name the budget SSOT');
|
|
55
|
-
for (const token of ['`
|
|
54
|
+
for (const token of ['`250`', '`450`', '`500`', '`900`', '`1200`', '`1800`', '`3000`', '`--strict-all`', 'shrink-only']) {
|
|
56
55
|
assertIncludes('docs/architecture.md', token, `architecture docs missing ${token}`);
|
|
57
56
|
}
|
|
58
57
|
assertIncludes('src/core/pipeline-internals/runtime-core.ts', "'ssot_guard'");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
1
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
2
2
|
const graphMod = await importDist('core/triwiki/triwiki-affected-graph.js');
|
|
3
3
|
const certMod = await importDist('core/triwiki/triwiki-sla-certificate.js');
|
|
4
4
|
const graph = graphMod.computeTriWikiAffectedGraph({ root, changedFiles: ['src/core/triwiki/triwiki-proof-bank.ts'], tier: 'affected' });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import { spawnSync } from 'node:child_process';
|
|
4
|
-
import { assertGate, emitGate, root } from './
|
|
4
|
+
import { assertGate, emitGate, root } from './gate-lib.js';
|
|
5
5
|
import { PACKAGE_VERSION } from '../core/version.js';
|
|
6
6
|
const executed = [
|
|
7
7
|
['review'],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist, root } from './
|
|
5
|
+
import { assertGate, emitGate, importDist, root } from './gate-lib.js';
|
|
6
6
|
const runner = await importDist('core/agents/agent-runner-codex-exec.js');
|
|
7
7
|
const compat = await importDist('core/codex/codex-0-134-compat.js');
|
|
8
8
|
const history = await importDist('core/source-intelligence/codex-history-search.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
process.env.SKS_CODEX_0138_FAKE = '1';
|
|
7
7
|
const mod = await importDist('core/codex-control/codex-0138-capability.js');
|
|
8
8
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'sks-codex-0138-cap-'));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, importDist } from './
|
|
2
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
3
3
|
process.env.SKS_CODEX_0138_FAKE = '1';
|
|
4
4
|
process.env.SKS_CODEX_VERSION_FAKE = 'codex-cli 0.138.0';
|
|
5
5
|
const mod = await importDist('core/codex-control/codex-0138-capability.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate, importDist } from './
|
|
5
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
6
6
|
import { writeTextAtomic } from '../core/fsx.js';
|
|
7
7
|
process.env.SKS_CODEX_0138_FAKE = '1';
|
|
8
8
|
const mod = await importDist('core/doctor/codex-0138-doctor.js');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, importDist } from './
|
|
2
|
+
import { assertGate, emitGate, importDist } from './gate-lib.js';
|
|
3
3
|
process.env.SKS_CODEX_0138_FAKE = '1';
|
|
4
4
|
process.env.SKS_CODEX_VERSION_FAKE = 'codex-cli 0.138.0';
|
|
5
5
|
process.env.SKS_CODEX_0138_PROBE = '1';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, readText } from './
|
|
2
|
+
import { assertGate, emitGate, readText } from './gate-lib.js';
|
|
3
3
|
import { createCodexAppServerV2Client, currentTimeResponse } from '../core/codex-control/codex-app-server-v2-client.js';
|
|
4
4
|
import { CURRENT_CODEX_RELEASE_MANIFEST } from '../core/codex-compat/codex-release-manifest.js';
|
|
5
5
|
const requireReal = process.argv.includes('--require-real') || process.env.SKS_REQUIRE_CODEX_0144_APP_SERVER === '1';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate } from './
|
|
2
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
3
3
|
import { CURRENT_CODEX_RELEASE_MANIFEST } from '../core/codex-compat/codex-release-manifest.js';
|
|
4
4
|
import { compareSemverLike } from '../core/codex-compat/codex-version-policy.js';
|
|
5
5
|
import { resolveOfficialCodexPackageRuntime } from '../core/codex-runtime/resolve-codex-runtime.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate } from './
|
|
2
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
3
3
|
import { CODEX_0144_FEATURE_KEYS, detectCodex0144Capability, writeCodex0144CapabilityArtifacts } from '../core/codex-control/codex-0144-capability.js';
|
|
4
4
|
const requireReal = process.argv.includes('--require-real') || process.env.SKS_REQUIRE_CODEX_0144 === '1';
|
|
5
5
|
if (!requireReal)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { emitGate, importDist, root } from './
|
|
2
|
+
import { emitGate, importDist, root } from './gate-lib.js';
|
|
3
3
|
const args = process.argv.slice(2);
|
|
4
4
|
const requireReal = args.includes('--require-real');
|
|
5
5
|
const allowNetwork = args.includes('--allow-network');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate, readJson, root } from './
|
|
2
|
+
import { assertGate, emitGate, readJson, root } from './gate-lib.js';
|
|
3
3
|
import { codexReleaseManifestParity } from '../core/codex-compat/codex-release-manifest.js';
|
|
4
4
|
import { detectCodex0144Capability } from '../core/codex-control/codex-0144-capability.js';
|
|
5
5
|
const parity = await codexReleaseManifestParity(root);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { assertGate, emitGate } from './
|
|
2
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
3
3
|
import { buildCodexExecutionPolicy } from '../core/codex-control/codex-sdk-config-policy.js';
|
|
4
4
|
import { buildCodexSdkEnv } from '../core/codex-control/codex-sdk-env-policy.js';
|
|
5
5
|
process.env.AWS_SECRET_ACCESS_KEY = 'fixture-secret-aws';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fsp from 'node:fs/promises';
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import { assertGate, emitGate } from './
|
|
5
|
+
import { assertGate, emitGate } from './gate-lib.js';
|
|
6
6
|
import { readCodexThreadRegistry, recordCodexThread } from '../core/codex-control/codex-thread-registry.js';
|
|
7
7
|
const tmp = await fsp.mkdtemp(path.join(os.tmpdir(), 'sks-codex-0144-thread-store-'));
|
|
8
8
|
try {
|