sneakoscope 4.8.6 → 5.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.
- package/README.md +51 -726
- package/bench/tasks/t01-off-by-one/repo/package.json +9 -0
- package/bench/tasks/t01-off-by-one/repo/src/pagination.js +5 -0
- package/bench/tasks/t01-off-by-one/repo/test.js +5 -0
- package/bench/tasks/t01-off-by-one/task.json +13 -0
- package/bench/tasks/t02-signature-cochange/repo/package.json +9 -0
- package/bench/tasks/t02-signature-cochange/repo/src/admin.js +5 -0
- package/bench/tasks/t02-signature-cochange/repo/src/audit.js +5 -0
- package/bench/tasks/t02-signature-cochange/repo/src/labels.js +3 -0
- package/bench/tasks/t02-signature-cochange/repo/src/profile.js +5 -0
- package/bench/tasks/t02-signature-cochange/repo/test.js +9 -0
- package/bench/tasks/t02-signature-cochange/task.json +12 -0
- package/bench/tasks/t03-type-puzzle/repo/package.json +9 -0
- package/bench/tasks/t03-type-puzzle/repo/src/config.js +4 -0
- package/bench/tasks/t03-type-puzzle/repo/test.js +6 -0
- package/bench/tasks/t03-type-puzzle/task.json +13 -0
- package/bench/tasks/t04-refactor-preserve/repo/package.json +9 -0
- package/bench/tasks/t04-refactor-preserve/repo/src/cart.js +8 -0
- package/bench/tasks/t04-refactor-preserve/repo/test.js +4 -0
- package/bench/tasks/t04-refactor-preserve/task.json +12 -0
- package/bench/tasks/t05-performance/repo/package.json +9 -0
- package/bench/tasks/t05-performance/repo/src/pairs.js +9 -0
- package/bench/tasks/t05-performance/repo/test.js +11 -0
- package/bench/tasks/t05-performance/task.json +12 -0
- package/bench/tasks/t06-mistake-rule/repo/package.json +9 -0
- package/bench/tasks/t06-mistake-rule/repo/src/loader.js +6 -0
- package/bench/tasks/t06-mistake-rule/repo/test.js +7 -0
- package/bench/tasks/t06-mistake-rule/task.json +12 -0
- package/config/bench-baseline.json +7 -0
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/crates/sks-core/src/main.rs +1 -1
- package/dist/bin/install.js +35 -0
- package/dist/bin/sks.js +1 -1
- package/dist/cli/cli-theme.js +51 -0
- package/dist/cli/command-registry.js +75 -42
- package/dist/cli/help-fast.js +18 -8
- package/dist/cli/insane-search-command.js +36 -8
- package/dist/cli/install-helpers.js +147 -47
- package/dist/cli/router.js +58 -2
- package/dist/commands/codex-lb.js +6 -4
- package/dist/commands/doctor.js +146 -8
- package/dist/commands/proof.js +6 -3
- package/dist/commands/zellij-monitor-pane.js +25 -0
- package/dist/commands/zellij-slot-pane.js +39 -2
- package/dist/commands/zellij-viewport-pane.js +56 -0
- package/dist/commands/zellij.js +55 -2
- package/dist/config/skills-manifest.json +493 -0
- package/dist/core/agents/agent-conflict-graph.js +5 -0
- package/dist/core/agents/agent-lease.js +5 -0
- package/dist/core/agents/agent-ledger-schemas.js +1 -0
- package/dist/core/agents/agent-lifecycle.js +86 -35
- package/dist/core/agents/agent-orchestrator.js +287 -72
- package/dist/core/agents/agent-output-validator.js +14 -3
- package/dist/core/agents/agent-patch-queue-store.js +108 -4
- package/dist/core/agents/agent-patch-queue.js +10 -3
- package/dist/core/agents/agent-patch-schema.js +13 -0
- package/dist/core/agents/agent-proof-evidence.js +6 -1
- package/dist/core/agents/agent-runner-fake.js +40 -0
- package/dist/core/agents/agent-scheduler.js +2 -3
- package/dist/core/agents/agent-worker-pipeline.js +36 -2
- package/dist/core/agents/codex-exec-worker-adapter.js +2 -0
- package/dist/core/agents/native-cli-session-swarm.js +30 -13
- package/dist/core/agents/native-cli-worker.js +2 -1
- package/dist/core/agents/native-worker-backend-router.js +58 -1
- package/dist/core/auto-review.js +25 -4
- package/dist/core/codex/agent-config-file-repair.js +15 -2
- package/dist/core/codex/codex-config-eperm-repair.js +8 -2
- package/dist/core/codex/codex-config-guard.js +289 -0
- package/dist/core/codex/codex-config-toml.js +122 -0
- package/dist/core/codex/codex-project-config-policy.js +59 -7
- package/dist/core/codex-app/sks-menubar.js +780 -122
- package/dist/core/codex-app.js +1 -0
- package/dist/core/codex-control/codex-fake-sdk-adapter.js +6 -4
- package/dist/core/codex-control/codex-sdk-config-policy.js +2 -1
- package/dist/core/codex-control/codex-sdk-env-policy.js +1 -1
- package/dist/core/codex-control/codex-task-runner.js +32 -14
- package/dist/core/codex-control/python-codex-sdk-adapter.js +4 -1
- package/dist/core/codex-control/schemas/agent-worker-result.schema.js +12 -3
- package/dist/core/codex-hooks/codex-hook-managed-install.js +5 -0
- package/dist/core/codex-hooks/codex-hook-state-writer.js +70 -11
- package/dist/core/codex-hooks/codex-hook-trust-doctor.js +2 -2
- package/dist/core/codex-lb/codex-lb-env.js +20 -1
- package/dist/core/codex-lb/codex-lb-setup.js +2 -5
- package/dist/core/codex-native/skill-registry-ledger.js +24 -5
- package/dist/core/commands/basic-cli.js +21 -2
- package/dist/core/commands/check-command.js +37 -5
- package/dist/core/commands/command-utils.js +22 -2
- package/dist/core/commands/computer-use-command.js +62 -7
- package/dist/core/commands/db-command.js +31 -5
- package/dist/core/commands/fast-mode-command.js +39 -11
- package/dist/core/commands/gate-result-contract.js +43 -0
- package/dist/core/commands/gates-command.js +6 -1
- package/dist/core/commands/gc-command.js +29 -2
- package/dist/core/commands/goal-command.js +9 -2
- package/dist/core/commands/gx-command.js +79 -7
- package/dist/core/commands/image-ux-review-command.js +188 -13
- package/dist/core/commands/mad-db-command.js +85 -176
- package/dist/core/commands/mad-sks-command.js +248 -34
- package/dist/core/commands/menubar-command.js +146 -0
- package/dist/core/commands/naruto-command.js +64 -10
- package/dist/core/commands/pipeline-command.js +21 -2
- package/dist/core/commands/plan-command.js +76 -0
- package/dist/core/commands/ppt-command.js +159 -24
- package/dist/core/commands/qa-loop-command.js +6 -2
- package/dist/core/commands/release-command.js +55 -2
- package/dist/core/commands/research-command.js +1 -1
- package/dist/core/commands/review-command.js +217 -0
- package/dist/core/commands/route-command.js +62 -0
- package/dist/core/commands/route-success-helpers.js +59 -0
- package/dist/core/commands/run-command.js +19 -7
- package/dist/core/commands/seo-command.js +49 -1
- package/dist/core/commands/status-command.js +21 -1
- package/dist/core/commands/team-legacy-observe-command.js +221 -3
- package/dist/core/commands/ui-command.js +161 -0
- package/dist/core/commands/uninstall-command.js +312 -0
- package/dist/core/db-safety.js +7 -3
- package/dist/core/doctor/codex-startup-config-repair.js +14 -3
- package/dist/core/doctor/confirm-repair.js +27 -0
- package/dist/core/doctor/context7-mcp-repair.js +35 -7
- package/dist/core/doctor/doctor-codex-startup-repair.js +10 -3
- package/dist/core/doctor/doctor-context7-repair.js +17 -4
- package/dist/core/doctor/doctor-dirty-planner.js +27 -9
- package/dist/core/doctor/doctor-native-capability-repair.js +12 -2
- package/dist/core/doctor/doctor-readiness-matrix.js +27 -2
- package/dist/core/doctor/doctor-repair-postcheck.js +4 -0
- package/dist/core/doctor/doctor-transaction.js +21 -5
- package/dist/core/doctor/doctor-zellij-repair.js +1 -0
- package/dist/core/doctor/imagegen-repair.js +161 -0
- package/dist/core/doctor/supabase-mcp-repair.js +23 -5
- package/dist/core/feature-fixture-runner.js +2 -2
- package/dist/core/feature-fixtures.js +65 -37
- package/dist/core/feature-registry.js +106 -3
- package/dist/core/fsx.js +91 -2
- package/dist/core/hooks-runtime/skill-reconcile-preflight.js +43 -0
- package/dist/core/hooks-runtime.js +86 -46
- package/dist/core/image-ux-review/imagegen-adapter.js +48 -11
- package/dist/core/image-ux-review.js +16 -0
- package/dist/core/imagegen/imagegen-capability.js +11 -5
- package/dist/core/imagegen/require-imagegen.js +57 -0
- package/dist/core/init/skills.js +271 -14
- package/dist/core/init.js +13 -10
- package/dist/core/mad-db/mad-db-coordinator.js +96 -20
- package/dist/core/mad-db/mad-db-policy.js +12 -10
- package/dist/core/mad-sks/executors/executor-base.js +8 -2
- package/dist/core/mad-sks/executors/index.js +4 -0
- package/dist/core/mad-sks/executors/sql-plane-executor.js +194 -0
- package/dist/core/mission.js +138 -5
- package/dist/core/naruto/naruto-active-pool.js +84 -30
- package/dist/core/naruto/naruto-backpressure.js +5 -1
- package/dist/core/naruto/naruto-real-worker-child.js +10 -0
- package/dist/core/naruto/naruto-real-worker-runtime.js +9 -7
- package/dist/core/naruto/naruto-role-policy.js +3 -0
- package/dist/core/naruto/naruto-task-hints.js +10 -0
- package/dist/core/naruto/naruto-work-graph.js +8 -2
- package/dist/core/naruto/naruto-work-item.js +6 -0
- package/dist/core/naruto/resource-pressure-monitor.js +33 -15
- package/dist/core/naruto/solution-tournament.js +101 -0
- package/dist/core/permission-gates.js +30 -0
- package/dist/core/pipeline-internals/runtime-core.js +72 -222
- package/dist/core/pipeline-internals/runtime-gates.js +140 -24
- package/dist/core/ppt-review/index.js +6 -1
- package/dist/core/ppt-review/slide-imagegen-review.js +75 -10
- package/dist/core/ppt.js +70 -2
- package/dist/core/proof/auto-finalize.js +70 -11
- package/dist/core/proof/proof-schema.js +2 -0
- package/dist/core/proof/route-adapter.js +5 -1
- package/dist/core/proof/route-finalizer.js +8 -5
- package/dist/core/proof/selftest-proof-fixtures.js +18 -5
- package/dist/core/proof/validation.js +2 -0
- package/dist/core/provider/model-router.js +53 -0
- package/dist/core/questions.js +1 -1
- package/dist/core/recallpulse.js +1 -1
- package/dist/core/release/gate-manifest.js +2 -2
- package/dist/core/release/release-gate-affected-selector.js +3 -10
- package/dist/core/release/release-gate-batch-runner.js +4 -2
- package/dist/core/release/release-gate-cache-v2.js +27 -14
- package/dist/core/release/release-gate-dag.js +6 -1
- package/dist/core/release/release-gate-hermetic-env.js +10 -0
- package/dist/core/release/release-gate-node.js +3 -0
- package/dist/core/release/release-gate-resource-governor.js +1 -0
- package/dist/core/retention.js +89 -4
- package/dist/core/routes/constants.js +1 -1
- package/dist/core/routes/diagnostic-allowlist.js +55 -0
- package/dist/core/routes.js +83 -33
- package/dist/core/safety/mutation-guard.js +5 -1
- package/dist/core/skill-forge.js +9 -4
- package/dist/core/stop-gate/gate-evaluator.js +102 -0
- package/dist/core/stop-gate/stop-gate-check.js +26 -4
- package/dist/core/stop-gate/stop-gate-resolver.js +19 -3
- package/dist/core/stop-gate/stop-gate-writer.js +20 -1
- package/dist/core/team-dag.js +12 -465
- package/dist/core/team-dashboard-renderer.js +13 -94
- package/dist/core/team-live.js +68 -804
- package/dist/core/triwiki/agents-md-projector.js +184 -0
- package/dist/core/triwiki-wrongness/wrongness-schema.js +3 -1
- package/dist/core/trust-kernel/trust-kernel-schema.js +1 -0
- package/dist/core/trust-kernel/trust-report.js +1 -1
- package/dist/core/trust-kernel/trust-status.js +2 -0
- package/dist/core/ui/dashboard-html.js +111 -0
- package/dist/core/update/update-migration-state.js +383 -42
- package/dist/core/update-check.js +201 -78
- package/dist/core/verification/diff-quality.js +100 -0
- package/dist/core/verification/impact-scan.js +164 -0
- package/dist/core/verification/machine-feedback.js +146 -0
- package/dist/core/verification/mistake-rule-compiler.js +195 -0
- package/dist/core/version.js +1 -1
- package/dist/core/zellij/zellij-layout-builder.js +44 -16
- package/dist/core/zellij/zellij-monitor-renderer.js +53 -0
- package/dist/core/zellij/zellij-self-heal.js +27 -32
- package/dist/core/zellij/zellij-slot-pane-renderer.js +162 -153
- package/dist/core/zellij/zellij-slot-telemetry.js +2 -0
- package/dist/core/zellij/zellij-theme.js +67 -0
- package/dist/core/zellij/zellij-ui-mode.js +16 -0
- package/dist/core/zellij/zellij-viewport-binder.js +59 -0
- package/dist/core/zellij/zellij-worker-pane-manager.js +53 -5
- package/dist/scripts/agent-patch-swarm-gate-lib.js +2 -2
- package/dist/scripts/build-dist.js +8 -0
- package/dist/scripts/check-feature-quality.js +2 -2
- package/dist/scripts/cli-output-consistency-check.js +57 -0
- package/dist/scripts/codex-lb-fast-ui-preservation-check.js +106 -0
- package/dist/scripts/codex-lb-gpt55-fast-profile-check.js +105 -0
- package/dist/scripts/codex-lb-missing-env-regression.js +2 -3
- package/dist/scripts/codex-project-config-policy-merge-regression.js +3 -3
- package/dist/scripts/coding-bench-check.js +136 -0
- package/dist/scripts/concurrent-session-collision-check.js +67 -0
- package/dist/scripts/docs-truthfulness-check.js +1 -1
- package/dist/scripts/doctor-imagegen-repair-check.js +62 -0
- package/dist/scripts/ensure-bin-executable.js +11 -3
- package/dist/scripts/gate-policy-audit-check.js +130 -0
- package/dist/scripts/harness-benchmark-check.js +104 -0
- package/dist/scripts/hook-latency-budget-check.js +45 -0
- package/dist/scripts/legacy-update-e2e-check.js +228 -0
- package/dist/scripts/lib/codex-sdk-gate-lib.js +2 -2
- package/dist/scripts/lib/real-codex-parallel-gate.js +2 -2
- package/dist/scripts/loop-directive-check-lib.js +1 -1
- package/dist/scripts/mad-db-command-check.js +11 -8
- package/dist/scripts/mad-db-real-supabase-e2e.js +2 -2
- package/dist/scripts/mad-db-route-identity-check.js +8 -6
- package/dist/scripts/mad-db-safety-conflict-matrix-check.js +31 -8
- package/dist/scripts/mad-db-skill-policy-snapshot-check.js +4 -5
- package/dist/scripts/mad-sks-zellij-default-pane-worker-check.js +3 -2
- package/dist/scripts/mad-sks-zellij-launch-check.js +1 -1
- package/dist/scripts/naruto-zellij-dynamic-right-column-check.js +7 -7
- package/dist/scripts/parallel-claim-enforcement-check.js +14 -5
- package/dist/scripts/ppt-real-imagegen-wiring-check.js +5 -1
- package/dist/scripts/project-skill-dedupe-check.js +23 -5
- package/dist/scripts/proof-root-cause-policy-check.js +2 -0
- package/dist/scripts/release-affected-selector-check.js +2 -2
- package/dist/scripts/release-cache-glob-hashing-check.js +1 -0
- package/dist/scripts/release-dag-full-coverage-check.js +13 -4
- package/dist/scripts/release-gate-dag-runner-check.js +10 -2
- package/dist/scripts/release-gate-dag-runner.js +22 -0
- package/dist/scripts/release-gate-existence-audit.js +2 -1
- package/dist/scripts/release-gate-planner.js +2 -1
- package/dist/scripts/release-gate-script-parity-check.js +1 -1
- package/dist/scripts/release-metadata-1-19-check.js +2 -1
- package/dist/scripts/release-readiness-report.js +38 -7
- package/dist/scripts/release-stability-report-check.js +12 -8
- package/dist/scripts/search-visibility-gate-lib.js +2 -2
- package/dist/scripts/seo-geo-feature-fixture-quality-check.js +1 -1
- package/dist/scripts/skills-manifest-continuity-check.js +46 -0
- package/dist/scripts/sks-1-11-gate-lib.js +8 -6
- package/dist/scripts/sks-menubar-install-check.js +87 -21
- package/dist/scripts/sks-uninstall-regression-check.js +54 -0
- package/dist/scripts/uninstall-inventory-check.js +3 -0
- package/dist/scripts/ux-review-real-loop-fixture-check.js +9 -4
- package/dist/scripts/ux-review-run-wires-imagegen-check.js +4 -0
- package/dist/scripts/zellij-layout-valid-check.js +18 -11
- package/dist/scripts/zellij-right-column-geometry-proof.js +2 -4
- package/dist/scripts/zellij-slot-pane-renderer-check.js +9 -9
- package/dist/scripts/zellij-slot-pane-stale-detection-check.js +3 -4
- package/dist/scripts/zellij-slot-pane-telemetry-renderer-check.js +3 -2
- package/dist/scripts/zellij-slot-telemetry-renderer-check.js +4 -2
- package/dist/scripts/zellij-spawn-on-demand-layout-check.js +8 -2
- package/dist/scripts/zellij-viewport-binder-check.js +9 -0
- package/docs/assets/sneakoscope-architecture-pipeline.jpg +0 -0
- package/docs/demo.tape +28 -0
- package/package.json +70 -3
- package/schemas/codex/completion-proof.schema.json +3 -2
- package/schemas/release/release-gate-node.schema.json +2 -1
- package/dist/scripts/agent-backfill-route-blackbox.js +0 -5
- package/dist/scripts/agent-dynamic-pool-route-blackbox.js +0 -5
- package/dist/scripts/agent-parallel-write-blackbox.js +0 -56
- package/dist/scripts/agent-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/agent-route-blackbox-lib.js +0 -132
- package/dist/scripts/blackbox-command-import-smoke.js +0 -143
- package/dist/scripts/blackbox-global-shim.js +0 -77
- package/dist/scripts/blackbox-matrix.js +0 -70
- package/dist/scripts/blackbox-npx-one-shot.js +0 -69
- package/dist/scripts/blackbox-pack-install.js +0 -174
- package/dist/scripts/brand-neutrality-zero-leakage-blackbox.js +0 -4
- package/dist/scripts/build-once-runner-blackbox.js +0 -34
- package/dist/scripts/codex-0140-integration-blackbox.js +0 -13
- package/dist/scripts/codex-agent-type-blackbox.js +0 -4
- package/dist/scripts/codex-app-harness-blackbox.js +0 -4
- package/dist/scripts/codex-app-skill-agent-blackbox.js +0 -4
- package/dist/scripts/codex-hook-approval-blackbox.js +0 -4
- package/dist/scripts/codex-init-deep-directory-local-blackbox.js +0 -4
- package/dist/scripts/codex-native-feature-broker-blackbox.js +0 -4
- package/dist/scripts/codex-native-pattern-analysis-blackbox.js +0 -4
- package/dist/scripts/codex-native-read-repair-split-blackbox.js +0 -55
- package/dist/scripts/codex-native-reference-cache-blackbox.js +0 -41
- package/dist/scripts/core-skill-integrity-blackbox.js +0 -33
- package/dist/scripts/dfix-fast-blackbox-check.js +0 -37
- package/dist/scripts/dfix-parallel-write-blackbox.js +0 -48
- package/dist/scripts/dfix-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/doctor-context7-mcp-repair-blackbox.js +0 -16
- package/dist/scripts/doctor-dirty-repair-blackbox.js +0 -22
- package/dist/scripts/doctor-dirty-semantic-blackbox.js +0 -8
- package/dist/scripts/doctor-fix-production-blackbox.js +0 -26
- package/dist/scripts/doctor-native-capability-repair-blackbox.js +0 -39
- package/dist/scripts/doctor-startup-config-repair-blackbox.js +0 -13
- package/dist/scripts/doctor-supabase-mcp-repair-blackbox.js +0 -14
- package/dist/scripts/doctor-transaction-engine-blackbox.js +0 -28
- package/dist/scripts/doctor-zellij-fix-blackbox.js +0 -4
- package/dist/scripts/doctor-zellij-no-homebrew-blackbox.js +0 -4
- package/dist/scripts/doctor-zellij-upgrade-blackbox.js +0 -4
- package/dist/scripts/gate-pack-runner-blackbox.js +0 -27
- package/dist/scripts/gate-pack-v2-blackbox.js +0 -18
- package/dist/scripts/geo-cli-blackbox-check.js +0 -18
- package/dist/scripts/loop-collision-blackbox.js +0 -3
- package/dist/scripts/loop-concurrency-oversubscription-blackbox.js +0 -3
- package/dist/scripts/loop-fixture-production-misuse-blackbox.js +0 -3
- package/dist/scripts/loop-kill-interrupt-real-blackbox.js +0 -3
- package/dist/scripts/loop-merge-strategy-blackbox.js +0 -3
- package/dist/scripts/loop-mesh-production-e2e-blackbox.js +0 -3
- package/dist/scripts/loop-side-effect-blackbox.js +0 -3
- package/dist/scripts/mad-db-operation-lifecycle-blackbox.js +0 -29
- package/dist/scripts/mad-sks-actual-executor-blackbox.js +0 -5
- package/dist/scripts/mad-zellij-headless-fallback-blackbox.js +0 -4
- package/dist/scripts/mad-zellij-self-heal-blackbox.js +0 -4
- package/dist/scripts/naruto-loop-mesh-blackbox.js +0 -3
- package/dist/scripts/naruto-real-parallelism-blackbox.js +0 -307
- package/dist/scripts/naruto-worktree-coding-blackbox.js +0 -29
- package/dist/scripts/parallel-runtime-real-blackbox.js +0 -44
- package/dist/scripts/pipeline-codex-native-doctor-mad-routing-real-blackbox.js +0 -77
- package/dist/scripts/pipeline-codex-native-e2e-blackbox.js +0 -13
- package/dist/scripts/pipeline-codex-native-image-routing-real-blackbox.js +0 -50
- package/dist/scripts/pipeline-codex-native-loop-routing-real-blackbox.js +0 -74
- package/dist/scripts/pipeline-codex-native-qa-routing-real-blackbox.js +0 -51
- package/dist/scripts/pipeline-codex-native-research-routing-real-blackbox.js +0 -45
- package/dist/scripts/pipeline-execution-profile-routing-blackbox.js +0 -4
- package/dist/scripts/postinstall-global-doctor-blackbox.js +0 -12
- package/dist/scripts/ppt-full-e2e-blackbox-check.js +0 -109
- package/dist/scripts/ppt-imagegen-blackbox-check.js +0 -46
- package/dist/scripts/project-skill-dedupe-blackbox.js +0 -36
- package/dist/scripts/qa-backfill-route-blackbox.js +0 -5
- package/dist/scripts/qa-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/release-full-parallelism-blackbox.js +0 -41
- package/dist/scripts/release-triwiki-first-runner-blackbox.js +0 -48
- package/dist/scripts/release-wiring-3110-blackbox.js +0 -27
- package/dist/scripts/release-wiring-3112-blackbox.js +0 -17
- package/dist/scripts/release-wiring-3113-blackbox.js +0 -17
- package/dist/scripts/research-backfill-route-blackbox.js +0 -5
- package/dist/scripts/research-final-reviewer-blackbox.js +0 -70
- package/dist/scripts/research-stage-cycle-runtime-blackbox.js +0 -40
- package/dist/scripts/research-synthesis-writer-blackbox.js +0 -24
- package/dist/scripts/route-blackbox-realism-check.js +0 -21
- package/dist/scripts/scheduler-resource-claim-blackbox.js +0 -24
- package/dist/scripts/seo-cli-blackbox-check.js +0 -18
- package/dist/scripts/sks-3110-all-feature-regression-blackbox.js +0 -116
- package/dist/scripts/sks-3112-all-feature-regression-blackbox.js +0 -29
- package/dist/scripts/sks-3113-all-feature-regression-blackbox.js +0 -17
- package/dist/scripts/sks-400-all-feature-regression-blackbox.js +0 -21
- package/dist/scripts/sks-400-extreme-parallel-blackbox.js +0 -8
- package/dist/scripts/sks-400-five-minute-blackbox.js +0 -9
- package/dist/scripts/sks-400-legacy-purge-blackbox.js +0 -8
- package/dist/scripts/sks-401-all-feature-regression-blackbox.js +0 -46
- package/dist/scripts/sks-401-five-minute-actual-blackbox.js +0 -23
- package/dist/scripts/sks-402-all-feature-regression-blackbox.js +0 -9
- package/dist/scripts/sks-402-five-minute-real-blackbox.js +0 -22
- package/dist/scripts/sksd-warm-cache-blackbox.js +0 -12
- package/dist/scripts/supabase-secret-preservation-blackbox.js +0 -29
- package/dist/scripts/team-backfill-route-blackbox.js +0 -5
- package/dist/scripts/team-parallel-write-blackbox.js +0 -55
- package/dist/scripts/team-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/triwiki-affected-graph-blackbox.js +0 -28
- package/dist/scripts/triwiki-proof-bank-blackbox.js +0 -30
- package/dist/scripts/triwiki-proof-bank-lock-blackbox.js +0 -7
- package/dist/scripts/update-preserves-supabase-keys-blackbox.js +0 -27
- package/dist/scripts/ux-patch-swarm-route-blackbox.js +0 -10
- package/dist/scripts/ux-review-imagegen-blackbox-check.js +0 -67
- package/dist/scripts/zellij-initial-main-only-blackbox.js +0 -28
- package/dist/scripts/zellij-pane-lock-concurrency-blackbox.js +0 -80
- package/dist/scripts/zellij-pane-lock-open-worker-integration-blackbox.js +0 -137
- package/dist/scripts/zellij-self-heal-typed-blackbox.js +0 -4
- package/dist/scripts/zellij-slot-telemetry-real-blackbox.js +0 -20
- package/dist/scripts/zellij-stacked-fallback-integration-blackbox.js +0 -81
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +0 -202
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import fsp from 'node:fs/promises';
|
|
2
3
|
import { nowIso, readJson, writeJsonAtomic } from '../fsx.js';
|
|
3
4
|
import { appendAgentLedgerEvent } from './agent-central-ledger.js';
|
|
4
5
|
export const AGENT_LIFECYCLE_STATES = Object.freeze(['planned', 'launching', 'running', 'heartbeat_missing', 'collecting', 'completed', 'failed', 'timed_out', 'closing', 'closed', 'killed']);
|
|
@@ -6,10 +7,12 @@ export const AGENT_HEARTBEAT_INTERVAL_MS = 5000;
|
|
|
6
7
|
export const AGENT_HEARTBEAT_TIMEOUT_MS = 60000;
|
|
7
8
|
export const AGENT_HARD_TIMEOUT_MS = 30 * 60 * 1000;
|
|
8
9
|
const SESSION_LOCKS = new Map();
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const AGGREGATE_FLUSH_TIMERS = new Map();
|
|
11
|
+
async function withSessionLock(root, sessionId, fn) {
|
|
12
|
+
const key = `${path.resolve(root)}:${sessionId || 'aggregate'}`;
|
|
13
|
+
const previous = SESSION_LOCKS.get(key) || Promise.resolve();
|
|
11
14
|
const next = previous.catch(() => undefined).then(fn);
|
|
12
|
-
SESSION_LOCKS.set(
|
|
15
|
+
SESSION_LOCKS.set(key, next.catch(() => undefined));
|
|
13
16
|
return next;
|
|
14
17
|
}
|
|
15
18
|
export async function openAgentSession(root, agent) {
|
|
@@ -30,8 +33,7 @@ export async function closeAgentSession(root, agent, status = 'closed') {
|
|
|
30
33
|
return updateSession(root, agent, { status, closed_at: nowIso(), heartbeat_at: nowIso() }, 'session_closed', agent.session_id);
|
|
31
34
|
}
|
|
32
35
|
export async function assertAllAgentSessionsClosed(root) {
|
|
33
|
-
const
|
|
34
|
-
const rows = Object.values(sessions.sessions || {});
|
|
36
|
+
const rows = await readAllSessionRows(root);
|
|
35
37
|
const open = rows.filter((session) => !['closed', 'blocked', 'failed', 'killed', 'timed_out'].includes(String(session.status)));
|
|
36
38
|
const closed = rows.filter((session) => String(session.status) === 'closed');
|
|
37
39
|
return {
|
|
@@ -55,8 +57,7 @@ export async function writeAgentLifecyclePolicy(root) {
|
|
|
55
57
|
return policy;
|
|
56
58
|
}
|
|
57
59
|
export async function writeAgentLifecycleAggregate(root) {
|
|
58
|
-
const
|
|
59
|
-
const rows = Object.values(sessions.sessions || {});
|
|
60
|
+
const rows = await readAllSessionRows(root);
|
|
60
61
|
const aggregate = {
|
|
61
62
|
schema: 'sks.agent-lifecycle-aggregate.v1',
|
|
62
63
|
updated_at: nowIso(),
|
|
@@ -64,6 +65,10 @@ export async function writeAgentLifecycleAggregate(root) {
|
|
|
64
65
|
total_sessions: rows.length,
|
|
65
66
|
closed_session_count: rows.filter((session) => String(session.status) === 'closed').length
|
|
66
67
|
};
|
|
68
|
+
await writeJsonAtomic(path.join(root, 'agent-sessions.json'), {
|
|
69
|
+
schema: 'sks.agent-sessions.v1',
|
|
70
|
+
sessions: Object.fromEntries(rows.map((session) => [String(session.session_key || session.session_id || session.agent_id || ''), session]))
|
|
71
|
+
});
|
|
67
72
|
await writeJsonAtomic(path.join(root, 'agent-lifecycle-aggregate.json'), aggregate);
|
|
68
73
|
await writeJsonAtomic(path.join(root, 'agent-lifecycle.json'), {
|
|
69
74
|
schema: 'sks.agent-lifecycle.v1',
|
|
@@ -73,8 +78,8 @@ export async function writeAgentLifecycleAggregate(root) {
|
|
|
73
78
|
return aggregate;
|
|
74
79
|
}
|
|
75
80
|
export async function detectStaleAgentSessions(root, now = Date.now()) {
|
|
76
|
-
const
|
|
77
|
-
const stale =
|
|
81
|
+
const rows = await readAllSessionRows(root);
|
|
82
|
+
const stale = rows.filter((session) => {
|
|
78
83
|
if (['closed', 'blocked', 'failed', 'killed', 'timed_out'].includes(String(session.status)))
|
|
79
84
|
return false;
|
|
80
85
|
const heartbeat = Date.parse(String(session.heartbeat_at || session.opened_at || ''));
|
|
@@ -89,12 +94,11 @@ export function agentHardTimeoutMs(env = process.env) {
|
|
|
89
94
|
return Math.max(1000, Math.min(raw, 24 * 60 * 60 * 1000));
|
|
90
95
|
}
|
|
91
96
|
export async function killTimedOutAgentSessions(root, now = Date.now(), opts = {}) {
|
|
92
|
-
return withSessionLock(root, async () => {
|
|
97
|
+
return withSessionLock(root, 'timeout-reaper', async () => {
|
|
93
98
|
const hardTimeoutMs = opts.hardTimeoutMs || agentHardTimeoutMs(opts.env);
|
|
94
|
-
const
|
|
95
|
-
const data = await readJson(file, { schema: 'sks.agent-sessions.v1', sessions: {} });
|
|
99
|
+
const rows = await readAllSessionRows(root);
|
|
96
100
|
const killed = [];
|
|
97
|
-
for (const
|
|
101
|
+
for (const session of rows) {
|
|
98
102
|
if (['closed', 'blocked', 'failed', 'killed', 'timed_out'].includes(String(session.status)))
|
|
99
103
|
continue;
|
|
100
104
|
const opened = Date.parse(String(session.opened_at || ''));
|
|
@@ -103,8 +107,8 @@ export async function killTimedOutAgentSessions(root, now = Date.now(), opts = {
|
|
|
103
107
|
const heartbeatTimedOut = Number.isFinite(heartbeat) && now - heartbeat > AGENT_HEARTBEAT_TIMEOUT_MS;
|
|
104
108
|
if (!hardTimedOut && !heartbeatTimedOut)
|
|
105
109
|
continue;
|
|
106
|
-
const sessionId = session.session_id ||
|
|
107
|
-
|
|
110
|
+
const sessionId = session.session_id || session.session_key || session.agent_id;
|
|
111
|
+
const next = {
|
|
108
112
|
...session,
|
|
109
113
|
status: 'killed',
|
|
110
114
|
killed_at: new Date(now).toISOString(),
|
|
@@ -112,11 +116,10 @@ export async function killTimedOutAgentSessions(root, now = Date.now(), opts = {
|
|
|
112
116
|
heartbeat_at: new Date(now).toISOString(),
|
|
113
117
|
kill_reason: hardTimedOut ? 'hard_timeout' : 'heartbeat_timeout'
|
|
114
118
|
};
|
|
115
|
-
await writeSessionRecord(root,
|
|
116
|
-
await appendAgentLedgerEvent(root, { agent_id: String(session.agent_id ||
|
|
119
|
+
await writeSessionRecord(root, next);
|
|
120
|
+
await appendAgentLedgerEvent(root, { agent_id: String(session.agent_id || sessionId), session_id: sessionId, event_type: 'session_killed_timeout', payload: { kill_reason: next.kill_reason } });
|
|
117
121
|
killed.push(sessionId);
|
|
118
122
|
}
|
|
119
|
-
await writeJsonAtomic(file, data);
|
|
120
123
|
await writeAgentLifecycleAggregate(root);
|
|
121
124
|
const report = {
|
|
122
125
|
schema: 'sks.agent-timeout-kill-report.v1',
|
|
@@ -130,40 +133,88 @@ export async function killTimedOutAgentSessions(root, now = Date.now(), opts = {
|
|
|
130
133
|
});
|
|
131
134
|
}
|
|
132
135
|
async function updateSession(root, agent, patch, eventType, sessionId) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
data.sessions[sessionKey] = {
|
|
140
|
-
...(data.sessions[sessionKey] || {
|
|
136
|
+
const agentId = String(agent.id || agent.agent_id || sessionId);
|
|
137
|
+
const sessionKey = String(agent.session_generation_id || agent.session_id || agentId);
|
|
138
|
+
return withSessionLock(root, sessionKey, async () => {
|
|
139
|
+
const current = await readSessionRow(root, sessionKey);
|
|
140
|
+
const next = {
|
|
141
|
+
...(current || {
|
|
141
142
|
agent_id: agentId,
|
|
142
143
|
slot_id: agent.slot_id || agent.worker_slot_id || null,
|
|
143
144
|
generation_index: Number.isFinite(Number(agent.generation_index)) ? Number(agent.generation_index) : null,
|
|
144
145
|
session_artifact_dir: agent.session_artifact_dir || null,
|
|
145
|
-
session_id: sessionId
|
|
146
|
+
session_id: sessionId,
|
|
147
|
+
session_key: sessionKey
|
|
146
148
|
}),
|
|
147
149
|
agent_id: agentId,
|
|
148
|
-
slot_id: agent.slot_id || agent.worker_slot_id ||
|
|
149
|
-
generation_index: Number.isFinite(Number(agent.generation_index)) ? Number(agent.generation_index) :
|
|
150
|
-
session_artifact_dir: agent.session_artifact_dir ||
|
|
150
|
+
slot_id: agent.slot_id || agent.worker_slot_id || current?.slot_id || null,
|
|
151
|
+
generation_index: Number.isFinite(Number(agent.generation_index)) ? Number(agent.generation_index) : current?.generation_index ?? null,
|
|
152
|
+
session_artifact_dir: agent.session_artifact_dir || current?.session_artifact_dir || null,
|
|
151
153
|
session_id: sessionId,
|
|
154
|
+
session_key: sessionKey,
|
|
152
155
|
...patch
|
|
153
156
|
};
|
|
154
|
-
await
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
await writeSessionRecord(root, next);
|
|
158
|
+
if (eventType === 'heartbeat')
|
|
159
|
+
scheduleAgentLifecycleAggregate(root);
|
|
160
|
+
else
|
|
161
|
+
await writeAgentLifecycleAggregate(root);
|
|
157
162
|
await appendAgentLedgerEvent(root, { agent_id: agentId, session_id: sessionId, event_type: eventType, payload: patch });
|
|
158
|
-
return
|
|
163
|
+
return next;
|
|
159
164
|
});
|
|
160
165
|
}
|
|
161
166
|
async function writeSessionRecord(root, session) {
|
|
167
|
+
const sessionKey = sanitizeSessionFileName(session.session_key || session.session_id || session.agent_id || 'session');
|
|
168
|
+
await writeJsonAtomic(path.join(sessionShardDir(root), `${sessionKey}.json`), { schema: 'sks.agent-session-record.v1', ...session, session_key: sessionKey });
|
|
162
169
|
const artifactDir = session.session_artifact_dir;
|
|
163
170
|
if (artifactDir) {
|
|
164
171
|
await writeJsonAtomic(path.join(root, artifactDir, 'agent-session-record.json'), { schema: 'sks.agent-session-record.v1', ...session });
|
|
165
172
|
return;
|
|
166
173
|
}
|
|
167
|
-
|
|
174
|
+
}
|
|
175
|
+
async function readSessionRow(root, sessionKey) {
|
|
176
|
+
const shard = await readJson(path.join(sessionShardDir(root), `${sanitizeSessionFileName(sessionKey)}.json`), null).catch(() => null);
|
|
177
|
+
if (shard)
|
|
178
|
+
return shard;
|
|
179
|
+
const aggregate = await readJson(path.join(root, 'agent-sessions.json'), { sessions: {} }).catch(() => ({ sessions: {} }));
|
|
180
|
+
const sessions = Array.isArray(aggregate?.sessions)
|
|
181
|
+
? Object.fromEntries(aggregate.sessions.map((row) => [String(row.session_key || row.session_id || row.agent_id || ''), row]))
|
|
182
|
+
: aggregate?.sessions || {};
|
|
183
|
+
return sessions[sessionKey] || null;
|
|
184
|
+
}
|
|
185
|
+
async function readAllSessionRows(root) {
|
|
186
|
+
const rows = [];
|
|
187
|
+
const dir = sessionShardDir(root);
|
|
188
|
+
const names = await fsp.readdir(dir).catch(() => []);
|
|
189
|
+
for (const name of names.sort()) {
|
|
190
|
+
if (!name.endsWith('.json'))
|
|
191
|
+
continue;
|
|
192
|
+
const row = await readJson(path.join(dir, name), null).catch(() => null);
|
|
193
|
+
if (row && row.schema === 'sks.agent-session-record.v1')
|
|
194
|
+
rows.push(row);
|
|
195
|
+
}
|
|
196
|
+
if (rows.length)
|
|
197
|
+
return rows;
|
|
198
|
+
const aggregate = await readJson(path.join(root, 'agent-sessions.json'), { sessions: {} }).catch(() => ({ sessions: {} }));
|
|
199
|
+
if (Array.isArray(aggregate?.sessions))
|
|
200
|
+
return aggregate.sessions;
|
|
201
|
+
return Object.values(aggregate?.sessions || {});
|
|
202
|
+
}
|
|
203
|
+
function scheduleAgentLifecycleAggregate(root) {
|
|
204
|
+
const key = path.resolve(root);
|
|
205
|
+
if (AGGREGATE_FLUSH_TIMERS.has(key))
|
|
206
|
+
return;
|
|
207
|
+
const timer = setTimeout(() => {
|
|
208
|
+
AGGREGATE_FLUSH_TIMERS.delete(key);
|
|
209
|
+
writeAgentLifecycleAggregate(root).catch(() => undefined);
|
|
210
|
+
}, 5000);
|
|
211
|
+
timer.unref?.();
|
|
212
|
+
AGGREGATE_FLUSH_TIMERS.set(key, timer);
|
|
213
|
+
}
|
|
214
|
+
function sessionShardDir(root) {
|
|
215
|
+
return path.join(root, 'sessions');
|
|
216
|
+
}
|
|
217
|
+
function sanitizeSessionFileName(value) {
|
|
218
|
+
return String(value || 'session').replace(/[^A-Za-z0-9._-]+/g, '_');
|
|
168
219
|
}
|
|
169
220
|
//# sourceMappingURL=agent-lifecycle.js.map
|