@camstack/system 1.2.291 → 1.2.292

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 (62) hide show
  1. package/dist/addon-runner.js +20 -62
  2. package/dist/addon-runner.mjs +4 -46
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/console-logging/index.js +1 -1
  16. package/dist/builtins/console-logging/index.mjs +1 -1
  17. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  18. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  19. package/dist/builtins/device-manager/device-linked-devices.d.ts +2 -37
  20. package/dist/builtins/device-manager/device-manager.addon.js +4 -73
  21. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -71
  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/{manifest-system-deps-ghRqcy_-.mjs → child-cap-dispatch-CWkcQIRe.mjs} +51 -1
  53. package/dist/{manifest-system-deps-DTgkfBJy.js → child-cap-dispatch-CzNzGnGm.js} +62 -0
  54. package/dist/{dist-XnunBp0n.js → dist-D3zw1yHp.js} +101 -6
  55. package/dist/{dist-DiMNxNDh.mjs → dist-DU72-y3J.mjs} +90 -1
  56. package/dist/index.d.ts +4 -0
  57. package/dist/index.js +167 -166
  58. package/dist/index.mjs +3 -3
  59. package/dist/kernel/moleculer/child-cap-dispatch.d.ts +19 -0
  60. package/dist/{retired-settings-keys-DnCcgrCG.mjs → retired-settings-keys-DLOBYMC4.mjs} +1 -1
  61. package/dist/{retired-settings-keys-DQn9s_AI.js → retired-settings-keys-t6UWp6mL.js} +1 -1
  62. package/package.json +1 -1
@@ -41083,6 +41083,95 @@ function resolveContainerPrimaryChild(children, overrideEntityId, containerName)
41083
41083
  const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && sameName(c.name, containerName) ? 0 : 1;
41084
41084
  return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
41085
41085
  }
