@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.
- package/dist/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +3 -2
- package/dist/detection-pipeline/index.mjs +3 -2
- package/dist/{dist-CSXbgmP-.js → dist-B-pQhc30.js} +89 -2
- package/dist/{dist-BXax-C-g.mjs → dist-DM6-eQRs.mjs} +89 -2
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +2 -2
- package/dist/pipeline-runner/index.mjs +2 -2
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/{remote-source-plane-D9mX0HiW.mjs → remote-source-plane-DivMEw6Y.mjs} +1 -1
- package/dist/{remote-source-plane-Rbl_xds1.js → remote-source-plane-dSe5NlH9.js} +1 -1
- package/dist/stream-broker/_stub.js +73 -73
- 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
- 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
- package/dist/stream-broker/{hostInit-DcMnvklS.mjs → hostInit-DpF_eilj.mjs} +3 -3
- package/dist/stream-broker/index.js +2 -2
- package/dist/stream-broker/index.mjs +2 -2
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-9CvcTvAN.js → MaskShapeCanvas-DI4BY7W2-DRCvljqU.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-LKtmp7AF.js → MotionZonesSettings-NcxxQN8r-DmQAEfWC.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-CEf36fQU.js → PrivacyMaskSettings-APgPLF7p-DNJ5RGGN.js} +1 -1
- package/embed-dist/assets/index-BHKG2Pw-.js +81 -0
- package/embed-dist/index.html +1 -1
- package/package.json +1 -1
- 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-
|
|
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-
|
|
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-
|
|
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:
|
|
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-
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
-
const require_remote_source_plane = require("../remote-source-plane-
|
|
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-
|
|
2
|
-
import { n as isRemoteRestream, r as profileForStreamId, t as RemoteSourcePlane } from "../remote-source-plane-
|
|
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";
|
package/dist/recorder/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
2
|
-
const require_dist = require("../dist-
|
|
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");
|
package/dist/recorder/index.mjs
CHANGED
|
@@ -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-
|
|
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-
|
|
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
|
/**
|