@cleocode/core 2026.10.1 → 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 +25 -0
- package/dist/cloud/nexus-attach.d.ts.map +1 -1
- package/dist/cloud/nexus-attach.js +81 -6
- package/dist/cloud/nexus-attach.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.map +1 -1
- package/dist/cloud/nexus-cloud-status.js +36 -0
- package/dist/cloud/nexus-cloud-status.js.map +1 -1
- package/dist/cloud/nexus-device.d.ts +1 -1
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +5 -0
- 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-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 +8137 -3318
- 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 +8442 -3623
- 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 +8446 -3627
- 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/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 +27 -2
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +47 -3
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/schema.d.ts +12 -0
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +21 -0
- 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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"}
|
|
@@ -76,6 +76,14 @@ export interface AttachProjectReplicaOptions {
|
|
|
76
76
|
* @returns A binder for {@link attachProjectReplica}.
|
|
77
77
|
*/
|
|
78
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;
|
|
79
87
|
/**
|
|
80
88
|
* Attach the project store's replica to this Nexus device and report its
|
|
81
89
|
* presence (contract §3.6 steps 3 to 5). Idempotent: a repeat attaches the
|
|
@@ -91,4 +99,21 @@ export declare function attachProjectReplica(opts: AttachProjectReplicaOptions):
|
|
|
91
99
|
replica: NexusReplicaAttachment;
|
|
92
100
|
warnings: string[];
|
|
93
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
|
+
}>;
|
|
94
119
|
//# sourceMappingURL=nexus-attach.d.ts.map
|
|
@@ -1 +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;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,
|
|
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"}
|
|
@@ -57,6 +57,32 @@ export function canonicalReplicaBinder(projectRoot) {
|
|
|
57
57
|
},
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The binder over the global store (`<cleoHome>/cleo.db`): binds its
|
|
62
|
+
* global-scope replica, the one the account's `home:` stream knows this
|
|
63
|
+
* device's main brain by (T12952).
|
|
64
|
+
*
|
|
65
|
+
* @returns A binder for {@link attachHomeReplica}.
|
|
66
|
+
*/
|
|
67
|
+
export function canonicalGlobalReplicaBinder() {
|
|
68
|
+
const open = async () => {
|
|
69
|
+
const { openDualScopeDb, getDualScopeNativeDb } = await import('../store/dual-scope-db.js');
|
|
70
|
+
const handle = await openDualScopeDb('global');
|
|
71
|
+
return { db: getDualScopeNativeDb(handle), dbPath: handle.dbPath };
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
async ensure() {
|
|
75
|
+
const { ensureGlobalReplica } = await import('../store/sync/replica.js');
|
|
76
|
+
const { db, dbPath } = await open();
|
|
77
|
+
return ensureGlobalReplica(db, { dbPath, mode: 'live' });
|
|
78
|
+
},
|
|
79
|
+
async rebindReenrolled() {
|
|
80
|
+
const { rebindReplica } = await import('../store/sync/replica.js');
|
|
81
|
+
const { db, dbPath } = await open();
|
|
82
|
+
return rebindReplica(db, { dbPath, scope: 'global', mode: 'live' }, 'device-reenrolled');
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
60
86
|
/** True for the 409 the contract answers when this machine's own revoked device holds the replica. */
|
|
61
87
|
function isReenrolledHolder(err) {
|
|
62
88
|
return (err instanceof NexusError &&
|
|
@@ -129,7 +155,55 @@ async function presenceBody(opts, replicaId) {
|
|
|
129
155
|
* attach otherwise (mapped by the caller).
|
|
130
156
|
*/
|
|
131
157
|
export async function attachProjectReplica(opts) {
|
|
132
|
-
|
|
158
|
+
return attachReplicaAt({
|
|
159
|
+
...opts,
|
|
160
|
+
binder: opts.binder ?? canonicalReplicaBinder(opts.projectRoot),
|
|
161
|
+
what: "this project's store",
|
|
162
|
+
relink: '`cleo project link`',
|
|
163
|
+
kind: 'project',
|
|
164
|
+
}, `/v1/projects/${encodeURIComponent(opts.projectId)}/replicas`, (replicaId) => presenceBody(opts, replicaId));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Attach this device's global store (the main brain) to the account's
|
|
168
|
+
* `home:` stream and report its presence (T12952; cleo-nexus T084): the
|
|
169
|
+
* same rules as {@link attachProjectReplica}, on `/v1/account/home/replicas`.
|
|
170
|
+
* Presence carries no git block (the global store is not a repository).
|
|
171
|
+
*
|
|
172
|
+
* @param opts - Origin, credential, ids and test overrides.
|
|
173
|
+
* @returns The attachment and any warnings.
|
|
174
|
+
* @throws {NexusAccountError} `E_NEXUS_REPLICA_COPIED`, or an API error.
|
|
175
|
+
*/
|
|
176
|
+
export async function attachHomeReplica(opts) {
|
|
177
|
+
return attachReplicaAt({
|
|
178
|
+
...opts,
|
|
179
|
+
binder: opts.binder ?? canonicalGlobalReplicaBinder(),
|
|
180
|
+
what: 'your global CLEO store',
|
|
181
|
+
relink: '`cleo login nexus`',
|
|
182
|
+
kind: 'home',
|
|
183
|
+
}, '/v1/account/home/replicas', (replicaId) => toReplicaPresence({
|
|
184
|
+
deviceId: opts.deviceId,
|
|
185
|
+
replicaId,
|
|
186
|
+
hostname: null,
|
|
187
|
+
current: true,
|
|
188
|
+
path: '',
|
|
189
|
+
state: 'live',
|
|
190
|
+
lastSeen: (opts.now ?? (() => new Date()))().toISOString(),
|
|
191
|
+
git: null,
|
|
192
|
+
flags: [],
|
|
193
|
+
}, {
|
|
194
|
+
deviceId: opts.deviceId,
|
|
195
|
+
hostname: null,
|
|
196
|
+
os: null,
|
|
197
|
+
arch: null,
|
|
198
|
+
cleoVersion: opts.cliVersion,
|
|
199
|
+
lastHeartbeatAt: null,
|
|
200
|
+
heartbeatStale: false,
|
|
201
|
+
current: true,
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
/** Shared attach flow over one replicas collection path. */
|
|
205
|
+
async function attachReplicaAt(opts, path, presenceOf) {
|
|
206
|
+
const binder = opts.binder;
|
|
133
207
|
const timeoutMs = opts.timeoutMs ?? NEXUS_ATTACH_TIMEOUT_MS;
|
|
134
208
|
const base = opts.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
135
209
|
const http = new Http({
|
|
@@ -139,7 +213,6 @@ export async function attachProjectReplica(opts) {
|
|
|
139
213
|
fetch: (input, init) => base(input, { ...init, signal: AbortSignal.timeout(timeoutMs) }),
|
|
140
214
|
maxAttempts: 2,
|
|
141
215
|
});
|
|
142
|
-
const path = `/v1/projects/${encodeURIComponent(opts.projectId)}/replicas`;
|
|
143
216
|
const attach = (replicaId) => http.request('POST', path, attachAnswer, { deviceId: opts.deviceId, replicaId });
|
|
144
217
|
const bound = await binder.ensure();
|
|
145
218
|
let replicaId = bound.replicaId;
|
|
@@ -160,7 +233,9 @@ export async function attachProjectReplica(opts) {
|
|
|
160
233
|
// The deployed server's 409 does not say who holds the replica
|
|
161
234
|
// (no holderState/holderSameUser yet), so name both causes and the
|
|
162
235
|
// one remedy that fixes either: a new replica id.
|
|
163
|
-
throw new NexusAccountError('E_NEXUS_REPLICA_COPIED',
|
|
236
|
+
throw new NexusAccountError('E_NEXUS_REPLICA_COPIED', `${opts.what} (replica ${replicaId}) is already attached from another Nexus device: either this machine was re-enrolled as a new device (after a revoke), or the store was copied from another machine`, opts.kind === 'project'
|
|
237
|
+
? 'run `cleo project link --rebind` to give this copy a new replica id and attach it; if another machine holds the original, it keeps its own'
|
|
238
|
+
: 'revoke the stale device on cleocode.dev, then run `cleo login nexus` again');
|
|
164
239
|
}
|
|
165
240
|
throw err;
|
|
166
241
|
}
|
|
@@ -171,18 +246,18 @@ export async function attachProjectReplica(opts) {
|
|
|
171
246
|
await attach(replicaId);
|
|
172
247
|
}
|
|
173
248
|
catch (second) {
|
|
174
|
-
throw new NexusAccountError('E_NEXUS_REQUEST_FAILED', `this store was rebound from replica ${rebound.previousReplicaId} to ${replicaId} (this machine was re-enrolled), but attaching the new id failed: ${second instanceof Error ? second.message : String(second)}`,
|
|
249
|
+
throw new NexusAccountError('E_NEXUS_REQUEST_FAILED', `this store was rebound from replica ${rebound.previousReplicaId} to ${replicaId} (this machine was re-enrolled), but attaching the new id failed: ${second instanceof Error ? second.message : String(second)}`, `re-run ${opts.relink} to finish the attach`);
|
|
175
250
|
}
|
|
176
251
|
}
|
|
177
252
|
const warnings = [];
|
|
178
253
|
let presenceAt = null;
|
|
179
254
|
try {
|
|
180
|
-
const body = ReplicaPresence.parse(await
|
|
255
|
+
const body = ReplicaPresence.parse(await presenceOf(replicaId));
|
|
181
256
|
const answer = await http.request('PUT', `${path}/${encodeURIComponent(replicaId)}/presence`, presenceAnswer, body);
|
|
182
257
|
presenceAt = answer.presenceAt;
|
|
183
258
|
}
|
|
184
259
|
catch (err) {
|
|
185
|
-
warnings.push(
|
|
260
|
+
warnings.push(`${opts.what} is attached, but its presence report failed (${err instanceof Error ? err.message : String(err)}); re-run ${opts.relink} to send it`);
|
|
186
261
|
}
|
|
187
262
|
return {
|
|
188
263
|
replica: { replicaId, deviceId: opts.deviceId, reboundFrom, presenceAt },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-attach.js","sourceRoot":"","sources":["../../src/cloud/nexus-attach.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nexus-attach.js","sourceRoot":"","sources":["../../src/cloud/nexus-attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cleo cloud activity`: what this account's devices did on Cleo Nexus and
|
|
3
|
+
* when (snapshots pushed or refused, leases taken, forced or released,
|
|
4
|
+
* projects linked, devices enrolled or signed out), newest first.
|
|
5
|
+
*
|
|
6
|
+
* Reads E18 `GET /v1/account/activity` (the caller's own events) with the
|
|
7
|
+
* device credential and names each device from the account's device list.
|
|
8
|
+
* `--project` keeps the events whose target is that project or its stream.
|
|
9
|
+
*
|
|
10
|
+
* @task T12951
|
|
11
|
+
* @epic T12323
|
|
12
|
+
*/
|
|
13
|
+
import type { CloudActivityResult } from '@cleocode/contracts';
|
|
14
|
+
import { type NexusCloudOptions } from './nexus-cloud.js';
|
|
15
|
+
/** Largest page `GET /v1/account/activity` serves. */
|
|
16
|
+
export declare const NEXUS_ACTIVITY_PAGE_MAX = 200;
|
|
17
|
+
/** Options of {@link nexusCloudActivity}. */
|
|
18
|
+
export interface NexusCloudActivityOptions extends NexusCloudOptions {
|
|
19
|
+
/** Events to return (1..200, default 50). */
|
|
20
|
+
limit?: number;
|
|
21
|
+
/** Page before this event id (from a previous `nextBefore`). */
|
|
22
|
+
before?: string;
|
|
23
|
+
/** Keep only events about this server project id. */
|
|
24
|
+
projectId?: string;
|
|
25
|
+
/** Keep only events by this device id. */
|
|
26
|
+
deviceId?: string;
|
|
27
|
+
/** Pages to follow while filling `limit` under a filter; default 5. */
|
|
28
|
+
maxPages?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* List this account's recent cloud activity.
|
|
32
|
+
*
|
|
33
|
+
* @param opts - Paging, project filter and overrides.
|
|
34
|
+
* @returns Events newest first, each with its device's name.
|
|
35
|
+
*/
|
|
36
|
+
export declare function nexusCloudActivity(opts?: NexusCloudActivityOptions): Promise<CloudActivityResult>;
|
|
37
|
+
//# sourceMappingURL=nexus-cloud-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-cloud-activity.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-cloud-activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAqB,KAAK,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAE7F,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,6CAA6C;AAC7C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAyD9B"}
|