41086
+ /**
41087
+ * Which devices a camera's LINKED set resolves to — the pure rules, with no
41088
+ * store and no provider context.
41089
+ *
41090
+ * They live in `@camstack/types` rather than in the device-manager builtin
41091
+ * because two surfaces need the SAME answer and a second copy would be a
41092
+ * second definition of what a room contains: the hub's boot backfill, and the
41093
+ * admin UI's per-room rebuild. Moving them here also keeps that button a
41094
+ * framework-free change — a new cap method would only reach a node through a
41095
+ * published `@camstack/server` and a restart (D16), which is not what a
41096
+ * convenience button is worth.
41097
+ */
41098
+ /**
41099
+ * Resolve one candidate id to the ids it should actually contribute to a
41100
+ * linked set: itself, unless it is a CONTAINER, in which case its own
41101
+ * children (recursively expanded the same way — a container-of-containers
41102
+ * is vanishingly unlikely per `DeviceType.Container`'s contract, but this
41103
+ * costs nothing to handle). `visited` guards a pathological parent-cycle in
41104
+ * persisted data from recursing forever; a candidate already on the current
41105
+ * expansion path is dropped rather than re-expanded.
41106
+ *
41107
+ * This is the STRUCTURAL, location-independent way a container's child
41108
+ * becomes reachable: the device-tree "children of the camera" rule and a
41109
+ * persisted manual pick are parentDeviceId chains, never location-based —
41110
+ * a container named there is excluded by expanding into whatever it
41111
+ * actually contains, regardless of what its (or its children's) `location`
41112
+ * column holds.
41113
+ */
41114
+ function expandContainer(id, byId, byParent, visited, out) {
41115
+ if (visited.has(id)) return;
41116
+ const candidate = byId.get(id);
41117
+ if (!candidate) return;
41118
+ if (candidate.type !== DeviceType.Container) {
41119
+ out.add(id);
41120
+ return;
41121
+ }
41122
+ const nextVisited = new Set(visited);
41123
+ nextVisited.add(id);
41124
+ const primary = resolveContainerPrimaryChild((byParent.get(id) ?? []).map((c) => ({
41125
+ id: c.id,
41126
+ stableId: c.stableId,
41127
+ type: c.type,
41128
+ ...c.role !== void 0 && c.role !== null ? { role: c.role } : {},
41129
+ ...c.name !== void 0 ? { name: c.name } : {}
41130
+ })), byId.get(id)?.primaryChildEntityId, byId.get(id)?.name);
41131
+ if (primary !== null) expandContainer(primary.id, byId, byParent, nextVisited, out);
41132
+ }
41133
+ /**
41134
+ * What the retired `auto` mode (pre-D356) added beyond the device-tree
41135
+ * children: every non-container candidate sharing the camera's location, a
41136
+ * container child standing in for its container's PRIMARY child.
41137
+ *
41138
+ * Two callers, both WRITERS, never the read path: the one-shot boot backfill
41139
+ * that materialises it into the manual list
41140
+ * (`linked-devices-manual-backfill.ts`), and the admin UI's per-room rebuild.
41141
+ * Both ask "what does this room contain", and a second copy of the answer is
41142
+ * how two surfaces start disagreeing about a room.
41143
+ *
41144
+ * A camera with NO location answers `[]`. A caller that would WRITE that must
41145
+ * refuse instead: emptying a list because nobody set the room is the silent
41146
+ * drop D391 names.
41147
+ */
41148
+ function legacyAutoLinkIds(params) {
41149
+ const { selfId, selfLocation, candidates } = params;
41150
+ if (selfLocation === null || selfLocation.length === 0) return [];
41151
+ const byId = new Map(candidates.map((c) => [c.id, c]));
41152
+ const byParent = /* @__PURE__ */ new Map();
41153
+ for (const c of candidates) {
41154
+ if (c.parentDeviceId === null) continue;
41155
+ const siblings = byParent.get(c.parentDeviceId);
41156
+ if (siblings) siblings.push(c);
41157
+ else byParent.set(c.parentDeviceId, [c]);
41158
+ }
41159
+ const ids = /* @__PURE__ */ new Set();
41160
+ const expand = (id) => expandContainer(id, byId, byParent, /* @__PURE__ */ new Set(), ids);
41161
+ for (const c of candidates) {
41162
+ if (c.type === DeviceType.Container) continue;
41163
+ if (c.location !== selfLocation) continue;
41164
+ if (c.parentDeviceId === selfId) continue;
41165
+ const parent = c.parentDeviceId !== null ? byId.get(c.parentDeviceId) : void 0;
41166
+ if (parent !== void 0 && parent.type === DeviceType.Container) {
41167
+ expand(parent.id);
41168
+ continue;
41169
+ }
41170
+ ids.add(c.id);
41171
+ }
41172
+ ids.delete(selfId);
41173
+ return [...ids];
41174
+ }
41086
41175
  /** Marker written to a declared integration's `info`. */
41087
41176
  var DECLARED_INTEGRATION_FIXED_KEY = "fixed";
