sneakoscope 1.18.6 → 1.18.8

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.
Files changed (134) hide show
  1. package/README.md +58 -13
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/crates/sks-core/src/main.rs +1 -1
  5. package/dist/.sks-build-stamp.json +4 -4
  6. package/dist/bin/sks.js +1 -1
  7. package/dist/build-manifest.json +39 -9
  8. package/dist/cli/command-registry.js +2 -2
  9. package/dist/commands/codex-app.js +17 -2
  10. package/dist/commands/codex.js +3 -2
  11. package/dist/commands/dfix.d.ts +14 -0
  12. package/dist/commands/image-ux-review.d.ts +170 -0
  13. package/dist/commands/ppt.d.ts +163 -0
  14. package/dist/commands/tmux.d.ts +2 -0
  15. package/dist/core/agents/agent-codex-cockpit.d.ts +3 -0
  16. package/dist/core/agents/agent-command-surface.d.ts +5 -0
  17. package/dist/core/agents/agent-command-surface.js +7 -2
  18. package/dist/core/agents/agent-merge-coordinator.d.ts +23 -0
  19. package/dist/core/agents/agent-merge-coordinator.js +52 -0
  20. package/dist/core/agents/agent-orchestrator.d.ts +163 -0
  21. package/dist/core/agents/agent-orchestrator.js +119 -4
  22. package/dist/core/agents/agent-patch-apply-worker.d.ts +31 -0
  23. package/dist/core/agents/agent-patch-apply-worker.js +236 -0
  24. package/dist/core/agents/agent-patch-proof.d.ts +25 -0
  25. package/dist/core/agents/agent-patch-proof.js +47 -0
  26. package/dist/core/agents/agent-patch-queue.d.ts +48 -0
  27. package/dist/core/agents/agent-patch-queue.js +78 -0
  28. package/dist/core/agents/agent-patch-schema.d.ts +29 -0
  29. package/dist/core/agents/agent-patch-schema.js +52 -0
  30. package/dist/core/agents/agent-proof-evidence.d.ts +13 -0
  31. package/dist/core/agents/agent-proof-evidence.js +25 -2
  32. package/dist/core/agents/agent-runner-codex-exec.js +23 -15
  33. package/dist/core/agents/agent-schema.d.ts +11 -1
  34. package/dist/core/agents/agent-task-graph.d.ts +16 -0
  35. package/dist/core/agents/agent-task-graph.js +23 -9
  36. package/dist/core/agents/agent-work-partition.d.ts +12 -0
  37. package/dist/core/agents/agent-work-partition.js +3 -1
  38. package/dist/core/agents/route-collaboration-ledger.d.ts +163 -0
  39. package/dist/core/auto-review.d.ts +2 -0
  40. package/dist/core/auto-review.js +71 -24
  41. package/dist/core/codex/appshots-detector.d.ts +20 -0
  42. package/dist/core/codex/appshots-detector.js +29 -0
  43. package/dist/core/codex/appshots-operator-policy.d.ts +23 -0
  44. package/dist/core/codex/appshots-operator-policy.js +24 -0
  45. package/dist/core/codex/codex-0-134-compat.d.ts +76 -0
  46. package/dist/core/codex/codex-0-134-compat.js +194 -0
  47. package/dist/core/codex/managed-proxy-env.d.ts +14 -0
  48. package/dist/core/codex/managed-proxy-env.js +50 -0
  49. package/dist/core/codex-adapter.js +2 -0
  50. package/dist/core/codex-app.d.ts +6 -1
  51. package/dist/core/codex-app.js +111 -8
  52. package/dist/core/codex-compat/codex-compat-report.d.ts +90 -4
  53. package/dist/core/codex-compat/codex-compat-report.js +39 -8
  54. package/dist/core/codex-compat/codex-version-policy.d.ts +9 -3
  55. package/dist/core/codex-compat/codex-version-policy.js +21 -12
  56. package/dist/core/codex-compat/codex-version.d.ts +2 -0
  57. package/dist/core/codex-compat/codex-version.js +4 -1
  58. package/dist/core/commands/basic-cli.d.ts +2 -0
  59. package/dist/core/commands/computer-use-command.js +31 -2
  60. package/dist/core/commands/dfix-command.d.ts +14 -0
  61. package/dist/core/commands/dfix-command.js +4 -0
  62. package/dist/core/commands/gc-command.js +2 -1
  63. package/dist/core/commands/image-ux-review-command.d.ts +170 -0
  64. package/dist/core/commands/image-ux-review-command.js +41 -8
  65. package/dist/core/commands/mad-sks-command.js +65 -18
  66. package/dist/core/commands/ppt-command.d.ts +163 -0
  67. package/dist/core/commands/qa-loop-command.js +74 -10
  68. package/dist/core/commands/research-command.js +8 -3
  69. package/dist/core/commands/run-command.js +3 -3
  70. package/dist/core/commands/team-command.js +14 -4
  71. package/dist/core/computer-use-status.js +5 -5
  72. package/dist/core/decision-contract.js +2 -1
  73. package/dist/core/dfix.d.ts +14 -0
  74. package/dist/core/dfix.js +14 -0
  75. package/dist/core/feature-registry.js +10 -2
  76. package/dist/core/fsx.d.ts +1 -1
  77. package/dist/core/fsx.js +1 -1
  78. package/dist/core/hermes.js +12 -0
  79. package/dist/core/hooks-runtime.js +1 -1
  80. package/dist/core/image-ux-review/imagegen-adapter.js +16 -15
  81. package/dist/core/image-ux-review/recapture.js +9 -3
  82. package/dist/core/image-ux-review.d.ts +6 -0
  83. package/dist/core/image-ux-review.js +18 -9
  84. package/dist/core/imagegen/imagegen-capability.d.ts +21 -0
  85. package/dist/core/imagegen/imagegen-capability.js +50 -16
  86. package/dist/core/init.js +14 -15
  87. package/dist/core/mad-sks/permission-model.d.ts +3 -0
  88. package/dist/core/mad-sks/permission-model.js +3 -0
  89. package/dist/core/mcp/mcp-0-134-policy.d.ts +37 -0
  90. package/dist/core/mcp/mcp-0-134-policy.js +226 -0
  91. package/dist/core/openclaw.js +13 -1
  92. package/dist/core/pipeline-internals/runtime-core.js +11 -9
  93. package/dist/core/pipeline-internals/runtime-gates.js +9 -6
  94. package/dist/core/ppt.js +1 -1
  95. package/dist/core/proof/route-adapter.d.ts +13 -0
  96. package/dist/core/proof/route-adapter.js +25 -1
  97. package/dist/core/proof/route-finalizer.d.ts +13 -0
  98. package/dist/core/proof/route-finalizer.js +6 -5
  99. package/dist/core/proof/runtime-truth-matrix.d.ts +1 -1
  100. package/dist/core/proof/runtime-truth-matrix.js +49 -5
  101. package/dist/core/proof/selftest-proof-fixtures.d.ts +13 -0
  102. package/dist/core/qa-loop.d.ts +4 -2
  103. package/dist/core/qa-loop.js +27 -17
  104. package/dist/core/questions.d.ts +1 -1
  105. package/dist/core/questions.js +3 -3
  106. package/dist/core/recallpulse.js +1 -1
  107. package/dist/core/retention.d.ts +18 -1
  108. package/dist/core/retention.js +306 -15
  109. package/dist/core/routes.d.ts +9 -2
  110. package/dist/core/routes.js +47 -17
  111. package/dist/core/source-intelligence/appshots-evidence.d.ts +54 -0
  112. package/dist/core/source-intelligence/appshots-evidence.js +108 -0
  113. package/dist/core/source-intelligence/codex-history-search.d.ts +26 -0
  114. package/dist/core/source-intelligence/codex-history-search.js +71 -0
  115. package/dist/core/source-intelligence/source-intelligence-proof.d.ts +4 -0
  116. package/dist/core/source-intelligence/source-intelligence-proof.js +9 -1
  117. package/dist/core/source-intelligence/source-intelligence-runner.d.ts +18 -0
  118. package/dist/core/source-intelligence/source-intelligence-runner.js +16 -3
  119. package/dist/core/strategy/adhd-orchestrating-gate.d.ts +179 -0
  120. package/dist/core/strategy/adhd-orchestrating-gate.js +234 -0
  121. package/dist/core/strategy/strategy-compiler.d.ts +59 -0
  122. package/dist/core/strategy/strategy-compiler.js +123 -0
  123. package/dist/core/strategy/strategy-gate.d.ts +26 -0
  124. package/dist/core/strategy/strategy-gate.js +38 -0
  125. package/dist/core/tmux-ui.d.ts +3 -1
  126. package/dist/core/tmux-ui.js +36 -4
  127. package/dist/core/triwiki-attention.js +2 -2
  128. package/dist/core/trust-kernel/trust-status.d.ts +1 -1
  129. package/dist/core/verification/verification-proof.js +1 -1
  130. package/dist/core/verification/verification-result.d.ts +6 -0
  131. package/dist/core/version.d.ts +1 -1
  132. package/dist/core/version.js +1 -1
  133. package/dist/scripts/release-parallel-check.js +79 -1
  134. package/package.json +30 -2
