@camstack/addon-pipeline 1.1.50 → 1.1.52

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 (28) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +3 -2
  4. package/dist/detection-pipeline/index.mjs +3 -2
  5. package/dist/{dist-CSXbgmP-.js → dist-B-pQhc30.js} +89 -2
  6. package/dist/{dist-BXax-C-g.mjs → dist-DM6-eQRs.mjs} +89 -2
  7. package/dist/motion-wasm/index.js +1 -1
  8. package/dist/motion-wasm/index.mjs +1 -1
  9. package/dist/pipeline-runner/index.js +2 -2
  10. package/dist/pipeline-runner/index.mjs +2 -2
  11. package/dist/recorder/index.js +1 -1
  12. package/dist/recorder/index.mjs +1 -1
  13. package/dist/{remote-source-plane-D9mX0HiW.mjs → remote-source-plane-DivMEw6Y.mjs} +1 -1
  14. package/dist/{remote-source-plane-Rbl_xds1.js → remote-source-plane-dSe5NlH9.js} +1 -1
  15. package/dist/stream-broker/_stub.js +73 -73
  16. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Dz7jhO6c.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-D6UvBYwr.mjs} +3 -3
  17. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CK4BmiTK.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C9fwKMfg.mjs} +2 -2
  18. package/dist/stream-broker/{hostInit-DcMnvklS.mjs → hostInit-DpF_eilj.mjs} +3 -3
  19. package/dist/stream-broker/index.js +2 -2
  20. package/dist/stream-broker/index.mjs +2 -2
  21. package/dist/stream-broker/remoteEntry.js +1 -1
  22. package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-9CvcTvAN.js → MaskShapeCanvas-DI4BY7W2-DRCvljqU.js} +1 -1
  23. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-LKtmp7AF.js → MotionZonesSettings-NcxxQN8r-DmQAEfWC.js} +1 -1
  24. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-CEf36fQU.js → PrivacyMaskSettings-APgPLF7p-DNJ5RGGN.js} +1 -1
  25. package/embed-dist/assets/index-BHKG2Pw-.js +81 -0
  26. package/embed-dist/index.html +1 -1
  27. package/package.json +1 -1
  28. package/embed-dist/assets/index-CceKv__y.js +0 -81
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-D6vf50IK.js");
6
- const require_dist = require("../dist-CSXbgmP-.js");
6
+ const require_dist = require("../dist-B-pQhc30.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { t as __require } from "../chunk-BdkLduGY.mjs";
2
- import { C as mapAudioLabelToMacro, I as errMsg, L as BaseAddon, U as hydrateSchema, h as audioAnalyzerCapability, l as HF_BASE_URL, m as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG } from "../dist-BXax-C-g.mjs";
2
+ import { C as mapAudioLabelToMacro, I as errMsg, L as BaseAddon, U as hydrateSchema, h as audioAnalyzerCapability, l as HF_BASE_URL, m as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG } from "../dist-DM6-eQRs.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { r as downloadFile } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
5
5
  import * as fs 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-D6vf50IK.js");
6
- const require_dist = require("../dist-CSXbgmP-.js");
6
+ const require_dist = require("../dist-B-pQhc30.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
9
9
  let _camstack_shm_ring = require("@camstack/shm-ring");
@@ -1547,7 +1547,7 @@ var STEP_CLIP_EMBEDDING = new PipelineStepBase({
1547
1547
  outputClasses: ["embedding"],
1548
1548
  models: [...CLIP_EMBEDDING_MODELS],
1549
1549
  defaultModelId: "mobileclip-s1",
1550
- enabledByDefault: false,
1550
+ enabledByDefault: true,
1551
1551
  defaultConfidence: 0,
1552
1552
  defaultMinParentScore: .4,
1553
1553
  group: "CLIP"
@@ -7252,6 +7252,7 @@ function buildDefaultStepTree(format, objectDetectionModelId) {
7252
7252
  const root = makeStep("object-detection", [
7253
7253
  faceDetection,
7254
7254
  makeStep("plate-detection", plateOcr ? [plateOcr] : []),
7255
+ makeStep("clip-embedding", []),
7255
7256
  makeStep("animal-classifier", [], { enabled: false }),
7256
7257
  makeStep("bird-classifier", [], { enabled: false }),
7257
7258
  makeStep("vehicle-classifier", [], { enabled: false }),
@@ -1,5 +1,5 @@
1
1
  import { t as __require } from "../chunk-BdkLduGY.mjs";
2
- import { H as createEvent, I as errMsg, L as BaseAddon, O as pipelineExecutorCapability, P as supportedRuntimes$1, S as hfModelUrl, U as hydrateSchema, V as EventCategory, X as sleep, a as COCO_TO_MACRO, b as detectionPipelineCapability, f as YAMNET_TO_MACRO, i as COCO_80_LABELS, j as runtimeDevices$1, q as parseJsonUnknown, r as AUDIO_MACRO_LABELS, t as APPLE_SA_TO_MACRO, v as defaultDeviceFor$1, x as evaluateZoneRules } from "../dist-BXax-C-g.mjs";
2
+ import { H as createEvent, I as errMsg, L as BaseAddon, O as pipelineExecutorCapability, P as supportedRuntimes$1, S as hfModelUrl, U as hydrateSchema, V as EventCategory, X as sleep, a as COCO_TO_MACRO, b as detectionPipelineCapability, f as YAMNET_TO_MACRO, i as COCO_80_LABELS, j as runtimeDevices$1, q as parseJsonUnknown, r as AUDIO_MACRO_LABELS, t as APPLE_SA_TO_MACRO, v as defaultDeviceFor$1, x as evaluateZoneRules } from "../dist-DM6-eQRs.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { a as isModelDownloaded, i as ensureModel, n as deleteModelFromDisk } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
5
5
  import { FrameRingReaderCache } from "@camstack/shm-ring";
@@ -1539,7 +1539,7 @@ var STEP_CLIP_EMBEDDING = new PipelineStepBase({
1539
1539
  outputClasses: ["embedding"],
1540
1540
  models: [...CLIP_EMBEDDING_MODELS],
1541
1541
  defaultModelId: "mobileclip-s1",
1542
- enabledByDefault: false,
1542
+ enabledByDefault: true,
1543
1543
  defaultConfidence: 0,
1544
1544
  defaultMinParentScore: .4,
1545
1545
  group: "CLIP"
@@ -7244,6 +7244,7 @@ function buildDefaultStepTree(format, objectDetectionModelId) {
7244
7244
  const root = makeStep("object-detection", [
7245
7245
  faceDetection,
7246
7246
  makeStep("plate-detection", plateOcr ? [plateOcr] : []),
7247
+ makeStep("clip-embedding", []),
7247
7248
  makeStep("animal-classifier", [], { enabled: false }),
7248
7249
  makeStep("bird-classifier", [], { enabled: false }),
7249
7250
  makeStep("vehicle-classifier", [], { enabled: false }),
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
4627
4627
  return inst;
4628
4628
  }
4629
4629
  //#endregion
4630
- //#region ../types/dist/sleep-DJaTV2D7.mjs
4630
+ //#region ../types/dist/sleep-b4Jf2n33.mjs
4631
4631
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4632
4632
  EventCategory["SystemBoot"] = "system.boot";
4633
4633
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -6831,6 +6831,18 @@ function method(input, output, options) {
6831
6831
  timeoutMs: options?.timeoutMs
6832
6832
  };
6833
6833
  }
6834
+ /**
6835
+ * A wrapper/system-only method: served exclusively by the cap's system-level
6836
+ * provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
6837
+ * driver natives don't stub out a wrapper concern (e.g. a cross-device cache
6838
+ * overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
6839
+ */
6840
+ function systemMethod(input, output, options) {
6841
+ return {
6842
+ ...method(input, output, options),
6843
+ systemOnly: true
6844
+ };
6845
+ }
6834
6846
  /** Shorthand to define an event schema */
6835
6847
  function event(data) {
6836
6848
  return { data };
@@ -17337,7 +17349,12 @@ DeviceType.Camera, method(object({
17337
17349
  }), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
17338
17350
  kind: "mutation",
17339
17351
  auth: "admin"
17340
- });
17352
+ }), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
17353
+ deviceId: number(),
17354
+ lastCapturedAt: number().nullable(),
17355
+ cacheAgeMs: number().nullable(),
17356
+ etag: string().nullable()
17357
+ })));
17341
17358
  /**
17342
17359
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
17343
17360
  * providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
@@ -17603,10 +17620,32 @@ method(_void(), array(TurnServerSchema).readonly());
17603
17620
  * b. `finishAuthentication({userId, response})` → server verifies
17604
17621
  * the assertion, bumps the credential counter, returns ok.
17605
17622
  *
17623
+ * 2b. Usernameless (discoverable-credential) authentication — the
17624
+ * passkey IS the primary factor, no password leg:
17625
+ * a. `beginDiscoverableAuthentication({})` → assertion options with
17626
+ * EMPTY `allowCredentials` (the browser offers every resident
17627
+ * passkey it holds for this RP) + `userVerification: 'required'`
17628
+ * (the passkey replaces both factors, so UV is mandatory).
17629
+ * The challenge is stored server-side, NOT bound to any user.
17630
+ * b. `finishDiscoverableAuthentication({response})` → the provider
17631
+ * resolves the credential by the response's credential id,
17632
+ * verifies the assertion against the stored challenge + that
17633
+ * credential's public key/counter, and returns the OWNING
17634
+ * `userId` — the caller (core auth router) mints the session.
17635
+ *
17606
17636
  * 3. Management:
17607
17637
  * - `listPasskeys({userId})` — enumerate user's enrolled credentials.
17608
17638
  * - `removePasskey({userId, credentialId})` — revoke one credential.
17609
17639
  *
17640
+ * 4. Second-factor preference (opt-in, default OFF):
17641
+ * Enrolling a passkey only enables passkey-FIRST sign-in. It is
17642
+ * demanded as a second factor after a password login ONLY when the
17643
+ * user explicitly opts in via `setSecondFactorPreference`.
17644
+ * - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
17645
+ * row ⇒ `enabled: false`).
17646
+ * - `setSecondFactorPreference({userId, enabled})` — persisted by
17647
+ * the providing addon beside its credentials.
17648
+ *
17610
17649
  * Challenges are short-lived (5 min, in-memory). The cap is internal —
17611
17650
  * the admin-ui composes the begin/finish round-trip and never exposes
17612
17651
  * the cap to non-admins.
@@ -17649,6 +17688,17 @@ method(object({
17649
17688
  }), object({ verified: boolean() }), {
17650
17689
  kind: "mutation",
17651
17690
  access: "view"
17691
+ }), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
17692
+ kind: "mutation",
17693
+ access: "view"
17694
+ }), method(object({
17695
+ /** AuthenticationResponseJSON from the browser. */
17696
+ response: record(string(), unknown()) }), object({
17697
+ verified: boolean(),
17698
+ userId: string().nullable()
17699
+ }), {
17700
+ kind: "mutation",
17701
+ access: "view"
17652
17702
  }), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
17653
17703
  userId: string(),
17654
17704
  credentialId: string()
@@ -17656,6 +17706,13 @@ method(object({
17656
17706
  kind: "mutation",
17657
17707
  auth: "admin",
17658
17708
  access: "delete"
17709
+ }), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
17710
+ userId: string(),
17711
+ enabled: boolean()
17712
+ }), object({ success: literal(true) }), {
17713
+ kind: "mutation",
17714
+ auth: "admin",
17715
+ access: "create"
17659
17716
  });
