sneakoscope 7.0.2 → 7.0.3

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 (468) hide show
  1. package/README.md +7 -5
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/dist/bin/sks-dispatch.js +0 -3
  5. package/dist/cli/command-registry.js +0 -2
  6. package/dist/cli/install-helpers-codex-lb-chain.js +24 -2
  7. package/dist/cli/install-helpers-codex-lb-config.js +0 -7
  8. package/dist/cli/install-helpers-codex-lb-selftest-chain.js +0 -3
  9. package/dist/cli/install-helpers-codex-lb-selftest.js +0 -17
  10. package/dist/cli/install-helpers.js +81 -96
  11. package/dist/cli/router.js +0 -22
  12. package/dist/commands/codex-lb.js +176 -22
  13. package/dist/commands/codex.js +3 -8
  14. package/dist/commands/doctor.js +4 -14
  15. package/dist/commands/perf.js +5 -1
  16. package/dist/commands/zellij-slot-column-anchor.js +0 -2
  17. package/dist/commands/zellij-slot-pane.js +0 -7
  18. package/dist/commands/zellij.js +0 -2
  19. package/dist/config/skills-manifest.json +52 -52
  20. package/dist/core/agent-bridge/agent-manifest.js +192 -1
  21. package/dist/core/agent-bridge/agent-mode.js +0 -5
  22. package/dist/core/agent-bridge/host-capability-policy.js +189 -0
  23. package/dist/core/agent-bridge/host-capability-runtime.js +1395 -0
  24. package/dist/core/agent-bridge/mcp-server.js +1 -11
  25. package/dist/core/agents/agent-effort-policy.js +0 -3
  26. package/dist/core/agents/agent-orchestrator.js +0 -4
  27. package/dist/core/agents/agent-proof-evidence.js +0 -2
  28. package/dist/core/agents/agent-runner-ollama.js +0 -3
  29. package/dist/core/agents/agent-scheduler.js +0 -5
  30. package/dist/core/agents/native-cli-worker-runtime.js +5 -17
  31. package/dist/core/agents/work-partition/repo-inventory.js +0 -2
  32. package/dist/core/auto-review.js +0 -13
  33. package/dist/core/bench.js +0 -14
  34. package/dist/core/code-structure.js +0 -3
  35. package/dist/core/codex/agent-config-file-repair.js +0 -8
  36. package/dist/core/codex/codex-cli-update.js +122 -20
  37. package/dist/core/codex/codex-config-eperm-repair.js +0 -4
  38. package/dist/core/codex/codex-config-guard.js +0 -3
  39. package/dist/core/codex/codex-config-readability.js +0 -13
  40. package/dist/core/codex/codex-project-config-policy.js +0 -33
  41. package/dist/core/codex/official-goal-mode.js +0 -2
  42. package/dist/core/codex-app/codex-app-fast-ui-repair.js +5 -7
  43. package/dist/core/codex-app/codex-app-ui-state-snapshot.js +44 -7
  44. package/dist/core/codex-app/sks-menubar.js +0 -1
  45. package/dist/core/codex-app.js +0 -9
  46. package/dist/core/codex-compat/codex-hook-output-builders.js +9 -1
  47. package/dist/core/codex-compat/codex-hook-output-normalizer.js +1 -1
  48. package/dist/core/codex-compat/codex-hook-semantic-validator.js +3 -2
  49. package/dist/core/codex-compat/codex-hook-warning-detector.js +10 -2
  50. package/dist/core/codex-control/codex-lb-launch-recovery.js +0 -3
  51. package/dist/core/codex-control/codex-reliability-shield.js +0 -8
  52. package/dist/core/codex-control/codex-sdk-adapter.js +0 -3
  53. package/dist/core/codex-control/codex-sdk-config-policy.js +0 -2
  54. package/dist/core/codex-control/codex-sdk-env-policy.js +61 -16
  55. package/dist/core/codex-control/codex-task-runner.js +0 -7
  56. package/dist/core/codex-control/codex-thread-registry.js +0 -4
  57. package/dist/core/codex-lb/codex-lb-env.js +118 -20
  58. package/dist/core/codex-lb/codex-lb-tool-catalog.js +0 -4
  59. package/dist/core/codex-lb/codex-lb-tool-output-recovery.js +1 -1
  60. package/dist/core/codex-model-guard.js +0 -14
  61. package/dist/core/codex-native/codex-native-feature-broker.js +67 -22
  62. package/dist/core/codex-native/codex-native-interop-policy.js +81 -9
  63. package/dist/core/codex-native/confined-report-writer.js +21 -0
  64. package/dist/core/codex-native/core-skill-integrity.js +169 -20
  65. package/dist/core/codex-native/project-skill-dedupe.js +55 -13
  66. package/dist/core/codex-native/skill-registry-ledger.js +137 -16
  67. package/dist/core/codex-native/sks-skill-paths.js +185 -0
  68. package/dist/core/codex-runtime/codex-desktop-config-policy.js +0 -2
  69. package/dist/core/commands/agent-bridge-command.js +28 -8
  70. package/dist/core/commands/basic-cli.js +67 -26
  71. package/dist/core/commands/bench-command.js +5 -1
  72. package/dist/core/commands/command-utils.js +0 -5
  73. package/dist/core/commands/image-ux-review-command.js +0 -9
  74. package/dist/core/commands/mad-sks-command.js +0 -38
  75. package/dist/core/commands/naruto-command.js +46 -12
  76. package/dist/core/commands/ppt-command.js +0 -9
  77. package/dist/core/commands/run-command.js +8 -2
  78. package/dist/core/commands/seo-command.js +0 -6
  79. package/dist/core/commands/wiki-command.js +0 -14
  80. package/dist/core/computer-use-live-evidence.js +0 -5
  81. package/dist/core/config/secret-preservation.js +0 -11
  82. package/dist/core/daemon/sksd-hook-daemon-entrypoint.js +0 -2
  83. package/dist/core/daemon/sksd-hook-daemon.js +1 -29
  84. package/dist/core/daemon/sksd-hook-dispatch.js +0 -17
  85. package/dist/core/db-safety.js +0 -7
  86. package/dist/core/doctor/browser-use-repair.js +0 -2
  87. package/dist/core/doctor/doctor-codex-startup-repair.js +0 -3
  88. package/dist/core/doctor/doctor-readiness-matrix.js +12 -0
  89. package/dist/core/doctor/doctor-skill-reconcile.js +32 -0
  90. package/dist/core/doctor/imagegen-repair.js +0 -2
  91. package/dist/core/doctor/mcp-transport-collision-repair.js +0 -3
  92. package/dist/core/doctor/retired-managed-residue-private.js +0 -1
  93. package/dist/core/doctor/supabase-mcp-repair.js +0 -11
  94. package/dist/core/feature-fixture-executor.js +0 -48
  95. package/dist/core/feature-fixtures.js +0 -5
  96. package/dist/core/fsx.js +11 -12
  97. package/dist/core/hooks-runtime/code-pack-freshness-preflight.js +0 -5
  98. package/dist/core/hooks-runtime/hook-context.js +202 -0
  99. package/dist/core/hooks-runtime/hook-io.js +1 -12
  100. package/dist/core/hooks-runtime/light-turn.js +0 -2
  101. package/dist/core/hooks-runtime/naruto-decision-gate.js +4 -1
  102. package/dist/core/hooks-runtime/naruto-terminal-finalization.js +91 -0
  103. package/dist/core/hooks-runtime/official-subagent-lifecycle.js +370 -0
  104. package/dist/core/hooks-runtime/standalone-parent-host-capability.js +98 -0
  105. package/dist/core/hooks-runtime/subagent-context.js +59 -0
  106. package/dist/core/hooks-runtime/subagent-skill-availability-contract.js +29 -0
  107. package/dist/core/hooks-runtime/subagent-skill-availability-evidence.js +195 -0
  108. package/dist/core/hooks-runtime/subagent-skill-availability-guards.js +316 -0
  109. package/dist/core/hooks-runtime/subagent-skill-availability.js +217 -0
  110. package/dist/core/hooks-runtime.js +259 -535
  111. package/dist/core/image-ux-review/codex-app-generated-image-discovery.js +0 -17
  112. package/dist/core/image-ux-review/imagegen-adapter.js +0 -14
  113. package/dist/core/imagegen/imagegen-auth-readiness.js +0 -9
  114. package/dist/core/imagegen/imagegen-capability.js +0 -3
  115. package/dist/core/init/managed-skill-install.js +42 -0
  116. package/dist/core/init/skills.js +247 -74
  117. package/dist/core/init.js +15 -40
  118. package/dist/core/lean-engineering-policy.js +0 -2
  119. package/dist/core/locks/file-lock.js +0 -21
  120. package/dist/core/loops/loop-planner.js +0 -6
  121. package/dist/core/loops/loop-runtime.js +0 -1
  122. package/dist/core/loops/loop-worker-runtime.js +0 -19
  123. package/dist/core/mad-sks/executors/db-write-executor.js +0 -4
  124. package/dist/core/mad-sks/executors/executor-base.js +0 -10
  125. package/dist/core/mad-sks/immutable-harness-guard.js +0 -5
  126. package/dist/core/mad-sks/sql-plane/coordinator.js +0 -5
  127. package/dist/core/mad-sks/sql-plane/ledger.js +0 -4
  128. package/dist/core/mad-sks/sql-plane/lock.js +0 -4
  129. package/dist/core/mad-sks/sql-plane/mcp-executor.js +0 -9
  130. package/dist/core/mad-sks/sql-plane/policy-resolver.js +0 -2
  131. package/dist/core/mad-sks/sql-plane/postconditions.js +0 -4
  132. package/dist/core/mad-sks/sql-plane/recovery.js +0 -2
  133. package/dist/core/mad-sks/sql-plane/runtime-profile.js +0 -8
  134. package/dist/core/managed-assets/managed-assets-manifest.js +1 -7
  135. package/dist/core/mcp-config/health-check.js +10 -3
  136. package/dist/core/migration/migration-transaction-journal.js +0 -8
  137. package/dist/core/mission.js +0 -2
  138. package/dist/core/naruto/naruto-active-pool.js +0 -2
  139. package/dist/core/naruto/naruto-concurrency-governor.js +0 -1
  140. package/dist/core/naruto/naruto-real-write-proof.js +0 -4
  141. package/dist/core/naruto/naruto-write-e2e.js +0 -1
  142. package/dist/core/perf/perf-budget.js +0 -5
  143. package/dist/core/permission-gates.js +0 -2
  144. package/dist/core/pipeline-internals/runtime-core.js +15 -5
  145. package/dist/core/pipeline-internals/runtime-gates.js +0 -12
  146. package/dist/core/preflight/parallel-preflight-engine.js +0 -11
  147. package/dist/core/proof/evidence-collector.js +0 -2
  148. package/dist/core/proof/route-finalizer.js +0 -1
  149. package/dist/core/proof/selftest-proof-fixtures.js +0 -5
  150. package/dist/core/providers/glm/bench/glm-benchmark-runner.js +0 -2
  151. package/dist/core/providers/glm/glm-request-cache.js +0 -3
  152. package/dist/core/providers/glm/naruto/glm-naruto-command.js +0 -1
  153. package/dist/core/providers/glm/naruto/glm-naruto-decomposer.js +0 -1
  154. package/dist/core/providers/glm/naruto/glm-naruto-orchestrator.js +0 -6
  155. package/dist/core/providers/glm/naruto/glm-naruto-trace.js +0 -1
  156. package/dist/core/providers/glm/naruto/glm-naruto-worker-pool.js +0 -1
  157. package/dist/core/providers/glm/naruto/glm-naruto-worktree.js +0 -1
  158. package/dist/core/providers/openrouter/openrouter-secret-store.js +0 -1
  159. package/dist/core/providers/openrouter/openrouter-stream.js +0 -2
  160. package/dist/core/questions.js +3 -3
  161. package/dist/core/release/gate-manifest.js +0 -5
  162. package/dist/core/release/package-size-budget.js +1 -1
  163. package/dist/core/release/release-gate-batch-runner.js +11 -2
  164. package/dist/core/release/release-gate-cache-v2.js +0 -4
  165. package/dist/core/release/release-gate-hermetic-env.js +0 -5
  166. package/dist/core/release-parallel-full-coverage.js +0 -2
  167. package/dist/core/remote/ssh-worker-client.js +0 -3
  168. package/dist/core/research/research-adversarial-review.js +6 -2
  169. package/dist/core/responses-retry-policy.js +0 -10
  170. package/dist/core/retention.js +0 -7
  171. package/dist/core/routes/constants.js +0 -3
  172. package/dist/core/routes.js +89 -15
  173. package/dist/core/safety/command-contract/contracts.js +2 -0
  174. package/dist/core/safety/mutation-guard.js +0 -25
  175. package/dist/core/safety/mutation-ledger.js +0 -9
  176. package/dist/core/safety/requested-scope-contract.js +0 -0
  177. package/dist/core/security/high-risk-contracts.js +0 -1
  178. package/dist/core/skills/core-skill-card.js +0 -0
  179. package/dist/core/skills/core-skill-deployment.js +0 -13
  180. package/dist/core/skills/core-skill-epoch.js +0 -11
  181. package/dist/core/skills/core-skill-meta-update.js +0 -6
  182. package/dist/core/skills/core-skill-patch-apply.js +0 -7
  183. package/dist/core/skills/core-skill-patch.js +0 -8
  184. package/dist/core/skills/core-skill-reflection.js +0 -16
  185. package/dist/core/skills/core-skill-runtime.js +0 -6
  186. package/dist/core/skills/core-skill-scorer.js +0 -7
  187. package/dist/core/skills/core-skill-trainer.js +0 -11
  188. package/dist/core/skills/core-skill-types.js +0 -9
  189. package/dist/core/skills/core-skill-validation.js +0 -5
  190. package/dist/core/skills/rejected-skill-patch-buffer.js +0 -2
  191. package/dist/core/stop-gate/stop-gate-check.js +0 -8
  192. package/dist/core/stop-gate/stop-gate-resolver.js +0 -7
  193. package/dist/core/stop-gate/stop-gate-writer.js +0 -5
  194. package/dist/core/subagents/model-policy.js +0 -7
  195. package/dist/core/subagents/naruto-help-contract.js +1 -1
  196. package/dist/core/subagents/naruto-proof-projection.js +580 -12
  197. package/dist/core/subagents/official-subagent-config.js +0 -8
  198. package/dist/core/subagents/official-subagent-preparation.js +6 -5
  199. package/dist/core/subagents/official-subagent-prompt.js +29 -0
  200. package/dist/core/subagents/official-subagent-runner.js +343 -37
  201. package/dist/core/subagents/subagent-evidence.js +378 -9
  202. package/dist/core/subagents/thread-budget.js +5 -2
  203. package/dist/core/subagents/triwiki-attention.js +0 -4
  204. package/dist/core/subagents/wave-parent-guidance.js +54 -9
  205. package/dist/core/telegram/runtime.js +0 -1
  206. package/dist/core/triwiki/code-index-scanner.js +0 -3
  207. package/dist/core/triwiki/code-pack-head-freshness.js +0 -10
  208. package/dist/core/triwiki/code-pack.js +0 -2
  209. package/dist/core/triwiki/triwiki-cache-key.js +0 -1
  210. package/dist/core/triwiki/triwiki-proof-bank.js +0 -1
  211. package/dist/core/triwiki-attention.js +0 -10
  212. package/dist/core/triwiki-provenance.js +0 -5
  213. package/dist/core/triwiki-runtime.js +0 -12
  214. package/dist/core/triwiki-wrongness/wrongness-ledger.js +0 -7
  215. package/dist/core/triwiki-wrongness/wrongness-schema.js +0 -3
  216. package/dist/core/trust-kernel/trust-report.js +0 -7
  217. package/dist/core/update/update-migration-state.js +21 -39
  218. package/dist/core/update-check.js +2 -14
  219. package/dist/core/version-manager.js +2 -0
  220. package/dist/core/version.js +1 -1
  221. package/dist/core/work-order-ledger.js +0 -17
  222. package/dist/core/zellij/zellij-clipboard-config.js +0 -18
  223. package/dist/core/zellij/zellij-lane-renderer.js +5 -46
  224. package/dist/core/zellij/zellij-lane-runtime.js +0 -1
  225. package/dist/core/zellij/zellij-launcher.js +0 -26
  226. package/dist/core/zellij/zellij-official-subagent-activity.js +0 -5
  227. package/dist/core/zellij/zellij-official-subagent-telemetry.js +0 -5
  228. package/dist/core/zellij/zellij-screen-proof.js +0 -7
  229. package/dist/core/zellij/zellij-slot-column-anchor.js +0 -1
  230. package/dist/core/zellij/zellij-slot-pane-renderer.js +0 -9
  231. package/dist/core/zellij/zellij-slot-telemetry.js +0 -12
  232. package/dist/core/zellij/zellij-ui-mode.js +0 -7
  233. package/dist/core/zellij/zellij-update.js +0 -29
  234. package/dist/core/zellij/zellij-worker-pane-manager.js +0 -39
  235. package/dist/native/sks-menubar/Sources/ProvidersViewController.swift +213 -27
  236. package/dist/native/sks-menubar/Sources/UpdatesViewController.swift +95 -12
  237. package/dist/scripts/agent-message-bus-reader-check.js +0 -1
  238. package/dist/scripts/all-feature-deep-completion-check.js +0 -1
  239. package/dist/scripts/appshots-thread-attachment-discovery-check.js +0 -1
  240. package/dist/scripts/architecture-guard-check.js +0 -1
  241. package/dist/scripts/build-dist.js +0 -1
  242. package/dist/scripts/build-once-runner-check.js +0 -1
  243. package/dist/scripts/canonical-test-runner.js +0 -2
  244. package/dist/scripts/certificate-sla-check.js +0 -1
  245. package/dist/scripts/changelog-check.js +0 -1
  246. package/dist/scripts/check-cli-entrypoint.js +0 -1
  247. package/dist/scripts/check-command-module-budget.js +0 -7
  248. package/dist/scripts/check-feature-quality.js +0 -1
  249. package/dist/scripts/check-legacy-free.js +0 -1
  250. package/dist/scripts/check-pipeline-runtime.js +0 -1
  251. package/dist/scripts/check-runtime-schemas.js +0 -1
  252. package/dist/scripts/codex-0-134-runner-truth-check.js +0 -1
  253. package/dist/scripts/codex-0-137-compat-check.js +0 -1
  254. package/dist/scripts/codex-0138-capability-artifact-check.js +0 -1
  255. package/dist/scripts/codex-0138-capability-check.js +0 -1
  256. package/dist/scripts/codex-0138-doctor-check.js +0 -1
  257. package/dist/scripts/codex-0138-feature-probes-check.js +0 -1
  258. package/dist/scripts/codex-0144-core-real-probes-check.js +0 -1
  259. package/dist/scripts/codex-app-handoff-check.js +0 -1
  260. package/dist/scripts/codex-app-handoff-launch-check.js +0 -1
  261. package/dist/scripts/codex-config-load-probe.js +0 -5
  262. package/dist/scripts/codex-control-all-pipelines-check.js +0 -1
  263. package/dist/scripts/codex-control-event-stream-ledger-check.js +0 -1
  264. package/dist/scripts/codex-control-tool-output-continuity-audit-check.js +0 -1
  265. package/dist/scripts/codex-permission-profiles-check.js +0 -1
  266. package/dist/scripts/codex-plugin-app-template-policy-check.js +0 -1
  267. package/dist/scripts/codex-project-config-policy-splitter-check.js +0 -1
  268. package/dist/scripts/codex-sdk-all-pipelines-check.js +0 -1
  269. package/dist/scripts/codex-sdk-backend-router-check.js +0 -1
  270. package/dist/scripts/codex-sdk-capability-check.js +0 -1
  271. package/dist/scripts/codex-sdk-event-stream-ledger-check.js +0 -1
  272. package/dist/scripts/codex-sdk-real-smoke-check.js +0 -1
  273. package/dist/scripts/concurrent-session-collision-check.js +9 -0
  274. package/dist/scripts/context7-evidence-dedupe-check.js +0 -1
  275. package/dist/scripts/core-skill-card-schema-check.js +0 -11
  276. package/dist/scripts/core-skill-deployment-snapshot-check.js +0 -10
  277. package/dist/scripts/core-skill-heldout-validation-check.js +0 -11
  278. package/dist/scripts/core-skill-no-inference-optimizer-check.js +0 -11
  279. package/dist/scripts/core-skill-patch-check.js +0 -11
  280. package/dist/scripts/core-skill-route-runtime-integration-check.js +0 -11
  281. package/dist/scripts/current-surface-update-e2e-check.js +0 -4
  282. package/dist/scripts/current-upgrade-matrix-check.js +0 -1
  283. package/dist/scripts/dfix-fixture-check.js +0 -1
  284. package/dist/scripts/dfix-patch-handoff-check.js +0 -1
  285. package/dist/scripts/dfix-verification-check.js +0 -1
  286. package/dist/scripts/dfix-verification-recommendation-check.js +0 -1
  287. package/dist/scripts/docs-truthfulness-check.js +3 -3
  288. package/dist/scripts/doctor-fastpath-check.js +0 -1
  289. package/dist/scripts/doctor-fix-proves-codex-read-check.js +0 -11
  290. package/dist/scripts/doctor-fixes-codex-app-fast-ui-check.js +0 -4
  291. package/dist/scripts/doctor-idempotence-check.js +0 -1
  292. package/dist/scripts/doctor-ops-semantics-check.js +0 -1
  293. package/dist/scripts/ensure-bin-executable.js +0 -1
  294. package/dist/scripts/evidence-flagship-coverage-check.js +0 -1
  295. package/dist/scripts/fast-codex-service-tier-proof-check.js +0 -1
  296. package/dist/scripts/fixtures/fake-codex-config-loader.js +0 -5
  297. package/dist/scripts/fsx-hotpath-check.js +0 -1
  298. package/dist/scripts/gate-policy-audit-check.js +1 -1
  299. package/dist/scripts/geo-claim-evidence-check.js +0 -1
  300. package/dist/scripts/geo-cli-blackbox-check.js +0 -1
  301. package/dist/scripts/geo-crawler-policy-check.js +0 -1
  302. package/dist/scripts/git-worktree-diff-envelope-check.js +0 -1
  303. package/dist/scripts/git-worktree-dirty-lock-check.js +0 -1
  304. package/dist/scripts/git-worktree-dirty-main-detection-check.js +0 -1
  305. package/dist/scripts/git-worktree-integration-primary-check.js +0 -1
  306. package/dist/scripts/git-worktree-manifest-append-check.js +0 -1
  307. package/dist/scripts/git-worktree-untracked-diff-check.js +0 -1
  308. package/dist/scripts/high-risk-contracts-check.js +0 -1
  309. package/dist/scripts/hook-latency-budget-check.js +0 -1
  310. package/dist/scripts/hook-latency-quantum-check.js +0 -1
  311. package/dist/scripts/image-artifact-path-contract-check.js +0 -1
  312. package/dist/scripts/imagegen-real-smoke-check.js +0 -1
  313. package/dist/scripts/import-graph-budget-check.js +0 -1
  314. package/dist/scripts/installed-package-smoke-check.js +0 -1
  315. package/dist/scripts/legacy-gate-purge-check.js +0 -1
  316. package/dist/scripts/lib/codex-sdk-gate-lib.js +0 -3
  317. package/dist/scripts/lib/ensure-dist-fresh.js +0 -1
  318. package/dist/scripts/lib/valid-png-fixture.js +0 -1
  319. package/dist/scripts/local-collab-all-pipelines-final-gpt-check.js +0 -1
  320. package/dist/scripts/loop-directive-check-lib.js +0 -1
  321. package/dist/scripts/loop-worker-fixture-child.js +0 -1
  322. package/dist/scripts/mad-preflight-blocks-unreadable-config-check.js +0 -10
  323. package/dist/scripts/mad-sks-sql-plane-lifecycle-hook-decision-check.js +0 -1
  324. package/dist/scripts/mad-sks-sql-plane-result-lifecycle-check.js +0 -1
  325. package/dist/scripts/mcp-plugin-inventory-check.js +0 -1
  326. package/dist/scripts/mcp-tool-naming-parity-check.js +0 -1
  327. package/dist/scripts/model-call-concurrency-check.js +0 -1
  328. package/dist/scripts/mutation-callsite-coverage-check.js +0 -5
  329. package/dist/scripts/naruto-codex-e2e-check.js +0 -1
  330. package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -1
  331. package/dist/scripts/official-subagent-workflow-check.js +3 -1
  332. package/dist/scripts/ops-diagnostics-bundle-check.js +0 -1
  333. package/dist/scripts/packlist-performance-check.js +1 -3
  334. package/dist/scripts/perf-budget-check.js +0 -1
  335. package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -1
  336. package/dist/scripts/ppt-real-export-adapter-check.js +0 -1
  337. package/dist/scripts/ppt-real-imagegen-smoke-check.js +0 -1
  338. package/dist/scripts/ppt-real-imagegen-wiring-check.js +0 -1
  339. package/dist/scripts/ppt-reexport-rereview-check.js +0 -1
  340. package/dist/scripts/prepublish-fast-check.js +0 -23
  341. package/dist/scripts/prepublish-release-check-or-fast.js +0 -7
  342. package/dist/scripts/probe-memoization-check.js +0 -1
  343. package/dist/scripts/product-design-plugin-routing-check.js +0 -1
  344. package/dist/scripts/project-skill-dedupe-blackbox.js +36 -9
  345. package/dist/scripts/prompt-placeholder-guard-check.js +0 -1
  346. package/dist/scripts/python-codex-sdk-all-pipelines-check.js +0 -3
  347. package/dist/scripts/qa-loop-app-handoff-capability-check.js +0 -1
  348. package/dist/scripts/qa-loop-app-handoff-check.js +0 -1
  349. package/dist/scripts/qa-loop-app-handoff-cli-check.js +0 -1
  350. package/dist/scripts/qa-loop-app-handoff-confirmation-check.js +0 -1
  351. package/dist/scripts/qa-loop-app-handoff-gate-lifecycle-check.js +0 -1
  352. package/dist/scripts/qa-loop-app-handoff-launch-check.js +0 -1
  353. package/dist/scripts/qa-loop-app-handoff-status-lifecycle-check.js +0 -1
  354. package/dist/scripts/qa-loop-budget-policy-check.js +0 -1
  355. package/dist/scripts/qa-loop-effort-escalation-check.js +0 -1
  356. package/dist/scripts/qa-loop-image-path-exposure-check.js +0 -1
  357. package/dist/scripts/qa-loop-image-path-prompt-injection-check.js +0 -1
  358. package/dist/scripts/release-cache-glob-hashing-check.js +0 -1
  359. package/dist/scripts/release-cache-input-classifier-check.js +0 -1
  360. package/dist/scripts/release-cache-neutralization-report-check.js +0 -1
  361. package/dist/scripts/release-cache-version-neutral-fixture-check.js +0 -1
  362. package/dist/scripts/release-check-stamp.js +0 -4
  363. package/dist/scripts/release-dist-freshness-check.js +0 -1
  364. package/dist/scripts/release-full-parallelism-blackbox.js +3 -3
  365. package/dist/scripts/release-gate-batch-runner-check.js +22 -0
  366. package/dist/scripts/release-gate-budget-check.js +0 -6
  367. package/dist/scripts/release-gate-dag-runner-check.js +0 -1
  368. package/dist/scripts/release-latency-slo-check.js +0 -1
  369. package/dist/scripts/release-metadata-1-19-check.js +0 -1
  370. package/dist/scripts/release-metadata-check.js +0 -3
  371. package/dist/scripts/release-parallel-speed-budget-check.js +0 -5
  372. package/dist/scripts/release-proof-truth-check.js +0 -1
  373. package/dist/scripts/release-provenance-check.js +0 -1
  374. package/dist/scripts/release-real-check.js +0 -1
  375. package/dist/scripts/release-runtime-truth-matrix-check.js +0 -1
  376. package/dist/scripts/release-version-truth-check.js +0 -1
  377. package/dist/scripts/research-blueprint-densifier-check.js +0 -1
  378. package/dist/scripts/research-claim-builder-check.js +0 -1
  379. package/dist/scripts/research-complete-package-fixture-check.js +0 -1
  380. package/dist/scripts/research-final-reviewer-blackbox.js +0 -1
  381. package/dist/scripts/responses-retry-policy-centralized-check.js +0 -1
  382. package/dist/scripts/retention-apply-smoke-check.js +0 -1
  383. package/dist/scripts/retention-budget-check.js +0 -1
  384. package/dist/scripts/retention-dry-run-check.js +0 -1
  385. package/dist/scripts/rollback-recovery-smoke-check.js +0 -1
  386. package/dist/scripts/route-intent-regression-check.js +0 -1
  387. package/dist/scripts/runtime-current-terminal-check.js +0 -1
  388. package/dist/scripts/runtime-dist-parity-check.js +0 -1
  389. package/dist/scripts/runtime-no-src-mjs-check.js +0 -1
  390. package/dist/scripts/runtime-proof-summary-check.js +0 -1
  391. package/dist/scripts/runtime-ts-rust-boundary-check.js +0 -15
  392. package/dist/scripts/runtime-ts-source-of-truth-check.js +0 -1
  393. package/dist/scripts/scheduler-batch-dispatch-check.js +0 -1
  394. package/dist/scripts/scheduler-parallel-proof-consistency-check.js +0 -1
  395. package/dist/scripts/scheduler-utilization-integral-check.js +0 -1
  396. package/dist/scripts/search-visibility-gate-lib.js +0 -1
  397. package/dist/scripts/seo-audit-fixture-check.js +0 -1
  398. package/dist/scripts/seo-cli-blackbox-check.js +0 -1
  399. package/dist/scripts/seo-geo-geo-disambiguation-check.js +0 -1
  400. package/dist/scripts/seo-geo-route-identity-check.js +0 -1
  401. package/dist/scripts/seo-geo-skill-rich-content-check.js +0 -1
  402. package/dist/scripts/seo-marketing-truthfulness-check.js +0 -1
  403. package/dist/scripts/seo-metadata-sync-check.js +0 -1
  404. package/dist/scripts/seo-no-mutation-by-default-check.js +0 -1
  405. package/dist/scripts/shared-memory-fixture-check.js +0 -1
  406. package/dist/scripts/side-effect-runtime-report-check.js +0 -1
  407. package/dist/scripts/sizecheck.js +0 -1
  408. package/dist/scripts/sks-1-11-gate-lib.js +0 -1
  409. package/dist/scripts/sks-1-12-real-execution-check-lib.js +0 -1
  410. package/dist/scripts/sks-1-18-gate-lib.js +0 -1
  411. package/dist/scripts/sks-menubar-install-check.js +0 -3
  412. package/dist/scripts/sksd-daemon-check.js +0 -1
  413. package/dist/scripts/super-search-live-smoke-check.js +0 -1
  414. package/dist/scripts/super-search-local-http-smoke-check.js +0 -1
  415. package/dist/scripts/super-search-offline-contract-check.js +0 -1
  416. package/dist/scripts/super-search-provider-interface-check.js +0 -1
  417. package/dist/scripts/triwiki-cache-key-check.js +0 -1
  418. package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -1
  419. package/dist/scripts/triwiki-proof-bank-check.js +0 -1
  420. package/dist/scripts/triwiki-proof-card-check.js +0 -1
  421. package/dist/scripts/trust-fixture-check.js +0 -1
  422. package/dist/scripts/ultra-router-auto-router-check.js +0 -1
  423. package/dist/scripts/update-fastpath-check.js +0 -1
  424. package/dist/scripts/upgrade-migration-matrix-check.js +0 -1
  425. package/dist/scripts/ux-review-extract-wires-real-extractor-check.js +0 -1
  426. package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -1
  427. package/dist/scripts/ux-review-patch-diff-recheck-check.js +0 -1
  428. package/dist/scripts/ux-review-real-imagegen-smoke-check.js +0 -1
  429. package/dist/scripts/ux-review-run-wires-imagegen-check.js +0 -1
  430. package/dist/scripts/write-build-manifest.js +0 -1
  431. package/dist/scripts/wrongness-fixture-check.js +0 -1
  432. package/dist/scripts/zellij-capability-check.js +0 -1
  433. package/dist/scripts/zellij-developer-controls-check.js +0 -1
  434. package/dist/scripts/zellij-doctor-readiness-check.js +0 -13
  435. package/dist/scripts/zellij-dynamic-pane-lifecycle-check.js +0 -1
  436. package/dist/scripts/zellij-fake-adapter-check.js +0 -1
  437. package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -1
  438. package/dist/scripts/zellij-lane-renderer-check.js +0 -1
  439. package/dist/scripts/zellij-launch-command-truth-check.js +0 -12
  440. package/dist/scripts/zellij-layout-valid-check.js +0 -1
  441. package/dist/scripts/zellij-pane-creation-lock-metrics-check.js +0 -1
  442. package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -1
  443. package/dist/scripts/zellij-pane-lock-does-not-block-worker-check.js +0 -1
  444. package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -1
  445. package/dist/scripts/zellij-pane-proof-check.js +0 -1
  446. package/dist/scripts/zellij-qa-app-handoff-status-check.js +0 -1
  447. package/dist/scripts/zellij-real-session-cleanup-check.js +0 -1
  448. package/dist/scripts/zellij-real-session-launch-check.js +0 -1
  449. package/dist/scripts/zellij-right-column-geometry-proof.js +0 -1
  450. package/dist/scripts/zellij-right-column-headless-overflow-check.js +0 -1
  451. package/dist/scripts/zellij-right-column-manager-check.js +0 -1
  452. package/dist/scripts/zellij-screen-proof-check.js +0 -1
  453. package/dist/scripts/zellij-slot-only-ui-check.js +0 -1
  454. package/dist/scripts/zellij-slot-pane-renderer-check.js +0 -1
  455. package/dist/scripts/zellij-slot-pane-stale-detection-check.js +0 -7
  456. package/dist/scripts/zellij-slot-telemetry-incremental-check.js +0 -1
  457. package/dist/scripts/zellij-slot-telemetry-live-flush-check.js +0 -1
  458. package/dist/scripts/zellij-slot-telemetry-performance-check.js +0 -1
  459. package/dist/scripts/zellij-stacked-capability-routing-check.js +0 -1
  460. package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -1
  461. package/dist/scripts/zellij-stacked-version-matrix-check.js +0 -1
  462. package/dist/scripts/zellij-stacked-version-parser-check.js +0 -1
  463. package/dist/scripts/zellij-ui-design-check.js +0 -12
  464. package/dist/scripts/zellij-update-prompt-matrix-check.js +0 -1
  465. package/dist/scripts/zellij-update-prompt-mode-check.js +0 -1
  466. package/dist/scripts/zellij-update-prompt-safety-check.js +0 -1
  467. package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -2
  468. package/package.json +1 -1