package/README.md CHANGED
@@ -6,11 +6,17 @@ Sneakoscope Codex (`sks`) is a Codex CLI/App harness that makes repeatable Codex
6
6
 
7
7
  SKS does not try to clone every other harness. It focuses on one thing: making Codex work auditable, visual-evidence-bound, safety-gated, and reproducible through Completion Proof.
8
8
 
9
+ ## LLM Init Prompt for Hermes / OpenClaw Agent Builders
10
+
11
+ ```text
12
+ Set up this agent project with Sneakoscope Codex. Use [[mandarange/Sneakoscope-Codex](https://github.com/mandarange/Sneakoscope-Codex)] as the repo reference and [npm i -g sneakoscope] as the recommended global install command, then run the appropriate `sks` setup, doctor, Codex App, and proof checks for this repo. Keep generated SKS state out of source control unless documented, and record every version-facing change in CHANGELOG.md.
13
+ ```
14
+
9
15
  ![Sneakoscope Codex Trust Layer](docs/assets/sneakoscope-architecture-pipeline.jpg)
10
16
 
11
17
  ## Current Release
12
18
 
13
- SKS **1.18.6** closes the zero-gap runtime truth loop: proof policy now reports every runtime subsystem separately, trust reports surface those subsystem proof levels, runtime truth matrix evidence is generated from live release artifacts, cleanup verifies process/tree/tmux/temp/lock after-states, and MAD-SKS writes explicit Warp/tmux lane proof instead of implying UI visibility.
19
+ SKS **1.18.8** closes the Codex 0.134 ultra-stability loop: the release matrix now covers `--profile` as the primary selector, bounded local Codex history search, managed proxy propagation, MCP 0.134 environment/OAuth/schema/readOnlyHint policy, proof-safe parallel agent patches, runtime truth P6 rows, the 1.18.8 release gate audit, MAD-SKS as general scoped permission widening, gpt-image-2 imagegen as a core evidence capability, and retention cleanup that preserves durable learning while removing finished route scratch.
14
20
 
