@cleocode/core 2026.10.21 → 2026.10.22
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/STABILITY.md +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/docs/document-edges.d.ts +38 -0
- package/dist/docs/document-edges.d.ts.map +1 -0
- package/dist/docs/document-edges.js +62 -0
- package/dist/docs/document-edges.js.map +1 -0
- package/dist/docs/projection.d.ts +3 -2
- package/dist/docs/projection.d.ts.map +1 -1
- package/dist/docs/projection.js +33 -36
- package/dist/docs/projection.js.map +1 -1
- package/dist/events/event-bus.d.ts +6 -5
- package/dist/events/event-bus.d.ts.map +1 -1
- package/dist/events/event-bus.js +9 -8
- package/dist/events/event-bus.js.map +1 -1
- package/dist/gateway-client/generated/index.d.ts +2 -2
- package/dist/gateway-client/generated/index.d.ts.map +1 -1
- package/dist/gateway-client/generated/index.js +1 -1
- package/dist/gateway-client/generated/index.js.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.d.ts +1 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.js +2 -1
- package/dist/gateway-client/generated/namespaces.gen.js.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts +5 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.js +11 -0
- package/dist/gateway-client/generated/sdk.gen.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +34 -0
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
- package/dist/git/base-ref.d.ts +81 -0
- package/dist/git/base-ref.d.ts.map +1 -0
- package/dist/git/base-ref.js +135 -0
- package/dist/git/base-ref.js.map +1 -0
- package/dist/git/hooks-install.d.ts +1 -1
- package/dist/git/hooks-install.d.ts.map +1 -1
- package/dist/git/work-tree.d.ts +40 -0
- package/dist/git/work-tree.d.ts.map +1 -1
- package/dist/git/work-tree.js +62 -7
- package/dist/git/work-tree.js.map +1 -1
- package/dist/hooks/handlers/conduit-hooks.d.ts +2 -1
- package/dist/hooks/handlers/conduit-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/conduit-hooks.js +9 -23
- package/dist/hooks/handlers/conduit-hooks.js.map +1 -1
- package/dist/hooks/handlers/index.d.ts +0 -1
- package/dist/hooks/handlers/index.d.ts.map +1 -1
- package/dist/hooks/handlers/index.js +0 -2
- package/dist/hooks/handlers/index.js.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +5 -12
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +2 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/lifecycle/index.d.ts +15 -1
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +12 -6
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/stage-guidance.js +1 -1
- package/dist/lifecycle/stage-guidance.js.map +1 -1
- package/dist/memory/auto-row-quarantine.d.ts +196 -0
- package/dist/memory/auto-row-quarantine.d.ts.map +1 -0
- package/dist/memory/auto-row-quarantine.js +363 -0
- package/dist/memory/auto-row-quarantine.js.map +1 -0
- package/dist/memory/auto-row-rules.d.ts +29 -0
- package/dist/memory/auto-row-rules.d.ts.map +1 -0
- package/dist/memory/auto-row-rules.js +55 -0
- package/dist/memory/auto-row-rules.js.map +1 -0
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.js +13 -8
- package/dist/memory/brain-lifecycle.js.map +1 -1
- package/dist/memory/brain-search.d.ts +49 -29
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-search.js +159 -156
- package/dist/memory/brain-search.js.map +1 -1
- package/dist/memory/brain-similarity.d.ts +27 -4
- package/dist/memory/brain-similarity.d.ts.map +1 -1
- package/dist/memory/brain-similarity.js +41 -20
- package/dist/memory/brain-similarity.js.map +1 -1
- package/dist/memory/brain-stub-prune.d.ts +13 -0
- package/dist/memory/brain-stub-prune.d.ts.map +1 -1
- package/dist/memory/brain-stub-prune.js +14 -3
- package/dist/memory/brain-stub-prune.js.map +1 -1
- package/dist/memory/brain-writer-handlers.d.ts +3 -7
- package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
- package/dist/memory/brain-writer-handlers.js +5 -20
- package/dist/memory/brain-writer-handlers.js.map +1 -1
- package/dist/memory/brain-writer-thread.d.ts +2 -11
- package/dist/memory/brain-writer-thread.d.ts.map +1 -1
- package/dist/memory/brain-writer-thread.js +20 -78
- package/dist/memory/brain-writer-thread.js.map +1 -1
- package/dist/memory/brain-writer-worker.js +1 -8
- package/dist/memory/brain-writer-worker.js.map +1 -1
- package/dist/memory/dispatch-trace-format.d.ts +13 -14
- package/dist/memory/dispatch-trace-format.d.ts.map +1 -1
- package/dist/memory/dispatch-trace-format.js +13 -14
- package/dist/memory/dispatch-trace-format.js.map +1 -1
- package/dist/memory/eligibility.d.ts +22 -0
- package/dist/memory/eligibility.d.ts.map +1 -1
- package/dist/memory/eligibility.js +36 -0
- package/dist/memory/eligibility.js.map +1 -1
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +11 -1
- package/dist/memory/engine-compat.js.map +1 -1
- package/dist/memory/evidence-graph-links.d.ts +253 -0
- package/dist/memory/evidence-graph-links.d.ts.map +1 -0
- package/dist/memory/evidence-graph-links.js +554 -0
- package/dist/memory/evidence-graph-links.js.map +1 -0
- package/dist/memory/extraction-gate.d.ts +7 -0
- package/dist/memory/extraction-gate.d.ts.map +1 -1
- package/dist/memory/extraction-gate.js +20 -8
- package/dist/memory/extraction-gate.js.map +1 -1
- package/dist/memory/global-brain.d.ts +4 -6
- package/dist/memory/global-brain.d.ts.map +1 -1
- package/dist/memory/global-brain.js +15 -2
- package/dist/memory/global-brain.js.map +1 -1
- package/dist/memory/graph-auto-populate.d.ts +73 -1
- package/dist/memory/graph-auto-populate.d.ts.map +1 -1
- package/dist/memory/graph-auto-populate.js +111 -8
- package/dist/memory/graph-auto-populate.js.map +1 -1
- package/dist/memory/import-from-provider.d.ts +19 -6
- package/dist/memory/import-from-provider.d.ts.map +1 -1
- package/dist/memory/import-from-provider.js +28 -15
- package/dist/memory/import-from-provider.js.map +1 -1
- package/dist/memory/lessons-import.d.ts +175 -0
- package/dist/memory/lessons-import.d.ts.map +1 -0
- package/dist/memory/lessons-import.js +233 -0
- package/dist/memory/lessons-import.js.map +1 -0
- package/dist/memory/lessons.d.ts +67 -0
- package/dist/memory/lessons.d.ts.map +1 -0
- package/dist/memory/lessons.js +121 -0
- package/dist/memory/lessons.js.map +1 -0
- package/dist/memory/memory-bridge.d.ts.map +1 -1
- package/dist/memory/memory-bridge.js +3 -2
- package/dist/memory/memory-bridge.js.map +1 -1
- package/dist/memory/public-api.d.ts.map +1 -1
- package/dist/memory/public-api.js +7 -6
- package/dist/memory/public-api.js.map +1 -1
- package/dist/memory/recall-ranking.d.ts +88 -0
- package/dist/memory/recall-ranking.d.ts.map +1 -0
- package/dist/memory/recall-ranking.js +130 -0
- package/dist/memory/recall-ranking.js.map +1 -0
- package/dist/memory/retrieval/build-retrieval-bundle.js +5 -5
- package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
- package/dist/memory/retrieval/fetch.d.ts +3 -2
- package/dist/memory/retrieval/fetch.d.ts.map +1 -1
- package/dist/memory/retrieval/fetch.js +4 -3
- package/dist/memory/retrieval/fetch.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts +1 -7
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +9 -58
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/memory/retrieval/search.d.ts +5 -6
- package/dist/memory/retrieval/search.d.ts.map +1 -1
- package/dist/memory/retrieval/search.js +38 -102
- package/dist/memory/retrieval/search.js.map +1 -1
- package/dist/memory/retrieval/telemetry.d.ts +5 -16
- package/dist/memory/retrieval/telemetry.d.ts.map +1 -1
- package/dist/memory/retrieval/telemetry.js +5 -22
- package/dist/memory/retrieval/telemetry.js.map +1 -1
- package/dist/nexus/analyze-orchestrator.d.ts +15 -0
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +53 -6
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/brief-map.d.ts +60 -0
- package/dist/nexus/brief-map.d.ts.map +1 -0
- package/dist/nexus/brief-map.js +234 -0
- package/dist/nexus/brief-map.js.map +1 -0
- package/dist/nexus/freshness.d.ts +128 -13
- package/dist/nexus/freshness.d.ts.map +1 -1
- package/dist/nexus/freshness.js +374 -86
- package/dist/nexus/freshness.js.map +1 -1
- package/dist/nexus/graph-manifest.d.ts +47 -0
- package/dist/nexus/graph-manifest.d.ts.map +1 -1
- package/dist/nexus/graph-manifest.js +69 -0
- package/dist/nexus/graph-manifest.js.map +1 -1
- package/dist/nexus/hooks-augment.d.ts.map +1 -1
- package/dist/nexus/hooks-augment.js +7 -3
- package/dist/nexus/hooks-augment.js.map +1 -1
- package/dist/nexus/index-health.d.ts +112 -0
- package/dist/nexus/index-health.d.ts.map +1 -0
- package/dist/nexus/index-health.js +199 -0
- package/dist/nexus/index-health.js.map +1 -0
- package/dist/nexus/living-brain.d.ts.map +1 -1
- package/dist/nexus/living-brain.js +2 -15
- package/dist/nexus/living-brain.js.map +1 -1
- package/dist/nexus/pid-lock.d.ts +50 -0
- package/dist/nexus/pid-lock.d.ts.map +1 -0
- package/dist/nexus/pid-lock.js +135 -0
- package/dist/nexus/pid-lock.js.map +1 -0
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +33 -2
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/refresh-child.js +4 -0
- package/dist/nexus/refresh-child.js.map +1 -1
- package/dist/nexus/registry-host.d.ts +70 -0
- package/dist/nexus/registry-host.d.ts.map +1 -0
- package/dist/nexus/registry-host.js +79 -0
- package/dist/nexus/registry-host.js.map +1 -0
- package/dist/nexus/registry.d.ts +37 -0
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +49 -1
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/reindex-on-merge.d.ts +94 -0
- package/dist/nexus/reindex-on-merge.d.ts.map +1 -0
- package/dist/nexus/reindex-on-merge.js +192 -0
- package/dist/nexus/reindex-on-merge.js.map +1 -0
- package/dist/orchestrate/handoff-ops.d.ts.map +1 -1
- package/dist/orchestrate/handoff-ops.js +1 -13
- package/dist/orchestrate/handoff-ops.js.map +1 -1
- package/dist/orchestrate/index.d.ts +2 -3
- package/dist/orchestrate/index.d.ts.map +1 -1
- package/dist/orchestrate/index.js +2 -2
- package/dist/orchestrate/index.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.d.ts +3 -0
- package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +5 -5
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts +8 -28
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +8 -67
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +7 -0
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +8 -29
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +44 -112
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/spawn.d.ts +7 -14
- package/dist/orchestration/spawn.d.ts.map +1 -1
- package/dist/orchestration/spawn.js +2 -5
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/orchestration/wave-topic.d.ts +0 -13
- package/dist/orchestration/wave-topic.d.ts.map +1 -1
- package/dist/orchestration/wave-topic.js +0 -20
- package/dist/orchestration/wave-topic.js.map +1 -1
- package/dist/release/engine-ops.js +2 -2
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/release/github-pr.d.ts +8 -5
- package/dist/release/github-pr.d.ts.map +1 -1
- package/dist/release/github-pr.js +11 -16
- package/dist/release/github-pr.js.map +1 -1
- package/dist/release/plan.d.ts +4 -2
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +11 -4
- package/dist/release/plan.js.map +1 -1
- package/dist/release/pr-evidence.d.ts +39 -11
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +122 -31
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/release/reconcile.d.ts +15 -0
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +36 -0
- package/dist/release/reconcile.js.map +1 -1
- package/dist/render/brain/index.d.ts +3 -2
- package/dist/render/brain/index.d.ts.map +1 -1
- package/dist/render/brain/index.js +4 -2
- package/dist/render/brain/index.js.map +1 -1
- package/dist/render/brain/migrate-repo-ids.d.ts +19 -0
- package/dist/render/brain/migrate-repo-ids.d.ts.map +1 -0
- package/dist/render/brain/migrate-repo-ids.js +41 -0
- package/dist/render/brain/migrate-repo-ids.js.map +1 -0
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +10 -1
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/resources/admission-ledger.d.ts +39 -4
- package/dist/resources/admission-ledger.d.ts.map +1 -1
- package/dist/resources/admission-ledger.js +147 -32
- package/dist/resources/admission-ledger.js.map +1 -1
- package/dist/resources/hook-footprint.d.ts +90 -0
- package/dist/resources/hook-footprint.d.ts.map +1 -0
- package/dist/resources/hook-footprint.js +245 -0
- package/dist/resources/hook-footprint.js.map +1 -0
- package/dist/resources/pressure-gate.d.ts +3 -2
- package/dist/resources/pressure-gate.d.ts.map +1 -1
- package/dist/resources/pressure-gate.js +8 -5
- package/dist/resources/pressure-gate.js.map +1 -1
- package/dist/resources/run-admission.d.ts +23 -3
- package/dist/resources/run-admission.d.ts.map +1 -1
- package/dist/resources/run-admission.js +70 -8
- package/dist/resources/run-admission.js.map +1 -1
- package/dist/resources/run-class.d.ts +1 -0
- package/dist/resources/run-class.d.ts.map +1 -1
- package/dist/resources/run-class.js +7 -0
- package/dist/resources/run-class.js.map +1 -1
- package/dist/resources/run-governed.d.ts +13 -1
- package/dist/resources/run-governed.d.ts.map +1 -1
- package/dist/resources/run-governed.js +29 -6
- package/dist/resources/run-governed.js.map +1 -1
- package/dist/resources/top-memory.d.ts +67 -0
- package/dist/resources/top-memory.d.ts.map +1 -0
- package/dist/resources/top-memory.js +143 -0
- package/dist/resources/top-memory.js.map +1 -0
- package/dist/scaffold/global-scaffold.d.ts +6 -1
- package/dist/scaffold/global-scaffold.d.ts.map +1 -1
- package/dist/scaffold/global-scaffold.js +11 -2
- package/dist/scaffold/global-scaffold.js.map +1 -1
- package/dist/scaffold/scaffold-global.d.ts +3 -2
- package/dist/scaffold/scaffold-global.d.ts.map +1 -1
- package/dist/scaffold/scaffold-global.js +3 -2
- package/dist/scaffold/scaffold-global.js.map +1 -1
- package/dist/sentient/ingesters/brain-ingester.d.ts.map +1 -1
- package/dist/sentient/ingesters/brain-ingester.js +2 -1
- package/dist/sentient/ingesters/brain-ingester.js.map +1 -1
- package/dist/session/engine-ops.js +1 -1
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +26 -0
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +46 -0
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/session-end-snapshot.d.ts +1 -1
- package/dist/sessions/session-end-snapshot.js +1 -1
- package/dist/sessions/session-id.d.ts +2 -1
- package/dist/sessions/session-id.d.ts.map +1 -1
- package/dist/sessions/session-id.js +3 -2
- package/dist/sessions/session-id.js.map +1 -1
- package/dist/store/agent-resolver.d.ts +0 -6
- package/dist/store/agent-resolver.d.ts.map +1 -1
- package/dist/store/agent-resolver.js +0 -31
- package/dist/store/agent-resolver.js.map +1 -1
- package/dist/store/memory-accessor.d.ts +45 -2
- package/dist/store/memory-accessor.d.ts.map +1 -1
- package/dist/store/memory-accessor.js +81 -7
- package/dist/store/memory-accessor.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
- package/dist/store/schema/memory-schema.d.ts +3 -3
- package/dist/store/schema/memory-schema.d.ts.map +1 -1
- package/dist/store/schema/memory-schema.js +2 -0
- package/dist/store/schema/memory-schema.js.map +1 -1
- package/dist/store/session-store.d.ts +5 -2
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +10 -5
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sqlite-native.d.ts +5 -4
- package/dist/store/sqlite-native.d.ts.map +1 -1
- package/dist/store/sqlite-native.js +5 -4
- package/dist/store/sqlite-native.js.map +1 -1
- package/dist/store/sync/merge/rules.d.ts.map +1 -1
- package/dist/store/sync/merge/rules.js +4 -3
- package/dist/store/sync/merge/rules.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +1 -0
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/vault-manifest.js +1 -1
- package/dist/store/vault-manifest.js.map +1 -1
- package/dist/system/project-health.d.ts +7 -0
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +13 -0
- package/dist/system/project-health.js.map +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +0 -15
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +26 -11
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +54 -17
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +24 -0
- package/dist/tasks/affected-scope.d.ts.map +1 -1
- package/dist/tasks/affected-scope.js +57 -0
- package/dist/tasks/affected-scope.js.map +1 -1
- package/dist/tasks/change-set.d.ts +72 -9
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +227 -20
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete-ci.d.ts.map +1 -1
- package/dist/tasks/complete-ci.js +2 -0
- package/dist/tasks/complete-ci.js.map +1 -1
- package/dist/tasks/complete.d.ts +2 -2
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +38 -17
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +66 -18
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/epic-enforcement.d.ts +39 -1
- package/dist/tasks/epic-enforcement.d.ts.map +1 -1
- package/dist/tasks/epic-enforcement.js +46 -2
- package/dist/tasks/epic-enforcement.js.map +1 -1
- package/dist/tasks/evidence.d.ts +74 -22
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +221 -35
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +2 -12
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/qa-run-binding.d.ts +2 -0
- package/dist/tasks/qa-run-binding.d.ts.map +1 -1
- package/dist/tasks/qa-run-binding.js +6 -2
- package/dist/tasks/qa-run-binding.js.map +1 -1
- package/dist/tasks/test-run-binding.d.ts +2 -0
- package/dist/tasks/test-run-binding.d.ts.map +1 -1
- package/dist/tasks/test-run-binding.js +8 -3
- package/dist/tasks/test-run-binding.js.map +1 -1
- package/dist/tasks/verification-policy.d.ts +57 -1
- package/dist/tasks/verification-policy.d.ts.map +1 -1
- package/dist/tasks/verification-policy.js +94 -1
- package/dist/tasks/verification-policy.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +2 -15
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +39 -19
- package/dist/validation/engine-ops.js.map +1 -1
- package/package.json +13 -13
- package/schemas/config.schema.json +69 -0
- package/templates/CLEO-INJECTION.md +4 -5
- package/templates/CLEO-REFERENCE.md +2 -4
- package/templates/git-hooks/post-merge +25 -0
- package/dist/memory/dispatch-trace.d.ts +0 -44
- package/dist/memory/dispatch-trace.d.ts.map +0 -1
- package/dist/memory/dispatch-trace.js +0 -65
- package/dist/memory/dispatch-trace.js.map +0 -1
- package/dist/memory/retrieval/increment-citation-counts.d.ts +0 -11
- package/dist/memory/retrieval/increment-citation-counts.d.ts.map +0 -1
- package/dist/memory/retrieval/increment-citation-counts.js +0 -43
- package/dist/memory/retrieval/increment-citation-counts.js.map +0 -1
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
* @task T13133
|
|
67
67
|
* @epic T13121
|
|
68
68
|
*/
|
|
69
|
-
import type { HeavyToolResourcePlan, MemoryPressureReading, ResourceClass } from '@cleocode/contracts';
|
|
69
|
+
import type { HeavyToolResourcePlan, MemoryConsumer, MemoryPressureReading, ResourceClass } from '@cleocode/contracts';
|
|
70
70
|
import { admissionCapacityBytes, admissionReserveBytes } from '../tasks/heavy-tool-env.js';
|
|
71
71
|
import type { CanonicalTool } from '../tasks/tool-resolver.js';
|
|
72
72
|
import type { ResourceSample } from './backend.js';
|
|
@@ -180,6 +180,16 @@ export interface RunFootprintPlan {
|
|
|
180
180
|
readonly footprintReason: string;
|
|
181
181
|
/** Test files the run names, when it names them (T13132). */
|
|
182
182
|
readonly namedFiles: number | null;
|
|
183
|
+
/**
|
|
184
|
+
* The git hook this run carries, keyed by its content (T13921): record the
|
|
185
|
+
* run's measured peak under it so the next run is charged by it.
|
|
186
|
+
*/
|
|
187
|
+
readonly hookKey?: string;
|
|
188
|
+
}
|
|
189
|
+
/** A hook's content key and its measured peak, when measured (T13921). */
|
|
190
|
+
export interface HookPeak {
|
|
191
|
+
readonly key: string;
|
|
192
|
+
readonly peakBytes: number | null;
|
|
183
193
|
}
|
|
184
194
|
/**
|
|
185
195
|
* Plan and charge a `cleo run` job by its real scope (T13367).
|
|
@@ -202,7 +212,8 @@ export interface RunFootprintPlan {
|
|
|
202
212
|
* planRunFootprint('scoped-build', ['pnpm', 'biome', 'check', 'a.ts', 'b.ts']).footprintBytes; // 1 GiB
|
|
203
213
|
* ```
|
|
204
214
|
*/
|
|
205
|
-
export declare function planRunFootprint(cls: ResourceClass, argv: readonly string[], env?: NodeJS.ProcessEnv, totalRamGib?: number, hookInstalled?: (hook: string, globals: readonly string[]) => boolean
|
|
215
|
+
export declare function planRunFootprint(cls: ResourceClass, argv: readonly string[], env?: NodeJS.ProcessEnv, totalRamGib?: number, hookInstalled?: (hook: string, globals: readonly string[]) => boolean, // CWD-OK: cleo run runs the command in its own cwd
|
|
216
|
+
hookPeak?: (hook: string, globals: readonly string[]) => HookPeak | null): RunFootprintPlan;
|
|
206
217
|
/** Governor classes whose admission is the ledger's. */
|
|
207
218
|
export declare const LEDGER_CLASSES: ReadonlySet<ResourceClass>;
|
|
208
219
|
/**
|
|
@@ -264,7 +275,18 @@ export interface LedgerEntry {
|
|
|
264
275
|
* carry it (T13452). Scheduling never makes it wait on that ancestor.
|
|
265
276
|
*/
|
|
266
277
|
readonly parentId?: string;
|
|
278
|
+
/**
|
|
279
|
+
* `urgent` queues ahead of every routine waiter (T13921): a one-file fix for
|
|
280
|
+
* a red main does not wait behind routine pushes. It is still admitted only
|
|
281
|
+
* within the budget; nothing running is paused or displaced for it.
|
|
282
|
+
*/
|
|
283
|
+
readonly priority?: 'urgent';
|
|
267
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* A routine waiter that has waited this long ranks with urgent ones (T13921):
|
|
287
|
+
* a stream of urgent jobs can delay routine work, never starve it.
|
|
288
|
+
*/
|
|
289
|
+
export declare const URGENT_AGING_MS: number;
|
|
268
290
|
/**
|
|
269
291
|
* How much of a project a run covers, shown in status so an operator can see
|
|
270
292
|
* what holds the budget (T13132): `full` is a whole-suite run, `affected` the
|
|
@@ -407,6 +429,11 @@ export interface LedgerBudget {
|
|
|
407
429
|
readonly heavyBudgetBytes: number;
|
|
408
430
|
/** When the pressure behind the shares was sampled (epoch ms), or null when none is cached. */
|
|
409
431
|
readonly sampledAtMs: number | null;
|
|
432
|
+
/**
|
|
433
|
+
* Why the memory gate closed the budget, with the host's largest memory
|
|
434
|
+
* users and how to free them (T13914); null while it admits.
|
|
435
|
+
*/
|
|
436
|
+
readonly cause: string | null;
|
|
410
437
|
}
|
|
411
438
|
/**
|
|
412
439
|
* The budget pressure leaves right now, as the ledger last judged it, without
|
|
@@ -421,7 +448,8 @@ export declare function readLedgerBudget(dir?: string, capacityBytes?: number):
|
|
|
421
448
|
* One scheduling pass: admit every waiting entry the budget and the queue
|
|
422
449
|
* order allow. Pure.
|
|
423
450
|
*
|
|
424
|
-
* -
|
|
451
|
+
* - Urgent entries first (T13921), then FIFO by `enqueuedAtMs`
|
|
452
|
+
* ({@link queueOrder}). A later entry may be admitted ahead of an older
|
|
425
453
|
* one that does not fit (backfill) until that older one has waited
|
|
426
454
|
* `reservationMs`; from then on nothing passes it.
|
|
427
455
|
* - A footprint above the capacity is charged the capacity (it runs alone).
|
|
@@ -564,6 +592,8 @@ export interface AdmissionRequest {
|
|
|
564
592
|
readonly footprintReason?: string;
|
|
565
593
|
/** Take the machine-wide exclusive slot (T13237: a `full-build`). */
|
|
566
594
|
readonly exclusive?: boolean;
|
|
595
|
+
/** Queue ahead of routine waiters, within the budget (T13921). */
|
|
596
|
+
readonly urgent?: boolean;
|
|
567
597
|
}
|
|
568
598
|
/** How to wait, and where to report. */
|
|
569
599
|
export interface AdmitOptions {
|
|
@@ -588,6 +618,11 @@ export interface AdmitOptions {
|
|
|
588
618
|
readonly memoryPressure?: MemoryGateReporter;
|
|
589
619
|
/** Where the holder report goes while waiting. */
|
|
590
620
|
readonly notice?: (line: string) => void;
|
|
621
|
+
/**
|
|
622
|
+
* The host's largest memory users, probed when the memory gate refuses
|
|
623
|
+
* (T13914). @defaultValue {@link topMemoryConsumers}
|
|
624
|
+
*/
|
|
625
|
+
readonly topMemory?: () => readonly MemoryConsumer[] | null;
|
|
591
626
|
/** The ledger directory. @defaultValue {@link admissionDir} */
|
|
592
627
|
readonly dir?: string;
|
|
593
628
|
/** Process probes for re-entrancy (tests). */
|
|
@@ -710,7 +745,7 @@ export declare function _resetAdmissionLedgerForTest(dir?: string): void;
|
|
|
710
745
|
* @param opts - ledger directory, capacity and probes (tests).
|
|
711
746
|
* @returns the ids removed (entries of another CLEO version included).
|
|
712
747
|
*/
|
|
713
|
-
export declare function reapLedger(opts?: Pick<AdmitOptions, 'dir' | 'capacityBytes' | 'probe' | 'now' | 'sample'>): Promise<string[]>;
|
|
748
|
+
export declare function reapLedger(opts?: Pick<AdmitOptions, 'dir' | 'capacityBytes' | 'probe' | 'now' | 'sample' | 'topMemory'>): Promise<string[]>;
|
|
714
749
|
/**
|
|
715
750
|
* Remove one entry by id, whatever its liveness, and schedule. For
|
|
716
751
|
* `cleo doctor tool-locks --remove <id>`, when an entry cannot be proven dead
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission-ledger.d.ts","sourceRoot":"","sources":["../../src/resources/admission-ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admission-ledger.d.ts","sourceRoot":"","sources":["../../src/resources/admission-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,17 +70,19 @@ import { execFileSync } from 'node:child_process';
|
|
|
70
70
|
import { randomBytes } from 'node:crypto';
|
|
71
71
|
import { accessSync, constants as fsConstants, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
|
|
72
72
|
import { hostname, totalmem } from 'node:os';
|
|
73
|
-
import {
|
|
73
|
+
import { join } from 'node:path';
|
|
74
74
|
import lockfile from 'proper-lockfile';
|
|
75
75
|
import { getLogger } from '../logger.js';
|
|
76
76
|
import { getCleoHome } from '../paths.js';
|
|
77
77
|
import { admissionCapacityBytes, admissionReserveBytes, defaultSingleProcessHeapMb, GIB_PER_WORKER, HEAVY_TOOL_HEAP_MB, heavyToolWorkers, isHeavyTool, isMemoryBoundTool, planHeavyToolEnv, } from '../tasks/heavy-tool-env.js';
|
|
78
|
+
import { gitHookPath, HOOK_PEAK_MARGIN, hookFootprintKey, readHookPeak } from './hook-footprint.js';
|
|
78
79
|
import { pressureScore, ResourceMonitor } from './monitor.js';
|
|
79
80
|
import { checkMemoryGate, MEMORY_GATE_RETRY_AFTER_MS, } from './pressure-gate.js';
|
|
80
|
-
import { processAncestors, processGroupOf } from './run-admission.js';
|
|
81
|
+
import { processAncestors, processGroupOf, processGroupsOf } from './run-admission.js';
|
|
81
82
|
import { canonicalForClass, gitHookFor, lightCommandReason, namedTestFileCount, runFootprint, } from './run-class.js';
|
|
82
83
|
import { ownProcessStartedAt, systemPidProbe } from './slot-holder.js';
|
|
83
84
|
import { followToolGroups, isProbeableId } from './tool-groups.js';
|
|
85
|
+
import { memoryPressureCause, TOP_MEMORY_COUNT, TOP_MEMORY_FAILED_REUSE_MS, TOP_MEMORY_REUSE_MS, topMemoryConsumers, } from './top-memory.js';
|
|
84
86
|
let _log = null;
|
|
85
87
|
function log() {
|
|
86
88
|
if (_log === null)
|
|
@@ -219,10 +221,7 @@ export function planFootprintBytes(plan) {
|
|
|
219
221
|
*/
|
|
220
222
|
export function gitHookInstalled(cwd, hook, globals = []) {
|
|
221
223
|
try {
|
|
222
|
-
|
|
223
|
-
// pick the repository and hooks directory it will use (T13458).
|
|
224
|
-
const path = execFileSync('git', [...globals, 'rev-parse', '--path-format=absolute', '--git-path', `hooks/${hook}`], { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5_000 }).trim();
|
|
225
|
-
accessSync(isAbsolute(path) ? path : join(cwd, path), fsConstants.X_OK);
|
|
224
|
+
accessSync(gitHookPath(cwd, hook, globals), fsConstants.X_OK);
|
|
226
225
|
return true;
|
|
227
226
|
}
|
|
228
227
|
catch (err) {
|
|
@@ -260,7 +259,11 @@ function scopedBuildWorkers(totalRamGib, env) {
|
|
|
260
259
|
* planRunFootprint('scoped-build', ['pnpm', 'biome', 'check', 'a.ts', 'b.ts']).footprintBytes; // 1 GiB
|
|
261
260
|
* ```
|
|
262
261
|
*/
|
|
263
|
-
export function planRunFootprint(cls, argv, env = process.env, totalRamGib = totalmem() / GIB, hookInstalled = (hook, globals) => gitHookInstalled(process.cwd(), hook, globals)
|
|
262
|
+
export function planRunFootprint(cls, argv, env = process.env, totalRamGib = totalmem() / GIB, hookInstalled = (hook, globals) => gitHookInstalled(process.cwd(), hook, globals), // CWD-OK: cleo run runs the command in its own cwd
|
|
263
|
+
hookPeak = (hook, globals) => {
|
|
264
|
+
const key = hookFootprintKey(process.cwd(), hook, globals, env); // CWD-OK: as above
|
|
265
|
+
return key === null ? null : { key, peakBytes: readHookPeak(key, admissionDir()) };
|
|
266
|
+
}) {
|
|
264
267
|
let scope = cls === 'full-build' ? null : runFootprint(argv);
|
|
265
268
|
// T13452: a scoped build of a command that runs no heavy tool (`node x.mjs`,
|
|
266
269
|
// `ls`) is charged light. An explicit test run keeps its class plan.
|
|
@@ -271,6 +274,7 @@ export function planRunFootprint(cls, argv, env = process.env, totalRamGib = tot
|
|
|
271
274
|
// the hook runs (tests, a build) rides this admission.
|
|
272
275
|
const probe = scope?.size === 'light' ? gitHookFor(argv) : null;
|
|
273
276
|
const hook = probe?.hooks.find((h) => hookInstalled(h, probe.globals));
|
|
277
|
+
const measured = hook !== undefined && probe !== null ? hookPeak(hook, probe.globals) : null;
|
|
274
278
|
if (hook !== undefined) {
|
|
275
279
|
scope = { size: 'class', reason: `runs the ${hook} hook` };
|
|
276
280
|
}
|
|
@@ -298,16 +302,27 @@ export function planRunFootprint(cls, argv, env = process.env, totalRamGib = tot
|
|
|
298
302
|
// (and is spawned with them), so two fit where one whole-suite run would.
|
|
299
303
|
const maxWorkers = namedFiles ?? (cls === 'scoped-build' ? scopedBuildWorkers(totalRamGib, env) : undefined);
|
|
300
304
|
const { overlay, resources } = planHeavyToolEnv(canonicalForClass(cls), env, totalRamGib, maxWorkers);
|
|
305
|
+
const reason = namedFiles !== null
|
|
306
|
+
? `${namedFiles} named test file${namedFiles === 1 ? '' : 's'}`
|
|
307
|
+
: scope?.size === 'class' && scope.reason !== 'sized by its class'
|
|
308
|
+
? `${cls} plan: ${scope.reason}`
|
|
309
|
+
: `${cls} plan`;
|
|
310
|
+
const planned = resources !== null ? planFootprintBytes(resources) : undefined;
|
|
311
|
+
// T13921: a measured hook is charged its peak plus a margin, never more than
|
|
312
|
+
// the plan it runs under (which still bounds its heap and workers).
|
|
313
|
+
const peak = measured?.peakBytes ?? null;
|
|
314
|
+
const charged = peak !== null && planned !== undefined
|
|
315
|
+
? Math.min(planned, Math.max(LIGHT_FOOTPRINT_BYTES, Math.ceil(peak * HOOK_PEAK_MARGIN)))
|
|
316
|
+
: planned;
|
|
301
317
|
return {
|
|
302
318
|
overlay,
|
|
303
319
|
resources,
|
|
304
|
-
...(
|
|
305
|
-
footprintReason:
|
|
306
|
-
? `${
|
|
307
|
-
:
|
|
308
|
-
? `${cls} plan: ${scope.reason}`
|
|
309
|
-
: `${cls} plan`,
|
|
320
|
+
...(charged !== undefined ? { footprintBytes: charged } : {}),
|
|
321
|
+
footprintReason: peak !== null && charged !== planned
|
|
322
|
+
? `${reason}, measured peak ${gib(peak)} + ${Math.round((HOOK_PEAK_MARGIN - 1) * 100)}%`
|
|
323
|
+
: reason,
|
|
310
324
|
namedFiles,
|
|
325
|
+
...(measured !== null ? { hookKey: measured.key } : {}),
|
|
311
326
|
};
|
|
312
327
|
}
|
|
313
328
|
/** Governor classes whose admission is the ledger's. */
|
|
@@ -333,6 +348,29 @@ export function isLedgerClass(cls) {
|
|
|
333
348
|
export function footprintForClass(cls, totalBytes = totalmem()) {
|
|
334
349
|
return isLedgerClass(cls) ? heavyRunFootprintBytes(totalBytes) : LIGHT_FOOTPRINT_BYTES;
|
|
335
350
|
}
|
|
351
|
+
/**
|
|
352
|
+
* A routine waiter that has waited this long ranks with urgent ones (T13921):
|
|
353
|
+
* a stream of urgent jobs can delay routine work, never starve it.
|
|
354
|
+
*/
|
|
355
|
+
export const URGENT_AGING_MS = 10 * 60_000;
|
|
356
|
+
/**
|
|
357
|
+
* Queue order at `nowMs` (T13921): urgent entries, and routine ones that have
|
|
358
|
+
* waited {@link URGENT_AGING_MS}, first; then FIFO by `enqueuedAtMs`, then id.
|
|
359
|
+
* The comparator is negative when `a` is ahead of `b`.
|
|
360
|
+
*
|
|
361
|
+
* @param nowMs - the clock.
|
|
362
|
+
*/
|
|
363
|
+
function queueOrder(nowMs) {
|
|
364
|
+
const rank = (e) => e.priority === 'urgent' || nowMs - e.enqueuedAtMs >= URGENT_AGING_MS ? 0 : 1;
|
|
365
|
+
const byId = (a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0);
|
|
366
|
+
return (a, b) => rank(a) - rank(b) || a.enqueuedAtMs - b.enqueuedAtMs || byId(a, b);
|
|
367
|
+
}
|
|
368
|
+
/** Waiting entries queued ahead of `mine` at `nowMs` (its queue position is this plus one). */
|
|
369
|
+
function waitingAhead(entries, mine, nowMs) {
|
|
370
|
+
const order = queueOrder(nowMs);
|
|
371
|
+
return entries.filter((e) => e.state === 'waiting' && e.id !== mine.id && order(e, mine) < 0)
|
|
372
|
+
.length;
|
|
373
|
+
}
|
|
336
374
|
/**
|
|
337
375
|
* The ledger directory under the CLEO home.
|
|
338
376
|
*
|
|
@@ -735,8 +773,14 @@ function ledgerBudget(pressure, capacityBytes) {
|
|
|
735
773
|
lightBudgetBytes,
|
|
736
774
|
heavyBudgetBytes: Math.min(lightBudgetBytes, shareBudgetBytes(share, capacityBytes)),
|
|
737
775
|
sampledAtMs: pressure?.sampledAtMs ?? null,
|
|
776
|
+
cause: pressure?.reading ? gateCause(pressure.reading) : null,
|
|
738
777
|
};
|
|
739
778
|
}
|
|
779
|
+
/** The memory gate's refusal in words, with its cause (T13914). */
|
|
780
|
+
function gateCause(reading) {
|
|
781
|
+
return (`memory pressure ${reading.score} (refused above ${reading.refuseAbove}, resumes at ` +
|
|
782
|
+
`${reading.resumeAtOrBelow} or below): ${memoryPressureCause(reading)}`);
|
|
783
|
+
}
|
|
740
784
|
/**
|
|
741
785
|
* The budget pressure leaves right now, as the ledger last judged it, without
|
|
742
786
|
* the lock. For `cleo doctor tool-locks` (T13572).
|
|
@@ -768,7 +812,8 @@ function budgetPhrase(entry, budget) {
|
|
|
768
812
|
* One scheduling pass: admit every waiting entry the budget and the queue
|
|
769
813
|
* order allow. Pure.
|
|
770
814
|
*
|
|
771
|
-
* -
|
|
815
|
+
* - Urgent entries first (T13921), then FIFO by `enqueuedAtMs`
|
|
816
|
+
* ({@link queueOrder}). A later entry may be admitted ahead of an older
|
|
772
817
|
* one that does not fit (backfill) until that older one has waited
|
|
773
818
|
* `reservationMs`; from then on nothing passes it.
|
|
774
819
|
* - A footprint above the capacity is charged the capacity (it runs alone).
|
|
@@ -898,14 +943,18 @@ export function schedulePass(entries, ctx) {
|
|
|
898
943
|
/** Admissible now: it fits, or nothing but its own ancestors runs. */
|
|
899
944
|
const startable = (w, cost, h) => fits(w, cost, h) ||
|
|
900
945
|
(running - h.running === 0 && (isHeavy(w) ? ctx.share : lightShare) !== 'none');
|
|
901
|
-
const waiting = entries
|
|
902
|
-
.filter((e) => e.state === 'waiting')
|
|
903
|
-
.sort((a, b) => a.enqueuedAtMs - b.enqueuedAtMs || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
946
|
+
const waiting = entries.filter((e) => e.state === 'waiting').sort(queueOrder(ctx.nowMs));
|
|
904
947
|
// T13591: the reserve is bounded like the tiny lane (T13389). While the
|
|
905
948
|
// oldest non-tiny run waits, it stays open only for TINY_LANE_WINDOWS
|
|
906
949
|
// reservation windows, and never for a run charged the whole capacity: its
|
|
907
950
|
// bytes would keep that run out, and steady tiny arrivals would starve it.
|
|
908
|
-
|
|
951
|
+
// By enqueue time, not queue order: an urgent arrival never resets it (T13971).
|
|
952
|
+
const byAge = [...waiting].sort((a, b) => a.enqueuedAtMs - b.enqueuedAtMs);
|
|
953
|
+
const oldestHead = byAge.find((w) => !isTiny(w));
|
|
954
|
+
// The FIFO head: only it, or a routine waiter, may take the reservation. A
|
|
955
|
+
// young urgent run that does not fit never removes the reservation an older
|
|
956
|
+
// routine head has earned (T13971).
|
|
957
|
+
const fifoHeadId = byAge[0]?.id;
|
|
909
958
|
const reserveOpen = oldestHead === undefined ||
|
|
910
959
|
(charged(oldestHead, ctx.capacityBytes) < ctx.capacityBytes &&
|
|
911
960
|
ctx.nowMs - oldestHead.enqueuedAtMs < reservationMs * TINY_LANE_WINDOWS);
|
|
@@ -984,7 +1033,7 @@ export function schedulePass(entries, ctx) {
|
|
|
984
1033
|
take(w, cost);
|
|
985
1034
|
continue;
|
|
986
1035
|
}
|
|
987
|
-
if (!blocked) {
|
|
1036
|
+
if (!blocked && (w.priority !== 'urgent' || w.id === fifoHeadId)) {
|
|
988
1037
|
blocked = true;
|
|
989
1038
|
if (ctx.nowMs - w.enqueuedAtMs >= reservationMs) {
|
|
990
1039
|
// A heavy head blocked by bytes stops everything behind it. One blocked
|
|
@@ -1325,7 +1374,7 @@ function newId(pid, nowMs) {
|
|
|
1325
1374
|
* {@link PRESSURE_REUSE_MS} ago is reused instead, unless `opts.sample` is
|
|
1326
1375
|
* given, so a crowd of waiters costs one sample per interval, not one each.
|
|
1327
1376
|
*/
|
|
1328
|
-
async function sampleShare(opts, cached, nowMs) {
|
|
1377
|
+
async function sampleShare(opts, cached, nowMs, probeFor = null) {
|
|
1329
1378
|
if (!opts.sample) {
|
|
1330
1379
|
if (process.env[ADMISSION_PRESSURE_ENV] === 'off') {
|
|
1331
1380
|
return { share: 'full', lightShare: 'full', reading: null, sampled: null };
|
|
@@ -1351,7 +1400,9 @@ async function sampleShare(opts, cached, nowMs) {
|
|
|
1351
1400
|
const gate = checkMemoryGate(sample, opts.now ? { now: opts.now } : {});
|
|
1352
1401
|
const share = budgetShare(sample, gate.refuse);
|
|
1353
1402
|
const lightShare = lightBudgetShare(sample, gate.refuse);
|
|
1354
|
-
const reading = gate.refuse
|
|
1403
|
+
const reading = gate.refuse && gate.reading !== null
|
|
1404
|
+
? withTopConsumers(gate.reading, cached, nowMs, opts, probeFor)
|
|
1405
|
+
: null;
|
|
1355
1406
|
return {
|
|
1356
1407
|
share,
|
|
1357
1408
|
lightShare,
|
|
@@ -1359,6 +1410,59 @@ async function sampleShare(opts, cached, nowMs) {
|
|
|
1359
1410
|
sampled: { share, lightShare, reading, sampledAtMs: nowMs },
|
|
1360
1411
|
};
|
|
1361
1412
|
}
|
|
1413
|
+
/**
|
|
1414
|
+
* A refusing reading with the host's largest memory users (T13914), reusing
|
|
1415
|
+
* the last probe for {@link TOP_MEMORY_REUSE_MS} (a failed one for
|
|
1416
|
+
* {@link TOP_MEMORY_FAILED_REUSE_MS}) so a long refusal costs one probe per
|
|
1417
|
+
* window, not one per pass. Only a waiting admission probes (`probe`);
|
|
1418
|
+
* release, reap and remove carry the last list forward and never run the
|
|
1419
|
+
* probe (T13964).
|
|
1420
|
+
*/
|
|
1421
|
+
function withTopConsumers(reading, cached, nowMs, opts, cleoEntries) {
|
|
1422
|
+
const last = cached?.reading?.topConsumers;
|
|
1423
|
+
if (last !== undefined) {
|
|
1424
|
+
// A failure is reused for a shorter window, never every pass: a probe that
|
|
1425
|
+
// hangs until its timeout must not block each waiter's event loop.
|
|
1426
|
+
const window = last.failed === true ? TOP_MEMORY_FAILED_REUSE_MS : TOP_MEMORY_REUSE_MS;
|
|
1427
|
+
const age = nowMs - last.sampledAtMs;
|
|
1428
|
+
if (age >= 0 && age < window)
|
|
1429
|
+
return { ...reading, topConsumers: last };
|
|
1430
|
+
}
|
|
1431
|
+
if (cleoEntries === null) {
|
|
1432
|
+
return last !== undefined ? { ...reading, topConsumers: last } : reading;
|
|
1433
|
+
}
|
|
1434
|
+
// Ask for more than are named: CLEO's own runs are left out (T13965).
|
|
1435
|
+
const probed = (opts.topMemory ?? (() => topMemoryConsumers(TOP_MEMORY_COUNT * 3)))();
|
|
1436
|
+
const processes = probed === null ? null : outsideCleo(probed, cleoEntries, opts);
|
|
1437
|
+
return {
|
|
1438
|
+
...reading,
|
|
1439
|
+
topConsumers: processes === null
|
|
1440
|
+
? { sampledAtMs: nowMs, processes: [], failed: true }
|
|
1441
|
+
: { sampledAtMs: nowMs, processes },
|
|
1442
|
+
};
|
|
1443
|
+
}
|
|
1444
|
+
/**
|
|
1445
|
+
* The memory users outside CLEO's own runs (T13965): a ledger entry's pid,
|
|
1446
|
+
* a process in one of its tool groups, and this process are CLEO's, so a
|
|
1447
|
+
* wait names what else took the memory. At most {@link TOP_MEMORY_COUNT}.
|
|
1448
|
+
*/
|
|
1449
|
+
function outsideCleo(processes, entries, opts) {
|
|
1450
|
+
const pids = new Set([opts.pid ?? process.pid, ...entries.map((e) => e.pid)]);
|
|
1451
|
+
const left = processes.filter((p) => !pids.has(p.pid));
|
|
1452
|
+
const groups = new Set(entries.flatMap((e) => e.toolGroups));
|
|
1453
|
+
if (groups.size === 0)
|
|
1454
|
+
return left.slice(0, TOP_MEMORY_COUNT);
|
|
1455
|
+
// One `ps` for every candidate's group, never one per process (T13965).
|
|
1456
|
+
const injected = opts.facts?.groupOf;
|
|
1457
|
+
const batch = injected === undefined ? processGroupsOf(left.map((p) => p.pid)) : null;
|
|
1458
|
+
const groupOf = (pid) => batch !== null ? batch.get(pid) : (injected?.(pid) ?? undefined);
|
|
1459
|
+
return left
|
|
1460
|
+
.filter((p) => {
|
|
1461
|
+
const g = groupOf(p.pid);
|
|
1462
|
+
return g === undefined || !groups.has(g);
|
|
1463
|
+
})
|
|
1464
|
+
.slice(0, TOP_MEMORY_COUNT);
|
|
1465
|
+
}
|
|
1362
1466
|
function isFresh(cached, nowMs) {
|
|
1363
1467
|
const age = nowMs - cached.sampledAtMs;
|
|
1364
1468
|
return age >= 0 && age < PRESSURE_REUSE_MS;
|
|
@@ -1481,6 +1585,7 @@ async function admitInner(req, opts) {
|
|
|
1481
1585
|
...(req.task !== undefined ? { task: req.task } : {}),
|
|
1482
1586
|
...(req.footprintReason !== undefined ? { footprintReason: req.footprintReason } : {}),
|
|
1483
1587
|
...(req.exclusive === true ? { exclusive: true } : {}),
|
|
1588
|
+
...(req.urgent === true ? { priority: 'urgent' } : {}),
|
|
1484
1589
|
};
|
|
1485
1590
|
const deadline = t0 + timeoutMs;
|
|
1486
1591
|
const stop = new AbortController();
|
|
@@ -1514,7 +1619,7 @@ async function admitInner(req, opts) {
|
|
|
1514
1619
|
const before = readLedgerDoc(dir);
|
|
1515
1620
|
lastDoc = before;
|
|
1516
1621
|
const nowMs = now();
|
|
1517
|
-
const { share, lightShare, reading, sampled } = await sampleShare(opts, before.pressure, nowMs);
|
|
1622
|
+
const { share, lightShare, reading, sampled } = await sampleShare(opts, before.pressure, nowMs, before.entries);
|
|
1518
1623
|
lastReading = reading;
|
|
1519
1624
|
checkQueue();
|
|
1520
1625
|
const dead = findDead(before, now(), probe);
|
|
@@ -1547,14 +1652,13 @@ async function admitInner(req, opts) {
|
|
|
1547
1652
|
});
|
|
1548
1653
|
const refusal = (doc, reading) => {
|
|
1549
1654
|
const nowMs = now();
|
|
1550
|
-
const ahead = doc.entries
|
|
1655
|
+
const ahead = waitingAhead(doc.entries, entry, nowMs);
|
|
1551
1656
|
const load = budgetLoad(doc, capacityBytes);
|
|
1552
1657
|
const exclusiveHolder = entry.exclusive === true
|
|
1553
1658
|
? doc.entries.find((e) => e.state === 'admitted' && e.exclusive === true && e.id !== entry.id)
|
|
1554
1659
|
: undefined;
|
|
1555
1660
|
const reason = reading !== null
|
|
1556
|
-
?
|
|
1557
|
-
`${reading.resumeAtOrBelow} or below): ${reading.summary}`
|
|
1661
|
+
? gateCause(reading)
|
|
1558
1662
|
: exclusiveHolder !== undefined
|
|
1559
1663
|
? `another full build holds the machine-wide full-build slot (${exclusiveHolder.label} pid ` +
|
|
1560
1664
|
`${exclusiveHolder.pid}); one runs at a time, whatever its size${ahead > 0 ? `; ${ahead} waiting ahead` : ''}`
|
|
@@ -1592,11 +1696,13 @@ async function admitInner(req, opts) {
|
|
|
1592
1696
|
await opts.keepAlive().catch(() => undefined);
|
|
1593
1697
|
checkQueue();
|
|
1594
1698
|
}
|
|
1595
|
-
|
|
1596
|
-
|
|
1699
|
+
// T13965: the first waiting line already says when the wait gives up.
|
|
1700
|
+
if (reading !== null) {
|
|
1701
|
+
opts.memoryPressure?.waiting(reading, now() - t0, timeoutMs - (now() - t0));
|
|
1702
|
+
}
|
|
1597
1703
|
if (now() - lastReportAt >= LEDGER_HOLDER_REPORT_MS && opts.notice) {
|
|
1598
1704
|
lastReportAt = now();
|
|
1599
|
-
opts.notice(holderReport(first.doc, entry, pid, now() - t0, capacityBytes, now()));
|
|
1705
|
+
opts.notice(holderReport(first.doc, entry, pid, now() - t0, capacityBytes, now(), timeoutMs));
|
|
1600
1706
|
}
|
|
1601
1707
|
const remaining = timeoutMs - (now() - t0);
|
|
1602
1708
|
if (remaining <= 0)
|
|
@@ -1682,15 +1788,24 @@ function describeLoad(doc, nowMs) {
|
|
|
1682
1788
|
}
|
|
1683
1789
|
return lines;
|
|
1684
1790
|
}
|
|
1685
|
-
/**
|
|
1686
|
-
|
|
1791
|
+
/**
|
|
1792
|
+
* The holder report a long waiter prints. When the memory gate closed the
|
|
1793
|
+
* budget, it names the cause (the host's largest memory users, CLEO or not)
|
|
1794
|
+
* and when the wait gives up (T13914).
|
|
1795
|
+
*/
|
|
1796
|
+
function holderReport(doc, mine, pid, waitedMs, capacityBytes, nowMs, timeoutMs) {
|
|
1687
1797
|
const holders = doc.entries.filter((e) => e.state === 'admitted');
|
|
1688
1798
|
const used = budgetLoad(doc, capacityBytes).bytes;
|
|
1689
|
-
const ahead = doc.entries
|
|
1799
|
+
const ahead = waitingAhead(doc.entries, mine, nowMs);
|
|
1690
1800
|
const lines = [
|
|
1691
1801
|
`still waiting after ${age(waitedMs)} for the machine budget (${gib(used)} of ${budgetPhrase(mine, ledgerBudget(doc.pressure, capacityBytes))} in use, ` +
|
|
1692
|
-
|
|
1802
|
+
`queue position ${ahead + 1}${mine.priority === 'urgent' ? ' (urgent)' : ''}, ${ahead} waiting ahead). Holders: ${describeLoad(doc, nowMs).join('; ') || 'none'}.`,
|
|
1693
1803
|
];
|
|
1804
|
+
const reading = doc.pressure?.reading ?? null;
|
|
1805
|
+
if (reading !== null) {
|
|
1806
|
+
lines.push(`The budget is closed by ${gateCause(reading)}. Admission resumes by itself; this wait ` +
|
|
1807
|
+
`gives up in ${age(Math.max(0, timeoutMs - waitedMs))}.`);
|
|
1808
|
+
}
|
|
1694
1809
|
const table = holders.length > 0 ? processTable() : null;
|
|
1695
1810
|
const cycle = table ? suspectCycle(pid, holders, table) : null;
|
|
1696
1811
|
if (cycle)
|