@@ -31,11 +31,6 @@ export async function launchZellijLayout(opts = {}) {
31
31
  const layout = await writeZellijLayout(root, layoutInput);
32
32
  const capability = reusableZellijCapability(opts.zellijCapability, opts.requireZellij === true)
33
33
  || await checkZellijCapability({ root, require: opts.requireZellij === true });
34
- // Configure the clipboard pipeline so selections inside the session reach the OS
35
- // clipboard (Zellij's default OSC-52 copy is dropped by Terminal.app etc.). The
36
- // copy option flags are appended AFTER `--default-layout <path>` so the launch
37
- // command prefix ['zellij','attach','--create-background',session,'options','--default-layout',...]
38
- // is preserved (required by the zellij launch-command-truth gate + E2E assertions).
39
34
  const clipboard = await writeZellijClipboardConfig(root, missionId);
40
35
  const createCommand = ['attach', '--create-background', sessionName, 'options', '--default-layout', layout.layout_path, ...clipboard.optionFlags];
41
36
  const attachCommand = ['attach', sessionName];
@@ -53,11 +48,6 @@ export async function launchZellijLayout(opts = {}) {
53
48
  ...(opts.recoveryAllowUnverified === true ? { allowUnverified: true } : {})
54
49
  })
55
50
  : codexLbToolOutputRecoveryNotChecked(false);