15
21
  ```bash
16
22
  sks mad-sks plan --target-root <path> --json
@@ -25,11 +31,24 @@ npm run agent:background-terminals
25
31
  npm run agent:tmux-lane-no-flicker
26
32
  npm run agent:cleanup-executor
27
33
  npm run agent:cleanup-executor-v2
34
+ npm run retention:cleanup-safety
28
35
  npm run agent:intelligent-work-graph
29
36
  npm run agent:ast-aware-work-graph
30
37
  npm run proof:fake-vs-real-policy
31
38
  npm run proof:fake-real-policy-v2
32
39
  npm run release:runtime-truth-matrix
40
+ npm run codex:0.134-official-compat
41
+ npm run codex:profile-primary
42
+ npm run codex:managed-proxy-env
43
+ npm run strategy:adhd-orchestrating-gate
44
+ npm run strategy:parallel-modification-plan
45
+ npm run appshots:evidence
46
+ npm run appshots:source-intelligence
47
+ npm run mcp:0.134-modernization
48
+ npm run mcp:readonly-concurrency
49
+ npm run source-intelligence:codex-history-search
50
+ npm run agent:parallel-write-kernel
51
+ npm run release:gate-existence-audit
33
52
  npm run route:blackbox-realism
34
53
  npm run release:real-check
35
54
  npm run agent:backfill-route-blackbox
@@ -37,7 +56,22 @@ npm run team:actual-route-backfill
37
56
  npm run release:readiness
38
57
  ```
39
58
 
40
- Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release gate status lives in [docs/release-readiness.md](docs/release-readiness.md).
59
+ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md); every version-facing change should be recorded there before release. Current release gate status lives in [docs/release-readiness.md](docs/release-readiness.md).
60
+
61
+ ## Retention And Cleanup
62
+
63
+ SKS keeps durable learning context separate from disposable route work files. Durable context includes `.sneakoscope/memory/**`, shared TriWiki records, `.sneakoscope/wiki/context-pack.json`, wrongness memory, image voxels, avoidance rules, route Completion Proof, trust reports, evidence indexes, reflections, and agent proof summaries. These files are treated as the long-term learning and audit chain.
64
+
65
+ Temporary route files are cleaned after a route is closed enough to preserve its proof chain and by `sks gc`: `.sneakoscope/tmp/*`, closed mission `team-inbox/`, `bus/`, `cycles/`, `arenas/`, agent lane/worktree scratch, mission `*.stdout.log` / `*.stderr.log`, and release-parallel raw logs after their inline summaries are written into the JSON/MD report. Post-route cleanup is bounded to the completed route so large mission stores do not stall normal commands; full old/excess mission sweeping remains an explicit `sks gc` operation. Active missions, blocked-route diagnostics, and terminal transcripts stay in place so live debugging and the current route are not disrupted. Old/excess missions that contain proof or learning artifacts are compacted rather than deleted wholesale.
66
+
67
+ ```bash
68
+ sks gc --dry-run --json
69
+ sks gc --json
70
+ sks stats --json
71
+ npm run retention:cleanup-safety
72
+ ```
73
+
74
+ The cleanup contract is policy-backed in `.sneakoscope/policy.json`, but the default posture is now immediate cleanup for short-lived temp files while preserving long-term SKS learning and proof artifacts.
41
75
 
42
76
  ## Documentation
43
77
 
@@ -74,7 +108,12 @@ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release
74
108
  - Fake vs real proof policy: [docs/fake-vs-real-proof-policy.md](docs/fake-vs-real-proof-policy.md)
75
109
  - Runtime truth matrix: [docs/runtime-truth-matrix.md](docs/runtime-truth-matrix.md)
76
110
  - Warp MAD tmux lanes: [docs/warp-mad-tmux-lanes.md](docs/warp-mad-tmux-lanes.md)
77
- - Migration 1.18.5 to 1.18.6: [docs/migration-1.18.5-to-1.18.6.md](docs/migration-1.18.5-to-1.18.6.md)
111
+ - ADHD orchestration gate: [docs/adhd-orchestrating-gate.md](docs/adhd-orchestrating-gate.md)
112
+ - Strategy-first parallel write: [docs/strategy-first-parallel-write.md](docs/strategy-first-parallel-write.md)
113
+ - Appshots pipeline: [docs/appshots-pipeline.md](docs/appshots-pipeline.md)
114
+ - Parallel write agents: [docs/parallel-write-agents.md](docs/parallel-write-agents.md)
115
+ - Agent patch queue: [docs/agent-patch-queue.md](docs/agent-patch-queue.md)
116
+ - Migration 1.18.7 to 1.18.8: [docs/migration-1.18.7-to-1.18.8.md](docs/migration-1.18.7-to-1.18.8.md)
78
117
  - Codex official Goal mode: [docs/codex-official-goal-mode.md](docs/codex-official-goal-mode.md)
79
118
  - Release parallel full coverage: [docs/release-parallel-full-coverage.md](docs/release-parallel-full-coverage.md)
80
119
  - Priority closure P0-P4: [docs/priority-closure-p0-p4.md](docs/priority-closure-p0-p4.md)
@@ -94,6 +133,8 @@ Detailed release history lives in [CHANGELOG.md](CHANGELOG.md). Current release
94
133
 
95
134
  ## 60-second start
96
135
 
