sneakoscope 6.0.3 → 6.1.2

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 (378) hide show
  1. package/README.md +29 -12
  2. package/config/codex-releases/{rust-v0.142.0.json → rust-v0.144.1.json} +6 -6
  3. package/crates/sks-core/Cargo.lock +1 -1
  4. package/crates/sks-core/Cargo.toml +1 -1
  5. package/dist/bin/fast-inline.js +18 -14
  6. package/dist/bin/sks-dispatch.js +2 -4
  7. package/dist/cli/args.js +2 -0
  8. package/dist/cli/command-manifest-lite.js +2 -3
  9. package/dist/cli/command-registry.js +3 -4
  10. package/dist/cli/help-fast.js +1 -1
  11. package/dist/cli/install-helpers.js +348 -763
  12. package/dist/cli/install-tool-helpers.js +287 -0
  13. package/dist/cli/router.js +91 -6
  14. package/dist/commands/codex-lb.js +188 -53
  15. package/dist/commands/codex.js +44 -5
  16. package/dist/commands/doctor.js +302 -46
  17. package/dist/commands/tmux.js +5 -1
  18. package/dist/commands/versioning.js +7 -0
  19. package/dist/commands/zellij-monitor-pane.js +2 -0
  20. package/dist/commands/zellij-viewport-pane.js +3 -1
  21. package/dist/commands/zellij.js +1 -1
  22. package/dist/config/skills-manifest.json +59 -59
  23. package/dist/core/agent-bridge/agent-manifest.js +48 -0
  24. package/dist/core/agents/agent-central-ledger.js +9 -0
  25. package/dist/core/agents/agent-cleanup-executor.js +334 -41
  26. package/dist/core/agents/agent-cleanup.js +20 -1
  27. package/dist/core/agents/agent-command-surface.js +3 -1
  28. package/dist/core/agents/agent-effort-policy.js +30 -38
  29. package/dist/core/agents/agent-janitor.js +9 -10
  30. package/dist/core/agents/agent-namespace-safety.js +56 -0
  31. package/dist/core/agents/agent-orchestrator.js +25 -3
  32. package/dist/core/agents/agent-output-validator.js +1 -1
  33. package/dist/core/agents/agent-plan.js +100 -21
  34. package/dist/core/agents/agent-role-config.js +43 -49
  35. package/dist/core/agents/agent-runner-codex-exec.js +18 -3
  36. package/dist/core/agents/agent-runner-process.js +1 -0
  37. package/dist/core/agents/agent-schema.js +3 -2
  38. package/dist/core/agents/fast-mode-policy.js +3 -5
  39. package/dist/core/agents/native-cli-session-swarm.js +1 -1
  40. package/dist/core/agents/native-worker-backend-router.js +2 -1
  41. package/dist/core/agents/work-partition/repo-inventory.js +68 -7
  42. package/dist/core/agents/zellij-right-lane-cockpit.js +2 -2
  43. package/dist/core/code-structure.js +5 -4
  44. package/dist/core/codex/agent-config-file-repair.js +94 -193
  45. package/dist/core/codex/codex-cli-update.js +723 -0
  46. package/dist/core/codex/codex-config-guard.js +38 -11
  47. package/dist/core/codex/codex-project-config-policy.js +3 -6
  48. package/dist/core/codex/codex-startup-config-postcheck.js +52 -42
  49. package/dist/core/codex-adapter.js +35 -22
  50. package/dist/core/codex-app/codex-agent-role-sync.js +13 -54
  51. package/dist/core/codex-app/codex-app-fast-ui-repair.js +51 -20
  52. package/dist/core/codex-app/codex-app-launcher.js +48 -17
  53. package/dist/core/codex-app/codex-app-restart.js +23 -2
  54. package/dist/core/codex-app/codex-app-ui-state-snapshot.js +11 -3
  55. package/dist/core/codex-app/sks-menubar.js +136 -5
  56. package/dist/core/codex-app.js +35 -14
  57. package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -1
  58. package/dist/core/codex-compat/codex-release-manifest.js +6 -6
  59. package/dist/core/codex-control/codex-0139-doctor-real-probe.js +7 -1
  60. package/dist/core/codex-control/codex-0139-image-path-real-probe.js +29 -12
  61. package/dist/core/codex-control/codex-0139-probe-runner.js +103 -28
  62. package/dist/core/codex-control/codex-0139-real-probe-summary.js +7 -3
  63. package/dist/core/codex-control/codex-0139-real-probes.js +21 -6
  64. package/dist/core/codex-control/codex-0139-sandbox-real-probe.js +39 -13
  65. package/dist/core/codex-control/codex-0139-web-search-probe.js +28 -14
  66. package/dist/core/codex-control/{codex-0142-capability.js → codex-0144-capability.js} +22 -22
  67. package/dist/core/codex-control/codex-0144-collab-agent-real-probe.js +63 -0
  68. package/dist/core/codex-control/codex-lb-launch-recovery.js +278 -0
  69. package/dist/core/codex-control/codex-multi-agent-event-normalizer.js +5 -1
  70. package/dist/core/codex-control/codex-reliability-shield.js +93 -30
  71. package/dist/core/codex-control/codex-sdk-adapter.js +96 -13
  72. package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
  73. package/dist/core/codex-control/codex-sdk-sandbox-policy.js +6 -3
  74. package/dist/core/codex-control/codex-task-runner.js +62 -9
  75. package/dist/core/codex-control/python-codex-sdk-adapter.js +30 -3
  76. package/dist/core/codex-exec-output-schema.js +35 -6
  77. package/dist/core/codex-lb/codex-lb-env.js +30 -1
  78. package/dist/core/codex-lb/codex-lb-tool-catalog.js +478 -0
  79. package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +291 -0
  80. package/dist/core/codex-native/codex-native-feature-broker.js +31 -38
  81. package/dist/core/codex-native/codex-native-feature-matrix.js +2 -2
  82. package/dist/core/codex-native/codex-native-repair-transaction.js +1 -1
  83. package/dist/core/codex-native/core-skill-manifest.js +8 -4
  84. package/dist/core/codex-native/native-capability-postcheck.js +16 -8
  85. package/dist/core/codex-native/native-capability-repair-matrix.js +76 -27
  86. package/dist/core/codex-plugins/codex-plugin-json.js +67 -21
  87. package/dist/core/codex-plugins/codex-plugin-repair.js +118 -0
  88. package/dist/core/codex-runtime/codex-desktop-config-policy.js +305 -0
  89. package/dist/core/commands/agent-bridge-command.js +23 -2
  90. package/dist/core/commands/agent-command.js +38 -5
  91. package/dist/core/commands/basic-cli.js +77 -30
  92. package/dist/core/commands/command-utils.js +1 -1
  93. package/dist/core/commands/gc-command.js +27 -4
  94. package/dist/core/commands/image-ux-review-command.js +55 -24
  95. package/dist/core/commands/mad-sks-command.js +182 -137
  96. package/dist/core/commands/naruto-command.js +643 -1153
  97. package/dist/core/commands/pipeline-command.js +1 -0
  98. package/dist/core/commands/research-command.js +293 -231
  99. package/dist/core/commands/run-command.js +100 -23
  100. package/dist/core/commands/team-command.js +2 -3
  101. package/dist/core/commands/team-legacy-observe-command.js +94 -359
  102. package/dist/core/commands/wiki-command.js +179 -83
  103. package/dist/core/computer-use-live-evidence.js +166 -3
  104. package/dist/core/computer-use-status.js +5 -2
  105. package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +2 -2
  106. package/dist/core/daemon/sksd-hook-daemon.js +171 -28
  107. package/dist/core/daemon/sksd-hook-dispatch.js +2 -2
  108. package/dist/core/db-safety.js +2 -2
  109. package/dist/core/decision-lattice.js +6 -6
  110. package/dist/core/dfix/verification-selector.js +6 -4
  111. package/dist/core/doctor/browser-use-repair.js +54 -13
  112. package/dist/core/doctor/codex-0139-doctor.js +3 -2
  113. package/dist/core/doctor/codex-startup-config-repair.js +8 -3
  114. package/dist/core/doctor/computer-use-repair.js +28 -39
  115. package/dist/core/doctor/doctor-codex-startup-repair.js +24 -149
  116. package/dist/core/doctor/doctor-context7-repair.js +1 -1
  117. package/dist/core/doctor/doctor-dirty-planner.js +1 -1
  118. package/dist/core/doctor/doctor-native-capability-repair.js +74 -3
  119. package/dist/core/doctor/imagegen-repair.js +47 -12
  120. package/dist/core/doctor/legacy-global-hook-cleanup.js +179 -0
  121. package/dist/core/feature-fixture-executor.js +71 -7
  122. package/dist/core/feature-fixture-runner.js +53 -12
  123. package/dist/core/feature-fixtures.js +47 -14
  124. package/dist/core/feature-registry.js +53 -58
  125. package/dist/core/fsx.js +54 -6
  126. package/dist/core/harness-conflicts.js +19 -10
  127. package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +5 -4
  128. package/dist/core/hooks-runtime/hook-invocation-dedupe.js +147 -0
  129. package/dist/core/hooks-runtime/hook-io.js +14 -4
  130. package/dist/core/hooks-runtime/light-turn.js +70 -0
  131. package/dist/core/hooks-runtime/payload-signals.js +270 -0
  132. package/dist/core/hooks-runtime/team-digest.js +0 -1
  133. package/dist/core/hooks-runtime/tool-output-quarantine.js +93 -0
  134. package/dist/core/hooks-runtime.js +418 -250
  135. package/dist/core/image/image-artifact-path-contract.js +8 -6
  136. package/dist/core/image/image-artifact-registry.js +5 -1
  137. package/dist/core/image-ux-review/imagegen-adapter.js +5 -2
  138. package/dist/core/imagegen/imagegen-capability.js +10 -13
  139. package/dist/core/imagegen/require-imagegen.js +37 -11
  140. package/dist/core/init/skills.js +16 -30
  141. package/dist/core/init.js +144 -36
  142. package/dist/core/managed-assets/managed-assets-manifest.js +417 -14
  143. package/dist/core/mission.js +24 -1
  144. package/dist/core/naruto/naruto-work-graph.js +70 -4
  145. package/dist/core/ops/reporting.js +3 -0
  146. package/dist/core/pipeline-internals/runtime-core.js +578 -180
  147. package/dist/core/pipeline-internals/runtime-gates.js +191 -49
  148. package/dist/core/ppt/style-tokens.js +1 -1
  149. package/dist/core/ppt-review/index.js +1 -1
  150. package/dist/core/ppt-review/slide-exporter.js +23 -17
  151. package/dist/core/ppt-review/slide-imagegen-review.js +1 -1
  152. package/dist/core/ppt-review/slide-issue-extraction.js +4 -2
  153. package/dist/core/preflight/parallel-preflight-engine.js +50 -1
  154. package/dist/core/product-design-plugin.js +2 -2
  155. package/dist/core/proof/route-finalizer.js +1 -1
  156. package/dist/core/proof/route-proof-gate.js +7 -2
  157. package/dist/core/proof-field.js +3 -3
  158. package/dist/core/provider/model-router.js +38 -32
  159. package/dist/core/recallpulse/policy.js +12 -28
  160. package/dist/core/recallpulse.js +11 -6
  161. package/dist/core/release/gate-manifest.js +18 -12
  162. package/dist/core/release/gate-pack-manifest.js +1 -1
  163. package/dist/core/release/npm-pack-proof.js +247 -0
  164. package/dist/core/release/package-dist-snapshot.js +151 -0
  165. package/dist/core/release/package-size-budget.js +5 -0
  166. package/dist/core/release/release-authorization-snapshot.js +115 -0
  167. package/dist/core/release/release-gate-affected-selector.js +15 -3
  168. package/dist/core/release/release-gate-cache-v2.js +30 -0
  169. package/dist/core/release/release-gate-contract.js +161 -0
  170. package/dist/core/release/release-gate-dag.js +44 -3
  171. package/dist/core/release/release-gate-hermetic-env.js +28 -17
  172. package/dist/core/release/release-real-contract.js +496 -0
  173. package/dist/core/release-parallel-full-coverage.js +31 -143
  174. package/dist/core/research/claim-evidence-matrix.js +41 -6
  175. package/dist/core/research/experiment-plan.js +14 -10
  176. package/dist/core/research/falsification.js +9 -2
  177. package/dist/core/research/implementation-blueprint-densifier.js +82 -60
  178. package/dist/core/research/implementation-blueprint.js +32 -26
  179. package/dist/core/research/mock-result.js +122 -11
  180. package/dist/core/research/replication-pack.js +15 -8
  181. package/dist/core/research/research-adversarial-review.js +1068 -0
  182. package/dist/core/research/research-claim-builder.js +69 -17
  183. package/dist/core/research/research-claim-synthesizer.js +343 -0
  184. package/dist/core/research/research-cycle-runner.js +53 -3
  185. package/dist/core/research/research-falsification-runner.js +176 -0
  186. package/dist/core/research/research-final-reviewer.js +44 -125
  187. package/dist/core/research/research-realistic-report.js +14 -6
  188. package/dist/core/research/research-review-artifact-digest.js +66 -0
  189. package/dist/core/research/research-source-evidence.js +144 -0
  190. package/dist/core/research/research-source-layer-catalog.js +68 -0
  191. package/dist/core/research/research-source-ledger-merge.js +250 -12
  192. package/dist/core/research/research-source-shards.js +26 -70
  193. package/dist/core/research/research-stage-runner.js +237 -247
  194. package/dist/core/research/research-super-search.js +184 -0
  195. package/dist/core/research/research-synthesis-prompt.js +20 -1
  196. package/dist/core/research/research-synthesis-writer.js +86 -5
  197. package/dist/core/research/research-work-graph.js +25 -18
  198. package/dist/core/research/source-quality-report.js +21 -0
  199. package/dist/core/research.js +429 -280
  200. package/dist/core/retention/retention-budget.js +25 -6
  201. package/dist/core/retention.js +980 -101
  202. package/dist/core/routes/constants.js +1 -1
  203. package/dist/core/routes/dollar-manifest-lite.js +11 -11
  204. package/dist/core/routes/evidence.js +4 -4
  205. package/dist/core/routes/ppt-policy.js +1 -1
  206. package/dist/core/routes.js +92 -64
  207. package/dist/core/runtime/task-profile.js +66 -0
  208. package/dist/core/runtime/verification-budget.js +12 -0
  209. package/dist/core/secret-redaction.js +4 -0
  210. package/dist/core/security/high-risk-contracts.js +6 -6
  211. package/dist/core/stop-gate/stop-gate-check.js +49 -12
  212. package/dist/core/subagents/agent-catalog.js +215 -0
  213. package/dist/core/subagents/model-policy.js +118 -0
  214. package/dist/core/subagents/naruto-help-contract.js +40 -0
  215. package/dist/core/subagents/official-subagent-config.js +488 -0
  216. package/dist/core/subagents/official-subagent-preparation.js +251 -0
  217. package/dist/core/subagents/official-subagent-prompt.js +137 -0
  218. package/dist/core/subagents/official-subagent-runner.js +129 -0
  219. package/dist/core/subagents/subagent-evidence.js +663 -0
  220. package/dist/core/subagents/terminology.js +16 -0
  221. package/dist/core/subagents/thread-budget.js +21 -0
  222. package/dist/core/subagents/triwiki-attention.js +65 -0
  223. package/dist/core/super-search/runtime-helpers.js +173 -19
  224. package/dist/core/super-search/runtime.js +140 -15
  225. package/dist/core/super-search/source-records.js +49 -8
  226. package/dist/core/team-review-policy.js +15 -0
  227. package/dist/core/triwiki/code-pack.js +8 -2
  228. package/dist/core/triwiki/triwiki-cache-key.js +108 -29
  229. package/dist/core/triwiki/triwiki-module-card.js +1 -1
  230. package/dist/core/triwiki-attention.js +13 -6
  231. package/dist/core/triwiki-provenance.js +274 -0
  232. package/dist/core/triwiki-runtime.js +21 -7
  233. package/dist/core/triwiki-wrongness/wrongness-ledger.js +187 -61
  234. package/dist/core/triwiki-wrongness/wrongness-retrieval.js +11 -2
  235. package/dist/core/triwiki-wrongness/wrongness-trust-policy.js +2 -0
  236. package/dist/core/update-check.js +23 -15
  237. package/dist/core/version-manager.js +51 -1
  238. package/dist/core/version.js +1 -1
  239. package/dist/core/wiki-coordinate.js +128 -12
  240. package/dist/core/work-order-ledger.js +208 -10
  241. package/dist/core/zellij/zellij-command.js +12 -1
  242. package/dist/core/zellij/zellij-dashboard-pane.js +3 -3
  243. package/dist/core/zellij/zellij-fake-adapter.js +3 -1
  244. package/dist/core/zellij/zellij-launcher.js +51 -21
  245. package/dist/core/zellij/zellij-layout-builder.js +14 -5
  246. package/dist/core/zellij/zellij-official-subagent-activity.js +477 -0
  247. package/dist/core/zellij/zellij-official-subagent-telemetry.js +264 -0
  248. package/dist/core/zellij/zellij-pane-proof.js +32 -6
  249. package/dist/core/zellij/zellij-slot-pane-renderer.js +17 -5
  250. package/dist/core/zellij/zellij-slot-telemetry.js +15 -3
  251. package/dist/core/zellij/zellij-ui-mode.js +1 -1
  252. package/dist/core/zellij/zellij-viewport-binder.js +3 -0
  253. package/dist/core/zellij/zellij-worker-pane-manager.js +5 -3
  254. package/dist/scripts/agent-fast-mode-default-check.js +48 -29
  255. package/dist/scripts/agent-role-config-repair-check.js +34 -15
  256. package/dist/scripts/agent-wiki-context-proof-check.js +16 -2
  257. package/dist/scripts/all-feature-deep-completion-check.js +14 -4
  258. package/dist/scripts/architecture-guard-check.js +8 -1
  259. package/dist/scripts/build-dist.js +17 -5
  260. package/dist/scripts/canonical-test-runner.js +188 -0
  261. package/dist/scripts/check-command-module-budget.js +38 -16
  262. package/dist/scripts/check-legacy-free.js +1 -1
  263. package/dist/scripts/check-route-modularity.js +0 -1
  264. package/dist/scripts/check-ts-contracts.js +1 -1
  265. package/dist/scripts/codex-0139-interrupt-agent-check.js +5 -1
  266. package/dist/scripts/{codex-0142-app-server-v2-check.js → codex-0144-app-server-v2-check.js} +11 -10
  267. package/dist/scripts/{codex-0142-binary-identity-check.js → codex-0144-binary-identity-check.js} +4 -4
  268. package/dist/scripts/codex-0144-capability-check.js +21 -0
  269. package/dist/scripts/{codex-0139-real-probes-check.js → codex-0144-core-real-probes-check.js} +19 -5
  270. package/dist/scripts/{codex-0142-doctor-wiring-check.js → codex-0144-doctor-wiring-check.js} +6 -6
  271. package/dist/scripts/{codex-0142-manifest-check.js → codex-0144-manifest-check.js} +11 -3
  272. package/dist/scripts/{codex-0142-policy-check.js → codex-0144-policy-check.js} +2 -2
  273. package/dist/scripts/{codex-0142-thread-store-check.js → codex-0144-thread-store-check.js} +3 -3
  274. package/dist/scripts/codex-app-provider-model-ui-check.js +53 -19
  275. package/dist/scripts/codex-app-ui-preservation-check.js +35 -4
  276. package/dist/scripts/codex-control-all-pipelines-check.js +7 -3
  277. package/dist/scripts/codex-control-side-effect-scope-check.js +2 -2
  278. package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +27 -0
  279. package/dist/scripts/codex-effort-auto-discovery-check.js +1 -1
  280. package/dist/scripts/codex-lb-fast-mode-truth-check.js +1 -0
  281. package/dist/scripts/{codex-lb-gpt55-fast-profile-check.js → codex-lb-gpt56-fast-profile-check.js} +56 -5
  282. package/dist/scripts/codex-model-metadata-check.js +1 -1
  283. package/dist/scripts/codex-native-agent-role-content-check.js +15 -7
  284. package/dist/scripts/codex-native-repair-transaction-check.js +3 -1
  285. package/dist/scripts/codex-sdk-all-pipelines-check.js +7 -4
  286. package/dist/scripts/codex-sdk-research-pipeline-check.js +30 -8
  287. package/dist/scripts/codex-sdk-sandbox-policy-check.js +5 -1
  288. package/dist/scripts/codex-sdk-version-compat-check.js +2 -1
  289. package/dist/scripts/db-route-materialization-check.js +33 -0
  290. package/dist/scripts/dfix-fixture-check.js +1 -1
  291. package/dist/scripts/docs-truthfulness-check.js +4 -2
  292. package/dist/scripts/doctor-codex-startup-repair-check.js +47 -25
  293. package/dist/scripts/doctor-context7-repair-check.js +2 -1
  294. package/dist/scripts/doctor-fix-production-blackbox.js +12 -2
  295. package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +34 -7
  296. package/dist/scripts/doctor-imagegen-repair-check.js +14 -4
  297. package/dist/scripts/doctor-startup-config-repair-blackbox.js +9 -3
  298. package/dist/scripts/doctor-startup-config-repair-check.js +13 -3
  299. package/dist/scripts/install-update-preserves-config-check.js +7 -2
  300. package/dist/scripts/legacy-gate-inventory-check.js +7 -5
  301. package/dist/scripts/legacy-strong-inventory-check.js +7 -5
  302. package/dist/scripts/legacy-upgrade-matrix-check.js +4 -4
  303. package/dist/scripts/lib/native-cli-session-swarm-check-lib.js +173 -13
  304. package/dist/scripts/mad-sks-app-ui-no-mutation-check.js +165 -6
  305. package/dist/scripts/managed-role-manifest-parity-check.js +5 -4
  306. package/dist/scripts/mutation-callsite-coverage-check.js +0 -11
  307. package/dist/scripts/naruto-codex-e2e-check.js +14 -7
  308. package/dist/scripts/naruto-shadow-clone-swarm-check.js +4 -201
  309. package/dist/scripts/npm-publish-performance-check.js +20 -12
  310. package/dist/scripts/official-subagent-workflow-check.js +145 -0
  311. package/dist/scripts/package-published-contract-check.js +6 -20
  312. package/dist/scripts/packlist-performance-check.js +17 -3
  313. package/dist/scripts/parallel-verification-engine-check.js +2 -2
  314. package/dist/scripts/postinstall-safe-side-effects-check.js +8 -3
  315. package/dist/scripts/ppt-no-mock-as-real-check.js +3 -1
  316. package/dist/scripts/prepublish-release-check-or-fast.js +23 -86
  317. package/dist/scripts/product-design-plugin-routing-check.js +1 -1
  318. package/dist/scripts/release-affected-selector-check.js +74 -1
  319. package/dist/scripts/release-check-stamp.js +324 -239
  320. package/dist/scripts/release-dag-full-coverage-check.js +7 -15
  321. package/dist/scripts/release-dynamic-presets-check.js +10 -1
  322. package/dist/scripts/release-gate-dag-runner-check.js +3 -3
  323. package/dist/scripts/release-gate-dag-runner.js +35 -11
  324. package/dist/scripts/release-gate-existence-audit.js +1 -2
  325. package/dist/scripts/release-gate-script-parity-check.js +1 -1
  326. package/dist/scripts/release-parallel-full-coverage-check.js +12 -6
  327. package/dist/scripts/release-parallel-speed-budget-check.js +18 -2
  328. package/dist/scripts/release-real-check.js +390 -157
  329. package/dist/scripts/release-registry-check.js +61 -16
  330. package/dist/scripts/release-runtime-truth-matrix-check.js +22 -0
  331. package/dist/scripts/research-blueprint-densifier-check.js +2 -2
  332. package/dist/scripts/research-real-cycle-no-legacy-final-md-check.js +11 -7
  333. package/dist/scripts/route-proof-artifact-structure-check.js +1 -0
  334. package/dist/scripts/search-visibility-gate-lib.js +1 -1
  335. package/dist/scripts/seo-geo-route-identity-check.js +30 -4
  336. package/dist/scripts/sizecheck.js +4 -4
  337. package/dist/scripts/sks-1-11-gate-lib.js +53 -6
  338. package/dist/scripts/sks-3-1-4-directive-check-lib.js +8 -2
  339. package/dist/scripts/sks-3-1-5-directive-check-lib.js +3 -2
  340. package/dist/scripts/sks-3-1-6-directive-check-lib.js +5 -3
  341. package/dist/scripts/sks-menubar-install-check.js +8 -0
  342. package/dist/scripts/sks-uninstall-regression-check.js +1 -1
  343. package/dist/scripts/sksd-daemon-check.js +16 -6
  344. package/dist/scripts/trust-fixture-check.js +32 -10
  345. package/dist/scripts/write-build-manifest.js +2 -1
  346. package/dist/scripts/wrongness-fixture-check.js +1 -1
  347. package/dist/scripts/zellij-layout-valid-check.js +36 -11
  348. package/dist/scripts/zellij-pane-proof-check.js +33 -2
  349. package/dist/scripts/zellij-real-session-cleanup-check.js +122 -2
  350. package/dist/scripts/zellij-real-session-launch-check.js +76 -5
  351. package/dist/scripts/zellij-slot-pane-renderer-check.js +4 -4
  352. package/dist/scripts/zellij-spawn-on-demand-layout-check.js +3 -3
  353. package/docs/demo.tape +1 -1
  354. package/infra-harness-gates.json +1486 -0
  355. package/package.json +32 -19
  356. package/release-gates.v2.json +4060 -0
  357. package/runtime-required-scripts.json +9 -0
  358. package/schemas/codex/{app-server-0.142 → app-server-0.144}/codex_app_server_protocol.v2.schemas.json +1146 -781
  359. package/schemas/codex/codex-0139-real-probe-result.schema.json +39 -5
  360. package/schemas/codex/ppt-slide-issue-ledger.schema.json +2 -1
  361. package/dist/commands/db.js +0 -6
  362. package/dist/core/codex-control/codex-0139-multi-agent-real-probe.js +0 -107
  363. package/dist/core/commands/db-command.js +0 -146
  364. package/dist/core/research/prompt.js +0 -15
  365. package/dist/scripts/agent-native-release-gate.js +0 -274
  366. package/dist/scripts/codex-0142-capability-check.js +0 -21
  367. package/dist/scripts/codex-control-tool-call-sequence-repair-check.js +0 -14
  368. package/dist/scripts/command-performance-scorecard-check.js +0 -204
  369. package/dist/scripts/config-managed-merge-callsite-coverage-check.js +0 -212
  370. package/dist/scripts/dollar-performance-scorecard-check.js +0 -257
  371. package/dist/scripts/gate-timing-check.js +0 -16
  372. package/dist/scripts/ops-maturity-scorecard-check.js +0 -12
  373. package/dist/scripts/performance-baseline-check.js +0 -12
  374. package/dist/scripts/performance-improvement-report-check.js +0 -58
  375. package/dist/scripts/release-parallel-check.js +0 -389
  376. package/dist/scripts/release-runner-efficiency-check.js +0 -15
  377. package/dist/scripts/retention-long-run-smoke-check.js +0 -299
  378. package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
