@camstack/system 1.2.390 → 1.2.391
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/addon/addon-api-factory.d.ts +30 -30
- package/dist/addon-routes/addon-route-registry.d.ts +31 -31
- package/dist/addon-runner.js +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/addon-utils.d.ts +22 -22
- package/dist/auth/admin-token-manager.d.ts +37 -67
- package/dist/auth/api-key-manager.d.ts +8 -8
- package/dist/auth/auth-audit-log.d.ts +29 -49
- package/dist/auth/auth-manager.d.ts +127 -126
- package/dist/auth/cidr.d.ts +8 -8
- package/dist/auth/external-identity-manager.d.ts +46 -34
- package/dist/auth/jwt-signing-key.d.ts +14 -14
- package/dist/auth/login-session-manager.d.ts +95 -135
- package/dist/auth/parse-record.d.ts +13 -13
- package/dist/auth/scope-matcher.d.ts +7 -7
- package/dist/auth/scoped-token-manager.d.ts +62 -62
- package/dist/auth/token-expiry.d.ts +49 -26
- package/dist/auth/totp-manager.d.ts +48 -48
- package/dist/auth/user-management-internal.d.ts +67 -52
- package/dist/auth/user-manager.d.ts +58 -58
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.d.ts +54 -54
- package/dist/builtins/addon-pages-aggregator/dedupe-pages.d.ts +22 -4
- package/dist/builtins/addon-pages-aggregator/index.d.ts +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.d.ts +54 -54
- package/dist/builtins/addon-widgets-aggregator/index.d.ts +1 -1
- package/dist/builtins/alerts/alerts.addon.d.ts +88 -87
- package/dist/builtins/alerts/device-label.d.ts +6 -6
- package/dist/builtins/alerts/index.d.ts +1 -1
- package/dist/builtins/alerts/prune-policy.d.ts +36 -36
- package/dist/builtins/autotrack/autotrack-cameras.d.ts +102 -79
- package/dist/builtins/autotrack/autotrack-config.d.ts +81 -81
- package/dist/builtins/autotrack/autotrack-decision.d.ts +69 -82
- package/dist/builtins/autotrack/autotrack-loop.d.ts +81 -61
- package/dist/builtins/autotrack/autotrack.addon.d.ts +103 -66
- package/dist/builtins/autotrack/frame-error.d.ts +38 -38
- package/dist/builtins/autotrack/frame-measurements.d.ts +79 -79
- package/dist/builtins/autotrack/index.d.ts +2 -2
- package/dist/builtins/autotrack/ptz-mirror.d.ts +46 -17
- package/dist/builtins/autotrack/target-selection.d.ts +33 -47
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +270 -269
- package/dist/builtins/backup-orchestrator/cron-helpers.d.ts +17 -17
- package/dist/builtins/backup-orchestrator/destination-policy.d.ts +99 -82
- package/dist/builtins/backup-orchestrator/download-helpers.d.ts +9 -9
- package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +40 -29
- package/dist/builtins/backup-orchestrator/index.d.ts +2 -2
- package/dist/builtins/backup-orchestrator/manifest-store.d.ts +88 -69
- package/dist/builtins/backup-orchestrator/restore-archive.d.ts +14 -14
- package/dist/builtins/backup-orchestrator/run-queue.d.ts +86 -86
- package/dist/builtins/backup-orchestrator/schedule-store.d.ts +53 -37
- package/dist/builtins/backup-orchestrator/staging-paths.d.ts +23 -23
- package/dist/builtins/backup-orchestrator/write-targets.d.ts +53 -53
- package/dist/builtins/calendars/calendar-color.d.ts +5 -1
- package/dist/builtins/calendars/calendar-prefs-store.d.ts +18 -12
- package/dist/builtins/calendars/calendars.addon.d.ts +16 -11
- package/dist/builtins/calendars/index.d.ts +1 -1
- package/dist/builtins/camera-grid/acquire-retry.d.ts +26 -26
- package/dist/builtins/camera-grid/addon.d.ts +200 -174
- package/dist/builtins/camera-grid/flv-join.d.ts +32 -58
- package/dist/builtins/camera-grid/grid-activity-mirror.d.ts +37 -37
- package/dist/builtins/camera-grid/grid-activity.d.ts +83 -42
- package/dist/builtins/camera-grid/grid-camera-declarations.d.ts +46 -46
- package/dist/builtins/camera-grid/grid-camera-device.d.ts +60 -34
- package/dist/builtins/camera-grid/grid-canvas-derivation.d.ts +50 -15
- package/dist/builtins/camera-grid/grid-canvas-seed.d.ts +96 -46
- package/dist/builtins/camera-grid/grid-canvas.d.ts +74 -74
- package/dist/builtins/camera-grid/grid-child.d.ts +29 -16
- package/dist/builtins/camera-grid/grid-compositor-child.d.ts +2 -2
- package/dist/builtins/camera-grid/grid-compositor-invocation.d.ts +39 -11
- package/dist/builtins/camera-grid/grid-compositor.d.ts +50 -50
- package/dist/builtins/camera-grid/grid-detection-mapping.d.ts +52 -22
- package/dist/builtins/camera-grid/grid-device-settings.d.ts +31 -7
- package/dist/builtins/camera-grid/grid-filter-graph.d.ts +41 -41
- package/dist/builtins/camera-grid/grid-frame-sample.d.ts +45 -19
- package/dist/builtins/camera-grid/grid-instances.d.ts +20 -50
- package/dist/builtins/camera-grid/grid-last-frame-store.d.ts +51 -51
- package/dist/builtins/camera-grid/grid-layout-native-provider.d.ts +30 -4
- package/dist/builtins/camera-grid/grid-plan.d.ts +30 -20
- package/dist/builtins/camera-grid/grid-profiles.d.ts +85 -45
- package/dist/builtins/camera-grid/grid-row-normalization.d.ts +6 -6
- package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +57 -57
- package/dist/builtins/camera-grid/grid-snapshot.d.ts +41 -41
- package/dist/builtins/camera-grid/grid-stream-descriptor.d.ts +49 -21
- package/dist/builtins/camera-grid/grid-stream-invocation.d.ts +37 -22
- package/dist/builtins/camera-grid/grid-stream-relay.d.ts +26 -26
- package/dist/builtins/camera-grid/grid-stream-session.d.ts +123 -93
- package/dist/builtins/camera-grid/grid-tile-feed.d.ts +47 -47
- package/dist/builtins/camera-grid/grid-tile-plan.d.ts +55 -20
- package/dist/builtins/camera-grid/grid-wire-format.d.ts +22 -6
- package/dist/builtins/camera-grid/index.d.ts +44 -44
- package/dist/builtins/camera-grid/silence-analysis.d.ts +31 -14
- package/dist/builtins/composer/claim-gate.d.ts +54 -27
- package/dist/builtins/composer/composed-device-set.d.ts +40 -26
- package/dist/builtins/composer/composed-device.d.ts +39 -17
- package/dist/builtins/composer/composer-apply-waits.d.ts +20 -13
- package/dist/builtins/composer/composer-grafts.d.ts +57 -38
- package/dist/builtins/composer/composer-live-set.d.ts +15 -15
- package/dist/builtins/composer/composer-plan.d.ts +76 -60
- package/dist/builtins/composer/composer-runtime-factory.d.ts +21 -14
- package/dist/builtins/composer/composer-seeds.d.ts +20 -14
- package/dist/builtins/composer/composer-verdict.d.ts +28 -14
- package/dist/builtins/composer/composer.addon.d.ts +23 -9
- package/dist/builtins/composer/composer.d.ts +145 -100
- package/dist/builtins/composer/composition-declarations.d.ts +50 -39
- package/dist/builtins/composer/composition-evaluation.d.ts +38 -22
- package/dist/builtins/composer/composition-runtime.d.ts +178 -125
- package/dist/builtins/composer/composition-target.d.ts +38 -34
- package/dist/builtins/composer/confirmed-seed.d.ts +35 -23
- package/dist/builtins/composer/deadline-timer.d.ts +13 -13
- package/dist/builtins/composer/existing-target.d.ts +90 -73
- package/dist/builtins/composer/field-record.d.ts +26 -19
- package/dist/builtins/composer/graft-host.d.ts +56 -32
- package/dist/builtins/composer/held-claims.d.ts +26 -9
- package/dist/builtins/composer/index.d.ts +1 -1
- package/dist/builtins/composer/own-field-reads.d.ts +26 -15
- package/dist/builtins/composer/owned-fields-target.d.ts +75 -44
- package/dist/builtins/composer/slice-assembler.d.ts +19 -3
- package/dist/builtins/composer/source-readings.d.ts +67 -61
- package/dist/builtins/composer/source-tracker.d.ts +133 -69
- package/dist/builtins/console-logging/console-destination.d.ts +15 -8
- package/dist/builtins/console-logging/console-logging.addon.d.ts +20 -19
- package/dist/builtins/console-logging/index.d.ts +3 -3
- package/dist/builtins/core-blocks/block-package.d.ts +37 -37
- package/dist/builtins/core-blocks/block-settings-store.d.ts +34 -21
- package/dist/builtins/core-blocks/block-supervisor.d.ts +138 -117
- package/dist/builtins/core-blocks/block-type-defs.d.ts +21 -21
- package/dist/builtins/core-blocks/blocks-integration.d.ts +76 -49
- package/dist/builtins/core-blocks/compile-block.d.ts +37 -37
- package/dist/builtins/core-blocks/composition-api.d.ts +38 -24
- package/dist/builtins/core-blocks/composition-peers.d.ts +26 -4
- package/dist/builtins/core-blocks/composition-sources.d.ts +25 -10
- package/dist/builtins/core-blocks/core-block-store.d.ts +109 -109
- package/dist/builtins/core-blocks/core-blocks.addon.d.ts +72 -72
- package/dist/builtins/core-blocks/extract-settings-schema.d.ts +4 -4
- package/dist/builtins/core-blocks/index.d.ts +8 -8
- package/dist/builtins/device-manager/adoption-job-engine.d.ts +141 -98
- package/dist/builtins/device-manager/claimed-status-overlay.d.ts +42 -9
- package/dist/builtins/device-manager/contribution-cache.d.ts +56 -56
- package/dist/builtins/device-manager/day-night-config-schema.d.ts +26 -12
- package/dist/builtins/device-manager/device-aggregation-merge.d.ts +17 -17
- package/dist/builtins/device-manager/device-aggregation.d.ts +277 -254
- package/dist/builtins/device-manager/device-bindings-store.d.ts +232 -220
- package/dist/builtins/device-manager/device-config-contribution.d.ts +29 -29
- package/dist/builtins/device-manager/device-config-secrets.d.ts +32 -13
- package/dist/builtins/device-manager/device-event-propagator.d.ts +22 -22
- package/dist/builtins/device-manager/device-extension-linked-slot.d.ts +17 -17
- package/dist/builtins/device-manager/device-form-secrets.d.ts +14 -14
- package/dist/builtins/device-manager/device-linked-devices.d.ts +159 -98
- package/dist/builtins/device-manager/device-manager.addon.d.ts +223 -197
- package/dist/builtins/device-manager/device-meta-actions.d.ts +306 -305
- package/dist/builtins/device-manager/device-meta-store.d.ts +100 -90
- package/dist/builtins/device-manager/device-meta-types.d.ts +250 -241
- package/dist/builtins/device-manager/device-online-fallback.d.ts +30 -30
- package/dist/builtins/device-manager/device-projection.d.ts +53 -67
- package/dist/builtins/device-manager/device-provider-context.d.ts +109 -94
- package/dist/builtins/device-manager/device-queries.d.ts +63 -63
- package/dist/builtins/device-manager/device-row-store.d.ts +417 -365
- package/dist/builtins/device-manager/device-source-activation.d.ts +91 -49
- package/dist/builtins/device-manager/device-state-claim-views.d.ts +76 -61
- package/dist/builtins/device-manager/device-state-claims.d.ts +53 -30
- package/dist/builtins/device-manager/device-state-mirror.d.ts +256 -264
- package/dist/builtins/device-manager/device-sync-resolvers.d.ts +25 -25
- package/dist/builtins/device-manager/field-claims-index.d.ts +85 -58
- package/dist/builtins/device-manager/field-ownership.d.ts +54 -36
- package/dist/builtins/device-manager/fleet-read-census.d.ts +99 -61
- package/dist/builtins/device-manager/image-settings-config-schema.d.ts +18 -8
- package/dist/builtins/device-manager/index.d.ts +2 -2
- package/dist/builtins/device-manager/linked-devices-manual-backfill.d.ts +20 -9
- package/dist/builtins/device-manager/location-alignment.d.ts +46 -46
- package/dist/builtins/device-manager/migrate-device.d.ts +178 -101
- package/dist/builtins/device-manager/migrate-guard.d.ts +66 -34
- package/dist/builtins/device-manager/migrate-hardware-state.d.ts +59 -59
- package/dist/builtins/device-manager/migrate-reload.d.ts +42 -4
- package/dist/builtins/device-manager/migration-refused.d.ts +20 -20
- package/dist/builtins/device-manager/mirror-row-writer.d.ts +205 -179
- package/dist/builtins/device-manager/recording-onboard-config-schema.d.ts +56 -32
- package/dist/builtins/device-manager/removal-fence.d.ts +48 -48
- package/dist/builtins/device-manager/runtime-state-persist-gate.d.ts +54 -26
- package/dist/builtins/device-manager/secret-config-paths.d.ts +17 -17
- package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +52 -25
- package/dist/builtins/device-manager/write-lock.d.ts +13 -13
- package/dist/builtins/hub-forwarder/hub-forwarder-destination.d.ts +41 -41
- package/dist/builtins/hub-forwarder/hub-forwarder.addon.d.ts +13 -12
- package/dist/builtins/hub-forwarder/index.d.ts +3 -3
- package/dist/builtins/keychain/index.d.ts +1 -1
- package/dist/builtins/keychain/key-sources.d.ts +19 -19
- package/dist/builtins/keychain/keychain-crypto.d.ts +4 -4
- package/dist/builtins/keychain/keychain-reset-trigger.d.ts +13 -13
- package/dist/builtins/keychain/keychain-service.d.ts +128 -128
- package/dist/builtins/keychain/keychain-store.d.ts +96 -87
- package/dist/builtins/keychain/keychain-usage.d.ts +13 -2
- package/dist/builtins/keychain/keychain.addon.d.ts +31 -6
- package/dist/builtins/keychain/platform-key-source.d.ts +15 -15
- package/dist/builtins/keychain/system-held-secrets.d.ts +17 -4
- package/dist/builtins/liveness-monitor/index.d.ts +2 -2
- package/dist/builtins/liveness-monitor/liveness-checks.d.ts +73 -52
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.d.ts +57 -36
- package/dist/builtins/local-auth/admin-account-boot.d.ts +14 -14
- package/dist/builtins/local-auth/auth-config-reader.d.ts +34 -17
- package/dist/builtins/local-auth/auth-schema.d.ts +92 -69
- package/dist/builtins/local-auth/index.d.ts +1 -1
- package/dist/builtins/local-auth/jwt-signing-key-keeper.d.ts +22 -22
- package/dist/builtins/local-auth/local-auth.addon.d.ts +41 -40
- package/dist/builtins/local-auth/oauth-grants.d.ts +57 -57
- package/dist/builtins/local-auth/oauth-session-manager.d.ts +62 -62
- package/dist/builtins/local-network/address-book.d.ts +61 -36
- package/dist/builtins/local-network/index.d.ts +2 -2
- package/dist/builtins/local-network/ipv6-lan.d.ts +12 -17
- package/dist/builtins/local-network/local-hostname.d.ts +10 -10
- package/dist/builtins/local-network/local-network.addon.d.ts +259 -258
- package/dist/builtins/loki-logging/index.d.ts +4 -4
- package/dist/builtins/loki-logging/loki-destination.d.ts +113 -87
- package/dist/builtins/loki-logging/loki-logging.addon.d.ts +61 -42
- package/dist/builtins/loki-logging/loki-payload.d.ts +82 -39
- package/dist/builtins/loki-logging/retire-enabled-flag.d.ts +37 -12
- package/dist/builtins/native-metrics/cgroup-memory.d.ts +206 -159
- package/dist/builtins/native-metrics/cgroup-pids.d.ts +138 -91
- package/dist/builtins/native-metrics/container-memory-series.d.ts +212 -178
- package/dist/builtins/native-metrics/gpu-probe.d.ts +9 -9
- package/dist/builtins/native-metrics/index.d.ts +2 -2
- package/dist/builtins/native-metrics/load-series-config.d.ts +29 -57
- package/dist/builtins/native-metrics/load-series-reader.d.ts +52 -26
- package/dist/builtins/native-metrics/load-series-store.d.ts +237 -176
- package/dist/builtins/native-metrics/native-metrics-provider.d.ts +43 -43
- package/dist/builtins/native-metrics/native-metrics.addon.d.ts +230 -230
- package/dist/builtins/native-metrics/node-load-ring.d.ts +196 -196
- package/dist/builtins/native-metrics/proc-process-table.d.ts +12 -12
- package/dist/builtins/native-metrics/process-classification.d.ts +95 -36
- package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +95 -95
- package/dist/builtins/platform-probe/coral-accelerators.d.ts +17 -17
- package/dist/builtins/platform-probe/index.d.ts +38 -30
- package/dist/builtins/platform-probe/inference-config-resolver.d.ts +27 -27
- package/dist/builtins/platform-probe/intel-accelerators.d.ts +8 -8
- package/dist/builtins/platform-probe/intel-npu.d.ts +30 -30
- package/dist/builtins/platform-probe/platform-scorer.d.ts +35 -35
- package/dist/builtins/platform-probe/runtime-packages.d.ts +3 -3
- package/dist/builtins/remote-access-orchestrator/enabled-providers-reconcile.d.ts +87 -87
- package/dist/builtins/remote-access-orchestrator/index.d.ts +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.d.ts +66 -35
- package/dist/builtins/shared/device-state-changed.d.ts +9 -9
- package/dist/builtins/shared/settle-sources.d.ts +16 -16
- package/dist/builtins/snapshot/index.d.ts +2 -2
- package/dist/builtins/snapshot/snapshot-cache.d.ts +92 -92
- package/dist/builtins/snapshot/snapshot-coalescing.d.ts +108 -108
- package/dist/builtins/snapshot/snapshot-courtesy.d.ts +48 -48
- package/dist/builtins/snapshot/snapshot-durable-store.d.ts +32 -32
- package/dist/builtins/snapshot/snapshot-fatigue.d.ts +34 -34
- package/dist/builtins/snapshot/snapshot-grab-pick.d.ts +14 -14
- package/dist/builtins/snapshot/snapshot-link-url.d.ts +49 -49
- package/dist/builtins/snapshot/snapshot-media-handler.d.ts +97 -97
- package/dist/builtins/snapshot/snapshot-resize.d.ts +64 -103
- package/dist/builtins/snapshot/snapshot.addon.d.ts +569 -568
- package/dist/builtins/sqlite-storage/analyze-stats.d.ts +73 -29
- package/dist/builtins/sqlite-storage/config-store.d.ts +6 -6
- package/dist/builtins/sqlite-storage/device-store.d.ts +16 -16
- package/dist/builtins/sqlite-storage/filesystem-browse-provider.d.ts +23 -23
- package/dist/builtins/sqlite-storage/filesystem-storage-provider.d.ts +79 -79
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.d.ts +27 -26
- package/dist/builtins/sqlite-storage/filter-compiler.d.ts +107 -107
- package/dist/builtins/sqlite-storage/index.d.ts +12 -12
- package/dist/builtins/sqlite-storage/integration-registry.d.ts +37 -37
- package/dist/builtins/sqlite-storage/path-guard.d.ts +5 -5
- package/dist/builtins/sqlite-storage/prefix-range.d.ts +44 -44
- package/dist/builtins/sqlite-storage/query-bounds.d.ts +100 -106
- package/dist/builtins/sqlite-storage/query-profiler.d.ts +217 -217
- package/dist/builtins/sqlite-storage/retired-collections.d.ts +124 -55
- package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +239 -189
- package/dist/builtins/sqlite-storage/shm-lock-canary.d.ts +41 -41
- package/dist/builtins/sqlite-storage/sqlite-pragmas.d.ts +162 -162
- package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +458 -458
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.d.ts +59 -58
- package/dist/builtins/sqlite-storage/sqlite-snapshot-protocol.d.ts +37 -32
- package/dist/builtins/sqlite-storage/sqlite-snapshot-worker.d.ts +19 -19
- package/dist/builtins/sqlite-storage/sqlite-snapshotter.d.ts +76 -76
- package/dist/builtins/sqlite-storage/statement-shape.d.ts +54 -54
- package/dist/builtins/sqlite-storage/table-sizes.d.ts +71 -71
- package/dist/builtins/sqlite-storage/vector-index-shared.d.ts +63 -54
- package/dist/builtins/sqlite-storage/vector-index-vec.d.ts +133 -96
- package/dist/builtins/sqlite-storage/wal-checkpoint-policy.d.ts +161 -161
- package/dist/builtins/sqlite-storage/wal-checkpointer.d.ts +60 -60
- package/dist/builtins/sqlite-storage/wal-maintenance.d.ts +94 -94
- package/dist/builtins/storage-orchestrator/access-guards.d.ts +37 -26
- package/dist/builtins/storage-orchestrator/data-store-dispatch.d.ts +33 -18
- package/dist/builtins/storage-orchestrator/drain-ratchet.d.ts +85 -85
- package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +20 -10
- package/dist/builtins/storage-orchestrator/hub-settings-forward.d.ts +113 -53
- package/dist/builtins/storage-orchestrator/index.d.ts +7 -7
- package/dist/builtins/storage-orchestrator/location-occupancy-slice.d.ts +64 -40
- package/dist/builtins/storage-orchestrator/location-occupancy.d.ts +14 -14
- package/dist/builtins/storage-orchestrator/location-protection.d.ts +13 -13
- package/dist/builtins/storage-orchestrator/location-repoint-move.d.ts +44 -44
- package/dist/builtins/storage-orchestrator/location-root-collision.d.ts +61 -25
- package/dist/builtins/storage-orchestrator/location-secrets.d.ts +99 -58
- package/dist/builtins/storage-orchestrator/location-store.d.ts +56 -47
- package/dist/builtins/storage-orchestrator/location-volume-capacity.d.ts +37 -37
- package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +20 -6
- package/dist/builtins/storage-orchestrator/storage-cleanup-coordinator.d.ts +51 -51
- package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +224 -224
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +292 -292
- package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +431 -450
- package/dist/builtins/storage-orchestrator/storage-pressure-manager.d.ts +104 -104
- package/dist/builtins/system-backup/backup-encryption.d.ts +60 -23
- package/dist/builtins/system-backup/system-backup.service.d.ts +240 -240
- package/dist/builtins/system-config/cluster-secret-keeper.d.ts +54 -34
- package/dist/builtins/system-config/index.d.ts +2 -2
- package/dist/builtins/system-config/mesh-actions.d.ts +2 -30
- package/dist/builtins/system-config/system-config.addon.d.ts +57 -100
- package/dist/builtins/system-config/system-config.addon.js +37 -33
- package/dist/builtins/system-config/system-config.addon.mjs +37 -33
- package/dist/builtins/winston-logging/index.d.ts +3 -3
- package/dist/builtins/winston-logging/winston-destination.d.ts +15 -15
- package/dist/builtins/winston-logging/winston-logging.addon.d.ts +14 -13
- package/dist/{child-cap-dispatch-nURMuVTX.js → child-cap-dispatch-Bnr8brru.js} +18 -0
- package/dist/{child-cap-dispatch-B1gyE35b.mjs → child-cap-dispatch-mHO_6r0G.mjs} +1 -1
- package/dist/download/hosted-model-revisions.d.ts +8 -8
- package/dist/download/model-download-service.d.ts +32 -32
- package/dist/download/model-downloader.d.ts +88 -88
- package/dist/events/event-bus.d.ts +6 -6
- package/dist/events/system-event-bus.d.ts +11 -11
- package/dist/feature/feature-manager.d.ts +6 -6
- package/dist/http/asset-compression.d.ts +35 -73
- package/dist/http/authenticated-file-server.d.ts +32 -32
- package/dist/http/data-plane-registry.d.ts +49 -39
- package/dist/http/file-data-plane.d.ts +14 -14
- package/dist/http/lan-http-bind.d.ts +24 -13
- package/dist/http/reverse-proxy.d.ts +36 -24
- package/dist/index.d.ts +137 -137
- package/dist/index.js +4 -3
- package/dist/index.mjs +2 -4
- package/dist/kernel/addon-class-resolver.d.ts +1 -1
- package/dist/kernel/addon-engine-manager.d.ts +20 -20
- package/dist/kernel/addon-health-monitor.d.ts +151 -151
- package/dist/kernel/addon-installer.d.ts +609 -609
- package/dist/kernel/addon-loader.d.ts +133 -133
- package/dist/kernel/addon-manifest.d.ts +118 -118
- package/dist/kernel/addon-residue.d.ts +28 -32
- package/dist/kernel/array-buffer-census.d.ts +84 -88
- package/dist/kernel/bootstrap-config.d.ts +3 -3
- package/dist/kernel/cap-router-builder.d.ts +145 -101
- package/dist/kernel/capability-handle.d.ts +41 -41
- package/dist/kernel/capability-registry.d.ts +588 -576
- package/dist/kernel/config-manager.d.ts +199 -199
- package/dist/kernel/config-schema.d.ts +132 -128
- package/dist/kernel/custom-action-registry.d.ts +25 -25
- package/dist/kernel/deps/addon-deps-manager.d.ts +17 -17
- package/dist/kernel/deps/closure-dedupe.d.ts +76 -76
- package/dist/kernel/deps/ensure-addon-natives.d.ts +34 -34
- package/dist/kernel/deps/ensure-native-prebuilds.d.ts +25 -25
- package/dist/kernel/deps/manifest-native-deps.d.ts +38 -38
- package/dist/kernel/deps/manifest-python-deps.d.ts +18 -18
- package/dist/kernel/deps/manifest-system-deps.d.ts +13 -13
- package/dist/kernel/deps/npm-command.d.ts +45 -45
- package/dist/kernel/deps/system-package-allowlist.d.ts +9 -9
- package/dist/kernel/deps/system-package-broker.d.ts +20 -20
- package/dist/kernel/deps/system-package-client.d.ts +3 -3
- package/dist/kernel/device-registry.d.ts +27 -27
- package/dist/kernel/event-loop-stall-monitor.d.ts +33 -33
- package/dist/kernel/event-plane-report.d.ts +174 -174
- package/dist/kernel/fs-utils.d.ts +70 -70
- package/dist/kernel/gc-census.d.ts +119 -119
- package/dist/kernel/heap-spaces.d.ts +87 -87
- package/dist/kernel/heap-watch.d.ts +706 -706
- package/dist/kernel/host-externals.d.ts +8 -8
- package/dist/kernel/hwaccel/hwaccel-resolver.d.ts +27 -27
- package/dist/kernel/index.d.ts +115 -113
- package/dist/kernel/inference/inference-resolver.d.ts +13 -13
- package/dist/kernel/infra-capabilities.d.ts +7 -7
- package/dist/kernel/isolated-builtin-phase.d.ts +42 -42
- package/dist/kernel/lifecycle/job-journal.d.ts +17 -17
- package/dist/kernel/lifecycle/lifecycle-job-engine.d.ts +99 -99
- package/dist/kernel/lifecycle/staging-area.d.ts +22 -22
- package/dist/kernel/moleculer/addon-context-factory.d.ts +90 -89
- package/dist/kernel/moleculer/addon-data-plane-facility.d.ts +12 -12
- package/dist/kernel/moleculer/addon-deploy-source.d.ts +11 -11
- package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +18 -18
- package/dist/kernel/moleculer/addon-service-factory.d.ts +41 -41
- package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +60 -33
- package/dist/kernel/moleculer/agent-ui-unlock.d.ts +30 -30
- package/dist/kernel/moleculer/broker-factory.d.ts +61 -61
- package/dist/kernel/moleculer/cap-usage-registry.d.ts +108 -153
- package/dist/kernel/moleculer/capabilities-access.d.ts +19 -19
- package/dist/kernel/moleculer/child-addon-call-dispatch.d.ts +43 -43
- package/dist/kernel/moleculer/child-cap-descriptors.d.ts +26 -26
- package/dist/kernel/moleculer/child-cap-dispatch.d.ts +52 -52
- package/dist/kernel/moleculer/children-batch-loader.d.ts +86 -34
- package/dist/kernel/moleculer/cluster-secret.d.ts +19 -19
- package/dist/kernel/moleculer/core-cap-service.d.ts +53 -53
- package/dist/kernel/moleculer/crash-supervisor.d.ts +39 -39
- package/dist/kernel/moleculer/device-cap-proxy.d.ts +51 -51
- package/dist/kernel/moleculer/device-event-ring.d.ts +117 -75
- package/dist/kernel/moleculer/event-bus-core.d.ts +171 -159
- package/dist/kernel/moleculer/event-bus.d.ts +73 -73
- package/dist/kernel/moleculer/hub-log-forwarder.d.ts +30 -30
- package/dist/kernel/moleculer/hub-service.d.ts +42 -42
- package/dist/kernel/moleculer/init-watchdog.d.ts +49 -49
- package/dist/kernel/moleculer/mesh-access-middleware.d.ts +36 -21
- package/dist/kernel/moleculer/mesh-auth-mode.d.ts +33 -39
- package/dist/kernel/moleculer/mesh-authenticator.d.ts +58 -58
- package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +38 -18
- package/dist/kernel/moleculer/mesh-join-client.d.ts +67 -45
- package/dist/kernel/moleculer/mesh-join-proof.d.ts +8 -8
- package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
- package/dist/kernel/moleculer/mesh-mtls/index.d.ts +10 -10
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca-keeper.d.ts +43 -38
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +29 -20
- package/dist/kernel/moleculer/mesh-mtls/mesh-clear-port.d.ts +32 -32
- package/dist/kernel/moleculer/mesh-mtls/mesh-crl.d.ts +11 -11
- package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +19 -16
- package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +40 -40
- package/dist/kernel/moleculer/mesh-mtls/mesh-tls-enabler.d.ts +5 -1
- package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +131 -130
- package/dist/kernel/moleculer/mesh-queue-report.d.ts +39 -39
- package/dist/kernel/moleculer/node-registry.d.ts +120 -120
- package/dist/kernel/moleculer/process-context.d.ts +2 -2
- package/dist/kernel/moleculer/process-service.d.ts +168 -168
- package/dist/kernel/moleculer/provider-registry.d.ts +9 -9
- package/dist/kernel/moleculer/readiness-context.d.ts +58 -58
- package/dist/kernel/moleculer/readiness-service.d.ts +31 -16
- package/dist/kernel/moleculer/register-framework-resolver.d.ts +6 -6
- package/dist/kernel/moleculer/register-node-client.d.ts +34 -27
- package/dist/kernel/moleculer/remote-logger.d.ts +29 -29
- package/dist/kernel/moleculer/resilient-cap-call.d.ts +21 -21
- package/dist/kernel/moleculer/runner-native-allocator.d.ts +95 -95
- package/dist/kernel/moleculer/runner-process-group.d.ts +57 -57
- package/dist/kernel/moleculer/runtime-state-load.d.ts +21 -11
- package/dist/kernel/moleculer/settings-read-guard.d.ts +39 -39
- package/dist/kernel/moleculer/stream-probe-service.d.ts +25 -6
- package/dist/kernel/moleculer/trpc-links.d.ts +203 -203
- package/dist/kernel/moleculer/typed-array-serde.d.ts +9 -20
- package/dist/kernel/moleculer/worker-device-restore.d.ts +8 -8
- package/dist/kernel/outbound-queue-watch.d.ts +74 -74
- package/dist/kernel/process-cpu-census.d.ts +55 -55
- package/dist/kernel/provider-kind-drift.d.ts +17 -8
- package/dist/kernel/restart-coordinator.d.ts +71 -71
- package/dist/kernel/settings-door-view.d.ts +36 -25
- package/dist/kernel/settings-read-error.d.ts +29 -31
- package/dist/kernel/settings-view-types.d.ts +100 -95
- package/dist/kernel/socket-plane-report.d.ts +214 -153
- package/dist/kernel/status-overlay.d.ts +31 -11
- package/dist/kernel/storage-location-registry.d.ts +50 -50
- package/dist/kernel/store-settings-view.d.ts +13 -13
- package/dist/kernel/system-settings-mirror.d.ts +40 -28
- package/dist/kernel/system-settings-policy.d.ts +15 -34
- package/dist/kernel/transport/cap-action-census.d.ts +183 -183
- package/dist/kernel/transport/cap-action-name.d.ts +84 -84
- package/dist/kernel/transport/cap-child-index.d.ts +41 -41
- package/dist/kernel/transport/cap-route-resolver.d.ts +237 -212
- package/dist/kernel/transport/cap-route.d.ts +139 -139
- package/dist/kernel/transport/cap-routing-hints.d.ts +37 -37
- package/dist/kernel/transport/child-cap-protocol.d.ts +245 -245
- package/dist/kernel/transport/claimed-get-status.d.ts +30 -6
- package/dist/kernel/transport/create-local-transport.d.ts +5 -5
- package/dist/kernel/transport/frame-codec.d.ts +109 -109
- package/dist/kernel/transport/hub-cap-forward.d.ts +81 -59
- package/dist/kernel/transport/index.d.ts +36 -36
- package/dist/kernel/transport/local-child-client.d.ts +184 -184
- package/dist/kernel/transport/local-child-registry.d.ts +592 -592
- package/dist/kernel/transport/local-endpoint-path.d.ts +4 -4
- package/dist/kernel/transport/local-transport.d.ts +92 -92
- package/dist/kernel/transport/parent-unowned-call.d.ts +266 -237
- package/dist/kernel/transport/peer-answered-error.d.ts +14 -14
- package/dist/kernel/transport/socket-channel.d.ts +110 -110
- package/dist/kernel/transport/socket-traffic.d.ts +96 -96
- package/dist/kernel/transport/uds-event-bridge.d.ts +77 -50
- package/dist/kernel/transport/uds-event-bus.d.ts +75 -26
- package/dist/kernel/transport/uds-local-transport.d.ts +14 -14
- package/dist/kernel/transport/uds-log-ingest.d.ts +38 -23
- package/dist/kernel/transport/uds-logger.d.ts +33 -33
- package/dist/kernel/utils/ring-buffer.d.ts +12 -12
- package/dist/kernel/workspace-detect.d.ts +7 -7
- package/dist/lifecycle/lifecycle-state-machine.d.ts +24 -24
- package/dist/logging/formatter.d.ts +52 -25
- package/dist/logging/log-manager.d.ts +133 -133
- package/dist/logging/log-redactor.d.ts +22 -1
- package/dist/logging/log-ring-buffer.d.ts +57 -57
- package/dist/logging/logging-gate.d.ts +69 -25
- package/dist/logging/logging-gate.singleton.d.ts +12 -1
- package/dist/logging/partitioned-log-buffer.d.ts +161 -161
- package/dist/logging/scoped-logger.d.ts +14 -14
- package/dist/network/network-quality.d.ts +8 -8
- package/dist/notification/notification-service.d.ts +37 -37
- package/dist/notification/toast-service.d.ts +18 -18
- package/dist/pipeline/engine-manager-resolver.d.ts +12 -12
- package/dist/pipeline/pipeline-runner.d.ts +6 -6
- package/dist/pipeline/pipeline-validator.d.ts +8 -8
- package/dist/process/proc-stat.d.ts +51 -51
- package/dist/process/resource-monitor.d.ts +19 -19
- package/dist/python/python-env-manager.d.ts +10 -10
- package/dist/repl/interfaces.d.ts +21 -21
- package/dist/repl/repl-engine.d.ts +6 -6
- package/dist/storage/fs-storage-backend.d.ts +35 -35
- package/dist/storage/storage-location-manager.d.ts +21 -21
- package/dist/storage/storage-manager.d.ts +68 -68
- package/dist/tls/boot-tls.d.ts +24 -24
- package/dist/tls/cert-evaluation.d.ts +25 -25
- package/dist/tls/cert-identity.d.ts +39 -39
- package/dist/tls/cert-issue.d.ts +37 -17
- package/dist/tls/cert-manager.d.ts +86 -84
- package/dist/tls/https-listener.d.ts +16 -16
- package/dist/tls/index.d.ts +8 -8
- package/dist/tls/tls-actions.d.ts +18 -18
- package/dist/tls/tls-status.d.ts +15 -15
- package/dist/tls/uploaded-cert.d.ts +9 -9
- package/package.json +9 -3
|
@@ -1,469 +1,450 @@
|
|
|
1
|
-
import { IScopedLogger, IStorageProviderImpl, StorageAccess, StorageLocation, StorageLocationDeclaration, StorageLocationRef } from
|
|
2
|
-
import { ResolveRoot } from
|
|
3
|
-
import { ILocationStore } from
|
|
1
|
+
import type { IScopedLogger, IStorageProviderImpl, StorageAccess, StorageLocation, StorageLocationDeclaration, StorageLocationRef } from "@camstack/types";
|
|
2
|
+
import type { ResolveRoot } from "./location-root-collision.js";
|
|
3
|
+
import type { ILocationStore } from "./location-store.js";
|
|
4
4
|
export interface ListLocationsFilter {
|
|
5
|
-
|
|
5
|
+
readonly type?: string;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
* Minimal structural shape the orchestrator needs from the kernel's
|
|
9
|
+
* `StorageLocationRegistry` — the cardinality lookup plus the full
|
|
10
|
+
* declaration list (the admin-UI Data screen renders one group per
|
|
11
|
+
* declaration). Declared locally so core's builtins don't import the
|
|
12
|
+
* kernel's registry type directly; the addon passes the real
|
|
13
|
+
* `buildStorageLocationRegistry(...)` result, which structurally
|
|
14
|
+
* satisfies this interface.
|
|
15
|
+
*/
|
|
16
16
|
export interface DeclarationSource {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
cardinalityOf(id: string): "single" | "multi" | null;
|
|
18
|
+
/**
|
|
19
|
+
* Effective {@link StorageAccess} of a declared location kind — the
|
|
20
|
+
* constraint that decides which providers may back it. `null` = the kind
|
|
21
|
+
* was never declared. See `upsertLocation`'s remote-provider refusal.
|
|
22
|
+
*/
|
|
23
|
+
accessOf(id: string): StorageAccess | null;
|
|
24
|
+
list(): readonly StorageLocationDeclaration[];
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
* Provider lookup callback. Returns the live set of `storage-provider`
|
|
28
|
+
* registrants. Called per-dispatch (cheap registry scan) so newly
|
|
29
|
+
* loaded addons surface immediately.
|
|
30
|
+
*/
|
|
31
31
|
export type StorageProviderLookup = () => readonly IStorageProviderImpl[];
|
|
32
32
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
* Synchronous `providerId → nodeLocal` resolver, injected by the addon
|
|
34
|
+
* from a cached snapshot of `storage-provider.getProviderInfo()` (the
|
|
35
|
+
* `getProviderInfo` round-trip is async, so a sync cache keeps
|
|
36
|
+
* `upsertLocation` synchronous — the contract its many callers rely on).
|
|
37
|
+
*
|
|
38
|
+
* Returns:
|
|
39
|
+
* - `true` — node-local provider (filesystem): its locations bind to a
|
|
40
|
+
* single node, so a `nodeId` is required.
|
|
41
|
+
* - `false` — node-agnostic provider (S3/SFTP/WebDAV): `nodeId` optional.
|
|
42
|
+
* - `undefined` — provider not (yet) known. Treated as non-node-local:
|
|
43
|
+
* validation does not reject (the provider may register later / be
|
|
44
|
+
* remote), the safe default for the early-boot / in-memory path.
|
|
45
|
+
*/
|
|
46
46
|
export type NodeLocalResolver = (providerId: string) => boolean | undefined;
|
|
47
47
|
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
export type LocationOccupancy =
|
|
48
|
+
* Whether a location still holds anything — the only question `deleteLocation`
|
|
49
|
+
* is allowed to destroy a record on the answer to.
|
|
50
|
+
*
|
|
51
|
+
* - `'occupied'` — something is there. Deleting the record now strands it.
|
|
52
|
+
* - `'empty'` — the location was reached and holds nothing.
|
|
53
|
+
* - `'unknown'` — it could not be reached at all: a remote provider, another
|
|
54
|
+
* node's disk, an unmounted root. NOT "empty". A read that
|
|
55
|
+
* fails must never authorise a destruction (D49).
|
|
56
|
+
*/
|
|
57
|
+
export type LocationOccupancy = "occupied" | "empty" | "unknown";
|
|
58
58
|
export type LocationOccupancyProbe = (location: StorageLocation) => Promise<LocationOccupancy>;
|
|
59
59
|
export interface DeleteLocationOptions {
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
/** Override an `occupied` or `unknown` verdict. See the cap docblock. */
|
|
61
|
+
readonly force?: boolean;
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
* Where a single dispatch must execute: which `storage-provider`, on which
|
|
65
|
+
* node. `providerId` alone is NOT a routing key — every node's filesystem
|
|
66
|
+
* provider registers under the same id, so a target without its `nodeId`
|
|
67
|
+
* silently resolves to whichever node asked (the hub).
|
|
68
|
+
*
|
|
69
|
+
* `nodeId` absent = node-agnostic (S3/SFTP/WebDAV): reachable from anywhere,
|
|
70
|
+
* so the local provider runs it.
|
|
71
|
+
*/
|
|
72
72
|
export interface StorageDispatchTarget {
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
readonly providerId: string;
|
|
74
|
+
readonly nodeId?: string;
|
|
75
75
|
}
|
|
76
76
|
/** The two chunked-I/O session families the orchestrator tracks. */
|
|
77
|
-
export type StorageSessionKind =
|
|
77
|
+
export type StorageSessionKind = "upload" | "download";
|
|
78
78
|
export declare class StorageOrchestratorService {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
readonly backupBasePath?: string;
|
|
451
|
-
readonly declarations: readonly StorageLocationDeclaration[];
|
|
452
|
-
}): void;
|
|
453
|
-
/**
|
|
454
|
-
* The same-type physical-root refusal (D389).
|
|
455
|
-
*
|
|
456
|
-
* An unresolvable root — another node's disk, a remote provider, a path that
|
|
457
|
-
* does not exist yet — WARNS and lets the write through. Refusing on a read
|
|
458
|
-
* that could not be taken blocks the operator on a doubt, and the recorder's
|
|
459
|
-
* demotion still catches what slips past (D49's spirit).
|
|
460
|
-
*/
|
|
461
|
-
private refuseSameTypeRootCollision;
|
|
462
|
-
/** Injectable so a test can drive symlinks and unresolvable paths without
|
|
463
|
-
* touching a real filesystem. Production takes the shared derivation. */
|
|
464
|
-
private resolveRoot;
|
|
465
|
-
/** Test seam for {@link refuseSameTypeRootCollision}. */
|
|
466
|
-
setRootResolver(resolveRoot: ResolveRoot): void;
|
|
467
|
-
/** Internal: check whether any location of the given type exists. */
|
|
468
|
-
private hasAnyLocationOfType;
|
|
79
|
+
private readonly logger;
|
|
80
|
+
private readonly getProviders;
|
|
81
|
+
/**
|
|
82
|
+
* Optional persistence backend. When supplied, `initialize()`
|
|
83
|
+
* hydrates the in-memory map from the store, and every mutation
|
|
84
|
+
* (upsert/delete) mirrors to it. When `null` / `undefined`, the
|
|
85
|
+
* service is in-memory only — the contract used by the existing
|
|
86
|
+
* routing tests, where re-creating the service deliberately
|
|
87
|
+
* forgets every location.
|
|
88
|
+
*
|
|
89
|
+
* Mutable because production boot wires it late: the `settings-store`
|
|
90
|
+
* cap often isn't registered when the orchestrator initializes, so the
|
|
91
|
+
* service starts store-less and the addon calls {@link attachStore} once
|
|
92
|
+
* the provider appears. See {@link attachStore}.
|
|
93
|
+
*/
|
|
94
|
+
private locationStore;
|
|
95
|
+
/** Cross-node provider resolver (hub wiring: a node-routed capability
|
|
96
|
+
* proxy over `storage-provider`). Absent → remote locations error. */
|
|
97
|
+
private readonly getRemoteProvider?;
|
|
98
|
+
private readonly locations;
|
|
99
|
+
/**
|
|
100
|
+
* Declaration-driven cardinality source, injected by the addon after
|
|
101
|
+
* the kernel aggregates `storageLocations` declarations. `null` until
|
|
102
|
+
* `setRegistry` runs — `upsertLocation` then treats every type as
|
|
103
|
+
* `'multi'` (no singleton enforcement), the safe default for the
|
|
104
|
+
* in-memory-only / early-boot path.
|
|
105
|
+
*/
|
|
106
|
+
private registry;
|
|
107
|
+
/**
|
|
108
|
+
* Injected `providerId → nodeLocal` resolver (see {@link NodeLocalResolver}).
|
|
109
|
+
* `null` until {@link setNodeLocalResolver} runs — `upsertLocation` then
|
|
110
|
+
* skips the node-local requirement check entirely (every provider is
|
|
111
|
+
* treated as node-agnostic), the safe default for the in-memory-only /
|
|
112
|
+
* early-boot path that predates the resolver wiring.
|
|
113
|
+
*/
|
|
114
|
+
private nodeLocalResolver;
|
|
115
|
+
/**
|
|
116
|
+
* Injected occupancy probe (see {@link LocationOccupancyProbe}). `null` until
|
|
117
|
+
* {@link setOccupancyProbe} runs, and a `null` probe answers `unknown` — so a
|
|
118
|
+
* service with no probe REFUSES an unforced delete rather than performing one
|
|
119
|
+
* it could not check. The check is the point; a check that defaults to
|
|
120
|
+
* "permit" is a paragraph, not a guard.
|
|
121
|
+
*/
|
|
122
|
+
private occupancyProbe;
|
|
123
|
+
/** `localNodeId` with any forked-child `/addon` suffix stripped. */
|
|
124
|
+
private readonly localNode;
|
|
125
|
+
/**
|
|
126
|
+
* `<kind>:<sessionId>` → the dispatch target that OPENED the session.
|
|
127
|
+
* Chunked I/O carries no `StorageLocation` after the first hop, so without
|
|
128
|
+
* this the follow-up chunks fall back to a `providerId`-only lookup — which
|
|
129
|
+
* on a multi-node cluster means the hub's filesystem, not the agent's.
|
|
130
|
+
*/
|
|
131
|
+
private readonly sessionTargets;
|
|
132
|
+
constructor(logger: IScopedLogger, getProviders: StorageProviderLookup, locationStore?: ILocationStore | null, localNodeId?: string, getRemoteProvider?: ((nodeId: string) => IStorageProviderImpl | null) | undefined);
|
|
133
|
+
/**
|
|
134
|
+
* The node this orchestrator runs on, with any forked-child `/addon`
|
|
135
|
+
* suffix stripped. A location whose `nodeId` differs is NOT this node's
|
|
136
|
+
* to touch — its bytes, and its free space, live elsewhere.
|
|
137
|
+
*/
|
|
138
|
+
getLocalNodeId(): string;
|
|
139
|
+
/** True once a persistence store is wired (constructor or {@link attachStore}). */
|
|
140
|
+
hasStore(): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Late-bind the persistence store (production boot: the `settings-store`
|
|
143
|
+
* cap registers after the orchestrator initializes, so the service runs
|
|
144
|
+
* in-memory-only until then). Idempotent — a second call once a store is
|
|
145
|
+
* wired is a no-op.
|
|
146
|
+
*
|
|
147
|
+
* Reconciles both directions so operator edits survive a reboot:
|
|
148
|
+
* 1. hydrate — DB rows win over any early in-memory seed (restores
|
|
149
|
+
* operator config like `minFreePercent` that the pre-store boot
|
|
150
|
+
* can't see);
|
|
151
|
+
* 2. backfill — in-memory locations the DB doesn't have yet (the
|
|
152
|
+
* pre-store seed defaults on a fresh install) are persisted, so the
|
|
153
|
+
* store becomes the durable source of truth from here on.
|
|
154
|
+
*
|
|
155
|
+
* **The re-entry guard latches on a SUCCESSFUL hydrate, not on the attempt** —
|
|
156
|
+
* `loadAll()` is awaited BEFORE `this.locationStore` is assigned, and the
|
|
157
|
+
* order is load-bearing. Latching first meant one transient read error
|
|
158
|
+
* answered `hasStore()` true forever, so the addon's `ensureStoreWired` gate
|
|
159
|
+
* skipped every retry; the service then ran the whole process lifetime on
|
|
160
|
+
* pre-store seed defaults while `upsert` mirrored them onto rows it had never
|
|
161
|
+
* read, silently replacing the operator's persisted `minFreePercent`. Failing
|
|
162
|
+
* back to store-less is the safe direction: an in-memory-only service writes
|
|
163
|
+
* nothing over what is on disk, and the next `capability:provider-registered`
|
|
164
|
+
* event tries again. Held by
|
|
165
|
+
* `__tests__/storage-orchestrator-persistence.spec.ts`.
|
|
166
|
+
*/
|
|
167
|
+
attachStore(store: ILocationStore): Promise<void>;
|
|
168
|
+
/**
|
|
169
|
+
* ONE explicit migration onto the four-state model (D385), run once per boot
|
|
170
|
+
* against the rows that came off disk. Idempotent: the second boot finds
|
|
171
|
+
* nothing to do.
|
|
172
|
+
*
|
|
173
|
+
* Two steps, in order, and each one is a WRITE — the point is that "absent"
|
|
174
|
+
* stops existing rather than being re-interpreted on every read forever:
|
|
175
|
+
*
|
|
176
|
+
* 1. A row with no `mode` is stamped with the mode its legacy flags imply
|
|
177
|
+
* (`legacyModeOf`): `config.readOnly === true` → `readonly` and the
|
|
178
|
+
* config key is DELETED; `enabled === false` → `readonly` (the
|
|
179
|
+
* CONSERVATIVE direction — a state change must never start deleting
|
|
180
|
+
* footage on its own); everything else → `active`. `withLocationMode`
|
|
181
|
+
* derives `enabled` from the mode, so the two can never disagree, and
|
|
182
|
+
* this subsumes the D383 pass that stamped flagless rows `enabled: true`.
|
|
183
|
+
* 2. A type left with NO write target — only reachable from a hand-edited
|
|
184
|
+
* store or a row an older build wrote — gets one made `active`, chosen as
|
|
185
|
+
* the row the RETIRED default flag named, else the `:default`-slugged
|
|
186
|
+
* row, else the lexicographically first. Loudly: a class with no write
|
|
187
|
+
* target records nowhere, and refusing to repair it here would leave the
|
|
188
|
+
* hub silently unable to write with no operator action pending.
|
|
189
|
+
*
|
|
190
|
+
* An operator's explicit `readonly`/`drain`/`disabled` is never reversed by
|
|
191
|
+
* step 1 — only step 2 touches it, and only when the alternative is a class
|
|
192
|
+
* that cannot write at all.
|
|
193
|
+
*
|
|
194
|
+
* On the live hub every location is enabled with no `readOnly`, so step 1 is
|
|
195
|
+
* a no-op that stamps `active` and nothing else changes.
|
|
196
|
+
*/
|
|
197
|
+
private migrateOntoTheWriteSet;
|
|
198
|
+
/** Apply one migrated row in memory and mirror it to the store. */
|
|
199
|
+
private persistMigrated;
|
|
200
|
+
/**
|
|
201
|
+
* Inject the declaration-driven cardinality source. Called once by the
|
|
202
|
+
* addon after the kernel aggregates every addon's `storageLocations`
|
|
203
|
+
* declarations into a `StorageLocationRegistry`.
|
|
204
|
+
*/
|
|
205
|
+
setRegistry(registry: DeclarationSource | null): void;
|
|
206
|
+
/**
|
|
207
|
+
* Inject the synchronous `providerId → nodeLocal` resolver (SP1). Called
|
|
208
|
+
* by the addon from a cached snapshot of every `storage-provider`'s
|
|
209
|
+
* `getProviderInfo().nodeLocal`, refreshed when the provider collection
|
|
210
|
+
* changes. Powers the node-local upsert guard and the boot backfill.
|
|
211
|
+
*/
|
|
212
|
+
setNodeLocalResolver(resolver: NodeLocalResolver | null): void;
|
|
213
|
+
/**
|
|
214
|
+
* Inject the "does this location still hold anything" probe read by
|
|
215
|
+
* {@link deleteLocation}. Absent → every delete sees `unknown` and therefore
|
|
216
|
+
* REFUSES without `force`, which is the safe direction for a service wired
|
|
217
|
+
* without one.
|
|
218
|
+
*/
|
|
219
|
+
setOccupancyProbe(probe: LocationOccupancyProbe | null): void;
|
|
220
|
+
/**
|
|
221
|
+
* The full set of addon-declared storage locations, as aggregated by
|
|
222
|
+
* the kernel and injected via {@link setRegistry}. Powers the admin-UI
|
|
223
|
+
* Data screen's per-declaration grouping. Empty until the registry is
|
|
224
|
+
* injected (early-boot / in-memory-only path).
|
|
225
|
+
*/
|
|
226
|
+
listDeclarations(): readonly StorageLocationDeclaration[];
|
|
227
|
+
/**
|
|
228
|
+
* Hydrate the in-memory map from the persistence layer. Called once
|
|
229
|
+
* by the addon during `onInitialize`, before the eager seed pass.
|
|
230
|
+
* Idempotent — running it twice with the same store contents
|
|
231
|
+
* produces the same map. No-op when the service was constructed
|
|
232
|
+
* without a store.
|
|
233
|
+
*
|
|
234
|
+
* Errors loading individual rows are tolerated: the bad row is
|
|
235
|
+
* skipped and logged so a single corrupted record doesn't lock the
|
|
236
|
+
* whole orchestrator out of boot. (The store-side validation pass
|
|
237
|
+
* before insert means only schema-invalid SQL state can produce
|
|
238
|
+
* such a row.)
|
|
239
|
+
*/
|
|
240
|
+
initialize(): Promise<void>;
|
|
241
|
+
/**
|
|
242
|
+
* Boot backfill (SP1): stamp `nodeId` on every persisted node-local
|
|
243
|
+
* location that lacks one. Single-node deployments seeded their
|
|
244
|
+
* filesystem locations before `nodeId` existed — they live on `hubNodeId`
|
|
245
|
+
* (the hub). Node-agnostic (remote) locations are left untouched: their
|
|
246
|
+
* absent `nodeId` is correct (reachable from any node).
|
|
247
|
+
*
|
|
248
|
+
* Idempotent — a location that already carries a `nodeId` (any value) is
|
|
249
|
+
* never re-touched, so re-running on a populated map (or a re-boot) is a
|
|
250
|
+
* no-op. A plain local update, not versioned-migration machinery: only
|
|
251
|
+
* the rows missing `nodeId` are mutated + persisted.
|
|
252
|
+
*
|
|
253
|
+
* No-op until the node-local resolver is wired (it classifies which
|
|
254
|
+
* providers are node-local).
|
|
255
|
+
*/
|
|
256
|
+
backfillNodeIds(hubNodeId: string): Promise<void>;
|
|
257
|
+
listLocations(filter?: ListLocationsFilter): readonly StorageLocation[];
|
|
258
|
+
/**
|
|
259
|
+
* The WRITE SET of a type: every enabled location of it, in stable id order.
|
|
260
|
+
* This replaced `getDefaultLocation` (D383) — a type does not have one write
|
|
261
|
+
* target any more, it has a pool, and every consumer that must pick one picks
|
|
262
|
+
* from here by its own rule (the recorder by headroom, a drain by an operator
|
|
263
|
+
* -named destination).
|
|
264
|
+
*/
|
|
265
|
+
writeTargets(type: string): readonly StorageLocation[];
|
|
266
|
+
/**
|
|
267
|
+
* Change the WRITE SET as one compensated commit: each named location is
|
|
268
|
+
* enabled (it joins the pool) or disabled (it becomes read-only — still read,
|
|
269
|
+
* still played back, still age-swept, still drained).
|
|
270
|
+
*
|
|
271
|
+
* This is the cutover verb, and its only caller is the migration coordinator,
|
|
272
|
+
* which persists its `repointing` phase BEFORE calling so a crash mid-write
|
|
273
|
+
* is recovered by replaying the same idempotent set before writers resume.
|
|
274
|
+
*
|
|
275
|
+
* It moves ONLY the locations it is given: a cutover from A to C on a class
|
|
276
|
+
* that also writes to B leaves B in the pool, because the operator's pool is
|
|
277
|
+
* the authority and a migration is not a licence to shrink it. The commit is
|
|
278
|
+
* refused when it would leave a write-serving type with nothing enabled —
|
|
279
|
+
* the same refusal `upsertLocation` applies, judged on the RESULT so an
|
|
280
|
+
* enable and a disable in one commit are weighed together.
|
|
281
|
+
*/
|
|
282
|
+
setWriteTargets(enabledByLocationId: ReadonlyMap<string, boolean>): Promise<void>;
|
|
283
|
+
/**
|
|
284
|
+
* Insert or update a location.
|
|
285
|
+
*
|
|
286
|
+
* When a persistence store is wired (Task 6), the record is mirrored to it;
|
|
287
|
+
* the mirror is fire-and-forget and its errors reach the logger.
|
|
288
|
+
*/
|
|
289
|
+
/**
|
|
290
|
+
* Refuse a `(location kind, provider)` pair the kind cannot use.
|
|
291
|
+
*
|
|
292
|
+
* The rule, in one line: a `'local-path'` kind requires a provider whose
|
|
293
|
+
* `getProviderInfo().nodeLocal` is `true`.
|
|
294
|
+
*
|
|
295
|
+
* `nodeLocal` is the honest name for "this provider's `resolve` returns a
|
|
296
|
+
* path on the filesystem of the node that resolved it". The
|
|
297
|
+
* `storage-provider` cap's own discriminated union already forces every
|
|
298
|
+
* provider to declare it, and all four remote providers declare `false`, so
|
|
299
|
+
* no new cap surface is needed to ask the question.
|
|
300
|
+
*
|
|
301
|
+
* Three-valued on purpose. Only a POSITIVE `false` refuses:
|
|
302
|
+
* - `true` → node-local, always fine.
|
|
303
|
+
* - `false` → the provider is known and known to be remote. REFUSE.
|
|
304
|
+
* - `undefined` → the provider has not registered yet (early boot, an addon
|
|
305
|
+
* still loading). That is "unknown", not "remote", and a read that could
|
|
306
|
+
* not be made must never destroy work (D49) — the system seed runs
|
|
307
|
+
* through this path before any provider registers. Allowed, and logged,
|
|
308
|
+
* so the allowance is never silent.
|
|
309
|
+
*
|
|
310
|
+
* The DECLARATION side is read the same way. A kind the registry does not
|
|
311
|
+
* know is `local-path` (fail-closed: an unknown kind is not a permissive
|
|
312
|
+
* one), but NO REGISTRY AT ALL is a different statement — nothing has been
|
|
313
|
+
* loaded, so nothing can be concluded about any kind. The addon injects the
|
|
314
|
+
* registry inside `onInitialize`, before the `storage` cap is mounted, so
|
|
315
|
+
* there is no window in which an operator upsert sees this branch; a service
|
|
316
|
+
* constructed without one is the in-memory/early-boot path.
|
|
317
|
+
*/
|
|
318
|
+
private refuseIncompatibleProvider;
|
|
319
|
+
upsertLocation(input: Omit<StorageLocation, "createdAt" | "updatedAt">): StorageLocation;
|
|
320
|
+
/**
|
|
321
|
+
* Remove a location. Refuses the last location of a type and the last
|
|
322
|
+
* enabled location of a type. `isSystem` is informational — a frozen
|
|
323
|
+
* recordings `:default` is deletable once a sibling is live. Occupancy still
|
|
324
|
+
* refuses unless `force` is set; force never overrides uniqueness /
|
|
325
|
+
* last-enabled.
|
|
326
|
+
*/
|
|
327
|
+
deleteLocation(id: string, options?: DeleteLocationOptions): Promise<void>;
|
|
328
|
+
/**
|
|
329
|
+
* Run the injected occupancy probe, converting "no probe" and "the probe
|
|
330
|
+
* threw" into `unknown` rather than into a permit.
|
|
331
|
+
*/
|
|
332
|
+
private probeOccupancy;
|
|
333
|
+
/**
|
|
334
|
+
* Remove seed-shaped locations (`<type>:default`) whose type is no longer
|
|
335
|
+
* declared by any addon (stale defaults from a removed location type).
|
|
336
|
+
* Operator-added locations of an undeclared type are KEPT but warned.
|
|
337
|
+
*
|
|
338
|
+
* FAIL-SAFE: if the registry is EMPTY (no addon declared any location), we
|
|
339
|
+
* refuse to prune anything. An empty registry almost always means
|
|
340
|
+
* declarations failed to load (boot ordering, a stale install) — pruning
|
|
341
|
+
* "everything undeclared" in that state would wipe every seeded location
|
|
342
|
+
* (data/logs/recordings/…). Better to keep stale rows than destroy live ones.
|
|
343
|
+
*/
|
|
344
|
+
pruneUndeclaredSystemLocations(): void;
|
|
345
|
+
/**
|
|
346
|
+
* Resolve a `StorageLocationRef` to a concrete `StorageLocation`.
|
|
347
|
+
* - bare type (e.g. `'backups'`) → default location of that type
|
|
348
|
+
* - fully-qualified id (e.g. `'backups:nas-01'`) → that exact instance
|
|
349
|
+
*
|
|
350
|
+
* Throws an actionable error when nothing matches — every consumer of
|
|
351
|
+
* the singleton `storage` cap funnels through here, so the error
|
|
352
|
+
* message is what operators see when the orchestrator's view of the
|
|
353
|
+
* world doesn't match expectations.
|
|
354
|
+
*/
|
|
355
|
+
resolveRef(ref: StorageLocationRef): StorageLocation;
|
|
356
|
+
/**
|
|
357
|
+
* Find the storage-provider that backs a given location — the entry point
|
|
358
|
+
* every consumer-facing `storage` cap method funnels through.
|
|
359
|
+
*
|
|
360
|
+
* Routing key is `(providerId, nodeId)`, never `providerId` alone: every
|
|
361
|
+
* node's FilesystemStorageProvider registers under the SAME providerId, so
|
|
362
|
+
* a providerId-only match resolves to whichever node asked. That is how a
|
|
363
|
+
* location created on an agent ended up writing to the HUB's filesystem
|
|
364
|
+
* (root-caused 2026-07-29).
|
|
365
|
+
*/
|
|
366
|
+
getProviderFor(location: StorageLocation): Promise<IStorageProviderImpl>;
|
|
367
|
+
/**
|
|
368
|
+
* Resolve one dispatch target to the provider that must execute it.
|
|
369
|
+
*
|
|
370
|
+
* `descriptor` is the operator-facing subject of the error message
|
|
371
|
+
* (`location "recordings:disk"`, `uploadId "u-42"`); `locationId` is the
|
|
372
|
+
* structured tag for the log line when there is a location behind the
|
|
373
|
+
* dispatch (chunked sessions carry only the session id).
|
|
374
|
+
*
|
|
375
|
+
* Both failure branches LOG before throwing, and NEITHER falls back to the
|
|
376
|
+
* local provider — a silent fallback is the bug this method exists to fix.
|
|
377
|
+
*/
|
|
378
|
+
private getProviderForTarget;
|
|
379
|
+
/**
|
|
380
|
+
* Remember which provider — and on which NODE — opened a chunked session.
|
|
381
|
+
* `beginUpload` / `beginDownload` carry a `StorageLocation`; every later
|
|
382
|
+
* chunk carries only the session id, and a session id issued by an agent
|
|
383
|
+
* means nothing to the hub's provider.
|
|
384
|
+
*/
|
|
385
|
+
rememberSession(kind: StorageSessionKind, sessionId: string, location: StorageLocation): void;
|
|
386
|
+
/** Drop a session's routing entry (finalize / abort / end). */
|
|
387
|
+
forgetSession(kind: StorageSessionKind, sessionId: string): void;
|
|
388
|
+
/** Drop every session entry (addon shutdown). */
|
|
389
|
+
clearSessions(): void;
|
|
390
|
+
/**
|
|
391
|
+
* Resolve the provider that owns an in-flight chunked session, on the node
|
|
392
|
+
* that opened it. Throws when the orchestrator has no record of the open
|
|
393
|
+
* call (provider gone, or a chunk for a session it never issued).
|
|
394
|
+
*/
|
|
395
|
+
getProviderForSession(kind: StorageSessionKind, sessionId: string): Promise<IStorageProviderImpl>;
|
|
396
|
+
/** Convenience: lookup by id (returns `undefined` if not found). */
|
|
397
|
+
getLocationById(id: string): StorageLocation | undefined;
|
|
398
|
+
/**
|
|
399
|
+
* Seed one default `StorageLocation` per addon-declared location that
|
|
400
|
+
* doesn't already have one. Idempotent — re-running with the same
|
|
401
|
+
* declarations on a populated map is a no-op (each declared `id`
|
|
402
|
+
* already resolves to an existing `<id>:default`).
|
|
403
|
+
*
|
|
404
|
+
* The seeded row is born ENABLED — a fresh install must be able to write the
|
|
405
|
+
* moment it boots, and `enabled` is the only write switch there is (D383).
|
|
406
|
+
* The `:default` suffix is a NAME kept for idempotency across existing
|
|
407
|
+
* installs, not a flag: the stored `id` is `'recordings:default'` so it
|
|
408
|
+
* satisfies the
|
|
409
|
+
* `^[a-z][a-z0-9-]*:[a-z0-9-]+$` regex on `StorageLocationSchema.id`.
|
|
410
|
+
*
|
|
411
|
+
* `basePath` is the storage root (e.g. `<CAMSTACK_DATA>`). Each
|
|
412
|
+
* location's `config.basePath` is `<basePath>/<id>`, except when the
|
|
413
|
+
* declaration sets `defaultsTo` — then it inherits the resolved root of
|
|
414
|
+
* the referenced location's default instance (sharing the same root
|
|
415
|
+
* directory for derivative slots like `recordingsLow` → `recordings`).
|
|
416
|
+
*/
|
|
417
|
+
seedDefaults(input: {
|
|
418
|
+
readonly providerId: string;
|
|
419
|
+
readonly basePath: string;
|
|
420
|
+
/**
|
|
421
|
+
* Root for declarations marked `defaultRoot: 'media'` (the dedicated media
|
|
422
|
+
* volume, `CAMSTACK_MEDIA_ROOT`). Absent → media declarations fall back to
|
|
423
|
+
* `basePath` like everything else.
|
|
424
|
+
*/
|
|
425
|
+
readonly mediaBasePath?: string;
|
|
426
|
+
/**
|
|
427
|
+
* Root for declarations marked `defaultRoot: 'backup'` (the dedicated
|
|
428
|
+
* backup volume, `CAMSTACK_BACKUP_ROOT`, default `/backups`). Absent →
|
|
429
|
+
* backup declarations fall back to `basePath`.
|
|
430
|
+
*/
|
|
431
|
+
readonly backupBasePath?: string;
|
|
432
|
+
readonly declarations: readonly StorageLocationDeclaration[];
|
|
433
|
+
}): void;
|
|
434
|
+
/**
|
|
435
|
+
* The same-type physical-root refusal (D389).
|
|
436
|
+
*
|
|
437
|
+
* An unresolvable root — another node's disk, a remote provider, a path that
|
|
438
|
+
* does not exist yet — WARNS and lets the write through. Refusing on a read
|
|
439
|
+
* that could not be taken blocks the operator on a doubt, and the recorder's
|
|
440
|
+
* demotion still catches what slips past (D49's spirit).
|
|
441
|
+
*/
|
|
442
|
+
private refuseSameTypeRootCollision;
|
|
443
|
+
/** Injectable so a test can drive symlinks and unresolvable paths without
|
|
444
|
+
* touching a real filesystem. Production takes the shared derivation. */
|
|
445
|
+
private resolveRoot;
|
|
446
|
+
/** Test seam for {@link refuseSameTypeRootCollision}. */
|
|
447
|
+
setRootResolver(resolveRoot: ResolveRoot): void;
|
|
448
|
+
/** Internal: check whether any location of the given type exists. */
|
|
449
|
+
private hasAnyLocationOfType;
|
|
469
450
|
}
|