136
+ Recommended install: use the global npm package so `sks` and the Codex App `$` skills are refreshed together.
137
+
97
138
  ```sh
98
139
  npm i -g sneakoscope
99
140
  sks root
@@ -117,7 +158,7 @@ sks rust smoke --json
117
158
 
118
159
  ## Install Options
119
160
 
120
- Install globally, then run `sks` from either a project or any global shell location:
161
+ Recommended: install globally with `npm i -g sneakoscope`, then run `sks` from either a project or any global shell location:
121
162
 
122
163
  ```sh
123
164
  npm i -g sneakoscope
@@ -125,7 +166,7 @@ sks root
125
166
  sks doctor
126
167
  ```
127
168
 
128
- `npm i -g sneakoscope` automatically refreshes the `sks` command shim, global Codex App `$` skills, and SKS bootstrap surface. When the install is run from a project, postinstall bootstraps that project. When it is run outside a repo/project marker, postinstall bootstraps the per-user global runtime root instead of writing `.sneakoscope` into a random current directory. `sks root` tells you which root SKS will use.
169
+ `npm i -g sneakoscope` is the recommended install path. It automatically refreshes the `sks` command shim, global Codex App `$` skills, and SKS bootstrap surface. When the install is run from a project, postinstall bootstraps that project. When it is run outside a repo/project marker, postinstall bootstraps the per-user global runtime root instead of writing `.sneakoscope` into a random current directory. `sks root` tells you which root SKS will use.
129
170
 
130
171
  If you only want a one-shot run without keeping `sks` installed globally:
131
172
 
@@ -186,7 +227,7 @@ The default `sks` runtime checks npm for newer `sneakoscope` and `@openai/codex`
186
227
 
187
228
  ### Global Install
188
229
 
189
- Use this when you want `sks` available from any repo:
230
+ Use this recommended path when you want `sks` available from any repo:
190
231
 
191
232
  ```sh
192
233
  npm i -g sneakoscope
@@ -280,7 +321,7 @@ sks codex-lb repair
280
321
  sks
281
322
  ```
282
323
 
283
- Bare `sks` can also prompt for codex-lb auth; SKS stores the base URL/key in `~/.codex/sks-codex-lb.env`, writes the codex-lb Codex CLI / IDE Extension provider block into `~/.codex/config.toml` for Codex App routing, loads the provider env key for tmux launches, and syncs the macOS user launch environment so the Codex App can see `CODEX_LB_API_KEY` after restart. If the provider block disappears but the stored env file is still recoverable, bare `sks`, npm postinstall upgrades, `sks doctor --fix`, and `sks codex-lb repair` restore it with `env_key = "CODEX_LB_API_KEY"`, `supports_websockets = true`, and `requires_openai_auth = false`; PPT/imagegen bridge checks treat that env-key provider as configured without requiring OpenAI OAuth. If an older SKS release left the codex-lb dashboard key only in the shared Codex `auth.json` login cache, SKS migrates that key back into `~/.codex/sks-codex-lb.env` when a codex-lb provider or env base URL is already recoverable. It does not rewrite the shared Codex `auth.json` login cache by default; set `SKS_CODEX_LB_SYNC_CODEX_LOGIN=1` only if you intentionally want the old API-key login-cache behavior. When codex-lb is active, SKS opens a fresh `sks-codex-lb-*` tmux session and sweeps older detached codex-lb sessions for the same repo before launch so stale Responses API chains are not reused. Configured launch paths run a response-chain health check. `previous_response_not_found` is treated as a stateless-LB warning and keeps codex-lb active. Hard failures are surfaced to the user; SKS only bypasses codex-lb when the user chooses OAuth fallback or `SKS_CODEX_LB_AUTOBYPASS=1` is set.
324
+ Bare `sks` can also prompt for codex-lb auth; SKS stores the base URL/key in `~/.codex/sks-codex-lb.env`, writes the codex-lb Codex CLI / IDE Extension provider block into `~/.codex/config.toml` for Codex App routing, loads the provider env key for tmux launches, and syncs the macOS user launch environment so the Codex App can see `CODEX_LB_API_KEY` after restart. If the provider block disappears but the stored env file is still recoverable, bare `sks`, npm postinstall upgrades, `sks doctor --fix`, and `sks codex-lb repair` restore it with `env_key = "CODEX_LB_API_KEY"`, `supports_websockets = true`, and `requires_openai_auth = false`; imagegen checks may record this provider as configured codex-lb routing, but it is not accepted as official Codex App `$imagegen` evidence. If an older SKS release left the codex-lb dashboard key only in the shared Codex `auth.json` login cache, SKS migrates that key back into `~/.codex/sks-codex-lb.env` when a codex-lb provider or env base URL is already recoverable. It does not rewrite the shared Codex `auth.json` login cache by default; set `SKS_CODEX_LB_SYNC_CODEX_LOGIN=1` only if you intentionally want the old API-key login-cache behavior. When codex-lb is active, SKS opens a fresh `sks-codex-lb-*` tmux session and sweeps older detached codex-lb sessions for the same repo before launch so stale Responses API chains are not reused. Configured launch paths run a response-chain health check. `previous_response_not_found` is treated as a stateless-LB warning and keeps codex-lb active. Hard failures are surfaced to the user; SKS only bypasses codex-lb when the user chooses OAuth fallback or `SKS_CODEX_LB_AUTOBYPASS=1` is set.
284
325
 
285
326
  If codex-lb provider auth drifts after launch/reinstall, run `sks doctor --fix` or `sks codex-lb repair`; to replace it, run `sks codex-lb reconfigure --host <domain> --api-key <key>`.
286
327
 
@@ -317,10 +358,10 @@ This flips `model_provider` away from `codex-lb` in the top-level Codex App conf
317
358
 
318
359
  ```sh