@@ -1,10 +1,10 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { buildCodexExecArgs, findCodexBinary } from '../codex-adapter.js';
3
+ import { buildCodexExecArgs, findCodexBinary, runCodexExec } from '../codex-adapter.js';
4
4
  import { ensureDir, runProcess, writeBinaryAtomic } from '../fsx.js';
5
5
  import { buildImageArtifactPathContract } from '../image/image-artifact-path-contract.js';
6
6
  import { codex0139ProbeTail, skippedCodex0139Probe } from './codex-0139-real-probes.js';
7
- const ONE_BY_ONE_PNG = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/p9sAAAAASUVORK5CYII=', 'base64');
7
+ const ONE_BY_ONE_PNG = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC', 'base64');
8
8
  export async function runCodex0139ImageReferencedPathRealProbe(input) {
9
9
  const started = Date.now();
10
10
  const tempDir = path.join(input.root, '.sneakoscope', 'tmp', 'codex-0139-real-probes', `image-path-${Date.now()}`);
@@ -14,10 +14,10 @@ export async function runCodex0139ImageReferencedPathRealProbe(input) {
14
14
  await writeBinaryAtomic(inputA, ONE_BY_ONE_PNG);
15
15
  await writeBinaryAtomic(inputB, ONE_BY_ONE_PNG);
16
16
  const contract = await buildImageArtifactPathContract(input.root, {
17
- missionId: 'codex-0139-image-path-real-probe',
17
+ missionId: 'codex-0144-image-path-real-probe',
18
18
  images: [
19
- { id: 'input-a', kind: 'input_attachment', filePath: inputA, route: 'codex-0139-real-probe', stage: 'candidate' },
20
- { id: 'input-b', kind: 'input_attachment', filePath: inputB, route: 'codex-0139-real-probe', stage: 'referenced' }
19
+ { id: 'input-a', kind: 'input_attachment', filePath: inputA, route: 'codex-0144-core-real-probe', stage: 'candidate' },
20
+ { id: 'input-b', kind: 'input_attachment', filePath: inputB, route: 'codex-0144-core-real-probe', stage: 'referenced' }
21
21
  ]
22
22
  });
23
23
  const codexBin = input.codexBin || await findCodexBinary();
@@ -34,7 +34,7 @@ export async function runCodex0139ImageReferencedPathRealProbe(input) {
34
34
  artifact_paths: [tempDir]
35
35
  };
36
36
  }
37
- if (process.env.SKS_CODEX_0139_IMAGE_REAL_PROBE_ALLOW_SKIP === '1') {
37
+ if (process.env.SKS_CODEX_0144_IMAGE_REAL_PROBE_ALLOW_SKIP === '1' || process.env.SKS_CODEX_0139_IMAGE_REAL_PROBE_ALLOW_SKIP === '1') {
38
38
  return {
39
39
  ...skippedCodex0139Probe('codex_image_edit_actual_api_skipped', {
40
40
  codex_bin: codexBin,
@@ -48,17 +48,26 @@ export async function runCodex0139ImageReferencedPathRealProbe(input) {
48
48
  }
49
49
  const outputFile = path.join(tempDir, 'last-message.txt');
50
50
  const prompt = [
51
- 'This is a Codex 0.139 image path routing probe.',
51
+ 'This is a Codex 0.144.1 image path routing probe.',
52
52
  `Only the image file named ${path.basename(inputB)} is intentionally referenced.`,
53
53
  `Return compact JSON {"referenced_path":"${inputB.replace(/\\/g, '\\\\')}","saw_image":true}.`,
54
54
  'Do not edit files and do not reference any other image path.'
55
55
  ].join(' ');
56
- const extraArgs = ['--image', inputB, '--skip-git-repo-check', '--ephemeral'];
56
+ const extraArgs = ['-c', 'mcp_servers={}', '--image', inputB, '--skip-git-repo-check', '--ephemeral'];
57
57
  const args = buildCodexExecArgs({ root: tempDir, prompt, outputFile, json: true, extraArgs });
58
- const result = await runProcess(codexBin, args, {
59
- cwd: tempDir,
58
+ const result = await runCodexExec({
59
+ root: tempDir,
60
+ recoveryRoot: input.root,
61
+ prompt,
62
+ outputFile,
63
+ json: true,
64
+ extraArgs,
60
65
  timeoutMs: input.timeoutMs || 60000,
61
- maxOutputBytes: 512 * 1024
66
+ maxBufferBytes: 512 * 1024,
67
+ codexBin,
68
+ env: input.env || process.env,
69
+ ...(typeof input.recoveryFetch === 'function' ? { recoveryFetch: input.recoveryFetch } : {}),
70
+ ...(typeof input.runProcessImpl === 'function' ? { runProcessImpl: input.runProcessImpl } : {})
62
71
  }).catch((err) => ({ code: 1, stdout: '', stderr: err?.message || String(err) }));
63
72
  const outputText = await fs.readFile(outputFile, 'utf8').catch(() => '');
64
73
  const combined = `${result.stdout || ''}\n${result.stderr || ''}\n${outputText}`;
@@ -68,6 +77,7 @@ export async function runCodex0139ImageReferencedPathRealProbe(input) {
68
77
  const ok = exactReferencedPath
69
78
  && commandReferencesOnlyInputB
70
79
  && outputReferencesInputB
80
+ && processExitedSuccessfully
71
81
  && contract.blockers.length === 0;
72
82
  return {
73
83
  ok,
@@ -86,9 +96,16 @@ export async function runCodex0139ImageReferencedPathRealProbe(input) {
86
96
  process_exited_successfully: processExitedSuccessfully,
87
97
  process_warning: processExitedSuccessfully ? null : 'Codex emitted the referenced path evidence before process timeout/nonzero exit.',
88
98
  output_file: outputFile,
99
+ codex_lb_tool_output_recovery: result.codexLbToolOutputRecovery || null,
89
100
  contract_blockers: contract.blockers
90
101
  },
91
- blockers: ok ? [] : ['codex_image_referenced_path_actual_cli_probe_failed']
102
+ blockers: ok ? [] : [
103
+ ...(processExitedSuccessfully ? [] : ['codex_image_referenced_path_process_failed_or_timed_out']),
104
+ ...(result.codexLbToolOutputRecovery?.blockers || []),
105
+ ...(!exactReferencedPath || !commandReferencesOnlyInputB || !outputReferencesInputB || contract.blockers.length > 0
106
+ ? ['codex_image_referenced_path_actual_cli_probe_failed']
107
+ : [])
108
+ ]
92
109
  };
93
110
  }
94
111
  //# sourceMappingURL=codex-0139-image-path-real-probe.js.map
@@ -1,11 +1,12 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { findCodexBinary } from '../codex-adapter.js';
4
- import { compareSemverLike, parseCodexVersionText } from '../codex-compat/codex-version-policy.js';
4
+ import { parseCodexVersionText } from '../codex-compat/codex-version-policy.js';
5
+ import { CURRENT_CODEX_RELEASE_MANIFEST } from '../codex-compat/codex-release-manifest.js';
5
6
  import { runProcess } from '../fsx.js';
6
7
  import { runCodex0139DoctorEnvRealProbe } from './codex-0139-doctor-real-probe.js';
7
8
  import { runCodex0139ImageReferencedPathRealProbe } from './codex-0139-image-path-real-probe.js';
8
- import { runCodex0139InterruptAgentRealProbe } from './codex-0139-multi-agent-real-probe.js';
9
+ import { runCodex0144CollabAgentToolSchemaRealProbe } from './codex-0144-collab-agent-real-probe.js';
9
10
  import { runCodex0139MarketplaceSourceRealProbe, runCodex0139PluginCacheRealProbe } from './codex-0139-plugin-real-probes.js';
10
11
  import { buildCodex0139RealProbeResult, CODEX_0139_REAL_PROBE_NAMES, skippedCodex0139Probe } from './codex-0139-real-probes.js';
11
12
  import { runCodex0139RichSchemaRealProbe } from './codex-0139-rich-schema-real-probe.js';
@@ -14,34 +15,68 @@ import { runCodex0139WebSearchRealProbe } from './codex-0139-web-search-probe.js
14
15
  export async function runCodex0139RealProbes(input) {
15
16
  const timeoutMs = Math.max(1, Number(input.timeoutMs || 120000) || 120000);
16
17
  const requireReal = input.requireReal === true;
17
- const codexBin = input.codexBin || await findCodex0139RealProbeBinary();
18
+ const codexBin = input.codexBin || await findCurrentCodexRealProbeBinary();
18
19
  const versionText = await readCodexVersionText(codexBin, timeoutMs);
19
20
  const parsedVersion = parseCodexVersionText(versionText);
20
- const atLeast139 = Boolean(parsedVersion && compareSemverLike(parsedVersion, '0.139.0') >= 0);
21
- const requested = new Set((input.probes?.length ? input.probes : CODEX_0139_REAL_PROBE_NAMES).filter((name) => CODEX_0139_REAL_PROBE_NAMES.includes(name)));
21
+ const currentVersion = parsedVersion === CURRENT_CODEX_RELEASE_MANIFEST.requiredCliVersion;
22
+ const requestedRaw = input.probes?.length ? input.probes : CODEX_0139_REAL_PROBE_NAMES;
23
+ const unknownProbeNames = requestedRaw.filter((name) => !CODEX_0139_REAL_PROBE_NAMES.includes(name));
24
+ const requested = [...new Set(requestedRaw.filter((name) => CODEX_0139_REAL_PROBE_NAMES.includes(name)))];
22
25
  const probes = Object.fromEntries(CODEX_0139_REAL_PROBE_NAMES.map((name) => [name, skippedCodex0139Probe('probe_not_requested')]));
23
- const extraBlockers = [];
26
+ const extraBlockers = unknownProbeNames.map((name) => `unknown_real_probe:${name}`);
24
27
  if (!codexBin)
25
28
  extraBlockers.push('codex_cli_missing');
26
- if (!atLeast139)
27
- extraBlockers.push('codex_0_139_required');
28
- if (!codexBin || !atLeast139) {
29
+ if (!currentVersion)
30
+ extraBlockers.push(`codex_${CURRENT_CODEX_RELEASE_MANIFEST.requiredCliVersion.replaceAll('.', '_')}_required`);
31
+ if (!codexBin || !currentVersion) {
29
32
  for (const name of requested) {
30
- probes[name] = skippedCodex0139Probe(!codexBin ? 'codex_cli_missing' : 'codex_0_139_required', { parsed_version: parsedVersion });
33
+ probes[name] = skippedCodex0139Probe(!codexBin ? 'codex_cli_missing' : 'codex_current_release_required', { parsed_version: parsedVersion });
31
34
  }
32
- return buildCodex0139RealProbeResult({ codexBin, versionText, parsedVersion, requireReal, timeoutMs, probes, extraBlockers });
35
+ const tempCleanup = await cleanupProbeTempRoot(input.root);
36
+ return buildCodex0139RealProbeResult({ codexBin, versionText, parsedVersion, requireReal, timeoutMs, probes, requiredProbeNames: requested, releaseAuthorizing: false, tempCleanup, extraBlockers });
33
37
  }
34
- for (const name of requested) {
35
- probes[name] = await runOne(name, {
36
- root: input.root,
37
- requireReal,
38
- timeoutMs,
39
- codexBin,
40
- allowNetwork: input.allowNetwork,
41
- allowDesktop: input.allowDesktop
42
- });
38
+ let rows = [];
39
+ let tempCleanup;
40
+ try {
41
+ rows = await Promise.all(requested.map(async (name) => {
42
+ try {
43
+ const probe = await runOne(name, {
44
+ root: input.root,
45
+ requireReal,
46
+ timeoutMs,
47
+ codexBin,
48
+ allowNetwork: input.allowNetwork,
49
+ allowDesktop: input.allowDesktop
50
+ });
51
+ return [name, surfaceRuntimeWarnings(probe)];
52
+ }
53
+ catch (err) {
54
+ const errorClass = err instanceof Error ? err.name : typeof err;
55
+ extraBlockers.push(`codex_real_probe_runner_failed:${name}`);
56
+ return [name, skippedCodex0139Probe('codex_real_probe_runner_failed', { error_class: errorClass })];
57
+ }
58
+ }));
59
+ }
60
+ finally {
61
+ tempCleanup = await cleanupProbeTempRoot(input.root);
43
62
  }
44
- return buildCodex0139RealProbeResult({ codexBin, versionText, parsedVersion, requireReal, timeoutMs, probes, extraBlockers });
63
+ for (const [name, probe] of rows)
64
+ probes[name] = probe;
65
+ sanitizeCleanedTempArtifacts(probes, input.root);
66
+ if (!tempCleanup.ok)
67
+ extraBlockers.push('codex_real_probe_temp_cleanup_failed');
68
+ return buildCodex0139RealProbeResult({
69
+ codexBin,
70
+ versionText,
71
+ parsedVersion,
72
+ requireReal,
73
+ timeoutMs,
74
+ probes,
75
+ requiredProbeNames: requested,
76
+ releaseAuthorizing: requireReal && currentVersion,
77
+ tempCleanup,
78
+ extraBlockers
79
+ });
45
80
  }
46
81
  async function runOne(name, input) {
47
82
  switch (name) {
@@ -57,11 +92,11 @@ async function runOne(name, input) {
57
92
  return runCodex0139PluginCacheRealProbe(input);
58
93
  case 'sandbox_profile_alias':
59
94
  return runCodex0139SandboxProfileAliasProbe(input);
60
- case 'interrupt_agent_event':
61
- return runCodex0139InterruptAgentRealProbe(input);
95
+ case 'collab_agent_tool_schema':
96
+ return runCodex0144CollabAgentToolSchemaRealProbe(input);
62
97
  case 'image_referenced_path':
63
98
  return runCodex0139ImageReferencedPathRealProbe(input);
64
- case 'sandbox_proxy_preservation':
99
+ case 'sandbox_proxy_environment':
65
100
  return runCodex0139SandboxProxyPreservationProbe(input);
66
101
  }
67
102
  }
@@ -76,7 +111,7 @@ async function readCodexVersionText(codexBin, timeoutMs) {
76
111
  const text = `${result.stdout || ''}${result.stderr || ''}`.trim();
77
112
  return text || null;
78
113
  }
79
- export async function findCodex0139RealProbeBinary() {
114
+ export async function findCurrentCodexRealProbeBinary() {
80
115
  const candidates = await codexBinaryCandidates();
81
116
  let firstExisting = null;
82
117
  for (const candidate of candidates) {
@@ -84,18 +119,18 @@ export async function findCodex0139RealProbeBinary() {
84
119
  firstExisting = candidate;
85
120
  const versionText = await readCodexVersionText(candidate, 30000);
86
121
  const parsed = parseCodexVersionText(versionText);
87
- if (parsed && compareSemverLike(parsed, '0.139.0') >= 0)
122
+ if (parsed === CURRENT_CODEX_RELEASE_MANIFEST.requiredCliVersion)
88
123
  return candidate;
89
124
  }
90
125
  return firstExisting || await findCodexBinary();
91
126
  }
92
127
  async function codexBinaryCandidates() {
93
128
  const raw = [
129
+ path.join(process.cwd(), 'node_modules', '.bin', process.platform === 'win32' ? 'codex.cmd' : 'codex'),
94
130
  process.env.SKS_CODEX_BIN,
95
131
  process.env.DCODEX_CODEX_BIN,
96
132
  process.env.CODEX_BIN,
97
- ...pathCandidates('codex'),
98
- path.join(process.cwd(), 'node_modules', '.bin', process.platform === 'win32' ? 'codex.cmd' : 'codex')
133
+ ...pathCandidates('codex')
99
134
  ].filter(Boolean).map(String);
100
135
  const out = [];
101
136
  for (const candidate of raw) {
@@ -110,6 +145,46 @@ async function codexBinaryCandidates() {
110
145
  }
111
146
  return out;
112
147
  }
148
+ function surfaceRuntimeWarnings(probe) {
149
+ const warnings = [...(probe.warnings || [])];
150
+ const blockers = [...probe.blockers];
151
+ const stderr = String(probe.stderr_tail || '');
152
+ if (/AuthRequired|Auth required|No access token was provided/i.test(stderr)) {
153
+ warnings.push('codex_real_probe_external_mcp_auth_required');
154
+ }
155
+ if (probe.evidence?.process_warning)
156
+ warnings.push('codex_real_probe_process_warning');
157
+ return {
158
+ ...probe,
159
+ ok: probe.ok && blockers.length === 0,
160
+ warnings: [...new Set(warnings)],
161
+ blockers: [...new Set(blockers)]
162
+ };
163
+ }
164
+ async function cleanupProbeTempRoot(root) {
165
+ const tempRoot = path.join(root, '.sneakoscope', 'tmp', 'codex-0139-real-probes');
166
+ await fs.rm(tempRoot, { recursive: true, force: true }).catch(() => undefined);
167
+ const remainingEntries = await fs.readdir(tempRoot).catch(() => []);
168
+ return { root: tempRoot, ok: remainingEntries.length === 0, remaining_entries: remainingEntries };
169
+ }
170
+ function sanitizeCleanedTempArtifacts(probes, root) {
171
+ const tempRoot = path.resolve(root, '.sneakoscope', 'tmp', 'codex-0139-real-probes');
172
+ for (const probe of Object.values(probes)) {
173
+ const tempArtifacts = probe.artifact_paths.filter((artifact) => {
174
+ const resolved = path.resolve(artifact);
175
+ return resolved === tempRoot || resolved.startsWith(`${tempRoot}${path.sep}`);
176
+ });
177
+ if (!tempArtifacts.length)
178
+ continue;
179
+ probe.artifact_paths = probe.artifact_paths.filter((artifact) => !tempArtifacts.includes(artifact));
180
+ probe.evidence = {
181
+ ...probe.evidence,
182
+ observed_temp_artifact_count: tempArtifacts.length,
183
+ temp_artifacts_cleaned: true,
184
+ durable_evidence: 'embedded_in_codex_real_probe_report'
185
+ };
186
+ }
187
+ }
113
188
  function pathCandidates(command) {
114
189
  const exts = process.platform === 'win32' ? ['.cmd', '.exe', '.bat', ''] : [''];
115
190
  return (process.env.PATH || '').split(path.delimiter).flatMap((dir) => exts.map((ext) => path.join(dir, `${command}${ext}`)));
@@ -3,17 +3,21 @@ import { codex0139ProbeArtifactPath } from './codex-0139-real-probes.js';
3
3
  import { readJson, writeJsonAtomic } from '../fsx.js';
4
4
  export async function buildCodex0139RealProbeSummary(root) {
5
5
  const result = await readJson(codex0139ProbeArtifactPath(root));
6
- const probes = Object.fromEntries(Object.entries(result.probes || {}).map(([name, probe]) => [name, {
6
+ const requested = new Set((result.requested_probes?.length ? result.requested_probes : Object.keys(result.probes || {})).map(String));
7
+ const requestedEntries = Object.entries(result.probes || {}).filter(([name]) => requested.has(name));
8
+ const probes = Object.fromEntries(requestedEntries.map(([name, probe]) => [name, {
7
9
  ok: probe.ok === true,
8
10
  mode: probe.mode,
9
11
  blockers: probe.blockers || []
10
12
  }]));
11
- const values = Object.values(result.probes || {});
13
+ const values = requestedEntries.map(([, probe]) => probe);
12
14
  const skippedCount = values.filter((probe) => probe.mode === 'skipped').length;
13
15
  const failedCount = values.filter((probe) => probe.ok !== true && probe.mode !== 'skipped').length;
14
16
  return {
15
17
  schema: 'sks.codex-0139-real-probe-summary.v1',
16
- ok: result.require_real ? skippedCount === 0 && failedCount === 0 : result.overall_ok === true,
18
+ target_version: result.target_version,
19
+ compatibility_authority: 'deprecated_non_authoritative_lineage_only',
20
+ ok: result.overall_ok === true,
17
21
  require_real: result.require_real,
18
22
  codex_bin: result.codex_bin,
19
23
  parsed_version: result.parsed_version,
@@ -1,4 +1,5 @@
1
1
  import path from 'node:path';
2
+ import { CURRENT_CODEX_RELEASE_MANIFEST } from '../codex-compat/codex-release-manifest.js';
2
3
  import { nowIso, writeJsonAtomic } from '../fsx.js';
3
4
  export const CODEX_0139_REAL_PROBE_NAMES = [
4
5
  'code_mode_web_search',
@@ -7,9 +8,9 @@ export const CODEX_0139_REAL_PROBE_NAMES = [
7
8
  'marketplace_source_json',
8
9
  'plugin_catalog_cache',
9
10
  'sandbox_profile_alias',
10
- 'interrupt_agent_event',
11
+ 'collab_agent_tool_schema',
11
12
  'image_referenced_path',
12
- 'sandbox_proxy_preservation'
13
+ 'sandbox_proxy_environment'
13
14
  ];
14
15
  export function codex0139ProbeArtifactPath(root) {
15
16
  return path.join(root, '.sneakoscope', 'codex-0139-real-probes.json');
@@ -50,24 +51,38 @@ export function codex0139ProbeTail(text, limit = 4000) {
50
51
  return raw.length <= limit ? raw : raw.slice(raw.length - limit);
51
52
  }
52
53
  export function buildCodex0139RealProbeResult(input) {
53
- const skipped = CODEX_0139_REAL_PROBE_NAMES.filter((name) => input.probes[name]?.mode === 'skipped');
54
- const failed = CODEX_0139_REAL_PROBE_NAMES.filter((name) => input.probes[name] && input.probes[name].ok !== true && input.probes[name].mode !== 'skipped');
54
+ const requiredProbeNames = input.requiredProbeNames ? [...new Set(input.requiredProbeNames)] : [...CODEX_0139_REAL_PROBE_NAMES];
55
+ const skipped = requiredProbeNames.filter((name) => input.probes[name]?.mode === 'skipped');
56
+ const failed = requiredProbeNames.filter((name) => input.probes[name] && input.probes[name].ok !== true && input.probes[name].mode !== 'skipped');
55
57
  const blockers = [
56
58
  ...(input.extraBlockers || []),
57
- ...CODEX_0139_REAL_PROBE_NAMES.flatMap((name) => input.probes[name]?.blockers || []),
59
+ ...requiredProbeNames.flatMap((name) => input.probes[name]?.blockers || []),
58
60
  ...(input.requireReal && skipped.length ? skipped.map((name) => `require_real_skipped:${name}`) : [])
59
61
  ];
62
+ const warnings = requiredProbeNames.flatMap((name) => input.probes[name]?.warnings || []);
63
+ const overallOk = input.requireReal ? blockers.length === 0 && failed.length === 0 && skipped.length === 0 : failed.length === 0;
60
64
  return {
61
65
  schema: 'sks.codex-0139-real-probe-result.v1',
66
+ target_version: CURRENT_CODEX_RELEASE_MANIFEST.requiredCliVersion,
67
+ compatibility_origin: 'codex-0139-real-probe-result-v1',
68
+ compatibility_authority: 'deprecated_non_authoritative_lineage_only',
62
69
  generated_at: nowIso(),
63
70
  codex_bin: input.codexBin,
64
71
  version_text: input.versionText,
65
72
  parsed_version: input.parsedVersion,
66
73
  require_real: input.requireReal,
67
- overall_ok: input.requireReal ? blockers.length === 0 && failed.length === 0 && skipped.length === 0 : failed.length === 0,
74
+ release_authorizing: Boolean(input.releaseAuthorizing && overallOk),
75
+ overall_ok: overallOk,
68
76
  probe_timeout_ms: input.timeoutMs,
77
+ requested_probes: requiredProbeNames,
69
78
  probes: input.probes,
70
79
  skipped,
80
+ warnings: [...new Set(warnings)],
81
+ external_integration_status: {
82
+ mcp_auth: warnings.includes('codex_real_probe_external_mcp_auth_required') ? 'authentication_required' : 'not_observed',
83
+ release_authorization_scope: 'codex_core_compatibility_only'
84
+ },
85
+ temp_cleanup: input.tempCleanup || { root: '', ok: false, remaining_entries: [] },
71
86
  blockers: [...new Set(blockers)]
72
87
  };
73
88
  }
@@ -16,7 +16,8 @@ export async function runCodex0139SandboxProfileAliasProbe(input) {
16
16
  const dryArgs = sandboxHelpMentionsAlias ? ['sandbox', '-P', ':read-only', '--', 'true'] : ['-P', ':read-only', '--version'];
17
17
  const dry = await runProcess(codexBin, dryArgs, { timeoutMs: input.timeoutMs || 30000, maxOutputBytes: 64 * 1024 }).catch((err) => ({ code: 1, stdout: '', stderr: err?.message || String(err) }));
18
18
  const dryAccepted = dry.code === 0;
19
- const ok = topLevelHelpMentionsAlias || sandboxHelpMentionsAlias;
19
+ const helpMentionsAlias = topLevelHelpMentionsAlias || sandboxHelpMentionsAlias;
20
+ const ok = helpMentionsAlias && dryAccepted;
20
21
  return {
21
22
  ok,
22
23
  mode: 'actual-cli',
@@ -26,15 +27,18 @@ export async function runCodex0139SandboxProfileAliasProbe(input) {
26
27
  stderr_tail: codex0139ProbeTail(`${help.stderr || ''}\n${sandboxHelp.stderr || ''}\n${dry.stderr || ''}`),
27
28
  artifact_paths: [],
28
29
  evidence: {
29
- help_mentions_P: topLevelHelpMentionsAlias || sandboxHelpMentionsAlias,
30
+ help_mentions_P: helpMentionsAlias,
30
31
  top_level_help_mentions_P: topLevelHelpMentionsAlias,
31
32
  sandbox_help_mentions_P: sandboxHelpMentionsAlias,
32
33
  dry_command_attempted: true,
33
34
  dry_command_line: [codexBin, ...dryArgs],
34
35
  dry_command_accepted: dryAccepted,
35
- dry_command_warning: dryAccepted ? null : 'help proof accepted; dry no-op unsupported in this CLI shape'
36
+ dry_command_warning: dryAccepted ? null : 'permissions-profile alias was advertised but the real sandbox no-op failed'
36
37
  },
37
- blockers: ok ? [] : ['codex_sandbox_profile_alias_help_missing']
38
+ blockers: ok ? [] : [
39
+ ...(helpMentionsAlias ? [] : ['codex_sandbox_profile_alias_help_missing']),
40
+ ...(dryAccepted ? [] : ['codex_sandbox_profile_alias_real_command_failed'])
41
+ ]
38
42
  };
39
43
  }
40
44
  export async function runCodex0139SandboxProxyPreservationProbe(input) {
@@ -44,16 +48,23 @@ export async function runCodex0139SandboxProxyPreservationProbe(input) {
44
48
  return skippedCodex0139Probe('codex_cli_missing');
45
49
  const tempDir = path.join(input.root, '.sneakoscope', 'tmp', 'codex-0139-real-probes', `sandbox-proxy-${Date.now()}`);
46
50
  await ensureDir(tempDir);
47
- const args = ['sandbox', '-P', ':read-only', '-C', tempDir, '--', 'true'];
51
+ const proxyState = {
52
+ HTTPS_PROXY: Boolean(process.env.HTTPS_PROXY),
53
+ HTTP_PROXY: Boolean(process.env.HTTP_PROXY),
54
+ ALL_PROXY: Boolean(process.env.ALL_PROXY)
55
+ };
56
+ const probeScript = 'process.stdout.write(JSON.stringify({HTTPS_PROXY:Boolean(process.env.HTTPS_PROXY),HTTP_PROXY:Boolean(process.env.HTTP_PROXY),ALL_PROXY:Boolean(process.env.ALL_PROXY)}))';
57
+ const args = ['sandbox', '-P', ':read-only', '-C', tempDir, '--', process.execPath, '-e', probeScript];
48
58
  const result = await runProcess(codexBin, args, {
49
59
  cwd: tempDir,
50
60
  timeoutMs: input.timeoutMs || 30000,
51
61
  maxOutputBytes: 64 * 1024
52
62
  }).catch((err) => ({ code: 1, stdout: '', stderr: err?.message || String(err) }));
53
63
  const safeNoopRan = result.code === 0;
54
- const proxyMarkerAvailable = Boolean(process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.ALL_PROXY);
55
- const approvedEscalationPreservationScriptable = process.env.SKS_CODEX_0139_SANDBOX_PROXY_APPROVED_ESCALATION_RETRY === '1';
56
- const ok = safeNoopRan && (!input.requireReal || approvedEscalationPreservationScriptable);
64
+ const observedProxyState = parseProxyState(result.stdout);
65
+ const proxyEnvironmentPreserved = observedProxyState !== null
66
+ && Object.entries(proxyState).every(([key, value]) => observedProxyState[key] === value);
67
+ const ok = safeNoopRan && proxyEnvironmentPreserved;
57
68
  return {
58
69
  ok,
59
70
  mode: 'actual-cli',
@@ -64,16 +75,31 @@ export async function runCodex0139SandboxProxyPreservationProbe(input) {
64
75
  artifact_paths: [tempDir],
65
76
  evidence: {
66
77
  safe_noop_ran: safeNoopRan,
67
- proxy_marker_available: proxyMarkerAvailable,
68
- proxy_marker_checked: proxyMarkerAvailable,
69
- approved_escalation_preservation_scriptable: approvedEscalationPreservationScriptable,
70
- approved_escalation_retry_env: 'SKS_CODEX_0139_SANDBOX_PROXY_APPROVED_ESCALATION_RETRY=1',
78
+ host_proxy_presence: proxyState,
79
+ sandbox_proxy_presence: observedProxyState,
80
+ proxy_marker_checked: true,
81
+ proxy_environment_preserved: proxyEnvironmentPreserved,
71
82
  permissions_profile: ':read-only'
72
83
  },
73
84
  blockers: ok ? [] : [
74
85
  ...(safeNoopRan ? [] : ['codex_sandbox_proxy_safe_noop_failed']),
75
- ...(input.requireReal && !approvedEscalationPreservationScriptable ? ['codex_sandbox_proxy_escalation_preservation_not_safely_scriptable'] : [])
86
+ ...(proxyEnvironmentPreserved ? [] : ['codex_sandbox_proxy_environment_not_preserved'])
76
87
  ]
77
88
  };
78
89
  }
90
+ function parseProxyState(text) {
91
+ try {
92
+ const parsed = JSON.parse(String(text || ''));
93
+ if (!parsed || typeof parsed !== 'object')
94
+ return null;
95
+ return {
96
+ HTTPS_PROXY: parsed.HTTPS_PROXY === true,
97
+ HTTP_PROXY: parsed.HTTP_PROXY === true,
98
+ ALL_PROXY: parsed.ALL_PROXY === true
99
+ };
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ }
79
105
  //# sourceMappingURL=codex-0139-sandbox-real-probe.js.map
@@ -1,6 +1,6 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { buildCodexExecArgs, findCodexBinary } from '../codex-adapter.js';
3
+ import { buildCodexExecArgs, findCodexBinary, runCodexExec } from '../codex-adapter.js';
4
4
  import { ensureDir, runProcess, writeJsonAtomic, writeTextAtomic } from '../fsx.js';
5
5
  import { codex0139ProbeTail, skippedCodex0139Probe } from './codex-0139-real-probes.js';
6
6
  export async function runCodex0139WebSearchRealProbe(input) {
@@ -14,16 +14,25 @@ export async function runCodex0139WebSearchRealProbe(input) {
14
14
  return skippedCodex0139Probe('codex_cli_missing');
15
15
  const tempDir = path.join(input.root, '.sneakoscope', 'tmp', 'codex-0139-real-probes', `web-search-${Date.now()}`);
16
16
  await ensureDir(tempDir);
17
- await writeTextAtomic(path.join(tempDir, 'README.md'), 'Temporary Codex 0.139 web-search real probe workspace.\n');
17
+ await writeTextAtomic(path.join(tempDir, 'README.md'), 'Temporary Codex 0.144.1 web-search real probe workspace.\n');
18
18
  const outputFile = path.join(tempDir, 'last-message.txt');
19
- const prompt = 'In code mode, use standalone web search to find the title of https://example.com or OpenAI Codex release 0.139. Return JSON {"used_web_search":true,"answer":"...","sources":[...]}.';
20
- const args = buildCodexExecArgs({ root: tempDir, prompt, outputFile, json: true, extraArgs: [] });
21
- const result = await runProcess(codexBin, args, {
22
- cwd: tempDir,
19
+ const prompt = 'In code mode, use standalone web search to find the title of https://example.com. Return JSON {"used_web_search":true,"answer":"...","sources":[...]}.';
20
+ const args = buildCodexExecArgs({ root: tempDir, prompt, outputFile, json: true, extraArgs: ['-c', 'mcp_servers={}'] });
21
+ const result = await runCodexExec({
22
+ root: tempDir,
23
+ recoveryRoot: input.root,
24
+ prompt,
25
+ outputFile,
26
+ json: true,
27
+ extraArgs: ['-c', 'mcp_servers={}'],
23
28
  timeoutMs: input.timeoutMs || 120000,
24
- maxOutputBytes: 512 * 1024,
29
+ maxBufferBytes: 512 * 1024,
25
30
  stdoutFile: path.join(tempDir, 'codex.stdout.log'),
26
- stderrFile: path.join(tempDir, 'codex.stderr.log')
31
+ stderrFile: path.join(tempDir, 'codex.stderr.log'),
32
+ codexBin,
33
+ env: input.env || process.env,
34
+ ...(typeof input.recoveryFetch === 'function' ? { recoveryFetch: input.recoveryFetch } : {}),
35
+ ...(typeof input.runProcessImpl === 'function' ? { runProcessImpl: input.runProcessImpl } : {})
27
36
  }).catch((err) => ({
28
37
  code: 1,
29
38
  stdout: '',
@@ -32,13 +41,13 @@ export async function runCodex0139WebSearchRealProbe(input) {
32
41
  const output = await fs.readFile(outputFile, 'utf8').catch(() => '');
33
42
  const combined = `${result.stdout || ''}\n${result.stderr || ''}\n${output}`;
34
43
  const sawWebSearchEvent = /\b(web[_ -]?search|search_result|sources?|tool_call|standalone web search)\b/i.test(combined);
35
- const sawPlaintextResult = /(Example Domain|example\.com|OpenAI|Codex|0\.139)/i.test(combined);
44
+ const sawPlaintextResult = /(Example Domain|example\.com)/i.test(combined);
36
45
  const resultContainsExpectedMarker = /"used_web_search"\s*:\s*true|used_web_search/i.test(combined) || sawWebSearchEvent;
37
46
  const processExitedSuccessfully = result.code === 0;
38
- const ok = sawPlaintextResult && resultContainsExpectedMarker;
47
+ const ok = processExitedSuccessfully && sawPlaintextResult && resultContainsExpectedMarker;
39
48
  if (ok) {
40
- await writeJsonAtomic(path.join(input.root, '.sneakoscope', 'codex-0139-code-mode-web-search-policy.json'), {
41
- schema: 'sks.codex-0139-code-mode-web-search-policy.v1',
49
+ await writeJsonAtomic(path.join(input.root, '.sneakoscope', 'codex-0144-code-mode-web-search-policy.json'), {
50
+ schema: 'sks.codex-0144-code-mode-web-search-policy.v1',
42
51
  ok: true,
43
52
  generated_at: new Date().toISOString(),
44
53
  allow_standalone_web_search_in_code_mode: true,
@@ -64,9 +73,14 @@ export async function runCodex0139WebSearchRealProbe(input) {
64
73
  result_contains_expected_marker: resultContainsExpectedMarker,
65
74
  process_exited_successfully: processExitedSuccessfully,
66
75
  process_warning: processExitedSuccessfully ? null : 'Codex emitted web-search evidence before process timeout/nonzero exit.',
67
- output_file: outputFile
76
+ output_file: outputFile,
77
+ codex_lb_tool_output_recovery: result.codexLbToolOutputRecovery || null
68
78
  },
69
- blockers: ok ? [] : ['codex_web_search_real_probe_failed']
79
+ blockers: ok ? [] : [
80
+ ...(processExitedSuccessfully ? [] : ['codex_web_search_process_failed_or_timed_out']),
81
+ ...(result.codexLbToolOutputRecovery?.blockers || []),
82
+ ...(!sawPlaintextResult || !resultContainsExpectedMarker ? ['codex_web_search_real_probe_failed'] : [])
83
+ ]
70
84
  };
71
85
  }
72
86
  //# sourceMappingURL=codex-0139-web-search-probe.js.map