@camstack/addon-decoder-ffmpeg 1.1.10 → 1.1.12
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/index.js +231 -9
- package/dist/index.mjs +231 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4635,7 +4635,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4635
4635
|
return inst;
|
|
4636
4636
|
}
|
|
4637
4637
|
//#endregion
|
|
4638
|
-
//#region ../types/dist/sleep-
|
|
4638
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4639
4639
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4640
4640
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4641
4641
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6739,6 +6739,18 @@ function method(input, output, options) {
|
|
|
6739
6739
|
timeoutMs: options?.timeoutMs
|
|
6740
6740
|
};
|
|
6741
6741
|
}
|
|
6742
|
+
/**
|
|
6743
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6744
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6745
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6746
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6747
|
+
*/
|
|
6748
|
+
function systemMethod(input, output, options) {
|
|
6749
|
+
return {
|
|
6750
|
+
...method(input, output, options),
|
|
6751
|
+
systemOnly: true
|
|
6752
|
+
};
|
|
6753
|
+
}
|
|
6742
6754
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6743
6755
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6744
6756
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10489,6 +10501,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10489
10501
|
defaultModelId: string(),
|
|
10490
10502
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10491
10503
|
enabledByDefault: boolean().optional(),
|
|
10504
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10492
10505
|
defaultConfidence: number(),
|
|
10493
10506
|
group: string().optional(),
|
|
10494
10507
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10670,7 +10683,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10670
10683
|
image: _instanceof(Uint8Array).optional(),
|
|
10671
10684
|
referenceImage: string().optional(),
|
|
10672
10685
|
deviceId: number().optional(),
|
|
10673
|
-
sessionId: string().optional()
|
|
10686
|
+
sessionId: string().optional(),
|
|
10687
|
+
/**
|
|
10688
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10689
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10690
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10691
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10692
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10693
|
+
*/
|
|
10694
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10674
10695
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10675
10696
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10676
10697
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10795,6 +10816,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10795
10816
|
auth: "admin"
|
|
10796
10817
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10797
10818
|
/**
|
|
10819
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10820
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10821
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10822
|
+
* dims — no native resolution to plumb.
|
|
10823
|
+
*/
|
|
10824
|
+
var NativeCropBboxSchema = object({
|
|
10825
|
+
x: number(),
|
|
10826
|
+
y: number(),
|
|
10827
|
+
w: number(),
|
|
10828
|
+
h: number()
|
|
10829
|
+
});
|
|
10830
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10831
|
+
var NativeCropResultSchema = object({
|
|
10832
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10833
|
+
bytes: _instanceof(Uint8Array),
|
|
10834
|
+
width: number().int().positive(),
|
|
10835
|
+
height: number().int().positive()
|
|
10836
|
+
});
|
|
10837
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10838
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10839
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10840
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10841
|
+
* normalized [0,1] convention). */
|
|
10842
|
+
var DetailParentSchema = object({
|
|
10843
|
+
bbox: NativeCropBboxSchema,
|
|
10844
|
+
className: string()
|
|
10845
|
+
});
|
|
10846
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10847
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10848
|
+
* single tracked detection. */
|
|
10849
|
+
var DetailResultSchema = object({
|
|
10850
|
+
stepId: string(),
|
|
10851
|
+
className: string(),
|
|
10852
|
+
score: number(),
|
|
10853
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10854
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10855
|
+
embedding: string().optional(),
|
|
10856
|
+
label: string().optional(),
|
|
10857
|
+
alignedCropJpeg: string().optional()
|
|
10858
|
+
});
|
|
10859
|
+
/**
|
|
10798
10860
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10799
10861
|
* by both the Zod data schema (validation + default fallback) and
|
|
10800
10862
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11050,7 +11112,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11050
11112
|
avgInferenceTimeMs: number(),
|
|
11051
11113
|
queueDepth: number()
|
|
11052
11114
|
});
|
|
11053
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11115
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11116
|
+
handle: FrameHandleSchema,
|
|
11117
|
+
bbox: NativeCropBboxSchema,
|
|
11118
|
+
maxWidth: number().int().positive().optional()
|
|
11119
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11120
|
+
deviceId: number(),
|
|
11121
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11122
|
+
cropJpeg: string().optional(),
|
|
11123
|
+
parent: DetailParentSchema,
|
|
11124
|
+
steps: array(string()).optional()
|
|
11125
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11054
11126
|
object({
|
|
11055
11127
|
detected: boolean(),
|
|
11056
11128
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15218,7 +15290,17 @@ var TrackSchema = object({
|
|
|
15218
15290
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15219
15291
|
totalDistance: number(),
|
|
15220
15292
|
state: TrackStateSchema,
|
|
15221
|
-
active: boolean()
|
|
15293
|
+
active: boolean(),
|
|
15294
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15295
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15296
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15297
|
+
importance: number().optional(),
|
|
15298
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15299
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15300
|
+
bestEventId: string().optional(),
|
|
15301
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15302
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15303
|
+
importanceReason: string().optional()
|
|
15222
15304
|
});
|
|
15223
15305
|
var BaseEventFields = {
|
|
15224
15306
|
id: string(),
|
|
@@ -15283,8 +15365,18 @@ var ObjectEventSchema = object({
|
|
|
15283
15365
|
frameHeight: number().optional(),
|
|
15284
15366
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15285
15367
|
mediaKey: string().optional(),
|
|
15368
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15369
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15370
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15371
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15372
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15373
|
+
keyFrameMediaKey: string().optional(),
|
|
15286
15374
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15287
|
-
mediaUrl: string().optional()
|
|
15375
|
+
mediaUrl: string().optional(),
|
|
15376
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15377
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15378
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15379
|
+
importance: number().optional()
|
|
15288
15380
|
});
|
|
15289
15381
|
var AudioEventSchema = object({
|
|
15290
15382
|
...BaseEventFields,
|
|
@@ -15308,7 +15400,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15308
15400
|
"fullFrame",
|
|
15309
15401
|
"fullFrameBoxed",
|
|
15310
15402
|
"faceCrop",
|
|
15311
|
-
"plateCrop"
|
|
15403
|
+
"plateCrop",
|
|
15404
|
+
"keyFrame"
|
|
15312
15405
|
]);
|
|
15313
15406
|
var MediaFileSchema = object({
|
|
15314
15407
|
key: string(),
|
|
@@ -15329,6 +15422,32 @@ var DeviceEventQueryInput = object({
|
|
|
15329
15422
|
projection: _enum(["full", "slim"]).optional()
|
|
15330
15423
|
});
|
|
15331
15424
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15425
|
+
var KeyEventQueryInput = object({
|
|
15426
|
+
deviceId: number(),
|
|
15427
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15428
|
+
since: number(),
|
|
15429
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15430
|
+
until: number(),
|
|
15431
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15432
|
+
/** Drop tracks scoring below this importance. */
|
|
15433
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15434
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15435
|
+
classFilter: string().optional()
|
|
15436
|
+
});
|
|
15437
|
+
var KeyEventSchema = object({
|
|
15438
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15439
|
+
id: string(),
|
|
15440
|
+
trackId: string(),
|
|
15441
|
+
/** Track start time (firstSeen). */
|
|
15442
|
+
timestamp: number(),
|
|
15443
|
+
className: string(),
|
|
15444
|
+
label: string().optional(),
|
|
15445
|
+
importance: number(),
|
|
15446
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15447
|
+
bestEventId: string(),
|
|
15448
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15449
|
+
windowMs: number().optional()
|
|
15450
|
+
});
|
|
15332
15451
|
var TrackedDetectionSchema = object({
|
|
15333
15452
|
trackId: string(),
|
|
15334
15453
|
className: string(),
|
|
@@ -15358,7 +15477,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15358
15477
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15359
15478
|
kind: "mutation",
|
|
15360
15479
|
auth: "admin"
|
|
15361
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15480
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15362
15481
|
deviceId: number(),
|
|
15363
15482
|
since: number(),
|
|
15364
15483
|
until: number(),
|
|
@@ -16125,7 +16244,12 @@ DeviceType.Camera, method(object({
|
|
|
16125
16244
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
16126
16245
|
kind: "mutation",
|
|
16127
16246
|
auth: "admin"
|
|
16128
|
-
})
|
|
16247
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16248
|
+
deviceId: number(),
|
|
16249
|
+
lastCapturedAt: number().nullable(),
|
|
16250
|
+
cacheAgeMs: number().nullable(),
|
|
16251
|
+
etag: string().nullable()
|
|
16252
|
+
})));
|
|
16129
16253
|
/**
|
|
16130
16254
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
16131
16255
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16376,10 +16500,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16376
16500
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16377
16501
|
* the assertion, bumps the credential counter, returns ok.
|
|
16378
16502
|
*
|
|
16503
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16504
|
+
* passkey IS the primary factor, no password leg:
|
|
16505
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16506
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16507
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16508
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16509
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16510
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16511
|
+
* resolves the credential by the response's credential id,
|
|
16512
|
+
* verifies the assertion against the stored challenge + that
|
|
16513
|
+
* credential's public key/counter, and returns the OWNING
|
|
16514
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16515
|
+
*
|
|
16379
16516
|
* 3. Management:
|
|
16380
16517
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16381
16518
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16382
16519
|
*
|
|
16520
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16521
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16522
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16523
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16524
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16525
|
+
* row ⇒ `enabled: false`).
|
|
16526
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16527
|
+
* the providing addon beside its credentials.
|
|
16528
|
+
*
|
|
16383
16529
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16384
16530
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16385
16531
|
* the cap to non-admins.
|
|
@@ -16422,6 +16568,17 @@ method(object({
|
|
|
16422
16568
|
}), object({ verified: boolean() }), {
|
|
16423
16569
|
kind: "mutation",
|
|
16424
16570
|
access: "view"
|
|
16571
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16572
|
+
kind: "mutation",
|
|
16573
|
+
access: "view"
|
|
16574
|
+
}), method(object({
|
|
16575
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16576
|
+
response: record(string(), unknown()) }), object({
|
|
16577
|
+
verified: boolean(),
|
|
16578
|
+
userId: string().nullable()
|
|
16579
|
+
}), {
|
|
16580
|
+
kind: "mutation",
|
|
16581
|
+
access: "view"
|
|
16425
16582
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16426
16583
|
userId: string(),
|
|
16427
16584
|
credentialId: string()
|
|
@@ -16429,6 +16586,13 @@ method(object({
|
|
|
16429
16586
|
kind: "mutation",
|
|
16430
16587
|
auth: "admin",
|
|
16431
16588
|
access: "delete"
|
|
16589
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16590
|
+
userId: string(),
|
|
16591
|
+
enabled: boolean()
|
|
16592
|
+
}), object({ success: literal(true) }), {
|
|
16593
|
+
kind: "mutation",
|
|
16594
|
+
auth: "admin",
|
|
16595
|
+
access: "create"
|
|
16432
16596
|
});
|
|
16433
16597
|
/**
|
|
16434
16598
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17230,7 +17394,17 @@ var FaceInfoSchema = object({
|
|
|
17230
17394
|
recognizedIdentityId: string().optional(),
|
|
17231
17395
|
identityName: string().optional(),
|
|
17232
17396
|
assigned: boolean(),
|
|
17233
|
-
base64: string().optional()
|
|
17397
|
+
base64: string().optional(),
|
|
17398
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17399
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17400
|
+
* legacy rows written before design B. */
|
|
17401
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17402
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17403
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17404
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17405
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17406
|
+
* back to the inline `base64` face crop. */
|
|
17407
|
+
keyFrameMediaKey: string().optional()
|
|
17234
17408
|
});
|
|
17235
17409
|
var FaceFilterEnum = _enum([
|
|
17236
17410
|
"unassigned",
|
|
@@ -21349,6 +21523,12 @@ Object.freeze({
|
|
|
21349
21523
|
addonId: null,
|
|
21350
21524
|
access: "view"
|
|
21351
21525
|
},
|
|
21526
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21527
|
+
capName: "pipeline-analytics",
|
|
21528
|
+
capScope: "device",
|
|
21529
|
+
addonId: null,
|
|
21530
|
+
access: "view"
|
|
21531
|
+
},
|
|
21352
21532
|
"pipelineAnalytics.getMotionEvents": {
|
|
21353
21533
|
capName: "pipeline-analytics",
|
|
21354
21534
|
capScope: "device",
|
|
@@ -21877,12 +22057,24 @@ Object.freeze({
|
|
|
21877
22057
|
addonId: null,
|
|
21878
22058
|
access: "view"
|
|
21879
22059
|
},
|
|
22060
|
+
"pipelineRunner.getNativeCrop": {
|
|
22061
|
+
capName: "pipeline-runner",
|
|
22062
|
+
capScope: "system",
|
|
22063
|
+
addonId: null,
|
|
22064
|
+
access: "view"
|
|
22065
|
+
},
|
|
21880
22066
|
"pipelineRunner.reportMotion": {
|
|
21881
22067
|
capName: "pipeline-runner",
|
|
21882
22068
|
capScope: "system",
|
|
21883
22069
|
addonId: null,
|
|
21884
22070
|
access: "create"
|
|
21885
22071
|
},
|
|
22072
|
+
"pipelineRunner.runDetailSubtree": {
|
|
22073
|
+
capName: "pipeline-runner",
|
|
22074
|
+
capScope: "system",
|
|
22075
|
+
addonId: null,
|
|
22076
|
+
access: "create"
|
|
22077
|
+
},
|
|
21886
22078
|
"plateGallery.correctPlateText": {
|
|
21887
22079
|
capName: "plate-gallery",
|
|
21888
22080
|
capScope: "system",
|
|
@@ -22243,6 +22435,12 @@ Object.freeze({
|
|
|
22243
22435
|
addonId: null,
|
|
22244
22436
|
access: "view"
|
|
22245
22437
|
},
|
|
22438
|
+
"snapshot.getSnapshotOverview": {
|
|
22439
|
+
capName: "snapshot",
|
|
22440
|
+
capScope: "device",
|
|
22441
|
+
addonId: null,
|
|
22442
|
+
access: "view"
|
|
22443
|
+
},
|
|
22246
22444
|
"snapshot.invalidateCache": {
|
|
22247
22445
|
capName: "snapshot",
|
|
22248
22446
|
capScope: "device",
|
|
@@ -22921,6 +23119,12 @@ Object.freeze({
|
|
|
22921
23119
|
addonId: null,
|
|
22922
23120
|
access: "view"
|
|
22923
23121
|
},
|
|
23122
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23123
|
+
capName: "user-passkeys",
|
|
23124
|
+
capScope: "system",
|
|
23125
|
+
addonId: null,
|
|
23126
|
+
access: "view"
|
|
23127
|
+
},
|
|
22924
23128
|
"userPasskeys.beginRegistration": {
|
|
22925
23129
|
capName: "user-passkeys",
|
|
22926
23130
|
capScope: "system",
|
|
@@ -22933,12 +23137,24 @@ Object.freeze({
|
|
|
22933
23137
|
addonId: null,
|
|
22934
23138
|
access: "view"
|
|
22935
23139
|
},
|
|
23140
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23141
|
+
capName: "user-passkeys",
|
|
23142
|
+
capScope: "system",
|
|
23143
|
+
addonId: null,
|
|
23144
|
+
access: "view"
|
|
23145
|
+
},
|
|
22936
23146
|
"userPasskeys.finishRegistration": {
|
|
22937
23147
|
capName: "user-passkeys",
|
|
22938
23148
|
capScope: "system",
|
|
22939
23149
|
addonId: null,
|
|
22940
23150
|
access: "create"
|
|
22941
23151
|
},
|
|
23152
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23153
|
+
capName: "user-passkeys",
|
|
23154
|
+
capScope: "system",
|
|
23155
|
+
addonId: null,
|
|
23156
|
+
access: "view"
|
|
23157
|
+
},
|
|
22942
23158
|
"userPasskeys.listPasskeys": {
|
|
22943
23159
|
capName: "user-passkeys",
|
|
22944
23160
|
capScope: "system",
|
|
@@ -22951,6 +23167,12 @@ Object.freeze({
|
|
|
22951
23167
|
addonId: null,
|
|
22952
23168
|
access: "delete"
|
|
22953
23169
|
},
|
|
23170
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23171
|
+
capName: "user-passkeys",
|
|
23172
|
+
capScope: "system",
|
|
23173
|
+
addonId: null,
|
|
23174
|
+
access: "create"
|
|
23175
|
+
},
|
|
22954
23176
|
"vacuumControl.locate": {
|
|
22955
23177
|
capName: "vacuum-control",
|
|
22956
23178
|
capScope: "device",
|
package/dist/index.mjs
CHANGED
|
@@ -4631,7 +4631,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4631
4631
|
return inst;
|
|
4632
4632
|
}
|
|
4633
4633
|
//#endregion
|
|
4634
|
-
//#region ../types/dist/sleep-
|
|
4634
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4635
4635
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4636
4636
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4637
4637
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6735,6 +6735,18 @@ function method(input, output, options) {
|
|
|
6735
6735
|
timeoutMs: options?.timeoutMs
|
|
6736
6736
|
};
|
|
6737
6737
|
}
|
|
6738
|
+
/**
|
|
6739
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6740
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6741
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6742
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6743
|
+
*/
|
|
6744
|
+
function systemMethod(input, output, options) {
|
|
6745
|
+
return {
|
|
6746
|
+
...method(input, output, options),
|
|
6747
|
+
systemOnly: true
|
|
6748
|
+
};
|
|
6749
|
+
}
|
|
6738
6750
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6739
6751
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6740
6752
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10485,6 +10497,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10485
10497
|
defaultModelId: string(),
|
|
10486
10498
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10487
10499
|
enabledByDefault: boolean().optional(),
|
|
10500
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10488
10501
|
defaultConfidence: number(),
|
|
10489
10502
|
group: string().optional(),
|
|
10490
10503
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10666,7 +10679,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10666
10679
|
image: _instanceof(Uint8Array).optional(),
|
|
10667
10680
|
referenceImage: string().optional(),
|
|
10668
10681
|
deviceId: number().optional(),
|
|
10669
|
-
sessionId: string().optional()
|
|
10682
|
+
sessionId: string().optional(),
|
|
10683
|
+
/**
|
|
10684
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10685
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10686
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10687
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10688
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10689
|
+
*/
|
|
10690
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10670
10691
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10671
10692
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10672
10693
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10791,6 +10812,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10791
10812
|
auth: "admin"
|
|
10792
10813
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10793
10814
|
/**
|
|
10815
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10816
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10817
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10818
|
+
* dims — no native resolution to plumb.
|
|
10819
|
+
*/
|
|
10820
|
+
var NativeCropBboxSchema = object({
|
|
10821
|
+
x: number(),
|
|
10822
|
+
y: number(),
|
|
10823
|
+
w: number(),
|
|
10824
|
+
h: number()
|
|
10825
|
+
});
|
|
10826
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10827
|
+
var NativeCropResultSchema = object({
|
|
10828
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10829
|
+
bytes: _instanceof(Uint8Array),
|
|
10830
|
+
width: number().int().positive(),
|
|
10831
|
+
height: number().int().positive()
|
|
10832
|
+
});
|
|
10833
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10834
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10835
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10836
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10837
|
+
* normalized [0,1] convention). */
|
|
10838
|
+
var DetailParentSchema = object({
|
|
10839
|
+
bbox: NativeCropBboxSchema,
|
|
10840
|
+
className: string()
|
|
10841
|
+
});
|
|
10842
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10843
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10844
|
+
* single tracked detection. */
|
|
10845
|
+
var DetailResultSchema = object({
|
|
10846
|
+
stepId: string(),
|
|
10847
|
+
className: string(),
|
|
10848
|
+
score: number(),
|
|
10849
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10850
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10851
|
+
embedding: string().optional(),
|
|
10852
|
+
label: string().optional(),
|
|
10853
|
+
alignedCropJpeg: string().optional()
|
|
10854
|
+
});
|
|
10855
|
+
/**
|
|
10794
10856
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10795
10857
|
* by both the Zod data schema (validation + default fallback) and
|
|
10796
10858
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11046,7 +11108,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11046
11108
|
avgInferenceTimeMs: number(),
|
|
11047
11109
|
queueDepth: number()
|
|
11048
11110
|
});
|
|
11049
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11111
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11112
|
+
handle: FrameHandleSchema,
|
|
11113
|
+
bbox: NativeCropBboxSchema,
|
|
11114
|
+
maxWidth: number().int().positive().optional()
|
|
11115
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11116
|
+
deviceId: number(),
|
|
11117
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11118
|
+
cropJpeg: string().optional(),
|
|
11119
|
+
parent: DetailParentSchema,
|
|
11120
|
+
steps: array(string()).optional()
|
|
11121
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11050
11122
|
object({
|
|
11051
11123
|
detected: boolean(),
|
|
11052
11124
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15214,7 +15286,17 @@ var TrackSchema = object({
|
|
|
15214
15286
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15215
15287
|
totalDistance: number(),
|
|
15216
15288
|
state: TrackStateSchema,
|
|
15217
|
-
active: boolean()
|
|
15289
|
+
active: boolean(),
|
|
15290
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15291
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15292
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15293
|
+
importance: number().optional(),
|
|
15294
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15295
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15296
|
+
bestEventId: string().optional(),
|
|
15297
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15298
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15299
|
+
importanceReason: string().optional()
|
|
15218
15300
|
});
|
|
15219
15301
|
var BaseEventFields = {
|
|
15220
15302
|
id: string(),
|
|
@@ -15279,8 +15361,18 @@ var ObjectEventSchema = object({
|
|
|
15279
15361
|
frameHeight: number().optional(),
|
|
15280
15362
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15281
15363
|
mediaKey: string().optional(),
|
|
15364
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15365
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15366
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15367
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15368
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15369
|
+
keyFrameMediaKey: string().optional(),
|
|
15282
15370
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15283
|
-
mediaUrl: string().optional()
|
|
15371
|
+
mediaUrl: string().optional(),
|
|
15372
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15373
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15374
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15375
|
+
importance: number().optional()
|
|
15284
15376
|
});
|
|
15285
15377
|
var AudioEventSchema = object({
|
|
15286
15378
|
...BaseEventFields,
|
|
@@ -15304,7 +15396,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15304
15396
|
"fullFrame",
|
|
15305
15397
|
"fullFrameBoxed",
|
|
15306
15398
|
"faceCrop",
|
|
15307
|
-
"plateCrop"
|
|
15399
|
+
"plateCrop",
|
|
15400
|
+
"keyFrame"
|
|
15308
15401
|
]);
|
|
15309
15402
|
var MediaFileSchema = object({
|
|
15310
15403
|
key: string(),
|
|
@@ -15325,6 +15418,32 @@ var DeviceEventQueryInput = object({
|
|
|
15325
15418
|
projection: _enum(["full", "slim"]).optional()
|
|
15326
15419
|
});
|
|
15327
15420
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15421
|
+
var KeyEventQueryInput = object({
|
|
15422
|
+
deviceId: number(),
|
|
15423
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15424
|
+
since: number(),
|
|
15425
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15426
|
+
until: number(),
|
|
15427
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15428
|
+
/** Drop tracks scoring below this importance. */
|
|
15429
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15430
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15431
|
+
classFilter: string().optional()
|
|
15432
|
+
});
|
|
15433
|
+
var KeyEventSchema = object({
|
|
15434
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15435
|
+
id: string(),
|
|
15436
|
+
trackId: string(),
|
|
15437
|
+
/** Track start time (firstSeen). */
|
|
15438
|
+
timestamp: number(),
|
|
15439
|
+
className: string(),
|
|
15440
|
+
label: string().optional(),
|
|
15441
|
+
importance: number(),
|
|
15442
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15443
|
+
bestEventId: string(),
|
|
15444
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15445
|
+
windowMs: number().optional()
|
|
15446
|
+
});
|
|
15328
15447
|
var TrackedDetectionSchema = object({
|
|
15329
15448
|
trackId: string(),
|
|
15330
15449
|
className: string(),
|
|
@@ -15354,7 +15473,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15354
15473
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15355
15474
|
kind: "mutation",
|
|
15356
15475
|
auth: "admin"
|
|
15357
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15476
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15358
15477
|
deviceId: number(),
|
|
15359
15478
|
since: number(),
|
|
15360
15479
|
until: number(),
|
|
@@ -16121,7 +16240,12 @@ DeviceType.Camera, method(object({
|
|
|
16121
16240
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
16122
16241
|
kind: "mutation",
|
|
16123
16242
|
auth: "admin"
|
|
16124
|
-
})
|
|
16243
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16244
|
+
deviceId: number(),
|
|
16245
|
+
lastCapturedAt: number().nullable(),
|
|
16246
|
+
cacheAgeMs: number().nullable(),
|
|
16247
|
+
etag: string().nullable()
|
|
16248
|
+
})));
|
|
16125
16249
|
/**
|
|
16126
16250
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
16127
16251
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16372,10 +16496,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16372
16496
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16373
16497
|
* the assertion, bumps the credential counter, returns ok.
|
|
16374
16498
|
*
|
|
16499
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16500
|
+
* passkey IS the primary factor, no password leg:
|
|
16501
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16502
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16503
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16504
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16505
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16506
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16507
|
+
* resolves the credential by the response's credential id,
|
|
16508
|
+
* verifies the assertion against the stored challenge + that
|
|
16509
|
+
* credential's public key/counter, and returns the OWNING
|
|
16510
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16511
|
+
*
|
|
16375
16512
|
* 3. Management:
|
|
16376
16513
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16377
16514
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16378
16515
|
*
|
|
16516
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16517
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16518
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16519
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16520
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16521
|
+
* row ⇒ `enabled: false`).
|
|
16522
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16523
|
+
* the providing addon beside its credentials.
|
|
16524
|
+
*
|
|
16379
16525
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16380
16526
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16381
16527
|
* the cap to non-admins.
|
|
@@ -16418,6 +16564,17 @@ method(object({
|
|
|
16418
16564
|
}), object({ verified: boolean() }), {
|
|
16419
16565
|
kind: "mutation",
|
|
16420
16566
|
access: "view"
|
|
16567
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16568
|
+
kind: "mutation",
|
|
16569
|
+
access: "view"
|
|
16570
|
+
}), method(object({
|
|
16571
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16572
|
+
response: record(string(), unknown()) }), object({
|
|
16573
|
+
verified: boolean(),
|
|
16574
|
+
userId: string().nullable()
|
|
16575
|
+
}), {
|
|
16576
|
+
kind: "mutation",
|
|
16577
|
+
access: "view"
|
|
16421
16578
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16422
16579
|
userId: string(),
|
|
16423
16580
|
credentialId: string()
|
|
@@ -16425,6 +16582,13 @@ method(object({
|
|
|
16425
16582
|
kind: "mutation",
|
|
16426
16583
|
auth: "admin",
|
|
16427
16584
|
access: "delete"
|
|
16585
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16586
|
+
userId: string(),
|
|
16587
|
+
enabled: boolean()
|
|
16588
|
+
}), object({ success: literal(true) }), {
|
|
16589
|
+
kind: "mutation",
|
|
16590
|
+
auth: "admin",
|
|
16591
|
+
access: "create"
|
|
16428
16592
|
});
|
|
16429
16593
|
/**
|
|
16430
16594
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17226,7 +17390,17 @@ var FaceInfoSchema = object({
|
|
|
17226
17390
|
recognizedIdentityId: string().optional(),
|
|
17227
17391
|
identityName: string().optional(),
|
|
17228
17392
|
assigned: boolean(),
|
|
17229
|
-
base64: string().optional()
|
|
17393
|
+
base64: string().optional(),
|
|
17394
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17395
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17396
|
+
* legacy rows written before design B. */
|
|
17397
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17398
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17399
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17400
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17401
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17402
|
+
* back to the inline `base64` face crop. */
|
|
17403
|
+
keyFrameMediaKey: string().optional()
|
|
17230
17404
|
});
|
|
17231
17405
|
var FaceFilterEnum = _enum([
|
|
17232
17406
|
"unassigned",
|
|
@@ -21345,6 +21519,12 @@ Object.freeze({
|
|
|
21345
21519
|
addonId: null,
|
|
21346
21520
|
access: "view"
|
|
21347
21521
|
},
|
|
21522
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21523
|
+
capName: "pipeline-analytics",
|
|
21524
|
+
capScope: "device",
|
|
21525
|
+
addonId: null,
|
|
21526
|
+
access: "view"
|
|
21527
|
+
},
|
|
21348
21528
|
"pipelineAnalytics.getMotionEvents": {
|
|
21349
21529
|
capName: "pipeline-analytics",
|
|
21350
21530
|
capScope: "device",
|
|
@@ -21873,12 +22053,24 @@ Object.freeze({
|
|
|
21873
22053
|
addonId: null,
|
|
21874
22054
|
access: "view"
|
|
21875
22055
|
},
|
|
22056
|
+
"pipelineRunner.getNativeCrop": {
|
|
22057
|
+
capName: "pipeline-runner",
|
|
22058
|
+
capScope: "system",
|
|
22059
|
+
addonId: null,
|
|
22060
|
+
access: "view"
|
|
22061
|
+
},
|
|
21876
22062
|
"pipelineRunner.reportMotion": {
|
|
21877
22063
|
capName: "pipeline-runner",
|
|
21878
22064
|
capScope: "system",
|
|
21879
22065
|
addonId: null,
|
|
21880
22066
|
access: "create"
|
|
21881
22067
|
},
|
|
22068
|
+
"pipelineRunner.runDetailSubtree": {
|
|
22069
|
+
capName: "pipeline-runner",
|
|
22070
|
+
capScope: "system",
|
|
22071
|
+
addonId: null,
|
|
22072
|
+
access: "create"
|
|
22073
|
+
},
|
|
21882
22074
|
"plateGallery.correctPlateText": {
|
|
21883
22075
|
capName: "plate-gallery",
|
|
21884
22076
|
capScope: "system",
|
|
@@ -22239,6 +22431,12 @@ Object.freeze({
|
|
|
22239
22431
|
addonId: null,
|
|
22240
22432
|
access: "view"
|
|
22241
22433
|
},
|
|
22434
|
+
"snapshot.getSnapshotOverview": {
|
|
22435
|
+
capName: "snapshot",
|
|
22436
|
+
capScope: "device",
|
|
22437
|
+
addonId: null,
|
|
22438
|
+
access: "view"
|
|
22439
|
+
},
|
|
22242
22440
|
"snapshot.invalidateCache": {
|
|
22243
22441
|
capName: "snapshot",
|
|
22244
22442
|
capScope: "device",
|
|
@@ -22917,6 +23115,12 @@ Object.freeze({
|
|
|
22917
23115
|
addonId: null,
|
|
22918
23116
|
access: "view"
|
|
22919
23117
|
},
|
|
23118
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23119
|
+
capName: "user-passkeys",
|
|
23120
|
+
capScope: "system",
|
|
23121
|
+
addonId: null,
|
|
23122
|
+
access: "view"
|
|
23123
|
+
},
|
|
22920
23124
|
"userPasskeys.beginRegistration": {
|
|
22921
23125
|
capName: "user-passkeys",
|
|
22922
23126
|
capScope: "system",
|
|
@@ -22929,12 +23133,24 @@ Object.freeze({
|
|
|
22929
23133
|
addonId: null,
|
|
22930
23134
|
access: "view"
|
|
22931
23135
|
},
|
|
23136
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23137
|
+
capName: "user-passkeys",
|
|
23138
|
+
capScope: "system",
|
|
23139
|
+
addonId: null,
|
|
23140
|
+
access: "view"
|
|
23141
|
+
},
|
|
22932
23142
|
"userPasskeys.finishRegistration": {
|
|
22933
23143
|
capName: "user-passkeys",
|
|
22934
23144
|
capScope: "system",
|
|
22935
23145
|
addonId: null,
|
|
22936
23146
|
access: "create"
|
|
22937
23147
|
},
|
|
23148
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23149
|
+
capName: "user-passkeys",
|
|
23150
|
+
capScope: "system",
|
|
23151
|
+
addonId: null,
|
|
23152
|
+
access: "view"
|
|
23153
|
+
},
|
|
22938
23154
|
"userPasskeys.listPasskeys": {
|
|
22939
23155
|
capName: "user-passkeys",
|
|
22940
23156
|
capScope: "system",
|
|
@@ -22947,6 +23163,12 @@ Object.freeze({
|
|
|
22947
23163
|
addonId: null,
|
|
22948
23164
|
access: "delete"
|
|
22949
23165
|
},
|
|
23166
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23167
|
+
capName: "user-passkeys",
|
|
23168
|
+
capScope: "system",
|
|
23169
|
+
addonId: null,
|
|
23170
|
+
access: "create"
|
|
23171
|
+
},
|
|
22950
23172
|
"vacuumControl.locate": {
|
|
22951
23173
|
capName: "vacuum-control",
|
|
22952
23174
|
capScope: "device",
|