@cleocode/core 2026.9.26 → 2026.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/journal.d.ts +9 -5
- package/dist/cloud/journal.d.ts.map +1 -1
- package/dist/cloud/journal.js +29 -8
- package/dist/cloud/journal.js.map +1 -1
- package/dist/cloud/manifest-check.d.ts +140 -4
- package/dist/cloud/manifest-check.d.ts.map +1 -1
- package/dist/cloud/manifest-check.js +309 -10
- package/dist/cloud/manifest-check.js.map +1 -1
- package/dist/cloud/nexus-attach.d.ts +119 -0
- package/dist/cloud/nexus-attach.d.ts.map +1 -0
- package/dist/cloud/nexus-attach.js +267 -0
- package/dist/cloud/nexus-attach.js.map +1 -0
- package/dist/cloud/nexus-auth.d.ts +15 -3
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +90 -6
- package/dist/cloud/nexus-auth.js.map +1 -1
- package/dist/cloud/nexus-cloud-activity.d.ts +37 -0
- package/dist/cloud/nexus-cloud-activity.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-activity.js +79 -0
- package/dist/cloud/nexus-cloud-activity.js.map +1 -0
- package/dist/cloud/nexus-cloud-status.d.ts +132 -0
- package/dist/cloud/nexus-cloud-status.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-status.js +476 -0
- package/dist/cloud/nexus-cloud-status.js.map +1 -0
- package/dist/cloud/nexus-cloud.d.ts +179 -0
- package/dist/cloud/nexus-cloud.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud.js +296 -0
- package/dist/cloud/nexus-cloud.js.map +1 -0
- package/dist/cloud/nexus-device.d.ts +32 -7
- package/dist/cloud/nexus-device.d.ts.map +1 -1
- package/dist/cloud/nexus-device.js +54 -7
- package/dist/cloud/nexus-device.js.map +1 -1
- package/dist/cloud/nexus-enrol.d.ts +35 -4
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +192 -47
- package/dist/cloud/nexus-enrol.js.map +1 -1
- package/dist/cloud/nexus-home.d.ts +74 -0
- package/dist/cloud/nexus-home.d.ts.map +1 -0
- package/dist/cloud/nexus-home.js +97 -0
- package/dist/cloud/nexus-home.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +8 -1
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +138 -11
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-logout.d.ts +114 -0
- package/dist/cloud/nexus-logout.d.ts.map +1 -0
- package/dist/cloud/nexus-logout.js +429 -0
- package/dist/cloud/nexus-logout.js.map +1 -0
- package/dist/cloud/nexus-vault-keys.d.ts +129 -0
- package/dist/cloud/nexus-vault-keys.d.ts.map +1 -0
- package/dist/cloud/nexus-vault-keys.js +277 -0
- package/dist/cloud/nexus-vault-keys.js.map +1 -0
- package/dist/cloud/nexus-vault-state.d.ts +121 -0
- package/dist/cloud/nexus-vault-state.d.ts.map +1 -0
- package/dist/cloud/nexus-vault-state.js +274 -0
- package/dist/cloud/nexus-vault-state.js.map +1 -0
- package/dist/cloud/nexus-vault.d.ts +160 -0
- package/dist/cloud/nexus-vault.d.ts.map +1 -0
- package/dist/cloud/nexus-vault.js +1733 -0
- package/dist/cloud/nexus-vault.js.map +1 -0
- package/dist/cloud/signing.d.ts +24 -8
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +61 -15
- package/dist/cloud/signing.js.map +1 -1
- package/dist/docs/export-document.js +8341 -3317
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/migrations.d.ts +75 -0
- package/dist/doctor/migrations.d.ts.map +1 -0
- package/dist/doctor/migrations.js +136 -0
- package/dist/doctor/migrations.js.map +1 -0
- package/dist/doctor/sync-sealer.d.ts +48 -0
- package/dist/doctor/sync-sealer.d.ts.map +1 -0
- package/dist/doctor/sync-sealer.js +109 -0
- package/dist/doctor/sync-sealer.js.map +1 -0
- package/dist/doctor/sync-triggers.d.ts +53 -0
- package/dist/doctor/sync-triggers.d.ts.map +1 -0
- package/dist/doctor/sync-triggers.js +157 -0
- package/dist/doctor/sync-triggers.js.map +1 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +5 -1
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/llm/plugin-facade.js +8668 -3644
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/nexus/projects-clean.d.ts +3 -0
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +9 -3
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/registry-roots.d.ts +3 -1
- package/dist/nexus/registry-roots.d.ts.map +1 -1
- package/dist/nexus/registry-roots.js +5 -2
- package/dist/nexus/registry-roots.js.map +1 -1
- package/dist/nexus/registry.d.ts +8 -1
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +24 -10
- package/dist/nexus/registry.js.map +1 -1
- package/dist/nexus/workspace.d.ts +4 -1
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +10 -4
- package/dist/nexus/workspace.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +7 -2
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestrate/worker-verify.d.ts +121 -12
- package/dist/orchestrate/worker-verify.d.ts.map +1 -1
- package/dist/orchestrate/worker-verify.js +172 -21
- package/dist/orchestrate/worker-verify.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +15 -9
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +9 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +9 -2
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/resources/backend.d.ts +15 -3
- package/dist/resources/backend.d.ts.map +1 -1
- package/dist/resources/backend.js +7 -3
- package/dist/resources/backend.js.map +1 -1
- package/dist/resources/darwin-backend.d.ts +142 -0
- package/dist/resources/darwin-backend.d.ts.map +1 -0
- package/dist/resources/darwin-backend.js +288 -0
- package/dist/resources/darwin-backend.js.map +1 -0
- package/dist/resources/governor.d.ts +44 -1
- package/dist/resources/governor.d.ts.map +1 -1
- package/dist/resources/governor.js +100 -36
- package/dist/resources/governor.js.map +1 -1
- package/dist/resources/heavy-command.d.ts +132 -0
- package/dist/resources/heavy-command.d.ts.map +1 -0
- package/dist/resources/heavy-command.js +768 -0
- package/dist/resources/heavy-command.js.map +1 -0
- package/dist/resources/monitor.d.ts +50 -1
- package/dist/resources/monitor.d.ts.map +1 -1
- package/dist/resources/monitor.js +83 -1
- package/dist/resources/monitor.js.map +1 -1
- package/dist/resources/run-admission.d.ts +303 -0
- package/dist/resources/run-admission.d.ts.map +1 -0
- package/dist/resources/run-admission.js +648 -0
- package/dist/resources/run-admission.js.map +1 -0
- package/dist/resources/run-class.d.ts +111 -0
- package/dist/resources/run-class.d.ts.map +1 -0
- package/dist/resources/run-class.js +658 -0
- package/dist/resources/run-class.js.map +1 -0
- package/dist/resources/run-governed.d.ts +158 -0
- package/dist/resources/run-governed.d.ts.map +1 -0
- package/dist/resources/run-governed.js +406 -0
- package/dist/resources/run-governed.js.map +1 -0
- package/dist/resources/slot-holder.d.ts +267 -0
- package/dist/resources/slot-holder.d.ts.map +1 -0
- package/dist/resources/slot-holder.js +505 -0
- package/dist/resources/slot-holder.js.map +1 -0
- package/dist/resources/tool-groups.d.ts +74 -0
- package/dist/resources/tool-groups.d.ts.map +1 -0
- package/dist/resources/tool-groups.js +118 -0
- package/dist/resources/tool-groups.js.map +1 -0
- package/dist/routing/build-command-groups.d.ts.map +1 -1
- package/dist/routing/build-command-groups.js +1 -0
- package/dist/routing/build-command-groups.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +8676 -3652
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +3 -2
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +5 -2
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/state.d.ts +7 -0
- package/dist/sentient/state.d.ts.map +1 -1
- package/dist/sentient/state.js.map +1 -1
- package/dist/sentient/tick.d.ts +14 -2
- package/dist/sentient/tick.d.ts.map +1 -1
- package/dist/sentient/tick.js +63 -4
- package/dist/sentient/tick.js.map +1 -1
- package/dist/setup/sections/nexus-account.d.ts +8 -6
- package/dist/setup/sections/nexus-account.d.ts.map +1 -1
- package/dist/setup/sections/nexus-account.js +53 -9
- package/dist/setup/sections/nexus-account.js.map +1 -1
- package/dist/store/backup-recover.d.ts.map +1 -1
- package/dist/store/backup-recover.js +5 -0
- package/dist/store/backup-recover.js.map +1 -1
- package/dist/store/data-accessor.d.ts +1 -0
- package/dist/store/data-accessor.d.ts.map +1 -1
- package/dist/store/data-accessor.js +7 -0
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts +23 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +126 -36
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/recovery.d.ts.map +1 -1
- package/dist/store/exodus/recovery.js +15 -0
- package/dist/store/exodus/recovery.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +5 -0
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/lock.d.ts +8 -1
- package/dist/store/lock.d.ts.map +1 -1
- package/dist/store/lock.js +10 -2
- package/dist/store/lock.js.map +1 -1
- package/dist/store/migration-manager.d.ts +5 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +11 -0
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-runner.d.ts +158 -0
- package/dist/store/migration-runner.d.ts.map +1 -0
- package/dist/store/migration-runner.js +493 -0
- package/dist/store/migration-runner.js.map +1 -0
- package/dist/store/portable-bundle-import.d.ts +15 -1
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +24 -4
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts +43 -0
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +79 -5
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts +20 -0
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +38 -3
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts +33 -0
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +34 -7
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/row-identity-registry.d.ts +137 -7
- package/dist/store/row-identity-registry.d.ts.map +1 -1
- package/dist/store/row-identity-registry.js +364 -9
- package/dist/store/row-identity-registry.js.map +1 -1
- package/dist/store/row-identity.d.ts.map +1 -1
- package/dist/store/row-identity.js +9 -10
- package/dist/store/row-identity.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +10 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts +31 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +5 -1
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/sync/capture.d.ts +203 -0
- package/dist/store/sync/capture.d.ts.map +1 -0
- package/dist/store/sync/capture.js +562 -0
- package/dist/store/sync/capture.js.map +1 -0
- package/dist/store/sync/clock-store.d.ts.map +1 -1
- package/dist/store/sync/clock-store.js +2 -0
- package/dist/store/sync/clock-store.js.map +1 -1
- package/dist/store/sync/fk-orphans.d.ts +133 -0
- package/dist/store/sync/fk-orphans.d.ts.map +1 -0
- package/dist/store/sync/fk-orphans.js +265 -0
- package/dist/store/sync/fk-orphans.js.map +1 -0
- package/dist/store/sync/flags.d.ts +7 -0
- package/dist/store/sync/flags.d.ts.map +1 -1
- package/dist/store/sync/flags.js +16 -0
- package/dist/store/sync/flags.js.map +1 -1
- package/dist/store/sync/hlc.d.ts.map +1 -1
- package/dist/store/sync/hlc.js +4 -0
- package/dist/store/sync/hlc.js.map +1 -1
- package/dist/store/sync/identity-fill.d.ts +45 -0
- package/dist/store/sync/identity-fill.d.ts.map +1 -0
- package/dist/store/sync/identity-fill.js +85 -0
- package/dist/store/sync/identity-fill.js.map +1 -0
- package/dist/store/sync/machinery.d.ts +27 -0
- package/dist/store/sync/machinery.d.ts.map +1 -0
- package/dist/store/sync/machinery.js +44 -0
- package/dist/store/sync/machinery.js.map +1 -0
- package/dist/store/sync/netting.d.ts +120 -0
- package/dist/store/sync/netting.d.ts.map +1 -0
- package/dist/store/sync/netting.js +336 -0
- package/dist/store/sync/netting.js.map +1 -0
- package/dist/store/sync/replica.d.ts +59 -3
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +84 -3
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/schema.d.ts +18 -3
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +27 -3
- package/dist/store/sync/schema.js.map +1 -1
- package/dist/store/sync/seal-backlog.d.ts +21 -0
- package/dist/store/sync/seal-backlog.d.ts.map +1 -0
- package/dist/store/sync/seal-backlog.js +24 -0
- package/dist/store/sync/seal-backlog.js.map +1 -0
- package/dist/store/sync/sealer-values.d.ts +34 -0
- package/dist/store/sync/sealer-values.d.ts.map +1 -0
- package/dist/store/sync/sealer-values.js +53 -0
- package/dist/store/sync/sealer-values.js.map +1 -0
- package/dist/store/sync/sealer.d.ts +145 -0
- package/dist/store/sync/sealer.d.ts.map +1 -0
- package/dist/store/sync/sealer.js +906 -0
- package/dist/store/sync/sealer.js.map +1 -0
- package/dist/store/sync/structural.d.ts +63 -0
- package/dist/store/sync/structural.d.ts.map +1 -0
- package/dist/store/sync/structural.js +180 -0
- package/dist/store/sync/structural.js.map +1 -0
- package/dist/store/sync/timestamps.d.ts +92 -0
- package/dist/store/sync/timestamps.d.ts.map +1 -0
- package/dist/store/sync/timestamps.js +228 -0
- package/dist/store/sync/timestamps.js.map +1 -0
- package/dist/store/sync/tombstones.d.ts +75 -0
- package/dist/store/sync/tombstones.d.ts.map +1 -0
- package/dist/store/sync/tombstones.js +103 -0
- package/dist/store/sync/tombstones.js.map +1 -0
- package/dist/store/sync/trigger-classes.d.ts +221 -0
- package/dist/store/sync/trigger-classes.d.ts.map +1 -0
- package/dist/store/sync/trigger-classes.js +441 -0
- package/dist/store/sync/trigger-classes.js.map +1 -0
- package/dist/store/sync/trigger-suspend-at-path.d.ts +23 -0
- package/dist/store/sync/trigger-suspend-at-path.d.ts.map +1 -0
- package/dist/store/sync/trigger-suspend-at-path.js +44 -0
- package/dist/store/sync/trigger-suspend-at-path.js.map +1 -0
- package/dist/store/sync/writer-version.d.ts +43 -0
- package/dist/store/sync/writer-version.d.ts.map +1 -0
- package/dist/store/sync/writer-version.js +90 -0
- package/dist/store/sync/writer-version.js.map +1 -0
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +102 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/trigger-suspend-schema.d.ts +44 -0
- package/dist/store/trigger-suspend-schema.d.ts.map +1 -0
- package/dist/store/trigger-suspend-schema.js +25 -0
- package/dist/store/trigger-suspend-schema.js.map +1 -0
- package/dist/store/vault-manifest.d.ts +365 -0
- package/dist/store/vault-manifest.d.ts.map +1 -0
- package/dist/store/vault-manifest.js +812 -0
- package/dist/store/vault-manifest.js.map +1 -0
- package/dist/store/writer-lease.d.ts +31 -0
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +65 -2
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +21 -0
- package/dist/system/health.js.map +1 -1
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +3 -1
- package/dist/system/project-health.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +58 -0
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +75 -6
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +150 -23
- package/dist/tasks/affected-scope.d.ts.map +1 -1
- package/dist/tasks/affected-scope.js +320 -32
- package/dist/tasks/affected-scope.js.map +1 -1
- package/dist/tasks/change-set.d.ts +96 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +169 -4
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete-ci.d.ts +115 -0
- package/dist/tasks/complete-ci.d.ts.map +1 -0
- package/dist/tasks/complete-ci.js +171 -0
- package/dist/tasks/complete-ci.js.map +1 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +50 -17
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/compute-task-view.d.ts.map +1 -1
- package/dist/tasks/compute-task-view.js +7 -0
- package/dist/tasks/compute-task-view.js.map +1 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +51 -30
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts +6 -0
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +9 -3
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/evidence.d.ts +3 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +143 -12
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-notes.d.ts +22 -0
- package/dist/tasks/gate-notes.d.ts.map +1 -0
- package/dist/tasks/gate-notes.js +33 -0
- package/dist/tasks/gate-notes.js.map +1 -0
- package/dist/tasks/index.d.ts +2 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +2 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/test-run-binding.d.ts +117 -0
- package/dist/tasks/test-run-binding.d.ts.map +1 -0
- package/dist/tasks/test-run-binding.js +365 -0
- package/dist/tasks/test-run-binding.js.map +1 -0
- package/dist/tasks/tool-cache-env.d.ts +123 -0
- package/dist/tasks/tool-cache-env.d.ts.map +1 -0
- package/dist/tasks/tool-cache-env.js +287 -0
- package/dist/tasks/tool-cache-env.js.map +1 -0
- package/dist/tasks/tool-cache-failed-first.d.ts +155 -0
- package/dist/tasks/tool-cache-failed-first.d.ts.map +1 -0
- package/dist/tasks/tool-cache-failed-first.js +285 -0
- package/dist/tasks/tool-cache-failed-first.js.map +1 -0
- package/dist/tasks/tool-cache.d.ts +375 -55
- package/dist/tasks/tool-cache.d.ts.map +1 -1
- package/dist/tasks/tool-cache.js +912 -303
- package/dist/tasks/tool-cache.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +4 -3
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +15 -4
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/tool-semaphore.d.ts +67 -7
- package/dist/tasks/tool-semaphore.d.ts.map +1 -1
- package/dist/tasks/tool-semaphore.js +134 -56
- package/dist/tasks/tool-semaphore.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +4 -0
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +6 -0
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +8 -0
- package/dist/validation/engine-ops.js.map +1 -1
- package/migrations/drizzle-cleo-project/20260930170000_t12819-trigger-suspend-clause/migration.sql +367 -0
- package/migrations/sync-journal/20260930120000_t12343-capture/migration.sql +47 -0
- package/migrations/sync-journal/20261001170000_t12984-sealer/migration.sql +101 -0
- package/package.json +13 -13
- package/templates/CLEO-INJECTION.md +5 -5
- package/templates/CLEO-REFERENCE.md +8 -4
|
@@ -1,9 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The checkpoint manifest rules of Cleo Nexus, mirrored from cleo-nexus
|
|
3
|
+
* `packages/shared/src/manifest-check.ts` (journal spec §2.11, T089, T090): the server runs them on
|
|
4
|
+
* every checkpoint create, and a client runs them to know what the server will accept before it
|
|
5
|
+
* writes anything. Keep the two copies identical in behaviour (T13034).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 3 for a manifest with the §2.11 accounting fields (checkpoint/v3), else 2. The server's copy is in
|
|
9
|
+
* its wire contract; contracts export no runtime helpers here (arch gate 10), so it lives beside the
|
|
10
|
+
* rules.
|
|
11
|
+
*
|
|
12
|
+
* @param m - A checkpoint manifest.
|
|
13
|
+
* @returns The manifest format, which picks the checkpoint signing domain.
|
|
14
|
+
*/
|
|
15
|
+
export function manifestVersion(m) {
|
|
16
|
+
return m.replayPin !== undefined ? 3 : 2;
|
|
17
|
+
}
|
|
1
18
|
/** Sum the per-table deltas of every segment folded into a checkpoint. */
|
|
2
19
|
export function sumDeltas(deltas) {
|
|
3
20
|
const out = {};
|
|
4
21
|
for (const d of deltas) {
|
|
5
22
|
for (const [table, { created, deleted }] of Object.entries(d)) {
|
|
6
|
-
|
|
23
|
+
// Own keys only: a table named like an Object.prototype member must not read the prototype.
|
|
24
|
+
const prev = (Object.hasOwn(out, table) ? out[table] : undefined) ?? {
|
|
25
|
+
created: 0,
|
|
26
|
+
deleted: 0,
|
|
27
|
+
};
|
|
7
28
|
out[table] = { created: prev.created + created, deleted: prev.deleted + deleted };
|
|
8
29
|
}
|
|
9
30
|
}
|
|
@@ -12,10 +33,10 @@ export function sumDeltas(deltas) {
|
|
|
12
33
|
/**
|
|
13
34
|
* Decide whether a new checkpoint manifest may replace its parent.
|
|
14
35
|
*
|
|
15
|
-
* The rule is exact, not a heuristic: for every table,
|
|
36
|
+
* The rule is exact, not a heuristic: for every table either side names,
|
|
16
37
|
* `next.rows === parent.rows + created - deleted`, summed over the segments between the two
|
|
17
|
-
* checkpoints. Every shrink therefore needs a tombstone op to back it
|
|
18
|
-
* parent must still be present, even with 0 rows.
|
|
38
|
+
* checkpoints. Every shrink therefore needs a tombstone op to back it, and every new table's rows
|
|
39
|
+
* need declared creates. A table with rows in the parent must still be present, even with 0 rows.
|
|
19
40
|
*
|
|
20
41
|
* With no parent (genesis), only the schema version is checked.
|
|
21
42
|
*/
|
|
@@ -31,14 +52,22 @@ export function checkManifest(parent, next, between, maxAcceptedSchemaVersion) {
|
|
|
31
52
|
if (parent === null)
|
|
32
53
|
return { ok: true };
|
|
33
54
|
const findings = [];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
55
|
+
// Every table either side names: a new table with rows needs declared creates too.
|
|
56
|
+
const tables = new Set([
|
|
57
|
+
...Object.keys(parent.tables),
|
|
58
|
+
...Object.keys(between),
|
|
59
|
+
...Object.keys(next.tables),
|
|
60
|
+
]);
|
|
61
|
+
for (const table of [...tables].sort()) {
|
|
62
|
+
const parentRows = Object.hasOwn(parent.tables, table) ? (parent.tables[table]?.rows ?? 0) : 0;
|
|
63
|
+
const { created, deleted } = Object.hasOwn(between, table)
|
|
64
|
+
? (between[table] ?? { created: 0, deleted: 0 })
|
|
65
|
+
: { created: 0, deleted: 0 };
|
|
38
66
|
const expectedRows = parentRows + created - deleted;
|
|
39
|
-
const entry = next.tables[table];
|
|
67
|
+
const entry = Object.hasOwn(next.tables, table) ? next.tables[table] : undefined;
|
|
40
68
|
if (entry === undefined) {
|
|
41
|
-
|
|
69
|
+
// Absent counts as 0 rows only when 0 is what the journal leaves (a negative expectation too).
|
|
70
|
+
if (parentRows > 0 || expectedRows !== 0) {
|
|
42
71
|
findings.push({
|
|
43
72
|
table,
|
|
44
73
|
parentRows,
|
|
@@ -67,4 +96,274 @@ export function checkManifest(parent, next, between, maxAcceptedSchemaVersion) {
|
|
|
67
96
|
? { ok: true }
|
|
68
97
|
: { ok: false, code: 'E_REGRESSION', tables: findings };
|
|
69
98
|
}
|
|
99
|
+
/** A window built from all of its transactions (and segment schema versions), for small windows and tests. */
|
|
100
|
+
export function windowOf(txns, schemaVersions = []) {
|
|
101
|
+
return { deltas: sumDeltas(txns.map((t) => t.deltas)), txns, schemaVersions };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The transition points of a replay pin (journal spec §2.11 §7): each seq at which the highest
|
|
105
|
+
* schemaVersion seen so far rises above everything before it, starting from `baseline` (the parent
|
|
106
|
+
* checkpoint's schemaVersion).
|
|
107
|
+
*/
|
|
108
|
+
export function schemaRises(baseline, schemaVersions) {
|
|
109
|
+
const out = [];
|
|
110
|
+
let max = baseline;
|
|
111
|
+
for (const s of schemaVersions) {
|
|
112
|
+
if (s.schemaVersion > max) {
|
|
113
|
+
out.push({ seq: s.seq, schemaVersion: s.schemaVersion });
|
|
114
|
+
max = s.schemaVersion;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
/** The key of a transaction ref in maps. */
|
|
120
|
+
export function txnRefKey(r) {
|
|
121
|
+
return `${r.replicaId}\u0000${r.replicaSeq}\u0000${r.txn}`;
|
|
122
|
+
}
|
|
123
|
+
const ZERO = { created: 0, deleted: 0 };
|
|
124
|
+
const own = (d, t) => Object.hasOwn(d, t) ? (d[t] ?? ZERO) : ZERO;
|
|
125
|
+
function addInto(into, d, sign = 1) {
|
|
126
|
+
for (const [t, c] of Object.entries(d)) {
|
|
127
|
+
const s = into.get(t) ?? ZERO;
|
|
128
|
+
into.set(t, { created: s.created + sign * c.created, deleted: s.deleted + sign * c.deleted });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Decide whether a v3 checkpoint manifest may replace its parent (journal spec §2.11 §4). Exact:
|
|
133
|
+
* no aggregate slack for pending and no age bound. With `A` = (window transactions ∪ the parent's
|
|
134
|
+
* pending) − the new pending, every table must hold
|
|
135
|
+
*
|
|
136
|
+
* rows = parent.rows + Decl(A).created − Decl(A).deleted
|
|
137
|
+
* − Σ voided.created + Σ voided.deleted
|
|
138
|
+
* + Σ revived.created − Σ revived.deleted
|
|
139
|
+
* − pruned
|
|
140
|
+
*
|
|
141
|
+
* and: pending ⊆ window ∪ parent.pending; every voided ref ∈ A with counts ≤ its declared counts;
|
|
142
|
+
* every revived ref in the stream's cumulative voided set with counts ≤ what is still voided there;
|
|
143
|
+
* 0 ≤ pruned ≤ parent.rows + Decl(A).created; the replay pin's transitions are exactly the window's
|
|
144
|
+
* schema rise points from the parent's schemaVersion, and the manifest's schemaVersion is at least the
|
|
145
|
+
* parent's and the last of those rises (T090), so the next window's baseline never sits below what
|
|
146
|
+
* the replay already reached. Decl(A) is computed from the window's sum, so
|
|
147
|
+
* only the named transactions need loading: Decl(window) + Decl(parent.pending) − Decl(pending).
|
|
148
|
+
* A v2 manifest is the v3 one with empty lists; a v2 segment is one transaction (txn 0) with the
|
|
149
|
+
* segment's deltas. Once a stream has a v3 checkpoint, a v2 one is refused (E_STREAM_VERSION): the
|
|
150
|
+
* lineage is linear, so checking the parent ratchets the whole stream.
|
|
151
|
+
*
|
|
152
|
+
* @param input.window - The window's deltas sum, its named transactions and its segment versions.
|
|
153
|
+
* @param input.parentPending - The declared deltas of the parent manifest's pending refs. Each of
|
|
154
|
+
* them must be here (`pending-unresolved` otherwise).
|
|
155
|
+
* @param input.voidedBefore - The stream's cumulative voided set before this checkpoint: at least
|
|
156
|
+
* the entries of every ref `next.revived` names.
|
|
157
|
+
*/
|
|
158
|
+
export function checkManifestV3(input) {
|
|
159
|
+
const { parent, next } = input;
|
|
160
|
+
const transitions = next.replayPin?.transitions ?? [];
|
|
161
|
+
const ahead = Math.max(next.schemaVersion, ...transitions.map((t) => t.schemaVersion));
|
|
162
|
+
if (ahead > input.maxAcceptedSchemaVersion) {
|
|
163
|
+
return {
|
|
164
|
+
ok: false,
|
|
165
|
+
code: 'E_SCHEMA_AHEAD',
|
|
166
|
+
schemaVersion: ahead,
|
|
167
|
+
maxAccepted: input.maxAcceptedSchemaVersion,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
if (parent !== null && manifestVersion(parent) === 3 && manifestVersion(next) === 2) {
|
|
171
|
+
return {
|
|
172
|
+
ok: false,
|
|
173
|
+
code: 'E_STREAM_VERSION',
|
|
174
|
+
reason: 'stream-v3',
|
|
175
|
+
parentVersion: 3,
|
|
176
|
+
nextVersion: 2,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const pending = next.pending ?? [];
|
|
180
|
+
const voided = next.voided ?? [];
|
|
181
|
+
const revived = next.revived ?? [];
|
|
182
|
+
const pruned = next.pruned ?? {};
|
|
183
|
+
const findings = [];
|
|
184
|
+
for (const [list, refs] of [
|
|
185
|
+
['pending', pending],
|
|
186
|
+
['voided', voided.map((v) => v.ref)],
|
|
187
|
+
['revived', revived.map((v) => v.ref)],
|
|
188
|
+
]) {
|
|
189
|
+
const seen = new Set();
|
|
190
|
+
for (const ref of refs) {
|
|
191
|
+
const k = txnRefKey(ref);
|
|
192
|
+
if (seen.has(k))
|
|
193
|
+
findings.push({ reason: 'duplicate-ref', list, ref });
|
|
194
|
+
seen.add(k);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (parent === null) {
|
|
198
|
+
// Genesis snapshots the store: there is no window to account for or replay.
|
|
199
|
+
const empty = pending.length === 0 &&
|
|
200
|
+
voided.length === 0 &&
|
|
201
|
+
revived.length === 0 &&
|
|
202
|
+
Object.keys(pruned).length === 0 &&
|
|
203
|
+
transitions.length === 0;
|
|
204
|
+
if (!empty)
|
|
205
|
+
findings.push({ reason: 'genesis-not-empty' });
|
|
206
|
+
return findings.length > 0
|
|
207
|
+
? { ok: false, code: 'E_MANIFEST_ACCOUNTING', findings }
|
|
208
|
+
: { ok: true };
|
|
209
|
+
}
|
|
210
|
+
const parentPending = new Map(input.parentPending.map((t) => [txnRefKey(t.ref), t]));
|
|
211
|
+
for (const ref of parent.pending ?? []) {
|
|
212
|
+
if (!parentPending.has(txnRefKey(ref)))
|
|
213
|
+
findings.push({ reason: 'pending-unresolved', ref });
|
|
214
|
+
}
|
|
215
|
+
const candidates = new Map();
|
|
216
|
+
for (const t of input.window.txns)
|
|
217
|
+
candidates.set(txnRefKey(t.ref), t);
|
|
218
|
+
for (const [k, t] of parentPending)
|
|
219
|
+
candidates.set(k, t);
|
|
220
|
+
const pendingKeys = new Set(pending.map(txnRefKey));
|
|
221
|
+
// Decl(A) = Decl(window) + Decl(parent.pending) − Decl(pending), without expanding the window.
|
|
222
|
+
const declA = new Map();
|
|
223
|
+
addInto(declA, input.window.deltas);
|
|
224
|
+
for (const t of parentPending.values())
|
|
225
|
+
addInto(declA, t.deltas);
|
|
226
|
+
for (const ref of pending) {
|
|
227
|
+
const t = candidates.get(txnRefKey(ref));
|
|
228
|
+
if (!t)
|
|
229
|
+
findings.push({ reason: 'pending-not-in-window', ref });
|
|
230
|
+
else
|
|
231
|
+
addInto(declA, t.deltas, -1);
|
|
232
|
+
}
|
|
233
|
+
const appliedByKey = new Map([...candidates].filter(([k]) => !pendingKeys.has(k)));
|
|
234
|
+
for (const v of voided) {
|
|
235
|
+
const declared = appliedByKey.get(txnRefKey(v.ref));
|
|
236
|
+
if (!declared) {
|
|
237
|
+
findings.push({ reason: 'voided-not-applied', ref: v.ref });
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
for (const [table, c] of Object.entries(v.deltas)) {
|
|
241
|
+
const d = own(declared.deltas, table);
|
|
242
|
+
if (c.created > d.created || c.deleted > d.deleted) {
|
|
243
|
+
findings.push({ reason: 'voided-exceeds-declared', ref: v.ref, table });
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const before = new Map(input.voidedBefore.map((t) => [txnRefKey(t.ref), t]));
|
|
248
|
+
for (const r of revived) {
|
|
249
|
+
const still = before.get(txnRefKey(r.ref));
|
|
250
|
+
if (!still) {
|
|
251
|
+
findings.push({ reason: 'revived-not-voided', ref: r.ref });
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
for (const [table, c] of Object.entries(r.deltas)) {
|
|
255
|
+
const d = own(still.deltas, table);
|
|
256
|
+
if (c.created > d.created || c.deleted > d.deleted) {
|
|
257
|
+
findings.push({ reason: 'revived-exceeds-voided', ref: r.ref, table });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
for (const [table, n] of Object.entries(pruned)) {
|
|
262
|
+
const parentRows = Object.hasOwn(parent.tables, table) ? (parent.tables[table]?.rows ?? 0) : 0;
|
|
263
|
+
const max = parentRows + (declA.get(table)?.created ?? 0);
|
|
264
|
+
if (n < 0 || n > max)
|
|
265
|
+
findings.push({ reason: 'pruned-out-of-range', table, pruned: n, max });
|
|
266
|
+
}
|
|
267
|
+
if (next.replayPin !== undefined) {
|
|
268
|
+
const expected = schemaRises(parent.schemaVersion, input.window.schemaVersions);
|
|
269
|
+
const actual = transitions.map((t) => ({ seq: t.seq, schemaVersion: t.schemaVersion }));
|
|
270
|
+
const same = expected.length === actual.length &&
|
|
271
|
+
expected.every((e, i) => e.seq === actual[i]?.seq && e.schemaVersion === actual[i]?.schemaVersion);
|
|
272
|
+
if (!same)
|
|
273
|
+
findings.push({ reason: 'transitions-mismatch', expected, actual });
|
|
274
|
+
// T090: the next window's baseline is this manifest's schemaVersion, so it may not sit below the
|
|
275
|
+
// parent's or the window's last rise; the server would then expect rises the replay already did.
|
|
276
|
+
const floor = Math.max(parent.schemaVersion, ...expected.map((e) => e.schemaVersion));
|
|
277
|
+
if (next.schemaVersion < floor) {
|
|
278
|
+
findings.push({
|
|
279
|
+
reason: 'schema-version-below-floor',
|
|
280
|
+
schemaVersion: next.schemaVersion,
|
|
281
|
+
floor,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (findings.length > 0)
|
|
286
|
+
return { ok: false, code: 'E_MANIFEST_ACCOUNTING', findings };
|
|
287
|
+
// The exact row rule, per table.
|
|
288
|
+
const adjust = new Map();
|
|
289
|
+
const bump = (t, n) => adjust.set(t, (adjust.get(t) ?? 0) + n);
|
|
290
|
+
for (const v of voided)
|
|
291
|
+
for (const [t, c] of Object.entries(v.deltas))
|
|
292
|
+
bump(t, c.deleted - c.created);
|
|
293
|
+
for (const r of revived)
|
|
294
|
+
for (const [t, c] of Object.entries(r.deltas))
|
|
295
|
+
bump(t, c.created - c.deleted);
|
|
296
|
+
for (const [t, n] of Object.entries(pruned))
|
|
297
|
+
bump(t, -n);
|
|
298
|
+
const tables = new Set([
|
|
299
|
+
...Object.keys(parent.tables),
|
|
300
|
+
...declA.keys(),
|
|
301
|
+
...adjust.keys(),
|
|
302
|
+
...Object.keys(next.tables),
|
|
303
|
+
]);
|
|
304
|
+
const regressions = [];
|
|
305
|
+
for (const table of [...tables].sort()) {
|
|
306
|
+
const parentRows = Object.hasOwn(parent.tables, table) ? (parent.tables[table]?.rows ?? 0) : 0;
|
|
307
|
+
const { created, deleted } = declA.get(table) ?? ZERO;
|
|
308
|
+
const expectedRows = parentRows + created - deleted + (adjust.get(table) ?? 0);
|
|
309
|
+
const entry = Object.hasOwn(next.tables, table) ? next.tables[table] : undefined;
|
|
310
|
+
if (entry === undefined) {
|
|
311
|
+
if (parentRows > 0 || expectedRows !== 0) {
|
|
312
|
+
regressions.push({
|
|
313
|
+
table,
|
|
314
|
+
parentRows,
|
|
315
|
+
created,
|
|
316
|
+
deleted,
|
|
317
|
+
expectedRows,
|
|
318
|
+
actualRows: 0,
|
|
319
|
+
reason: 'missing-table',
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
if (entry.rows !== expectedRows) {
|
|
325
|
+
regressions.push({
|
|
326
|
+
table,
|
|
327
|
+
parentRows,
|
|
328
|
+
created,
|
|
329
|
+
deleted,
|
|
330
|
+
expectedRows,
|
|
331
|
+
actualRows: entry.rows,
|
|
332
|
+
reason: 'count-mismatch',
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return regressions.length === 0
|
|
337
|
+
? { ok: true }
|
|
338
|
+
: { ok: false, code: 'E_REGRESSION', tables: regressions };
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* The stream's cumulative voided set after an accepted checkpoint: the set before it, plus this
|
|
342
|
+
* window's `voided`, minus its `revived`, per ref and table; refs left with nothing are dropped.
|
|
343
|
+
*/
|
|
344
|
+
export function nextVoidedSet(before, voided, revived) {
|
|
345
|
+
const out = new Map();
|
|
346
|
+
const apply = (list, sign) => {
|
|
347
|
+
for (const t of list) {
|
|
348
|
+
const k = txnRefKey(t.ref);
|
|
349
|
+
const e = out.get(k) ?? { ref: t.ref, counts: new Map() };
|
|
350
|
+
addInto(e.counts, t.deltas, sign);
|
|
351
|
+
out.set(k, e);
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
apply(before, 1);
|
|
355
|
+
apply(voided, 1);
|
|
356
|
+
apply(revived, -1);
|
|
357
|
+
const result = [];
|
|
358
|
+
for (const { ref, counts } of out.values()) {
|
|
359
|
+
const deltas = {};
|
|
360
|
+
for (const [t, c] of [...counts.entries()].sort(([a], [b]) => (a < b ? -1 : 1))) {
|
|
361
|
+
if (c.created > 0 || c.deleted > 0)
|
|
362
|
+
deltas[t] = { created: c.created, deleted: c.deleted };
|
|
363
|
+
}
|
|
364
|
+
if (Object.keys(deltas).length > 0)
|
|
365
|
+
result.push({ ref, deltas });
|
|
366
|
+
}
|
|
367
|
+
return result;
|
|
368
|
+
}
|
|
70
369
|
//# sourceMappingURL=manifest-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-check.js","sourceRoot":"","sources":["../../src/cloud/manifest-check.ts"],"names":[],"mappings":"AAiBA,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,MAA8B;IACtD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAuB,EACvB,IAAc,EACd,OAAoB,EACpB,wBAAgC;IAEhC,IAAI,IAAI,CAAC,aAAa,GAAG,wBAAwB,EAAE,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,gBAAgB;YACtB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,wBAAwB;SACtC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAEzC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QACnD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1E,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,UAAU,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK;oBACL,UAAU;oBACV,OAAO;oBACP,OAAO;oBACP,YAAY;oBACZ,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,eAAe;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK;gBACL,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,MAAM,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE;QACd,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"manifest-check.js","sourceRoot":"","sources":["../../src/cloud/manifest-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attach this machine's copy of a project to Cleo Nexus and report its
|
|
3
|
+
* presence: steps 3 to 5 of `cleo project link` with a device credential
|
|
4
|
+
* (cleo-nexus device contract §3.6, §3.7).
|
|
5
|
+
*
|
|
6
|
+
* 1. `ensureProjectReplica` binds the canonical project store to a replica
|
|
7
|
+
* once (no `sync.*` flag is set, so capture, push and pull stay off) and
|
|
8
|
+
* returns its id.
|
|
9
|
+
* 2. `POST /v1/projects/:projectId/replicas {deviceId, replicaId}` pins that
|
|
10
|
+
* replica to this Nexus device. The pin never moves: a 409 `replica-copied`
|
|
11
|
+
* whose holder is a revoked device of the same user means this machine was
|
|
12
|
+
* re-enrolled, so the store rebinds (`device-reenrolled`) and the new id is
|
|
13
|
+
* attached; any other holder is a genuinely copied store and fails with
|
|
14
|
+
* `E_NEXUS_REPLICA_COPIED`.
|
|
15
|
+
* 3. `PUT /v1/projects/:projectId/replicas/:replicaId/presence` sends the
|
|
16
|
+
* path-free presence ({@link toReplicaPresence}) built from a local git
|
|
17
|
+
* probe. A presence failure is a warning: the attach already stands.
|
|
18
|
+
*
|
|
19
|
+
* Nothing here sends a path, a hostname or a secret.
|
|
20
|
+
*
|
|
21
|
+
* @task T12905
|
|
22
|
+
* @epic T12323
|
|
23
|
+
*/
|
|
24
|
+
import type { NexusReplicaAttachment } from '@cleocode/contracts';
|
|
25
|
+
import { type FetchLike } from './http.js';
|
|
26
|
+
/** Timeout of each attach or presence call. */
|
|
27
|
+
export declare const NEXUS_ATTACH_TIMEOUT_MS = 15000;
|
|
28
|
+
/** The store binding the attach needs: bind once, and rebind on a re-enrolled device. */
|
|
29
|
+
export interface ProjectReplicaBinder {
|
|
30
|
+
/** Bind the store if it is unbound; return the active replica id. */
|
|
31
|
+
ensure(): Promise<{
|
|
32
|
+
replicaId: string;
|
|
33
|
+
reboundFrom?: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** Retire the active replica and mint a new id (contract §3.7, R6). */
|
|
36
|
+
rebindReenrolled(): Promise<{
|
|
37
|
+
replicaId: string;
|
|
38
|
+
previousReplicaId: string;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
/** Options for {@link attachProjectReplica}. */
|
|
42
|
+
export interface AttachProjectReplicaOptions {
|
|
43
|
+
/** Resolved API origin. */
|
|
44
|
+
apiUrl: string;
|
|
45
|
+
/** The device credential's bearer token (never logged). */
|
|
46
|
+
bearer: string;
|
|
47
|
+
/** This machine's Nexus device id. */
|
|
48
|
+
deviceId: string;
|
|
49
|
+
/** The server's project id. */
|
|
50
|
+
projectId: string;
|
|
51
|
+
/** Project root, for the local git probe only (never sent). */
|
|
52
|
+
projectRoot: string;
|
|
53
|
+
/** CLEO version reported in presence. */
|
|
54
|
+
cliVersion: string;
|
|
55
|
+
/** Store binding; defaults to the canonical project store ({@link canonicalReplicaBinder}). */
|
|
56
|
+
binder?: ProjectReplicaBinder;
|
|
57
|
+
/** `fetch` override. */
|
|
58
|
+
fetch?: FetchLike;
|
|
59
|
+
/** Clock, for the presence observation time when git cannot be probed. */
|
|
60
|
+
now?: () => Date;
|
|
61
|
+
/** Per-call timeout; default {@link NEXUS_ATTACH_TIMEOUT_MS}. */
|
|
62
|
+
timeoutMs?: number;
|
|
63
|
+
/**
|
|
64
|
+
* `cleo project link --rebind`: retire the store's replica and mint a new id
|
|
65
|
+
* before attaching. The remedy when the old id is held by another device:
|
|
66
|
+
* this machine's revoked device after a re-enrolment (when the server cannot
|
|
67
|
+
* say so itself), or the original of a copied store.
|
|
68
|
+
*/
|
|
69
|
+
rebind?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The binder over the canonical project store: opens it through the
|
|
73
|
+
* dual-scope chokepoint (never a raw file) and binds in live mode.
|
|
74
|
+
*
|
|
75
|
+
* @param projectRoot - Project root whose `.cleo/cleo.db` holds the replica.
|
|
76
|
+
* @returns A binder for {@link attachProjectReplica}.
|
|
77
|
+
*/
|
|
78
|
+
export declare function canonicalReplicaBinder(projectRoot: string): ProjectReplicaBinder;
|
|
79
|
+
/**
|
|
80
|
+
* The binder over the global store (`<cleoHome>/cleo.db`): binds its
|
|
81
|
+
* global-scope replica, the one the account's `home:` stream knows this
|
|
82
|
+
* device's main brain by (T12952).
|
|
83
|
+
*
|
|
84
|
+
* @returns A binder for {@link attachHomeReplica}.
|
|
85
|
+
*/
|
|
86
|
+
export declare function canonicalGlobalReplicaBinder(): ProjectReplicaBinder;
|
|
87
|
+
/**
|
|
88
|
+
* Attach the project store's replica to this Nexus device and report its
|
|
89
|
+
* presence (contract §3.6 steps 3 to 5). Idempotent: a repeat attaches the
|
|
90
|
+
* same replica id (200) and re-sends presence.
|
|
91
|
+
*
|
|
92
|
+
* @param opts - Origin, credential, ids, project root and test overrides.
|
|
93
|
+
* @returns The attachment and any warnings (a failed presence report).
|
|
94
|
+
* @throws {NexusAccountError} `E_NEXUS_REPLICA_COPIED` when another live
|
|
95
|
+
* device or another user holds this replica id; an API error from the
|
|
96
|
+
* attach otherwise (mapped by the caller).
|
|
97
|
+
*/
|
|
98
|
+
export declare function attachProjectReplica(opts: AttachProjectReplicaOptions): Promise<{
|
|
99
|
+
replica: NexusReplicaAttachment;
|
|
100
|
+
warnings: string[];
|
|
101
|
+
}>;
|
|
102
|
+
/** Options for {@link attachHomeReplica}. */
|
|
103
|
+
export interface AttachHomeReplicaOptions extends Omit<AttachProjectReplicaOptions, 'projectId' | 'projectRoot'> {
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Attach this device's global store (the main brain) to the account's
|
|
107
|
+
* `home:` stream and report its presence (T12952; cleo-nexus T084): the
|
|
108
|
+
* same rules as {@link attachProjectReplica}, on `/v1/account/home/replicas`.
|
|
109
|
+
* Presence carries no git block (the global store is not a repository).
|
|
110
|
+
*
|
|
111
|
+
* @param opts - Origin, credential, ids and test overrides.
|
|
112
|
+
* @returns The attachment and any warnings.
|
|
113
|
+
* @throws {NexusAccountError} `E_NEXUS_REPLICA_COPIED`, or an API error.
|
|
114
|
+
*/
|
|
115
|
+
export declare function attachHomeReplica(opts: AttachHomeReplicaOptions): Promise<{
|
|
116
|
+
replica: NexusReplicaAttachment;
|
|
117
|
+
warnings: string[];
|
|
118
|
+
}>;
|
|
119
|
+
//# sourceMappingURL=nexus-attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-attach.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAsB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAItF,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,WAAW,CAAC;AAI7D,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C,yFAAyF;AACzF,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,MAAM,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,uEAAuE;IACvE,gBAAgB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAkBhF;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,oBAAoB,CAkBnE;AAmED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAYlE;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBACf,SAAQ,IAAI,CAAC,2BAA2B,EAAE,WAAW,GAAG,aAAa,CAAC;CAAG;AAE3E;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmClE"}
|