17660
17717
  /**
17661
17718
  * `videoclips` — the unified, navigable-clip surface for a camera.
@@ -23583,6 +23640,12 @@ Object.freeze({
23583
23640
  addonId: null,
23584
23641
  access: "view"
23585
23642
  },
23643
+ "snapshot.getSnapshotOverview": {
23644
+ capName: "snapshot",
23645
+ capScope: "device",
23646
+ addonId: null,
23647
+ access: "view"
23648
+ },
23586
23649
  "snapshot.invalidateCache": {
23587
23650
  capName: "snapshot",
23588
23651
  capScope: "device",
@@ -24261,6 +24324,12 @@ Object.freeze({
24261
24324
  addonId: null,
24262
24325
  access: "view"
24263
24326
  },
24327
+ "userPasskeys.beginDiscoverableAuthentication": {
24328
+ capName: "user-passkeys",
24329
+ capScope: "system",
24330
+ addonId: null,
24331
+ access: "view"
24332
+ },
24264
24333
  "userPasskeys.beginRegistration": {
24265
24334
  capName: "user-passkeys",
24266
24335
  capScope: "system",
@@ -24273,12 +24342,24 @@ Object.freeze({
24273
24342
  addonId: null,
24274
24343
  access: "view"
24275
24344
  },
24345
+ "userPasskeys.finishDiscoverableAuthentication": {
24346
+ capName: "user-passkeys",
24347
+ capScope: "system",
24348
+ addonId: null,
24349
+ access: "view"
24350
+ },
24276
24351
  "userPasskeys.finishRegistration": {
24277
24352
  capName: "user-passkeys",
24278
24353
  capScope: "system",
24279
24354
  addonId: null,
24280
24355
  access: "create"
24281
24356
  },
24357
+ "userPasskeys.getSecondFactorPreference": {
24358
+ capName: "user-passkeys",
24359
+ capScope: "system",
24360
+ addonId: null,
24361
+ access: "view"
24362
+ },
24282
24363
  "userPasskeys.listPasskeys": {
24283
24364
  capName: "user-passkeys",
24284
24365
  capScope: "system",
@@ -24291,6 +24372,12 @@ Object.freeze({
24291
24372
  addonId: null,
24292
24373
  access: "delete"
24293
24374
  },
24375
+ "userPasskeys.setSecondFactorPreference": {
24376
+ capName: "user-passkeys",
24377
+ capScope: "system",
24378
+ addonId: null,
24379
+ access: "create"
24380
+ },
24294
24381
  "vacuumControl.locate": {
24295
24382
  capName: "vacuum-control",
24296
24383
  capScope: "device",
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
4627
4627
  return inst;
4628
4628
  }
4629
4629
  //#endregion
4630
- //#region ../types/dist/sleep-DJaTV2D7.mjs
4630
+ //#region ../types/dist/sleep-b4Jf2n33.mjs
4631
4631
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4632
4632
  EventCategory["SystemBoot"] = "system.boot";
4633
4633
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -6831,6 +6831,18 @@ function method(input, output, options) {
6831
6831
  timeoutMs: options?.timeoutMs
6832
6832
  };
6833
6833
  }
6834
+ /**
6835
+ * A wrapper/system-only method: served exclusively by the cap's system-level
6836
+ * provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
6837
+ * driver natives don't stub out a wrapper concern (e.g. a cross-device cache
6838
+ * overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
6839
+ */
6840
+ function systemMethod(input, output, options) {
6841
+ return {
6842
+ ...method(input, output, options),
6843
+ systemOnly: true
6844
+ };
6845
+ }
6834
6846
  /** Shorthand to define an event schema */
