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