@cleocode/core 2026.10.4 → 2026.10.5
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/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +7 -37
- package/dist/bootstrap.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/caamp/adapter.d.ts.map +1 -1
- package/dist/caamp/adapter.js +5 -2
- package/dist/caamp/adapter.js.map +1 -1
- package/dist/changesets/parse-frontmatter.d.ts +1 -1
- package/dist/changesets/parse-frontmatter.d.ts.map +1 -1
- package/dist/changesets/parse-frontmatter.js +2 -1
- package/dist/changesets/parse-frontmatter.js.map +1 -1
- package/dist/changesets/parser.d.ts +1 -1
- package/dist/changesets/parser.d.ts.map +1 -1
- package/dist/changesets/parser.js +2 -1
- package/dist/changesets/parser.js.map +1 -1
- package/dist/changesets/writer.d.ts +8 -1
- package/dist/changesets/writer.d.ts.map +1 -1
- package/dist/changesets/writer.js +56 -5
- package/dist/changesets/writer.js.map +1 -1
- package/dist/cloud/keys.d.ts +9 -0
- package/dist/cloud/keys.d.ts.map +1 -1
- package/dist/cloud/keys.js +11 -0
- package/dist/cloud/keys.js.map +1 -1
- package/dist/cloud/nexus-attach.d.ts +17 -0
- package/dist/cloud/nexus-attach.d.ts.map +1 -1
- package/dist/cloud/nexus-attach.js +30 -9
- package/dist/cloud/nexus-attach.js.map +1 -1
- package/dist/cloud/nexus-auth.d.ts +7 -1
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +7 -1
- package/dist/cloud/nexus-auth.js.map +1 -1
- package/dist/cloud/nexus-cloud-activity.d.ts.map +1 -1
- package/dist/cloud/nexus-cloud-activity.js +2 -1
- package/dist/cloud/nexus-cloud-activity.js.map +1 -1
- package/dist/cloud/nexus-cloud-conflicts.d.ts +48 -0
- package/dist/cloud/nexus-cloud-conflicts.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-conflicts.js +68 -0
- package/dist/cloud/nexus-cloud-conflicts.js.map +1 -0
- package/dist/cloud/nexus-cloud-status.d.ts +42 -6
- package/dist/cloud/nexus-cloud-status.d.ts.map +1 -1
- package/dist/cloud/nexus-cloud-status.js +233 -19
- package/dist/cloud/nexus-cloud-status.js.map +1 -1
- package/dist/cloud/nexus-cloud.d.ts +18 -1
- package/dist/cloud/nexus-cloud.d.ts.map +1 -1
- package/dist/cloud/nexus-cloud.js +56 -2
- package/dist/cloud/nexus-cloud.js.map +1 -1
- package/dist/cloud/nexus-credentials.d.ts +1 -1
- package/dist/cloud/nexus-credentials.d.ts.map +1 -1
- package/dist/cloud/nexus-credentials.js +1 -1
- package/dist/cloud/nexus-credentials.js.map +1 -1
- package/dist/cloud/nexus-enrol.d.ts +1 -1
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +2 -1
- package/dist/cloud/nexus-enrol.js.map +1 -1
- package/dist/cloud/nexus-first-run.d.ts +6 -2
- package/dist/cloud/nexus-first-run.d.ts.map +1 -1
- package/dist/cloud/nexus-first-run.js +8 -2
- package/dist/cloud/nexus-first-run.js.map +1 -1
- package/dist/cloud/nexus-link.d.ts +35 -4
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +172 -7
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-presence-refresh.d.ts +65 -0
- package/dist/cloud/nexus-presence-refresh.d.ts.map +1 -0
- package/dist/cloud/nexus-presence-refresh.js +122 -0
- package/dist/cloud/nexus-presence-refresh.js.map +1 -0
- package/dist/cloud/nexus-project-history.d.ts +54 -0
- package/dist/cloud/nexus-project-history.d.ts.map +1 -0
- package/dist/cloud/nexus-project-history.js +108 -0
- package/dist/cloud/nexus-project-history.js.map +1 -0
- package/dist/cloud/nexus-vault-keys.d.ts.map +1 -1
- package/dist/cloud/nexus-vault-keys.js +12 -6
- package/dist/cloud/nexus-vault-keys.js.map +1 -1
- package/dist/cloud/nexus-vault.d.ts +7 -3
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +176 -29
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/cloud/presence.d.ts +1 -1
- package/dist/cloud/presence.d.ts.map +1 -1
- package/dist/cloud/presence.js +1 -1
- package/dist/cloud/presence.js.map +1 -1
- package/dist/cloud/projects.d.ts +7 -4
- package/dist/cloud/projects.d.ts.map +1 -1
- package/dist/cloud/projects.js +10 -1
- package/dist/cloud/projects.js.map +1 -1
- package/dist/cloud/signing.d.ts +14 -0
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +9 -0
- package/dist/cloud/signing.js.map +1 -1
- package/dist/conduit/cloud-endpoint.d.ts +96 -0
- package/dist/conduit/cloud-endpoint.d.ts.map +1 -0
- package/dist/conduit/cloud-endpoint.js +191 -0
- package/dist/conduit/cloud-endpoint.js.map +1 -0
- package/dist/conduit/conduit-client.d.ts.map +1 -1
- package/dist/conduit/conduit-client.js +2 -1
- package/dist/conduit/conduit-client.js.map +1 -1
- package/dist/conduit/factory.d.ts +4 -0
- package/dist/conduit/factory.d.ts.map +1 -1
- package/dist/conduit/factory.js +7 -1
- package/dist/conduit/factory.js.map +1 -1
- package/dist/conduit/http-transport.d.ts +12 -7
- package/dist/conduit/http-transport.d.ts.map +1 -1
- package/dist/conduit/http-transport.js +18 -11
- package/dist/conduit/http-transport.js.map +1 -1
- package/dist/conduit/index.d.ts +3 -1
- package/dist/conduit/index.d.ts.map +1 -1
- package/dist/conduit/index.js +3 -1
- package/dist/conduit/index.js.map +1 -1
- package/dist/conduit/sse-transport.d.ts +5 -1
- package/dist/conduit/sse-transport.d.ts.map +1 -1
- package/dist/conduit/sse-transport.js +10 -2
- package/dist/conduit/sse-transport.js.map +1 -1
- package/dist/config/registry.js +1 -1
- package/dist/config/registry.js.map +1 -1
- package/dist/core-paths.d.ts +13 -0
- package/dist/core-paths.d.ts.map +1 -0
- package/dist/core-paths.js +13 -0
- package/dist/core-paths.js.map +1 -0
- package/dist/decide/bench/source.js +1 -1
- package/dist/decide/bench/source.js.map +1 -1
- package/dist/decide/client.d.ts +1 -1
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +1 -1
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +1 -1
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +1 -1
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +1 -1
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +1 -1
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +1 -1
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +1 -1
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/providers.d.ts +1 -1
- package/dist/decide/providers.d.ts.map +1 -1
- package/dist/decide/providers.js +1 -1
- package/dist/decide/providers.js.map +1 -1
- package/dist/decide/wizard.d.ts.map +1 -1
- package/dist/decide/wizard.js +1 -1
- package/dist/decide/wizard.js.map +1 -1
- package/dist/dispatch/config-domain-handler.d.ts +1 -1
- package/dist/dispatch/config-domain-handler.d.ts.map +1 -1
- package/dist/dispatch/config-domain-handler.js +1 -1
- package/dist/dispatch/config-domain-handler.js.map +1 -1
- package/dist/dispatch/contracts/ensures-schema.d.ts +1 -1
- package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -1
- package/dist/dispatch/contracts/ensures-schema.js +1 -1
- package/dist/dispatch/contracts/ensures-schema.js.map +1 -1
- package/dist/dispatch/contracts/input-contracts.d.ts +1 -1
- package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
- package/dist/dispatch/contracts/input-contracts.js +3 -1
- package/dist/dispatch/contracts/input-contracts.js.map +1 -1
- package/dist/dispatch/describe-operation.d.ts +1 -1
- package/dist/dispatch/describe-operation.d.ts.map +1 -1
- package/dist/dispatch/describe-operation.js +1 -1
- package/dist/dispatch/describe-operation.js.map +1 -1
- package/dist/docs/display-alias.js +1 -1
- package/dist/docs/display-alias.js.map +1 -1
- package/dist/docs/docs-update.d.ts +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +2 -1
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/export-document.js +14 -58300
- package/dist/docs/export-document.js.map +3 -3
- package/dist/docs/publish-pr.js +1 -1
- package/dist/docs/publish-pr.js.map +1 -1
- package/dist/docs/supersede.js +1 -1
- package/dist/docs/supersede.js.map +1 -1
- package/dist/docs/validate-body.d.ts +1 -1
- package/dist/docs/validate-body.d.ts.map +1 -1
- package/dist/docs/validate-body.js +1 -1
- package/dist/docs/validate-body.js.map +1 -1
- package/dist/docs/writer-registry.js +1 -1
- package/dist/docs/writer-registry.js.map +1 -1
- package/dist/doctor/acceptance-drift.js +1 -1
- package/dist/doctor/acceptance-drift.js.map +1 -1
- package/dist/doctor/db-substrate.d.ts +1 -1
- package/dist/doctor/db-substrate.d.ts.map +1 -1
- package/dist/doctor/db-substrate.js +1 -1
- package/dist/doctor/db-substrate.js.map +1 -1
- package/dist/doctor/invariant-audit.js +1 -1
- package/dist/doctor/invariant-audit.js.map +1 -1
- package/dist/doctor/malformed-task-ids.js +1 -1
- package/dist/doctor/malformed-task-ids.js.map +1 -1
- package/dist/doctor/row-identity-refill.d.ts +43 -0
- package/dist/doctor/row-identity-refill.d.ts.map +1 -0
- package/dist/doctor/row-identity-refill.js +186 -0
- package/dist/doctor/row-identity-refill.js.map +1 -0
- package/dist/doctor/superseded-store.d.ts.map +1 -1
- package/dist/doctor/superseded-store.js +51 -2
- package/dist/doctor/superseded-store.js.map +1 -1
- package/dist/doctor/sync-repair.d.ts +39 -0
- package/dist/doctor/sync-repair.d.ts.map +1 -0
- package/dist/doctor/sync-repair.js +71 -0
- package/dist/doctor/sync-repair.js.map +1 -0
- package/dist/doctor/sync-triggers.d.ts +63 -4
- package/dist/doctor/sync-triggers.d.ts.map +1 -1
- package/dist/doctor/sync-triggers.js +352 -9
- package/dist/doctor/sync-triggers.js.map +1 -1
- package/dist/doctor/twin-collapse.js +1 -1
- package/dist/doctor/twin-collapse.js.map +1 -1
- package/dist/engine/engine-ops.d.ts.map +1 -1
- package/dist/engine/engine-ops.js +7 -1
- package/dist/engine/engine-ops.js.map +1 -1
- package/dist/engine-result.d.ts +1 -1
- package/dist/engine-result.d.ts.map +1 -1
- package/dist/engine-result.js +1 -1
- package/dist/engine-result.js.map +1 -1
- package/dist/error-registry.d.ts +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +1 -1
- package/dist/error-registry.js.map +1 -1
- package/dist/errors-to-engine.d.ts +20 -0
- package/dist/errors-to-engine.d.ts.map +1 -1
- package/dist/errors-to-engine.js +37 -0
- package/dist/errors-to-engine.js.map +1 -1
- package/dist/gc/janitor.d.ts +23 -4
- package/dist/gc/janitor.d.ts.map +1 -1
- package/dist/gc/janitor.js +71 -11
- package/dist/gc/janitor.js.map +1 -1
- package/dist/goal/continuation.d.ts +1 -1
- package/dist/goal/continuation.d.ts.map +1 -1
- package/dist/goal/continuation.js +1 -1
- package/dist/goal/continuation.js.map +1 -1
- package/dist/goal/judge.d.ts.map +1 -1
- package/dist/goal/judge.js +2 -1
- package/dist/goal/judge.js.map +1 -1
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +1 -1
- package/dist/hooks/handlers/session-hooks.js.map +1 -1
- package/dist/init/engine-ops.js +1 -1
- package/dist/init/engine-ops.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +10 -41
- package/dist/init.js.map +1 -1
- package/dist/inject/index.js +1 -1
- package/dist/inject/index.js.map +1 -1
- package/dist/injection.d.ts.map +1 -1
- package/dist/injection.js +13 -0
- package/dist/injection.js.map +1 -1
- package/dist/internal.d.ts +4 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +7 -4
- package/dist/internal.js.map +1 -1
- package/dist/issue/create.js +1 -1
- package/dist/issue/create.js.map +1 -1
- package/dist/json-schema-validator.js +1 -1
- package/dist/json-schema-validator.js.map +1 -1
- package/dist/lifecycle/index.d.ts +2 -23
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +5 -112
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/kind-requirements.d.ts +1 -1
- package/dist/lifecycle/kind-requirements.d.ts.map +1 -1
- package/dist/lifecycle/kind-requirements.js +1 -1
- package/dist/lifecycle/kind-requirements.js.map +1 -1
- package/dist/lifecycle/pipeline.js +1 -1
- package/dist/lifecycle/pipeline.js.map +1 -1
- package/dist/lifecycle/resume.js +2 -2
- package/dist/lifecycle/resume.js.map +1 -1
- package/dist/lifecycle/state-machine.js +1 -1
- package/dist/lifecycle/state-machine.js.map +1 -1
- package/dist/lifecycle/status.d.ts +46 -0
- package/dist/lifecycle/status.d.ts.map +1 -0
- package/dist/lifecycle/status.js +147 -0
- package/dist/lifecycle/status.js.map +1 -0
- package/dist/lifecycle/verification/satisfies-validator.js +1 -1
- package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
- package/dist/llm/catalog-seeder.d.ts +1 -1
- package/dist/llm/catalog-seeder.d.ts.map +1 -1
- package/dist/llm/catalog-seeder.js +1 -1
- package/dist/llm/catalog-seeder.js.map +1 -1
- package/dist/llm/cli-ops.d.ts +1 -2
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +2 -1
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/credential-seeders/claude-code-seeder.js +1 -1
- package/dist/llm/credential-seeders/claude-code-seeder.js.map +1 -1
- package/dist/llm/credential-seeders/cleo-pkce-seeder.js +1 -1
- package/dist/llm/credential-seeders/cleo-pkce-seeder.js.map +1 -1
- package/dist/llm/credential-writeback.js +1 -1
- package/dist/llm/credential-writeback.js.map +1 -1
- package/dist/llm/entity-ops.d.ts +1 -1
- package/dist/llm/entity-ops.d.ts.map +1 -1
- package/dist/llm/entity-ops.js +2 -1
- package/dist/llm/entity-ops.js.map +1 -1
- package/dist/llm/llm-queue-admit.d.ts +1 -1
- package/dist/llm/llm-queue-admit.d.ts.map +1 -1
- package/dist/llm/llm-queue-admit.js +2 -1
- package/dist/llm/llm-queue-admit.js.map +1 -1
- package/dist/llm/onboarding/login-engine.js +1 -1
- package/dist/llm/onboarding/login-engine.js.map +1 -1
- package/dist/llm/pi/pi-errors.d.ts +1 -1
- package/dist/llm/pi/pi-errors.d.ts.map +1 -1
- package/dist/llm/pi/pi-errors.js +1 -1
- package/dist/llm/pi/pi-errors.js.map +1 -1
- package/dist/llm/plugin-facade.d.ts.map +1 -1
- package/dist/llm/plugin-facade.js +14 -93552
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/system-key.d.ts +1 -1
- package/dist/llm/system-key.d.ts.map +1 -1
- package/dist/llm/system-key.js +1 -1
- package/dist/llm/system-key.js.map +1 -1
- package/dist/llm/system-of-use-registry.d.ts +1 -1
- package/dist/llm/system-of-use-registry.d.ts.map +1 -1
- package/dist/llm/system-of-use-registry.js +1 -1
- package/dist/llm/system-of-use-registry.js.map +1 -1
- package/dist/llm/system-resolver.js +1 -1
- package/dist/llm/system-resolver.js.map +1 -1
- package/dist/memory/brain-host.d.ts +71 -0
- package/dist/memory/brain-host.d.ts.map +1 -0
- package/dist/memory/brain-host.js +84 -0
- package/dist/memory/brain-host.js.map +1 -0
- package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
- package/dist/memory/brain-writer-handlers.js +24 -7
- package/dist/memory/brain-writer-handlers.js.map +1 -1
- package/dist/memory/brain-writer-thread.d.ts +66 -6
- package/dist/memory/brain-writer-thread.d.ts.map +1 -1
- package/dist/memory/brain-writer-thread.js +67 -10
- package/dist/memory/brain-writer-thread.js.map +1 -1
- package/dist/memory/brain-writer-worker.js +7 -0
- package/dist/memory/brain-writer-worker.js.map +1 -1
- package/dist/memory/decisions.js +2 -1
- package/dist/memory/decisions.js.map +1 -1
- package/dist/memory/embedding-backfill.d.ts +70 -0
- package/dist/memory/embedding-backfill.d.ts.map +1 -0
- package/dist/memory/embedding-backfill.js +110 -0
- package/dist/memory/embedding-backfill.js.map +1 -0
- package/dist/memory/index.js +1 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/manifest-identity.js +1 -1
- package/dist/memory/manifest-identity.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts +23 -0
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +82 -36
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/metrics/model-provider-registry.d.ts.map +1 -1
- package/dist/metrics/model-provider-registry.js +6 -0
- package/dist/metrics/model-provider-registry.js.map +1 -1
- package/dist/metrics/token-service.d.ts +17 -0
- package/dist/metrics/token-service.d.ts.map +1 -1
- package/dist/metrics/token-service.js +17 -0
- package/dist/metrics/token-service.js.map +1 -1
- package/dist/migration/index.js +1 -1
- package/dist/migration/index.js.map +1 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js +1 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
- package/dist/nexus/assessment-projection.d.ts +1 -1
- package/dist/nexus/assessment-projection.d.ts.map +1 -1
- package/dist/nexus/assessment-projection.js +1 -1
- package/dist/nexus/assessment-projection.js.map +1 -1
- package/dist/nexus/deps.d.ts +1 -1
- package/dist/nexus/deps.d.ts.map +1 -1
- package/dist/nexus/deps.js +1 -1
- package/dist/nexus/deps.js.map +1 -1
- package/dist/nexus/fleet-status.d.ts +1 -1
- package/dist/nexus/fleet-status.d.ts.map +1 -1
- package/dist/nexus/fleet-status.js +1 -1
- package/dist/nexus/fleet-status.js.map +1 -1
- package/dist/nexus/identity.js +1 -1
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/permissions.d.ts +1 -1
- package/dist/nexus/permissions.d.ts.map +1 -1
- package/dist/nexus/permissions.js +1 -1
- package/dist/nexus/permissions.js.map +1 -1
- package/dist/nexus/query-dsl.js +1 -1
- package/dist/nexus/query-dsl.js.map +1 -1
- package/dist/nexus/query.d.ts +1 -2
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +1 -1
- package/dist/nexus/query.js.map +1 -1
- package/dist/nexus/registry-errors.js +1 -1
- package/dist/nexus/registry-errors.js.map +1 -1
- package/dist/nexus/registry.d.ts +1 -1
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +1 -1
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/workspace.js +1 -1
- package/dist/nexus/workspace.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +2 -1
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/query-ops.js +1 -1
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.js +1 -1
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/atomicity.d.ts +1 -1
- package/dist/orchestration/atomicity.d.ts.map +1 -1
- package/dist/orchestration/atomicity.js +1 -1
- package/dist/orchestration/atomicity.js.map +1 -1
- package/dist/orchestration/classify.js +1 -1
- package/dist/orchestration/classify.js.map +1 -1
- package/dist/orchestration/index.js +1 -1
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/parallel.js +1 -1
- package/dist/orchestration/parallel.js.map +1 -1
- package/dist/orchestration/protocol-validators.d.ts +1 -1
- package/dist/orchestration/protocol-validators.d.ts.map +1 -1
- package/dist/orchestration/protocol-validators.js +1 -1
- package/dist/orchestration/protocol-validators.js.map +1 -1
- package/dist/orchestration/skill-ops.js +1 -1
- package/dist/orchestration/skill-ops.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +9 -0
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +13 -2
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/spawn.js +1 -1
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/paths.d.ts +3 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +3 -1
- package/dist/paths.js.map +1 -1
- package/dist/phases/deps.js +1 -1
- package/dist/phases/deps.js.map +1 -1
- package/dist/phases/index.js +1 -1
- package/dist/phases/index.js.map +1 -1
- package/dist/project-lifecycle.js +3 -3
- package/dist/project-lifecycle.js.map +1 -1
- package/dist/registrations.d.ts +30 -0
- package/dist/registrations.d.ts.map +1 -0
- package/dist/registrations.js +30 -0
- package/dist/registrations.js.map +1 -0
- package/dist/release/changesets-aggregator.js +1 -1
- package/dist/release/changesets-aggregator.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +68 -2
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +203 -39
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/invariants/archive-reason-invariant.d.ts +1 -1
- package/dist/release/invariants/archive-reason-invariant.d.ts.map +1 -1
- package/dist/release/invariants/archive-reason-invariant.js +1 -1
- package/dist/release/invariants/archive-reason-invariant.js.map +1 -1
- package/dist/release/invariants/registry.d.ts +1 -1
- package/dist/release/invariants/registry.d.ts.map +1 -1
- package/dist/release/invariants/registry.js +1 -1
- package/dist/release/invariants/registry.js.map +1 -1
- package/dist/release/open.d.ts +1 -1
- package/dist/release/open.d.ts.map +1 -1
- package/dist/release/open.js +3 -1
- package/dist/release/open.js.map +1 -1
- package/dist/release/plan.d.ts +1 -2
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +4 -1
- package/dist/release/plan.js.map +1 -1
- package/dist/release/pr-evidence.d.ts +1 -1
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +2 -2
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/release/preflight-skip.d.ts +5 -0
- package/dist/release/preflight-skip.d.ts.map +1 -1
- package/dist/release/preflight-skip.js +60 -1
- package/dist/release/preflight-skip.js.map +1 -1
- package/dist/release/reconcile.d.ts +1 -1
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +19 -3
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/version-bump.d.ts +1 -1
- package/dist/release/version-bump.d.ts.map +1 -1
- package/dist/release/version-bump.js +1 -1
- package/dist/release/version-bump.js.map +1 -1
- package/dist/resources/admission-ledger.d.ts +587 -0
- package/dist/resources/admission-ledger.d.ts.map +1 -0
- package/dist/resources/admission-ledger.js +1401 -0
- package/dist/resources/admission-ledger.js.map +1 -0
- package/dist/resources/backend.d.ts +37 -1
- package/dist/resources/backend.d.ts.map +1 -1
- package/dist/resources/backend.js +1 -1
- package/dist/resources/darwin-backend.d.ts +152 -26
- package/dist/resources/darwin-backend.d.ts.map +1 -1
- package/dist/resources/darwin-backend.js +217 -34
- package/dist/resources/darwin-backend.js.map +1 -1
- package/dist/resources/governor.d.ts +36 -39
- package/dist/resources/governor.d.ts.map +1 -1
- package/dist/resources/governor.js +140 -49
- package/dist/resources/governor.js.map +1 -1
- package/dist/resources/pressure-gate.d.ts +148 -0
- package/dist/resources/pressure-gate.d.ts.map +1 -0
- package/dist/resources/pressure-gate.js +273 -0
- package/dist/resources/pressure-gate.js.map +1 -0
- package/dist/resources/run-admission.d.ts +33 -45
- package/dist/resources/run-admission.d.ts.map +1 -1
- package/dist/resources/run-admission.js +50 -118
- package/dist/resources/run-admission.js.map +1 -1
- package/dist/resources/run-class.d.ts +60 -4
- package/dist/resources/run-class.d.ts.map +1 -1
- package/dist/resources/run-class.js +473 -6
- package/dist/resources/run-class.js.map +1 -1
- package/dist/resources/run-governed.d.ts +43 -11
- package/dist/resources/run-governed.d.ts.map +1 -1
- package/dist/resources/run-governed.js +139 -99
- package/dist/resources/run-governed.js.map +1 -1
- package/dist/resources/slot-holder.d.ts +12 -4
- package/dist/resources/slot-holder.d.ts.map +1 -1
- package/dist/resources/slot-holder.js +19 -14
- package/dist/resources/slot-holder.js.map +1 -1
- package/dist/resources/spawn-wrapper.js +1 -1
- package/dist/resources/spawn-wrapper.js.map +1 -1
- package/dist/resources/supervisor-admit.d.ts +1 -1
- package/dist/resources/supervisor-admit.d.ts.map +1 -1
- package/dist/resources/supervisor-admit.js +2 -1
- package/dist/resources/supervisor-admit.js.map +1 -1
- package/dist/runtime/openapi/generate-openapi.d.ts +1 -1
- package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -1
- package/dist/runtime/openapi/generate-openapi.js +1 -1
- package/dist/runtime/openapi/generate-openapi.js.map +1 -1
- package/dist/sagas/index.d.ts +3 -1
- package/dist/sagas/index.d.ts.map +1 -1
- package/dist/sagas/index.js +2 -5
- package/dist/sagas/index.js.map +1 -1
- package/dist/scaffold/project-identity.js +1 -1
- package/dist/scaffold/project-identity.js.map +1 -1
- package/dist/sdk/validator-attest.d.ts +1 -1
- package/dist/sdk/validator-attest.d.ts.map +1 -1
- package/dist/sdk/validator-attest.js +1 -1
- package/dist/sdk/validator-attest.js.map +1 -1
- package/dist/sdk/validator-reject.d.ts +1 -1
- package/dist/sdk/validator-reject.d.ts.map +1 -1
- package/dist/sdk/validator-reject.js +1 -1
- package/dist/sdk/validator-reject.js.map +1 -1
- package/dist/security/input-sanitization.js +2 -1
- package/dist/security/input-sanitization.js.map +1 -1
- package/dist/security/override-cap.js +1 -1
- package/dist/security/override-cap.js.map +1 -1
- package/dist/security/owner-override-auth.js +1 -1
- package/dist/security/owner-override-auth.js.map +1 -1
- package/dist/security/shared-evidence-tracker.js +1 -1
- package/dist/security/shared-evidence-tracker.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +35 -93037
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/daemon.d.ts.map +1 -1
- package/dist/sentient/daemon.js +3 -0
- package/dist/sentient/daemon.js.map +1 -1
- package/dist/sentient/tick.d.ts +7 -0
- package/dist/sentient/tick.d.ts.map +1 -1
- package/dist/sentient/tick.js +11 -0
- package/dist/sentient/tick.js.map +1 -1
- package/dist/sequence/index.js +1 -1
- package/dist/sequence/index.js.map +1 -1
- package/dist/session/engine-ops.d.ts +3 -45
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +63 -112
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/session/status-op.d.ts +40 -0
- package/dist/session/status-op.d.ts.map +1 -0
- package/dist/session/status-op.js +71 -0
- package/dist/session/status-op.js.map +1 -0
- package/dist/session/task-current.d.ts +31 -0
- package/dist/session/task-current.d.ts.map +1 -0
- package/dist/session/task-current.js +59 -0
- package/dist/session/task-current.js.map +1 -0
- package/dist/sessions/assumptions.d.ts +1 -1
- package/dist/sessions/assumptions.d.ts.map +1 -1
- package/dist/sessions/assumptions.js +1 -1
- package/dist/sessions/assumptions.js.map +1 -1
- package/dist/sessions/context-inject.js +1 -1
- package/dist/sessions/context-inject.js.map +1 -1
- package/dist/sessions/decisions.d.ts +1 -1
- package/dist/sessions/decisions.d.ts.map +1 -1
- package/dist/sessions/decisions.js +1 -1
- package/dist/sessions/decisions.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +2 -1
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/handoff.js +1 -1
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts +1 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +3 -2
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/session-drift.js +1 -1
- package/dist/sessions/session-drift.js.map +1 -1
- package/dist/sessions/session-end-snapshot-entry.d.ts +4 -0
- package/dist/sessions/session-end-snapshot-entry.d.ts.map +1 -1
- package/dist/sessions/session-end-snapshot-entry.js +11 -0
- package/dist/sessions/session-end-snapshot-entry.js.map +1 -1
- package/dist/sessions/session-end-snapshot.d.ts.map +1 -1
- package/dist/sessions/session-end-snapshot.js +4 -0
- package/dist/sessions/session-end-snapshot.js.map +1 -1
- package/dist/sessions/session-enforcement.js +1 -1
- package/dist/sessions/session-enforcement.js.map +1 -1
- package/dist/sessions/session-show.d.ts +1 -2
- package/dist/sessions/session-show.d.ts.map +1 -1
- package/dist/sessions/session-show.js +1 -1
- package/dist/sessions/session-show.js.map +1 -1
- package/dist/sessions/session-stats.js +1 -1
- package/dist/sessions/session-stats.js.map +1 -1
- package/dist/sessions/session-suspend.d.ts +1 -2
- package/dist/sessions/session-suspend.d.ts.map +1 -1
- package/dist/sessions/session-suspend.js +1 -1
- package/dist/sessions/session-suspend.js.map +1 -1
- package/dist/sessions/session-switch.js +1 -1
- package/dist/sessions/session-switch.js.map +1 -1
- package/dist/sessions/snapshot.js +1 -1
- package/dist/sessions/snapshot.js.map +1 -1
- package/dist/sessions/terminal-identity.d.ts +1 -1
- package/dist/sessions/terminal-identity.d.ts.map +1 -1
- package/dist/sessions/terminal-identity.js +1 -1
- package/dist/sessions/terminal-identity.js.map +1 -1
- package/dist/setup/sections/integrations.d.ts.map +1 -1
- package/dist/setup/sections/integrations.js +9 -0
- package/dist/setup/sections/integrations.js.map +1 -1
- package/dist/setup/sections/models-roles.js +1 -1
- package/dist/setup/sections/models-roles.js.map +1 -1
- package/dist/setup/sections/verification.d.ts.map +1 -1
- package/dist/setup/sections/verification.js +8 -2
- package/dist/setup/sections/verification.js.map +1 -1
- package/dist/shutdown.d.ts +24 -0
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +30 -1
- package/dist/shutdown.js.map +1 -1
- package/dist/skills/agents/install.d.ts +46 -6
- package/dist/skills/agents/install.d.ts.map +1 -1
- package/dist/skills/agents/install.js +86 -17
- package/dist/skills/agents/install.js.map +1 -1
- package/dist/skills/injection/subagent.js +1 -1
- package/dist/skills/injection/subagent.js.map +1 -1
- package/dist/skills/manifests/research.d.ts.map +1 -1
- package/dist/skills/manifests/research.js +2 -1
- package/dist/skills/manifests/research.js.map +1 -1
- package/dist/skills/orchestrator/spawn.js +1 -1
- package/dist/skills/orchestrator/spawn.js.map +1 -1
- package/dist/skills/orchestrator/validator.js +1 -1
- package/dist/skills/orchestrator/validator.js.map +1 -1
- package/dist/snapshot/index.d.ts.map +1 -1
- package/dist/snapshot/index.js +13 -0
- package/dist/snapshot/index.js.map +1 -1
- package/dist/spawn/agent-identity.js +1 -1
- package/dist/spawn/agent-identity.js.map +1 -1
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +2 -1
- package/dist/stats/index.js.map +1 -1
- package/dist/store/agent-install.d.ts.map +1 -1
- package/dist/store/agent-install.js +2 -1
- package/dist/store/agent-install.js.map +1 -1
- package/dist/store/agent-registry-accessor.d.ts +1 -0
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +3 -1
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/atomic.js +1 -1
- package/dist/store/atomic.js.map +1 -1
- package/dist/store/attachment-store.js +1 -1
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/audit-log-schema.d.ts +645 -0
- package/dist/store/audit-log-schema.d.ts.map +1 -0
- package/dist/store/audit-log-schema.js +30 -0
- package/dist/store/audit-log-schema.js.map +1 -0
- package/dist/store/background-ops.d.ts +26 -0
- package/dist/store/background-ops.d.ts.map +1 -1
- package/dist/store/background-ops.js +46 -0
- package/dist/store/background-ops.js.map +1 -1
- package/dist/store/backup-recover.d.ts +36 -1
- package/dist/store/backup-recover.d.ts.map +1 -1
- package/dist/store/backup-recover.js +99 -1
- package/dist/store/backup-recover.js.map +1 -1
- package/dist/store/backup-verify.d.ts +1 -1
- package/dist/store/backup-verify.d.ts.map +1 -1
- package/dist/store/backup-verify.js +6 -1
- package/dist/store/backup-verify.js.map +1 -1
- package/dist/store/backup.js +1 -1
- package/dist/store/backup.js.map +1 -1
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +2 -26
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/converters.js +1 -1
- package/dist/store/converters.js.map +1 -1
- package/dist/store/db-helpers.js +1 -1
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/dependency-cycles.js +1 -1
- package/dist/store/dependency-cycles.js.map +1 -1
- package/dist/store/display-id-alias.d.ts +2 -2
- package/dist/store/display-id-alias.d.ts.map +1 -1
- package/dist/store/display-id-alias.js +5 -28
- package/dist/store/display-id-alias.js.map +1 -1
- package/dist/store/drizzle-node-sqlite.d.ts +56 -0
- package/dist/store/drizzle-node-sqlite.d.ts.map +1 -0
- package/dist/store/drizzle-node-sqlite.js +87 -0
- package/dist/store/drizzle-node-sqlite.js.map +1 -0
- package/dist/store/dual-scope-db.d.ts +26 -33
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +416 -127
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/abort-events.d.ts +134 -0
- package/dist/store/exodus/abort-events.d.ts.map +1 -1
- package/dist/store/exodus/abort-events.js +201 -0
- package/dist/store/exodus/abort-events.js.map +1 -1
- package/dist/store/exodus/migrate.d.ts +7 -0
- package/dist/store/exodus/migrate.d.ts.map +1 -1
- package/dist/store/exodus/migrate.js +156 -118
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/exodus/on-open.d.ts +36 -0
- package/dist/store/exodus/on-open.d.ts.map +1 -1
- package/dist/store/exodus/on-open.js +102 -27
- package/dist/store/exodus/on-open.js.map +1 -1
- package/dist/store/exodus/prior-recoveries.d.ts +75 -0
- package/dist/store/exodus/prior-recoveries.d.ts.map +1 -0
- package/dist/store/exodus/prior-recoveries.js +122 -0
- package/dist/store/exodus/prior-recoveries.js.map +1 -0
- package/dist/store/exodus/reconcile.d.ts.map +1 -1
- package/dist/store/exodus/reconcile.js +188 -24
- package/dist/store/exodus/reconcile.js.map +1 -1
- package/dist/store/exodus/runtime-targets.d.ts +3 -3
- package/dist/store/exodus/runtime-targets.js +3 -3
- package/dist/store/exodus/task-id-collision-sql.d.ts +52 -0
- package/dist/store/exodus/task-id-collision-sql.d.ts.map +1 -0
- package/dist/store/exodus/task-id-collision-sql.js +97 -0
- package/dist/store/exodus/task-id-collision-sql.js.map +1 -0
- package/dist/store/exodus/task-id-remap.d.ts +113 -0
- package/dist/store/exodus/task-id-remap.d.ts.map +1 -0
- package/dist/store/exodus/task-id-remap.js +301 -0
- package/dist/store/exodus/task-id-remap.js.map +1 -0
- package/dist/store/exodus/verify-migration.js +1 -1
- package/dist/store/exodus/verify-migration.js.map +1 -1
- package/dist/store/exodus/write-guard.d.ts +136 -0
- package/dist/store/exodus/write-guard.d.ts.map +1 -0
- package/dist/store/exodus/write-guard.js +289 -0
- package/dist/store/exodus/write-guard.js.map +1 -0
- package/dist/store/identity-share.d.ts +31 -0
- package/dist/store/identity-share.d.ts.map +1 -0
- package/dist/store/identity-share.js +54 -0
- package/dist/store/identity-share.js.map +1 -0
- package/dist/store/import-remap.js +1 -1
- package/dist/store/import-remap.js.map +1 -1
- package/dist/store/import-sort.js +1 -1
- package/dist/store/import-sort.js.map +1 -1
- package/dist/store/json.js +1 -1
- package/dist/store/json.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +3 -3
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/lock.d.ts +17 -0
- package/dist/store/lock.d.ts.map +1 -1
- package/dist/store/lock.js +18 -1
- package/dist/store/lock.js.map +1 -1
- package/dist/store/memory-sqlite.d.ts.map +1 -1
- package/dist/store/memory-sqlite.js +2 -25
- package/dist/store/memory-sqlite.js.map +1 -1
- package/dist/store/migration-files.d.ts +30 -0
- package/dist/store/migration-files.d.ts.map +1 -0
- package/dist/store/migration-files.js +59 -0
- package/dist/store/migration-files.js.map +1 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +14 -14
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-runner.d.ts.map +1 -1
- package/dist/store/migration-runner.js +2 -2
- package/dist/store/migration-runner.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +290 -355
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/open-cleo-db.d.ts.map +1 -1
- package/dist/store/open-cleo-db.js +4 -2
- package/dist/store/open-cleo-db.js.map +1 -1
- package/dist/store/pid-alive.d.ts +15 -0
- package/dist/store/pid-alive.d.ts.map +1 -0
- package/dist/store/pid-alive.js +24 -0
- package/dist/store/pid-alive.js.map +1 -0
- package/dist/store/portable-bundle-scan.d.ts +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -1
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts +10 -1
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +10 -1
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/recover-malformed-db.d.ts +1 -1
- package/dist/store/recover-malformed-db.d.ts.map +1 -1
- package/dist/store/recover-malformed-db.js +1 -1
- package/dist/store/recover-malformed-db.js.map +1 -1
- package/dist/store/repair-malformed-dbs.d.ts +1 -1
- package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
- package/dist/store/repair-malformed-dbs.js +1 -1
- package/dist/store/repair-malformed-dbs.js.map +1 -1
- package/dist/store/restore-marker.d.ts +89 -0
- package/dist/store/restore-marker.d.ts.map +1 -0
- package/dist/store/restore-marker.js +197 -0
- package/dist/store/restore-marker.js.map +1 -0
- package/dist/store/restore-store.d.ts +85 -0
- package/dist/store/restore-store.d.ts.map +1 -0
- package/dist/store/restore-store.js +391 -0
- package/dist/store/restore-store.js.map +1 -0
- package/dist/store/row-identity.d.ts +123 -1
- package/dist/store/row-identity.d.ts.map +1 -1
- package/dist/store/row-identity.js +454 -80
- package/dist/store/row-identity.js.map +1 -1
- package/dist/store/schema/agent-registry-schema.d.ts +1 -1
- package/dist/store/schema/agent-registry-schema.d.ts.map +1 -1
- package/dist/store/schema/agent-registry-schema.js +5 -1
- package/dist/store/schema/agent-registry-schema.js.map +1 -1
- package/dist/store/schema/cleo-global/agent-registry.d.ts +1 -1
- package/dist/store/schema/cleo-global/agent-registry.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/agent-registry.js +9 -5
- package/dist/store/schema/cleo-global/agent-registry.js.map +1 -1
- package/dist/store/schema/cleo-global/models-catalog.js +1 -1
- package/dist/store/schema/cleo-global/models-catalog.js.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +1 -1
- package/dist/store/schema/cleo-global/nexus.js.map +1 -1
- package/dist/store/schema/cleo-project/provenance-commits.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-orphans.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-orphans.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/provenance-orphans.js +9 -2
- package/dist/store/schema/cleo-project/provenance-orphans.js.map +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.js +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.js +1 -1
- package/dist/store/schema/cleo-shared/brain.js.map +1 -1
- package/dist/store/schema/memory-schema.d.ts +1 -1
- package/dist/store/schema/memory-schema.d.ts.map +1 -1
- package/dist/store/schema/memory-schema.js +1 -1
- package/dist/store/schema/memory-schema.js.map +1 -1
- package/dist/store/schema/nexus-schema.js +1 -1
- package/dist/store/schema/nexus-schema.js.map +1 -1
- package/dist/store/service-host-matcher.d.ts +1 -1
- package/dist/store/service-host-matcher.d.ts.map +1 -1
- package/dist/store/service-host-matcher.js +1 -1
- package/dist/store/service-host-matcher.js.map +1 -1
- package/dist/store/service-oauth.js +1 -1
- package/dist/store/service-oauth.js.map +1 -1
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +7 -1
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sqlite-backup.d.ts +1 -1
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/sqlite-backup.js +1 -1
- package/dist/store/sqlite-backup.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +52 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +95 -22
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite-native.d.ts.map +1 -1
- package/dist/store/sqlite-native.js +9 -9
- package/dist/store/sqlite-native.js.map +1 -1
- package/dist/store/sqlite-pragmas.d.ts +12 -5
- package/dist/store/sqlite-pragmas.d.ts.map +1 -1
- package/dist/store/sqlite-pragmas.js +13 -2
- package/dist/store/sqlite-pragmas.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +7 -32
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/status-registry.d.ts +1 -1
- package/dist/store/status-registry.d.ts.map +1 -1
- package/dist/store/status-registry.js +1 -1
- package/dist/store/status-registry.js.map +1 -1
- package/dist/store/sync/apply/applier.d.ts +119 -0
- package/dist/store/sync/apply/applier.d.ts.map +1 -0
- package/dist/store/sync/apply/applier.js +1239 -0
- package/dist/store/sync/apply/applier.js.map +1 -0
- package/dist/store/sync/apply/fk.d.ts +47 -0
- package/dist/store/sync/apply/fk.d.ts.map +1 -0
- package/dist/store/sync/apply/fk.js +89 -0
- package/dist/store/sync/apply/fk.js.map +1 -0
- package/dist/store/sync/apply/footprints.d.ts +60 -0
- package/dist/store/sync/apply/footprints.d.ts.map +1 -0
- package/dist/store/sync/apply/footprints.js +235 -0
- package/dist/store/sync/apply/footprints.js.map +1 -0
- package/dist/store/sync/apply/frame.d.ts +80 -0
- package/dist/store/sync/apply/frame.d.ts.map +1 -0
- package/dist/store/sync/apply/frame.js +127 -0
- package/dist/store/sync/apply/frame.js.map +1 -0
- package/dist/store/sync/apply/index.d.ts +11 -0
- package/dist/store/sync/apply/index.d.ts.map +1 -0
- package/dist/store/sync/apply/index.js +11 -0
- package/dist/store/sync/apply/index.js.map +1 -0
- package/dist/store/sync/apply/parent-delete.d.ts +38 -0
- package/dist/store/sync/apply/parent-delete.d.ts.map +1 -0
- package/dist/store/sync/apply/parent-delete.js +41 -0
- package/dist/store/sync/apply/parent-delete.js.map +1 -0
- package/dist/store/sync/apply/post-apply.d.ts +67 -0
- package/dist/store/sync/apply/post-apply.d.ts.map +1 -0
- package/dist/store/sync/apply/post-apply.js +118 -0
- package/dist/store/sync/apply/post-apply.js.map +1 -0
- package/dist/store/sync/apply/refs.d.ts +60 -0
- package/dist/store/sync/apply/refs.d.ts.map +1 -0
- package/dist/store/sync/apply/refs.js +90 -0
- package/dist/store/sync/apply/refs.js.map +1 -0
- package/dist/store/sync/apply/write-api.d.ts +195 -0
- package/dist/store/sync/apply/write-api.d.ts.map +1 -0
- package/dist/store/sync/apply/write-api.js +416 -0
- package/dist/store/sync/apply/write-api.js.map +1 -0
- package/dist/store/sync/apply-intent.d.ts +117 -0
- package/dist/store/sync/apply-intent.d.ts.map +1 -0
- package/dist/store/sync/apply-intent.js +225 -0
- package/dist/store/sync/apply-intent.js.map +1 -0
- package/dist/store/sync/capture.d.ts +32 -2
- package/dist/store/sync/capture.d.ts.map +1 -1
- package/dist/store/sync/capture.js +47 -13
- package/dist/store/sync/capture.js.map +1 -1
- package/dist/store/sync/conflicts.d.ts +81 -0
- package/dist/store/sync/conflicts.d.ts.map +1 -0
- package/dist/store/sync/conflicts.js +98 -0
- package/dist/store/sync/conflicts.js.map +1 -0
- package/dist/store/sync/field-leave.d.ts +146 -0
- package/dist/store/sync/field-leave.d.ts.map +1 -0
- package/dist/store/sync/field-leave.js +241 -0
- package/dist/store/sync/field-leave.js.map +1 -0
- package/dist/store/sync/flags.d.ts +119 -0
- package/dist/store/sync/flags.d.ts.map +1 -1
- package/dist/store/sync/flags.js +360 -0
- package/dist/store/sync/flags.js.map +1 -1
- package/dist/store/sync/held.d.ts +197 -0
- package/dist/store/sync/held.d.ts.map +1 -0
- package/dist/store/sync/held.js +314 -0
- package/dist/store/sync/held.js.map +1 -0
- package/dist/store/sync/identity-fill.d.ts.map +1 -1
- package/dist/store/sync/identity-fill.js +10 -2
- package/dist/store/sync/identity-fill.js.map +1 -1
- package/dist/store/sync/inbox.d.ts +114 -0
- package/dist/store/sync/inbox.d.ts.map +1 -0
- package/dist/store/sync/inbox.js +222 -0
- package/dist/store/sync/inbox.js.map +1 -0
- package/dist/store/sync/inherit.d.ts +36 -0
- package/dist/store/sync/inherit.d.ts.map +1 -0
- package/dist/store/sync/inherit.js +38 -0
- package/dist/store/sync/inherit.js.map +1 -0
- package/dist/store/sync/merge/engine.d.ts +114 -0
- package/dist/store/sync/merge/engine.d.ts.map +1 -0
- package/dist/store/sync/merge/engine.js +698 -0
- package/dist/store/sync/merge/engine.js.map +1 -0
- package/dist/store/sync/merge/index.d.ts +11 -0
- package/dist/store/sync/merge/index.d.ts.map +1 -0
- package/dist/store/sync/merge/index.js +11 -0
- package/dist/store/sync/merge/index.js.map +1 -0
- package/dist/store/sync/merge/rules.d.ts +91 -0
- package/dist/store/sync/merge/rules.d.ts.map +1 -0
- package/dist/store/sync/merge/rules.js +151 -0
- package/dist/store/sync/merge/rules.js.map +1 -0
- package/dist/store/sync/merge/types.d.ts +206 -0
- package/dist/store/sync/merge/types.d.ts.map +1 -0
- package/dist/store/sync/merge/types.js +15 -0
- package/dist/store/sync/merge/types.js.map +1 -0
- package/dist/store/sync/migration-hooks.d.ts +47 -0
- package/dist/store/sync/migration-hooks.d.ts.map +1 -0
- package/dist/store/sync/migration-hooks.js +74 -0
- package/dist/store/sync/migration-hooks.js.map +1 -0
- package/dist/store/sync/netting.d.ts +5 -0
- package/dist/store/sync/netting.d.ts.map +1 -1
- package/dist/store/sync/netting.js +29 -2
- package/dist/store/sync/netting.js.map +1 -1
- package/dist/store/sync/remap.d.ts +72 -0
- package/dist/store/sync/remap.d.ts.map +1 -0
- package/dist/store/sync/remap.js +209 -0
- package/dist/store/sync/remap.js.map +1 -0
- package/dist/store/sync/repair.d.ts +180 -0
- package/dist/store/sync/repair.d.ts.map +1 -0
- package/dist/store/sync/repair.js +499 -0
- package/dist/store/sync/repair.js.map +1 -0
- package/dist/store/sync/replica-registry.d.ts +54 -0
- package/dist/store/sync/replica-registry.d.ts.map +1 -1
- package/dist/store/sync/replica-registry.js +72 -2
- package/dist/store/sync/replica-registry.js.map +1 -1
- package/dist/store/sync/replica.d.ts +71 -9
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +95 -11
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/row-meta.d.ts +148 -0
- package/dist/store/sync/row-meta.d.ts.map +1 -0
- package/dist/store/sync/row-meta.js +200 -0
- package/dist/store/sync/row-meta.js.map +1 -0
- package/dist/store/sync/schema.d.ts +13 -5
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +34 -7
- package/dist/store/sync/schema.js.map +1 -1
- package/dist/store/sync/sealer-values.d.ts.map +1 -1
- package/dist/store/sync/sealer-values.js +1 -0
- package/dist/store/sync/sealer-values.js.map +1 -1
- package/dist/store/sync/sealer.d.ts +96 -0
- package/dist/store/sync/sealer.d.ts.map +1 -1
- package/dist/store/sync/sealer.js +532 -58
- package/dist/store/sync/sealer.js.map +1 -1
- package/dist/store/sync/sequencing.d.ts +175 -0
- package/dist/store/sync/sequencing.d.ts.map +1 -0
- package/dist/store/sync/sequencing.js +295 -0
- package/dist/store/sync/sequencing.js.map +1 -0
- package/dist/store/sync/structural.d.ts +30 -2
- package/dist/store/sync/structural.d.ts.map +1 -1
- package/dist/store/sync/structural.js +64 -2
- package/dist/store/sync/structural.js.map +1 -1
- package/dist/store/sync/timestamp-canon.d.ts +44 -0
- package/dist/store/sync/timestamp-canon.d.ts.map +1 -0
- package/dist/store/sync/timestamp-canon.js +102 -0
- package/dist/store/sync/timestamp-canon.js.map +1 -0
- package/dist/store/sync/timestamps.d.ts +1 -30
- package/dist/store/sync/timestamps.d.ts.map +1 -1
- package/dist/store/sync/timestamps.js +2 -89
- package/dist/store/sync/timestamps.js.map +1 -1
- package/dist/store/sync/trigger-classes.d.ts +8 -0
- package/dist/store/sync/trigger-classes.d.ts.map +1 -1
- package/dist/store/sync/trigger-classes.js +13 -0
- package/dist/store/sync/trigger-classes.js.map +1 -1
- package/dist/store/sync/write-actor.d.ts +58 -0
- package/dist/store/sync/write-actor.d.ts.map +1 -0
- package/dist/store/sync/write-actor.js +67 -0
- package/dist/store/sync/write-actor.js.map +1 -0
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +84 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/task-claim.d.ts +1 -1
- package/dist/store/task-claim.d.ts.map +1 -1
- package/dist/store/task-claim.js +1 -1
- package/dist/store/task-claim.js.map +1 -1
- package/dist/store/task-reference-columns.d.ts +27 -0
- package/dist/store/task-reference-columns.d.ts.map +1 -0
- package/dist/store/task-reference-columns.js +65 -0
- package/dist/store/task-reference-columns.js.map +1 -0
- package/dist/store/task-version.d.ts +1 -1
- package/dist/store/task-version.d.ts.map +1 -1
- package/dist/store/task-version.js +1 -1
- package/dist/store/task-version.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +2 -1
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +5 -4
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts +1 -1
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +3 -1
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +43 -14
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +373 -32
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +44 -674
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/validation-schemas.js +2 -22
- package/dist/store/validation-schemas.js.map +1 -1
- package/dist/store/vault-manifest.d.ts +1 -1
- package/dist/store/vault-manifest.d.ts.map +1 -1
- package/dist/store/vault-manifest.js +1 -1
- package/dist/store/vault-manifest.js.map +1 -1
- package/dist/store/worktree-build-guard.js +1 -1
- package/dist/store/worktree-build-guard.js.map +1 -1
- package/dist/store/worktree-isolation-guard.js +1 -1
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +1 -11
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/store/zod-schema-factory.d.ts +16 -0
- package/dist/store/zod-schema-factory.d.ts.map +1 -0
- package/dist/store/zod-schema-factory.js +23 -0
- package/dist/store/zod-schema-factory.js.map +1 -0
- package/dist/system/backup.d.ts +106 -0
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +295 -19
- package/dist/system/backup.js.map +1 -1
- package/dist/system/cleanup.js +1 -1
- package/dist/system/cleanup.js.map +1 -1
- package/dist/system/labels.js +1 -1
- package/dist/system/labels.js.map +1 -1
- package/dist/system/migrate.js +1 -1
- package/dist/system/migrate.js.map +1 -1
- package/dist/system/safestop.d.ts.map +1 -1
- package/dist/system/safestop.js +1 -1
- package/dist/system/safestop.js.map +1 -1
- package/dist/task-work/current.d.ts +34 -0
- package/dist/task-work/current.d.ts.map +1 -0
- package/dist/task-work/current.js +34 -0
- package/dist/task-work/current.js.map +1 -0
- package/dist/task-work/index.d.ts +2 -19
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +6 -20
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-identity.d.ts +28 -0
- package/dist/tasks/ac-identity.d.ts.map +1 -0
- package/dist/tasks/ac-identity.js +43 -0
- package/dist/tasks/ac-identity.js.map +1 -0
- package/dist/tasks/ac-immutability.d.ts +1 -1
- package/dist/tasks/ac-immutability.d.ts.map +1 -1
- package/dist/tasks/ac-immutability.js +1 -1
- package/dist/tasks/ac-immutability.js.map +1 -1
- package/dist/tasks/ac-table.d.ts +2 -14
- package/dist/tasks/ac-table.d.ts.map +1 -1
- package/dist/tasks/ac-table.js +6 -29
- package/dist/tasks/ac-table.js.map +1 -1
- package/dist/tasks/acceptance-input.js +1 -1
- package/dist/tasks/acceptance-input.js.map +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +3 -1
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +80 -12
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +130 -19
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/archive.d.ts.map +1 -1
- package/dist/tasks/archive.js +1 -1
- package/dist/tasks/archive.js.map +1 -1
- package/dist/tasks/axis-filters.d.ts.map +1 -1
- package/dist/tasks/axis-filters.js +2 -1
- package/dist/tasks/axis-filters.js.map +1 -1
- package/dist/tasks/child-disposition.js +1 -1
- package/dist/tasks/child-disposition.js.map +1 -1
- package/dist/tasks/collection.js +1 -1
- package/dist/tasks/collection.js.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +2 -1
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/decompose.js +1 -1
- package/dist/tasks/decompose.js.map +1 -1
- package/dist/tasks/delete.js +1 -1
- package/dist/tasks/delete.js.map +1 -1
- package/dist/tasks/done-plan.d.ts +2 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +10 -20
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts +1 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +1 -1
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/enforcement.d.ts +2 -1
- package/dist/tasks/enforcement.d.ts.map +1 -1
- package/dist/tasks/enforcement.js +1 -1
- package/dist/tasks/enforcement.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +1 -1
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +7 -3
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/epic-enforcement.js +1 -1
- package/dist/tasks/epic-enforcement.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +41 -19
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/find.js +1 -1
- package/dist/tasks/find.js.map +1 -1
- package/dist/tasks/gate-result-cache.js +1 -1
- package/dist/tasks/gate-result-cache.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +1 -1
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/heavy-tool-env.d.ts +79 -11
- package/dist/tasks/heavy-tool-env.d.ts.map +1 -1
- package/dist/tasks/heavy-tool-env.js +111 -14
- package/dist/tasks/heavy-tool-env.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +2 -2
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/labels.js +1 -1
- package/dist/tasks/labels.js.map +1 -1
- package/dist/tasks/nexus-impact-gate.js +1 -1
- package/dist/tasks/nexus-impact-gate.js.map +1 -1
- package/dist/tasks/pipeline-stage.js +1 -1
- package/dist/tasks/pipeline-stage.js.map +1 -1
- package/dist/tasks/population.js +1 -1
- package/dist/tasks/population.js.map +1 -1
- package/dist/tasks/ranking-audit.js +1 -1
- package/dist/tasks/ranking-audit.js.map +1 -1
- package/dist/tasks/reconcile-scope.js +1 -1
- package/dist/tasks/reconcile-scope.js.map +1 -1
- package/dist/tasks/relates.js +1 -1
- package/dist/tasks/relates.js.map +1 -1
- package/dist/tasks/req.d.ts.map +1 -1
- package/dist/tasks/req.js +2 -1
- package/dist/tasks/req.js.map +1 -1
- package/dist/tasks/severity-attestation.d.ts +1 -1
- package/dist/tasks/severity-attestation.d.ts.map +1 -1
- package/dist/tasks/severity-attestation.js +1 -1
- package/dist/tasks/severity-attestation.js.map +1 -1
- package/dist/tasks/show.d.ts.map +1 -1
- package/dist/tasks/show.js +47 -3
- package/dist/tasks/show.js.map +1 -1
- package/dist/tasks/task-import.js +1 -1
- package/dist/tasks/task-import.js.map +1 -1
- package/dist/tasks/task-reparent.d.ts.map +1 -1
- package/dist/tasks/task-reparent.js +2 -1
- package/dist/tasks/task-reparent.js.map +1 -1
- package/dist/tasks/test-run-binding.d.ts.map +1 -1
- package/dist/tasks/test-run-binding.js +9 -2
- package/dist/tasks/test-run-binding.js.map +1 -1
- package/dist/tasks/tool-cache.d.ts +23 -8
- package/dist/tasks/tool-cache.d.ts.map +1 -1
- package/dist/tasks/tool-cache.js +57 -16
- package/dist/tasks/tool-cache.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +8 -0
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +15 -1
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/tool-runner-guard.d.ts +131 -0
- package/dist/tasks/tool-runner-guard.d.ts.map +1 -0
- package/dist/tasks/tool-runner-guard.js +141 -0
- package/dist/tasks/tool-runner-guard.js.map +1 -0
- package/dist/tasks/tool-semaphore.d.ts +103 -342
- package/dist/tasks/tool-semaphore.d.ts.map +1 -1
- package/dist/tasks/tool-semaphore.js +131 -619
- package/dist/tasks/tool-semaphore.js.map +1 -1
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +2 -1
- package/dist/tasks/update.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +5 -34
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +24 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +168 -0
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/doctor/index.d.ts +1 -1
- package/dist/validation/doctor/index.d.ts.map +1 -1
- package/dist/validation/doctor/index.js +1 -1
- package/dist/validation/doctor/index.js.map +1 -1
- package/dist/validation/engine-ops.js +1 -1
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/engine.d.ts +1 -1
- package/dist/validation/engine.d.ts.map +1 -1
- package/dist/validation/engine.js +2 -1
- package/dist/validation/engine.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/operation-gate-validators.js +1 -1
- package/dist/validation/operation-gate-validators.js.map +1 -1
- package/dist/validation/protocol-common.js +1 -1
- package/dist/validation/protocol-common.js.map +1 -1
- package/dist/validation/protocols/_shared.js +1 -1
- package/dist/validation/protocols/_shared.js.map +1 -1
- package/dist/validation/validate-ops.js +1 -1
- package/dist/validation/validate-ops.js.map +1 -1
- package/dist/validation/verification.js +1 -1
- package/dist/validation/verification.js.map +1 -1
- package/dist/workgraph/index.d.ts +1 -1
- package/dist/workgraph/index.d.ts.map +1 -1
- package/dist/workgraph/index.js +1 -1
- package/dist/workgraph/index.js.map +1 -1
- package/dist/workgraph/reparent-preflight.d.ts +1 -2
- package/dist/workgraph/reparent-preflight.d.ts.map +1 -1
- package/dist/workgraph/reparent-preflight.js +1 -1
- package/dist/workgraph/reparent-preflight.js.map +1 -1
- package/dist/workgraph/scaffold-validate.js +1 -1
- package/dist/workgraph/scaffold-validate.js.map +1 -1
- package/dist/worktree/force-unlock.d.ts +1 -1
- package/dist/worktree/force-unlock.d.ts.map +1 -1
- package/dist/worktree/force-unlock.js +1 -1
- package/dist/worktree/force-unlock.js.map +1 -1
- package/dist/worktree/isolation.d.ts +1 -1
- package/dist/worktree/isolation.d.ts.map +1 -1
- package/dist/worktree/isolation.js +1 -1
- package/dist/worktree/isolation.js.map +1 -1
- package/dist/worktree/list.d.ts +1 -1
- package/dist/worktree/list.d.ts.map +1 -1
- package/dist/worktree/list.js +1 -1
- package/dist/worktree/list.js.map +1 -1
- package/dist/worktree/prune.d.ts +1 -1
- package/dist/worktree/prune.d.ts.map +1 -1
- package/dist/worktree/prune.js +1 -1
- package/dist/worktree/prune.js.map +1 -1
- package/dist/worktree/worktree-adopt.d.ts +1 -2
- package/dist/worktree/worktree-adopt.d.ts.map +1 -1
- package/dist/worktree/worktree-adopt.js +1 -1
- package/dist/worktree/worktree-adopt.js.map +1 -1
- package/migrations/sync-journal/20261004120000_t12757-apply-intent/migration.sql +21 -0
- package/migrations/sync-journal/20261005120000_t12344-inbox/migration.sql +67 -0
- package/migrations/sync-journal/20261006120000_t13193-rebase-undo/migration.sql +51 -0
- package/migrations/sync-journal/20261006130000_t13193-rebase-state/migration.sql +17 -0
- package/migrations/sync-journal/20261006140000_t13193-held-rows/migration.sql +24 -0
- package/package.json +13 -13
- package/schemas/project-context.schema.json +14 -0
- package/templates/CLEO-INJECTION.md +11 -11
- package/templates/CLEO-REFERENCE.md +2 -2
- package/templates/workflows/release-prepare.yml.tmpl +10 -10
|
@@ -1,669 +1,181 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Machine-wide admission for evidence-tool runs (T1534 / ADR-061, T13133).
|
|
3
3
|
*
|
|
4
4
|
* The cache layer ({@link runToolCached}) coalesces *identical* parallel runs
|
|
5
|
-
* via a per-key file lock
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* take a slot of the matching {@link ResourceGovernor} class (`test` →
|
|
33
|
-
* `test-run`, `build` → `scoped-build`), so evidence runs and other governed
|
|
34
|
-
* heavy work share one machine-wide budget. `typecheck`/`lint` take no governor
|
|
35
|
-
* class of their own: cross-surface admission belongs to the single
|
|
36
|
-
* footprint-based scheduler (T13132), not to one more class.
|
|
37
|
-
*
|
|
38
|
-
* T12091: `test`/`build` were `max(1, cpus/4)` — 6 slots on a 24-core box. Since
|
|
39
|
-
* each `pnpm run test` is itself allowed 6 vitest forks × 4 GiB, the two bounds
|
|
40
|
-
* composed to 144 GiB of permitted heap on 62 GiB of RAM. Neither layer was
|
|
41
|
-
* individually violated, which is exactly why the machine froze without any
|
|
42
|
-
* guard firing. Heavy tools are now bounded by the dimension that actually
|
|
43
|
-
* limits them — see {@link defaultMaxConcurrent}.
|
|
44
|
-
*
|
|
45
|
-
* Override via `CLEO_TOOL_CONCURRENCY_<CANONICAL>` (e.g.
|
|
46
|
-
* `CLEO_TOOL_CONCURRENCY_TEST=2`). Set to `0` or a negative number to
|
|
47
|
-
* disable the limit for that tool — which also disables the RAM bound, so it is
|
|
48
|
-
* the one setting that can still oversubscribe the machine.
|
|
5
|
+
* via a per-key file lock. Orchestrator-spawned worktree agents each operate
|
|
6
|
+
* on a *different* HEAD, so their cache keys differ and the per-key lock does
|
|
7
|
+
* not coalesce them; without a machine-wide bound, N worktree agents would
|
|
8
|
+
* each spawn the full toolchain, multiplying CPU and resident memory by N.
|
|
9
|
+
*
|
|
10
|
+
* Since T13133 that bound is the admission ledger (`resources/admission-ledger.ts`):
|
|
11
|
+
* one budget in bytes and one FIFO queue shared by every evidence run, every
|
|
12
|
+
* `cleo run` job and the vitest project probe, machine-wide. An evidence run
|
|
13
|
+
* asks for its footprint (`footprintForTool`: a heavy test/build run is
|
|
14
|
+
* charged its worker count × 6 GiB, typecheck and lint their planned heap plus
|
|
15
|
+
* 2 GiB, audit and scans 1 GiB),
|
|
16
|
+
* waits its turn, and exports the grant's `CLEO_ADMISSION` token to the tool
|
|
17
|
+
* it spawns, so a `cleo verify` or `cleo run` the tool starts rides the grant
|
|
18
|
+
* instead of waiting for the budget its own ancestor holds.
|
|
19
|
+
*
|
|
20
|
+
* What it replaced: per-tool slot directories under `<cleoHome>/locks/tool-*`,
|
|
21
|
+
* core- and RAM-derived slot counts (`defaultMaxConcurrent`), PSI slot scaling
|
|
22
|
+
* (`pressureScaleSlots`), the darwin one-slot rule (T12963) and a second,
|
|
23
|
+
* separate governor slot taken after the tool slot, the order that could
|
|
24
|
+
* deadlock against `cleo run` (T13133). Memory pressure now narrows the one
|
|
25
|
+
* budget, and the memory gate (T13127) refuses heavy work outright while
|
|
26
|
+
* memory is short; a waiting run says so on stderr with the readings.
|
|
27
|
+
*
|
|
28
|
+
* `CLEO_TOOL_CONCURRENCY_<TOOL>` no longer counts runs: `0` (or below) still
|
|
29
|
+
* bypasses admission for that tool, any other value is ignored, and either
|
|
30
|
+
* prints one deprecation line per process on stderr. `CLEO_RESOURCES_MODE=off`
|
|
31
|
+
* is the supported switch.
|
|
49
32
|
*
|
|
50
33
|
* @task T1534
|
|
51
34
|
* @task T12091
|
|
52
35
|
* @task T12963
|
|
53
36
|
* @task T13123
|
|
37
|
+
* @task T13127
|
|
38
|
+
* @task T13133
|
|
54
39
|
* @adr ADR-061
|
|
55
40
|
*/
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
import { governor } from '../resources/governor.js';
|
|
62
|
-
import { ResourceMonitor } from '../resources/monitor.js';
|
|
63
|
-
import { assessSlotHolder, currentLockId, ownProcessStartedAt, reapSlotIfHolderDead, recordToolGroupsWhileHeld, SLOT_LOCK_STALE_MS, writeHolderRecord, } from '../resources/slot-holder.js';
|
|
64
|
-
import { defaultSingleProcessHeapMb, GIB_PER_WORKER, HEAVY_TOOL_HEAP_MB, isMemoryBoundTool, MAX_HEAVY_WORKERS, } from './heavy-tool-env.js';
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
|
-
// Concurrency-limit defaults + override resolution
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
/**
|
|
69
|
-
* Worst-case resident footprint of ONE `tool:test` / `tool:build` invocation,
|
|
70
|
-
* in GiB.
|
|
71
|
-
*
|
|
72
|
-
* This is not a guess. The heavy-tool overlay permits at most
|
|
73
|
-
* `MAX_HEAVY_WORKERS` (6) workers × `HEAVY_TOOL_HEAP_MB` (4096) — the largest
|
|
74
|
-
* run budget (T13122) — so a single `pnpm run test` may legitimately hold
|
|
75
|
-
* ~24 GiB before any guard fires. Derived from those constants since T13123,
|
|
76
|
-
* so the two can no longer drift apart.
|
|
77
|
-
*
|
|
78
|
-
* @task T12091
|
|
79
|
-
*/
|
|
80
|
-
export const HEAVY_TOOL_FOOTPRINT_GIB = (MAX_HEAVY_WORKERS * HEAVY_TOOL_HEAP_MB) / 1024;
|
|
81
|
-
/**
|
|
82
|
-
* Share of total RAM all concurrent `typecheck`/`lint` runs together may hold
|
|
83
|
-
* (T13123). The other half is for the test/build budget, the OS and whatever
|
|
84
|
-
* the operator is running.
|
|
85
|
-
*/
|
|
86
|
-
export const MEMORY_BOUND_RAM_FRACTION = 0.5;
|
|
87
|
-
/**
|
|
88
|
-
* Resident memory one Node process holds beyond its V8 heap ceiling, in MiB:
|
|
89
|
-
* code, native allocations, buffers. The same allowance the heavy worker count
|
|
90
|
-
* makes (`GIB_PER_WORKER` minus the heap).
|
|
91
|
-
*/
|
|
92
|
-
export const PROCESS_OVERHEAD_MB = GIB_PER_WORKER * 1024 - HEAVY_TOOL_HEAP_MB;
|
|
93
|
-
/**
|
|
94
|
-
* Most concurrent `typecheck`/`lint` runs on darwin, however large the Mac
|
|
95
|
-
* (T13123). A small fixed number, like the single darwin test slot (T12963).
|
|
96
|
-
*/
|
|
97
|
-
export const DARWIN_MEMORY_BOUND_SLOTS = 2;
|
|
98
|
-
/**
|
|
99
|
-
* Machine-wide slot count for a single-process memory-bound tool
|
|
100
|
-
* (`typecheck`, `lint`): as many runs as fit in {@link MEMORY_BOUND_RAM_FRACTION}
|
|
101
|
-
* of RAM at `heap + PROCESS_OVERHEAD_MB` each, at most half the cores, at most
|
|
102
|
-
* {@link DARWIN_MEMORY_BOUND_SLOTS} on darwin, never fewer than one. A
|
|
103
|
-
* non-finite input fails closed to one slot: a NaN count would read as "no
|
|
104
|
-
* bound" in {@link acquireGlobalSlot}.
|
|
105
|
-
*
|
|
106
|
-
* `lint` is sized like `tsc`: a canonical-level approximation, since `biome`
|
|
107
|
-
* is a small native binary while type-aware `eslint` builds a TS program.
|
|
108
|
-
*
|
|
109
|
-
* Each acquirer sizes the shared slot directory from its own heap, so with
|
|
110
|
-
* mixed heaps the bound is as tight as the most permissive acquirer (one large
|
|
111
|
-
* run can be over), and a large-heap acquirer, eligible for fewer slots, waits
|
|
112
|
-
* longer under steady small-heap load — pressure until T13132's footprint
|
|
113
|
-
* scheduler, never a deadlock (the wait times out naming the holders).
|
|
114
|
-
*/
|
|
115
|
-
function memoryBoundSlots(cpus, totalRamGib, platform, heapMb) {
|
|
116
|
-
const byRam = Math.floor((totalRamGib * 1024 * MEMORY_BOUND_RAM_FRACTION) / (Math.max(0, heapMb) + PROCESS_OVERHEAD_MB));
|
|
117
|
-
const byCpu = Math.floor(cpus / 2);
|
|
118
|
-
const slots = Math.min(byRam, byCpu);
|
|
119
|
-
if (!Number.isFinite(slots) || slots < 1)
|
|
120
|
-
return 1;
|
|
121
|
-
return platform === 'darwin' ? Math.min(DARWIN_MEMORY_BOUND_SLOTS, slots) : slots;
|
|
41
|
+
import { admissionCapacityBytes, admit, describeAdmissionIoError, footprintForTool, } from '../resources/admission-ledger.js';
|
|
42
|
+
import { memoryGateReporter } from '../resources/pressure-gate.js';
|
|
43
|
+
/** The default {@link AcquireSlotOptions.notice}: one stderr line. */
|
|
44
|
+
function stderrNotice(line) {
|
|
45
|
+
process.stderr.write(`[cleo] ${line}\n`); // json-stream-hygiene-allowed: progress while waiting; stdout carries the envelope
|
|
122
46
|
}
|
|
47
|
+
/** Tools whose deprecated `CLEO_TOOL_CONCURRENCY_<TOOL>` notice was printed in this process. */
|
|
48
|
+
const _deprecationNoticed = new Set();
|
|
123
49
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* This returned `floor(cpus / 4)` for `test`/`build`, which on a 24-core box is
|
|
129
|
-
* **6 concurrent full test suites**. Each of those is itself allowed 6 vitest
|
|
130
|
-
* forks × a 4 GiB heap cap, so the composed permission was
|
|
131
|
-
*
|
|
132
|
-
* 6 runs × 6 forks × 4 GiB = 144 GiB
|
|
50
|
+
* The deprecated `CLEO_TOOL_CONCURRENCY_<TOOL>` override: `bypass` for `0` or
|
|
51
|
+
* below, `ignored` for any other number, `null` when unset. Prints one
|
|
52
|
+
* deprecation line per tool per process on stderr, never on stdout.
|
|
133
53
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
* this cross-invocation cap were written independently and never multiplied out.
|
|
54
|
+
* @param canonical - the canonical tool.
|
|
55
|
+
* @param notice - where the line goes.
|
|
56
|
+
* @returns what the override does now.
|
|
138
57
|
*
|
|
139
|
-
*
|
|
140
|
-
* core count says nothing about memory. A 24-core/16 GiB VM got the same 6 slots
|
|
141
|
-
* as a 24-core/256 GiB server. So heavy tools now divide TOTAL RAM by
|
|
142
|
-
* {@link HEAVY_TOOL_FOOTPRINT_GIB} and are additionally capped by cores, never
|
|
143
|
-
* exceeding what the machine can actually hold.
|
|
144
|
-
*
|
|
145
|
-
* Reactive pressure scaling ({@link pressureScaleSlots}) is not a substitute:
|
|
146
|
-
* PSI `some avg10` is a ten-second average, and a fork fleet can exhaust RAM
|
|
147
|
-
* faster than that window can report it. Admission has to be right up front.
|
|
148
|
-
*
|
|
149
|
-
* `typecheck` and `lint` are single processes but not light ones (T13123): one
|
|
150
|
-
* TypeScript program on a large monorepo holds 2–5 GB, and the half-of-cores
|
|
151
|
-
* budget they had was nine slots on an 18-core box — 45 GB of `tsc`. They are
|
|
152
|
-
* RAM-derived now too ({@link MEMORY_BOUND_RAM_FRACTION} of RAM at the run's
|
|
153
|
-
* heap plus {@link PROCESS_OVERHEAD_MB} each), capped by half the cores. Only
|
|
154
|
-
* `audit` and `security-scan` keep the core-derived budget.
|
|
155
|
-
*
|
|
156
|
-
* ## Why darwin gets one heavy slot (T12963)
|
|
157
|
-
*
|
|
158
|
-
* Linux shrinks the heavy budget under memory pressure through PSI
|
|
159
|
-
* ({@link pressureScaleSlots}). macOS exposes no PSI, so that reactive layer
|
|
160
|
-
* never fires there, and a 64 GiB Mac would admit two full suites with nothing
|
|
161
|
-
* to back them off. Concurrent agents on a laptop are the common case, so the
|
|
162
|
-
* default is one heavy run at a time; `CLEO_TOOL_CONCURRENCY_TEST` /
|
|
163
|
-
* `_BUILD` still raise it.
|
|
164
|
-
*
|
|
165
|
-
* @param canonical - the canonical tool class.
|
|
166
|
-
* @param cpuCount - logical cores available.
|
|
167
|
-
* @param totalRamGib - total machine RAM in GiB; defaults to a live reading.
|
|
168
|
-
* @param platform - OS platform; defaults to `process.platform`.
|
|
169
|
-
* @param heapMb - heap ceiling of the run, for `typecheck`/`lint`; defaults to
|
|
170
|
-
* {@link defaultSingleProcessHeapMb} for `totalRamGib`.
|
|
171
|
-
* @returns the machine-wide slot count, always ≥ 1.
|
|
172
|
-
*
|
|
173
|
-
* @example
|
|
174
|
-
* ```ts
|
|
175
|
-
* // 24 cores, 62 GiB → floor(62/24) = 2 (was 6, permitting 144 GiB of heap)
|
|
176
|
-
* defaultMaxConcurrent('test', 24, 62); // → 2
|
|
177
|
-
* // 24 cores, 16 GiB → 1: one suite is already more than this box can hold
|
|
178
|
-
* defaultMaxConcurrent('test', 24, 16); // → 1
|
|
179
|
-
* // macOS: no PSI to back off with, so one heavy run at a time
|
|
180
|
-
* defaultMaxConcurrent('test', 12, 64, 'darwin'); // → 1
|
|
181
|
-
* // 18 cores, 48 GiB: ⌊24576 / (4096 + 2048)⌋ = 4 typechecks (was 9); 2 on darwin
|
|
182
|
-
* defaultMaxConcurrent('typecheck', 18, 48, 'linux'); // → 4
|
|
183
|
-
* defaultMaxConcurrent('typecheck', 18, 48, 'darwin'); // → 2
|
|
184
|
-
* // 4 cores, 8 GiB: one at a time
|
|
185
|
-
* defaultMaxConcurrent('typecheck', 4, 8, 'linux'); // → 1
|
|
186
|
-
* ```
|
|
187
|
-
*
|
|
188
|
-
* @task T1534
|
|
189
|
-
* @task T12091
|
|
190
|
-
* @task T12963
|
|
191
|
-
* @task T13123
|
|
192
|
-
*/
|
|
193
|
-
export function defaultMaxConcurrent(canonical, cpuCount, totalRamGib = totalmem() / 1024 ** 3, platform = process.platform, heapMb = defaultSingleProcessHeapMb(totalRamGib)) {
|
|
194
|
-
const cpus = Number.isFinite(cpuCount) ? Math.max(1, cpuCount) : 1;
|
|
195
|
-
switch (canonical) {
|
|
196
|
-
case 'test':
|
|
197
|
-
case 'build': {
|
|
198
|
-
if (platform === 'darwin')
|
|
199
|
-
return 1;
|
|
200
|
-
const byRam = Math.floor(totalRamGib / HEAVY_TOOL_FOOTPRINT_GIB);
|
|
201
|
-
const byCpu = Math.floor(cpus / 4);
|
|
202
|
-
return Math.max(1, Math.min(byRam, byCpu));
|
|
203
|
-
}
|
|
204
|
-
case 'lint':
|
|
205
|
-
case 'typecheck':
|
|
206
|
-
return memoryBoundSlots(cpus, totalRamGib, platform, heapMb);
|
|
207
|
-
case 'audit':
|
|
208
|
-
case 'security-scan':
|
|
209
|
-
return Math.max(2, Math.floor(cpus / 2));
|
|
210
|
-
default:
|
|
211
|
-
return 1;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Resolve the active per-tool concurrency limit, honouring the
|
|
216
|
-
* `CLEO_TOOL_CONCURRENCY_<CANONICAL>` env override when set. A value of
|
|
217
|
-
* `0` (or any non-positive number) disables the bound and returns
|
|
218
|
-
* `Number.POSITIVE_INFINITY`, in which case {@link acquireGlobalSlot}
|
|
219
|
-
* returns a no-op release.
|
|
220
|
-
*
|
|
221
|
-
* @task T1534
|
|
222
|
-
* @task T12963
|
|
223
|
-
* @task T13123
|
|
58
|
+
* @task T13133
|
|
224
59
|
*/
|
|
225
|
-
export function
|
|
226
|
-
const
|
|
227
|
-
const raw = process.env[
|
|
228
|
-
if (raw
|
|
229
|
-
const parsed = Number.parseInt(raw, 10);
|
|
230
|
-
if (Number.isFinite(parsed)) {
|
|
231
|
-
if (parsed <= 0)
|
|
232
|
-
return Number.POSITIVE_INFINITY;
|
|
233
|
-
return parsed;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
const ram = totalRamGib ?? totalmem() / 1024 ** 3;
|
|
237
|
-
return defaultMaxConcurrent(canonical, cpuCount ?? availableParallelism(), ram, platform ?? process.platform, heapMb ?? defaultSingleProcessHeapMb(ram));
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Whether a canonical tool's slot budget shrinks under memory pressure: every
|
|
241
|
-
* memory-bound tool — `test`, `build`, and since T13123 `typecheck` and `lint`.
|
|
242
|
-
* `audit` and `security-scan` are network-bound and keep their static budget.
|
|
243
|
-
*/
|
|
244
|
-
function isPressureSensitive(canonical) {
|
|
245
|
-
// Delegates rather than repeating the literal. This was the third
|
|
246
|
-
// independent definition of "heavy"; all three agreed by coincidence, and a
|
|
247
|
-
// fifth heavy tool would have needed three coordinated edits — with a missed
|
|
248
|
-
// one producing a SILENT asymmetry (a tool granted the long deadline and the
|
|
249
|
-
// worker caps but not a semaphore slot, or the reverse).
|
|
250
|
-
return isMemoryBoundTool(canonical);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Scale a static slot budget down under memory pressure (T12001 · choke-point
|
|
254
|
-
* #6). Mirrors the governor's `test-run` budget: halve when `some avg10` exceeds
|
|
255
|
-
* the hold threshold, floor to 1 when it exceeds the backoff/floor threshold.
|
|
256
|
-
* Recovers automatically as pressure clears. `full-build` is not represented as
|
|
257
|
-
* a canonical tool here; the dedicated `full-build` governor class (T11999)
|
|
258
|
-
* pins that to one machine-wide slot.
|
|
259
|
-
*
|
|
260
|
-
* @task T12001
|
|
261
|
-
*/
|
|
262
|
-
export function pressureScaleSlots(canonical, staticMax, sample, thresholds = {}) {
|
|
263
|
-
if (!Number.isFinite(staticMax) || !isPressureSensitive(canonical))
|
|
264
|
-
return staticMax;
|
|
265
|
-
const hold = thresholds.holdSomeAvg10 ?? 10;
|
|
266
|
-
const floor = thresholds.floorSomeAvg10 ?? 25;
|
|
267
|
-
const some = sample.globalPressure?.some?.avg10 ?? sample.slicePressure?.some?.avg10 ?? 0;
|
|
268
|
-
if (some > floor)
|
|
269
|
-
return 1;
|
|
270
|
-
if (some > hold)
|
|
271
|
-
return Math.max(1, Math.floor(staticMax / 2));
|
|
272
|
-
return staticMax;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Best-effort point-sample for slot scaling. NEVER throws — on any error (no
|
|
276
|
-
* `/proc`, non-Linux, read failure) returns `null` so the caller fails open to
|
|
277
|
-
* the static slot count. The PSI + meminfo reads are sub-5ms.
|
|
278
|
-
*/
|
|
279
|
-
async function samplePressureSafe() {
|
|
280
|
-
try {
|
|
281
|
-
return await new ResourceMonitor().sample();
|
|
282
|
-
}
|
|
283
|
-
catch {
|
|
60
|
+
export function legacyConcurrencyOverride(canonical, notice = stderrNotice) {
|
|
61
|
+
const key = `CLEO_TOOL_CONCURRENCY_${canonical.toUpperCase().replace(/-/g, '_')}`;
|
|
62
|
+
const raw = process.env[key];
|
|
63
|
+
if (raw === undefined || raw === '')
|
|
284
64
|
return null;
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Whether an explicit `CLEO_TOOL_CONCURRENCY_<TOOL>` override is set — when so,
|
|
289
|
-
* the operator's intent is authoritative and pressure scaling is bypassed.
|
|
290
|
-
*/
|
|
291
|
-
function hasConcurrencyOverride(canonical) {
|
|
292
|
-
const raw = process.env[`CLEO_TOOL_CONCURRENCY_${canonical.toUpperCase().replace(/-/g, '_')}`];
|
|
293
|
-
return raw !== undefined && raw !== '';
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* The {@link ResourceGovernor} class a heavy tool run is admitted under, or
|
|
297
|
-
* `null` for the rest. `test` and `build` are the classes the governor
|
|
298
|
-
* budgets as `test-run` / `scoped-build` (T12963).
|
|
299
|
-
*/
|
|
300
|
-
export function governorClassFor(canonical) {
|
|
301
|
-
if (canonical === 'test')
|
|
302
|
-
return 'test-run';
|
|
303
|
-
if (canonical === 'build')
|
|
304
|
-
return 'scoped-build';
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Take the governor slot for a heavy run that already holds its tool slot.
|
|
309
|
-
* Returns the grant's release, a no-op when no admission applies, or throws
|
|
310
|
-
* when the governor defers within the remaining wait budget.
|
|
311
|
-
*
|
|
312
|
-
* Skipped under an explicit `CLEO_TOOL_CONCURRENCY_<TOOL>` override: the
|
|
313
|
-
* operator's count is authoritative, and the governor's own budget would
|
|
314
|
-
* silently cap it.
|
|
315
|
-
*/
|
|
316
|
-
async function admitThroughGovernor(canonical, opts, remainingMs) {
|
|
317
|
-
const cls = governorClassFor(canonical);
|
|
318
|
-
if (cls === null || opts.skipGovernor === true || hasConcurrencyOverride(canonical)) {
|
|
319
|
-
return NOOP_RELEASE;
|
|
320
|
-
}
|
|
321
|
-
const admission = await governor.acquire(cls, {
|
|
322
|
-
timeoutMs: Math.max(1, remainingMs),
|
|
323
|
-
...(opts.pollMs !== undefined ? { pollMs: opts.pollMs } : {}),
|
|
324
|
-
...(opts.cpuCount !== undefined ? { cpuCount: opts.cpuCount } : {}),
|
|
325
|
-
...(opts.totalRamGib !== undefined ? { totalMemBytes: opts.totalRamGib * 1024 ** 3 } : {}),
|
|
326
|
-
...(opts.pressureSample ? { sample: opts.pressureSample } : {}),
|
|
327
|
-
});
|
|
328
|
-
if (admission.deferred) {
|
|
329
|
-
// @sync-invariant none:local-only machine-wide admission timeout; no store write
|
|
330
|
-
throw new Error(`Timed out waiting for the '${cls}' resource budget for a '${canonical}' run: ` +
|
|
331
|
-
`${admission.reason}. Override with ` +
|
|
332
|
-
`CLEO_TOOL_CONCURRENCY_${canonical.toUpperCase().replace(/-/g, '_')}=<n>.`);
|
|
333
|
-
}
|
|
334
|
-
return admission.release;
|
|
335
|
-
}
|
|
336
|
-
// ---------------------------------------------------------------------------
|
|
337
|
-
// Slot-directory layout
|
|
338
|
-
// ---------------------------------------------------------------------------
|
|
339
|
-
/**
|
|
340
|
-
* Path to the global slot directory for a canonical tool. Sits under
|
|
341
|
-
* `getCleoHome()/locks/tool-<canonical>/` so all CLEO-driven processes
|
|
342
|
-
* on a machine share the same semaphore — across projects, worktrees,
|
|
343
|
-
* and PIDs.
|
|
344
|
-
*
|
|
345
|
-
* @task T1534
|
|
346
|
-
*/
|
|
347
|
-
export function semaphoreDir(canonical) {
|
|
348
|
-
return join(getCleoHome(), 'locks', `tool-${canonical}`);
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Path of the sidecar holder record for a slot.
|
|
352
|
-
*
|
|
353
|
-
* Deliberately a SIBLING of the lock rather than a file inside it:
|
|
354
|
-
* `proper-lockfile` removes its lock directory with `rmdir`, which fails if we
|
|
355
|
-
* have put anything inside it.
|
|
356
|
-
*
|
|
357
|
-
* @internal
|
|
358
|
-
* @task T12113 (gh#1222)
|
|
359
|
-
*/
|
|
360
|
-
function holderPath(slotPath) {
|
|
361
|
-
return `${slotPath}.holder.json`;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Record who holds a slot, and keep the record listing every tool group this
|
|
365
|
-
* process starts while it holds the slot (T12963). Best-effort: a failure here
|
|
366
|
-
* must never fail an acquire that has already succeeded, because the slot IS
|
|
367
|
-
* held at that point and throwing would leak it.
|
|
368
|
-
*
|
|
369
|
-
* @returns Stops recording tool groups; call it on release.
|
|
370
|
-
*
|
|
371
|
-
* @internal
|
|
372
|
-
* @task T12113 (gh#1222)
|
|
373
|
-
* @task T12963
|
|
374
|
-
*/
|
|
375
|
-
function writeHolder(slotPath, canonical) {
|
|
376
|
-
let holder;
|
|
377
|
-
const recording = recordToolGroupsWhileHeld(slotPath, () => holder);
|
|
378
|
-
holder = {
|
|
379
|
-
pid: process.pid,
|
|
380
|
-
host: hostname(),
|
|
381
|
-
acquiredAt: new Date().toISOString(),
|
|
382
|
-
canonical,
|
|
383
|
-
slot: slotPath,
|
|
384
|
-
startedAt: ownProcessStartedAt(),
|
|
385
|
-
lockId: currentLockId(slotPath),
|
|
386
|
-
toolGroups: [...recording.groups],
|
|
387
|
-
};
|
|
388
|
-
writeHolderRecord(slotPath, holder);
|
|
389
|
-
return recording.stop;
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Read a slot's holder record. Returns `null` when absent or unparseable —
|
|
393
|
-
* both mean "we cannot say who holds this", which is treated as alive.
|
|
394
|
-
*
|
|
395
|
-
* @internal
|
|
396
|
-
* @task T12113 (gh#1222)
|
|
397
|
-
*/
|
|
398
|
-
export function readHolder(slotPath) {
|
|
399
|
-
try {
|
|
400
|
-
const parsed = JSON.parse(readFileSync(holderPath(slotPath), 'utf-8'));
|
|
401
|
-
if (typeof parsed.pid !== 'number' || typeof parsed.host !== 'string')
|
|
402
|
-
return null;
|
|
403
|
-
return parsed;
|
|
404
|
-
}
|
|
405
|
-
catch {
|
|
65
|
+
const parsed = Number.parseInt(raw, 10);
|
|
66
|
+
if (!Number.isFinite(parsed))
|
|
406
67
|
return null;
|
|
68
|
+
const effect = parsed <= 0 ? 'bypass' : 'ignored';
|
|
69
|
+
if (!_deprecationNoticed.has(key)) {
|
|
70
|
+
_deprecationNoticed.add(key);
|
|
71
|
+
notice(`${key} is deprecated: heavy runs now share one machine-wide memory budget and no ` +
|
|
72
|
+
`longer count slots (T13133). ${effect === 'bypass' ? `${key}=${raw} still bypasses admission for now;` : `${key}=${raw} is ignored;`} ` +
|
|
73
|
+
'use CLEO_RESOURCES_MODE=off to turn admission off.');
|
|
407
74
|
}
|
|
75
|
+
return effect;
|
|
408
76
|
}
|
|
409
|
-
/**
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
* Fails SAFE: an unknown holder, a holder on another host, or any error is
|
|
413
|
-
* reported as ALIVE. Reaping a live holder's slot would let two heavy suites
|
|
414
|
-
* run against one bound — the exact oversubscription the semaphore exists to
|
|
415
|
-
* prevent — so uncertainty must never authorise a reap. A holder whose pid is
|
|
416
|
-
* gone but whose tool group still has a member is ALIVE (T12963).
|
|
417
|
-
*
|
|
418
|
-
* @param holder - Holder record, or `null` when none could be read.
|
|
419
|
-
* @param slotPath - The slot the record belongs to. With it, a record that
|
|
420
|
-
* does not describe the slot's current lock (or one written before T12963,
|
|
421
|
-
* which names no lock) is alive, and a recycled pid is dead.
|
|
422
|
-
* @returns `true` when the slot must be treated as legitimately held.
|
|
423
|
-
*
|
|
424
|
-
* @task T12113 (gh#1222)
|
|
425
|
-
* @task T12963
|
|
426
|
-
*/
|
|
427
|
-
export function isHolderAlive(holder, slotPath) {
|
|
428
|
-
return assessSlotHolder(holder, slotPath) !== 'dead';
|
|
77
|
+
/** Forget which deprecation notices were printed. Tests only. @internal */
|
|
78
|
+
export function _resetToolSemaphoreForTest() {
|
|
79
|
+
_deprecationNoticed.clear();
|
|
429
80
|
}
|
|
430
81
|
/**
|
|
431
|
-
*
|
|
82
|
+
* {@link acquireGlobalSlot} gave up: the run was not admitted within its
|
|
83
|
+
* timeout. `refusal` says why (memory pressure, or the budget in use) and who
|
|
84
|
+
* holds the budget.
|
|
432
85
|
*
|
|
433
|
-
*
|
|
434
|
-
* stale recovery does, but decided by process liveness instead of by a 10
|
|
435
|
-
* minute mtime timeout. Since T12963 the holder's tool groups must be gone
|
|
436
|
-
* too, the record must describe the current lock, and the reap runs under a
|
|
437
|
-
* per-slot guard ({@link reapSlotIfHolderDead}).
|
|
438
|
-
*
|
|
439
|
-
* @param slotPath - Slot lock file path.
|
|
440
|
-
* @param staleMs - The slot's `proper-lockfile` stale threshold.
|
|
441
|
-
* @returns `true` when an orphaned slot was actually reaped.
|
|
442
|
-
*
|
|
443
|
-
* @task T12113 (gh#1222)
|
|
444
|
-
* @task T12963
|
|
86
|
+
* @task T13133
|
|
445
87
|
*/
|
|
446
|
-
export
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
* @task T12113 (gh#1222)
|
|
460
|
-
*/
|
|
461
|
-
export function listSlotHolders(canonical) {
|
|
462
|
-
const dir = semaphoreDir(canonical);
|
|
463
|
-
if (!existsSync(dir))
|
|
464
|
-
return [];
|
|
465
|
-
const rows = [];
|
|
466
|
-
for (let i = 0;; i++) {
|
|
467
|
-
const slotPath = join(dir, `slot-${i}.lock`);
|
|
468
|
-
if (!existsSync(slotPath))
|
|
469
|
-
break;
|
|
470
|
-
const holder = readHolder(slotPath);
|
|
471
|
-
rows.push({
|
|
472
|
-
slot: slotPath,
|
|
473
|
-
held: existsSync(`${slotPath}.lock`),
|
|
474
|
-
holder,
|
|
475
|
-
alive: isHolderAlive(holder, slotPath),
|
|
476
|
-
});
|
|
88
|
+
export class AdmissionTimeoutError extends Error {
|
|
89
|
+
/** Why the run was not admitted, with the holders. */
|
|
90
|
+
refusal;
|
|
91
|
+
/**
|
|
92
|
+
* @param canonical - the tool whose run waited.
|
|
93
|
+
* @param refusal - the ledger's refusal.
|
|
94
|
+
*/
|
|
95
|
+
constructor(canonical, refusal) {
|
|
96
|
+
super(`Timed out waiting for admission of a '${canonical}' run: ${refusal.reason}.` +
|
|
97
|
+
(refusal.holders.length > 0 ? ` Current holders — ${refusal.holders.join('; ')}.` : '') +
|
|
98
|
+
' Use CI as test evidence (ci:<pr>), narrow the run, or set CLEO_RESOURCES_MODE=off to turn admission off.');
|
|
99
|
+
this.name = 'AdmissionTimeoutError';
|
|
100
|
+
this.refusal = refusal;
|
|
477
101
|
}
|
|
478
|
-
return rows;
|
|
479
102
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
*
|
|
483
|
-
* @param canonical - Canonical tool name.
|
|
484
|
-
* @returns Paths of the slots actually reaped.
|
|
485
|
-
*
|
|
486
|
-
* @task T12113 (gh#1222)
|
|
487
|
-
*/
|
|
488
|
-
export function reapOrphanedSlots(canonical) {
|
|
489
|
-
const reaped = [];
|
|
490
|
-
for (const row of listSlotHolders(canonical)) {
|
|
491
|
-
if (row.held && !row.alive && reapSlotIfOrphaned(row.slot))
|
|
492
|
-
reaped.push(row.slot);
|
|
493
|
-
}
|
|
494
|
-
return reaped;
|
|
103
|
+
function withAdmission(release, admission) {
|
|
104
|
+
return Object.assign(release, { admission });
|
|
495
105
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
500
|
-
const paths = [];
|
|
501
|
-
for (let i = 0; i < count; i++) {
|
|
502
|
-
const p = join(dir, `slot-${i}.lock`);
|
|
503
|
-
if (!existsSync(p)) {
|
|
504
|
-
writeFileSync(p, '', 'utf-8');
|
|
505
|
-
}
|
|
506
|
-
paths.push(p);
|
|
507
|
-
}
|
|
508
|
-
return paths;
|
|
509
|
-
}
|
|
510
|
-
// ---------------------------------------------------------------------------
|
|
511
|
-
// Acquire / release
|
|
512
|
-
// ---------------------------------------------------------------------------
|
|
513
|
-
const NOOP_RELEASE = async () => {
|
|
514
|
-
/* no-op when concurrency is disabled */
|
|
515
|
-
};
|
|
106
|
+
const NOOP_RELEASE = withAdmission(async () => {
|
|
107
|
+
/* nothing was admitted */
|
|
108
|
+
}, '');
|
|
516
109
|
/**
|
|
517
|
-
*
|
|
518
|
-
* until
|
|
110
|
+
* Wait for admission of one evidence run of a canonical tool, machine-wide.
|
|
111
|
+
* Blocks until the ledger admits it or `timeoutMs` elapses.
|
|
519
112
|
*
|
|
520
|
-
*
|
|
521
|
-
*
|
|
522
|
-
*
|
|
523
|
-
*
|
|
113
|
+
* Re-entrant: inside an admitted run's process tree (a `cleo verify` that a
|
|
114
|
+
* `cleo run` job or another evidence run started) it is admitted at once on
|
|
115
|
+
* that grant. While it waits on memory pressure it says so through
|
|
116
|
+
* {@link AcquireSlotOptions.notice}, and after a minute it names the holders.
|
|
524
117
|
*
|
|
525
118
|
* @param canonical - Canonical tool name from the resolver.
|
|
526
119
|
* @param opts - Acquisition options.
|
|
527
|
-
* @returns A release function. Idempotent.
|
|
528
|
-
* @throws When `timeoutMs` elapses without
|
|
120
|
+
* @returns A release function carrying the `CLEO_ADMISSION` token. Idempotent.
|
|
121
|
+
* @throws When `timeoutMs` elapses without admission, naming the reason and
|
|
122
|
+
* the holders.
|
|
529
123
|
*
|
|
530
124
|
* @example
|
|
531
125
|
* ```ts
|
|
532
126
|
* const release = await acquireGlobalSlot('test');
|
|
533
127
|
* try {
|
|
534
|
-
* await runTheTool();
|
|
128
|
+
* await runTheTool({ env: { CLEO_ADMISSION: release.admission } });
|
|
535
129
|
* } finally {
|
|
536
130
|
* await release();
|
|
537
131
|
* }
|
|
538
132
|
* ```
|
|
539
133
|
*
|
|
540
134
|
* @task T1534
|
|
135
|
+
* @task T13133
|
|
541
136
|
*/
|
|
542
137
|
export async function acquireGlobalSlot(canonical, opts = {}) {
|
|
543
|
-
const
|
|
544
|
-
if (
|
|
138
|
+
const notice = opts.notice ?? stderrNotice;
|
|
139
|
+
if (opts.skipAdmission === true || legacyConcurrencyOverride(canonical, notice) === 'bypass') {
|
|
545
140
|
return NOOP_RELEASE;
|
|
546
141
|
}
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
142
|
+
const totalBytes = opts.totalRamGib !== undefined ? opts.totalRamGib * 1024 ** 3 : undefined;
|
|
143
|
+
const fixed = opts.pressureSample;
|
|
144
|
+
const outcome = await admit({
|
|
145
|
+
label: `tool:${canonical}`,
|
|
146
|
+
footprintBytes: opts.footprintBytes ?? footprintForTool(canonical, totalBytes, opts.heapMb),
|
|
147
|
+
// T13237: an evidence build is the project's whole build (`pnpm run
|
|
148
|
+
// build`): it takes the machine-wide full-build slot, like
|
|
149
|
+
// `cleo run --class full-build`.
|
|
150
|
+
...(canonical === 'build' ? { exclusive: true } : {}),
|
|
151
|
+
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
152
|
+
...(opts.task !== undefined ? { task: opts.task } : {}),
|
|
153
|
+
}, {
|
|
154
|
+
wait: true,
|
|
155
|
+
timeoutMs: opts.timeoutMs ?? 3_600_000,
|
|
156
|
+
...(opts.pollMs !== undefined ? { pollMs: opts.pollMs } : {}),
|
|
157
|
+
...(totalBytes !== undefined ? { capacityBytes: admissionCapacityBytes(totalBytes) } : {}),
|
|
158
|
+
// A fixed sample (or none) when given; otherwise the ledger's default.
|
|
159
|
+
...(fixed === undefined
|
|
160
|
+
? {}
|
|
161
|
+
: {
|
|
162
|
+
sample: async () => {
|
|
163
|
+
if (fixed === null)
|
|
164
|
+
throw new Error('pressure disabled');
|
|
165
|
+
return fixed;
|
|
166
|
+
},
|
|
167
|
+
}),
|
|
168
|
+
memoryPressure: memoryGateReporter(notice, `'${canonical}' run`),
|
|
169
|
+
notice,
|
|
170
|
+
});
|
|
171
|
+
if (!outcome.admitted) {
|
|
172
|
+
// @sync-invariant none:local-only machine-wide admission timeout; no store write
|
|
173
|
+
throw new AdmissionTimeoutError(canonical, outcome.refusal);
|
|
579
174
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
if (!path)
|
|
584
|
-
continue;
|
|
585
|
-
let acquired = null;
|
|
586
|
-
try {
|
|
587
|
-
acquired = await lockfile.lock(path, { retries: 0, stale: staleMs, realpath: false });
|
|
588
|
-
}
|
|
589
|
-
catch {
|
|
590
|
-
// gh#1222: the slot is held — but by whom? proper-lockfile decides
|
|
591
|
-
// staleness from mtime, so a process that died without releasing
|
|
592
|
-
// holds the slot for the full staleMs (10 min) and is
|
|
593
|
-
// indistinguishable from a legitimately slow suite. Ask the holder
|
|
594
|
-
// record instead: a dead pid on this host is orphaned NOW. Fails
|
|
595
|
-
// safe — an unknown or remote holder is treated as alive.
|
|
596
|
-
if (reapSlotIfOrphaned(path, staleMs)) {
|
|
597
|
-
try {
|
|
598
|
-
acquired = await lockfile.lock(path, { retries: 0, stale: staleMs, realpath: false });
|
|
599
|
-
}
|
|
600
|
-
catch {
|
|
601
|
-
acquired = null; // someone else won the race for the reaped slot
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
if (acquired) {
|
|
606
|
-
const release = acquired;
|
|
607
|
-
const stopRecording = writeHolder(path, canonical);
|
|
608
|
-
const releaseSlot = async () => {
|
|
609
|
-
stopRecording();
|
|
610
|
-
// Record first, lock second: once the lock is gone the next holder
|
|
611
|
-
// writes its own record, which ours must not delete (T12963).
|
|
612
|
-
try {
|
|
613
|
-
rmSync(holderPath(path), { force: true });
|
|
614
|
-
}
|
|
615
|
-
catch {
|
|
616
|
-
/* best-effort — a stale holder record is only ever advisory */
|
|
617
|
-
}
|
|
618
|
-
try {
|
|
619
|
-
await release();
|
|
620
|
-
}
|
|
621
|
-
catch {
|
|
622
|
-
// proper-lockfile throws if the lock was already released
|
|
623
|
-
// (e.g. via stale recovery). Swallow — the post-condition
|
|
624
|
-
// is "slot is free", which is true either way.
|
|
625
|
-
}
|
|
626
|
-
};
|
|
627
|
-
// T12963: the governor slot is taken AFTER the tool slot, so a run
|
|
628
|
-
// queued on the tool semaphore holds no governor budget while it waits.
|
|
629
|
-
let releaseGrant;
|
|
630
|
-
try {
|
|
631
|
-
releaseGrant = await admitThroughGovernor(canonical, opts, timeoutMs - (Date.now() - startedAt));
|
|
632
|
-
}
|
|
633
|
-
catch (err) {
|
|
634
|
-
await releaseSlot();
|
|
635
|
-
throw err;
|
|
636
|
-
}
|
|
637
|
-
let released = false;
|
|
638
|
-
return async () => {
|
|
639
|
-
if (released)
|
|
640
|
-
return;
|
|
641
|
-
released = true;
|
|
642
|
-
await releaseGrant();
|
|
643
|
-
await releaseSlot();
|
|
644
|
-
};
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
// All slots busy — sleep and retry.
|
|
648
|
-
await sleep(pollMs);
|
|
175
|
+
const { grant } = outcome;
|
|
176
|
+
if (grant.ungoverned) {
|
|
177
|
+
notice(`${describeAdmissionIoError(grant.ungoverned)}: running the '${canonical}' run ungoverned`);
|
|
649
178
|
}
|
|
650
|
-
|
|
651
|
-
// what made an orphaned slot look like a broken semaphore.
|
|
652
|
-
const holders = listSlotHolders(canonical)
|
|
653
|
-
.filter((r) => r.held)
|
|
654
|
-
.map((r) => {
|
|
655
|
-
const h = r.holder;
|
|
656
|
-
if (!h)
|
|
657
|
-
return `${r.slot}: holder unknown`;
|
|
658
|
-
const groups = h.toolGroups?.length ? ` with tool group(s) ${h.toolGroups.join(',')}` : '';
|
|
659
|
-
return `${r.slot}: pid ${h.pid} on ${h.host}${groups} since ${h.acquiredAt}${r.alive ? '' : ' (DEAD)'}`;
|
|
660
|
-
});
|
|
661
|
-
throw new Error(`Timed out after ${timeoutMs}ms waiting for a free '${canonical}' tool slot ` +
|
|
662
|
-
`(max ${max} concurrent).` +
|
|
663
|
-
(holders.length > 0 ? ` Current holders — ${holders.join('; ')}.` : '') +
|
|
664
|
-
` Override with CLEO_TOOL_CONCURRENCY_${canonical.toUpperCase().replace(/-/g, '_')}=<n>.`);
|
|
665
|
-
}
|
|
666
|
-
function sleep(ms) {
|
|
667
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
179
|
+
return withAdmission(() => grant.release(), grant.token);
|
|
668
180
|
}
|
|
669
181
|
//# sourceMappingURL=tool-semaphore.js.map
|