sneakoscope 10.3.10 → 10.5.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 +12 -5
- package/config/skills-hash-ledger.v1.json +4 -2
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/bin/fast-inline.js +1 -2
- package/dist/cli/codex-app-command.js +1 -1
- package/dist/cli/feature-commands.js +1 -4
- package/dist/cli/global-mode-router.js +0 -16
- package/dist/commands/codex-native.js +1 -7
- package/dist/commands/codex.js +5 -6
- package/dist/commands/doctor-console.js +1 -11
- package/dist/commands/doctor-helpers.js +2 -20
- package/dist/commands/doctor.js +0 -5
- package/dist/config/skills-manifest.json +8 -6
- package/dist/core/agents/agent-effort-policy.js +1 -1
- package/dist/core/agents/native-cli-worker-runtime.js +0 -28
- package/dist/core/agents/native-worker-backend-router.js +2 -10
- package/dist/core/auto-review.js +3 -2
- package/dist/core/code-structure.js +0 -1
- package/dist/core/codex/codex-cli-syntax-builder.js +2 -1
- package/dist/core/codex/codex-cli-update.js +11 -170
- package/dist/core/codex/codex-config-toml.js +2 -2
- package/dist/core/codex/codex-feature-flags.js +2 -10
- package/dist/core/codex/codex-permission-profiles.js +0 -39
- package/dist/core/codex/codex-service-tier.js +4 -0
- package/dist/core/codex-adapter.js +1 -2
- package/dist/core/codex-app/codex-agent-role-sync.js +1 -35
- package/dist/core/codex-app/codex-app-execution-profile.js +2 -5
- package/dist/core/codex-app.js +13 -54
- package/dist/core/codex-compat/codex-compat-report.js +4 -6
- package/dist/core/codex-compat/codex-hook-output-builders.js +3 -0
- package/dist/core/codex-compat/codex-runtime-contract.js +4 -43
- package/dist/core/codex-compat/codex-version-policy.js +29 -67
- package/dist/core/codex-compat/codex-version.js +1 -4
- package/dist/core/codex-control/codex-current-app-capability.js +7 -66
- package/dist/core/codex-control/codex-current-capability.js +32 -140
- package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
- package/dist/core/codex-exec-output-schema.js +7 -119
- package/dist/core/codex-lb/codex-lb-env.js +0 -19
- package/dist/core/codex-native/codex-native-feature-broker.js +18 -99
- package/dist/core/codex-native/codex-native-feature-matrix.js +2 -12
- package/dist/core/codex-native/codex-native-harness-compat.js +1 -4
- package/dist/core/codex-native/codex-native-invocation-router.js +2 -10
- package/dist/core/codex-native/core-skill-manifest.js +3 -3
- package/dist/core/codex-plugins/codex-plugin-json.js +20 -89
- package/dist/core/codex-plugins/codex-plugin-repair.js +0 -4
- package/dist/core/codex-runtime/codex-desktop-config-policy.js +7 -50
- package/dist/core/commands/command-utils.js +0 -10
- package/dist/core/commands/mad-sks-command.js +2 -10
- package/dist/core/commands/qa-loop-command.js +1 -1
- package/dist/core/commands/research-command.js +1 -3
- package/dist/core/commands/review-command.js +5 -25
- package/dist/core/decision-contract.js +0 -1
- package/dist/core/dfix.js +0 -102
- package/dist/core/doctor/browser-use-repair.js +3 -48
- package/dist/core/doctor/codex-config-syntax-repair.js +15 -29
- package/dist/core/doctor/codex-current-app-doctor.js +0 -9
- package/dist/core/doctor/computer-use-repair.js +1 -33
- package/dist/core/doctor/doctor-codex-startup-repair.js +2 -8
- package/dist/core/doctor/doctor-readiness-matrix.js +0 -6
- package/dist/core/doctor/imagegen-repair.js +2 -28
- package/dist/core/doctor/retired-managed-residue-artifacts.js +2 -1
- package/dist/core/doctor/retired-managed-residue-runtime.js +27 -0
- package/dist/core/harness-guard.js +123 -22
- package/dist/core/hooks-runtime/hook-context.js +2 -10
- package/dist/core/hooks-runtime/hook-io.js +3 -3
- package/dist/core/hooks-runtime/jev-spawn-routing.js +8 -1
- package/dist/core/hooks-runtime/jev-turn-plan.js +15 -3
- package/dist/core/hooks-runtime/official-subagent-lifecycle.js +24 -10
- package/dist/core/hooks-runtime/parent-orchestration-gate.js +11 -24
- package/dist/core/hooks-runtime/shell-tool-name.js +1 -0
- package/dist/core/hooks-runtime/subagent-context.js +10 -0
- package/dist/core/hooks-runtime/subagent-spawn-policy.js +1 -1
- package/dist/core/hooks-runtime.js +25 -21
- package/dist/core/image-ux-review.js +2 -4
- package/dist/core/init/skills.js +2 -2
- package/dist/core/init.js +12 -102
- package/dist/core/loops/loop-artifacts.js +2 -59
- package/dist/core/loops/loop-schema.js +1 -62
- package/dist/core/mad-sks/sql-plane/operation-store.js +5 -1
- package/dist/core/pipeline-internals/runtime-core.js +1 -12
- package/dist/core/pipeline.js +1 -5
- package/dist/core/preflight/parallel-preflight-engine.js +2 -1
- package/dist/core/proof/evidence-collector.js +0 -2
- package/dist/core/provider/model-router.js +4 -9
- package/dist/core/qa-loop.js +1 -4
- package/dist/core/release/canonical-test-proof.js +0 -1
- package/dist/core/release/gate-affected-globs.js +0 -1
- package/dist/core/release/gate-pack-manifest.js +0 -4
- package/dist/core/release/release-authorization-snapshot.js +2 -2
- package/dist/core/release/release-gate-contract.js +0 -1
- package/dist/core/release/release-real-contract.js +0 -1
- package/dist/core/release/runtime-script-pack-closure.js +3 -5
- package/dist/core/research/research-plan-markdown.js +1 -1
- package/dist/core/research.js +0 -1
- package/dist/core/routes.js +33 -18
- package/dist/core/runtime/task-profile.js +3 -0
- package/dist/core/rust-accelerator.js +1 -1
- package/dist/core/safety/ssot-authority-inventory.js +0 -1
- package/dist/core/skills/core-skill-deployment.js +1 -18
- package/dist/core/skills/core-skill-types.js +0 -5
- package/dist/core/subagents/child-thread-activity.js +37 -0
- package/dist/core/subagents/naruto-help-contract.js +1 -1
- package/dist/core/subagents/official-subagent-config.js +1 -11
- package/dist/core/subagents/official-subagent-prompt.js +1 -1
- package/dist/core/subagents/official-subagent-runner.js +5 -10
- package/dist/core/subagents/subagent-evidence.js +5 -3
- package/dist/core/subagents/triwiki-attention.js +0 -112
- package/dist/core/subagents/wave-lifecycle.js +10 -28
- package/dist/core/triwiki/context-graph/compiler/cache-key.js +0 -1
- package/dist/core/triwiki/context-graph/extractors/topology/gates.js +1 -2
- package/dist/core/triwiki/triwiki-module-card.js +0 -2
- package/dist/core/update/update-migration-state/fast-mode-config.js +2 -2
- package/dist/core/version-manager.js +0 -6
- package/dist/core/version.js +1 -1
- package/dist/scripts/codex-app-handoff-check.js +0 -1
- package/dist/scripts/codex-app-handoff-launch-check.js +0 -1
- package/dist/scripts/codex-current-app-server-v2-check.js +13 -5
- package/dist/scripts/codex-current-binary-identity-check.js +1 -1
- package/dist/scripts/codex-current-capability-check.js +4 -9
- package/dist/scripts/codex-native-agent-role-content-check.js +2 -2
- package/dist/scripts/codex-native-gate-lib.js +16 -116
- package/dist/scripts/codex-native-runtime-e2e-fixture.js +2 -15
- package/dist/scripts/codex-plugin-app-template-policy-check.js +0 -1
- package/dist/scripts/context-graph-check.js +1 -1
- package/dist/scripts/docs-truthfulness-check.js +0 -1
- package/dist/scripts/fast-codex-service-tier-proof-check.js +1 -1
- package/dist/scripts/goal-artifact-compat-check.js +7 -2
- package/dist/scripts/harness-benchmark-check.js +0 -28
- package/dist/scripts/mcp-plugin-inventory-check.js +0 -1
- package/dist/scripts/naruto-ssot-routing-check.js +4 -2
- package/dist/scripts/packlist-performance-check.js +1 -1
- package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +0 -2
- package/dist/scripts/pipeline-codex-native-image-routing-real-blackbox.js +0 -1
- package/dist/scripts/pipeline-codex-native-qa-routing-real-blackbox.js +0 -1
- package/dist/scripts/pipeline-codex-native-research-routing-real-blackbox.js +0 -1
- package/dist/scripts/release-metadata-check.js +5 -22
- package/dist/scripts/release-parallel-speed-budget-check.js +1 -1
- package/dist/scripts/release-real-check.js +0 -1
- package/dist/scripts/runtime-domain-gate-lib.js +2 -28
- package/dist/scripts/typed-routing-gate-lib.js +17 -61
- package/package.json +3 -8
- package/release-gates.v2.json +6 -132
- package/runtime-required-scripts.json +0 -15
- package/dist/core/architecture-hardening/contracts/contracts.js +0 -253
- package/dist/core/architecture-hardening/state/state-service.js +0 -191
- package/dist/core/codex-app/codex-agent-type-probe.js +0 -228
- package/dist/core/codex-app/mcp-manager.js +0 -71
- package/dist/core/codex-compat/codex-capability-matrix.js +0 -199
- package/dist/core/codex-compat/codex-hook-output-normalizer.js +0 -45
- package/dist/core/codex-control/codex-current-collab-agent-real-probe.js +0 -65
- package/dist/core/codex-control/codex-current-core-capability.js +0 -163
- package/dist/core/codex-control/codex-current-core-native-exec.js +0 -25
- package/dist/core/codex-control/codex-current-core-probe-runner.js +0 -191
- package/dist/core/codex-control/codex-current-core-real-probes.js +0 -88
- package/dist/core/codex-control/codex-current-doctor-real-probe.js +0 -69
- package/dist/core/codex-control/codex-current-feature-capability.js +0 -124
- package/dist/core/codex-control/codex-current-feature-probes.js +0 -190
- package/dist/core/codex-control/codex-current-image-path-real-probe.js +0 -114
- package/dist/core/codex-control/codex-current-plugin-real-probes.js +0 -118
- package/dist/core/codex-control/codex-current-rich-schema-real-probe.js +0 -42
- package/dist/core/codex-control/codex-current-sandbox-real-probe.js +0 -104
- package/dist/core/codex-control/codex-current-usage-parser.js +0 -80
- package/dist/core/codex-control/codex-current-web-search-probe.js +0 -90
- package/dist/core/codex-control/codex-tool-schema-fixtures.js +0 -56
- package/dist/core/codex-lb/probes/cli-image-tool-probe.js +0 -203
- package/dist/core/codex-lb-circuit.js +0 -126
- package/dist/core/codex-native/codex-native-pattern-analysis.js +0 -66
- package/dist/core/codex-native/codex-native-reference-cache.js +0 -95
- package/dist/core/codex-native/codex-native-reference-evidence.js +0 -1
- package/dist/core/codex-native/codex-native-reference-source.js +0 -146
- package/dist/core/codex-native/codex-native-rename-map.js +0 -24
- package/dist/core/config/managed-config-merge.js +0 -153
- package/dist/core/evidence/v2/evidence-key.js +0 -132
- package/dist/core/loops/loop-checkpoint.js +0 -18
- package/dist/core/loops/loop-concurrency-budget.js +0 -78
- package/dist/core/loops/loop-decomposer.js +0 -55
- package/dist/core/loops/loop-final-arbiter-contract.js +0 -27
- package/dist/core/loops/loop-finalizer.js +0 -75
- package/dist/core/loops/loop-fixture-policy.js +0 -57
- package/dist/core/loops/loop-gate-ladder.js +0 -11
- package/dist/core/loops/loop-gate-registry.js +0 -95
- package/dist/core/loops/loop-gate-runner.js +0 -278
- package/dist/core/loops/loop-gate-selector.js +0 -49
- package/dist/core/loops/loop-gpt-final-arbiter.js +0 -79
- package/dist/core/loops/loop-integration-merge.js +0 -79
- package/dist/core/loops/loop-interrupt-registry.js +0 -117
- package/dist/core/loops/loop-lease.js +0 -87
- package/dist/core/loops/loop-merge-strategy.js +0 -104
- package/dist/core/loops/loop-mutation-ledger.js +0 -102
- package/dist/core/loops/loop-owner-inference.js +0 -37
- package/dist/core/loops/loop-owner-ledger.js +0 -1
- package/dist/core/loops/loop-planner.js +0 -199
- package/dist/core/loops/loop-proof-summary.js +0 -9
- package/dist/core/loops/loop-proof.js +0 -1
- package/dist/core/loops/loop-risk-classifier.js +0 -33
- package/dist/core/loops/loop-runtime-control.js +0 -26
- package/dist/core/loops/loop-runtime.js +0 -327
- package/dist/core/loops/loop-scheduler.js +0 -73
- package/dist/core/loops/loop-side-effect-scanner.js +0 -87
- package/dist/core/loops/loop-state.js +0 -60
- package/dist/core/loops/loop-worker-prompts.js +0 -44
- package/dist/core/loops/loop-worker-runtime.js +0 -306
- package/dist/core/loops/loop-worktree-runtime.js +0 -139
- package/dist/core/naruto/naruto-active-pool.js +0 -144
- package/dist/core/naruto/naruto-generation-scheduler.js +0 -17
- package/dist/core/naruto/naruto-loop-mesh.js +0 -45
- package/dist/core/naruto/naruto-loop-worker-router.js +0 -44
- package/dist/core/naruto/naruto-parallel-patch-apply.js +0 -78
- package/dist/core/naruto/naruto-patch-transaction-batch.js +0 -41
- package/dist/core/naruto/naruto-real-write-proof.js +0 -80
- package/dist/core/naruto/naruto-role-policy.js +0 -33
- package/dist/core/naruto/naruto-work-graph.js +0 -281
- package/dist/core/naruto/naruto-write-e2e.js +0 -500
- package/dist/core/observability/architecture-hardening/safe-projection.js +0 -65
- package/dist/core/pipeline/active-context.js +0 -1
- package/dist/core/pipeline/agent-stage-policy.js +0 -1
- package/dist/core/pipeline/pipeline-plan-writer.js +0 -1
- package/dist/core/pipeline/plan-schema.js +0 -1
- package/dist/core/pipeline/prompt-context-answer.js +0 -1
- package/dist/core/pipeline/prompt-context-computer-use.js +0 -1
- package/dist/core/pipeline/prompt-context-dfix.js +0 -1
- package/dist/core/pipeline/prompt-context.js +0 -1
- package/dist/core/pipeline/route-prep-db.js +0 -1
- package/dist/core/pipeline/route-prep-gx.js +0 -1
- package/dist/core/pipeline/route-prep-image-ux.js +0 -1
- package/dist/core/pipeline/route-prep-ppt.js +0 -1
- package/dist/core/pipeline/route-prep-qa.js +0 -1
- package/dist/core/pipeline/route-prep-research.js +0 -1
- package/dist/core/pipeline/route-prep.js +0 -1
- package/dist/core/pipeline/stage-policy.js +0 -1
- package/dist/core/pipeline/stop-gate-context7.js +0 -1
- package/dist/core/pipeline/stop-gate-proof.js +0 -1
- package/dist/core/pipeline/stop-gate-subagents.js +0 -1
- package/dist/core/pipeline/stop-gate.js +0 -1
- package/dist/core/pipeline/validation.js +0 -1
- package/dist/core/providers/openrouter/openrouter-request-cache.js +0 -73
- package/dist/core/providers/openrouter/openrouter-stream.js +0 -201
- package/dist/core/python-tools/python-tool-runner.js +0 -32
- package/dist/core/routes/model-mode-router.js +0 -33
- package/dist/core/runtime/progress-recovery/progress-recovery.js +0 -89
- package/dist/core/skills/core-rollout-trace.js +0 -22
- package/dist/core/skills/core-skill-epoch.js +0 -63
- package/dist/core/skills/core-skill-meta-update.js +0 -17
- package/dist/core/skills/core-skill-patch-apply.js +0 -92
- package/dist/core/skills/core-skill-patch.js +0 -104
- package/dist/core/skills/core-skill-reflection.js +0 -77
- package/dist/core/skills/core-skill-scorer.js +0 -70
- package/dist/core/skills/core-skill-trainer.js +0 -91
- package/dist/core/skills/core-skill-validation.js +0 -24
- package/dist/core/skills/rejected-skill-patch-buffer.js +0 -29
- package/dist/core/source-intelligence/codex-history-search.js +0 -70
- package/dist/core/stop-gate/stop-gate-writer.js +0 -139
- package/dist/core/subagents/terminology.js +0 -20
- package/dist/scripts/codex-agent-type-routing-check.js +0 -3
- package/dist/scripts/codex-current-core-real-probes-check.js +0 -49
- package/dist/scripts/core-skill-heldout-validation-check.js +0 -37
- package/dist/scripts/core-skill-no-inference-optimizer-check.js +0 -63
- package/dist/scripts/core-skill-patch-check.js +0 -67
- package/dist/scripts/loop-directive-check-lib.js +0 -455
- package/dist/scripts/loop-integration-finalizer-check.js +0 -2
- package/dist/scripts/loop-worker-fixture-child.js +0 -52
- package/dist/scripts/managed-config-merge-check.js +0 -23
- package/dist/scripts/pipeline-codex-native-loop-routing-check.js +0 -3
- package/dist/scripts/pipeline-codex-native-loop-routing-real-blackbox.js +0 -73
- package/infra-harness-gates.json +0 -4
- package/schemas/codex-release-manifest.schema.json +0 -44
- package/schemas/doctor-status-v2.schema.json +0 -42
- package/schemas/loops/loop-node.schema.json +0 -21
- package/schemas/loops/loop-plan.schema.json +0 -21
- package/schemas/loops/loop-proof.schema.json +0 -20
- package/schemas/loops/loop-state.schema.json +0 -19
- package/schemas/skills/core-skill-patch.schema.json +0 -39
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
Sneakoscope Codex (`sks`) is an open-source trust layer for Codex CLI and ChatGPT Desktop. It coordinates bounded AI coding agents, records machine-verifiable evidence, preserves project memory, and blocks release claims that are not supported by current tests or artifacts. Search visibility outcomes are measured separately; SKS does not promise rankings or traffic.
|
|
17
17
|
<!-- END SKS SEARCH VISIBILITY MARKETING -->
|
|
18
18
|
|
|
19
|
-
Current package: **SKS 10.
|
|
19
|
+
Current package: **SKS 10.5.0**. Install the latest stable release from npm.
|
|
20
20
|
|
|
21
21
|
[Quick start](#install-in-one-command) · [Commands](#everyday-commands) · [SKS Center](#sks-center-macos) · [Documentation](#documentation) · [Changelog](CHANGELOG.md)
|
|
22
22
|
|
|
@@ -170,9 +170,16 @@ sidecars, and the Jev choices.
|
|
|
170
170
|
|
|
171
171
|
## Naruto workflow
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
Naruto is for work you ask to split, not the default for implementation. A bug
|
|
174
|
+
fix, a test, a refactor or config change, or a review is the main agent's own
|
|
175
|
+
job, the way Codex works by default: no mission, no subagent plan, no parent edit
|
|
176
|
+
gate. Naruto runs when you invoke `$sks-naruto`, pass `--agents N`, or ask for
|
|
177
|
+
subagents or parallel work in so many words, and, with Jev mode on, when Jev
|
|
178
|
+
judges that the task splits into independent parts (single is its default).
|
|
179
|
+
|
|
180
|
+
Inside Naruto the parent orchestrates: it decomposes the task, spawns a child for
|
|
181
|
+
each disjoint slice, waits, and owns integration and final verification. It does
|
|
182
|
+
not implement slices itself. The SKS PreToolUse hook denies parent source edits
|
|
176
183
|
until the first child starts and while children are still running. Children
|
|
177
184
|
receive bounded tasks and do not spawn children.
|
|
178
185
|
|
|
@@ -187,7 +194,7 @@ soon as Codex lists it:
|
|
|
187
194
|
| Exploration, large-context reads, and direct tool operation | context | medium | `gpt-6.1-sol` |
|
|
188
195
|
| Planning, review, debugging, and focused judgment | deep | max | `gpt-6-astra` |
|
|
189
196
|
|
|
190
|
-
With Jev mode on, Jev picks the tier for every spawn, every gated parent edit,
|
|
197
|
+
With Jev mode on, Jev picks the tier for every spawn that names no managed role (a managed role runs the tier pinned in its role file), every gated parent edit,
|
|
191
198
|
the plan, and the context, so the parent spends no time on those choices. It
|
|
192
199
|
also picks the pipeline for each prompt; an explicit SKS dollar command always
|
|
193
200
|
wins. A stored role-model preference on a current model wins in both modes.
|
|
@@ -335,14 +335,14 @@
|
|
|
335
335
|
{
|
|
336
336
|
"canonical_name": "sks-naruto",
|
|
337
337
|
"trusted_sha256": [
|
|
338
|
+
"26528b6b7d063c7cf0b5b9e996947d504cbc7ef4af976e480b5df3e6c7fcbac9",
|
|
339
|
+
"5ac4c3ea1d4478f12f55df3c3d6c4ab272a40f731de8aa659aee08cb8e517a8b",
|
|
338
340
|
"c88999663811a50d096b7cbb696fbea5b8f72707bcbf4a232bb07fe3a10cb2a6",
|
|
339
341
|
"b2eb207b2773ab1995ee6e113ba6f3b64de43389e76aef4a0f06d4845ff86223",
|
|
340
342
|
"65e19a5d16f486b13541048c239e828f8039bfc6e38bafd7949d9c936fe4b5b2",
|
|
341
343
|
"da43debf97f0b4a1583d8202a7306aca97ac97865accf9bca8f41d75c84a1cb9",
|
|
342
344
|
"b981bea4183376c6c0204941ad6c2e78782e2cdea4f8d25cc85630c609faaf95",
|
|
343
345
|
"5df9c9678eb68fd79ceb998ae7a52dd54dc92336ad5169e8a01acca89f76bd60",
|
|
344
|
-
"a1219f6dbad9c8c185953125ef0b8dccf081aa01efb8e8acaa543c6214ac049c",
|
|
345
|
-
"d0d5968e78ac25e1d3e588735de1ddbcf149cfb3165edebca5dec1ed7c7a5c46",
|
|
346
346
|
"49b5e3dcc1b537b49c2cf09e5b875cb16acb05c622b22798e265e64dacd8ac90"
|
|
347
347
|
]
|
|
348
348
|
},
|
|
@@ -388,6 +388,7 @@
|
|
|
388
388
|
{
|
|
389
389
|
"canonical_name": "sks-prompt-pipeline",
|
|
390
390
|
"trusted_sha256": [
|
|
391
|
+
"01b0d58e26d4493442041d1cd51b4a25ac15014be79b065a59520e21ef69a4b1",
|
|
391
392
|
"5e423981384fc3825c74327c4ca0fe09905a0dc81a533676c7e76ebb385348fc",
|
|
392
393
|
"f82a103e7962e416961add515d7b3e65df89848dec1fbb9319bd49d7f1dac982",
|
|
393
394
|
"93fd938dccd65d9b4d1dd140b60e1baedc627e7fcc54f9afd95eb2e44efd1143",
|
|
@@ -407,6 +408,7 @@
|
|
|
407
408
|
{
|
|
408
409
|
"canonical_name": "sks-reasoning-router",
|
|
409
410
|
"trusted_sha256": [
|
|
411
|
+
"2ec66071b1c021e8c2ddd8f1ecefd16502c8325adab2c3c804a9e8d4123b1a8d",
|
|
410
412
|
"b0f458caa1c3bd7bb7241a09b80fce5700aeb99b340e84c08a9b2b66bc875ba7",
|
|
411
413
|
"41e14e8d5b93d743096664869ee68c41c86e911b0bbc165bdcd10e4a45faa4b6",
|
|
412
414
|
"03d68436e568b3cee2bffc6ca58819019ca406f7b648ef4704e3465c7c83c114",
|
package/dist/bin/fast-inline.js
CHANGED
|
@@ -84,8 +84,7 @@ async function doctorJsonFastInline(input = {}) {
|
|
|
84
84
|
arg_warnings: [],
|
|
85
85
|
node: { ok: true, version: process.version },
|
|
86
86
|
runtime_readiness: {
|
|
87
|
-
hook_evidence_policy: 'unknown-do-not-count'
|
|
88
|
-
agent_role_strategy: 'message-role'
|
|
87
|
+
hook_evidence_policy: 'unknown-do-not-count'
|
|
89
88
|
},
|
|
90
89
|
codex: { bin: null, version: null, available: null, skipped: true, reason: 'fast_readonly_json' },
|
|
91
90
|
repair: {
|
|
@@ -38,7 +38,7 @@ function remoteControlHelp() {
|
|
|
38
38
|
'Usage: sks codex-app remote-control [--status|--check|--dry-run|--json] [-- <codex remote-control args>]',
|
|
39
39
|
'',
|
|
40
40
|
'Starts Codex CLI remote-control, the headless remotely controllable app-server entrypoint.',
|
|
41
|
-
'SKS only wraps the first-party command and refuses
|
|
41
|
+
'SKS only wraps the first-party command and refuses to run when the Codex CLI is missing instead of falling back to app-server internals.'
|
|
42
42
|
].join('\n');
|
|
43
43
|
}
|
|
44
44
|
function stripSeparator(args = []) {
|
|
@@ -280,8 +280,6 @@ async function hooksTrustReport(root) {
|
|
|
280
280
|
{ event: 'PreToolUse', command: 'sks hook pre-tool', writes: ['.sneakoscope/bus/tool-events.jsonl'], network: false, secret_policy: 'redacted', risk: 'medium' },
|
|
281
281
|
{ event: 'PermissionRequest', command: 'sks hook permission-request', writes: ['.sneakoscope/state'], network: false, secret_policy: 'redacted', risk: 'medium' },
|
|
282
282
|
{ event: 'PostToolUse', command: 'sks hook post-tool', writes: ['.sneakoscope/missions'], network: false, secret_policy: 'redacted', risk: 'medium' },
|
|
283
|
-
{ event: 'PreCompact', command: 'sks hook pre-compact', writes: ['.sneakoscope/state'], network: false, secret_policy: 'redacted', risk: 'low' },
|
|
284
|
-
{ event: 'PostCompact', command: 'sks hook post-compact', writes: ['.sneakoscope/state'], network: false, secret_policy: 'redacted', risk: 'low' },
|
|
285
283
|
{ event: 'UserPromptSubmit', command: 'sks hook user-prompt-submit', writes: ['.sneakoscope/missions'], network: false, secret_policy: 'redacted', risk: 'medium' },
|
|
286
284
|
{ event: 'SubagentStart', command: 'sks hook subagent-start', writes: ['.sneakoscope/missions'], network: false, secret_policy: 'redacted', risk: 'low' },
|
|
287
285
|
{ event: 'SubagentStop', command: 'sks hook subagent-stop', writes: ['.sneakoscope/missions'], network: false, secret_policy: 'redacted', risk: 'low' },
|
|
@@ -433,8 +431,7 @@ export function hooksExplainReport() {
|
|
|
433
431
|
'directory_rule_policy',
|
|
434
432
|
'db_safety_policy',
|
|
435
433
|
'visual_claim_source_policy',
|
|
436
|
-
'proof_required_policy'
|
|
437
|
-
'codex_lb_health_policy'
|
|
434
|
+
'proof_required_policy'
|
|
438
435
|
],
|
|
439
436
|
sources: [
|
|
440
437
|
{ title: 'OpenAI Codex Hooks', url: 'https://developers.openai.com/codex/hooks' },
|
|
@@ -19,13 +19,6 @@ const RETIRED_GLOBAL_EXECUTION_OPTION_NAMES = new Set([
|
|
|
19
19
|
'--require-tmux-smoke',
|
|
20
20
|
'--glm'
|
|
21
21
|
]);
|
|
22
|
-
export function detectGlobalMode(args = []) {
|
|
23
|
-
void args;
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
export function stripGlobalModeFlags(args) {
|
|
27
|
-
return args.filter((arg) => arg !== '--mad' && arg !== '--glm');
|
|
28
|
-
}
|
|
29
22
|
export function findRetiredGlobalExecutionArgumentErrors(args = []) {
|
|
30
23
|
const errors = [];
|
|
31
24
|
for (const value of args) {
|
|
@@ -37,12 +30,3 @@ export function findRetiredGlobalExecutionArgumentErrors(args = []) {
|
|
|
37
30
|
}
|
|
38
31
|
return [...new Set(errors)];
|
|
39
32
|
}
|
|
40
|
-
export function glmWithoutMadResult() {
|
|
41
|
-
return {
|
|
42
|
-
ok: false,
|
|
43
|
-
status: 'blocked',
|
|
44
|
-
mode: 'glm',
|
|
45
|
-
reason: 'glm_mad_removed',
|
|
46
|
-
hint: 'use sks bridge provider configure|validate|enable, sks bridge catalog sync, and sks bridge route set-default'
|
|
47
|
-
};
|
|
48
|
-
}
|
|
@@ -10,8 +10,6 @@ import { syncCodexSksSkills } from '../core/codex-app/codex-skill-sync.js';
|
|
|
10
10
|
import { buildCodexNativeFeatureMatrix } from '../core/codex-native/codex-native-feature-broker.js';
|
|
11
11
|
import { resolveCodexNativeInvocationPlan } from '../core/codex-native/codex-native-invocation-router.js';
|
|
12
12
|
import { buildCodexNativeInteropPolicy } from '../core/codex-native/codex-native-interop-policy.js';
|
|
13
|
-
import { analyzeCodexNativeReferenceSource } from '../core/codex-native/codex-native-reference-evidence.js';
|
|
14
|
-
import { writeCodexNativePatternAnalysis } from '../core/codex-native/codex-native-pattern-analysis.js';
|
|
15
13
|
import { repairCodexNativeManagedAssets } from '../core/codex-native/codex-native-repair-transaction.js';
|
|
16
14
|
export async function run(_command, args = []) {
|
|
17
15
|
const root = await sksRoot();
|
|
@@ -34,17 +32,13 @@ export async function run(_command, args = []) {
|
|
|
34
32
|
return printCodexNativeResult(args, await resolveCodexAppExecutionProfile({ root }));
|
|
35
33
|
if (action === 'interop-policy')
|
|
36
34
|
return printCodexNativeResult(args, await buildCodexNativeInteropPolicy({ root }));
|
|
37
|
-
if (action === 'reference-evidence')
|
|
38
|
-
return printCodexNativeResult(args, await analyzeCodexNativeReferenceSource({ root, writeReport: true }));
|
|
39
|
-
if (action === 'pattern-analysis')
|
|
40
|
-
return printCodexNativeResult(args, await writeCodexNativePatternAnalysis(root));
|
|
41
35
|
if (action === 'route' || action === 'invocation-plan') {
|
|
42
36
|
const route = readOption(args, '--route', '$Loop');
|
|
43
37
|
const desiredCapability = readOption(args, '--capability', 'agent-role');
|
|
44
38
|
const missionId = readOption(args, '--mission', null);
|
|
45
39
|
return printCodexNativeResult(args, await resolveCodexNativeInvocationPlan({ root, missionId, route, desiredCapability }));
|
|
46
40
|
}
|
|
47
|
-
console.error('Usage: sks codex-native status|feature-broker|harness-compat|skill-sync|agent-role-sync|init-deep|hook-lifecycle|execution-profile|interop-policy|
|
|
41
|
+
console.error('Usage: sks codex-native status|feature-broker|harness-compat|skill-sync|agent-role-sync|init-deep|hook-lifecycle|execution-profile|interop-policy|invocation-plan [--json]');
|
|
48
42
|
process.exitCode = 1;
|
|
49
43
|
}
|
|
50
44
|
async function maybeRepairThenReadOnlyMatrix(args = [], root, matrixFn) {
|
package/dist/commands/codex.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { flag
|
|
1
|
+
import { flag } from '../cli/args.js';
|
|
2
2
|
import { printJson } from '../cli/output.js';
|
|
3
3
|
import { codexCompatibilityReport, codexDoctorReport } from '../core/codex-compat/codex-compat-report.js';
|
|
4
4
|
import { codexVersionReport } from '../core/codex-compat/codex-version.js';
|
|
@@ -9,11 +9,10 @@ import { codexCliUpdateConsoleLines, inspectCodexCliUpdate, updateCodexCliNow }
|
|
|
9
9
|
export async function run(_command, args = []) {
|
|
10
10
|
const action = args[0] || 'compatibility';
|
|
11
11
|
if (action === 'compatibility' || action === 'compat') {
|
|
12
|
-
const
|
|
13
|
-
const result = await codexCompatibilityReport({ requiredBaseline, require: requiredBaseline });
|
|
12
|
+
const result = await codexCompatibilityReport();
|
|
14
13
|
if (flag(args, '--json'))
|
|
15
14
|
return printJson(result);
|
|
16
|
-
console.log(`Codex compatibility: ${result.ok ? result.status : 'blocked'} (${result.
|
|
15
|
+
console.log(`Codex compatibility: ${result.ok ? result.status : 'blocked'} (minimum ${result.min_version})`);
|
|
17
16
|
for (const warning of result.warnings || [])
|
|
18
17
|
console.log(`- ${warning}`);
|
|
19
18
|
if (!result.ok)
|
|
@@ -60,10 +59,10 @@ export async function run(_command, args = []) {
|
|
|
60
59
|
return;
|
|
61
60
|
}
|
|
62
61
|
if (action === 'current' || action === CURRENT_CODEX_RUNTIME_CONTRACT.targetTag) {
|
|
63
|
-
const result = await detectCodexCurrentCapability(
|
|
62
|
+
const result = await detectCodexCurrentCapability();
|
|
64
63
|
if (flag(args, '--json'))
|
|
65
64
|
return printJson(result);
|
|
66
|
-
console.log(`Codex ${CURRENT_CODEX_RUNTIME_CONTRACT.
|
|
65
|
+
console.log(`Codex ${CURRENT_CODEX_RUNTIME_CONTRACT.minVersion} compatibility: ${result.ok ? 'ok' : 'blocked'} (${result.probe_mode})`);
|
|
67
66
|
for (const blocker of result.blockers || [])
|
|
68
67
|
console.log(`- blocker: ${blocker}`);
|
|
69
68
|
for (const warning of result.warnings || [])
|
|
@@ -32,7 +32,6 @@ export function renderDoctorConsoleReport(result, extras) {
|
|
|
32
32
|
const codexCurrentAppDoctor = codexCurrentAppSection.doctor || {};
|
|
33
33
|
const pluginPolicy = codexCurrentAppSection.plugin_app_template_policy;
|
|
34
34
|
const desktopBridge = result.desktop_bridge || {};
|
|
35
|
-
const permissionProfiles = result.codex_permission_profiles || {};
|
|
36
35
|
const configRepair = repair.codex_config;
|
|
37
36
|
const migrationJournal = repair.migration_journal;
|
|
38
37
|
const sksUpdate = repair.sks_update;
|
|
@@ -91,7 +90,6 @@ export function renderDoctorConsoleReport(result, extras) {
|
|
|
91
90
|
const featureMatrixSkipped = codexNativeFeatureMatrix.skipped === true;
|
|
92
91
|
line('SKS Runtime Readiness:');
|
|
93
92
|
line(` Codex Native: ${skippedOr(featureMatrixSkipped, String(runtimeReadiness.codex_native))}`);
|
|
94
|
-
line(` Loop Mesh: ${skippedOr(featureMatrixSkipped, String(runtimeReadiness.loop_mesh))}`);
|
|
95
93
|
line(` QA Visual: ${skippedOr(featureMatrixSkipped, String(runtimeReadiness.qa_visual))}`);
|
|
96
94
|
line(` Research Sources: ${skippedOr(featureMatrixSkipped, String(runtimeReadiness.research_sources))}`);
|
|
97
95
|
line(` Image Follow-up: ${skippedOr(featureMatrixSkipped, String(runtimeReadiness.image_followup))}`);
|
|
@@ -149,7 +147,6 @@ export function renderDoctorConsoleReport(result, extras) {
|
|
|
149
147
|
line(` hook approval: ${skippedOr(harnessSkipped, appFeatures.hook_approval_state_detectable ? 'ok' : 'unknown')}`);
|
|
150
148
|
line(` skills: ${skippedOr(harnessSkipped, sksIntegrations.dollar_skills_synced ? 'ok' : 'degraded')}`);
|
|
151
149
|
line(` agent roles: ${skippedOr(harnessSkipped, sksIntegrations.agent_roles_synced ? 'ok' : 'degraded')}`);
|
|
152
|
-
line(` native agent_type: ${skippedOr(harnessSkipped, appFeatures.agent_type_supported ? 'ok' : 'fallback message-role')}`);
|
|
153
150
|
line(` init-deep memory: ${skippedOr(harnessSkipped, sksIntegrations.init_deep_available ? 'available' : 'missing')}`);
|
|
154
151
|
line(` loop mesh app profile: ${skippedOr(harnessSkipped, sksIntegrations.loop_mesh_app_profile_available ? 'available' : 'missing')}`);
|
|
155
152
|
line('Codex App UI:');
|
|
@@ -218,16 +215,10 @@ export function renderDoctorConsoleReport(result, extras) {
|
|
|
218
215
|
const currentAppSkipped = extras.codexCurrentAppCapability?.skipped === true;
|
|
219
216
|
line('Codex current compatibility:');
|
|
220
217
|
line(` target: ${CURRENT_CODEX_RUNTIME_CONTRACT.targetTag}`);
|
|
218
|
+
line(` minimum: ${CURRENT_CODEX_RUNTIME_CONTRACT.minVersion}`);
|
|
221
219
|
line(` runtime: ${codex.version || 'unknown'}`);
|
|
222
|
-
line(` multi-agent mode: ${skippedOr(featureMatrixSkipped, codexNativeFeatureMatrix.features?.multi_agent_mode?.ok ? 'verified' : 'unverified')}`);
|
|
223
|
-
line(` rollout budget: ${skippedOr(featureMatrixSkipped, codexNativeFeatureMatrix.features?.rollout_budget?.ok ? 'verified' : 'unverified')}`);
|
|
224
|
-
line(` indexed search: ${skippedOr(featureMatrixSkipped, codexNativeFeatureMatrix.features?.indexed_web_search?.ok ? 'verified' : 'unverified')}`);
|
|
225
|
-
line(` current time: ${skippedOr(featureMatrixSkipped, codexNativeFeatureMatrix.features?.current_time_read?.ok ? 'verified' : 'unverified')}`);
|
|
226
220
|
line('Current Codex app features:');
|
|
227
221
|
line(` /app handoff: ${skippedOr(currentAppSkipped, codexCurrentApp.supports_app_handoff ? 'ok' : 'unavailable')}`);
|
|
228
|
-
line(` plugin JSON: ${skippedOr(currentAppSkipped, codexCurrentApp.supports_plugin_json ? 'ok' : 'unavailable')}`);
|
|
229
|
-
line(` image path exposure: ${skippedOr(currentAppSkipped, codexCurrentApp.supports_image_path_exposure ? 'ok' : 'unavailable')}`);
|
|
230
|
-
line(` OAuth MCP pre-refresh: ${skippedOr(currentAppSkipped, codexCurrentApp.supports_oauth_mcp_prerefresh ? 'ok' : 'unavailable')}`);
|
|
231
222
|
const pluginInventorySkipped = extras.pluginInventory?.skipped === true;
|
|
232
223
|
const pluginReport = extras.pluginInventory?.report;
|
|
233
224
|
const plugins = pluginReport?.plugins || [];
|
|
@@ -254,7 +245,6 @@ export function renderDoctorConsoleReport(result, extras) {
|
|
|
254
245
|
if (!desktopBridge.ok)
|
|
255
246
|
for (const action of desktopBridge.recovery_actions || [])
|
|
256
247
|
line(` action: ${action}`);
|
|
257
|
-
line(`Permissions: config profile and permission profile are tracked separately (${permissionProfiles.codex_config_profile_field}, ${permissionProfiles.codex_permission_profile_field})`);
|
|
258
248
|
line('Ready:');
|
|
259
249
|
line(` cli_ready: ${ready.cli_ready ? 'yes' : 'no'}`);
|
|
260
250
|
line(` mad_ready: ${ready.mad_ready ? 'yes' : 'no'}`);
|
|
@@ -7,9 +7,6 @@ import { restartLaunchAgent } from '../core/codex-app/menubar/launch-agent.js';
|
|
|
7
7
|
export function buildRuntimeReadiness(matrix) {
|
|
8
8
|
const defaults = matrix?.invocation_defaults || {};
|
|
9
9
|
const hookPolicy = defaults.hook_evidence_policy || 'unknown-do-not-count';
|
|
10
|
-
const agentStrategy = defaults.loop_worker_role_strategy || 'message-role';
|
|
11
|
-
const multiAgentMode = defaults.multi_agent_mode || 'none';
|
|
12
|
-
const rolloutBudget = defaults.rollout_budget_strategy || 'sks-local-only';
|
|
13
10
|
const researchSource = defaults.research_source_strategy || 'local-files';
|
|
14
11
|
const codexNative = matrix?.ok === true ? 'ok' : matrix?.codex_cli?.available ? 'degraded' : 'blocked';
|
|
15
12
|
const repairActions = [];
|
|
@@ -26,22 +23,12 @@ export function buildRuntimeReadiness(matrix) {
|
|
|
26
23
|
return {
|
|
27
24
|
schema: 'sks.runtime-readiness-story.v1',
|
|
28
25
|
codex_native: codexNative,
|
|
29
|
-
loop_mesh: agentStrategy === 'agent_type' ? 'ok' : 'fallback',
|
|
30
26
|
qa_visual: defaults.qa_visual_review_strategy || 'blocked',
|
|
31
27
|
research_sources: researchSource,
|
|
32
28
|
image_followup: defaults.image_followup_strategy || 'blocked',
|
|
33
29
|
hook_evidence_policy: hookPolicy,
|
|
34
|
-
agent_role_strategy: agentStrategy,
|
|
35
|
-
multi_agent_mode: multiAgentMode,
|
|
36
|
-
rollout_budget_strategy: rolloutBudget,
|
|
37
|
-
current_time_source: defaults.current_time_source || 'external-clock',
|
|
38
|
-
overload_retry_policy: defaults.overload_retry_policy || 'generic',
|
|
39
30
|
notes: [
|
|
40
|
-
...(hookPolicy !== 'approved-only' ? ['hook-derived evidence will not count'] : [])
|
|
41
|
-
...(agentStrategy !== 'agent_type' ? ['message-role fallback active'] : []),
|
|
42
|
-
...(multiAgentMode === 'proactive' ? ['Proactive multi-agent mode is available for Naruto-style routes'] : []),
|
|
43
|
-
...(rolloutBudget === 'codex-current-shared' ? ['Shared rollout budgeting is available for route proof'] : []),
|
|
44
|
-
...(researchSource === 'indexed-web-search' ? ['Indexed web search is selected for source-intelligence routes'] : [])
|
|
31
|
+
...(hookPolicy !== 'approved-only' ? ['hook-derived evidence will not count'] : [])
|
|
45
32
|
],
|
|
46
33
|
repair_actions: [...new Set(repairActions)]
|
|
47
34
|
};
|
|
@@ -69,16 +56,11 @@ export function fallbackCodexNativeFeatureMatrix(codex, blockers = [], warnings
|
|
|
69
56
|
codex_cli: { available: Boolean(codex?.bin || codex?.available), version: codex?.version || null, bin: codex?.bin || null },
|
|
70
57
|
features: {},
|
|
71
58
|
invocation_defaults: {
|
|
72
|
-
loop_worker_role_strategy: 'message-role',
|
|
73
|
-
multi_agent_mode: 'none',
|
|
74
|
-
rollout_budget_strategy: 'sks-local-only',
|
|
75
59
|
qa_visual_review_strategy: 'route-gated',
|
|
76
60
|
research_source_strategy: 'local-files',
|
|
77
61
|
image_followup_strategy: 'artifact-path',
|
|
78
62
|
hook_evidence_policy: 'unknown-do-not-count',
|
|
79
|
-
skill_bridge_strategy: 'cli-only'
|
|
80
|
-
current_time_source: 'external-clock',
|
|
81
|
-
overload_retry_policy: 'generic'
|
|
63
|
+
skill_bridge_strategy: 'cli-only'
|
|
82
64
|
},
|
|
83
65
|
blockers,
|
|
84
66
|
warnings
|
package/dist/commands/doctor.js
CHANGED
|
@@ -11,7 +11,6 @@ import { desktopBridgeStatusV3 } from '../core/codex-lb/desktop-controller-v3.js
|
|
|
11
11
|
import { readDesktopBridgeUnreachableUpstreamEvidence, repairDoctorDesktopBridgeCatalog } from '../core/doctor/desktop-bridge-catalog-repair.js';
|
|
12
12
|
import { inspectCodexConfigReadability } from '../core/codex/codex-config-readability.js';
|
|
13
13
|
import { inspectOAuthCallbackPortConflict, oauthCallbackDoctorGuidance } from '../core/codex/oauth-callback-port-diagnostic.js';
|
|
14
|
-
import { inventoryCodexPermissionProfiles } from '../core/codex/codex-permission-profiles.js';
|
|
15
14
|
import { resolveProviderContext } from '../core/provider/provider-context.js';
|
|
16
15
|
import { writeCodexCurrentAppCapabilityArtifacts } from '../core/codex-control/codex-current-app-capability.js';
|
|
17
16
|
import { writeCodexPluginInventoryArtifacts, pluginAppTemplatePolicy } from '../core/codex-plugins/codex-plugin-json.js';
|
|
@@ -513,7 +512,6 @@ async function runDoctorJsonFastPath(args = [], root) {
|
|
|
513
512
|
doctor_fix_postcheck: null,
|
|
514
513
|
postcheck: null,
|
|
515
514
|
agent_role_config: { schema: 'sks.agent-role-config-repair.v1', ok: true, apply: false, skipped: true, blockers: [] },
|
|
516
|
-
codex_permission_profiles: { skipped: true, reason: 'doctor_json_fast_path_optional_diagnostics_skipped' },
|
|
517
515
|
command_aliases: { schema: 'sks.command-alias-cleanup.v1', ok: true, skipped: true, reason: 'doctor_json_fast_path_no_write' },
|
|
518
516
|
sks_temp_sweep: { ok: true, skipped: true, action_count: 0, reason: 'doctor_without_fix', error: null },
|
|
519
517
|
imagegen: { ok: false, auth_readiness: null, codex_app_builtin_available: false },
|
|
@@ -683,7 +681,6 @@ async function runDoctor(args = [], root, doctorFix, deps = {}) {
|
|
|
683
681
|
generated_at: new Date().toISOString(),
|
|
684
682
|
fix: doctorFix,
|
|
685
683
|
configs: [],
|
|
686
|
-
agent_role_files: { sanitized: [], created: [], blockers: [err?.message || String(err)] },
|
|
687
684
|
actions: [],
|
|
688
685
|
manual_actions: [],
|
|
689
686
|
blockers: [err?.message || String(err)],
|
|
@@ -1114,7 +1111,6 @@ async function runDoctor(args = [], root, doctorFix, deps = {}) {
|
|
|
1114
1111
|
processEnv: process.env
|
|
1115
1112
|
}, { desktopBridgeStatusImpl: deps.desktopBridgeStatusImpl })
|
|
1116
1113
|
: desktopBridgeBeforeFix;
|
|
1117
|
-
const permissionProfiles = await inventoryCodexPermissionProfiles(root, { writeReport: true });
|
|
1118
1114
|
const startupRoleRepair = startupConfigRepair?.role_repair;
|
|
1119
1115
|
const agentRoleConfigRepair = doctorFix && startupRoleRepair
|
|
1120
1116
|
? startupRoleRepair
|
|
@@ -1559,7 +1555,6 @@ async function runDoctor(args = [], root, doctorFix, deps = {}) {
|
|
|
1559
1555
|
} : null,
|
|
1560
1556
|
agent_role_config: agentRoleConfigRepair,
|
|
1561
1557
|
official_subagent_config: officialSubagentConfig,
|
|
1562
|
-
codex_permission_profiles: permissionProfiles,
|
|
1563
1558
|
command_aliases: commandAliasCleanup,
|
|
1564
1559
|
sks_temp_sweep: {
|
|
1565
1560
|
ok: sksTempSweep.ok !== false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "sks.skills-manifest.v1",
|
|
3
|
-
"package_version": "10.
|
|
3
|
+
"package_version": "10.5.0",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
6
6
|
"canonical_name": "sks",
|
|
@@ -404,15 +404,15 @@
|
|
|
404
404
|
{
|
|
405
405
|
"canonical_name": "sks-naruto",
|
|
406
406
|
"type": "core",
|
|
407
|
-
"content_sha256": "
|
|
407
|
+
"content_sha256": "26528b6b7d063c7cf0b5b9e996947d504cbc7ef4af976e480b5df3e6c7fcbac9",
|
|
408
408
|
"hash_history": [
|
|
409
|
+
"5ac4c3ea1d4478f12f55df3c3d6c4ab272a40f731de8aa659aee08cb8e517a8b",
|
|
410
|
+
"c88999663811a50d096b7cbb696fbea5b8f72707bcbf4a232bb07fe3a10cb2a6",
|
|
409
411
|
"b2eb207b2773ab1995ee6e113ba6f3b64de43389e76aef4a0f06d4845ff86223",
|
|
410
412
|
"65e19a5d16f486b13541048c239e828f8039bfc6e38bafd7949d9c936fe4b5b2",
|
|
411
413
|
"da43debf97f0b4a1583d8202a7306aca97ac97865accf9bca8f41d75c84a1cb9",
|
|
412
414
|
"b981bea4183376c6c0204941ad6c2e78782e2cdea4f8d25cc85630c609faaf95",
|
|
413
415
|
"5df9c9678eb68fd79ceb998ae7a52dd54dc92336ad5169e8a01acca89f76bd60",
|
|
414
|
-
"a1219f6dbad9c8c185953125ef0b8dccf081aa01efb8e8acaa543c6214ac049c",
|
|
415
|
-
"d0d5968e78ac25e1d3e588735de1ddbcf149cfb3165edebca5dec1ed7c7a5c46",
|
|
416
416
|
"49b5e3dcc1b537b49c2cf09e5b875cb16acb05c622b22798e265e64dacd8ac90"
|
|
417
417
|
],
|
|
418
418
|
"deprecated_aliases": []
|
|
@@ -467,8 +467,9 @@
|
|
|
467
467
|
{
|
|
468
468
|
"canonical_name": "sks-prompt-pipeline",
|
|
469
469
|
"type": "official",
|
|
470
|
-
"content_sha256": "
|
|
470
|
+
"content_sha256": "01b0d58e26d4493442041d1cd51b4a25ac15014be79b065a59520e21ef69a4b1",
|
|
471
471
|
"hash_history": [
|
|
472
|
+
"5e423981384fc3825c74327c4ca0fe09905a0dc81a533676c7e76ebb385348fc",
|
|
472
473
|
"f82a103e7962e416961add515d7b3e65df89848dec1fbb9319bd49d7f1dac982",
|
|
473
474
|
"93fd938dccd65d9b4d1dd140b60e1baedc627e7fcc54f9afd95eb2e44efd1143",
|
|
474
475
|
"033bb114ec1fac3f8c312f698b1861ed4c2ce6f65c06f4f1a872c4b101b74b92",
|
|
@@ -490,8 +491,9 @@
|
|
|
490
491
|
{
|
|
491
492
|
"canonical_name": "sks-reasoning-router",
|
|
492
493
|
"type": "official",
|
|
493
|
-
"content_sha256": "
|
|
494
|
+
"content_sha256": "2ec66071b1c021e8c2ddd8f1ecefd16502c8325adab2c3c804a9e8d4123b1a8d",
|
|
494
495
|
"hash_history": [
|
|
496
|
+
"b0f458caa1c3bd7bb7241a09b80fce5700aeb99b340e84c08a9b2b66bc875ba7",
|
|
495
497
|
"41e14e8d5b93d743096664869ee68c41c86e911b0bbc165bdcd10e4a45faa4b6",
|
|
496
498
|
"03d68436e568b3cee2bffc6ca58819019ca406f7b648ef4704e3465c7c83c114",
|
|
497
499
|
"647f730520a1c7dc89c2642f5b8502624c65a861ae41aecf1fb137db40fd0611",
|
|
@@ -131,7 +131,7 @@ export function buildAgentEffortPolicy(roster = {}) {
|
|
|
131
131
|
agent_count: roster.agent_count || decisions.length,
|
|
132
132
|
concurrency: roster.concurrency || decisions.length,
|
|
133
133
|
decisions,
|
|
134
|
-
rule: 'Every child uses the newest model of the tier its work needs: fast for tiny mechanical work, balanced for instructed implementation, context for reads and tool execution, and deep for focused judgment. With Jev mode on, Jev picks the tier for each spawn. The parent keeps its user-selected model, reasoning effort, and service tier; stored role preferences may override role defaults.'
|
|
134
|
+
rule: 'Every child uses the newest model of the tier its work needs: fast for tiny mechanical work, balanced for instructed implementation, context for reads and tool execution, and deep for focused judgment. With Jev mode on, Jev picks the tier for each spawn that names no managed role; a managed role runs the tier pinned in its role file. The parent keeps its user-selected model, reasoning effort, and service tier; stored role preferences may override role defaults.'
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
137
|
export function reasoningProfileName(effort) {
|
|
@@ -6,7 +6,6 @@ import { fastModeEnv } from './fast-mode-policy.js';
|
|
|
6
6
|
import { validateAgentWorkerResult } from './agent-worker-pipeline.js';
|
|
7
7
|
import { appendParallelRuntimeEvent } from './parallel-runtime-proof.js';
|
|
8
8
|
import { appendAgentMessage } from './agent-message-bus.js';
|
|
9
|
-
import { markLoopWorkerInterrupted, registerLoopActiveWorker } from '../loops/loop-interrupt-registry.js';
|
|
10
9
|
export const NATIVE_CLI_WORKER_RUNTIME_SCHEMA = 'sks.native-cli-worker-runtime.v3';
|
|
11
10
|
export const NATIVE_CLI_WORKER_DEFAULT_TIMEOUT_MS = 60 * 60 * 1000;
|
|
12
11
|
export const NATIVE_CLI_WORKER_TIMEOUT_BLOCKER = 'native_cli_worker_timeout';
|
|
@@ -140,16 +139,8 @@ class NativeCliWorkerRuntimeRecorder {
|
|
|
140
139
|
this.active.add(child.pid);
|
|
141
140
|
this.maxObserved = Math.max(this.maxObserved, this.active.size);
|
|
142
141
|
let exit;
|
|
143
|
-
let loopHandle = null;
|
|
144
142
|
try {
|
|
145
143
|
await this.record(record);
|
|
146
|
-
loopHandle = await registerLoopWorkerHandle({
|
|
147
|
-
root: ctx.opts.projectRoot || this.input.projectRoot || ctx.opts.cwd || packageRoot(),
|
|
148
|
-
env: ctx.opts.env || {},
|
|
149
|
-
agentId: String(ctx.agent.id || ctx.agent.session_id || 'agent'),
|
|
150
|
-
sessionId: ctx.agent.session_id || null,
|
|
151
|
-
pid: child.pid || null
|
|
152
|
-
});
|
|
153
144
|
await appendParallelRuntimeEvent(this.root, this.input.missionId, {
|
|
154
145
|
event_type: 'worker_process_spawned',
|
|
155
146
|
slot_id: ctx.agent.slot_id || ctx.agent.id || null,
|
|
@@ -184,9 +175,6 @@ class NativeCliWorkerRuntimeRecorder {
|
|
|
184
175
|
const timeoutBlockers = supervisor.timedOut ? [NATIVE_CLI_WORKER_TIMEOUT_BLOCKER] : [];
|
|
185
176
|
if (supervisor.timedOut)
|
|
186
177
|
record.status = 'failed';
|
|
187
|
-
if (loopHandle) {
|
|
188
|
-
await markLoopWorkerInterrupted(ctx.opts.projectRoot || this.input.projectRoot || ctx.opts.cwd || packageRoot(), loopHandle.mission_id, loopHandle.worker_id, record.status === 'closed' ? 'completed' : 'failed').catch(() => undefined);
|
|
189
|
-
}
|
|
190
178
|
const parsed = await readJson(path.join(this.root, resultRel), null).catch(() => null);
|
|
191
179
|
if (!parsed) {
|
|
192
180
|
record.blockers = [...timeoutBlockers, 'native_cli_worker_result_missing'];
|
|
@@ -385,19 +373,3 @@ function changedFilesFromWorkerResult(result) {
|
|
|
385
373
|
]);
|
|
386
374
|
return [...new Set([...direct, ...envelopeFiles].map((file) => String(file || '').replace(/\\/g, '/').replace(/^\.\/+/, '')).filter(Boolean))];
|
|
387
375
|
}
|
|
388
|
-
async function registerLoopWorkerHandle(input) {
|
|
389
|
-
const missionId = String(input.env.SKS_MISSION_ID || input.env.SKS_PARENT_MISSION_ID || '').trim();
|
|
390
|
-
const loopId = String(input.env.SKS_LOOP_ID || '').trim();
|
|
391
|
-
const phase = String(input.env.SKS_LOOP_PHASE || '').trim();
|
|
392
|
-
if (!missionId || !loopId || (phase !== 'maker' && phase !== 'checker'))
|
|
393
|
-
return null;
|
|
394
|
-
return registerLoopActiveWorker(input.root, {
|
|
395
|
-
mission_id: missionId,
|
|
396
|
-
loop_id: loopId,
|
|
397
|
-
phase,
|
|
398
|
-
worker_id: input.agentId,
|
|
399
|
-
session_id: input.sessionId,
|
|
400
|
-
pid: input.pid,
|
|
401
|
-
interrupt_supported: Boolean(input.pid || input.sessionId)
|
|
402
|
-
}).catch(() => null);
|
|
403
|
-
}
|
|
@@ -7,7 +7,7 @@ import { normalizeAgentPatchEnvelope } from './agent-patch-schema.js';
|
|
|
7
7
|
import { runCodexTask } from '../codex-control/codex-control-plane.js';
|
|
8
8
|
import { CODEX_AGENT_WORKER_RESULT_SCHEMA_ID, codexAgentWorkerResultSchema } from '../codex-control/schemas/agent-worker-result.schema.js';
|
|
9
9
|
import { leanEngineeringCompactText, leanPolicyReference } from '../lean-engineering-policy.js';
|
|
10
|
-
import { readCodexLbModelCatalog
|
|
10
|
+
import { readCodexLbModelCatalog } from '../codex-lb/codex-lb-env.js';
|
|
11
11
|
import { categoryForWorkerRole, isNarutoTierModel, modelRouteReason, routeModel } from '../provider/model-router.js';
|
|
12
12
|
import { codexTimeoutClassForRoute } from '../codex-control/codex-reliability-shield.js';
|
|
13
13
|
import { decideSubagentModel } from '../subagents/model-policy.js';
|
|
@@ -235,7 +235,6 @@ export async function resolveWorkerModelRouting(input, deps = {}) {
|
|
|
235
235
|
if (allowlist.mode === 'openrouter_only') {
|
|
236
236
|
return resolveOpenRouterOnlyWorkerRouting(input, deps, { allowlist, category, env, taskKindText, riskText });
|
|
237
237
|
}
|
|
238
|
-
const lbHealth = Object.prototype.hasOwnProperty.call(deps, 'lbHealth') ? deps.lbHealth : await readLbHealth().catch(() => null);
|
|
239
238
|
const lbCatalog = narutoOnly
|
|
240
239
|
? Object.prototype.hasOwnProperty.call(deps, 'lbCatalog')
|
|
241
240
|
? deps.lbCatalog
|
|
@@ -273,7 +272,6 @@ export async function resolveWorkerModelRouting(input, deps = {}) {
|
|
|
273
272
|
const taskPolicy = decideSubagentModel({ title: taskKindText, description: riskText, role: input.agent?.role });
|
|
274
273
|
const routed = narutoOnly
|
|
275
274
|
? await routeModel(category, {
|
|
276
|
-
lbHealth,
|
|
277
275
|
narutoOnly: true,
|
|
278
276
|
taskText: taskKindText,
|
|
279
277
|
riskText,
|
|
@@ -301,14 +299,9 @@ export async function resolveWorkerModelRouting(input, deps = {}) {
|
|
|
301
299
|
category,
|
|
302
300
|
choice: routed,
|
|
303
301
|
explicit: Boolean(explicitModel),
|
|
304
|
-
lb_health: lbHealth,
|
|
305
302
|
lb_catalog: lbCatalog,
|
|
306
303
|
blockers: [...new Set(blockers)],
|
|
307
|
-
reason: modelRouteReason(category, routed, {
|
|
308
|
-
explicit: Boolean(explicitModel),
|
|
309
|
-
quotaLow: lbHealth?.quota_low === true,
|
|
310
|
-
degraded: lbHealth?.degraded_models || []
|
|
311
|
-
})
|
|
304
|
+
reason: modelRouteReason(category, routed, { explicit: Boolean(explicitModel) })
|
|
312
305
|
};
|
|
313
306
|
}
|
|
314
307
|
async function resolveOpenRouterOnlyWorkerRouting(input, deps, ctx) {
|
|
@@ -348,7 +341,6 @@ async function resolveOpenRouterOnlyWorkerRouting(input, deps, ctx) {
|
|
|
348
341
|
category,
|
|
349
342
|
choice: routed,
|
|
350
343
|
explicit: Boolean(explicitModel),
|
|
351
|
-
lb_health: Object.prototype.hasOwnProperty.call(deps, 'lbHealth') ? deps.lbHealth : null,
|
|
352
344
|
lb_catalog: null,
|
|
353
345
|
blockers: [...new Set(blockers)],
|
|
354
346
|
reason: `${category}->${choiceModel || 'blocked'}@${routed.reasoning} (openrouter only list: ${why})`
|
package/dist/core/auto-review.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from 'node:path';
|
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
4
|
import { ensureDir, exists, readText, writeTextAtomic } from './fsx.js';
|
|
5
5
|
import { writeCodexConfigGuarded } from './codex/codex-config-guard.js';
|
|
6
|
+
import { CODEX_FAST_SERVICE_TIER_ID } from './codex/codex-service-tier.js';
|
|
6
7
|
import { inspectConfinedPath, removeManagedPathVerified } from './managed-path-safety.js';
|
|
7
8
|
import { RETIRED_AUTO_REVIEW_POLICY_TEXTS, RETIRED_SKS_CONFIG_PROFILE_NAMES } from './doctor/retired-auto-review-config.js';
|
|
8
9
|
import { escapeRegExp } from './text/regex.js';
|
|
@@ -217,7 +218,7 @@ export function buildMadHighLaunchProfileNoWrite(opts = {}) {
|
|
|
217
218
|
'--ask-for-approval',
|
|
218
219
|
'never',
|
|
219
220
|
'-c',
|
|
220
|
-
|
|
221
|
+
`service_tier=${CODEX_FAST_SERVICE_TIER_ID}`,
|
|
221
222
|
'-c',
|
|
222
223
|
'model_reasoning_effort=xhigh'
|
|
223
224
|
],
|
|
@@ -254,7 +255,7 @@ export async function ensureMadHighProfileForSetupOrRepair(opts = {}) {
|
|
|
254
255
|
config_path: configPath,
|
|
255
256
|
profile_config_path: path.join(path.dirname(configPath), `${MAD_HIGH_PROFILE}.config.toml`),
|
|
256
257
|
profile_name: MAD_HIGH_PROFILE,
|
|
257
|
-
launch_args: ['--profile', MAD_HIGH_PROFILE, '--sandbox', 'danger-full-access', '--ask-for-approval', 'never', '-c',
|
|
258
|
+
launch_args: ['--profile', MAD_HIGH_PROFILE, '--sandbox', 'danger-full-access', '--ask-for-approval', 'never', '-c', `service_tier=${CODEX_FAST_SERVICE_TIER_ID}`, '-c', 'model_reasoning_effort=xhigh'],
|
|
258
259
|
sandbox_mode: 'danger-full-access',
|
|
259
260
|
approval_policy: 'never',
|
|
260
261
|
approvals_reviewer: AUTO_REVIEW_REVIEWER,
|
|
@@ -582,7 +582,6 @@ function isLeanOwnedTypeSafetyPath(file) {
|
|
|
582
582
|
'src/core/agents/native-worker-backend-router.ts',
|
|
583
583
|
'src/scripts/check-architecture.ts',
|
|
584
584
|
'src/scripts/check-command-module-budget.ts',
|
|
585
|
-
'src/scripts/check-pipeline-budget.ts',
|
|
586
585
|
'src/scripts/check-route-modularity.ts',
|
|
587
586
|
'src/scripts/check-publish-tag.ts',
|
|
588
587
|
'src/scripts/gpt-final-arbiter-check.ts',
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { codexServiceTierId } from './codex-service-tier.js';
|
|
1
2
|
export function buildCodexExecArgs(opts) {
|
|
2
3
|
if (opts.danger && !opts.allowDanger) {
|
|
3
4
|
throw new Error('codex exec danger mode requires explicit allowDanger=true');
|
|
@@ -30,7 +31,7 @@ export function buildCodexExecArgs(opts) {
|
|
|
30
31
|
args.push('--sandbox', opts.sandbox);
|
|
31
32
|
const serviceTier = normalizeCodexServiceTier(opts.serviceTier);
|
|
32
33
|
if (serviceTier)
|
|
33
|
-
args.push('-c', `service_tier=${serviceTier}`);
|
|
34
|
+
args.push('-c', `service_tier=${codexServiceTierId(serviceTier)}`);
|
|
34
35
|
args.push(opts.prompt);
|
|
35
36
|
return args;
|
|
36
37
|
}
|