@camstack/system 1.2.276 → 1.2.277

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.
Files changed (61) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/autotrack/index.js +1 -1
  8. package/dist/builtins/autotrack/index.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/camera-grid/index.js +1 -1
  12. package/dist/builtins/camera-grid/index.mjs +1 -1
  13. package/dist/builtins/console-logging/index.js +1 -1
  14. package/dist/builtins/console-logging/index.mjs +1 -1
  15. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  16. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  17. package/dist/builtins/device-manager/device-bindings-store.d.ts +10 -0
  18. package/dist/builtins/device-manager/device-manager.addon.js +63 -118
  19. package/dist/builtins/device-manager/device-manager.addon.mjs +64 -116
  20. package/dist/builtins/device-manager/device-meta-types.d.ts +15 -27
  21. package/dist/builtins/device-manager/device-source-activation.d.ts +9 -43
  22. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  23. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  24. package/dist/builtins/hub-forwarder/index.js +1 -1
  25. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  30. package/dist/builtins/local-network/local-network.addon.js +1 -1
  31. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  32. package/dist/builtins/loki-logging/index.js +1 -1
  33. package/dist/builtins/loki-logging/index.mjs +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  35. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  36. package/dist/builtins/platform-probe/index.js +1 -1
  37. package/dist/builtins/platform-probe/index.mjs +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  39. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  40. package/dist/builtins/snapshot/index.js +1 -1
  41. package/dist/builtins/snapshot/index.mjs +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  43. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  47. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  48. package/dist/builtins/system-config/system-config.addon.js +1 -1
  49. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  50. package/dist/builtins/winston-logging/index.js +1 -1
  51. package/dist/builtins/winston-logging/index.mjs +1 -1
  52. package/dist/{dist-D_OlSf31.js → dist-Bu8HN-KS.js} +36 -18
  53. package/dist/{dist-AHdiIdJH.mjs → dist-DOF9wnat.mjs} +36 -18
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.js +14 -67
  56. package/dist/index.mjs +16 -66
  57. package/dist/kernel/capability-registry.d.ts +12 -42
  58. package/dist/kernel/index.d.ts +0 -1
  59. package/dist/{retired-settings-keys-LwFyTKun.js → retired-settings-keys-BwE6S2eQ.js} +1 -1
  60. package/dist/{retired-settings-keys-Cp3oG_aH.mjs → retired-settings-keys-DXMfts8c.mjs} +1 -1
  61. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-D_OlSf31.js");