56
- // Reset a stale same-named session before recreating it so the launch starts
57
- // main-only. `attach --create-background` is idempotent and otherwise reuses an
58
- // existing session, causing each run to pile another right-split SLOTS column
59
- // onto leftover panes from prior missions. Skipped on dry-run, when zellij is
60
- // unavailable, or when the user opts out with SKS_ZELLIJ_KEEP_SESSION=1.
61
51
  const resetSession = opts.freshSession === true
62
52
  && willCreateSession
63
53
  && codexLaunchRecovery.ok
@@ -199,17 +189,6 @@ export async function launchMadZellijUi(args = [], opts = {}) {
199
189
  launchOpts.session = resolvedSession;
200
190
  return launchZellijLayout(launchOpts);
201
191
  }
202
- /**
203
- * Attach the current terminal to an existing Zellij session in the foreground.
204
- *
205
- * `launchZellijLayout` only ever *creates* a detached background session, which
206
- * is correct for proof/automation but means an interactive launch (e.g.
207
- * `sks --mad`) never actually opens anything. This helper performs the
208
- * follow-up foreground attach, inheriting stdio so the session takes over the
209
- * user's terminal until they detach. It is a no-op-style failure (never throws)
210
- * when Zellij is missing or attach fails, so callers can fall back to printing a
211
- * manual attach hint.
212
- */
213
192
  export function attachZellijSessionInteractive(sessionName, opts = {}) {
214
193
  if (!sessionName)
215
194
  return { ok: false, status: null, signal: null, error: 'missing_session_name' };
@@ -217,11 +196,6 @@ export function attachZellijSessionInteractive(sessionName, opts = {}) {
217
196
  const env = { ...process.env };
218
197
  if (meta.zellij_socket_dir && !env.ZELLIJ_SOCKET_DIR)
219
198
  env.ZELLIJ_SOCKET_DIR = meta.zellij_socket_dir;
220
- // Steer the foreground attach at our generated clipboard config so the interactive
221
- // session honors copy_command=pbcopy + copy_on_select. The `options` subcommand only
222
- // configures the *created* background session, so the attach needs its own config
223
- // delivery; ZELLIJ_CONFIG_FILE avoids reordering CLI args. Defer to a user-exported
224
- // ZELLIJ_CONFIG_FILE if they already set one.
225
199
  if (opts.configPath && !env.ZELLIJ_CONFIG_FILE)
226
200
  env.ZELLIJ_CONFIG_FILE = opts.configPath;
227
201
  try {
@@ -7,8 +7,6 @@ const DEFAULT_TAIL_BYTES = 256 * 1024;
7
7
  const DEFAULT_REFRESH_MIN_MS = 2_000;
8
8
  const DEFAULT_HEARTBEAT_MS = 5_000;
9
9
  const MAX_DISCOVERY_DAY_DIRS = 45;
10
- // The current release baseline is 0.144.5, but this rollout format has been
11
- // stable since 0.144.1 and remains readable for compatible older sessions.
12
10
  const MIN_SUPPORTED_CODEX_ROLLOUT_VERSION = '0.144.1';
13
11
  const rolloutPathCache = new Map();
14
12
  export async function readOfficialSubagentRolloutActivity(input) {
@@ -35,9 +33,6 @@ export async function readOfficialSubagentRolloutActivity(input) {
35
33
  const activityCutoffMs = Math.max(Number.isFinite(birthMs) ? birthMs : 0, Number.isFinite(startMs) ? startMs : 0);
36
34
  const rows = tail.rows.filter((row) => {
37
35
  const ts = Date.parse(String(row?.timestamp || ''));
38
- // Forked subagent rollouts contain a rewritten copy of the parent history.
39
- // Those copied rows share the child session_meta timestamp. Ignore that
40
- // fork snapshot and surface only events emitted by the child afterwards.
41
36
  return Number.isFinite(ts) && ts > activityCutoffMs;
42
37
  });
43
38
  if (!rows.length)
@@ -93,11 +93,6 @@ export async function recordOfficialSubagentParentOutcomesTelemetry(input) {
93
93
  for (const missionId of missionIds) {
94
94
  const latest = await latestThreadSlotForMission(input.root, missionId, threadId);
95
95
  const stopFailureBlocker = failedOrAmbiguousStopBlocker(latest?.blockers);
96
- // SubagentStop has no trustworthy success status of its own, but a
97
- // normalized failed/ambiguous outcome is still negative evidence. A
98
- // structurally valid parent summary must not erase that evidence by
99
- // declaring the same thread completed. Surface the contradiction as a
100
- // failed slot so the CLI/Zellij observer remains fail closed.
101
96
  const completed = outcome.status === 'completed' && !stopFailureBlocker;
102
97
  const desiredStatus = completed ? 'completed' : 'failed';
103
98
  if (latest?.status === desiredStatus) {
@@ -4,15 +4,8 @@ import { checkZellijCapability } from './zellij-capability.js';
4
4
  import { runZellij } from './zellij-command.js';
5
5
  import { ZELLIJ_SCREEN_SCRAPEABLE_SECTIONS } from './zellij-lane-renderer.js';
6
6
  export const ZELLIJ_SCREEN_PROOF_SCHEMA = 'sks.zellij-screen-proof.v1';
7
- // Canonical scrapeable subset (a strict subset of ZELLIJ_LANE_SECTIONS).
8
7
  const REQUIRED_LANE_TEXT = ZELLIJ_SCREEN_SCRAPEABLE_SECTIONS;
9
8
  export const ZELLIJ_HEARTBEAT_TIMEOUT_BLOCKER = 'zellij_lane_heartbeat_timeout';
10
- /**
11
- * Poll for the lane renderer heartbeat file and return a decisive result. A
12
- * timeout is turned into the `zellij_lane_heartbeat_timeout` blocker so callers
13
- * (real-session launch gate) can fail directly instead of waiting silently.
14
- * Pure enough to be exercised hermetically without a real Zellij session.
15
- */
16
9
  export async function waitForLaneHeartbeat(file, opts = {}) {
17
10
  const timeoutMs = Math.max(0, Number(opts.timeoutMs ?? 5000));
18
11
  const intervalMs = Math.max(25, Number(opts.intervalMs ?? 250));
@@ -83,7 +83,6 @@ function renderTelemetryAnchor(snapshot, updateNotice = null, sqlPlaneCapability
83
83
  const update = updateNotice?.update_available && updateNotice?.latest_version ? ` · update ${trimInline(String(updateNotice.latest_version), 18)} available` : '';
84
84
  const sqlPlane = isMadSksSqlPlaneActive(sqlPlaneCapability) ? ' · MAD-SKS SQL-PLANE ACTIVE' : '';
85
85
  const qaHandoff = ['pending', 'blocked_for_desktop_review'].includes(String(appHandoff?.status || '')) ? ' · QA /app handoff pending' : '';
86
- // Compact SKS branding header: package version + mission id so the SLOTS column self-identifies.
87
86
  const brand = `SKS v${readPackageVersion()} · mission ${trimInline(String(snapshot.mission_id || '-'), 28)}`;
88
87
  if (staleSeconds != null && staleSeconds > 60) {
89
88
  return [brand, `SLOTS telemetry stale ${staleSeconds}s · active ?${update}${sqlPlane}${qaHandoff}`].join('\n');
@@ -288,10 +288,6 @@ export async function renderZellijSlotPaneStatusFromArtifacts(input) {
288
288
  telemetry_age_ms: status.telemetry_age_ms
289
289
  };
290
290
  }
291
- // Root-cause-3 fix: the watch loop never exited, so completed/failed panes lingered forever and
292
- // kept re-reporting staleness. Resolve whether this slot has reached a terminal state (status is
293
- // completed/failed/drained in telemetry) AND its worker-result.json exists, so the pane command
294
- // can render one final frame and exit instead of looping indefinitely.
295
291
  export async function resolveZellijSlotPaneExit(input) {
296
292
  const resultExists = Boolean(await readJson(path.join(path.resolve(input.artifactDir), 'worker-result.json')));
297
293
  if (!resultExists)
@@ -343,9 +339,6 @@ function telemetryStatus(snapshot) {
343
339
  const parsed = snapshot?.updated_at ? Date.parse(snapshot.updated_at) : NaN;
344
340
  const telemetryAgeMs = Number.isFinite(parsed) ? Math.max(0, Date.now() - parsed) : Number.MAX_SAFE_INTEGER;
345
341
  return {
346
- // Root-cause-3 fix: with a 1000ms+jitter flush throttle the old 3000ms threshold flapped
347
- // constantly. Raise to 15000ms so brief gaps between flushes don't read as "stale", and only
348
- // claim the worker may be gone after 60000ms of true silence.
349
342
  telemetry_stale: telemetryAgeMs > 15000,
350
343
  telemetry_age_ms: telemetryAgeMs
351
344
  };
@@ -456,8 +449,6 @@ function formatArtifactEvent(row) {
456
449
  if (!row)
457
450
  return '';
458
451
  const status = trimInline(row.lane_status || row.status || row.event || row.event_type || row.type || row.sdk_event_type || 'event', 18);
459
- // Prefer the latest LLM message text (message_tail/message) so the live pane shows what the
460
- // model is actually saying, falling back to tool/file/blocker context when no message exists.
461
452
  const detail = firstText([
462
453
  row.message_tail,
463
454
  row.message,
@@ -50,10 +50,6 @@ export async function readZellijSlotTelemetrySnapshotNoRebuild(root, missionId)
50
50
  const stat = await statTelemetryFile(snapshotPath);
51
51
  const recorded = telemetrySnapshotDiskStat.get(snapshotPath);
52
52
  const diskChanged = Boolean(stat) && (!recorded || recorded.mtimeMs !== stat.mtimeMs || recorded.size !== stat.size);
53
- // CRITICAL: never serve a process-local cache forever. Long-lived reader
54
- // processes (zellij slot pane renderers in --watch mode) must observe
55
- // snapshot flushes performed by the orchestrator and worker processes,
56
- // otherwise the pane renders the same frame for the entire mission.
57
53
  if (!diskChanged && cached?.schema === ZELLIJ_SLOT_TELEMETRY_SNAPSHOT_SCHEMA)
58
54
  return cached;
59
55
  const existing = await readJson(snapshotPath, null);
@@ -63,11 +59,6 @@ export async function readZellijSlotTelemetrySnapshotNoRebuild(root, missionId)
63
59
  return cached?.schema === ZELLIJ_SLOT_TELEMETRY_SNAPSHOT_SCHEMA ? cached : null;
64
60
  }
65
61
  const disk = existing;
66
- // Merge with any locally cached (possibly not-yet-flushed) slot state so a
67
- // writer process does not lose its pending events when another process
68
- // flushed the snapshot file in the meantime. The DISK updated_at stays
69
- // authoritative on the read path: it reflects the last real flush, which is
70
- // what stale-telemetry detection must measure.
71
62
  const merged = cached?.schema === ZELLIJ_SLOT_TELEMETRY_SNAPSHOT_SCHEMA ? mergeTelemetrySnapshots(disk, cached, { updatedAt: 'base' }) : disk;
72
63
  telemetrySnapshotCache.set(snapshotPath, merged);
73
64
  return merged;
@@ -334,9 +325,6 @@ async function writeTelemetrySnapshotFast(file, snapshot) {
334
325
  const flushCount = Number(telemetrySnapshotFlushCounts.get(file) || 0) + 1;
335
326
  telemetrySnapshotFlushCounts.set(file, flushCount);
336
327
  telemetrySnapshotLastFlushMs.set(file, Date.now());
337
- // Multiple processes (orchestrator + worker children) flush this file.
338
- // Serialize the read/merge/write critical section so a slower writer
339
- // cannot overwrite a newer slot observed by a different process.
340
328
  const disk = await readJson(file, null);
341
329
  const merged = disk?.schema === ZELLIJ_SLOT_TELEMETRY_SNAPSHOT_SCHEMA ? mergeTelemetrySnapshots(disk, snapshot) : snapshot;
342
330
  const next = { ...merged, flush_count: Math.max(flushCount, Number(merged.flush_count || 0)) };
@@ -13,13 +13,6 @@ export function resolveZellijUiMode(args = [], env = process.env) {
13
13
  return resolveExplicitZellijUiMode(args, env) || 'compact-slots';
14
14
  }
15
15
  export function resolveZellijWorkerPaneUiMode(args = [], env = process.env) {
16
- // Default worker panes to the live slot renderer (compact-slots). In
17
- // 'full-debug' the pane runs the worker process itself, but the worker is
18
- // invoked with --json and the codex SDK streams events to JSONL files — so
19
- // the pane stays blank until the worker exits. The slot renderer re-reads
20
- // heartbeat/event/stdout artifacts every second and actually shows what each
21
- // parallel worker is doing in real time. 'full-debug' remains available via
22
- // --zellij-full-debug or SKS_ZELLIJ_UI_MODE=full-debug.
23
16
  return resolveExplicitZellijUiMode(args, env) || 'compact-slots';
24
17
  }
25
18
  function resolveExplicitZellijUiMode(args = [], env = process.env) {
@@ -28,13 +28,6 @@ export function zellijUpgradeCommandHint(missing = false) {
28
28
  return 'cargo install --locked zellij # or your distro package manager';
29
29
  return 'See https://zellij.dev/documentation/installation';
30
30
  }
31
- /**
32
- * Resolve the latest STABLE zellij version. GitHub's /releases/latest endpoint
33
- * already excludes prereleases and drafts. Results are cached on disk
34
- * (default TTL 6h, override with SKS_ZELLIJ_UPDATE_TTL_MS) so command launches
35
- * stay fast and offline-safe. SKS_ZELLIJ_LATEST_VERSION pins the value for
36
- * tests and air-gapped environments.
37
- */
38
31
  export async function fetchLatestZellijVersion(input = {}) {
39
32
  const env = input.env || process.env;
40
33
  const pinned = stripVersionPrefix(String(env.SKS_ZELLIJ_LATEST_VERSION || '').trim());
@@ -48,8 +41,6 @@ export async function fetchLatestZellijVersion(input = {}) {
48
41
  }
49
42
  try {
50
43
  const tag = await githubLatestTag(input.timeoutMs || normalizePositiveInt(env.SKS_ZELLIJ_UPDATE_TIMEOUT_MS, 2500));
51
- // GitHub release tags carry a leading "v" (v0.44.3); \b-based version
52
- // parsing cannot start inside "v0", so strip the prefix first.
53
44
  const version = parseZellijVersionText(stripVersionPrefix(tag));
54
45
  if (!version)
55
46
  throw new Error(`zellij_latest_tag_unparsed:${tag}`);
@@ -111,11 +102,6 @@ export async function checkZellijUpdateNotice(input = {}) {
111
102
  }
112
103
  return persistNotice(input.missionDir, notice);
113
104
  }
114
- /**
115
- * Upgrade zellij to the latest stable release. Only Homebrew automation is
116
- * attempted (macOS / Linuxbrew); everything else returns manual_required with
117
- * the exact operator command, mirroring how the Codex CLI update flow behaves.
118
- */
119
105
  export async function upgradeZellijToLatest(input = {}) {
120
106
  const before = await checkZellijCapability({ require: false, writeReport: false, env: input.env || process.env }).catch(() => null);
121
107
  const beforeVersion = before?.version || null;
@@ -133,11 +119,6 @@ export async function upgradeZellijToLatest(input = {}) {
133
119
  };
134
120
  }
135
121
  const upgradeArgs = missing ? ['install', 'zellij'] : ['upgrade', 'zellij'];
136
- // Package installs go through the mutation guard with an explicit
137
- // zellij_install scope contract (same path ensureZellijCliTool uses), so the
138
- // mutation ledger records the install and safety gates can audit it. The
139
- // upgrade only runs after the operator confirmed the [Y/n] prompt or passed
140
- // --yes / `sks zellij update --yes`.
141
122
  const guardRoot = globalSksRoot();
142
123
  const guardCommand = `brew ${upgradeArgs.join(' ')}`;
143
124
  const contract = createRequestedScopeContract({
@@ -155,8 +136,6 @@ export async function upgradeZellijToLatest(input = {}) {
155
136
  maxOutputBytes: 256 * 1024
156
137
  }).catch((err) => ({ code: 1, stdout: '', stderr: String(err?.message || err) }));
157
138
  if (run.code !== 0 && !missing && /No such keg|No available formula|not installed/i.test(`${run.stderr}\n${run.stdout}`)) {
158
- // zellij exists on PATH but was not installed through Homebrew (e.g. cargo
159
- // or a manual binary). Installing the brew formula gives a managed copy.
160
139
  run = await guardedPackageInstall(guardCtx, 'zellij', {
161
140
  confirmed: true,
162
141
  command: 'brew',
@@ -195,14 +174,6 @@ export async function upgradeZellijToLatest(input = {}) {
195
174
  error: null
196
175
  };
197
176
  }
198
- /**
199
- * Launch-time prompt, mirroring maybePromptCodexUpdateForLaunch: check the
200
- * installed zellij version against the latest stable release and offer an
201
- * upgrade before opening the live session. Never blocks the launch.
202
- *
203
- * Skips: --json, --skip-cli-tools, --skip-zellij-update, SKS_SKIP_ZELLIJ_UPDATE=1.
204
- * Auto-approves: --yes / -y.
205
- */
206
177
  export async function maybePromptZellijUpdateForLaunch(args = [], opts = {}) {
207
178
  const env = opts.env || process.env;
208
179
  const list = (args || []).map((arg) => String(arg));
@@ -15,11 +15,6 @@ export function buildWorkerPaneName(slotId, generationIndex) {
15
15
  return `${slotId}/gen-${Math.max(1, Math.floor(Number(generationIndex) || 1))}`;
16
16
  }
17
17
  export function buildWorkerPaneTitle(slotId, generationIndex, context, serviceTier, backend, status, worktree, taskTitle) {
18
- // When a task label is available, the pane title is JUST the label + status:
19
- // users identify panes by what they are doing, not by slot ids. Slot/gen,
20
- // backend, provider, and worktree details stay inside the pane body and the
21
- // SLOTS anchor rows. The verbose format remains the fallback for callers
22
- // that have no task context.
23
18
  const task = shortWorkerTaskLabel(taskTitle);
24
19
  if (task)
25
20
  return `${task} · ${workerBackendTag(backend, context?.provider)} · ${status || 'launching'}`;
@@ -28,9 +23,6 @@ export function buildWorkerPaneTitle(slotId, generationIndex, context, serviceTi
28
23
  const wt = worktree ? ` · WT:${worktree.id} · branch:${worktree.branch}` : '';
29
24
  return `${base}${wt} · ${backend || 'codex-sdk'} · ${providerPaneLabel(normalized)} · ${status || 'launching'}`;
30
25
  }
31
- // Local-LLM workers must be visually distinguishable from GPT/codex workers:
32
- // only trivial long-running edits belong on local models, while web research
33
- // and code review must run on GPT. The tag makes a misrouted task obvious.
34
26
  export function workerBackendTag(backend, provider) {
35
27
  const text = `${String(backend || '')} ${String(provider || '')}`.toLowerCase();
36
28
  if (/ollama|local/.test(text))
@@ -39,8 +31,6 @@ export function workerBackendTag(backend, provider) {
39
31
  return 'fixture';
40
32
  return 'GPT';
41
33
  }
42
- // Lead the pane title with a 1-3 word task label so users can tell WHAT each
43
- // slot is doing at a glance instead of an anonymous "slot-002/gen-1".
44
34
  export function shortWorkerTaskLabel(value, maxChars = 24) {
45
35
  const text = String(value || '').replace(/\s+/g, ' ').trim();
46
36
  if (!text)
@@ -233,15 +223,7 @@ export async function openWorkerPane(input) {
233
223
  return record;
234
224
  }
235
225
  const paneName = buildWorkerPaneTitle(input.slotId, input.generationIndex, providerContext, input.serviceTier, input.backend, input.statusLabel || 'running', input.worktree || null, input.taskTitle || null);
236
- // CRITICAL: serialize anchor + worker pane creation per session. Workers
237
- // launch concurrently, and without this lock every worker raced past the
238
- // "does the SLOTS anchor exist yet?" check and created its OWN anchor with
239
- // --direction right — splitting the screen into N side-by-side columns
240
- // (observed in agent-zellij-pane-launch-ledger: terminal_1..terminal_5 all
241
- // recorded as separate slot_column_anchor_pane_id values in one mission).
242
226
  return withZellijPaneCreationLock(input, async () => {
243
- // Re-read the right-column state now that we hold the lock: a previously
244
- // serialized worker may have created the anchor and/or its own pane.
245
227
  const freshState = rightColumn
246
228
  ? await readRightColumnState(root, input.missionId, input.projectRoot).catch(() => null)
247
229
  : null;
@@ -259,18 +241,10 @@ export async function openWorkerPane(input) {
259
241
  let columnCreationDirectionRequested = null;
260
242
  let columnCreationDirectionApplied = null;
261
243
  if (rightColumn && !freshFocusCandidate) {
262
- // Single right-column invariant: if this zellij session was reused (stable
263
- // per-cwd name) and already carries a SLOTS anchor from a prior mission, adopt
264
- // it and stack workers underneath instead of splitting ANOTHER `--direction
265
- // right` column — repeated right-splits are exactly what fragments the screen
266
- // into side-by-side columns. A fresh column is only split when none exists yet.
267
244
  const adoptedAnchorPaneId = createSession.ok
268
245
  ? await findExistingSlotsAnchorPaneId(input.sessionName, cwd).catch(() => null)
269
246
  : null;
270
247
  if (adoptedAnchorPaneId) {
271
- // Adopted an existing column: no creation was requested, so leave the
272
- // column-creation direction fields null (avoids a false
273
- // `zellij_worker_slot_column_anchor_not_created` blocker).
274
248
  slotColumnAnchorPaneId = adoptedAnchorPaneId;
275
249
  await recordSlotColumnAnchorInRightColumn({
276
250
  root,
@@ -314,11 +288,6 @@ export async function openWorkerPane(input) {
314
288
  const focus = focusPaneId
315
289
  ? await focusZellijPaneById(input.sessionName, focusPaneId, cwd)
316
290
  : null;
317
- // Vertical stack policy: the first worker splits DOWN from the SLOTS anchor;
318
- // every following worker joins a zellij stacked-pane group with the previous
319
- // worker (`new-pane --stacked`, zellij >= 0.43) so the right column stays a
320
- // clean vertical stack instead of fragmenting the screen. Opt out with
321
- // SKS_ZELLIJ_WORKER_STACKED=0.
322
291
  const stackIntent = process.env.SKS_ZELLIJ_WORKER_STACKED !== '0'
323
292
  && Boolean(lastVisibleWorkerPaneId)
324
293
  && focus?.ok === true;
@@ -651,9 +620,6 @@ async function reconcileZellijWorkerPaneId(sessionName, paneName, resultPath, cw
651
620
  blockers: paneId == null ? ['zellij_worker_pane_id_not_reconciled'] : []
652
621
  };
653
622
  }
654
- // Look up an already-open SLOTS anchor pane in a (possibly reused) session so a
655
- // new mission can stack its workers under the existing right column instead of
656
- // splitting another one. Returns the live pane id (terminal_<n>) or null.
657
623
  async function findExistingSlotsAnchorPaneId(sessionName, cwd) {
658
624
  const listed = await runZellij(['--session', sessionName, 'action', 'list-panes', '--json', '--all'], {
659
625
  cwd,
@@ -775,11 +741,6 @@ async function focusZellijPaneById(sessionName, paneId, cwd) {
775
741
  last = focus;
776
742
  if (focus.ok)
777
743
  return focus;
778
- // zellij exits non-zero with "Pane Terminal(N) is already focused" when the
779
- // target pane already holds focus (common: new-pane auto-focuses the pane
780
- // it created, so the previous worker pane is usually still focused). That
781
- // is a success for our purposes — without this, stacked placement would
782
- // silently fall back to a plain down-split on every consecutive worker.
783
744
  if (/already focused/i.test(`${focus.stdout_tail || ''} ${focus.stderr_tail || ''}`)) {
784
745
  return { ...focus, ok: true, blockers: [], warnings: [...focus.warnings, 'zellij_pane_already_focused'] };
785
746
  }