sneakoscope 2.0.9 → 2.0.11

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 (74) hide show
  1. package/README.md +8 -4
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/crates/sks-core/src/main.rs +1 -1
  5. package/dist/.sks-build-stamp.json +4 -4
  6. package/dist/bin/sks.js +1 -1
  7. package/dist/build-manifest.json +37 -8
  8. package/dist/cli/command-registry.js +2 -0
  9. package/dist/cli/install-helpers.js +8 -20
  10. package/dist/commands/doctor.js +23 -10
  11. package/dist/commands/zellij-slot-column-anchor.js +23 -0
  12. package/dist/commands/zellij-slot-pane.js +26 -0
  13. package/dist/core/agents/agent-orchestrator.js +255 -16
  14. package/dist/core/agents/agent-patch-schema.js +8 -1
  15. package/dist/core/agents/agent-role-config.js +92 -0
  16. package/dist/core/agents/native-cli-session-swarm.js +186 -71
  17. package/dist/core/commands/naruto-command.js +165 -11
  18. package/dist/core/doctor/doctor-readiness-matrix.js +6 -0
  19. package/dist/core/fsx.js +1 -1
  20. package/dist/core/git/git-worktree-checkpoint.js +52 -0
  21. package/dist/core/git/git-worktree-cross-rebase.js +54 -0
  22. package/dist/core/git/git-worktree-merge-queue.js +69 -0
  23. package/dist/core/git/git-worktree-patch-envelope.js +8 -1
  24. package/dist/core/hooks-runtime.js +4 -0
  25. package/dist/core/init.js +3 -2
  26. package/dist/core/naruto/naruto-active-pool.js +35 -2
  27. package/dist/core/naruto/naruto-allocation-policy.js +99 -0
  28. package/dist/core/naruto/naruto-concurrency-governor.js +1 -1
  29. package/dist/core/naruto/naruto-real-worker-child.js +134 -0
  30. package/dist/core/naruto/naruto-real-worker-runtime.js +121 -0
  31. package/dist/core/naruto/naruto-rebalance-policy.js +36 -0
  32. package/dist/core/naruto/naruto-task-hints.js +71 -0
  33. package/dist/core/pipeline/finalize-pipeline-result.js +3 -1
  34. package/dist/core/pipeline/gpt-final-required.js +22 -2
  35. package/dist/core/version.js +1 -1
  36. package/dist/core/zellij/zellij-right-column-manager.js +111 -9
  37. package/dist/core/zellij/zellij-slot-column-anchor.js +59 -0
  38. package/dist/core/zellij/zellij-slot-pane-renderer.js +82 -0
  39. package/dist/core/zellij/zellij-ui-mode.js +16 -0
  40. package/dist/core/zellij/zellij-worker-pane-manager.js +104 -13
  41. package/dist/scripts/agent-role-config-repair-check.js +33 -0
  42. package/dist/scripts/git-worktree-checkpoint-check.js +20 -0
  43. package/dist/scripts/git-worktree-cross-rebase-check.js +27 -0
  44. package/dist/scripts/git-worktree-integration-primary-check.js +4 -2
  45. package/dist/scripts/git-worktree-integration-primary-runtime-check.js +20 -0
  46. package/dist/scripts/mutation-callsite-coverage-check.js +2 -1
  47. package/dist/scripts/naruto-actual-worker-control-plane-check.js +29 -0
  48. package/dist/scripts/naruto-allocation-policy-check.js +33 -0
  49. package/dist/scripts/naruto-extreme-parallelism-check.js +1 -1
  50. package/dist/scripts/naruto-extreme-parallelism-real-check.js +43 -0
  51. package/dist/scripts/naruto-orchestrator-runtime-source-check.js +11 -0
  52. package/dist/scripts/naruto-real-active-pool-check.js +3 -2
  53. package/dist/scripts/naruto-real-active-pool-runtime-check.js +55 -0
  54. package/dist/scripts/naruto-rebalance-policy-check.js +28 -0
  55. package/dist/scripts/naruto-shadow-clone-swarm-check.js +7 -3
  56. package/dist/scripts/naruto-zellij-dynamic-right-column-check.js +29 -2
  57. package/dist/scripts/readme-architecture-imagegen-official-check.js +4 -3
  58. package/dist/scripts/release-check-dynamic-execute.js +27 -1
  59. package/dist/scripts/release-check-dynamic.js +38 -11
  60. package/dist/scripts/release-check-stamp.js +7 -2
  61. package/dist/scripts/release-dag-full-coverage-check.js +15 -1
  62. package/dist/scripts/release-dynamic-performance-check.js +31 -1
  63. package/dist/scripts/release-gate-existence-audit.js +29 -33
  64. package/dist/scripts/release-readiness-report.js +14 -3
  65. package/dist/scripts/zellij-first-slot-down-stack-check.js +20 -0
  66. package/dist/scripts/zellij-first-slot-down-stack-real-check.js +16 -0
  67. package/dist/scripts/zellij-right-column-geometry-proof.js +155 -22
  68. package/dist/scripts/zellij-right-column-headless-overflow-check.js +22 -0
  69. package/dist/scripts/zellij-right-column-manager-check.js +9 -4
  70. package/dist/scripts/zellij-slot-column-anchor-check.js +24 -0
  71. package/dist/scripts/zellij-slot-only-ui-check.js +24 -0
  72. package/dist/scripts/zellij-slot-pane-renderer-check.js +38 -0
  73. package/dist/scripts/zellij-worker-pane-manager-single-owner-check.js +11 -4
  74. package/package.json +22 -5