3
+ const require_dist = require("./dist-Bu8HN-KS.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_formatter = require("./formatter-DqAKDlvN.js");
@@ -5908,7 +5908,6 @@ var CapabilityRegistry = class CapabilityRegistry {
5908
5908
  * camera keeps every provider it has today, and a provider that registers
5909
5909
  * after the operator's last toggle needs no second write to be seen.
5910
5910
  */
5911
- deviceDisabledSources = /* @__PURE__ */ new Map();
5912
5911
  /** autoActivate flags per (capability, addonId) — from addon manifests */
5913
5912
  autoActivateFlags = /* @__PURE__ */ new Map();
5914
5913
  /**
@@ -6805,72 +6804,23 @@ var CapabilityRegistry = class CapabilityRegistry {
6805
6804
  return null;
6806
6805
  }
6807
6806
  /**
6808
- * Mirror ONE device's persisted source deactivations for `capability` into
6809
- * the projection (D556). The authority is the device-manager's
6810
- * `deviceBindings` store; this is the read side of that write and the only
6811
- * way the set changes.
6812
- *
6813
- * No check that `capability` is declared, and none that the addons are
6814
- * registered: a persisted operator decision is a fact about the fleet, not a
6815
- * reference to a live object, and replaying it at boot must not depend on
6816
- * which addon happened to register first. An empty list drops the entry
6817
- * (unset = every source).
6818
- */
6819
- setDeviceDisabledSources(deviceId, capability, addonIds) {
6820
- let deviceMap = this.deviceDisabledSources.get(deviceId);
6821
- if (addonIds.length === 0) {
6822
- if (!deviceMap) return;
6823
- deviceMap.delete(capability);
6824
- if (deviceMap.size === 0) this.deviceDisabledSources.delete(deviceId);
6825
- this.logger.debug("Device source deactivations cleared", {
6826
- tags: { deviceId: Number(deviceId) },
6827
- meta: { capability }
6828
- });
6829
- return;
6830
- }
6831
- if (!deviceMap) {
6832
- deviceMap = /* @__PURE__ */ new Map();
6833
- this.deviceDisabledSources.set(deviceId, deviceMap);
6834
- }
6835
- deviceMap.set(capability, new Set(addonIds));
6836
- this.logger.debug("Device source deactivations mirrored", {
6837
- tags: { deviceId: Number(deviceId) },
6838
- meta: {
6839
- capability,
6840
- disabledAddonIds: [...addonIds]
6841
- }
6842
- });
6843
- }
6844
- /**
6845
- * The addon ids the operator switched OFF as sources of this device for
6846
- * `capability`. Empty means every source — never "none".
6847
- */
6848
- getDeviceDisabledSources(deviceId, capability) {
6849
- const disabled = this.deviceDisabledSources.get(deviceId)?.get(capability);
6850
- return disabled === void 0 ? [] : [...disabled];
6851
- }
6852
- /** Is `addonId` switched off as a source of this device for `capability`? */
6853
- isDeviceSourceDisabled(deviceId, capability, addonId) {
6854
- return this.deviceDisabledSources.get(deviceId)?.get(capability)?.has(addonId) === true;
6855
- }
6856
- /**
6857
6807
  * Resolve collection providers for a specific device.
6858
- * Filters by activation (the manifest's autoActivate) and by the per-device
6859
- * source deactivations the operator persisted (D556).
6860
6808
  *
6861
- * `includeSwitchedOff` keeps the providers the operator switched off for this
6862
- * device. It exists for ONE caller — the source LISTING path — because a
6863
- * switched-off source must still produce a row to be switched back on from
6864
- * (D554 decision 4, D556 as amended), and only its own provider can name it.
6865
- * Every other path takes the default and sees the SERVING set: the sources
6866
- * that may actually contribute.
6867
- */
6868
- resolveCollectionForDevice(capability, deviceId, options) {
6809
+ * Filters by activation (the manifest's autoActivate) and by nothing else.
6810
+ * The per-device DENY set that used to filter here is gone with the switch
6811
+ * it projected (2026-09-20): *"tutti i providers funzionano sempre"*. WHICH
6812
+ * providers a device has is now answered by its BINDINGS
6813
+ * (`device-bindings-store.ts` step 0), which is a different question from
6814
+ * which of them are registered and running — this one.
6815
+ *
6816
+ * `deviceId` is kept in the signature and deliberately unused: the resolution
6817
+ * is per-device by CONTRACT, and a caller that stops passing one is a caller
6818
+ * that has stopped asking about a device.
6819
+ */
6820
+ resolveCollectionForDevice(capability, _deviceId) {
6869
6821
  const state = this.capabilities.get(capability);
6870
6822
  if (!state || state.definition.mode !== "collection") return [];
6871
- const disabledForDevice = this.deviceDisabledSources.get(deviceId)?.get(capability);
6872
- const keepSwitchedOff = options?.includeSwitchedOff === true;
6873
- return [...state.providers.entries()].filter(([addonId]) => !state.disabledProviders.has(addonId)).filter(([addonId]) => this.isActiveForSystem(capability, addonId)).filter(([addonId]) => keepSwitchedOff || disabledForDevice?.has(addonId) !== true).map(([, provider]) => asProvider(provider));
6823
+ return [...state.providers.entries()].filter(([addonId]) => !state.disabledProviders.has(addonId)).filter(([addonId]) => this.isActiveForSystem(capability, addonId)).map(([, provider]) => asProvider(provider));
6874
6824
  }
6875
6825
  /** Check if all dependencies for a capability are satisfied. */
6876
6826
  areDependenciesMet(capabilityName) {
@@ -96239,14 +96189,12 @@ exports.isClusterSecretMismatchError = isClusterSecretMismatchError;
96239
96189
  exports.isCollectionArrayMethod = require_dist.isCollectionArrayMethod;
96240
96190
  exports.isInfraCapability = isInfraCapability;
96241
96191
  exports.isModelDownloaded = require_event_loop_stall_monitor.isModelDownloaded;
96242
- exports.isSourceDenied = require_builtins_device_manager_device_manager_addon.isSourceDenied;
96243
96192
  exports.isSourceNewer = isSourceNewer;
96244
96193
  exports.isolatedBuiltinPhase = isolatedBuiltinPhase;
96245
96194
  exports.loadTlsCert = require_tls$1.loadTlsCert;
96246
96195
  exports.localEndpointPath = require_manifest_system_deps.localEndpointPath;
96247
96196
  exports.localProviderLink = require_manifest_system_deps.localProviderLink;
96248
96197
  exports.mountNativeCapService = require_manifest_system_deps.mountNativeCapService;
96249
- exports.nextDisabledSources = require_builtins_device_manager_device_manager_addon.nextDisabledSources;
96250
96198
  exports.nextRssBudgetState = require_manifest_system_deps.nextRssBudgetState;
96251
96199
  exports.parseCapAction = require_manifest_system_deps.parseCapAction;
96252
96200
  exports.parseRangeHeader = require_event_loop_stall_monitor.parseRangeHeader;
@@ -96272,7 +96220,6 @@ exports.reissueTlsLeaf = require_tls$1.reissueTlsLeaf;
96272
96220
  exports.resolveFilePath = require_event_loop_stall_monitor.resolveFilePath;
96273
96221
  exports.resolveHwAccel = require_manifest_system_deps.resolveHwAccel;
96274
96222
  exports.resolveNpmInvocation = require_manifest_system_deps.resolveNpmInvocation;
96275
- exports.restoreDeviceSourceActivations = require_builtins_device_manager_device_manager_addon.restoreDeviceSourceActivations;
96276
96223
  exports.runHubAddonBoot = runHubAddonBoot;
96277
96224
  exports.runNpm = require_manifest_system_deps.runNpm;
96278
96225
  exports.sampleSocketDirection = require_manifest_system_deps.sampleSocketDirection;
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-AHdiIdJH.mjs";
2
+ import { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-DOF9wnat.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
6
6
  import { ConsoleDestination, ConsoleLoggingAddon } from "./builtins/console-logging/index.mjs";
7
7
  import { CoreBlocksAddon } from "./builtins/core-blocks/core-blocks.addon.mjs";
8
8
  import "./builtins/core-blocks/index.mjs";
9
- import { DeviceManagerAddon, i as setWrapperActive, n as nextDisabledSources, r as restoreDeviceSourceActivations, t as isSourceDenied } from "./builtins/device-manager/device-manager.addon.mjs";
9
+ import { DeviceManagerAddon, t as setWrapperActive } from "./builtins/device-manager/device-manager.addon.mjs";
10
10
  import "./builtins/device-manager/index.mjs";
11
11
  import { HubForwarderAddon, HubForwarderDestination } from "./builtins/hub-forwarder/index.mjs";
12
12
  import { LivenessMonitorAddon } from "./builtins/liveness-monitor/liveness-monitor.addon.mjs";
@@ -5901,7 +5901,6 @@ var CapabilityRegistry = class CapabilityRegistry {
5901
5901
  * camera keeps every provider it has today, and a provider that registers
5902
5902
  * after the operator's last toggle needs no second write to be seen.
5903
5903
  */
5904
- deviceDisabledSources = /* @__PURE__ */ new Map();
5905
5904
  /** autoActivate flags per (capability, addonId) — from addon manifests */
5906
5905
  autoActivateFlags = /* @__PURE__ */ new Map();
5907
5906
  /**
@@ -6798,72 +6797,23 @@ var CapabilityRegistry = class CapabilityRegistry {
6798
6797
  return null;
6799
6798
  }
6800
6799
  /**
6801
- * Mirror ONE device's persisted source deactivations for `capability` into
6802
- * the projection (D556). The authority is the device-manager's
6803
- * `deviceBindings` store; this is the read side of that write and the only
6804
- * way the set changes.
6805
- *
6806
- * No check that `capability` is declared, and none that the addons are
6807
- * registered: a persisted operator decision is a fact about the fleet, not a
6808
- * reference to a live object, and replaying it at boot must not depend on
6809
- * which addon happened to register first. An empty list drops the entry
6810
- * (unset = every source).
6811
- */
6812
- setDeviceDisabledSources(deviceId, capability, addonIds) {
6813
- let deviceMap = this.deviceDisabledSources.get(deviceId);
6814
- if (addonIds.length === 0) {
6815
- if (!deviceMap) return;
6816
- deviceMap.delete(capability);
6817
- if (deviceMap.size === 0) this.deviceDisabledSources.delete(deviceId);
6818
- this.logger.debug("Device source deactivations cleared", {
6819
- tags: { deviceId: Number(deviceId) },
6820
- meta: { capability }
6821
- });
6822
- return;
6823
- }
6824
- if (!deviceMap) {
6825
- deviceMap = /* @__PURE__ */ new Map();
6826
- this.deviceDisabledSources.set(deviceId, deviceMap);
6827
- }
6828
- deviceMap.set(capability, new Set(addonIds));
6829
- this.logger.debug("Device source deactivations mirrored", {
6830
- tags: { deviceId: Number(deviceId) },
6831
- meta: {
6832
- capability,
6833
- disabledAddonIds: [...addonIds]
6834
- }
6835
- });
6836
- }
6837
- /**
6838
- * The addon ids the operator switched OFF as sources of this device for
6839
- * `capability`. Empty means every source — never "none".
6840
- */
6841
- getDeviceDisabledSources(deviceId, capability) {
6842
- const disabled = this.deviceDisabledSources.get(deviceId)?.get(capability);
6843
- return disabled === void 0 ? [] : [...disabled];
6844
- }
6845
- /** Is `addonId` switched off as a source of this device for `capability`? */
6846
- isDeviceSourceDisabled(deviceId, capability, addonId) {
6847
- return this.deviceDisabledSources.get(deviceId)?.get(capability)?.has(addonId) === true;
6848
- }
6849
- /**
6850
6800
  * Resolve collection providers for a specific device.
6851
- * Filters by activation (the manifest's autoActivate) and by the per-device
6852
- * source deactivations the operator persisted (D556).
6853
6801
  *
6854
- * `includeSwitchedOff` keeps the providers the operator switched off for this
6855
- * device. It exists for ONE caller — the source LISTING path — because a
6856
- * switched-off source must still produce a row to be switched back on from
6857
- * (D554 decision 4, D556 as amended), and only its own provider can name it.
6858
- * Every other path takes the default and sees the SERVING set: the sources
6859
- * that may actually contribute.
6860
- */
6861
- resolveCollectionForDevice(capability, deviceId, options) {
6802
+ * Filters by activation (the manifest's autoActivate) and by nothing else.
6803
+ * The per-device DENY set that used to filter here is gone with the switch
6804
+ * it projected (2026-09-20): *"tutti i providers funzionano sempre"*. WHICH
6805
+ * providers a device has is now answered by its BINDINGS
6806
+ * (`device-bindings-store.ts` step 0), which is a different question from
6807
+ * which of them are registered and running — this one.
6808
+ *
6809
+ * `deviceId` is kept in the signature and deliberately unused: the resolution
6810
+ * is per-device by CONTRACT, and a caller that stops passing one is a caller
6811
+ * that has stopped asking about a device.
6812
+ */
6813
+ resolveCollectionForDevice(capability, _deviceId) {
6862
6814
  const state = this.capabilities.get(capability);
6863
6815
  if (!state || state.definition.mode !== "collection") return [];
6864
- const disabledForDevice = this.deviceDisabledSources.get(deviceId)?.get(capability);
6865
- const keepSwitchedOff = options?.includeSwitchedOff === true;
6866
- return [...state.providers.entries()].filter(([addonId]) => !state.disabledProviders.has(addonId)).filter(([addonId]) => this.isActiveForSystem(capability, addonId)).filter(([addonId]) => keepSwitchedOff || disabledForDevice?.has(addonId) !== true).map(([, provider]) => asProvider(provider));
6816
+ return [...state.providers.entries()].filter(([addonId]) => !state.disabledProviders.has(addonId)).filter(([addonId]) => this.isActiveForSystem(capability, addonId)).map(([, provider]) => asProvider(provider));
6867
6817
  }
6868
6818
  /** Check if all dependencies for a capability are satisfied. */
6869
6819
  areDependenciesMet(capabilityName) {
@@ -95879,4 +95829,4 @@ var LifecycleJobEngine = class {
95879
95829
  }
95880
95830
  };
95881
95831
  //#endregion
95882
- export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_QUEUE_TOP_N, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, allFamiliesListenHost, applyLanHttp, attributeStall, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, classifyAddonDir, classifyCapRoute, clearPendingRestart, closeLanHttp, clusterEventTopic, clusterSecretMatches, collectCertIdentity, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonService, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCoreCapService, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createLocalTransport, createLoopDelayMeter, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, diffCapActionCensus, diffEventPlane, diffSocketPlane, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, emitHeapDiagnosticReport, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, fetchJson, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, heapSpaceField, hubMainRssBudget, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcParentLink, isAddonDeploySource, isArrayBufferCensusReport, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceDenied, isSourceNewer, isolatedBuiltinPhase, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextDisabledSources, nextRssBudgetState, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readMoleculerFanoutMode, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, registerEventBusService, registerLanHttpHandler, reissueTlsLeaf, resolveFilePath, resolveHwAccel, resolveNpmInvocation, restoreDeviceSourceActivations, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, setHubConnected, setNodeEventInterest, setWrapperActive, shouldReclaim, socketDirectionBytes, socketDirectionMessages, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
95832
+ export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ARRAY_BUFFER_CENSUS_THRESHOLD_MB, ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CAP_ACTION_OVERFLOW_LABEL, CAP_ACTION_UNLABELLED, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_CAP_ACTION_READING, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_CAP_ACTIONS_PER_PEER, MAX_LEAF_VALIDITY_DAYS, MESH_QUEUE_TOP_N, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, OUTBOUND_QUEUE_COOLDOWN_MS, OUTBOUND_QUEUE_SUSTAIN_MS, OUTBOUND_QUEUE_THRESHOLD_BYTES, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SOCKET_PLANE_TOP_N, SOCKET_QUEUE_TOP_N, STALL_REPORT_MS, STALL_TICK_MS, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, allFamiliesListenHost, applyLanHttp, attributeStall, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildNpmChildEnv, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionLabel, capActionName, capActionSuffix, capBareAction, capServiceName, classifyAddonDir, classifyCapRoute, clearPendingRestart, closeLanHttp, clusterEventTopic, clusterSecretMatches, collectCertIdentity, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonService, createArrayBufferCensusGate, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCapActionCensus, createCoreCapService, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createInspectorArrayBufferCensus, createKernelHwAccel, createLocalTransport, createLoopDelayMeter, createMeshQueueReader, createOutboundQueueGate, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, deviceCapResolverLink, diffCapActionCensus, diffEventPlane, diffSocketPlane, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, emitHeapDiagnosticReport, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, fetchJson, findInPath, formatArrayBufferCensus, formatEventPlane, formatHeapSpaces, formatLogLine, formatMeshQueue, formatOutboundQueueVerdict, formatSocketPlane, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, heapSpaceField, hubMainRssBudget, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcParentLink, isAddonDeploySource, isArrayBufferCensusReport, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceNewer, isolatedBuiltinPhase, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readMoleculerFanoutMode, readPendingRestart, readSocketQueues, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, registerEventBusService, registerLanHttpHandler, reissueTlsLeaf, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, setHubConnected, setNodeEventInterest, setWrapperActive, shouldReclaim, socketDirectionBytes, socketDirectionMessages, startEventLoopStallMonitor, startHeapWatch, startRunnerHeapWatch, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
@@ -30,17 +30,6 @@ export type CollectionConfigReader = (capability: string) => readonly string[] |
30
30
  * cannot present it. See docs/decisions/adr-0188-an-unregister-carries-proof-of-ownership.md.
31
31
  */
32
32
  export type ProviderOwnerToken = string;
33
- /**
34
- * How much of a device's COLLECTION a caller is asking for.
35
- *
36
- * The default — and every caller that intends to USE the providers — is the
37
- * serving set: the sources that may contribute. The source LISTING path asks
38
- * for the whole set instead, because a source the operator switched off must
39
- * still produce a row to be switched back on from (D556 as amended).
40
- */
41
- export interface DeviceCollectionResolution {
42
- readonly includeSwitchedOff: boolean;
43
- }
44
33
  export declare class CapabilityRegistry {
45
34
  private readonly capabilities;
46
35
  private readonly logger;
@@ -86,7 +75,6 @@ export declare class CapabilityRegistry {
86
75
  * camera keeps every provider it has today, and a provider that registers
87
76
  * after the operator's last toggle needs no second write to be seen.
88
77
  */
89
- private readonly deviceDisabledSources;
90
78
  /** autoActivate flags per (capability, addonId) — from addon manifests */
91
79
  private readonly autoActivateFlags;
92
80
  /**
@@ -491,39 +479,21 @@ export declare class CapabilityRegistry {
491
479
  * singleton override — the in-memory provider pin, not a persisted flag.
492
480
  */
493
481
  resolveForDevice<T = unknown>(capability: string, deviceId: string): T | null;
494
- /**
495
- * Mirror ONE device's persisted source deactivations for `capability` into
496
- * the projection (D556). The authority is the device-manager's
497
- * `deviceBindings` store; this is the read side of that write and the only
498
- * way the set changes.
499
- *
500
- * No check that `capability` is declared, and none that the addons are
501
- * registered: a persisted operator decision is a fact about the fleet, not a
502
- * reference to a live object, and replaying it at boot must not depend on
503
- * which addon happened to register first. An empty list drops the entry
504
- * (unset = every source).
505
- */
506
- setDeviceDisabledSources(deviceId: string, capability: string, addonIds: readonly string[]): void;
507
- /**
508
- * The addon ids the operator switched OFF as sources of this device for
509
- * `capability`. Empty means every source — never "none".
510
- */
511
- getDeviceDisabledSources(deviceId: string, capability: string): readonly string[];
512
- /** Is `addonId` switched off as a source of this device for `capability`? */
513
- isDeviceSourceDisabled(deviceId: string, capability: string, addonId: string): boolean;
514
482
  /**
515
483
  * Resolve collection providers for a specific device.
516
- * Filters by activation (the manifest's autoActivate) and by the per-device
517
- * source deactivations the operator persisted (D556).
518
484
  *
519
- * `includeSwitchedOff` keeps the providers the operator switched off for this
520
- * device. It exists for ONE caller — the source LISTING path — because a
521
- * switched-off source must still produce a row to be switched back on from
522
- * (D554 decision 4, D556 as amended), and only its own provider can name it.
523
- * Every other path takes the default and sees the SERVING set: the sources
524
- * that may actually contribute.
525
- */
526
- resolveCollectionForDevice<T = unknown>(capability: string, deviceId: string, options?: DeviceCollectionResolution): readonly T[];
485
+ * Filters by activation (the manifest's autoActivate) and by nothing else.
486
+ * The per-device DENY set that used to filter here is gone with the switch
487
+ * it projected (2026-09-20): *"tutti i providers funzionano sempre"*. WHICH
488
+ * providers a device has is now answered by its BINDINGS
489
+ * (`device-bindings-store.ts` step 0), which is a different question from
490
+ * which of them are registered and running — this one.
491
+ *
492
+ * `deviceId` is kept in the signature and deliberately unused: the resolution
493
+ * is per-device by CONTRACT, and a caller that stops passing one is a caller
494
+ * that has stopped asking about a device.
495
+ */
496
+ resolveCollectionForDevice<T = unknown>(capability: string, _deviceId: string): readonly T[];
527
497
  /** Check if all dependencies for a capability are satisfied. */
528
498
  areDependenciesMet(capabilityName: string): boolean;
529
499
  /** Get topologically sorted boot order based on dependsOn. */
@@ -13,7 +13,6 @@ export { RESTART_MARKER_FILE, clearPendingRestart, getRestartMarkerPath, readPen
13
13
  export type { PendingRestartMarker, RestartKind, ScheduleSelfRestartOptions, } from './restart-coordinator.js';
14
14
  export { CapabilityHandle, CapabilityUnavailableError } from './capability-handle.js';
15
15
  export { CapabilityRegistry } from './capability-registry.js';
16
- export type { DeviceCollectionResolution } from './capability-registry.js';
17
16
  export { buildCapRouters, builderMountedCapNames } from './cap-router-builder.js';
18
17
  export type { CapRouterPrimitives, CapRouterServices, CapProviderGetter, RemoteProxyFactory, ProcedureBuilder, ProcedureResolverArgs, } from './cap-router-builder.js';
19
18
  export { describeProviderKindDrift } from './provider-kind-drift.js';
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-D_OlSf31.js");
1
+ const require_dist = require("./dist-Bu8HN-KS.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- import { vn as asJsonObject } from "./dist-AHdiIdJH.mjs";
1
+ import { vn as asJsonObject } from "./dist-DOF9wnat.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.276",
3
+ "version": "1.2.277",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",