319
360
  sks --mad
320
- sks --mad --yes
361
+ sks --mad --allow-package-install --allow-service-control --allow-network --yes
321
362
  ```
322
363
 
323
- This syncs existing codex-lb provider auth, creates/uses the `sks-mad-high` full-access profile, opens the MAD-SKS permission gate for that tmux run, and launches a single Codex CLI pane. The session recreates the named session so stale split-pane MAD sessions collapse back to one pane. Catastrophic database wipe/all-row/project-management safeguards remain active, and the pipeline contract still forbids unrequested fallback implementation code.
364
+ This syncs existing codex-lb provider auth, creates/uses the `sks-mad-high` high-power maintenance profile, opens the MAD-SKS permission gate for that tmux run, and launches a single Codex CLI pane. Bare `sks --mad` grants target-project file and shell scope only; add explicit `--allow-*` flags for packages, services, network, Computer Use, browser use, generated assets, file permissions, DB writes, or other high-risk scopes. MAD-SKS is not a DB-only unlock: it is explicit user authorization to widen approved target-project scopes. The session recreates the named session so stale split-pane MAD sessions collapse back to one pane. Catastrophic database wipe/all-row/project-management safeguards remain active, and the pipeline contract still forbids unrequested fallback implementation code.
324
365
 
325
366
  Before launching, SKS checks npm for a newer `sneakoscope`; answer `y` to update or `n` to continue. Use `--yes` to approve missing dependency installs automatically.
326
367
 
@@ -364,6 +405,7 @@ Effort is assigned per agent. Simple read-only/docs slices can run low, ordinary
364
405
  ```sh
365
406
  sks qa-loop prepare "http://localhost:3000"
366
407
  sks qa-loop run latest --max-cycles 2
408
+ sks codex-app chrome-extension --json
367
409
  sks goal create "persist this migration workflow"
368
410
  sks research prepare "evaluate this approach"
369
411
  sks research run latest --max-cycles 12 --cycle-timeout-minutes 120
@@ -397,7 +439,7 @@ sks code-structure scan --json
397
439
 
398
440
  ### Ambiguity Questions
399
441
 
400
- Clarification asks only for ambiguity that changes execution; predictable defaults are inferred and sealed. `sks skill-dream` records cheap counters and periodically writes advisory skill reports. `$Goal` controls native `/goal` persistence without replacing the selected execution route. `$Computer-Use` / `$CU` is the fast Codex Computer Use lane for UI/browser/visual work.
442
+ Clarification asks only for ambiguity that changes execution; predictable defaults are inferred and sealed. `sks skill-dream` records cheap counters and periodically writes advisory skill reports. `$Goal` controls native `/goal` persistence without replacing the selected execution route. Web, browser, localhost, website, webapp, and web-based app verification use the official Codex Chrome Extension path first; if it is not installed/enabled, SKS stops and asks the user to set it up before resuming. `$Computer-Use` / `$CU` is now reserved for native macOS, desktop-app, OS-settings, and non-web visual work.
401
443
 
402
444
  ### Create A Presentation
403
445
 
@@ -419,6 +461,7 @@ After installing, run:
419
461
  ```sh
420
462
  sks bootstrap
421
463
  sks codex-app check
464
+ sks codex-app chrome-extension --json
422
465
  sks codex-app remote-control --status
423
466
  sks dollar-commands
424
467
  ```
@@ -429,9 +472,11 @@ For headless remotely controllable Codex App/server sessions on Codex CLI 0.130.
429
472
  sks codex-app remote-control -- --help
