@camstack/system 1.2.93 → 1.2.95

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 (53) 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/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  9. package/dist/builtins/console-logging/index.js +1 -1
  10. package/dist/builtins/console-logging/index.mjs +1 -1
  11. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  12. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  13. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  20. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  21. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  22. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  23. package/dist/builtins/local-network/local-network.addon.js +1 -1
  24. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  25. package/dist/builtins/loki-logging/index.js +1 -1
  26. package/dist/builtins/loki-logging/index.mjs +1 -1
  27. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  28. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  29. package/dist/builtins/platform-probe/index.js +1 -1
  30. package/dist/builtins/platform-probe/index.mjs +1 -1
  31. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  32. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  33. package/dist/builtins/snapshot/index.js +218 -102
  34. package/dist/builtins/snapshot/index.mjs +218 -102
  35. package/dist/builtins/snapshot/snapshot-courtesy.d.ts +13 -1
  36. package/dist/builtins/snapshot/snapshot-media-handler.d.ts +7 -1
  37. package/dist/builtins/snapshot/snapshot-resize.d.ts +4 -4
  38. package/dist/builtins/snapshot/snapshot.addon.d.ts +37 -38
  39. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  40. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  42. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  45. package/dist/builtins/system-config/system-config.addon.js +1 -1
  46. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  47. package/dist/builtins/winston-logging/index.js +1 -1
  48. package/dist/builtins/winston-logging/index.mjs +1 -1
  49. package/dist/{dist-BMus2E5R.js → dist-BQoU9nGS.js} +16 -1
  50. package/dist/{dist-F1XDQDE1.mjs → dist-hKJyHgFg.mjs} +11 -2
  51. package/dist/index.js +1 -1
  52. package/dist/index.mjs +1 -1
  53. package/package.json +1 -1
@@ -60,8 +60,8 @@ export declare const RESIZE_TIMEOUT_MS = 10000;
60
60
  */
61
61
  export declare function resizeJpeg(bytes: Buffer, width: number, timeoutMs?: number): Promise<Buffer>;
62
62
  /**
63
- * Resized frames, keyed by (device, stream, width) AND validated against the
64
- * source frame's timestamp.
63
+ * Resized frames, keyed by (device, stream, width, state treatment) AND
64
+ * validated against the source frame's timestamp.
65
65
  *
66
66
  * The timestamp is the whole correctness argument: a variant outlives nothing.
67
67
  * When the underlying frame is recaptured its `capturedAt` moves, every variant
@@ -75,8 +75,8 @@ export declare class SnapshotVariantCache {
75
75
  private static key;
76
76
  /** The variant for this exact frame, or undefined when it is missing or was
77
77
  * derived from an older capture. */
78
- get(deviceId: number, streamId: string | undefined, width: number, sourceTs: number): Buffer | undefined;
79
- set(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, bytes: Buffer): void;
78
+ get(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, variantKey?: string): Buffer | undefined;
79
+ set(deviceId: number, streamId: string | undefined, width: number, sourceTs: number, bytes: Buffer, variantKey?: string): void;
80
80
  deleteDevice(deviceId: number): void;
81
81
  clear(): void;
82
82
  }
@@ -40,9 +40,14 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
40
40
  * A courtesy frame is a pure function of those three, so it is rendered once
41
41
  * and reused for as long as the process lives — a disabled camera must not
42
42
  * cost an ffmpeg run per poll. Unbounded on purpose: the key space is
