sneakoscope 10.3.3 → 10.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +221 -11
- package/config/skills-hash-ledger.v1.json +21 -2
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/dist/cli/command-manifest-lite.js +3 -1
- package/dist/cli/command-registry.js +8 -0
- package/dist/cli/install-helpers.js +1 -2
- package/dist/commands/doctor.js +3 -4
- package/dist/commands/imagegen.js +154 -0
- package/dist/config/skills-manifest.json +40 -21
- package/dist/core/agents/agent-effort-policy.js +15 -13
- package/dist/core/agents/native-worker-backend-router.js +24 -10
- package/dist/core/agents/official-subagent-helper-policy.js +1 -2
- package/dist/core/codex-app/menubar/constants.js +2 -0
- package/dist/core/codex-app.js +6 -6
- package/dist/core/codex-lb/desktop-bridge/imagegen-endpoint.js +95 -0
- package/dist/core/codex-lb/desktop-bridge/server.js +6 -1
- package/dist/core/codex-lb/desktop-bridge/types.js +1 -0
- package/dist/core/codex-lb/desktop-bridge-migration/retired-runtime-cleanup.js +1 -0
- package/dist/core/codex-native/core-skill-manifest.js +8 -9
- package/dist/core/codex-native/native-capability-repair-matrix.js +4 -5
- package/dist/core/commands/image-ux-review-command.js +6 -7
- package/dist/core/commands/ppt-command.js +3 -4
- package/dist/core/commands/qa-loop-command.js +28 -3
- package/dist/core/decisions/cli.js +9 -2
- package/dist/core/decisions/config.js +7 -0
- package/dist/core/decisions/integration.js +105 -12
- package/dist/core/decisions/policy.js +54 -4
- package/dist/core/decisions/questions.js +81 -10
- package/dist/core/decisions/routing.js +15 -10
- package/dist/core/decisions/types.js +13 -25
- package/dist/core/doctor/current-project-guidance.js +38 -1
- package/dist/core/doctor/doctor-readiness-matrix.js +1 -2
- package/dist/core/doctor/imagegen-repair.js +3 -4
- package/dist/core/doctor/skill-legacy-surface.js +2 -1
- package/dist/core/feature-fixtures.js +1 -0
- package/dist/core/feature-registry.js +3 -3
- package/dist/core/hooks-runtime/hook-context.js +2 -2
- package/dist/core/hooks-runtime/hook-io.js +1 -2
- package/dist/core/hooks-runtime/jev-spawn-routing.js +21 -2
- package/dist/core/hooks-runtime/jev-turn-plan.js +81 -0
- package/dist/core/hooks-runtime/managed-guidance-preflight.js +50 -0
- package/dist/core/hooks-runtime/official-subagent-lifecycle.js +3 -3
- package/dist/core/hooks-runtime/parent-orchestration-gate.js +372 -0
- package/dist/core/hooks-runtime/subagent-context.js +13 -3
- package/dist/core/hooks-runtime/subagent-spawn-policy.js +5 -10
- package/dist/core/hooks-runtime.js +73 -11
- package/dist/core/image-ux-review/imagegen-adapter.js +159 -316
- package/dist/core/image-ux-review.js +28 -20
- package/dist/core/imagegen/imagegen-auth-readiness.js +10 -8
- package/dist/core/imagegen/imagegen-capability.js +79 -14
- package/dist/core/imagegen/imagegen-config.js +45 -0
- package/dist/core/imagegen/imagegen-evidence.js +14 -2
- package/dist/core/imagegen/imagegen-generate.js +284 -0
- package/dist/core/imagegen/imagegen-jev.js +53 -0
- package/dist/core/imagegen/imagegen-model-policy.js +2 -5
- package/dist/core/imagegen/imagegen-request-validator.js +3 -3
- package/dist/core/imagegen/openrouter-images.js +288 -0
- package/dist/core/imagegen/require-imagegen.js +14 -7
- package/dist/core/init/skills/inventory.js +5 -1
- package/dist/core/init/skills.js +12 -13
- package/dist/core/init.js +36 -4
- package/dist/core/lean-engineering-policy.js +2 -2
- package/dist/core/managed-assets/managed-assets-manifest.js +18 -19
- package/dist/core/pipeline-internals/runtime-core.js +6 -7
- package/dist/core/pipeline-internals/runtime-gates.js +5 -5
- package/dist/core/ppt-review/ppt-patch-handoff.js +1 -2
- package/dist/core/ppt-review/slide-imagegen-review.js +10 -11
- package/dist/core/ppt.js +50 -35
- package/dist/core/provider/model-router.js +8 -5
- package/dist/core/qa-loop/qa-loop-budget-policy.js +6 -2
- package/dist/core/qa-loop.js +8 -8
- package/dist/core/recallpulse/policy.js +2 -2
- package/dist/core/recallpulse.js +4 -5
- package/dist/core/release/gate-affected-globs.js +0 -1
- package/dist/core/research/mock-result.js +2 -2
- package/dist/core/research/research-adversarial-review.js +7 -7
- package/dist/core/research/research-claim-synthesizer.js +3 -3
- package/dist/core/research/research-falsification-runner.js +3 -3
- package/dist/core/research/research-super-search.js +5 -2
- package/dist/core/research/research-synthesis-prompt.js +2 -3
- package/dist/core/research/research-synthesis-writer.js +2 -2
- package/dist/core/research.js +5 -5
- package/dist/core/routes/design-policy.js +1 -2
- package/dist/core/routes/dollar-manifest-lite.js +2 -3
- package/dist/core/routes/evidence.js +1 -1
- package/dist/core/routes/ppt-policy.js +1 -2
- package/dist/core/routes.js +26 -15
- package/dist/core/runtime/task-profile.js +9 -5
- package/dist/core/subagents/agent-catalog.js +1 -2
- package/dist/core/subagents/model-policy.js +27 -45
- package/dist/core/subagents/model-tiers.js +153 -0
- package/dist/core/subagents/naruto-command-args.js +3 -3
- package/dist/core/subagents/naruto-help-contract.js +18 -13
- package/dist/core/subagents/naruto-host-credentials.js +8 -13
- package/dist/core/subagents/official-subagent-config.js +11 -7
- package/dist/core/subagents/official-subagent-preparation.js +12 -8
- package/dist/core/subagents/official-subagent-prompt.js +36 -36
- package/dist/core/subagents/official-subagent-runner.js +3 -3
- package/dist/core/subagents/role-model-preferences.js +26 -21
- package/dist/core/triwiki-wrongness/wrongness-schema.js +3 -4
- package/dist/core/update/managed-permission-repair.js +462 -0
- package/dist/core/update/project-migration-fanout-runner.js +56 -0
- package/dist/core/update/sks-project-registry.js +223 -0
- package/dist/core/update/update-migration-state/retired-local-decision.js +32 -2
- package/dist/core/update/update-migration-state/simple-stages.js +25 -1
- package/dist/core/update/update-migration-state.js +69 -9
- package/dist/core/update/update-operation.js +3 -0
- package/dist/core/update-check.js +35 -8
- package/dist/core/version.js +1 -1
- package/dist/native/sks-menubar/Sources/ControlCenterWindowController.swift +2 -0
- package/dist/native/sks-menubar/Sources/ImageGenerationModels.swift +341 -0
- package/dist/native/sks-menubar/Sources/ImageGenerationViewController.swift +330 -0
- package/dist/native/sks-menubar/Sources/SidebarItem.swift +2 -0
- package/dist/scripts/codex-native-agent-role-content-check.js +10 -5
- package/dist/scripts/codex-native-gate-lib.js +3 -1
- package/dist/scripts/current-surface-update-e2e-check.js +1 -0
- package/dist/scripts/mutation-callsite-coverage-check.js +2 -2
- package/dist/scripts/qa-loop-effort-escalation-check.js +4 -0
- package/dist/scripts/release-affected-selector-check.js +1 -2
- package/dist/scripts/typed-routing-gate-lib.js +3 -1
- package/package.json +1 -1
- package/release-gates.v2.json +2 -6
- package/dist/core/codex-app/openrouter-base-instructions.js +0 -1
- package/dist/core/research/research-prompt-contract.js +0 -23
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.3.
|
|
19
|
+
Current package: **SKS 10.3.5**. 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
|
|
|
@@ -39,7 +39,7 @@ sks bootstrap --yes
|
|
|
39
39
|
|
|
40
40
|
| Capability | What you get |
|
|
41
41
|
| --- | --- |
|
|
42
|
-
| Focused execution |
|
|
42
|
+
| Focused execution | Answers and tiny edits stay lightweight; implementation work runs through official Codex subagents while the parent orchestrates and integrates. |
|
|
43
43
|
| Project context | TriWiki indexes repository code and supplies bounded context that can be checked against source. |
|
|
44
44
|
| Verification | Tests, diagnostics, and release evidence support completion claims. Security and data-integrity checks stay in place. |
|
|
45
45
|
| Native controls | SKS Center brings connections, updates, MCP servers, and diagnostics together on macOS. |
|
|
@@ -104,6 +104,7 @@ home directory; set `SKS_POSTINSTALL_MENUBAR=1` to force the build in a script,
|
|
|
104
104
|
| Connections | Connect Codex-LB or OpenRouter, choose authentication priority, and manage exposed models. |
|
|
105
105
|
| Updates | Check and update SKS and Codex CLI, with operation progress and recovery details. |
|
|
106
106
|
| MCP Servers | Manage server configuration, health checks, and authentication. |
|
|
107
|
+
| Image Generation | Keep Codex's default image generation, or route it through the Desktop Bridge to an OpenRouter image model you pick. |
|
|
107
108
|
| Diagnostics | Inspect issues and run targeted checks. |
|
|
108
109
|
| Settings | Configure lifecycle behavior, notifications, and advanced options. |
|
|
109
110
|
| Remote Coding | Find the independent [Paseo companion](https://paseo.sh/docs) and its setup guidance. |
|
|
@@ -136,18 +137,227 @@ Enter credentials through the native connection dialog or the CLI's
|
|
|
136
137
|
`--api-key-stdin` option. See the [provider guide](docs/codex-lb.md) for
|
|
137
138
|
configuration, transport checks, and recovery commands.
|
|
138
139
|
|
|
140
|
+
## Image generation
|
|
141
|
+
|
|
142
|
+
SKS image routes (image generation, UX-Review callouts, PPT assets, slide
|
|
143
|
+
reviews) follow one image mode. By default they use Codex's own image
|
|
144
|
+
generation. Turn on a custom image model on the **Image Generation** page to
|
|
145
|
+
send every SKS image through the Desktop Bridge to an OpenRouter image model
|
|
146
|
+
you pick. SKS pins no image model and records which model made each image.
|
|
147
|
+
|
|
148
|
+
```sh
|
|
149
|
+
sks imagegen status --json
|
|
150
|
+
sks imagegen models --json
|
|
151
|
+
sks imagegen enable --model black-forest-labs/flux.2-klein-4b
|
|
152
|
+
sks imagegen generate --prompt "App icon, flat, blue" --out icon.png
|
|
153
|
+
sks imagegen disable
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
See [Image generation](docs/image-generation.md) for both modes, evidence
|
|
157
|
+
sidecars, and the Jev choices.
|
|
158
|
+
|
|
139
159
|
## Naruto workflow
|
|
140
160
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
161
|
+
The parent orchestrates: it decomposes the task, spawns a child for each
|
|
162
|
+
disjoint slice, waits, and owns integration and final verification. It does not
|
|
163
|
+
implement slices itself. The SKS PreToolUse hook denies parent source edits
|
|
164
|
+
until the first child starts and while children are still running. Children
|
|
165
|
+
receive bounded tasks and do not spawn children.
|
|
166
|
+
|
|
167
|
+
No model family is pinned. Every child runs the newest model of the tier its
|
|
168
|
+
work needs, read from the Codex models cache, so a new model family is used as
|
|
169
|
+
soon as Codex lists it:
|
|
170
|
+
|
|
171
|
+
| Work | Tier | Effort | Today |
|
|
172
|
+
| --- | --- | --- | --- |
|
|
173
|
+
| Tiny mechanical tasks | fast | low | `gpt-6-luna` |
|
|
174
|
+
| Instructed implementation | balanced | low | `gpt-6-sol` |
|
|
175
|
+
| Exploration, large-context reads, and direct tool operation | context | medium | `gpt-6-sol` |
|
|
176
|
+
| Planning, review, debugging, and focused judgment | deep | max | `gpt-6-astra` |
|
|
177
|
+
|
|
178
|
+
With Jev mode on, Jev picks the tier for every spawn, every gated parent edit,
|
|
179
|
+
the plan, and the context, so the parent spends no time on those choices. It
|
|
180
|
+
also picks the pipeline for each prompt; an explicit SKS `<div align="center">
|
|
181
|
+
|
|
182
|
+
<img src="docs/assets/sks-logo.svg" alt="Sneakoscope Codex logo" width="120" height="120" />
|
|
183
|
+
|
|
184
|
+
# Sneakoscope Codex
|
|
185
|
+
|
|
186
|
+
**Plan, build, and verify with Codex.**
|
|
187
|
+
|
|
188
|
+
[](https://www.npmjs.com/package/sneakoscope)
|
|
189
|
+
[](#requirements)
|
|
190
|
+
[](LICENSE)
|
|
191
|
+
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<!-- BEGIN SKS SEARCH VISIBILITY MARKETING -->
|
|
195
|
+
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.
|
|
196
|
+
<!-- END SKS SEARCH VISIBILITY MARKETING -->
|
|
197
|
+
|
|
198
|
+
Current package: **SKS 10.3.5**. Install the latest stable release from npm.
|
|
199
|
+
|
|
200
|
+
[Quick start](#install-in-one-command) · [Commands](#everyday-commands) · [SKS Center](#sks-center-macos) · [Documentation](#documentation) · [Changelog](CHANGELOG.md)
|
|
201
|
+
|
|
202
|
+
## Install in one command
|
|
203
|
+
|
|
204
|
+
```sh
|
|
205
|
+
npm exec --yes --package=sneakoscope@latest -- sneakoscope install --yes
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
The installer resolves the latest release, installs it globally, runs setup and
|
|
209
|
+
Doctor, and checks that `sks` on your PATH points to the installed version.
|
|
210
|
+
|
|
211
|
+
To set up a project, run this from its root, then open it in Codex:
|
|
212
|
+
|
|
213
|
+
```sh
|
|
214
|
+
sks bootstrap --yes
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## What SKS adds
|
|
218
|
+
|
|
219
|
+
| Capability | What you get |
|
|
220
|
+
| --- | --- |
|
|
221
|
+
| Focused execution | Answers and tiny edits stay lightweight; implementation work runs through official Codex subagents while the parent orchestrates and integrates. |
|
|
222
|
+
| Project context | TriWiki indexes repository code and supplies bounded context that can be checked against source. |
|
|
223
|
+
| Verification | Tests, diagnostics, and release evidence support completion claims. Security and data-integrity checks stay in place. |
|
|
224
|
+
| Native controls | SKS Center brings connections, updates, MCP servers, and diagnostics together on macOS. |
|
|
225
|
+
| Consistent setup | `sks update` installs the latest release, runs Doctor, and reconciles SKS-managed files and legacy assets. |
|
|
226
|
+
|
|
227
|
+
The default `essential` profile avoids repetitive completion rituals. `strict`
|
|
228
|
+
adds stronger completion requirements. See [Essential Trust](docs/essential-trust.md).
|
|
229
|
+
|
|
230
|
+
With Codex-LB connected, `sks agent-bridge async --prompt "Check SKS status while
|
|
231
|
+
explaining what the check covers" --tools status --json` runs native Astra Async
|
|
232
|
+
tool calling with selected read-only SKS tools, using WebSocket first and safe
|
|
233
|
+
HTTP fallback. See [Astra guidance](docs/astra-guidance.md)
|
|
234
|
+
for setup boundaries and reported execution evidence.
|
|
235
|
+
|
|
236
|
+
## Everyday commands
|
|
237
|
+
|
|
238
|
+
SKS enables experimental Astra context management by default during setup and
|
|
239
|
+
repair. Turn it off in **SKS Center → Settings → Astra context management**, or
|
|
240
|
+
use `sks codex-app context-management off`. Updates preserve an explicit opt-out.
|
|
241
|
+
Start a new task after changing the setting. Availability depends on a supported
|
|
242
|
+
Codex client and eligible ChatGPT sign-in; API-key and custom-provider sessions
|
|
243
|
+
may not activate it. See [OpenAI's context management guidance](https://learn.chatgpt.com/docs/models#experimental-context-management).
|
|
244
|
+
|
|
245
|
+
Use these inside a Codex conversation:
|
|
246
|
+
|
|
247
|
+
| Command | Purpose |
|
|
248
|
+
| --- | --- |
|
|
249
|
+
| `$sks-plan "task"` | Create a plan without editing product code. |
|
|
250
|
+
| `$sks-work` | Execute the latest plan. |
|
|
251
|
+
| `$sks-naruto "task"` | Run an official subagent workflow. |
|
|
252
|
+
| `$sks-review` | Review the current changes. |
|
|
253
|
+
| `$sks-help` | Explore available SKS workflows. |
|
|
254
|
+
|
|
255
|
+
Use these in your terminal:
|
|
256
|
+
|
|
257
|
+
```sh
|
|
258
|
+
sks --help
|
|
259
|
+
sks status --json
|
|
260
|
+
sks review --staged
|
|
261
|
+
sks doctor --json
|
|
262
|
+
sks update-check
|
|
263
|
+
sks update
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
`sks update` runs setup reconciliation even when the package is already current.
|
|
267
|
+
It preserves user-authored configuration and cleans up recognized SKS-owned
|
|
268
|
+
legacy assets. If a check needs attention, follow its reported recovery action
|
|
269
|
+
in your terminal.
|
|
270
|
+
|
|
271
|
+
## SKS Center (macOS)
|
|
272
|
+
|
|
273
|
+
Open **SKS Control Center** from the SKS menu bar.
|
|
274
|
+
The Menu Bar app (with the Control Center) is built from source on macOS when you run
|
|
275
|
+
`npm i -g sneakoscope` interactively in a terminal, and by `sks install`, `sks doctor --fix`,
|
|
276
|
+
`sks update`, or `sks menubar install`. Dependency, CI, and piped installs never touch your
|
|
277
|
+
home directory; set `SKS_POSTINSTALL_MENUBAR=1` to force the build in a script, or
|
|
278
|
+
`SKS_POSTINSTALL_NO_MENUBAR=1` to skip it.
|
|
279
|
+
|
|
280
|
+
| Page | Use it to |
|
|
281
|
+
| --- | --- |
|
|
282
|
+
| Overview | Check local health and find the next action. |
|
|
283
|
+
| Connections | Connect Codex-LB or OpenRouter, choose authentication priority, and manage exposed models. |
|
|
284
|
+
| Updates | Check and update SKS and Codex CLI, with operation progress and recovery details. |
|
|
285
|
+
| MCP Servers | Manage server configuration, health checks, and authentication. |
|
|
286
|
+
| Image Generation | Keep Codex's default image generation, or route it through the Desktop Bridge to an OpenRouter image model you pick. |
|
|
287
|
+
| Diagnostics | Inspect issues and run targeted checks. |
|
|
288
|
+
| Settings | Configure lifecycle behavior, notifications, and advanced options. |
|
|
289
|
+
| Remote Coding | Find the independent [Paseo companion](https://paseo.sh/docs) and its setup guidance. |
|
|
290
|
+
|
|
291
|
+
Connection controls appear first. Model catalogs, bridge diagnostics, and
|
|
292
|
+
advanced settings expand when you need them.
|
|
293
|
+
|
|
294
|
+
## Desktop Bridge
|
|
295
|
+
|
|
296
|
+
One local bridge manages routing for independent **Codex-LB** and **OpenRouter**
|
|
297
|
+
profiles. ChatGPT sign-in remains owned by Codex. Provider choices and existing
|
|
298
|
+
session pins remain authoritative; unavailable routes are reported explicitly.
|
|
299
|
+
|
|
300
|
+
In **Connections**, turn on **Prefer Codex-LB** to use the saved Codex-LB
|
|
301
|
+
connection first for eligible models. The switch distinguishes a saved preference
|
|
302
|
+
from connection readiness: **on but unavailable** means setup needs attention.
|
|
303
|
+
Turning it off restores the configured official-model routing preference.
|
|
304
|
+
|
|
305
|
+
The same controls are available from the CLI:
|
|
306
|
+
|
|
307
|
+
```sh
|
|
308
|
+
sks bridge auth-priority status --json
|
|
309
|
+
sks bridge auth-priority on --json
|
|
310
|
+
sks bridge auth-priority off --json
|
|
311
|
+
sks bridge status --json
|
|
312
|
+
sks bridge route explain gpt-6-astra --json
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Enter credentials through the native connection dialog or the CLI's
|
|
316
|
+
`--api-key-stdin` option. See the [provider guide](docs/codex-lb.md) for
|
|
317
|
+
configuration, transport checks, and recovery commands.
|
|
318
|
+
|
|
319
|
+
## Image generation
|
|
320
|
+
|
|
321
|
+
SKS image routes (image generation, UX-Review callouts, PPT assets, slide
|
|
322
|
+
reviews) follow one image mode. By default they use Codex's own image
|
|
323
|
+
generation. Turn on a custom image model on the **Image Generation** page to
|
|
324
|
+
send every SKS image through the Desktop Bridge to an OpenRouter image model
|
|
325
|
+
you pick. SKS pins no image model and records which model made each image.
|
|
326
|
+
|
|
327
|
+
```sh
|
|
328
|
+
sks imagegen status --json
|
|
329
|
+
sks imagegen models --json
|
|
330
|
+
sks imagegen enable --model black-forest-labs/flux.2-klein-4b
|
|
331
|
+
sks imagegen generate --prompt "App icon, flat, blue" --out icon.png
|
|
332
|
+
sks imagegen disable
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
See [Image generation](docs/image-generation.md) for both modes, evidence
|
|
336
|
+
sidecars, and the Jev choices.
|
|
337
|
+
|
|
338
|
+
## Naruto workflow
|
|
144
339
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
340
|
+
The parent orchestrates: it decomposes the task, spawns a child for each
|
|
341
|
+
disjoint slice, waits, and owns integration and final verification. It does not
|
|
342
|
+
implement slices itself. The SKS PreToolUse hook denies parent source edits
|
|
343
|
+
until the first child starts and while children are still running. Children
|
|
344
|
+
receive bounded tasks and do not spawn children.
|
|
345
|
+
|
|
346
|
+
No model family is pinned. Every child runs the newest model of the tier its
|
|
347
|
+
work needs, read from the Codex models cache, so a new model family is used as
|
|
348
|
+
soon as Codex lists it:
|
|
349
|
+
|
|
350
|
+
| Work | Tier | Effort | Today |
|
|
351
|
+
| --- | --- | --- | --- |
|
|
352
|
+
| Tiny mechanical tasks | fast | low | `gpt-6-luna` |
|
|
353
|
+
| Instructed implementation | balanced | low | `gpt-6-sol` |
|
|
354
|
+
| Exploration, large-context reads, and direct tool operation | context | medium | `gpt-6-sol` |
|
|
355
|
+
| Planning, review, debugging, and focused judgment | deep | max | `gpt-6-astra` |
|
|
356
|
+
|
|
357
|
+
With Jev mode on, Jev picks the tier for every spawn, every gated parent edit,
|
|
358
|
+
the plan, and the context, so the parent spends no time on those choices. It
|
|
359
|
+
command always
|
|
360
|
+
wins. A stored role-model preference on a current model wins in both modes.
|
|
151
361
|
|
|
152
362
|
An active Codex task keeps the user's selected main model, effort, and service
|
|
153
363
|
tier. Codex native `/goal` remains the persisted goal owner. Parallelism depends
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"canonical_name": "sks",
|
|
6
6
|
"trusted_sha256": [
|
|
7
|
+
"8aa34586ba331f0447668c2ce863fe6c9ec4f881828ebed26ca5ecc754d66840",
|
|
7
8
|
"d0288d27c8bc1c89decb258c6805ed4286cd0d65371ef0eec453be233b39a2a1",
|
|
8
9
|
"905fc5472d36f0780b56f0e09404f42ea20293b1a4615d2050b7db3043231dbd",
|
|
9
10
|
"6d90142f3617a8ae92d9af8cb2fc18ab58a7d0070868504e1fe89e0effc305a5",
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
{
|
|
14
15
|
"canonical_name": "sks-align",
|
|
15
16
|
"trusted_sha256": [
|
|
17
|
+
"9eef36214be7e07a963eb36bb1df2c025cd0578b7419ddf4fd307081a2b62093",
|
|
16
18
|
"b9db40d6e1dd2fc6e4665a2b30738d370da955cd4d6e86c88bd85059c7faa08c",
|
|
17
19
|
"c485f39d4873adb9793672f7dcf4e956595ffb9dcbb032b3ffb0515b5857d31d",
|
|
18
20
|
"e98e1b67e228bec5c37d00c0206a2e01d2da698a83c80b527105bf04a19c136a"
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
{
|
|
56
58
|
"canonical_name": "sks-commit",
|
|
57
59
|
"trusted_sha256": [
|
|
60
|
+
"63cad87de9187f67e001949b0edcf39344626748f8f168bed257316dc1684d53",
|
|
58
61
|
"aa2eeaa6be6d635170a8ecfc76353db95552f543cca107f239054c492409e3a9",
|
|
59
62
|
"aea41328993b11e26e26ae94df6ed44312d1570ed39448531428b53ade9d7461",
|
|
60
63
|
"943c6dcf822df086b320140e74404d4c7bcfd531264e25ada6624b5009f26207"
|
|
@@ -63,6 +66,7 @@
|
|
|
63
66
|
{
|
|
64
67
|
"canonical_name": "sks-commit-and-push",
|
|
65
68
|
"trusted_sha256": [
|
|
69
|
+
"2307093e26513a26e71ac6cdfcf3fd1598979c6035525ee5d3de58820cb4adda",
|
|
66
70
|
"acd6c7845c58d72234776e4608e1440583c62c38b513625d1272e4a413a40fb6",
|
|
67
71
|
"8e4ff7a39440c82e6c67a67d5bb267c69f508cedb5d9d5a93261f4dcdf8e8a1a",
|
|
68
72
|
"b005b4a7456b80b95768ad358fe5950bf517483c6de71aec14ee3d1c600cc074"
|
|
@@ -125,6 +129,7 @@
|
|
|
125
129
|
{
|
|
126
130
|
"canonical_name": "sks-design-artifact-expert",
|
|
127
131
|
"trusted_sha256": [
|
|
132
|
+
"6881c1acff42b3cc760f089165a6ea753c774882bf0ec989b71f14936e894690",
|
|
128
133
|
"6db9a7088e5f8d21dec9c8eed00abe665e1e89f19dcbb6d8472d77e4551cb556",
|
|
129
134
|
"a09daba0a2e479a68ed81ec6fba8d70e54c8398ed86f3d1879f874b98480b97c",
|
|
130
135
|
"4a28d166eaf0bc4477b566b056034f972a7034165e36d8186daa9947bf92e3cf"
|
|
@@ -133,6 +138,7 @@
|
|
|
133
138
|
{
|
|
134
139
|
"canonical_name": "sks-design-system-builder",
|
|
135
140
|
"trusted_sha256": [
|
|
141
|
+
"9075bc17039da34ddd7d798009fdbcdedb8d03358a29c9a925d194bd76e9dcc4",
|
|
136
142
|
"47654c9f74317abbd0a5a75f89cd2d563708e8234e8887cc7ab39bf49030abaa",
|
|
137
143
|
"0a41e6ace960abaaf6abf5e7b1e53fd39f414e1e00b59fa725f2db9e3eb05b58",
|
|
138
144
|
"c4f0007cad5774510bdc55e2815ce0911c220afa8d5dd4efc327ba1231c8f3da"
|
|
@@ -141,6 +147,7 @@
|
|
|
141
147
|
{
|
|
142
148
|
"canonical_name": "sks-design-ui-editor",
|
|
143
149
|
"trusted_sha256": [
|
|
150
|
+
"c3bc8bbaac134f7d742cd5e4bed7dd61a99655c54a6bd42f669e6bdd033156fb",
|
|
144
151
|
"2f9087664d8abe938a6dfbeaef5301ef00531e34a15506508e1d6d6b7132b894",
|
|
145
152
|
"6c24e950a12dec52c625964069c7c21a0220a58e0f69f977d802f44fdb03a940",
|
|
146
153
|
"83a806cc93a3c5342e0dccfc6a45983382d5bf74d1226c4e3288228db22b737a",
|
|
@@ -200,6 +207,7 @@
|
|
|
200
207
|
{
|
|
201
208
|
"canonical_name": "sks-goal",
|
|
202
209
|
"trusted_sha256": [
|
|
210
|
+
"942c5e8db400cc1cd2b5ca9527124135fb4b8d9e8289338632d8929691aa54ed",
|
|
203
211
|
"36c12285a339f9505fd88d6d9ea5691e451449f0bf8f55c21f51f0d715623235",
|
|
204
212
|
"5ab1ac18fc265c375bae92ff23ddbd80c378484d6629c378f0e9270e660ded11",
|
|
205
213
|
"867544877ac04df6e0232d6d425797e7fab2cceff9a7176a3c9e61f8c4a416d7",
|
|
@@ -276,6 +284,7 @@
|
|
|
276
284
|
{
|
|
277
285
|
"canonical_name": "sks-image-ux-review",
|
|
278
286
|
"trusted_sha256": [
|
|
287
|
+
"643400c1682aaa4a84782e3740eb14efb0ddb905a84c086bd9a0f8afdabd5f02",
|
|
279
288
|
"c7a5ea91adb0d45e652066cdb73f514cc7fcb47121cc13cce5e177f94630a42a",
|
|
280
289
|
"54d4169dc7f362ac9fe2d090bd2612e41d30acbc3e883d6bd382929bdfb9459e",
|
|
281
290
|
"9293346873b5fb25a9d93b630064a2c8ceede2bfdfa4c6ffe7fbb7f64da6595c"
|
|
@@ -284,6 +293,7 @@
|
|
|
284
293
|
{
|
|
285
294
|
"canonical_name": "sks-imagegen",
|
|
286
295
|
"trusted_sha256": [
|
|
296
|
+
"0f3ba271f2977d1124b8236e25f5e05a3d03af234652e39601dc5054346e306c",
|
|
287
297
|
"ebad63dae59ff70a4404148d09bffaca69e6c43e88d6e9f6f3d0dc4d5a4c65f6",
|
|
288
298
|
"478e3d8f805eed55c3f3e6c2069142482a7dbd8fa5d9a59f03b136e0e1cb77d0",
|
|
289
299
|
"a7f466ba1829a757f38432fbe8c3a672e22e91948537dafe8f8ce09561d2256e",
|
|
@@ -293,6 +303,7 @@
|
|
|
293
303
|
{
|
|
294
304
|
"canonical_name": "sks-imagegen-source-scout",
|
|
295
305
|
"trusted_sha256": [
|
|
306
|
+
"84957463d326f0f7028fc47aabb3f1857c76f13534e3aed1c9fc1b075896dbd1",
|
|
296
307
|
"b306134faf487b86e11a9736ea1ed60d2335eef858e58bedc80fd3dc4ff7137c",
|
|
297
308
|
"440f361fb29afcbb6f6cdc88c6a7318953b4c8fd3181ef7c6d8187f091d18745",
|
|
298
309
|
"95faf4358f1c6567ca6894bfb577629f14a23d623716be70325c0ff9a893d42e",
|
|
@@ -324,14 +335,14 @@
|
|
|
324
335
|
{
|
|
325
336
|
"canonical_name": "sks-naruto",
|
|
326
337
|
"trusted_sha256": [
|
|
338
|
+
"c88999663811a50d096b7cbb696fbea5b8f72707bcbf4a232bb07fe3a10cb2a6",
|
|
339
|
+
"b2eb207b2773ab1995ee6e113ba6f3b64de43389e76aef4a0f06d4845ff86223",
|
|
327
340
|
"65e19a5d16f486b13541048c239e828f8039bfc6e38bafd7949d9c936fe4b5b2",
|
|
328
341
|
"da43debf97f0b4a1583d8202a7306aca97ac97865accf9bca8f41d75c84a1cb9",
|
|
329
342
|
"b981bea4183376c6c0204941ad6c2e78782e2cdea4f8d25cc85630c609faaf95",
|
|
330
343
|
"5df9c9678eb68fd79ceb998ae7a52dd54dc92336ad5169e8a01acca89f76bd60",
|
|
331
344
|
"a1219f6dbad9c8c185953125ef0b8dccf081aa01efb8e8acaa543c6214ac049c",
|
|
332
345
|
"d0d5968e78ac25e1d3e588735de1ddbcf149cfb3165edebca5dec1ed7c7a5c46",
|
|
333
|
-
"34222c72e4e1ead3584907f4d905444b7de820283ee7348018f110d5e6b04461",
|
|
334
|
-
"f8e808622e222b4ad7dcb2907e5f06a890db83139ae443ec6c8c33781dfa3e37",
|
|
335
346
|
"49b5e3dcc1b537b49c2cf09e5b875cb16acb05c622b22798e265e64dacd8ac90"
|
|
336
347
|
]
|
|
337
348
|
},
|
|
@@ -346,6 +357,8 @@
|
|
|
346
357
|
{
|
|
347
358
|
"canonical_name": "sks-pipeline-runner",
|
|
348
359
|
"trusted_sha256": [
|
|
360
|
+
"15159b6f6edea91be29612fe3cee2047d8ec47f4f7c95a33601198a9bfec3eda",
|
|
361
|
+
"6f38d3387e4ab020291afe7f74713b135543e52707f5bfbffa6b3584542f45a5",
|
|
349
362
|
"7749638f1e8393f3beb1f7b0c37195dd0463abdb6fd7da5d31b3d816ee91fa37",
|
|
350
363
|
"fd06dfb27be41e5ffec3e3ec8c5362289f5919cf2afa9da5ab6b97e7baa4a0ac",
|
|
351
364
|
"66e105773b8e042eec5d5679b97b7cb305cad8d45671034907fbfa728fc4d68a",
|
|
@@ -356,6 +369,7 @@
|
|
|
356
369
|
{
|
|
357
370
|
"canonical_name": "sks-plan",
|
|
358
371
|
"trusted_sha256": [
|
|
372
|
+
"81b49b026cd6761a1b63029d8d39b830e0801a7f3d2f9a8609127769173ddd4e",
|
|
359
373
|
"7795867b38a5f169924125850f137c31995cf28000f74284839530a68ace156a",
|
|
360
374
|
"b6f3b09230e9809acf4e13df2de6af3c75a8534e8890d6560664ebfc2e4072f8"
|
|
361
375
|
]
|
|
@@ -363,6 +377,7 @@
|
|
|
363
377
|
{
|
|
364
378
|
"canonical_name": "sks-ppt",
|
|
365
379
|
"trusted_sha256": [
|
|
380
|
+
"a25e537ff49b5bffdc093a5f772a8d218003ca1bb81e0aa304561684a9551b31",
|
|
366
381
|
"fba3f438b9f22dae0813cd12bf310539a7d2b71c8cd9322eb840514e24884eaf",
|
|
367
382
|
"c9a0d90e12560dd3f04959869051370e6baf46eda6eb63f708ea1661c5c9d041",
|
|
368
383
|
"1d4de05afd42ee5739c0ed925af9e0ac4785fc746e659c60d3d908d465e6386c",
|
|
@@ -373,6 +388,8 @@
|
|
|
373
388
|
{
|
|
374
389
|
"canonical_name": "sks-prompt-pipeline",
|
|
375
390
|
"trusted_sha256": [
|
|
391
|
+
"5e423981384fc3825c74327c4ca0fe09905a0dc81a533676c7e76ebb385348fc",
|
|
392
|
+
"f82a103e7962e416961add515d7b3e65df89848dec1fbb9319bd49d7f1dac982",
|
|
376
393
|
"93fd938dccd65d9b4d1dd140b60e1baedc627e7fcc54f9afd95eb2e44efd1143",
|
|
377
394
|
"033bb114ec1fac3f8c312f698b1861ed4c2ce6f65c06f4f1a872c4b101b74b92",
|
|
378
395
|
"e7c8ef56d38fdc4879c983f7d6706f26fc1cf0a60c508836bd628e815700bcc3",
|
|
@@ -390,6 +407,7 @@
|
|
|
390
407
|
{
|
|
391
408
|
"canonical_name": "sks-reasoning-router",
|
|
392
409
|
"trusted_sha256": [
|
|
410
|
+
"b0f458caa1c3bd7bb7241a09b80fce5700aeb99b340e84c08a9b2b66bc875ba7",
|
|
393
411
|
"41e14e8d5b93d743096664869ee68c41c86e911b0bbc165bdcd10e4a45faa4b6",
|
|
394
412
|
"03d68436e568b3cee2bffc6ca58819019ca406f7b648ef4704e3465c7c83c114",
|
|
395
413
|
"647f730520a1c7dc89c2642f5b8502624c65a861ae41aecf1fb137db40fd0611",
|
|
@@ -419,6 +437,7 @@
|
|
|
419
437
|
{
|
|
420
438
|
"canonical_name": "sks-research",
|
|
421
439
|
"trusted_sha256": [
|
|
440
|
+
"b7280ca8a5ccf4304d25e97522d57968d20af6ec9f03f7d55a251ebcf8666236",
|
|
422
441
|
"d61163446ebc429974aad8467653ddb5948739978600e9c27bff385fc53968ba",
|
|
423
442
|
"8903022e98fa470cd764f7c8d1b28d4f996d6daf146260f20548acbe1276c55a",
|
|
424
443
|
"2e96f95315d99b645d4171ba4648d9f9218ec3e98dcd6d363b5de522d2e1bfe3"
|
|
@@ -96,7 +96,8 @@ const COMMAND_MANIFEST_LITE_BASE = [
|
|
|
96
96
|
{ name: 'bench', summary: 'Run core trust-kernel benchmark budgets', maturity: 'beta' },
|
|
97
97
|
{ name: 'mcp-server', summary: 'Run a stdio MCP server exposing SKS commands as tools for MCP-capable agent hosts', maturity: 'beta', skipMigrationGate: true, allowedDuringActiveRoute: true },
|
|
98
98
|
{ name: 'agent-bridge', summary: 'Register SKS tools or run read-only tools with native Astra async calling', maturity: 'beta', readonly: true, diagnostic: true },
|
|
99
|
-
{ name: 'decision', summary: 'Manage optional Jev decisions through OpenRouter: status, enable, disable, probe, evaluate', maturity: 'labs', skipMigrationGate: true, allowedDuringActiveRoute: true }
|
|
99
|
+
{ name: 'decision', summary: 'Manage optional Jev decisions through OpenRouter: status, enable, disable, probe, evaluate', maturity: 'labs', skipMigrationGate: true, allowedDuringActiveRoute: true },
|
|
100
|
+
{ name: 'imagegen', summary: 'Generate images with the active SKS image mode (Codex default or a custom OpenRouter model): status, models, enable, disable, generate', maturity: 'beta', skipMigrationGate: true, allowedDuringActiveRoute: true }
|
|
100
101
|
];
|
|
101
102
|
const SAFE_COMMAND_CONTRACT_LITE = {
|
|
102
103
|
risk: 'R2',
|
|
@@ -109,6 +110,7 @@ const SAFE_COMMAND_CONTRACT_LITE = {
|
|
|
109
110
|
const COMMAND_CONTRACT_OVERRIDES_LITE = {
|
|
110
111
|
align: { latency: 'long', supportsJson: true, inputProfile: 'json-only' },
|
|
111
112
|
decision: { risk: 'R2', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
113
|
+
imagegen: { risk: 'R2', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
112
114
|
cleanup: { risk: 'R3', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
113
115
|
autoresearch: { latency: 'long' },
|
|
114
116
|
bench: { latency: 'long' },
|
|
@@ -254,11 +254,19 @@ const COMMAND_DEFINITIONS = {
|
|
|
254
254
|
activeRoutePolicy: 'always'
|
|
255
255
|
})),
|
|
256
256
|
packageRequiredFiles: ['dist/commands/decision.js']
|
|
257
|
+
},
|
|
258
|
+
imagegen: {
|
|
259
|
+
...skipMigrationGate(entry('beta', 'Generate images with the active SKS image mode (Codex default or a custom OpenRouter model): status, models, enable, disable, generate', 'dist/commands/imagegen.js', directCommand(() => import('../commands/imagegen.js'), 'dist/commands/imagegen.js'), {
|
|
260
|
+
allowedDuringActiveRoute: true,
|
|
261
|
+
activeRoutePolicy: 'always'
|
|
262
|
+
})),
|
|
263
|
+
packageRequiredFiles: ['dist/commands/imagegen.js']
|
|
257
264
|
}
|
|
258
265
|
};
|
|
259
266
|
const COMMANDS_WITH_LEGACY_CONTRACT_OVERRIDES = applyCommandContractOverrides(COMMAND_DEFINITIONS, {
|
|
260
267
|
align: { latency: 'long', supportsJson: true, inputProfile: 'json-only' },
|
|
261
268
|
decision: { risk: 'R2', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
269
|
+
imagegen: { risk: 'R2', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
262
270
|
cleanup: { risk: 'R3', latency: 'long', supportsJson: true, remoteAllowed: false, inputProfile: 'json-only' },
|
|
263
271
|
autoresearch: { latency: 'long' },
|
|
264
272
|
bench: { latency: 'long' },
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IMAGEGEN_MODEL } from '../core/imagegen/imagegen-model-policy.js';
|
|
2
1
|
import path from 'node:path';
|
|
3
2
|
import fsp from 'node:fs/promises';
|
|
4
3
|
import { stdin as input, stdout as output } from 'node:process';
|
|
@@ -70,7 +69,7 @@ export async function postinstall({ bootstrap }) {
|
|
|
70
69
|
console.log('Configure providers explicitly with `sks bridge provider configure codex-lb ...` or `sks bridge provider configure openrouter ...`.');
|
|
71
70
|
const imagegenRepair = await ensureCodexImagegenDuringInstall();
|
|
72
71
|
if (imagegenRepair.status === 'ready')
|
|
73
|
-
console.log(
|
|
72
|
+
console.log('Image generation ready for the active SKS image mode (output not verified).');
|
|
74
73
|
else if (imagegenRepair.status === 'recovered')
|
|
75
74
|
console.log('Codex App Image Gen: recovered and re-detected. Start a new Codex/Work task; restart the desktop app only if the new task still lacks $imagegen.');
|
|
76
75
|
else if (imagegenRepair.status === 'blocked')
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IMAGEGEN_MODEL } from '../core/imagegen/imagegen-model-policy.js';
|
|
2
1
|
import os from 'node:os';
|
|
3
2
|
import path from 'node:path';
|
|
4
3
|
import { projectRoot, exists, formatBytes, nowIso, readText, writeJsonAtomic } from '../core/fsx.js';
|
|
@@ -127,7 +126,8 @@ export async function run(_command, args = [], deps = {}) {
|
|
|
127
126
|
const doctorFix = flag(args, '--fix');
|
|
128
127
|
const homeDir = path.resolve(deps.home || process.env.HOME || os.homedir());
|
|
129
128
|
const globalOnly = doctorGlobalOnlySelection({ args, doctorFix, root, home: homeDir }).global_only;
|
|
130
|
-
|
|
129
|
+
const doctorProfile = doctorProfileFromArgs(args, doctorFix);
|
|
130
|
+
if (doctorFix && doctorProfile !== 'migration') {
|
|
131
131
|
const conflictScan = await scanHarnessConflicts(root);
|
|
132
132
|
if (conflictScan.hard_block) {
|
|
133
133
|
const blocked = {
|
|
@@ -151,7 +151,6 @@ export async function run(_command, args = [], deps = {}) {
|
|
|
151
151
|
return blocked;
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
const doctorProfile = doctorProfileFromArgs(args, doctorFix);
|
|
155
154
|
if (!flag(args, '--json')) {
|
|
156
155
|
cliUi.banner('doctor');
|
|
157
156
|
cliUi.step(doctorFix ? 'repairing and validating' : 'validating');
|
|
@@ -1189,7 +1188,7 @@ async function runDoctor(args = [], root, doctorFix, deps = {}) {
|
|
|
1189
1188
|
blockers: ['codex_imagegen_current_task_tool_manifest_unverified', 'codex_imagegen_real_output_unverified'],
|
|
1190
1189
|
manual_actions: [
|
|
1191
1190
|
'Start a fresh Codex/Work task so $imagegen is present in its tool manifest.',
|
|
1192
|
-
|
|
1191
|
+
'Run `sks imagegen generate` (it follows the active SKS image mode) and bind the raster output path to route evidence.'
|
|
1193
1192
|
],
|
|
1194
1193
|
communication_test: {
|
|
1195
1194
|
level: 'flag_level',
|