package/README.md CHANGED
@@ -16,15 +16,19 @@ Set up this agent project with Sneakoscope Codex. Use [[mandarange/Sneakoscope-C
16
16
 
17
17
  ## Current Release
18
18
 
19
- SKS **2.0.9** makes the release path DAG-parallel by default and hardens the Naruto/MAD-SKS worktree proof chain. `release:check` now runs a manifest-backed DAG runner with resource-aware scheduling, hermetic per-gate environments, bounded logs, per-gate reports, cache proof, and parallel speed-budget evidence. Git worktree coding now preserves allocation manifests, detects dirty main worktrees, includes untracked content in exported diffs, emits one `git_apply_patch` envelope operation, applies worktree diffs through an integration queue, and locks retained dirty worktrees.
19
+ SKS **2.0.11** is the slot-only Zellij and Naruto runtime stabilization release. Compact slot panes are now the default visual worker surface, the initial Zellij session stays main-only until the first visible worker is reserved, overflow workers continue headlessly with runtime evidence instead of opening excess panes, and dashboard panes stay opt-in. The release path remains manifest-backed through the v2 DAG runner, with real Zellij/Naruto/worktree proof gates split into `real-check`.
20
20
 
21
21
  What changed:
22
22
 
23
+ - Zellij slot panes render compact worker slots without nested dashboard chrome, and right-column state records visible panes plus headless overflow lifecycle.
24
+ - Naruto active-pool checks now exercise real child-worker spawn/result collection paths, including high-fanout overflow and completed-worker collection order.
25
+ - Visible Zellij reservations are capped before pane launch so concurrent worker starts cannot over-open the right column.
26
+ - Git worktree integration now proves the primary repo receives validated worktree diffs, with rollback hash evidence recorded around the apply step.
27
+ - Agent role config repair detects stale generated role files and rewrites structured GPT-5.5-compatible configs atomically.
28
+ - Release gates now include slot-only UI, compact slot renderer, headless overflow, role-config repair, worktree primary-runtime, real active-pool, extreme real parallelism, and real right-column geometry checks.
29
+ - Release audit, dynamic selection, and stamp hashing use `release-gates.v2.json` as the manifest source of truth.
23
30
  - Git capability checks detect repo roots, Git dirs, worktree support, and safe cache roots while blocking in-repo worktree roots unless `SKS_ALLOW_IN_REPO_WORKTREES=1` is explicit.
24
31
  - Worker worktree allocation creates isolated branches/paths under `$SKS_WORKTREE_ROOT`, `$XDG_CACHE_HOME/sks/worktrees`, or `~/.cache/sks/worktrees`; main checkouts stay untouched until integration.
25
- - Worktree diff export records status, changed files, full-index binary diffs, and `git-worktree-diff` patch envelopes for parent-owned integration.
26
- - Integration worktrees apply worker diffs with `git apply --3way`, while cleanup removes only clean worktrees and retains dirty ones with a lock artifact.
27
- - Naruto work graphs, active-pool artifacts, Zellij dashboard titles, native worker intake, and GPT Final packs now carry worktree policy and WT/branch context.
28
32
  - Product Design plugin readiness now checks both local and remote Codex App catalogs, auto-installs the remote plugin when needed, and records the installed/enabled skill surface.
29
33
  - UI/design/PPT runtime routes prefer Product Design for research, ideation, audit, design QA, prototype, URL-to-code, image-to-code, share, and user-context steps.
30
34
  - Naruto read-only runs force write mode off, propagate no-patch reasons through worker proof, and skip changed-file lease checks when no write-capable patch envelope exists.
@@ -76,7 +76,7 @@ dependencies = [
76
76
 
77
77
  [[package]]
78
78
  name = "sks-core"
79
- version = "2.0.9"
79
+ version = "2.0.11"
80
80
  dependencies = [
81
81
  "serde_json",
82
82
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sks-core"
3
- version = "2.0.9"
3
+ version = "2.0.11"
4
4
  edition = "2021"
5
5
 
6
6
  [dependencies]
@@ -4,7 +4,7 @@ use std::io::{self, Read, Seek, SeekFrom};
4
4
  fn main() {
5
5
  let mut args = std::env::args().skip(1);
6
6
  match args.next().as_deref() {
7
- Some("--version") => println!("sks-rs 2.0.9"),
7
+ Some("--version") => println!("sks-rs 2.0.11"),
8
8
  Some("compact-info") => {
9
9
  let mut input = String::new();
10
10
  let _ = io::stdin().read_to_string(&mut input);
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": "sks.dist-build-stamp.v1",
3
3
  "package_name": "sneakoscope",
4
- "package_version": "2.0.9",
5
- "source_digest": "a2c7c47838f03483ee3a406fe6435876148d688fa16037d1b4eab45da1f930c4",
6
- "source_file_count": 2017,
7
- "built_at_source_time": 1780749751025
4
+ "package_version": "2.0.11",
5
+ "source_digest": "7f7339938c95fb98e1fb072192115eb0ca8cbc8136800d007b85d51fe413de19",
6
+ "source_file_count": 2046,
7
+ "built_at_source_time": 1780821479881
8
8
  }
package/dist/bin/sks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const FAST_PACKAGE_VERSION = '2.0.9';
2
+ const FAST_PACKAGE_VERSION = '2.0.11';
3
3
  const args = process.argv.slice(2);
4
4
  try {
5
5
  if (args[0] === '--agent' && args[1] === 'worker') {
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "schema": "sks.dist-build.v2",
3
- "version": "2.0.9",
4
- "package_version": "2.0.9",
3
+ "version": "2.0.11",
4
+ "package_version": "2.0.11",
5
5
  "typescript": true,
6
6
  "mjs_runtime_files": 0,
7
- "compiled_file_count": 1079,
8
- "compiled_js_count": 1079,
7
+ "compiled_file_count": 1108,
8
+ "compiled_js_count": 1108,
9
9
  "compiled_dts_count": 0,
10
- "source_digest": "a2c7c47838f03483ee3a406fe6435876148d688fa16037d1b4eab45da1f930c4",
11
- "source_file_count": 2017,
12
- "source_files_hash": "b69bf6184e62a1136caf9dc353eea79dcae63e3ba260a10fbc8eb6a38de7541a",
13
- "source_list_hash": "b69bf6184e62a1136caf9dc353eea79dcae63e3ba260a10fbc8eb6a38de7541a",
10
+ "source_digest": "7f7339938c95fb98e1fb072192115eb0ca8cbc8136800d007b85d51fe413de19",
11
+ "source_file_count": 2046,
12
+ "source_files_hash": "b94b6d01c22138f134b831e0e793a981744316d3e78bf457e00d81cadd9d5c07",
13
+ "source_list_hash": "b94b6d01c22138f134b831e0e793a981744316d3e78bf457e00d81cadd9d5c07",
14
14
  "src_mjs_runtime_files": 0,
15
15
  "dist_stamp_schema": "sks.dist-build-stamp.v1",
16
16
  "files": [
@@ -101,6 +101,8 @@
101
101
  "commands/versioning.js",
102
102
  "commands/wiki.js",
103
103
  "commands/zellij-lane.js",
104
+ "commands/zellij-slot-column-anchor.js",
105
+ "commands/zellij-slot-pane.js",
104
106
  "commands/zellij.js",
105
107
  "core/agents/agent-central-ledger.js",
106
108
  "core/agents/agent-cleanup-executor.js",
@@ -132,6 +134,7 @@
132
134
  "core/agents/agent-plan.js",
133
135
  "core/agents/agent-proof-evidence.js",
134
136
  "core/agents/agent-recursion-guard.js",
137
+ "core/agents/agent-role-config.js",
135
138
  "core/agents/agent-roster.js",
136
139
  "core/agents/agent-runner-codex-exec.js",
137
140
  "core/agents/agent-runner-fake.js",
@@ -346,8 +349,10 @@
346
349
  "core/git/git-repo-detection.js",
347
350
  "core/git/git-worktree-cache-policy.js",
348
351
  "core/git/git-worktree-capability.js",
352
+ "core/git/git-worktree-checkpoint.js",
349
353
  "core/git/git-worktree-cleanup.js",
350
354
  "core/git/git-worktree-conflict-resolver.js",
355
+ "core/git/git-worktree-cross-rebase.js",
351
356
  "core/git/git-worktree-diff.js",
352
357
  "core/git/git-worktree-manager.js",
353
358
  "core/git/git-worktree-merge-queue.js",
@@ -426,6 +431,7 @@
426
431
  "core/mistake-recall.js",
427
432
  "core/naruto/hardware-capacity-probe.js",
428
433
  "core/naruto/naruto-active-pool.js",
434
+ "core/naruto/naruto-allocation-policy.js",
429
435
  "core/naruto/naruto-backpressure.js",
430
436
  "core/naruto/naruto-concurrency-governor.js",
431
437
  "core/naruto/naruto-finalizer.js",
@@ -433,7 +439,11 @@
433
439
  "core/naruto/naruto-gpt-final-pack.js",
434
440
  "core/naruto/naruto-parallel-patch-apply.js",
435
441
  "core/naruto/naruto-patch-transaction-batch.js",
442
+ "core/naruto/naruto-real-worker-child.js",
443
+ "core/naruto/naruto-real-worker-runtime.js",
444
+ "core/naruto/naruto-rebalance-policy.js",
436
445
  "core/naruto/naruto-role-policy.js",
446
+ "core/naruto/naruto-task-hints.js",
437
447
  "core/naruto/naruto-verification-dag.js",
438
448
  "core/naruto/naruto-verification-pool.js",
439
449
  "core/naruto/naruto-work-graph.js",
@@ -634,6 +644,9 @@
634
644
  "core/zellij/zellij-right-column-layout-proof.js",
635
645
  "core/zellij/zellij-right-column-manager.js",
636
646
  "core/zellij/zellij-screen-proof.js",
647
+ "core/zellij/zellij-slot-column-anchor.js",
648
+ "core/zellij/zellij-slot-pane-renderer.js",
649
+ "core/zellij/zellij-ui-mode.js",
637
650
  "core/zellij/zellij-worker-pane-manager.js",
638
651
  "scripts/agent-ast-aware-work-graph-check.js",
639
652
  "scripts/agent-backfill-replenishment-check.js",
@@ -688,6 +701,7 @@
688
701
  "scripts/agent-real-codex-parallel-workers-5-check.js",
689
702
  "scripts/agent-real-codex-parallel-workers-check.js",
690
703
  "scripts/agent-real-codex-patch-envelope-smoke.js",
704
+ "scripts/agent-role-config-repair-check.js",
691
705
  "scripts/agent-rollback-command-check.js",
692
706
  "scripts/agent-route-blackbox-lib.js",
693
707
  "scripts/agent-route-truth-backfill-check.js",
@@ -840,12 +854,15 @@
840
854
  "scripts/git-precommit-fixture-check.js",
841
855
  "scripts/git-worktree-cache-performance-check.js",
842
856
  "scripts/git-worktree-capability-check.js",
857
+ "scripts/git-worktree-checkpoint-check.js",
843
858
  "scripts/git-worktree-cleanup-check.js",
859
+ "scripts/git-worktree-cross-rebase-check.js",
844
860
  "scripts/git-worktree-diff-envelope-check.js",
845
861
  "scripts/git-worktree-diff-export-check.js",
846
862
  "scripts/git-worktree-dirty-lock-check.js",
847
863
  "scripts/git-worktree-dirty-main-detection-check.js",
848
864
  "scripts/git-worktree-integration-primary-check.js",
865
+ "scripts/git-worktree-integration-primary-runtime-check.js",
849
866
  "scripts/git-worktree-manager-check.js",
850
867
  "scripts/git-worktree-manifest-append-check.js",
851
868
  "scripts/git-worktree-merge-queue-check.js",
@@ -923,13 +940,19 @@
923
940
  "scripts/memory-summary-rebuild-check.js",
924
941
  "scripts/mutation-callsite-coverage-check.js",
925
942
  "scripts/naruto-active-pool-check.js",
943
+ "scripts/naruto-actual-worker-control-plane-check.js",
944
+ "scripts/naruto-allocation-policy-check.js",
926
945
  "scripts/naruto-concurrency-governor-check.js",
927
946
  "scripts/naruto-extreme-parallelism-check.js",
947
+ "scripts/naruto-extreme-parallelism-real-check.js",
928
948
  "scripts/naruto-gpt-final-pack-check.js",
949
+ "scripts/naruto-orchestrator-runtime-source-check.js",
929
950
  "scripts/naruto-parallel-patch-apply-check.js",
930
951
  "scripts/naruto-readonly-routing-check.js",
931
952
  "scripts/naruto-real-active-pool-check.js",
953
+ "scripts/naruto-real-active-pool-runtime-check.js",
932
954
  "scripts/naruto-real-local-gpt-final-smoke.js",
955
+ "scripts/naruto-rebalance-policy-check.js",
933
956
  "scripts/naruto-role-distribution-check.js",
934
957
  "scripts/naruto-shadow-clone-swarm-check.js",
935
958
  "scripts/naruto-verification-pool-check.js",
@@ -1077,6 +1100,8 @@
1077
1100
  "scripts/zellij-developer-controls-check.js",
1078
1101
  "scripts/zellij-doctor-readiness-check.js",
1079
1102
  "scripts/zellij-dynamic-pane-lifecycle-check.js",
1103
+ "scripts/zellij-first-slot-down-stack-check.js",
1104
+ "scripts/zellij-first-slot-down-stack-real-check.js",
1080
1105
  "scripts/zellij-initial-main-only-blackbox.js",
1081
1106
  "scripts/zellij-lane-renderer-check.js",
1082
1107
  "scripts/zellij-launch-command-truth-check.js",
@@ -1086,8 +1111,12 @@
1086
1111
  "scripts/zellij-real-session-heartbeat-check.js",
1087
1112
  "scripts/zellij-real-session-launch-check.js",
1088
1113
  "scripts/zellij-right-column-geometry-proof.js",
1114
+ "scripts/zellij-right-column-headless-overflow-check.js",
1089
1115
  "scripts/zellij-right-column-manager-check.js",
1090
1116
  "scripts/zellij-screen-proof-check.js",
1117
+ "scripts/zellij-slot-column-anchor-check.js",
1118
+ "scripts/zellij-slot-only-ui-check.js",
1119
+ "scripts/zellij-slot-pane-renderer-check.js",
1091
1120
  "scripts/zellij-spawn-on-demand-layout-check.js",
1092
1121
  "scripts/zellij-ui-design-check.js",
1093
1122
  "scripts/zellij-worker-pane-manager-check.js",
@@ -104,6 +104,8 @@ export const COMMANDS = {
104
104
  hermes: entry('labs', 'Create Hermes Agent skill package', 'dist/commands/hermes.js', directCommand(() => import('../commands/hermes.js'), 'dist/commands/hermes.js')),
105
105
  tmux: entry('beta', 'Show removed-runtime migration notice', 'dist/commands/tmux.js', directCommand(() => import('../commands/tmux.js'), 'dist/commands/tmux.js')),
106
106
  'zellij-lane': entry('beta', 'Render a Zellij lane frame for SKS sessions', 'dist/commands/zellij-lane.js', directCommand(() => import('../commands/zellij-lane.js'), 'dist/commands/zellij-lane.js')),
107
+ 'zellij-slot-pane': entry('beta', 'Render a compact Zellij worker slot pane', 'dist/commands/zellij-slot-pane.js', directCommand(() => import('../commands/zellij-slot-pane.js'), 'dist/commands/zellij-slot-pane.js')),
108
+ 'zellij-slot-column-anchor': entry('beta', 'Render the compact SLOTS anchor pane for first-slot-down Zellij stacks', 'dist/commands/zellij-slot-column-anchor.js', directCommand(() => import('../commands/zellij-slot-column-anchor.js'), 'dist/commands/zellij-slot-column-anchor.js')),
107
109
  zellij: entry('beta', 'Inspect Zellij runtime status and explain repair (no auto-install)', 'dist/commands/zellij.js', directCommand(() => import('../commands/zellij.js'), 'dist/commands/zellij.js')),
108
110
  mad: entry('beta', 'MAD-SKS Zellij permission launcher', 'dist/commands/mad-sks.js', directCommand(() => import('../commands/mad-sks.js'), 'dist/commands/mad-sks.js')),
109
111
  'mad-sks': entry('beta', 'MAD-SKS scoped permission modifier', 'dist/commands/mad-sks.js', directCommand(() => import('../commands/mad-sks.js'), 'dist/commands/mad-sks.js')),
@@ -13,7 +13,6 @@ import { context7ConfigToml, DOLLAR_SKILL_NAMES, GETDESIGN_REFERENCE, hasContext
13
13
  import { checkZellijCapability } from '../core/zellij/zellij-capability.js';
14
14
  import { reconcileCodexAppUpgradeProcesses } from '../core/codex-app.js';
15
15
  import { recordCodexLbHealthEvent } from '../core/codex-lb-circuit.js';
16
- import { runSksUpdateCheck, runSksUpdateNow } from '../core/update-check.js';
17
16
  import { loadCodexLbEnv, writeCodexLbKeychain, codexLbMetadataPath } from '../core/codex-lb/codex-lb-env.js';
18
17
  import { buildCodexLbSetupPlan, codexLbPersistenceSummary, installCodexLbShellProfileSnippet, selectedCodexLbPersistenceModes } from '../core/codex-lb/codex-lb-setup.js';
19
18
  const DEFAULT_CODEX_APP_PLUGINS = [
@@ -2233,26 +2232,15 @@ export async function maybePromptCodexUpdateForLaunch(args = [], opts = {}) {
2233
2232
  return installCodexLatest(command, latest.version, current);
2234
2233
  }
2235
2234
  export async function maybePromptSksUpdateForLaunch(args = [], opts = {}) {
2236
- if (hasFlag(args, '--json') || hasFlag(args, '--skip-sks-update') || process.env.SKS_SKIP_SKS_UPDATE === '1')
2237
- return { status: 'skipped' };
2238
- const label = opts.label || 'SKS launch';
2239
- const check = await runSksUpdateCheck({ timeoutMs: 5000 }).catch((err) => ({
2240
- ok: false,
2241
- update_available: false,
2242
- latest: null,
2235
+ void args;
2236
+ void opts;
2237
+ return {
2238
+ status: 'skipped',
2239
+ reason: 'manual_update_commands_only',
2243
2240
  current: PACKAGE_VERSION,
2244
- command: null,
2245
- error: err?.message || String(err)
2246
- }));
2247
- if (!check.update_available) {
2248
- return { status: check.error ? 'unavailable' : 'current', latest: check.latest || null, current: check.current || PACKAGE_VERSION, error: check.error || null };
2249
- }
2250
- const command = check.command || `sks update now --version ${check.latest}`;
2251
- if (shouldAutoApproveInstall(args)) {
2252
- return runSksUpdateNow({ version: check.latest, timeoutMs: 10 * 60 * 1000, maxOutputBytes: 128 * 1024 });
2253
- }
2254
- console.log(`SKS update available before ${label}: ${check.current} -> ${check.latest}. Run when ready: ${command}`);
2255
- return { status: 'available', latest: check.latest || null, current: check.current || PACKAGE_VERSION, command };
2241
+ latest: null,
2242
+ command: null
2243
+ };
2256
2244
  }
2257
2245
  export function shouldAutoApproveInstall(args = [], env = process.env) {
2258
2246
  if (hasFlag(args, '--from-postinstall') && env.SKS_POSTINSTALL_AUTO_INSTALL_CLI_TOOLS !== '1')
@@ -18,20 +18,17 @@ import { appendMigrationEvents, hashConfigText } from '../core/migration/migrati
18
18
  import { repairCodexAppFastUi } from '../core/codex-app/codex-app-fast-ui-repair.js';
19
19
  import { resolveProviderContext } from '../core/provider/provider-context.js';
20
20
  import { readLocalModelConfig } from '../core/agents/ollama-worker-config.js';
21
- import { runSksUpdateNow } from '../core/update-check.js';
21
+ import { repairAgentRoleConfigs } from '../core/agents/agent-role-config.js';
22
22
  export async function run(_command, args = []) {
23
23
  const doctorFix = flag(args, '--fix');
24
24
  let setupRepair = null;
25
25
  const sksUpdate = doctorFix
26
- ? await runSksUpdateNow({
27
- timeoutMs: 10 * 60 * 1000,
28
- maxOutputBytes: 128 * 1024
29
- }).catch((err) => ({
26
+ ? {
30
27
  schema: 'sks.update-now.v1',
31
- ok: false,
32
- status: 'failed',
33
- error: err?.message || String(err)
34
- }))
28
+ ok: true,
29
+ status: 'skipped',
30
+ reason: 'manual_update_commands_only'
31
+ }
35
32
  : null;
36
33
  let migrationPreFix = null;
37
34
  if (doctorFix) {
@@ -151,6 +148,20 @@ export async function run(_command, args = []) {
151
148
  const zellij = await checkZellijCapability({ root, require: process.env.SKS_REQUIRE_ZELLIJ === '1' });
152
149
  const localModel = await readLocalModelConfig().catch(() => null);
153
150
  const permissionProfiles = await inventoryCodexPermissionProfiles(root, { writeReport: true });
151
+ const agentRoleConfigRepair = await repairAgentRoleConfigs({
152
+ root,
153
+ apply: doctorFix,
154
+ reportPath: `${root}/.sneakoscope/reports/agent-role-config-repair.json`
155
+ }).catch((err) => ({
156
+ schema: 'sks.agent-role-config-repair.v1',
157
+ ok: false,
158
+ apply: doctorFix,
159
+ missing: [],
160
+ existing: [],
161
+ created: [],
162
+ warnings_suppressed: false,
163
+ blockers: [err?.message || String(err)]
164
+ }));
154
165
  const globalSksInstallCleanup = flag(args, '--fix') && !flag(args, '--local-only')
155
166
  ? await cleanDuplicateGlobalSksInstalls({ root, fix: true }).catch((err) => ({ schema: 'sks.global-sks-install-cleanup.v1', ok: false, fix: true, error: err?.message || String(err), blockers: ['global_sks_install_cleanup_exception'] }))
156
167
  : null;
@@ -166,6 +177,7 @@ export async function run(_command, args = []) {
166
177
  require_codex_doctor: flag(args, '--fix') || flag(args, '--require-actual-codex'),
167
178
  zellij,
168
179
  local_model: localModel,
180
+ agent_role_config: agentRoleConfigRepair,
169
181
  repair: configRepair,
170
182
  codex_app_ui: codexAppUi,
171
183
  require_codex_cli_config_load: flag(args, '--fix') || flag(args, '--require-actual-codex'),
@@ -191,6 +203,7 @@ export async function run(_command, args = []) {
191
203
  codex_doctor_diff: codexDoctorDiff,
192
204
  zellij,
193
205
  local_model: localModel,
206
+ agent_role_config: agentRoleConfigRepair,
194
207
  zellij_readiness: zellijReadiness,
195
208
  codex_permission_profiles: permissionProfiles,
196
209
  imagegen: {
@@ -201,7 +214,7 @@ export async function run(_command, args = []) {
201
214
  ready,
202
215
  sneakoscope: { ok: await exists(`${root}/.sneakoscope`) },
203
216
  package: { bytes: pkgBytes, human: formatBytes(pkgBytes) },
204
- repair: { sks_update: sksUpdate, setup: setupRepair, codex_config: configRepair, migration_journal: migrationJournal, global_sks_installs: globalSksInstallCleanup }
217
+ repair: { sks_update: sksUpdate, setup: setupRepair, codex_config: configRepair, migration_journal: migrationJournal, global_sks_installs: globalSksInstallCleanup, agent_role_config: agentRoleConfigRepair }
205
218
  };
206
219
  if (flag(args, '--json')) {
207
220
  printJson(result);
@@ -0,0 +1,23 @@
1
+ import { renderZellijSlotColumnAnchorFromArtifacts } from '../core/zellij/zellij-slot-column-anchor.js';
2
+ export async function run(_command = 'zellij-slot-column-anchor', args = []) {
3
+ const missionId = readOption(args, '--mission', 'latest') || 'latest';
4
+ const artifactRoot = readOption(args, '--artifact-root', process.cwd()) || process.cwd();
5
+ const mode = readOption(args, '--mode', 'compact-slots') || 'compact-slots';
6
+ const watch = hasFlag(args, '--watch');
7
+ const intervalMs = Math.max(250, Number(readOption(args, '--interval-ms', '1000') || 1000));
8
+ for (;;) {
9
+ const text = await renderZellijSlotColumnAnchorFromArtifacts({ artifactRoot, missionId, mode });
10
+ process.stdout.write('\x1Bc' + text + '\n');
11
+ if (!watch)
12
+ break;
13
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
14
+ }
15
+ }
16
+ function readOption(args, name, fallback) {
17
+ const index = args.indexOf(name);
18
+ return index >= 0 && args[index + 1] ? String(args[index + 1]) : fallback;
19
+ }
20
+ function hasFlag(args, flag) {
21
+ return args.includes(flag);
22
+ }
23
+ //# sourceMappingURL=zellij-slot-column-anchor.js.map
@@ -0,0 +1,26 @@
1
+ import { renderZellijSlotPaneFromArtifacts } from '../core/zellij/zellij-slot-pane-renderer.js';
2
+ export async function run(_command = 'zellij-slot-pane', args = []) {
3
+ const artifactDir = readOption(args, '--artifact-dir', process.cwd()) || process.cwd();
4
+ const slotId = readOption(args, '--slot', 'slot-001') || 'slot-001';
5
+ const generationIndex = Number(readOption(args, '--generation', '1') || 1);
6
+ const backend = readOption(args, '--backend', null);
7
+ const role = readOption(args, '--role', null);
8
+ const mode = readOption(args, '--mode', 'compact-slots');
9
+ const watch = hasFlag(args, '--watch');
10
+ const intervalMs = Math.max(250, Number(readOption(args, '--interval-ms', '1000') || 1000));
11
+ for (;;) {
12
+ const text = await renderZellijSlotPaneFromArtifacts({ artifactDir, slotId, generationIndex, backend, role, mode });
13
+ process.stdout.write('\x1Bc' + text + '\n');
14
+ if (!watch)
15
+ break;
16
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
17
+ }
18
+ }
19
+ function readOption(args, name, fallback) {
20
+ const index = args.indexOf(name);
21
+ return index >= 0 && args[index + 1] ? String(args[index + 1]) : fallback;
22
+ }
23
+ function hasFlag(args, flag) {
24
+ return args.includes(flag);
25
+ }
26
+ //# sourceMappingURL=zellij-slot-pane.js.map