41088
41177
  /**
@@ -53488,6 +53577,12 @@ Object.defineProperty(exports, "expandCapMethods", {
53488
53577
  return expandCapMethods;
53489
53578
  }
53490
53579
  });
53580
+ Object.defineProperty(exports, "expandContainer", {
53581
+ enumerable: true,
53582
+ get: function() {
53583
+ return expandContainer;
53584
+ }
53585
+ });
53491
53586
  Object.defineProperty(exports, "extractNestedAddonId", {
53492
53587
  enumerable: true,
53493
53588
  get: function() {
@@ -53584,6 +53679,12 @@ Object.defineProperty(exports, "kebabToCamel", {
53584
53679
  return kebabToCamel;
53585
53680
  }
53586
53681
  });
53682
+ Object.defineProperty(exports, "legacyAutoLinkIds", {
53683
+ enumerable: true,
53684
+ get: function() {
53685
+ return legacyAutoLinkIds;
53686
+ }
53687
+ });
53587
53688
  Object.defineProperty(exports, "legacyModeOf", {
53588
53689
  enumerable: true,
53589
53690
  get: function() {
@@ -53740,12 +53841,6 @@ Object.defineProperty(exports, "resolveCapMount", {
53740
53841
  return resolveCapMount;
53741
53842
  }
53742
53843
  });
53743
- Object.defineProperty(exports, "resolveContainerPrimaryChild", {
53744
- enumerable: true,
53745
- get: function() {
53746
- return resolveContainerPrimaryChild;
53747
- }
53748
- });
53749
53844
  Object.defineProperty(exports, "resolveLocationMode", {
53750
53845
  enumerable: true,
53751
53846
  get: function() {
@@ -41083,6 +41083,95 @@ function resolveContainerPrimaryChild(children, overrideEntityId, containerName)
41083
41083
  const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && sameName(c.name, containerName) ? 0 : 1;
41084
41084
  return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
41085
41085
  }
41086
+ /**
41087
+ * Which devices a camera's LINKED set resolves to — the pure rules, with no
41088
+ * store and no provider context.
41089
+ *
41090
+ * They live in `@camstack/types` rather than in the device-manager builtin
41091
+ * because two surfaces need the SAME answer and a second copy would be a
41092
+ * second definition of what a room contains: the hub's boot backfill, and the
41093
+ * admin UI's per-room rebuild. Moving them here also keeps that button a
41094
+ * framework-free change — a new cap method would only reach a node through a
41095
+ * published `@camstack/server` and a restart (D16), which is not what a
41096
+ * convenience button is worth.
41097
+ */
41098
+ /**
41099
+ * Resolve one candidate id to the ids it should actually contribute to a
41100
+ * linked set: itself, unless it is a CONTAINER, in which case its own
41101
+ * children (recursively expanded the same way — a container-of-containers
41102
+ * is vanishingly unlikely per `DeviceType.Container`'s contract, but this
41103
+ * costs nothing to handle). `visited` guards a pathological parent-cycle in
41104
+ * persisted data from recursing forever; a candidate already on the current
41105
+ * expansion path is dropped rather than re-expanded.
41106
+ *
41107
+ * This is the STRUCTURAL, location-independent way a container's child
41108
+ * becomes reachable: the device-tree "children of the camera" rule and a
41109
+ * persisted manual pick are parentDeviceId chains, never location-based —
41110
+ * a container named there is excluded by expanding into whatever it
41111
+ * actually contains, regardless of what its (or its children's) `location`
41112
+ * column holds.
41113
+ */
41114
+ function expandContainer(id, byId, byParent, visited, out) {
41115
+ if (visited.has(id)) return;
41116
+ const candidate = byId.get(id);
41117
+ if (!candidate) return;
41118
+ if (candidate.type !== DeviceType.Container) {
41119
+ out.add(id);
41120
+ return;
41121
+ }
41122
+ const nextVisited = new Set(visited);
41123
+ nextVisited.add(id);
41124
+ const primary = resolveContainerPrimaryChild((byParent.get(id) ?? []).map((c) => ({
41125
+ id: c.id,
41126
+ stableId: c.stableId,
41127
+ type: c.type,
41128
+ ...c.role !== void 0 && c.role !== null ? { role: c.role } : {},
41129
+ ...c.name !== void 0 ? { name: c.name } : {}
41130
+ })), byId.get(id)?.primaryChildEntityId, byId.get(id)?.name);
41131
+ if (primary !== null) expandContainer(primary.id, byId, byParent, nextVisited, out);
41132
+ }
41133
+ /**
41134
+ * What the retired `auto` mode (pre-D356) added beyond the device-tree
41135
+ * children: every non-container candidate sharing the camera's location, a
41136
+ * container child standing in for its container's PRIMARY child.
41137
+ *
41138
+ * Two callers, both WRITERS, never the read path: the one-shot boot backfill
41139
+ * that materialises it into the manual list
41140
+ * (`linked-devices-manual-backfill.ts`), and the admin UI's per-room rebuild.
41141
+ * Both ask "what does this room contain", and a second copy of the answer is
41142
+ * how two surfaces start disagreeing about a room.
41143
+ *
41144
+ * A camera with NO location answers `[]`. A caller that would WRITE that must
41145
+ * refuse instead: emptying a list because nobody set the room is the silent
41146
+ * drop D391 names.
41147
+ */
41148
+ function legacyAutoLinkIds(params) {
41149
+ const { selfId, selfLocation, candidates } = params;
41150
+ if (selfLocation === null || selfLocation.length === 0) return [];
41151
+ const byId = new Map(candidates.map((c) => [c.id, c]));
41152
+ const byParent = /* @__PURE__ */ new Map();
41153
+ for (const c of candidates) {
41154
+ if (c.parentDeviceId === null) continue;
41155
+ const siblings = byParent.get(c.parentDeviceId);
41156
+ if (siblings) siblings.push(c);
41157
+ else byParent.set(c.parentDeviceId, [c]);
41158
+ }
41159
+ const ids = /* @__PURE__ */ new Set();
41160
+ const expand = (id) => expandContainer(id, byId, byParent, /* @__PURE__ */ new Set(), ids);
41161
+ for (const c of candidates) {
41162
+ if (c.type === DeviceType.Container) continue;
41163
+ if (c.location !== selfLocation) continue;
41164
+ if (c.parentDeviceId === selfId) continue;
41165
+ const parent = c.parentDeviceId !== null ? byId.get(c.parentDeviceId) : void 0;
41166
+ if (parent !== void 0 && parent.type === DeviceType.Container) {
41167
+ expand(parent.id);
41168
+ continue;
41169
+ }
41170
+ ids.add(c.id);
41171
+ }
41172
+ ids.delete(selfId);
41173
+ return [...ids];
41174
+ }
41086
41175
  /** Marker written to a declared integration's `info`. */