6835
6847
  function event(data) {
6836
6848
  return { data };
@@ -17337,7 +17349,12 @@ DeviceType.Camera, method(object({
17337
17349
  }), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
17338
17350
  kind: "mutation",
17339
17351
  auth: "admin"
17340
- });
17352
+ }), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
17353
+ deviceId: number(),
17354
+ lastCapturedAt: number().nullable(),
17355
+ cacheAgeMs: number().nullable(),
17356
+ etag: string().nullable()
17357
+ })));
17341
17358
  /**
17342
17359
  * `sso-bridge` — internal hub-only cap that lets SSO-style auth
17343
17360
  * providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
@@ -17603,10 +17620,32 @@ method(_void(), array(TurnServerSchema).readonly());
17603
17620
  * b. `finishAuthentication({userId, response})` → server verifies
17604
17621
  * the assertion, bumps the credential counter, returns ok.
17605
17622
  *
17623
+ * 2b. Usernameless (discoverable-credential) authentication — the
17624
+ * passkey IS the primary factor, no password leg:
17625
+ * a. `beginDiscoverableAuthentication({})` → assertion options with
17626
+ * EMPTY `allowCredentials` (the browser offers every resident
17627
+ * passkey it holds for this RP) + `userVerification: 'required'`
17628
+ * (the passkey replaces both factors, so UV is mandatory).
17629
+ * The challenge is stored server-side, NOT bound to any user.
17630
+ * b. `finishDiscoverableAuthentication({response})` → the provider
17631
+ * resolves the credential by the response's credential id,
17632
+ * verifies the assertion against the stored challenge + that
17633
+ * credential's public key/counter, and returns the OWNING
17634
+ * `userId` — the caller (core auth router) mints the session.
17635
+ *
17606
17636
  * 3. Management:
17607
17637
  * - `listPasskeys({userId})` — enumerate user's enrolled credentials.
17608
17638
  * - `removePasskey({userId, credentialId})` — revoke one credential.
17609
17639
  *
17640
+ * 4. Second-factor preference (opt-in, default OFF):
17641
+ * Enrolling a passkey only enables passkey-FIRST sign-in. It is
17642
+ * demanded as a second factor after a password login ONLY when the
17643
+ * user explicitly opts in via `setSecondFactorPreference`.
17644
+ * - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
17645
+ * row ⇒ `enabled: false`).
17646
+ * - `setSecondFactorPreference({userId, enabled})` — persisted by
17647
+ * the providing addon beside its credentials.
17648
+ *
17610
17649
  * Challenges are short-lived (5 min, in-memory). The cap is internal —
17611
17650
  * the admin-ui composes the begin/finish round-trip and never exposes
17612
17651
  * the cap to non-admins.
@@ -17649,6 +17688,17 @@ method(object({
17649
17688
  }), object({ verified: boolean() }), {
17650
17689
  kind: "mutation",
17651
17690
  access: "view"
17691
+ }), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
17692
+ kind: "mutation",
17693
+ access: "view"
17694
+ }), method(object({
17695
+ /** AuthenticationResponseJSON from the browser. */
17696
+ response: record(string(), unknown()) }), object({
17697
+ verified: boolean(),
17698
+ userId: string().nullable()
17699
+ }), {
17700
+ kind: "mutation",
17701
+ access: "view"
17652
17702
  }), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
