@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
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brief codebase map: what already exists, so "reuse first" costs no search (T13666).
|
|
3
|
+
*
|
|
4
|
+
* One line per folder listing its exported names, inside a character budget,
|
|
5
|
+
* shared code (utils, lib, services, core, …) first and tests skipped. The
|
|
6
|
+
* names come from the nexus graph (parsed by tree-sitter, exact) when the
|
|
7
|
+
* project is indexed, else from a regex walk of git-tracked files. The idea
|
|
8
|
+
* and the fallback's patterns are adapted from Ponytail 5.1.0's
|
|
9
|
+
* `ponytail-map.js` (DietrichGebert, MIT).
|
|
10
|
+
*
|
|
11
|
+
* @task T13666
|
|
12
|
+
* @epic T13418
|
|
13
|
+
*/
|
|
14
|
+
import { execFileSync } from 'node:child_process';
|
|
15
|
+
import { readFileSync } from 'node:fs';
|
|
16
|
+
import { dirname, extname, join } from 'node:path';
|
|
17
|
+
/** Default character budget (Ponytail's default). */
|
|
18
|
+
export const BRIEF_MAP_DEFAULT_BUDGET = 2000;
|
|
19
|
+
/** What `cleo briefing` prints instead of a map when the project has no code index. */
|
|
20
|
+
export const BRIEF_MAP_NO_INDEX = 'no code index; run `cleo nexus analyze`';
|
|
21
|
+
const MAX_FILES = 4000;
|
|
22
|
+
const SRC = /\.(py|js|jsx|mjs|cjs|ts|tsx|go|rs|rb|java|kt|php|swift|cs)$/;
|
|
23
|
+
const SKIP_DIR = /(^|\/)(node_modules|\.git|dist|build|out|vendor|venv|\.venv|__pycache__|coverage|\.next|target|migrations|fixtures|tests?|__tests__|spec)(\/|$)/;
|
|
24
|
+
const SKIP_FILE = /(^|\/)(test_[^/]*|[^/]*(_test|\.test|\.spec|\.gen|\.min|\.d)\.[a-z]+)$/;
|
|
25
|
+
const SHARED = /(util|helper|lib|common|shared|service|component|hook|core|model|schema|api)/i;
|
|
26
|
+
/** Symbol kinds that name something reusable. */
|
|
27
|
+
const SYMBOL_KINDS = new Set([
|
|
28
|
+
'function',
|
|
29
|
+
'class',
|
|
30
|
+
'interface',
|
|
31
|
+
'struct',
|
|
32
|
+
'trait',
|
|
33
|
+
'type_alias',
|
|
34
|
+
'enum',
|
|
35
|
+
'constant',
|
|
36
|
+
'variable',
|
|
37
|
+
'module',
|
|
38
|
+
'record',
|
|
39
|
+
'union',
|
|
40
|
+
'typedef',
|
|
41
|
+
'type',
|
|
42
|
+
]);
|
|
43
|
+
/** Whether a repo-relative path is source worth mapping (not a test, generated or vendored file). */
|
|
44
|
+
export function isMappableSource(file) {
|
|
45
|
+
return SRC.test(file) && !SKIP_DIR.test(file) && !SKIP_FILE.test(file);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Render the map from per-file names: one line per folder, shared folders
|
|
49
|
+
* first, within `budget` characters.
|
|
50
|
+
*
|
|
51
|
+
* @param files - files with their exported names.
|
|
52
|
+
* @param budget - character budget for the folder lines.
|
|
53
|
+
* @returns the text, and how many folders were listed and skipped.
|
|
54
|
+
*/
|
|
55
|
+
export function formatBriefMap(files, budget = BRIEF_MAP_DEFAULT_BUDGET) {
|
|
56
|
+
const ordered = files
|
|
57
|
+
.filter((f) => f.names.length > 0 && isMappableSource(f.file))
|
|
58
|
+
.slice()
|
|
59
|
+
.sort((a, b) => Number(SHARED.test(b.file)) - Number(SHARED.test(a.file)) || a.file.localeCompare(b.file));
|
|
60
|
+
const dirs = new Map();
|
|
61
|
+
for (const f of ordered) {
|
|
62
|
+
const dir = dirname(f.file);
|
|
63
|
+
dirs.set(dir, [...(dirs.get(dir) ?? []), f.names]);
|
|
64
|
+
}
|
|
65
|
+
const lines = [];
|
|
66
|
+
let used = 0;
|
|
67
|
+
let skipped = 0;
|
|
68
|
+
for (const [dir, perFile] of dirs) {
|
|
69
|
+
// The first names say what a file is; in a folder of many files, one name each.
|
|
70
|
+
const take = perFile.length > 8 ? 1 : 3;
|
|
71
|
+
const names = [...new Set(perFile.flatMap((n) => n.slice(0, take)))];
|
|
72
|
+
const line = `${dir}/: ${names.slice(0, 30).join(', ')}${names.length > 30 ? ', ...' : ''}`;
|
|
73
|
+
if (used + line.length > budget) {
|
|
74
|
+
skipped++;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
lines.push(line);
|
|
78
|
+
used += line.length + 1;
|
|
79
|
+
}
|
|
80
|
+
if (lines.length === 0)
|
|
81
|
+
return { text: '', folders: 0, skipped };
|
|
82
|
+
const text = [
|
|
83
|
+
'Codebase map (what already exists; reuse it, read a file only when you need its details):',
|
|
84
|
+
...lines,
|
|
85
|
+
...(skipped ? [`(${skipped} more folders not listed)`] : []),
|
|
86
|
+
].join('\n');
|
|
87
|
+
return { text, folders: lines.length, skipped };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Exported names per file from the nexus graph; empty when the project is not
|
|
91
|
+
* indexed. A graph that exists but cannot be read throws, so callers never
|
|
92
|
+
* report a broken index as a missing one.
|
|
93
|
+
*/
|
|
94
|
+
async function filesFromNexus(projectRoot) {
|
|
95
|
+
try {
|
|
96
|
+
const { and, eq } = await import('drizzle-orm');
|
|
97
|
+
const { getNexusDb, nexusSchema } = await import('../store/nexus-sqlite.js');
|
|
98
|
+
const db = await getNexusDb(projectRoot);
|
|
99
|
+
const t = nexusSchema.nexusNodes;
|
|
100
|
+
const rows = db
|
|
101
|
+
.select({ file: t.filePath, name: t.name, kind: t.kind, line: t.startLine })
|
|
102
|
+
.from(t)
|
|
103
|
+
.where(and(eq(t.isExported, true), eq(t.isExternal, false)))
|
|
104
|
+
.all();
|
|
105
|
+
const byFile = new Map();
|
|
106
|
+
for (const r of rows) {
|
|
107
|
+
if (!r.file || !r.name || !SYMBOL_KINDS.has(r.kind) || r.name.startsWith('_'))
|
|
108
|
+
continue;
|
|
109
|
+
byFile.set(r.file, [...(byFile.get(r.file) ?? []), { name: r.name, line: r.line ?? 0 }]);
|
|
110
|
+
}
|
|
111
|
+
return [...byFile].map(([file, names]) => ({
|
|
112
|
+
file,
|
|
113
|
+
names: [...new Set(names.sort((a, b) => a.line - b.line).map((n) => n.name))],
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
if (err instanceof Error && /no such table/i.test(err.message))
|
|
118
|
+
return [];
|
|
119
|
+
throw err;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const PATTERNS = {
|
|
123
|
+
py: [/^(?:async\s+)?def\s+([A-Za-z]\w*)/gm, /^class\s+([A-Za-z]\w*)/gm],
|
|
124
|
+
js: [
|
|
125
|
+
/^export\s+(?:default\s+)?(?:async\s+)?(?:function\*?|class|const|let|var|interface|type|enum)\s+([A-Za-z_$][\w$]*)/gm,
|
|
126
|
+
/^export\s*\{([^}]*)\}/gm,
|
|
127
|
+
],
|
|
128
|
+
go: [/^func\s+(?:\([^)]*\)\s*)?([A-Z]\w*)/gm, /^type\s+([A-Z]\w*)/gm],
|
|
129
|
+
rs: [/^pub\s+(?:async\s+)?(?:fn|struct|enum|trait|type)\s+(\w+)/gm],
|
|
130
|
+
rb: [/^\s*(?:def|class|module)\s+([A-Za-z][\w.]*)/gm],
|
|
131
|
+
jvm: [/^\s*(?:public\s+)?(?:static\s+)?(?:final\s+)?(?:class|interface|enum|record)\s+(\w+)/gm],
|
|
132
|
+
};
|
|
133
|
+
const LANG = {
|
|
134
|
+
py: 'py',
|
|
135
|
+
js: 'js',
|
|
136
|
+
jsx: 'js',
|
|
137
|
+
mjs: 'js',
|
|
138
|
+
cjs: 'js',
|
|
139
|
+
ts: 'js',
|
|
140
|
+
tsx: 'js',
|
|
141
|
+
go: 'go',
|
|
142
|
+
rs: 'rs',
|
|
143
|
+
rb: 'rb',
|
|
144
|
+
java: 'jvm',
|
|
145
|
+
kt: 'jvm',
|
|
146
|
+
swift: 'jvm',
|
|
147
|
+
cs: 'jvm',
|
|
148
|
+
php: 'jvm',
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Exported top-level names in one source file, by regex.
|
|
152
|
+
* shortcut: regex, not a parser (misses nested or dynamic exports), use the nexus graph when indexed
|
|
153
|
+
*
|
|
154
|
+
* @param file - repo-relative path (its extension picks the patterns).
|
|
155
|
+
* @param text - file contents.
|
|
156
|
+
*/
|
|
157
|
+
export function namesInSource(file, text) {
|
|
158
|
+
const names = [];
|
|
159
|
+
for (const re of PATTERNS[LANG[extname(file).slice(1)] ?? ''] ?? []) {
|
|
160
|
+
for (const m of text.matchAll(re)) {
|
|
161
|
+
for (const raw of (m[1] ?? '').split(',')) {
|
|
162
|
+
const n = raw
|
|
163
|
+
.trim()
|
|
164
|
+
.split(/\s+as\s+/)
|
|
165
|
+
.pop() ?? '';
|
|
166
|
+
if (n && !n.startsWith('_') && !names.includes(n))
|
|
167
|
+
names.push(n);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return names;
|
|
172
|
+
}
|
|
173
|
+
/** Exported names per git-tracked file, by regex. */
|
|
174
|
+
function filesFromGitWalk(projectRoot) {
|
|
175
|
+
let tracked;
|
|
176
|
+
try {
|
|
177
|
+
tracked = execFileSync('git', ['ls-files'], {
|
|
178
|
+
cwd: projectRoot,
|
|
179
|
+
encoding: 'utf-8',
|
|
180
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
181
|
+
timeout: 5000,
|
|
182
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
183
|
+
})
|
|
184
|
+
.split('\n')
|
|
185
|
+
.filter(isMappableSource)
|
|
186
|
+
.slice(0, MAX_FILES);
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return [];
|
|
190
|
+
}
|
|
191
|
+
const files = [];
|
|
192
|
+
for (const file of tracked) {
|
|
193
|
+
try {
|
|
194
|
+
const text = readFileSync(join(projectRoot, file), 'utf-8').slice(0, 65536);
|
|
195
|
+
files.push({ file, names: namesInSource(file, text) });
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// unreadable or deleted since ls-files: skip
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return files;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Build the brief map from the nexus graph only, never walking the tree, so it
|
|
205
|
+
* is cheap enough for `cleo briefing`.
|
|
206
|
+
*
|
|
207
|
+
* @param projectRoot - the project root.
|
|
208
|
+
* @param budget - character budget (default {@link BRIEF_MAP_DEFAULT_BUDGET}).
|
|
209
|
+
* @returns the report, or `null` when the project has no code index.
|
|
210
|
+
* @throws when the code index exists but cannot be read.
|
|
211
|
+
*/
|
|
212
|
+
export async function buildNexusBriefMap(projectRoot, budget = BRIEF_MAP_DEFAULT_BUDGET) {
|
|
213
|
+
const files = await filesFromNexus(projectRoot);
|
|
214
|
+
if (files.length === 0)
|
|
215
|
+
return null;
|
|
216
|
+
return { source: 'nexus', budget, ...formatBriefMap(files, budget) };
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Build the brief map for a project: from the nexus graph when indexed, else
|
|
220
|
+
* from a git-tracked regex walk.
|
|
221
|
+
*
|
|
222
|
+
* @param projectRoot - the project root.
|
|
223
|
+
* @param budget - character budget (default {@link BRIEF_MAP_DEFAULT_BUDGET}).
|
|
224
|
+
*/
|
|
225
|
+
export async function buildBriefMap(projectRoot, budget = BRIEF_MAP_DEFAULT_BUDGET) {
|
|
226
|
+
// An unreadable index falls back to the walk here; only the briefing reports it.
|
|
227
|
+
const fromNexus = await buildNexusBriefMap(projectRoot, budget).catch(() => null);
|
|
228
|
+
return (fromNexus ?? {
|
|
229
|
+
source: 'git-walk',
|
|
230
|
+
budget,
|
|
231
|
+
...formatBriefMap(filesFromGitWalk(projectRoot), budget),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=brief-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brief-map.js","sourceRoot":"","sources":["../../src/nexus/brief-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,17 @@
|
|
|
13
13
|
* @task T12316
|
|
14
14
|
* @module nexus/freshness
|
|
15
15
|
*/
|
|
16
|
-
import type { GraphIndexFreshness, ParserExecutionPort } from '@cleocode/contracts';
|
|
16
|
+
import type { GraphIndexFreshness, NexusAnswerFreshness, ParserExecutionPort } from '@cleocode/contracts';
|
|
17
17
|
import { type GraphRunCost } from './graph-manifest.js';
|
|
18
|
+
import { type NexusStalePolicy } from './index-health.js';
|
|
19
|
+
export { DEFAULT_MAX_COMMITS_BEHIND, measureAgainstBase, NEXUS_ALLOW_STALE_ENV, type NexusIndexHealth, type NexusStalePolicy, probeNexusIndexHealth, readNexusStalePolicy, } from './index-health.js';
|
|
18
20
|
/** Command that refreshes the index; incremental by default since T12315. */
|
|
19
21
|
export declare const NEXUS_REFRESH_COMMAND = "cleo nexus analyze";
|
|
20
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Retired file-count cap for an inline refresh (T14014): the size-scaled cost
|
|
24
|
+
* estimate against the budget decides. Kept as the reported default of the
|
|
25
|
+
* ignored `nexus.autoRefresh.maxFiles`.
|
|
26
|
+
*/
|
|
21
27
|
export declare const DEFAULT_AUTO_REFRESH_MAX_FILES = 25;
|
|
22
28
|
/** Default wall-clock budget for an inline refresh. */
|
|
23
29
|
export declare const DEFAULT_AUTO_REFRESH_BUDGET_MS = 60000;
|
|
@@ -37,6 +43,20 @@ export interface NexusFreshnessAssessment {
|
|
|
37
43
|
freshness: GraphIndexFreshness;
|
|
38
44
|
/** Every stale path (modified, added, deleted or unreadable). */
|
|
39
45
|
staleFiles: ReadonlySet<string>;
|
|
46
|
+
/**
|
|
47
|
+
* What a refresh would cost (T14014): files it must parse (stale ones and
|
|
48
|
+
* any without a reusable cache entry), files it can reuse, and the estimate.
|
|
49
|
+
*/
|
|
50
|
+
refreshPlan?: NexusRefreshPlan;
|
|
51
|
+
}
|
|
52
|
+
/** What an inline refresh would parse, reuse and cost (T14014). */
|
|
53
|
+
export interface NexusRefreshPlan {
|
|
54
|
+
/** Files that must be parsed: stale, or with no exact cache entry for this build. */
|
|
55
|
+
toParse: number;
|
|
56
|
+
/** Unchanged files with an exact cache entry for this build. */
|
|
57
|
+
reusable: number;
|
|
58
|
+
/** Estimated milliseconds, or `null` when no previous run cost is recorded. */
|
|
59
|
+
estimateMs: number | null;
|
|
40
60
|
}
|
|
41
61
|
/**
|
|
42
62
|
* Judge the queried symbol's own files against an assessment.
|
|
@@ -49,12 +69,20 @@ export declare function judgeSymbolFiles(assessment: NexusFreshnessAssessment, f
|
|
|
49
69
|
export interface NexusAutoRefreshPolicy {
|
|
50
70
|
/** Whether queries may refresh the index inline. @defaultValue true */
|
|
51
71
|
enabled: boolean;
|
|
52
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Retired (T14014): the size-scaled cost estimate against `budgetMs` decides.
|
|
74
|
+
* Still read from `nexus.autoRefresh.maxFiles` for compatibility; ignored.
|
|
75
|
+
*/
|
|
53
76
|
maxFiles: number;
|
|
54
77
|
/** Wall-clock budget; a refresh estimated to exceed it is not started. @defaultValue 60000 */
|
|
55
78
|
budgetMs: number;
|
|
56
79
|
/** What turned refresh off, when not the config key (`--no-refresh`, `CLEO_NEXUS_AUTO_REFRESH`). */
|
|
57
80
|
disabledBy?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Indexed files above which any inline refresh needs `cleo run` admission,
|
|
83
|
+
* however few files it parses (T14019). @defaultValue {@link ADMISSION_GRAPH_FILES}
|
|
84
|
+
*/
|
|
85
|
+
admissionGraphFiles?: number;
|
|
58
86
|
}
|
|
59
87
|
/**
|
|
60
88
|
* Assess how far the published code graph lags the working tree.
|
|
@@ -69,6 +97,49 @@ export interface NexusAutoRefreshPolicy {
|
|
|
69
97
|
* ```
|
|
70
98
|
*/
|
|
71
99
|
export declare function assessNexusIndexFreshness(projectRoot: string, options?: NexusFreshnessOptions): Promise<GraphIndexFreshness>;
|
|
100
|
+
/**
|
|
101
|
+
* The freshness block every index-sensitive answer carries as `data.freshness`.
|
|
102
|
+
*
|
|
103
|
+
* @param freshness - The assessment behind the answer.
|
|
104
|
+
* @returns Revision, base, commits behind, age and verdict.
|
|
105
|
+
*/
|
|
106
|
+
export declare function answerFreshness(freshness: GraphIndexFreshness): NexusAnswerFreshness;
|
|
107
|
+
/** A refused graph answer: the index is too far behind to answer from (T14008). */
|
|
108
|
+
export interface NexusStaleRefusal {
|
|
109
|
+
/** Stable error code. */
|
|
110
|
+
code: 'E_NEXUS_INDEX_STALE';
|
|
111
|
+
/** Why the answer was refused. */
|
|
112
|
+
message: string;
|
|
113
|
+
/** The exact reindex command, and the opt-out. */
|
|
114
|
+
fix: string;
|
|
115
|
+
/** The freshness facts and the threshold that refused. */
|
|
116
|
+
details: NexusAnswerFreshness & {
|
|
117
|
+
maxCommitsBehind: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether a graph answer must be refused as stale: the index trails the
|
|
122
|
+
* checked-out HEAD by more than the policy allows, or the target is missing
|
|
123
|
+
* from an index that is stale for this checkout (commits behind HEAD or
|
|
124
|
+
* changed files), so it may exist in code the index never saw. Distance to the
|
|
125
|
+
* base branch (`commitsBehind`) is reported only: on a feature branch or
|
|
126
|
+
* worktree it grows as the base moves, and no reindex here could clear it.
|
|
127
|
+
*
|
|
128
|
+
* @param freshness - The assessment behind the answer.
|
|
129
|
+
* @param policy - The stale-answer policy.
|
|
130
|
+
* @param options - `targetMissing` when the query found no symbol; `projectRoot`
|
|
131
|
+
* names the checkout in the reindex command.
|
|
132
|
+
* @returns The refusal, or `null` when the answer may stand.
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts
|
|
135
|
+
* const refusal = staleIndexRefusal(freshness, policy, { projectRoot: root });
|
|
136
|
+
* if (refusal) return refusalEnvelope(refusal);
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export declare function staleIndexRefusal(freshness: GraphIndexFreshness, policy: NexusStalePolicy, options?: {
|
|
140
|
+
targetMissing?: boolean;
|
|
141
|
+
projectRoot?: string;
|
|
142
|
+
}): NexusStaleRefusal | null;
|
|
72
143
|
/**
|
|
73
144
|
* Read the auto-refresh policy from `nexus.autoRefresh.*`, applying defaults.
|
|
74
145
|
* @param projectRoot - Project whose merged config is read.
|
|
@@ -96,8 +167,8 @@ export interface NexusRefreshSummary {
|
|
|
96
167
|
/** Runs one inline refresh; {@link runRefreshInChild} unless a caller supplies another. */
|
|
97
168
|
export type NexusRefreshRunner = (input: NexusRefreshInput) => Promise<NexusRefreshSummary>;
|
|
98
169
|
/**
|
|
99
|
-
* Run a refresh in this thread,
|
|
100
|
-
*
|
|
170
|
+
* Run a refresh in this thread, bounded by its budget. Unbounded in memory:
|
|
171
|
+
* {@link runRefreshInChild} runs it inside a heap-limited child process.
|
|
101
172
|
*
|
|
102
173
|
* @param input - The refresh to run.
|
|
103
174
|
* @returns The refresh summary.
|
|
@@ -132,23 +203,67 @@ export declare function runRefreshInChild(input: NexusRefreshInput, options?: {
|
|
|
132
203
|
heapMb?: number;
|
|
133
204
|
port?: ParserExecutionPort;
|
|
134
205
|
}): Promise<NexusRefreshSummary>;
|
|
206
|
+
/** Cooldown after an inline refresh fails or is aborted (T14014). */
|
|
207
|
+
export declare const INLINE_REFRESH_COOLDOWN_MS: number;
|
|
208
|
+
/**
|
|
209
|
+
* Indexed files above which every inline refresh needs `cleo run` admission
|
|
210
|
+
* (T14019): resolve, communities, flows and the republish run over the whole
|
|
211
|
+
* graph, so on a large repository they dominate memory even when one file is
|
|
212
|
+
* re-parsed.
|
|
213
|
+
*/
|
|
214
|
+
export declare const ADMISSION_GRAPH_FILES = 2000;
|
|
215
|
+
/**
|
|
216
|
+
* The memory an inline refresh asks `cleo run` admission for (T14019): scaled
|
|
217
|
+
* to the graph it re-resolves (indexed files), at least
|
|
218
|
+
* {@link REFRESH_MIN_FOOTPRINT_BYTES}, at most the build class's footprint.
|
|
219
|
+
*
|
|
220
|
+
* @param indexedFiles - Files in the published generation.
|
|
221
|
+
* @param classBytes - Footprint of the `scoped-build` class on this machine.
|
|
222
|
+
* @returns Footprint in bytes.
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* inlineRefreshFootprintBytes(10_000, footprintForClass('scoped-build'));
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
export declare function inlineRefreshFootprintBytes(indexedFiles: number, classBytes: number): number;
|
|
229
|
+
/** Fallback cooldown file under `.cleo/` when `_nexus_meta` cannot be written (T14014). */
|
|
230
|
+
export declare const INLINE_REFRESH_COOLDOWN_FILE = "nexus-refresh-cooldown.json";
|
|
231
|
+
/** Lock file under `.cleo/`: one inline refresh at a time per project. */
|
|
232
|
+
export declare const INLINE_REFRESH_LOCK_FILE = "nexus-inline-refresh.lock";
|
|
233
|
+
/**
|
|
234
|
+
* Admits a heavy inline refresh without waiting; `{ refused }` when the machine
|
|
235
|
+
* is busy (T14014). `indexedFiles` sizes the footprint (T14019).
|
|
236
|
+
*/
|
|
237
|
+
export type NexusRefreshAdmitter = (projectRoot: string, indexedFiles: number) => Promise<{
|
|
238
|
+
release(): Promise<void>;
|
|
239
|
+
} | {
|
|
240
|
+
refused: string;
|
|
241
|
+
}>;
|
|
135
242
|
/**
|
|
136
|
-
* Assess freshness and, when
|
|
243
|
+
* Assess freshness and, when the refresh is affordable, refresh the index
|
|
137
244
|
* inline before the caller answers from it.
|
|
138
245
|
*
|
|
139
|
-
* A refresh runs
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
246
|
+
* A refresh runs when the recorded cost, scaled to the repository and to the
|
|
247
|
+
* files it must parse (T14014), fits `budgetMs`. It is guarded so a stale
|
|
248
|
+
* index never turns every query into another heavy run:
|
|
249
|
+
* - one inline refresh at a time per project (a pid lock; a concurrent query
|
|
250
|
+
* answers from the stale index);
|
|
251
|
+
* - a refresh beyond a small incremental set needs a non-waiting `cleo run`
|
|
252
|
+
* admission, and is skipped when the machine is busy;
|
|
253
|
+
* - a refresh that fails or is aborted sets a cooldown: no inline refresh for
|
|
254
|
+
* {@link INLINE_REFRESH_COOLDOWN_MS}, or until an analysis publishes a new
|
|
255
|
+
* generation. The cooldown is reported as `refreshCooldownUntil`.
|
|
256
|
+
* The budget also cancels a run at its next check, and publication is atomic,
|
|
257
|
+
* so an abandoned refresh leaves the previous graph intact. Every decision is
|
|
258
|
+
* disclosed in `autoRefresh`.
|
|
145
259
|
*
|
|
146
260
|
* @param projectRoot - Project whose graph is about to be queried.
|
|
147
261
|
* @param policy - Explicit policy; read from config when omitted.
|
|
148
262
|
* @param runRefresh - Runs the refresh; a heap-bounded worker unless supplied (T13537).
|
|
263
|
+
* @param admitter - Admits a heavy refresh; `cleo run` admission unless supplied.
|
|
149
264
|
* @returns Freshness of the index as it stands after any refresh, with its stale set.
|
|
150
265
|
*/
|
|
151
|
-
export declare function ensureNexusIndexFresh(projectRoot: string, policy?: NexusAutoRefreshPolicy, runRefresh?: NexusRefreshRunner): Promise<NexusFreshnessAssessment>;
|
|
266
|
+
export declare function ensureNexusIndexFresh(projectRoot: string, policy?: NexusAutoRefreshPolicy, runRefresh?: NexusRefreshRunner, admitter?: NexusRefreshAdmitter): Promise<NexusFreshnessAssessment>;
|
|
152
267
|
/**
|
|
153
268
|
* Collect the source files a graph query answer is about.
|
|
154
269
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/nexus/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/nexus/freshness.ts"],"names":[],"mappings":"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"}
|