41087
41176
  var DECLARED_INTEGRATION_FIXED_KEY = "fixed";
41088
41177
  /**
@@ -52990,4 +53079,4 @@ function enumerateInferenceDevices(hw) {
52990
53079
  return out;
52991
53080
  }
52992
53081
  //#endregion
52993
- export { decodeVectorBase64 as $, snapshotCapability as $t, STREAM_PROFILE_META as A, isDeviceConfigCap as An, mayReadLocation as At, alertsCapability as B, procedureAuthKey as Bt, RECORDING_SOURCE_CAMSTACK_ADDON as C, asNumber as Cn, legacyModeOf as Ct, SOURCE_CAPS as D, emitReadiness as Dn, logDestinationCapability as Dt, RecordingStatusSchema as E, emitDownForOwnedCaps as En, locationIconKey as Et, StorageMigrationJobSchema as F, readinessKey as Fn, normalizeUnit as Ft, buildStreamParamsConfigSchema as G, resolveLocationMode as Gt, backupCapability as H, reducePoints as Ht, UserRecordSchema as I, resolveCapMount as In, objectInputDeclaresAddonId as It, coreBlockAddonId as J, scopesAllowAddon as Jt, cameraGridLayoutCapability as K, resolveMethodAuth as Kt, addonPagesCapability as L, scopeKey as Ln, objectInputDeclaresRequiredDeviceId as Lt, StorageCleanupJobSchema as M, nodePin as Mn, metricsProviderCapability as Mt, StorageLocationModeSchema as N, parseJsonObject as Nn, modeMayWrite as Nt, SOURCE_DEVICE_TYPES as O, expandCapMethods as On, logLevelAtMost as Ot, StorageLocationTypeSchema as P, parseJsonUnknown as Pn, motionCapability as Pt, declarationOwnerNodeId as Q, siteZoneKey as Qt, addonSettingsCapability as R, sleep as Rn, parseStreamParamsFormPatch as Rt, MOTION_CLOSE_AFTER_MS as S, asJsonObject as Sn, kebabToCamel as St, RUNTIME_DEFAULTS as T, createEvent as Tn, localNetworkCapability as Tt, bareAddonId as U, resolveBucketMs as Ut, authProviderCapability as V, ptzAutotrackCapability as Vt, batteryCapability as W, resolveContainerPrimaryChild as Wt, coreBlocksCapability as X, scoreRuntimes as Xt, coreBlockIdFromAddonId as Y, scopesAllowDeviceCap as Yt, dataStoreProviderCapability as Z, settingsStoreCapability as Zt, LOG_LEVEL_RANK as _, DeviceRole as _n, isLocationEnabled as _t, BatteryStatusSchema as a, streamQualityLabel as an, enumerateInferenceDevices as at, METHOD_ACCESS_MAP as b, ReadinessTimeoutError as bn, isSourceCap as bt, CORE_BLOCKS_ADDON_ID as c, vectorStoreCapability as cn, evaluateSensorEdge as ct, DAY_NAMES as d, buildFfmpegArgs as dn, filesystemBrowseCapability as dt, storageCapability as en, deriveBatteryPresence as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, BaseAddon as fn, foldSnapshotByFunction as ft, FIRST_LEVEL_MACRO_CLASSES as g, DeviceFeature as gn, isCollectionArrayMethod as gt, DeviceStatusSchema as h, DEVICE_STATUS_METHOD as hn, isArrayOutputSchema as ht, BaseDevice as i, streamCatalogCapability as in, doorbellCapability as it, ScopedTokenSchema as j, isEvent as jn, mayWriteToLocation as jt, STORAGE_ACCESS_FALLBACK as k, hydrateSchema as kn, looseSchema as kt, CORE_BLOCK_ADDON_PREFIX as l, withLocationMode as ln, evictionPolicyOfLocation as lt, DeclaredDevices as m, DEVICE_SETTINGS_CONTRIBUTION_METHODS as mn, gbToBytes as mt, AlertSchema as n, storageOccupancyCapability as nn, deviceStateCapability as nt, CAMERA_SWITCH_ORDER as o, userManagementCapability as on, enumerateItemArrayFields as ot, DERIVED_CAMERA_SILENCED_CAP_NAMES as p, DATAPLANE_SECRET_HEADER as pn, formatMinutes as pt, collectSecretConfigKeys as q, runtimeStatePolicyFor as qt, ApiKeyRecordSchema as r, storageProviderCapability as rn, deviceStatusCapability as rt, CAP_NAMES_WITH_STATUS as s, vectorDimFromBase64 as sn, enumerateSchemaFields as st, ALL_CAPABILITY_DEFINITIONS as t, storageMigrationCapability as tn, deviceManagerCapability as tt, CoreBlockSchema as u, errMsg as un, extractNestedAddonId as ut, LegacyStorageLocationDefaultSchema as v, DeviceType as vn, isObjectInput as vt, REDACTED_SECRET as w, asString as wn, lifecycleJobSchema as wt, MINUTES_PER_DAY as x, WELL_KNOWN_TAB_MAP as xn, isVoidInput as xt, LocationIconIdSchema as y, ReadinessRegistry as yn, isSameAddonId as yt, addonWidgetsCapability as z, EventCategory as zn, platformProbeCapability as zt };
53082
+ export { decodeVectorBase64 as $, siteZoneKey as $t, STREAM_PROFILE_META as A, hydrateSchema as An, logLevelAtMost as At, alertsCapability as B, EventCategory as Bn, parseStreamParamsFormPatch as Bt, RECORDING_SOURCE_CAMSTACK_ADDON as C, asJsonObject as Cn, kebabToCamel as Ct, SOURCE_CAPS as D, emitDownForOwnedCaps as Dn, localNetworkCapability as Dt, RecordingStatusSchema as E, createEvent as En, lifecycleJobSchema as Et, StorageMigrationJobSchema as F, parseJsonUnknown as Fn, modeMayWrite as Ft, buildStreamParamsConfigSchema as G, resolveBucketMs as Gt, backupCapability as H, procedureAuthKey as Ht, UserRecordSchema as I, readinessKey as In, motionCapability as It, coreBlockAddonId as J, runtimeStatePolicyFor as Jt, cameraGridLayoutCapability as K, resolveLocationMode as Kt, addonPagesCapability as L, resolveCapMount as Ln, normalizeUnit as Lt, StorageCleanupJobSchema as M, isEvent as Mn, mayReadLocation as Mt, StorageLocationModeSchema as N, nodePin as Nn, mayWriteToLocation as Nt, SOURCE_DEVICE_TYPES as O, emitReadiness as On, locationIconKey as Ot, StorageLocationTypeSchema as P, parseJsonObject as Pn, metricsProviderCapability as Pt, declarationOwnerNodeId as Q, settingsStoreCapability as Qt, addonSettingsCapability as R, scopeKey as Rn, objectInputDeclaresAddonId as Rt, MOTION_CLOSE_AFTER_MS as S, WELL_KNOWN_TAB_MAP as Sn, isVoidInput as St, RUNTIME_DEFAULTS as T, asString as Tn, legacyModeOf as Tt, bareAddonId as U, ptzAutotrackCapability as Ut, authProviderCapability as V, platformProbeCapability as Vt, batteryCapability as W, reducePoints as Wt, coreBlocksCapability as X, scopesAllowDeviceCap as Xt, coreBlockIdFromAddonId as Y, scopesAllowAddon as Yt, dataStoreProviderCapability as Z, scoreRuntimes as Zt, LOG_LEVEL_RANK as _, DeviceFeature as _n, isCollectionArrayMethod as _t, BatteryStatusSchema as a, streamCatalogCapability as an, enumerateInferenceDevices as at, METHOD_ACCESS_MAP as b, ReadinessRegistry as bn, isSameAddonId as bt, CORE_BLOCKS_ADDON_ID as c, vectorDimFromBase64 as cn, evaluateSensorEdge as ct, DAY_NAMES as d, errMsg as dn, extractNestedAddonId as dt, snapshotCapability as en, deriveBatteryPresence as et, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as f, buildFfmpegArgs as fn, filesystemBrowseCapability as ft, FIRST_LEVEL_MACRO_CLASSES as g, DEVICE_STATUS_METHOD as gn, isArrayOutputSchema as gt, DeviceStatusSchema as h, DEVICE_SETTINGS_CONTRIBUTION_METHODS as hn, gbToBytes as ht, BaseDevice as i, storageProviderCapability as in, doorbellCapability as it, ScopedTokenSchema as j, isDeviceConfigCap as jn, looseSchema as jt, STORAGE_ACCESS_FALLBACK as k, expandCapMethods as kn, logDestinationCapability as kt, CORE_BLOCK_ADDON_PREFIX as l, vectorStoreCapability as ln, evictionPolicyOfLocation as lt, DeclaredDevices as m, DATAPLANE_SECRET_HEADER as mn, formatMinutes as mt, AlertSchema as n, storageMigrationCapability as nn, deviceStateCapability as nt, CAMERA_SWITCH_ORDER as o, streamQualityLabel as on, enumerateItemArrayFields as ot, DERIVED_CAMERA_SILENCED_CAP_NAMES as p, BaseAddon as pn, foldSnapshotByFunction as pt, collectSecretConfigKeys as q, resolveMethodAuth as qt, ApiKeyRecordSchema as r, storageOccupancyCapability as rn, deviceStatusCapability as rt, CAP_NAMES_WITH_STATUS as s, userManagementCapability as sn, enumerateSchemaFields as st, ALL_CAPABILITY_DEFINITIONS as t, storageCapability as tn, deviceManagerCapability as tt, CoreBlockSchema as u, withLocationMode as un, expandContainer as ut, LegacyStorageLocationDefaultSchema as v, DeviceRole as vn, isLocationEnabled as vt, REDACTED_SECRET as w, asNumber as wn, legacyAutoLinkIds as wt, MINUTES_PER_DAY as x, ReadinessTimeoutError as xn, isSourceCap as xt, LocationIconIdSchema as y, DeviceType as yn, isObjectInput as yt, addonWidgetsCapability as z, sleep as zn, objectInputDeclaresRequiredDeviceId as zt };
package/dist/index.d.ts CHANGED
@@ -112,3 +112,7 @@ export { type EnsureAddonNativePrebuildsOptions, ensureAddonNativePrebuilds, typ
112
112
  export { type EnsureNativePrebuildsOptions, ensureNativePrebuilds, hasDotNode, NATIVE_SCAN_DEPTH, type PrebuildFetchFn, type PrebuildTarget, TRADITIONAL_NATIVE_PACKAGES, } from './kernel/deps/ensure-native-prebuilds.js';
113
113
  export { type NpmInvocation, type RunNpmOptions, buildNpmChildEnv, resolveNpmInvocation, runNpm, } from './kernel/deps/npm-command.js';
114
114
  export * from './kernel/index.js';
115
+ /** The token a CHILD uses to say "this method is declared optional and this
116
+ * provider does not serve it", which the hub turns into `NOT_IMPLEMENTED`.
117
+ * Crosses a UDS boundary as a plain message, so it is a prefix, not a class. */
118
+ export { CAP_METHOD_NOT_IMPLEMENTED } from './kernel/moleculer/child-cap-dispatch.js';