17653
17703
  userId: string(),
17654
17704
  credentialId: string()
@@ -17656,6 +17706,13 @@ method(object({
17656
17706
  kind: "mutation",
17657
17707
  auth: "admin",
17658
17708
  access: "delete"
17709
+ }), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
17710
+ userId: string(),
17711
+ enabled: boolean()
17712
+ }), object({ success: literal(true) }), {
17713
+ kind: "mutation",
17714
+ auth: "admin",
17715
+ access: "create"
17659
17716
  });
17660
17717
  /**
17661
17718
  * `videoclips` — the unified, navigable-clip surface for a camera.
@@ -23583,6 +23640,12 @@ Object.freeze({
23583
23640
  addonId: null,
23584
23641
  access: "view"
23585
23642
  },
23643
+ "snapshot.getSnapshotOverview": {
23644
+ capName: "snapshot",
23645
+ capScope: "device",
23646
+ addonId: null,
23647
+ access: "view"
23648
+ },
23586
23649
  "snapshot.invalidateCache": {
23587
23650
  capName: "snapshot",
23588
23651
  capScope: "device",
@@ -24261,6 +24324,12 @@ Object.freeze({
24261
24324
  addonId: null,
24262
24325
  access: "view"
24263
24326
  },
24327
+ "userPasskeys.beginDiscoverableAuthentication": {
24328
+ capName: "user-passkeys",
24329
+ capScope: "system",
24330
+ addonId: null,
24331
+ access: "view"
24332
+ },
24264
24333
  "userPasskeys.beginRegistration": {
24265
24334
  capName: "user-passkeys",
24266
24335
  capScope: "system",
@@ -24273,12 +24342,24 @@ Object.freeze({
24273
24342
  addonId: null,
24274
24343
  access: "view"
24275
24344
  },
24345
+ "userPasskeys.finishDiscoverableAuthentication": {
24346
+ capName: "user-passkeys",
24347
+ capScope: "system",
24348
+ addonId: null,
24349
+ access: "view"
24350
+ },
24276
24351
  "userPasskeys.finishRegistration": {
24277
24352
  capName: "user-passkeys",
24278
24353
  capScope: "system",
24279
24354
  addonId: null,
24280
24355
  access: "create"
24281
24356
  },
24357
+ "userPasskeys.getSecondFactorPreference": {
24358
+ capName: "user-passkeys",
24359
+ capScope: "system",
24360
+ addonId: null,
24361
+ access: "view"
24362
+ },
24282
24363
  "userPasskeys.listPasskeys": {
24283
24364
  capName: "user-passkeys",
24284
24365
  capScope: "system",
@@ -24291,6 +24372,12 @@ Object.freeze({
24291
24372
  addonId: null,
24292
24373
  access: "delete"
24293
24374
  },
24375
+ "userPasskeys.setSecondFactorPreference": {
24376
+ capName: "user-passkeys",
24377
+ capScope: "system",
24378
+ addonId: null,
24379
+ access: "create"
24380
+ },
24294
24381
  "vacuumControl.locate": {
24295
24382
  capName: "vacuum-control",
24296
24383
  capScope: "device",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CSXbgmP-.js");
5
+ const require_dist = require("../dist-B-pQhc30.js");
6
6
  let _camstack_shm_ring = require("@camstack/shm-ring");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-BXax-C-g.mjs";
1
+ import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-DM6-eQRs.mjs";
2
2
  import { FrameRingReaderCache } from "@camstack/shm-ring";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-CSXbgmP-.js");
6
- const require_remote_source_plane = require("../remote-source-plane-Rbl_xds1.js");
5
+ const require_dist = require("../dist-B-pQhc30.js");
6
+ const require_remote_source_plane = require("../remote-source-plane-dSe5NlH9.js");
7
7
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
8
8
  const require_worker_protocol = require("../worker-protocol-BCfO8gUF.js");
9
9
  let _camstack_shm_ring = require("@camstack/shm-ring");
@@ -1,5 +1,5 @@
1
- import { $ as boolean, D as nodePin, H as createEvent, I as errMsg, K as makeSourceBrokerId, L as BaseAddon, Q as array, V as EventCategory, Z as _enum, _ as customAction, it as object, k as pipelineRunnerCapability, ot as string, rt as number, tt as lazy, y as defineCustomActions } from "../dist-BXax-C-g.mjs";
2
- import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-D9mX0HiW.mjs";
1
+ import { $ as boolean, D as nodePin, H as createEvent, I as errMsg, K as makeSourceBrokerId, L as BaseAddon, Q as array, V as EventCategory, Z as _enum, _ as customAction, it as object, k as pipelineRunnerCapability, ot as string, rt as number, tt as lazy, y as defineCustomActions } from "../dist-DM6-eQRs.mjs";
2
+ import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-DivMEw6Y.mjs";
3
3
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
4
4
  import { t as isWorkerReply } from "../worker-protocol-pk7qdYXt.mjs";
5
5
  import { DecoderFrameRingSink, FrameRingReaderCache, unlinkSegment } from "@camstack/shm-ring";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("../chunk-D6vf50IK.js");
2
- const require_dist = require("../dist-CSXbgmP-.js");
2
+ const require_dist = require("../dist-B-pQhc30.js");
3
3
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
4
4
  const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
5
5
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { A as recordingCapability, B as DeviceType, D as nodePin, I as errMsg, L as BaseAddon, M as storageEvictableCapability, T as migrateConfigToBands, U as hydrateSchema, V as EventCategory, Y as selectAssignedProfileSlots, at as record, ot as string, s as EVENT_PAD_MS, u as RecordingConfigSchema } from "../dist-BXax-C-g.mjs";
1
+ import { A as recordingCapability, B as DeviceType, D as nodePin, I as errMsg, L as BaseAddon, M as storageEvictableCapability, T as migrateConfigToBands, U as hydrateSchema, V as EventCategory, Y as selectAssignedProfileSlots, at as record, ot as string, s as EVENT_PAD_MS, u as RecordingConfigSchema } from "../dist-DM6-eQRs.mjs";
2
2
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
3
3
  import { t as createFileDataPlaneHandler } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
4
4
  import { spawn } from "node:child_process";
@@ -1,4 +1,4 @@
1
- import { D as nodePin, I as errMsg, d as RingBuffer } from "./dist-BXax-C-g.mjs";
1
+ import { D as nodePin, I as errMsg, d as RingBuffer } from "./dist-DM6-eQRs.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/stream-broker/stream-broker/decoder-session-proxy.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CSXbgmP-.js");
1
+ const require_dist = require("./dist-B-pQhc30.js");
2
2
  let node_crypto = require("node:crypto");
3
3
  //#region src/stream-broker/stream-broker/decoder-session-proxy.ts
4
4
  /**