43
- * (3 reasons × this node's own cameras), not user input.
43
+ * (state reasons × this node's own cameras), not user input.
44
44
  */
45
45
  private readonly courtesyFrames;
46
+ /** State overlays over real cached frames, grouped by device so invalidation
47
+ * can discard every generation in O(1). */
48
+ private readonly stateFrames;
49
+ /** Devices inside the explicit battery wake-in-progress window. */
50
+ private readonly wakingDevices;
46
51
  /**
47
52
  * De-dupes concurrent captures per `${deviceId}:${streamId}` and holds a
48
53
  * settled SUCCESS for COALESCE_MS so a grid-mount burst (and a row of refresh
@@ -201,10 +206,9 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
201
206
  * the Viewer's 15-second currency contract and the link-mint wait bound.
202
207
  */
203
208
  private awaitFreshEnough;
204
- /** True only for a BATTERY device that is currently asleep. Kept as one
205
- * question so the link path cannot accidentally treat "battery" as "asleep"
206
- * and stop refreshing a camera that is awake and streaming. */
207
- private isSleepingBatteryDevice;
209
+ /** Resolve the state advertised by a minted link before deciding whether a
210
+ * background capture is allowed. */
211
+ private snapshotStateForLink;
208
212
  /**
209
213
  * Resolve a device (+ optional stream, + force) to renderable JPEG bytes for
210
214
  * the HTTP endpoint. Runs the same coalesced capture ladder as the tRPC
@@ -225,8 +229,8 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
225
229
  */
226
230
  private peekFreshFrame;
227
231
  /**
228
- * The frame at a card-sized width, derived once per (device, stream, width)
229
- * per capture.
232
+ * The frame at a card-sized width, derived once per
233
+ * (device, stream, width, state treatment) per capture.
230
234
  *
231
235
  * A failed resize falls back to the FULL frame — a visible card beats a
232
236
  * broken one — but never silently: the card would otherwise keep costing a
@@ -355,36 +359,26 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
355
359
  */
356
360
  private deviceStillExists;
357
361
  /**
358
- * Sleep state from the device-state MIRROR, not from a cap round-trip.
362
+ * Resolve the state that must be visible on a snapshot.
359
363
  *
360
- * `fetchDevice(id).state.battery` is a `SliceHandle` over the hub's
361
- * runtime-state mirror: a local read, no RPC, no failure branch to get
362
- * wrong. It is the same mirror that feeds the battery badge elsewhere
363
- * in the UI, so if the operator can see "sleeping" on screen, this
364
- * sees it too. (Both spec harnesses already model exactly this wiring
365
- * — like the orphaned doc comment above, it outlived the gate it was
366
- * built for.)
364
+ * Uses the same two canonical sources as wake-on-play:
365
+ * 1. `deviceManager.getDevice` for the registry's BatteryOperated feature;
366
+ * 2. `deviceState.getCapSlice('battery')` for the durable runtime mirror.
367
367
  *
368
- * `undefined` slice the device has no battery state we know of →
369
- * treated as awake. The caller has already established the device is
370
- * battery-operated from its feature flags, so this only decides
371
- * WHETHER IT IS ASLEEP, never whether it has a battery.
368
+ * A valid battery slice is itself positive evidence that the device is
369
+ * battery-operated. That closes the field failure where "Baby monitor" had a
370
+ * sleeping battery slice but a stale persisted feature projection, so the
371
+ * snapshot wrapper classified it as mains and a Viewer thumbnail logged in
372
+ * to the sleeping camera. The reverse is deliberately not guessed: no
373
+ * feature + no valid slice remains a mains/unknown camera and follows the
374
+ * ordinary capture path.
372
375
  *
373
- * Only consulted on the path that would otherwise CAPTURE — a fresh
374
- * cache hit returns before we get here.
376
+ * Once battery-operated is established, a missing slice fails safe toward
377
+ * `sleeping` through the shared `deriveBatteryPresence` function. This avoids
378
+ * a background wake without inventing an `unreachable` fault.
375
379
  */
376
- private isDeviceSleeping;
377
- /**
378
- * The device's three-valued battery presence (D173) — `awake`, `sleeping`,
379
- * or `unreachable`. Same mirror read as the sleep gate, one derivation
380
- * (`deriveBatteryPresence`) so this layer cannot disagree with the badge or
381
- * the stream error about what a camera is doing.
382
- *
383
- * A failed read answers `awake`: unknown must never become a fault badge,
384
- * and "assume awake" is the pre-existing, deliberately conservative failure
385
- * direction of the gate this replaces.
386
- */
387
- private readBatteryPresence;
380
+ private resolveSnapshotState;
381
+ private isDeviceWaking;
388
382
  /**
389
383
  * True when at least one of the device's brokers is actively
390
384
  * streaming (status === 'streaming'). Used by the battery-cam guard
@@ -432,13 +426,18 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
432
426
  private courtesyFrame;
433
427
  /** A courtesy frame shaped as the cap's response, or null when unrenderable. */
434
428
  private courtesyImage;
429
+ /**
430
+ * Render a state-labelled answer. A cached real frame is the background, not
431
+ * the answer by itself; if it cannot be decoded, fall back to the generated
432
+ * courtesy background rather than leaking an unlabelled stale frame.
433
+ */
434
+ private stateImage;
435
435
  /**
436
436
  * Single-trip device lookup against device-manager. Returns the
437
- * fields the wrapper actually consults name (logging) + battery
438
- * flag (cache window + broker-fallback gate). Sourced from the
439
- * device-manager registry rather than the battery cap so the answer
440
- * survives a momentarily-unreachable provider (the very condition
441
- * we're trying to be resilient to).
437
+ * stable registry fields the wrapper consults. Battery classification is
438
+ * completed by `resolveSnapshotState` from this feature flag PLUS the
439
+ * canonical runtime-state mirror, so a stale persisted feature projection
440
+ * cannot authorize a snapshot dial against a known sleeping battery camera.
442
441
  *
443
442
  * Logged at debug + null return on failure: every call site already
444
443
  * has a sensible fallback path (cache hit, conservative default, …),
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BMus2E5R.js");
6
+ const require_dist = require("../../dist-BQoU9nGS.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { B as filesystemBrowseCapability, ft as storageProviderCapability, vt as BaseAddon } from "../../dist-F1XDQDE1.mjs";
1
+ import { V as filesystemBrowseCapability, pt as storageProviderCapability, yt as BaseAddon } from "../../dist-hKJyHgFg.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BMus2E5R.js");
6
+ const require_dist = require("../../dist-BQoU9nGS.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs = require("node:fs");
9
9
  let node_module = require("node:module");
@@ -1,4 +1,4 @@
1
- import { A as decodeVectorBase64, Ot as asJsonObject, _t as errMsg, f as RUNTIME_DEFAULTS, gt as vectorStoreCapability, ht as vectorDimFromBase64, k as dataStoreProviderCapability, vt as BaseAddon, w as bareAddonId, zt as parseJsonUnknown } from "../../dist-F1XDQDE1.mjs";
1
+ import { A as dataStoreProviderCapability, Bt as parseJsonUnknown, _t as vectorStoreCapability, f as RUNTIME_DEFAULTS, gt as vectorDimFromBase64, j as decodeVectorBase64, kt as asJsonObject, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-hKJyHgFg.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { statSync } from "node:fs";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BMus2E5R.js");
6
+ const require_dist = require("../../dist-BQoU9nGS.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,4 +1,4 @@
1
- import { Rt as parseJsonObject, ct as settingsStoreCapability, dt as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, ut as storageCapability, vt as BaseAddon } from "../../dist-F1XDQDE1.mjs";
1
+ import { dt as storageCapability, ft as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, lt as settingsStoreCapability, yt as BaseAddon, zt as parseJsonObject } from "../../dist-hKJyHgFg.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as fs from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BMus2E5R.js");
6
+ const require_dist = require("../../dist-BQoU9nGS.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Ft as hydrateSchema, _t as errMsg, vt as BaseAddon } from "../../dist-F1XDQDE1.mjs";
1
+ import { It as hydrateSchema, vt as errMsg, yt as BaseAddon } from "../../dist-hKJyHgFg.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BMus2E5R.js");
6
+ const require_dist = require("../../dist-BQoU9nGS.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Y as logDestinationCapability, vt as BaseAddon } from "../../dist-F1XDQDE1.mjs";
1
+ import { X as logDestinationCapability, yt as BaseAddon } from "../../dist-hKJyHgFg.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -18597,7 +18597,16 @@ targets: zod.z.array(zod.z.object({
18597
18597
  /** A sleeping battery camera: the frame is deliberately stale and will
18598
18598
  * NOT refresh in the background. A surface should say so rather than
18599
18599
  * present it as current. */
18600
- sleeping: zod.z.boolean()
18600
+ sleeping: zod.z.boolean(),
18601
+ /** Current device state rendered over the cached frame. State images
18602
+ * remain authoritative even when their photographic background is
18603
+ * old; null means the link must carry a current camera frame. */
18604
+ stateReason: zod.z.enum([
18605
+ "disabled",
18606
+ "sleeping",
18607
+ "unreachable",
18608
+ "waking"
18609
+ ]).nullable()
18601
18610
  })))