430
473
  ```
431
474
 
432
- `sks codex-app check` reports whether the installed Codex CLI is new enough, whether the required app flags are visible, whether Fast/speed-selector config is unlocked, whether Codex App Git Actions can use Commit, Push, Commit and Push, and PR flows, and whether installed OpenAI default plugins such as Browser, Chrome, Computer Use, Documents, Presentations, Spreadsheets, and LaTeX are enabled. When codex-lb is configured, SKS keeps it selected as the top-level Codex App provider while still preserving required app flags and plugin settings. Codex CLI 0.130.0+ app-server/remote-control threads can pick up config changes live; older CLI/TUI sessions should still be restarted after `.codex/config.toml` or MCP/plugin changes.
475
+ `sks codex-app check` reports whether the installed Codex CLI is new enough, whether the required app flags are visible, whether Fast/speed-selector config is unlocked, whether Codex App Git Actions can use Commit, Push, Commit and Push, and PR flows, whether the Codex Chrome Extension path is ready for web/browser/webapp verification, and whether installed OpenAI default plugins such as Browser, Chrome, Computer Use, Documents, Presentations, Spreadsheets, and LaTeX are enabled. `sks codex-app chrome-extension --json` is the rapid preflight for web QA/UX/browser routes. When codex-lb is configured, SKS keeps it selected as the top-level Codex App provider while still preserving required app flags and plugin settings. Codex CLI 0.130.0+ app-server/remote-control threads can pick up config changes live; older CLI/TUI sessions should still be restarted after `.codex/config.toml` or MCP/plugin changes.
476
+
477
+ For web-related verification, SKS follows the official Codex Chrome Extension setup path first: https://developers.openai.com/codex/app/chrome-extension. `$QA-LOOP`, `$UX-Review`, `$Image-UX-Review`, browser smoke, authenticated web checks, localhost checks, and web visual review must halt quickly if that extension is missing or disabled. Only after the user says the extension setup is complete should the pipeline resume. Codex Computer Use is for native Mac/non-web targets only; it must not be used as browser/web-app verification evidence.
433
478
 
434
- Image-review routes are intentionally strict. `$Image-UX-Review`, `$UX-Review`, `$Visual-Review`, and `$UI-UX-Review` require real Codex App `$imagegen`/`gpt-image-2` generated annotated review images before `image-ux-review-gate.json` can pass; disabled or missing `image_generation` remains a blocker that `sks codex-app check` and selftest cover.
479
+ Imagegen is a core SKS capability, not a decorative add-on. `$Image-UX-Review`, `$UX-Review`, `$Visual-Review`, `$UI-UX-Review`, and PPT generated-review paths require real Codex App `$imagegen`/`gpt-image-2` output before full visual verification can pass. For newest-model image requests, prompts should say "Use ChatGPT Images 2.0 / GPT Image 2.0 with gpt-image-2" while still invoking Codex App `$imagegen` when live generation is needed. Use `imagegen-source-scout` when current official docs plus X/social prompt-workflow signals are needed; social sources are prompt heuristics only, not capability or evidence specs. `npm run imagegen:capability` checks that the official Codex App imagegen surface is visible and records that capability detection is not output proof; OpenAI API, Responses image-generation, codex-lb, or `CODEX_LB_API_KEY` fallbacks are non-Codex paths and do not satisfy Codex App generated-image evidence unless a separate API fallback task is explicitly requested. The README architecture asset uses the same rule: run `npm run imagegen:readme-architecture:prompt` to print/write the official prompt, generate the image in Codex App `$imagegen`, then rerun `npm run imagegen:readme-architecture -- --output <path>` after Codex App creates a real gpt-image-2 output. When exactly one current generated_images candidate exists after the prompt, `npm run imagegen:readme-architecture -- --auto-pick-latest` can select it automatically. To let the verifier wait while Codex App writes the file, use `npm run imagegen:readme-architecture -- --wait-ms <milliseconds>`; it still accepts only one current candidate under `$CODEX_HOME/generated_images`. Env forms such as `SKS_CODEX_APP_IMAGEGEN_OUTPUT=<path>` remain supported for automation. Use the selected file directly under `$CODEX_HOME/generated_images`; moved or copied files are not accepted as provenance evidence. Disabled or missing `image_generation` remains a blocker that `sks codex-app check`, `npm run imagegen:capability`, and selftest cover.
435
480
 
436
481
  Then open Codex App and use prompt commands directly in the chat. Examples:
437
482
 
@@ -579,7 +624,7 @@ sks codex-app check
579
624
  codex mcp list
580
625
  ```
581
626
 
582
- Codex App workflows need the app installed. UI/browser evidence requires first-party Codex Computer Use, and generated raster/image-review evidence requires real `$imagegen`/`gpt-image-2` output. After setup/upgrade, start a fresh thread so Codex reloads plugin tools.
627
+ Codex App workflows need the app installed. Web/browser evidence requires the Codex Chrome Extension path, native Mac/non-web visual evidence requires first-party Codex Computer Use, and generated raster/image-review evidence requires real `$imagegen`/`gpt-image-2` output. After setup/upgrade, start a fresh thread so Codex reloads plugin tools.
583
628
 
584
629
  ### Codex App commit/push is blocked
585
630
 
@@ -76,7 +76,7 @@ dependencies = [
76
76
 
77
77
  [[package]]
78
78
  name = "sks-core"
79
- version = "1.18.6"
79
+ version = "1.18.8"
80
80
  dependencies = [
81
81
  "serde_json",
82
82
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sks-core"
3
- version = "1.18.6"
3
+ version = "1.18.8"
4
4
  edition = "2021"
5
5
 
6
6
  [dependencies]
@@ -4,7 +4,7 @@ use std::io::{self, Read, Seek, SeekFrom};
4
4
  fn main() {
5
5
  let mut args = std::env::args().skip(1);
6
6
  match args.next().as_deref() {
7
- Some("--version") => println!("sks-rs 1.18.6"),
7
+ Some("--version") => println!("sks-rs 1.18.8"),
8
8
  Some("compact-info") => {
9
9
  let mut input = String::new();
10
10
  let _ = io::stdin().read_to_string(&mut input);
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": "sks.dist-build-stamp.v1",
3
3
  "package_name": "sneakoscope",
4
- "package_version": "1.18.6",
5
- "source_digest": "d45147f0f01dfabdab71a2e03ea484173d6de7e64e58958d1b73d31f8719ae5c",
6
- "source_file_count": 1435,
7
- "built_at_source_time": 1779844415377
4
+ "package_version": "1.18.8",
5
+ "source_digest": "f00f42e2af3a45681da126c20bfcd5d3345fd2ace666c76010660d39ca88cdc6",
6
+ "source_file_count": 1514,
7
+ "built_at_source_time": 1779887241763
8
8
  }
package/dist/bin/sks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const FAST_PACKAGE_VERSION = '1.18.6';
2
+ const FAST_PACKAGE_VERSION = '1.18.8';
3
3
  const args = process.argv.slice(2);
4
4
  try {
5
5
  if (args[0] === '--version' || args[0] === '-v' || args[0] === 'version') {
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "schema": "sks.dist-build.v2",
3
- "version": "1.18.6",
4
- "package_version": "1.18.6",
3
+ "version": "1.18.8",
4
+ "package_version": "1.18.8",
5
5
  "typescript": true,
6
6
  "mjs_runtime_files": 0,
7
- "compiled_file_count": 878,
8
- "compiled_js_count": 439,
9
- "compiled_dts_count": 439,
10
- "source_digest": "d45147f0f01dfabdab71a2e03ea484173d6de7e64e58958d1b73d31f8719ae5c",
11
- "source_file_count": 1435,
12
- "source_files_hash": "d1b0087b824861574256c5a1f9af243009a1ac33006649d562e5905cba8b829d",
13
- "source_list_hash": "d1b0087b824861574256c5a1f9af243009a1ac33006649d562e5905cba8b829d",
7
+ "compiled_file_count": 908,
8
+ "compiled_js_count": 454,
9
+ "compiled_dts_count": 454,
10
+ "source_digest": "f00f42e2af3a45681da126c20bfcd5d3345fd2ace666c76010660d39ca88cdc6",
11
+ "source_file_count": 1514,
12
+ "source_files_hash": "617adc02ea5a7a6cf0ad7cfac691a817e9fb26380d5f21a249eaea89c0a7b8ea",
13
+ "source_list_hash": "617adc02ea5a7a6cf0ad7cfac691a817e9fb26380d5f21a249eaea89c0a7b8ea",
14
14
  "src_mjs_runtime_files": 0,
15
15
  "dist_stamp_schema": "sks.dist-build-stamp.v1",
16
16
  "files": [
@@ -214,12 +214,22 @@
214
214
  "core/agents/agent-ledger-schemas.js",
215
215
  "core/agents/agent-lifecycle.d.ts",
216
216
  "core/agents/agent-lifecycle.js",
217
+ "core/agents/agent-merge-coordinator.d.ts",
218
+ "core/agents/agent-merge-coordinator.js",
217
219
  "core/agents/agent-message-bus.d.ts",
218
220
  "core/agents/agent-message-bus.js",
219
221
  "core/agents/agent-orchestrator.d.ts",
220
222
  "core/agents/agent-orchestrator.js",
221
223
  "core/agents/agent-output-validator.d.ts",
222
224
  "core/agents/agent-output-validator.js",
225
+ "core/agents/agent-patch-apply-worker.d.ts",
226
+ "core/agents/agent-patch-apply-worker.js",
227
+ "core/agents/agent-patch-proof.d.ts",
228
+ "core/agents/agent-patch-proof.js",
229
+ "core/agents/agent-patch-queue.d.ts",
230
+ "core/agents/agent-patch-queue.js",
231
+ "core/agents/agent-patch-schema.d.ts",
232
+ "core/agents/agent-patch-schema.js",
223
233
  "core/agents/agent-persona.d.ts",
224
234
  "core/agents/agent-persona.js",
225
235
  "core/agents/agent-plan.d.ts",
@@ -358,8 +368,16 @@
358
368
  "core/codex-lb/codex-lb-setup.js",
359
369
  "core/codex-model-guard.d.ts",
360
370
  "core/codex-model-guard.js",
371
+ "core/codex/appshots-detector.d.ts",
372
+ "core/codex/appshots-detector.js",
373
+ "core/codex/appshots-operator-policy.d.ts",
374
+ "core/codex/appshots-operator-policy.js",
375
+ "core/codex/codex-0-134-compat.d.ts",
376
+ "core/codex/codex-0-134-compat.js",
361
377
  "core/codex/codex-web-search-adapter.d.ts",
362
378
  "core/codex/codex-web-search-adapter.js",
379
+ "core/codex/managed-proxy-env.d.ts",
380
+ "core/codex/managed-proxy-env.js",
363
381
  "core/codex/official-goal-mode.d.ts",
364
382
  "core/codex/official-goal-mode.js",
365
383
  "core/commands/agent-command.d.ts",
@@ -614,6 +632,8 @@
614
632
  "core/mad-sks/write-guard.js",
615
633
  "core/managed-paths.d.ts",
616
634
  "core/managed-paths.js",
635
+ "core/mcp/mcp-0-134-policy.d.ts",
636
+ "core/mcp/mcp-0-134-policy.js",
617
637
  "core/mcp/xai-mcp-detector.d.ts",
618
638
  "core/mcp/xai-mcp-detector.js",
619
639
  "core/mcp/xai-search-adapter.d.ts",
@@ -773,12 +793,22 @@
773
793
  "core/session/project-namespace.js",
774
794
  "core/skill-forge.d.ts",
775
795
  "core/skill-forge.js",
796
+ "core/source-intelligence/appshots-evidence.d.ts",
797
+ "core/source-intelligence/appshots-evidence.js",
798
+ "core/source-intelligence/codex-history-search.d.ts",
799
+ "core/source-intelligence/codex-history-search.js",
776
800
  "core/source-intelligence/source-intelligence-policy.d.ts",
777
801
  "core/source-intelligence/source-intelligence-policy.js",
778
802
  "core/source-intelligence/source-intelligence-proof.d.ts",
779
803
  "core/source-intelligence/source-intelligence-proof.js",
780
804
  "core/source-intelligence/source-intelligence-runner.d.ts",
781
805
  "core/source-intelligence/source-intelligence-runner.js",
806
+ "core/strategy/adhd-orchestrating-gate.d.ts",
807
+ "core/strategy/adhd-orchestrating-gate.js",
808
+ "core/strategy/strategy-compiler.d.ts",
809
+ "core/strategy/strategy-compiler.js",
810
+ "core/strategy/strategy-gate.d.ts",
811
+ "core/strategy/strategy-gate.js",
782
812
  "core/structured-output-adapter.d.ts",
783
813
  "core/structured-output-adapter.js",
784
814
  "core/team-dag.d.ts",
@@ -122,8 +122,8 @@ export const COMMANDS = {
122
122
  'ux-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
123
123
  'visual-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
124
124
  'ui-ux-review': entry('labs', 'Alias for image UX review', 'dist/core/commands/image-ux-review-command.js', commandArgsCommand(() => import('../core/commands/image-ux-review-command.js'), 'imageUxReviewCommand', 'dist/core/commands/image-ux-review-command.js')),
125
- 'computer-use': entry('beta', 'Record Computer Use visual evidence', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
126
- cu: entry('beta', 'Alias for Computer Use', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
125
+ 'computer-use': entry('beta', 'Record native Mac/non-web Computer Use visual evidence', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
126
+ cu: entry('beta', 'Alias for native Computer Use', 'dist/core/commands/computer-use-command.js', commandArgsCommand(() => import('../core/commands/computer-use-command.js'), 'computerUseCommand', 'dist/core/commands/computer-use-command.js')),
127
127
  context7: entry('beta', 'Context7 checks and docs', 'dist/cli/context7-command.js', subcommand(() => import('./context7-command.js'), 'context7Command', 'dist/cli/context7-command.js', 'check')),
128
128
  recallpulse: entry('labs', 'RecallPulse evidence route', 'dist/commands/recallpulse.js', directCommand(() => import('../commands/recallpulse.js'), 'dist/commands/recallpulse.js')),
129
129
  pipeline: entry('beta', 'Inspect pipeline missions', 'dist/commands/pipeline.js', directCommand(() => import('../commands/pipeline.js'), 'dist/commands/pipeline.js')),
@@ -1,11 +1,26 @@
1
1
  import { flag } from '../cli/args.js';
2
2
  import { printJson } from '../cli/output.js';
3
- import { codexAccessTokenStatus, codexAppIntegrationStatus, formatCodexAppStatus } from '../core/codex-app.js';
3
+ import { codexAccessTokenStatus, codexAppIntegrationStatus, codexChromeExtensionStatus, formatCodexAppStatus } from '../core/codex-app.js';
4
4
  import { codexAppRemoteControlCommand } from '../cli/codex-app-command.js';
5
5
  export async function run(_command, args = []) {
6
6
  const action = args[0] || 'check';
7
7
  if (action === 'remote-control' || action === 'remote')
8
8
  return codexAppRemoteControlCommand(args.slice(1));
9
+ if (action === 'chrome-extension' || action === 'chrome') {
10
+ const status = await codexChromeExtensionStatus();
11
+ if (flag(args, '--json')) {
12
+ printJson(status);
13
+ if (!status.ok)
14
+ process.exitCode = 1;
15
+ return;
16
+ }
17
+ console.log(`Codex Chrome Extension: ${status.ok ? 'available' : status.status}`);
18
+ for (const line of status.guidance || [])
19
+ console.log(`- ${line}`);
20
+ if (!status.ok)
21
+ process.exitCode = 1;
22
+ return;
23
+ }
9
24
  if (action === 'pat') {
10
25
  const status = codexAccessTokenStatus();
11
26
  if (flag(args, '--json'))
@@ -29,7 +44,7 @@ export async function run(_command, args = []) {
29
44
  process.exitCode = 1;
30
45
  return;
31
46
  }
32
- console.error('Usage: sks codex-app check|status|pat status|remote-control [--json]');
47
+ console.error('Usage: sks codex-app check|status|chrome-extension|pat status|remote-control [--json]');
33
48
  process.exitCode = 1;
34
49
  }
35
50
  //# sourceMappingURL=codex-app.js.map
@@ -1,4 +1,4 @@
1
- import { flag } from '../cli/args.js';
1
+ import { flag, readOption } 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';
@@ -6,7 +6,8 @@ import { codexSchemaSnapshotReport } from '../core/codex-compat/codex-schema-sna
6
6
  export async function run(_command, args = []) {
7
7
  const action = args[0] || 'compatibility';
8
8
  if (action === 'compatibility' || action === 'compat') {
9
- const result = await codexCompatibilityReport();
9
+ const requiredBaseline = readOption(args, '--require', null);
10
+ const result = await codexCompatibilityReport({ requiredBaseline, require: requiredBaseline });
10
11
  if (flag(args, '--json'))
11
12
  return printJson(result);
12
13
  console.log(`Codex compatibility: ${result.ok ? result.status : 'blocked'} (${result.required_baseline})`);
@@ -103,6 +103,13 @@ export declare function run(command: any, args?: any): Promise<void | {
103
103
  };
104
104
  selected_template: import("../core/dfix/patch-templates.js").DfixPatchTemplate | null;
105
105
  mode: string;
106
+ route_parallel_write: {
107
+ write_mode: any;
108
+ apply_patches: boolean;
109
+ dry_run_patches: boolean;
110
+ max_write_agents: number;
111
+ route_level_flags_wired: boolean;
112
+ };
106
113
  target_file: any;
107
114
  find_text_present: boolean;
108
115
  replace_text_present: boolean;
@@ -154,6 +161,13 @@ export declare function run(command: any, args?: any): Promise<void | {
154
161
  created_at: string;
155
162
  explicit_apply_opt_in: boolean;
156
163
  apply_opt_in: boolean;
164
+ route_parallel_write: {
165
+ write_mode: any;
166
+ apply_patches: boolean;
167
+ dry_run_patches: boolean;
168
+ max_write_agents: number;
169
+ route_level_flags_wired: boolean;
170
+ };
157
171
  patch_mode: any;
158
172
  patch_result_present: boolean;
159
173
  patch_applied: any;