18602
18611
  },
18603
18612
  status: {
@@ -38253,6 +38262,12 @@ Object.defineProperty(exports, "bareAddonId", {
38253
38262
  return bareAddonId;
38254
38263
  }
38255
38264
  });
38265
+ Object.defineProperty(exports, "batteryCapability", {
38266
+ enumerable: true,
38267
+ get: function() {
38268
+ return batteryCapability;
38269
+ }
38270
+ });
38256
38271
  Object.defineProperty(exports, "buildStreamParamsConfigSchema", {
38257
38272
  enumerable: true,
38258
38273
  get: function() {
@@ -18597,7 +18597,16 @@ targets: z.array(z.object({
18597
18597
  /** A sleeping battery camera: the frame is deliberately stale and will
18598
18598
  * NOT refresh in the background. A surface should say so rather than
18599
18599
  * present it as current. */
18600
- sleeping: z.boolean()
18600
+ sleeping: z.boolean(),
18601
+ /** Current device state rendered over the cached frame. State images
18602
+ * remain authoritative even when their photographic background is
18603
+ * old; null means the link must carry a current camera frame. */
18604
+ stateReason: z.enum([
18605
+ "disabled",
18606
+ "sleeping",
18607
+ "unreachable",
18608
+ "waking"
18609
+ ]).nullable()
18601
18610
  })))
18602
18611
  },
18603
18612
  status: {
@@ -38025,4 +38034,4 @@ function enumerateInferenceDevices(hw) {
38025
38034
  return out;
38026
38035
  }
38027
38036
  //#endregion
38028
- export { normalizeUnit as $, decodeVectorBase64 as A, asString as At, filesystemBrowseCapability as B, readinessKey as Bt, backupCapability as C, DeviceRole as Ct, coreBlockIdFromAddonId as D, WELL_KNOWN_TAB_MAP as Dt, coreBlockAddonId as E, ReadinessTimeoutError as Et, doorbellCapability as F, hydrateSchema as Ft, isVoidInput as G, isCollectionArrayMethod as H, scopeKey as Ht, enumerateInferenceDevices as I, isDeviceConfigCap as It, localNetworkCapability as J, kebabToCamel as K, enumerateItemArrayFields as L, nodePin as Lt, deviceManagerCapability as M, emitDownForOwnedCaps as Mt, deviceStateCapability as N, emitReadiness as Nt, coreBlocksCapability as O, asJsonObject as Ot, deviceStatusCapability as P, expandCapMethods as Pt, metricsProviderCapability as Q, enumerateSchemaFields as R, parseJsonObject as Rt, authProviderCapability as S, DeviceFeature as St, buildStreamParamsConfigSchema as T, ReadinessRegistry as Tt, isObjectInput as U, sleep as Ut, isArrayOutputSchema as V, resolveCapMount as Vt, isSameAddonId as W, EventCategory as Wt, logLevelAtMost as X, logDestinationCapability as Y, looseSchema as Z, UserRecordSchema as _, errMsg as _t, CAP_NAMES_WITH_STATUS as a, scopesAllowAddon as at, addonWidgetsCapability as b, DEVICE_SETTINGS_CONTRIBUTION_METHODS as bt, CoreBlockSchema as c, settingsStoreCapability as ct, METHOD_ACCESS_MAP as d, storageMigrationCapability as dt, objectInputDeclaresAddonId as et, RUNTIME_DEFAULTS as f, storageProviderCapability as ft, StorageMigrationJobSchema as g, vectorStoreCapability as gt, StorageLocationTypeSchema as h, vectorDimFromBase64 as ht, BatteryStatusSchema as i, runtimeStatePolicyFor as it, deriveBatteryPresence as j, createEvent as jt, dataStoreProviderCapability as k, asNumber as kt, DeclaredDevices as l, snapshotCapability as lt, ScopedTokenSchema as m, userManagementCapability as mt, AlertSchema as n, platformProbeCapability as nt, CORE_BLOCKS_ADDON_ID as o, scopesAllowDeviceCap as ot, STREAM_PROFILE_META as p, streamQualityLabel as pt, lifecycleJobSchema as q, ApiKeyRecordSchema as r, procedureAuthKey as rt, CORE_BLOCK_ADDON_PREFIX as s, scoreRuntimes as st, ALL_CAPABILITY_DEFINITIONS as t, parseStreamParamsFormPatch as tt, DeviceStatusSchema as u, storageCapability as ut, addonPagesCapability as v, BaseAddon as vt, bareAddonId as w, DeviceType as wt, alertsCapability as x, DEVICE_STATUS_METHOD as xt, addonSettingsCapability as y, DATAPLANE_SECRET_HEADER as yt, extractNestedAddonId as z, parseJsonUnknown as zt };
38037
+ export { metricsProviderCapability as $, dataStoreProviderCapability as A, asNumber as At, extractNestedAddonId as B, parseJsonUnknown as Bt, backupCapability as C, DeviceFeature as Ct, coreBlockAddonId as D, ReadinessTimeoutError as Dt, buildStreamParamsConfigSchema as E, ReadinessRegistry as Et, deviceStatusCapability as F, expandCapMethods as Ft, isSameAddonId as G, EventCategory as Gt, isArrayOutputSchema as H, resolveCapMount as Ht, doorbellCapability as I, hydrateSchema as It, lifecycleJobSchema as J, isVoidInput as K, enumerateInferenceDevices as L, isDeviceConfigCap as Lt, deriveBatteryPresence as M, createEvent as Mt, deviceManagerCapability as N, emitDownForOwnedCaps as Nt, coreBlockIdFromAddonId as O, WELL_KNOWN_TAB_MAP as Ot, deviceStateCapability as P, emitReadiness as Pt, looseSchema as Q, enumerateItemArrayFields as R, nodePin as Rt, authProviderCapability as S, DEVICE_STATUS_METHOD as St, batteryCapability as T, DeviceType as Tt, isCollectionArrayMethod as U, scopeKey as Ut, filesystemBrowseCapability as V, readinessKey as Vt, isObjectInput as W, sleep as Wt, logDestinationCapability as X, localNetworkCapability as Y, logLevelAtMost as Z, UserRecordSchema as _, vectorStoreCapability as _t, CAP_NAMES_WITH_STATUS as a, runtimeStatePolicyFor as at, addonWidgetsCapability as b, DATAPLANE_SECRET_HEADER as bt, CoreBlockSchema as c, scoreRuntimes as ct, METHOD_ACCESS_MAP as d, storageCapability as dt, normalizeUnit as et, RUNTIME_DEFAULTS as f, storageMigrationCapability as ft, StorageMigrationJobSchema as g, vectorDimFromBase64 as gt, StorageLocationTypeSchema as h, userManagementCapability as ht, BatteryStatusSchema as i, procedureAuthKey as it, decodeVectorBase64 as j, asString as jt, coreBlocksCapability as k, asJsonObject as kt, DeclaredDevices as l, settingsStoreCapability as lt, ScopedTokenSchema as m, streamQualityLabel as mt, AlertSchema as n, parseStreamParamsFormPatch as nt, CORE_BLOCKS_ADDON_ID as o, scopesAllowAddon as ot, STREAM_PROFILE_META as p, storageProviderCapability as pt, kebabToCamel as q, ApiKeyRecordSchema as r, platformProbeCapability as rt, CORE_BLOCK_ADDON_PREFIX as s, scopesAllowDeviceCap as st, ALL_CAPABILITY_DEFINITIONS as t, objectInputDeclaresAddonId as tt, DeviceStatusSchema as u, snapshotCapability as ut, addonPagesCapability as v, errMsg as vt, bareAddonId as w, DeviceRole as wt, alertsCapability as x, DEVICE_SETTINGS_CONTRIBUTION_METHODS as xt, addonSettingsCapability as y, BaseAddon as yt, enumerateSchemaFields as z, parseJsonObject as zt };
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-BMus2E5R.js");
3
+ const require_dist = require("./dist-BQoU9nGS.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");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
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 { At as asString$1, Bt as readinessKey, Et as ReadinessTimeoutError, G as isVoidInput, H as isCollectionArrayMethod, Ht as scopeKey, K as kebabToCamel, Mt as emitDownForOwnedCaps, Ot as asJsonObject$1, Pt as expandCapMethods, Rt as parseJsonObject, Tt as ReadinessRegistry, U as isObjectInput, V as isArrayOutputSchema, Vt as resolveCapMount, Wt as EventCategory$1, X as logLevelAtMost, Z as looseSchema, _t as errMsg$1, at as scopesAllowAddon, bt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, d as METHOD_ACCESS_MAP, et as objectInputDeclaresAddonId, f as RUNTIME_DEFAULTS, jt as createEvent, kt as asNumber, ot as scopesAllowDeviceCap, q as lifecycleJobSchema, rt as procedureAuthKey, t as ALL_CAPABILITY_DEFINITIONS, xt as DEVICE_STATUS_METHOD, y as addonSettingsCapability, yt as DATAPLANE_SECRET_HEADER$1, z as extractNestedAddonId, zt as parseJsonUnknown$1 } from "./dist-F1XDQDE1.mjs";
2
+ import { At as asNumber, B as extractNestedAddonId, Bt as parseJsonUnknown$1, Dt as ReadinessTimeoutError, Et as ReadinessRegistry, Ft as expandCapMethods, Gt as EventCategory$1, H as isArrayOutputSchema, Ht as resolveCapMount, J as lifecycleJobSchema, K as isVoidInput, Mt as createEvent, Nt as emitDownForOwnedCaps, Q as looseSchema, St as DEVICE_STATUS_METHOD, U as isCollectionArrayMethod, Ut as scopeKey, Vt as readinessKey, W as isObjectInput, Z as logLevelAtMost, bt as DATAPLANE_SECRET_HEADER$1, d as METHOD_ACCESS_MAP, f as RUNTIME_DEFAULTS, it as procedureAuthKey, jt as asString$1, kt as asJsonObject$1, ot as scopesAllowAddon, q as kebabToCamel, st as scopesAllowDeviceCap, t as ALL_CAPABILITY_DEFINITIONS, tt as objectInputDeclaresAddonId, vt as errMsg$1, xt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, y as addonSettingsCapability, zt as parseJsonObject } from "./dist-hKJyHgFg.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";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.93",
3
+ "version": "1.2.95",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",