@camstack/addon-mqtt-broker 1.1.20 → 1.1.22
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/mqtt-broker.addon.js +231 -9
- package/dist/mqtt-broker.addon.mjs +231 -9
- package/package.json +1 -1
|
@@ -4673,7 +4673,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4673
4673
|
return inst;
|
|
4674
4674
|
}
|
|
4675
4675
|
//#endregion
|
|
4676
|
-
//#region ../types/dist/sleep-
|
|
4676
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4677
4677
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4678
4678
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4679
4679
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6777,6 +6777,18 @@ function method(input, output, options) {
|
|
|
6777
6777
|
timeoutMs: options?.timeoutMs
|
|
6778
6778
|
};
|
|
6779
6779
|
}
|
|
6780
|
+
/**
|
|
6781
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6782
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6783
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6784
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6785
|
+
*/
|
|
6786
|
+
function systemMethod(input, output, options) {
|
|
6787
|
+
return {
|
|
6788
|
+
...method(input, output, options),
|
|
6789
|
+
systemOnly: true
|
|
6790
|
+
};
|
|
6791
|
+
}
|
|
6780
6792
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6781
6793
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6782
6794
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10515,6 +10527,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10515
10527
|
defaultModelId: string(),
|
|
10516
10528
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10517
10529
|
enabledByDefault: boolean().optional(),
|
|
10530
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10518
10531
|
defaultConfidence: number(),
|
|
10519
10532
|
group: string().optional(),
|
|
10520
10533
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10696,7 +10709,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10696
10709
|
image: _instanceof(Uint8Array).optional(),
|
|
10697
10710
|
referenceImage: string().optional(),
|
|
10698
10711
|
deviceId: number().optional(),
|
|
10699
|
-
sessionId: string().optional()
|
|
10712
|
+
sessionId: string().optional(),
|
|
10713
|
+
/**
|
|
10714
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10715
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10716
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10717
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10718
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10719
|
+
*/
|
|
10720
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10700
10721
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10701
10722
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10702
10723
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10821,6 +10842,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10821
10842
|
auth: "admin"
|
|
10822
10843
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10823
10844
|
/**
|
|
10845
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10846
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10847
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10848
|
+
* dims — no native resolution to plumb.
|
|
10849
|
+
*/
|
|
10850
|
+
var NativeCropBboxSchema = object({
|
|
10851
|
+
x: number(),
|
|
10852
|
+
y: number(),
|
|
10853
|
+
w: number(),
|
|
10854
|
+
h: number()
|
|
10855
|
+
});
|
|
10856
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10857
|
+
var NativeCropResultSchema = object({
|
|
10858
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10859
|
+
bytes: _instanceof(Uint8Array),
|
|
10860
|
+
width: number().int().positive(),
|
|
10861
|
+
height: number().int().positive()
|
|
10862
|
+
});
|
|
10863
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10864
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10865
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10866
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10867
|
+
* normalized [0,1] convention). */
|
|
10868
|
+
var DetailParentSchema = object({
|
|
10869
|
+
bbox: NativeCropBboxSchema,
|
|
10870
|
+
className: string()
|
|
10871
|
+
});
|
|
10872
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10873
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10874
|
+
* single tracked detection. */
|
|
10875
|
+
var DetailResultSchema = object({
|
|
10876
|
+
stepId: string(),
|
|
10877
|
+
className: string(),
|
|
10878
|
+
score: number(),
|
|
10879
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10880
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10881
|
+
embedding: string().optional(),
|
|
10882
|
+
label: string().optional(),
|
|
10883
|
+
alignedCropJpeg: string().optional()
|
|
10884
|
+
});
|
|
10885
|
+
/**
|
|
10824
10886
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10825
10887
|
* by both the Zod data schema (validation + default fallback) and
|
|
10826
10888
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11076,7 +11138,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11076
11138
|
avgInferenceTimeMs: number(),
|
|
11077
11139
|
queueDepth: number()
|
|
11078
11140
|
});
|
|
11079
|
-
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())
|
|
11141
|
+
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({
|
|
11142
|
+
handle: FrameHandleSchema,
|
|
11143
|
+
bbox: NativeCropBboxSchema,
|
|
11144
|
+
maxWidth: number().int().positive().optional()
|
|
11145
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11146
|
+
deviceId: number(),
|
|
11147
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11148
|
+
cropJpeg: string().optional(),
|
|
11149
|
+
parent: DetailParentSchema,
|
|
11150
|
+
steps: array(string()).optional()
|
|
11151
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11080
11152
|
object({
|
|
11081
11153
|
detected: boolean(),
|
|
11082
11154
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15182,7 +15254,17 @@ var TrackSchema = object({
|
|
|
15182
15254
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15183
15255
|
totalDistance: number(),
|
|
15184
15256
|
state: TrackStateSchema,
|
|
15185
|
-
active: boolean()
|
|
15257
|
+
active: boolean(),
|
|
15258
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15259
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15260
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15261
|
+
importance: number().optional(),
|
|
15262
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15263
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15264
|
+
bestEventId: string().optional(),
|
|
15265
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15266
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15267
|
+
importanceReason: string().optional()
|
|
15186
15268
|
});
|
|
15187
15269
|
var BaseEventFields = {
|
|
15188
15270
|
id: string(),
|
|
@@ -15247,8 +15329,18 @@ var ObjectEventSchema = object({
|
|
|
15247
15329
|
frameHeight: number().optional(),
|
|
15248
15330
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15249
15331
|
mediaKey: string().optional(),
|
|
15332
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15333
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15334
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15335
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15336
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15337
|
+
keyFrameMediaKey: string().optional(),
|
|
15250
15338
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15251
|
-
mediaUrl: string().optional()
|
|
15339
|
+
mediaUrl: string().optional(),
|
|
15340
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15341
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15342
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15343
|
+
importance: number().optional()
|
|
15252
15344
|
});
|
|
15253
15345
|
var AudioEventSchema = object({
|
|
15254
15346
|
...BaseEventFields,
|
|
@@ -15272,7 +15364,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15272
15364
|
"fullFrame",
|
|
15273
15365
|
"fullFrameBoxed",
|
|
15274
15366
|
"faceCrop",
|
|
15275
|
-
"plateCrop"
|
|
15367
|
+
"plateCrop",
|
|
15368
|
+
"keyFrame"
|
|
15276
15369
|
]);
|
|
15277
15370
|
var MediaFileSchema = object({
|
|
15278
15371
|
key: string(),
|
|
@@ -15293,6 +15386,32 @@ var DeviceEventQueryInput = object({
|
|
|
15293
15386
|
projection: _enum(["full", "slim"]).optional()
|
|
15294
15387
|
});
|
|
15295
15388
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15389
|
+
var KeyEventQueryInput = object({
|
|
15390
|
+
deviceId: number(),
|
|
15391
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15392
|
+
since: number(),
|
|
15393
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15394
|
+
until: number(),
|
|
15395
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15396
|
+
/** Drop tracks scoring below this importance. */
|
|
15397
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15398
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15399
|
+
classFilter: string().optional()
|
|
15400
|
+
});
|
|
15401
|
+
var KeyEventSchema = object({
|
|
15402
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15403
|
+
id: string(),
|
|
15404
|
+
trackId: string(),
|
|
15405
|
+
/** Track start time (firstSeen). */
|
|
15406
|
+
timestamp: number(),
|
|
15407
|
+
className: string(),
|
|
15408
|
+
label: string().optional(),
|
|
15409
|
+
importance: number(),
|
|
15410
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15411
|
+
bestEventId: string(),
|
|
15412
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15413
|
+
windowMs: number().optional()
|
|
15414
|
+
});
|
|
15296
15415
|
var TrackedDetectionSchema = object({
|
|
15297
15416
|
trackId: string(),
|
|
15298
15417
|
className: string(),
|
|
@@ -15322,7 +15441,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15322
15441
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15323
15442
|
kind: "mutation",
|
|
15324
15443
|
auth: "admin"
|
|
15325
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15444
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15326
15445
|
deviceId: number(),
|
|
15327
15446
|
since: number(),
|
|
15328
15447
|
until: number(),
|
|
@@ -16089,7 +16208,12 @@ DeviceType.Camera, method(object({
|
|
|
16089
16208
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
16090
16209
|
kind: "mutation",
|
|
16091
16210
|
auth: "admin"
|
|
16092
|
-
})
|
|
16211
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16212
|
+
deviceId: number(),
|
|
16213
|
+
lastCapturedAt: number().nullable(),
|
|
16214
|
+
cacheAgeMs: number().nullable(),
|
|
16215
|
+
etag: string().nullable()
|
|
16216
|
+
})));
|
|
16093
16217
|
/**
|
|
16094
16218
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
16095
16219
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16340,10 +16464,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16340
16464
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16341
16465
|
* the assertion, bumps the credential counter, returns ok.
|
|
16342
16466
|
*
|
|
16467
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16468
|
+
* passkey IS the primary factor, no password leg:
|
|
16469
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16470
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16471
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16472
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16473
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16474
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16475
|
+
* resolves the credential by the response's credential id,
|
|
16476
|
+
* verifies the assertion against the stored challenge + that
|
|
16477
|
+
* credential's public key/counter, and returns the OWNING
|
|
16478
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16479
|
+
*
|
|
16343
16480
|
* 3. Management:
|
|
16344
16481
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16345
16482
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16346
16483
|
*
|
|
16484
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16485
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16486
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16487
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16488
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16489
|
+
* row ⇒ `enabled: false`).
|
|
16490
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16491
|
+
* the providing addon beside its credentials.
|
|
16492
|
+
*
|
|
16347
16493
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16348
16494
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16349
16495
|
* the cap to non-admins.
|
|
@@ -16386,6 +16532,17 @@ method(object({
|
|
|
16386
16532
|
}), object({ verified: boolean() }), {
|
|
16387
16533
|
kind: "mutation",
|
|
16388
16534
|
access: "view"
|
|
16535
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16536
|
+
kind: "mutation",
|
|
16537
|
+
access: "view"
|
|
16538
|
+
}), method(object({
|
|
16539
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16540
|
+
response: record(string(), unknown()) }), object({
|
|
16541
|
+
verified: boolean(),
|
|
16542
|
+
userId: string().nullable()
|
|
16543
|
+
}), {
|
|
16544
|
+
kind: "mutation",
|
|
16545
|
+
access: "view"
|
|
16389
16546
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16390
16547
|
userId: string(),
|
|
16391
16548
|
credentialId: string()
|
|
@@ -16393,6 +16550,13 @@ method(object({
|
|
|
16393
16550
|
kind: "mutation",
|
|
16394
16551
|
auth: "admin",
|
|
16395
16552
|
access: "delete"
|
|
16553
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16554
|
+
userId: string(),
|
|
16555
|
+
enabled: boolean()
|
|
16556
|
+
}), object({ success: literal(true) }), {
|
|
16557
|
+
kind: "mutation",
|
|
16558
|
+
auth: "admin",
|
|
16559
|
+
access: "create"
|
|
16396
16560
|
});
|
|
16397
16561
|
/**
|
|
16398
16562
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17194,7 +17358,17 @@ var FaceInfoSchema = object({
|
|
|
17194
17358
|
recognizedIdentityId: string().optional(),
|
|
17195
17359
|
identityName: string().optional(),
|
|
17196
17360
|
assigned: boolean(),
|
|
17197
|
-
base64: string().optional()
|
|
17361
|
+
base64: string().optional(),
|
|
17362
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17363
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17364
|
+
* legacy rows written before design B. */
|
|
17365
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17366
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17367
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17368
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17369
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17370
|
+
* back to the inline `base64` face crop. */
|
|
17371
|
+
keyFrameMediaKey: string().optional()
|
|
17198
17372
|
});
|
|
17199
17373
|
var FaceFilterEnum = _enum([
|
|
17200
17374
|
"unassigned",
|
|
@@ -21313,6 +21487,12 @@ Object.freeze({
|
|
|
21313
21487
|
addonId: null,
|
|
21314
21488
|
access: "view"
|
|
21315
21489
|
},
|
|
21490
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21491
|
+
capName: "pipeline-analytics",
|
|
21492
|
+
capScope: "device",
|
|
21493
|
+
addonId: null,
|
|
21494
|
+
access: "view"
|
|
21495
|
+
},
|
|
21316
21496
|
"pipelineAnalytics.getMotionEvents": {
|
|
21317
21497
|
capName: "pipeline-analytics",
|
|
21318
21498
|
capScope: "device",
|
|
@@ -21841,12 +22021,24 @@ Object.freeze({
|
|
|
21841
22021
|
addonId: null,
|
|
21842
22022
|
access: "view"
|
|
21843
22023
|
},
|
|
22024
|
+
"pipelineRunner.getNativeCrop": {
|
|
22025
|
+
capName: "pipeline-runner",
|
|
22026
|
+
capScope: "system",
|
|
22027
|
+
addonId: null,
|
|
22028
|
+
access: "view"
|
|
22029
|
+
},
|
|
21844
22030
|
"pipelineRunner.reportMotion": {
|
|
21845
22031
|
capName: "pipeline-runner",
|
|
21846
22032
|
capScope: "system",
|
|
21847
22033
|
addonId: null,
|
|
21848
22034
|
access: "create"
|
|
21849
22035
|
},
|
|
22036
|
+
"pipelineRunner.runDetailSubtree": {
|
|
22037
|
+
capName: "pipeline-runner",
|
|
22038
|
+
capScope: "system",
|
|
22039
|
+
addonId: null,
|
|
22040
|
+
access: "create"
|
|
22041
|
+
},
|
|
21850
22042
|
"plateGallery.correctPlateText": {
|
|
21851
22043
|
capName: "plate-gallery",
|
|
21852
22044
|
capScope: "system",
|
|
@@ -22207,6 +22399,12 @@ Object.freeze({
|
|
|
22207
22399
|
addonId: null,
|
|
22208
22400
|
access: "view"
|
|
22209
22401
|
},
|
|
22402
|
+
"snapshot.getSnapshotOverview": {
|
|
22403
|
+
capName: "snapshot",
|
|
22404
|
+
capScope: "device",
|
|
22405
|
+
addonId: null,
|
|
22406
|
+
access: "view"
|
|
22407
|
+
},
|
|
22210
22408
|
"snapshot.invalidateCache": {
|
|
22211
22409
|
capName: "snapshot",
|
|
22212
22410
|
capScope: "device",
|
|
@@ -22885,6 +23083,12 @@ Object.freeze({
|
|
|
22885
23083
|
addonId: null,
|
|
22886
23084
|
access: "view"
|
|
22887
23085
|
},
|
|
23086
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23087
|
+
capName: "user-passkeys",
|
|
23088
|
+
capScope: "system",
|
|
23089
|
+
addonId: null,
|
|
23090
|
+
access: "view"
|
|
23091
|
+
},
|
|
22888
23092
|
"userPasskeys.beginRegistration": {
|
|
22889
23093
|
capName: "user-passkeys",
|
|
22890
23094
|
capScope: "system",
|
|
@@ -22897,12 +23101,24 @@ Object.freeze({
|
|
|
22897
23101
|
addonId: null,
|
|
22898
23102
|
access: "view"
|
|
22899
23103
|
},
|
|
23104
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23105
|
+
capName: "user-passkeys",
|
|
23106
|
+
capScope: "system",
|
|
23107
|
+
addonId: null,
|
|
23108
|
+
access: "view"
|
|
23109
|
+
},
|
|
22900
23110
|
"userPasskeys.finishRegistration": {
|
|
22901
23111
|
capName: "user-passkeys",
|
|
22902
23112
|
capScope: "system",
|
|
22903
23113
|
addonId: null,
|
|
22904
23114
|
access: "create"
|
|
22905
23115
|
},
|
|
23116
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23117
|
+
capName: "user-passkeys",
|
|
23118
|
+
capScope: "system",
|
|
23119
|
+
addonId: null,
|
|
23120
|
+
access: "view"
|
|
23121
|
+
},
|
|
22906
23122
|
"userPasskeys.listPasskeys": {
|
|
22907
23123
|
capName: "user-passkeys",
|
|
22908
23124
|
capScope: "system",
|
|
@@ -22915,6 +23131,12 @@ Object.freeze({
|
|
|
22915
23131
|
addonId: null,
|
|
22916
23132
|
access: "delete"
|
|
22917
23133
|
},
|
|
23134
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23135
|
+
capName: "user-passkeys",
|
|
23136
|
+
capScope: "system",
|
|
23137
|
+
addonId: null,
|
|
23138
|
+
access: "create"
|
|
23139
|
+
},
|
|
22918
23140
|
"vacuumControl.locate": {
|
|
22919
23141
|
capName: "vacuum-control",
|
|
22920
23142
|
capScope: "device",
|
|
@@ -4668,7 +4668,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4668
4668
|
return inst;
|
|
4669
4669
|
}
|
|
4670
4670
|
//#endregion
|
|
4671
|
-
//#region ../types/dist/sleep-
|
|
4671
|
+
//#region ../types/dist/sleep-Baang_XW.mjs
|
|
4672
4672
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4673
4673
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4674
4674
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -6772,6 +6772,18 @@ function method(input, output, options) {
|
|
|
6772
6772
|
timeoutMs: options?.timeoutMs
|
|
6773
6773
|
};
|
|
6774
6774
|
}
|
|
6775
|
+
/**
|
|
6776
|
+
* A wrapper/system-only method: served exclusively by the cap's system-level
|
|
6777
|
+
* provider (`InferProvider`), and OPTIONAL on `InferNativeProvider` so per-device
|
|
6778
|
+
* driver natives don't stub out a wrapper concern (e.g. a cross-device cache
|
|
6779
|
+
* overview). The `systemOnly: true` literal is what `InferNativeProvider` keys on.
|
|
6780
|
+
*/
|
|
6781
|
+
function systemMethod(input, output, options) {
|
|
6782
|
+
return {
|
|
6783
|
+
...method(input, output, options),
|
|
6784
|
+
systemOnly: true
|
|
6785
|
+
};
|
|
6786
|
+
}
|
|
6775
6787
|
var StaticDirOutputSchema$1 = object({ staticDir: string() });
|
|
6776
6788
|
var VersionOutputSchema$1 = object({ version: string() });
|
|
6777
6789
|
method(_void(), StaticDirOutputSchema$1), method(_void(), VersionOutputSchema$1);
|
|
@@ -10510,6 +10522,7 @@ var PipelineAddonSchemaSchema = object({
|
|
|
10510
10522
|
defaultModelId: string(),
|
|
10511
10523
|
defaultModelIdByFormat: record(string(), string()).optional(),
|
|
10512
10524
|
enabledByDefault: boolean().optional(),
|
|
10525
|
+
backfillIntoExistingOverrides: boolean().optional(),
|
|
10513
10526
|
defaultConfidence: number(),
|
|
10514
10527
|
group: string().optional(),
|
|
10515
10528
|
configSchema: array(ConfigFieldBridge).readonly().optional()
|
|
@@ -10691,7 +10704,15 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
|
|
|
10691
10704
|
image: _instanceof(Uint8Array).optional(),
|
|
10692
10705
|
referenceImage: string().optional(),
|
|
10693
10706
|
deviceId: number().optional(),
|
|
10694
|
-
sessionId: string().optional()
|
|
10707
|
+
sessionId: string().optional(),
|
|
10708
|
+
/**
|
|
10709
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
10710
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
10711
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
10712
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
10713
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
10714
|
+
*/
|
|
10715
|
+
plane: _enum(["full", "frame"]).optional()
|
|
10695
10716
|
}), PipelineRunResultBridge, { kind: "mutation" }), method(object({
|
|
10696
10717
|
engine: PipelineEngineChoiceSchema.optional(),
|
|
10697
10718
|
steps: array(PipelineStepInputSchema).min(1),
|
|
@@ -10816,6 +10837,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10816
10837
|
auth: "admin"
|
|
10817
10838
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10818
10839
|
/**
|
|
10840
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10841
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10842
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10843
|
+
* dims — no native resolution to plumb.
|
|
10844
|
+
*/
|
|
10845
|
+
var NativeCropBboxSchema = object({
|
|
10846
|
+
x: number(),
|
|
10847
|
+
y: number(),
|
|
10848
|
+
w: number(),
|
|
10849
|
+
h: number()
|
|
10850
|
+
});
|
|
10851
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10852
|
+
var NativeCropResultSchema = object({
|
|
10853
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10854
|
+
bytes: _instanceof(Uint8Array),
|
|
10855
|
+
width: number().int().positive(),
|
|
10856
|
+
height: number().int().positive()
|
|
10857
|
+
});
|
|
10858
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
10859
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
10860
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
10861
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
10862
|
+
* normalized [0,1] convention). */
|
|
10863
|
+
var DetailParentSchema = object({
|
|
10864
|
+
bbox: NativeCropBboxSchema,
|
|
10865
|
+
className: string()
|
|
10866
|
+
});
|
|
10867
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
10868
|
+
* or refined detection produced by running the crop-subtree on a
|
|
10869
|
+
* single tracked detection. */
|
|
10870
|
+
var DetailResultSchema = object({
|
|
10871
|
+
stepId: string(),
|
|
10872
|
+
className: string(),
|
|
10873
|
+
score: number(),
|
|
10874
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
10875
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
10876
|
+
embedding: string().optional(),
|
|
10877
|
+
label: string().optional(),
|
|
10878
|
+
alignedCropJpeg: string().optional()
|
|
10879
|
+
});
|
|
10880
|
+
/**
|
|
10819
10881
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10820
10882
|
* by both the Zod data schema (validation + default fallback) and
|
|
10821
10883
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11071,7 +11133,17 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11071
11133
|
avgInferenceTimeMs: number(),
|
|
11072
11134
|
queueDepth: number()
|
|
11073
11135
|
});
|
|
11074
|
-
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())
|
|
11136
|
+
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({
|
|
11137
|
+
handle: FrameHandleSchema,
|
|
11138
|
+
bbox: NativeCropBboxSchema,
|
|
11139
|
+
maxWidth: number().int().positive().optional()
|
|
11140
|
+
}), NativeCropResultSchema.nullable()), method(object({
|
|
11141
|
+
deviceId: number(),
|
|
11142
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
11143
|
+
cropJpeg: string().optional(),
|
|
11144
|
+
parent: DetailParentSchema,
|
|
11145
|
+
steps: array(string()).optional()
|
|
11146
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" });
|
|
11075
11147
|
object({
|
|
11076
11148
|
detected: boolean(),
|
|
11077
11149
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15177,7 +15249,17 @@ var TrackSchema = object({
|
|
|
15177
15249
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15178
15250
|
totalDistance: number(),
|
|
15179
15251
|
state: TrackStateSchema,
|
|
15180
|
-
active: boolean()
|
|
15252
|
+
active: boolean(),
|
|
15253
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15254
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15255
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15256
|
+
importance: number().optional(),
|
|
15257
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15258
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15259
|
+
bestEventId: string().optional(),
|
|
15260
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15261
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15262
|
+
importanceReason: string().optional()
|
|
15181
15263
|
});
|
|
15182
15264
|
var BaseEventFields = {
|
|
15183
15265
|
id: string(),
|
|
@@ -15242,8 +15324,18 @@ var ObjectEventSchema = object({
|
|
|
15242
15324
|
frameHeight: number().optional(),
|
|
15243
15325
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15244
15326
|
mediaKey: string().optional(),
|
|
15327
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15328
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15329
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15330
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15331
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15332
|
+
keyFrameMediaKey: string().optional(),
|
|
15245
15333
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15246
|
-
mediaUrl: string().optional()
|
|
15334
|
+
mediaUrl: string().optional(),
|
|
15335
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15336
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15337
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15338
|
+
importance: number().optional()
|
|
15247
15339
|
});
|
|
15248
15340
|
var AudioEventSchema = object({
|
|
15249
15341
|
...BaseEventFields,
|
|
@@ -15267,7 +15359,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15267
15359
|
"fullFrame",
|
|
15268
15360
|
"fullFrameBoxed",
|
|
15269
15361
|
"faceCrop",
|
|
15270
|
-
"plateCrop"
|
|
15362
|
+
"plateCrop",
|
|
15363
|
+
"keyFrame"
|
|
15271
15364
|
]);
|
|
15272
15365
|
var MediaFileSchema = object({
|
|
15273
15366
|
key: string(),
|
|
@@ -15288,6 +15381,32 @@ var DeviceEventQueryInput = object({
|
|
|
15288
15381
|
projection: _enum(["full", "slim"]).optional()
|
|
15289
15382
|
});
|
|
15290
15383
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15384
|
+
var KeyEventQueryInput = object({
|
|
15385
|
+
deviceId: number(),
|
|
15386
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15387
|
+
since: number(),
|
|
15388
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15389
|
+
until: number(),
|
|
15390
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15391
|
+
/** Drop tracks scoring below this importance. */
|
|
15392
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15393
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15394
|
+
classFilter: string().optional()
|
|
15395
|
+
});
|
|
15396
|
+
var KeyEventSchema = object({
|
|
15397
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15398
|
+
id: string(),
|
|
15399
|
+
trackId: string(),
|
|
15400
|
+
/** Track start time (firstSeen). */
|
|
15401
|
+
timestamp: number(),
|
|
15402
|
+
className: string(),
|
|
15403
|
+
label: string().optional(),
|
|
15404
|
+
importance: number(),
|
|
15405
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15406
|
+
bestEventId: string(),
|
|
15407
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15408
|
+
windowMs: number().optional()
|
|
15409
|
+
});
|
|
15291
15410
|
var TrackedDetectionSchema = object({
|
|
15292
15411
|
trackId: string(),
|
|
15293
15412
|
className: string(),
|
|
@@ -15317,7 +15436,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
15317
15436
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
15318
15437
|
kind: "mutation",
|
|
15319
15438
|
auth: "admin"
|
|
15320
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
15439
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
15321
15440
|
deviceId: number(),
|
|
15322
15441
|
since: number(),
|
|
15323
15442
|
until: number(),
|
|
@@ -16084,7 +16203,12 @@ DeviceType.Camera, method(object({
|
|
|
16084
16203
|
}), SnapshotImageSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
16085
16204
|
kind: "mutation",
|
|
16086
16205
|
auth: "admin"
|
|
16087
|
-
})
|
|
16206
|
+
}), systemMethod(object({ deviceIds: array(number()).min(1).max(200) }), array(object({
|
|
16207
|
+
deviceId: number(),
|
|
16208
|
+
lastCapturedAt: number().nullable(),
|
|
16209
|
+
cacheAgeMs: number().nullable(),
|
|
16210
|
+
etag: string().nullable()
|
|
16211
|
+
})));
|
|
16088
16212
|
/**
|
|
16089
16213
|
* `sso-bridge` — internal hub-only cap that lets SSO-style auth
|
|
16090
16214
|
* providers (OIDC, SAML, magic-link, …) mint an HMAC-signed token
|
|
@@ -16335,10 +16459,32 @@ method(_void(), array(TurnServerSchema).readonly());
|
|
|
16335
16459
|
* b. `finishAuthentication({userId, response})` → server verifies
|
|
16336
16460
|
* the assertion, bumps the credential counter, returns ok.
|
|
16337
16461
|
*
|
|
16462
|
+
* 2b. Usernameless (discoverable-credential) authentication — the
|
|
16463
|
+
* passkey IS the primary factor, no password leg:
|
|
16464
|
+
* a. `beginDiscoverableAuthentication({})` → assertion options with
|
|
16465
|
+
* EMPTY `allowCredentials` (the browser offers every resident
|
|
16466
|
+
* passkey it holds for this RP) + `userVerification: 'required'`
|
|
16467
|
+
* (the passkey replaces both factors, so UV is mandatory).
|
|
16468
|
+
* The challenge is stored server-side, NOT bound to any user.
|
|
16469
|
+
* b. `finishDiscoverableAuthentication({response})` → the provider
|
|
16470
|
+
* resolves the credential by the response's credential id,
|
|
16471
|
+
* verifies the assertion against the stored challenge + that
|
|
16472
|
+
* credential's public key/counter, and returns the OWNING
|
|
16473
|
+
* `userId` — the caller (core auth router) mints the session.
|
|
16474
|
+
*
|
|
16338
16475
|
* 3. Management:
|
|
16339
16476
|
* - `listPasskeys({userId})` — enumerate user's enrolled credentials.
|
|
16340
16477
|
* - `removePasskey({userId, credentialId})` — revoke one credential.
|
|
16341
16478
|
*
|
|
16479
|
+
* 4. Second-factor preference (opt-in, default OFF):
|
|
16480
|
+
* Enrolling a passkey only enables passkey-FIRST sign-in. It is
|
|
16481
|
+
* demanded as a second factor after a password login ONLY when the
|
|
16482
|
+
* user explicitly opts in via `setSecondFactorPreference`.
|
|
16483
|
+
* - `getSecondFactorPreference({userId})` → `{ enabled }` (missing
|
|
16484
|
+
* row ⇒ `enabled: false`).
|
|
16485
|
+
* - `setSecondFactorPreference({userId, enabled})` — persisted by
|
|
16486
|
+
* the providing addon beside its credentials.
|
|
16487
|
+
*
|
|
16342
16488
|
* Challenges are short-lived (5 min, in-memory). The cap is internal —
|
|
16343
16489
|
* the admin-ui composes the begin/finish round-trip and never exposes
|
|
16344
16490
|
* the cap to non-admins.
|
|
@@ -16381,6 +16527,17 @@ method(object({
|
|
|
16381
16527
|
}), object({ verified: boolean() }), {
|
|
16382
16528
|
kind: "mutation",
|
|
16383
16529
|
access: "view"
|
|
16530
|
+
}), method(object({}), object({ optionsJSON: record(string(), unknown()) }), {
|
|
16531
|
+
kind: "mutation",
|
|
16532
|
+
access: "view"
|
|
16533
|
+
}), method(object({
|
|
16534
|
+
/** AuthenticationResponseJSON from the browser. */
|
|
16535
|
+
response: record(string(), unknown()) }), object({
|
|
16536
|
+
verified: boolean(),
|
|
16537
|
+
userId: string().nullable()
|
|
16538
|
+
}), {
|
|
16539
|
+
kind: "mutation",
|
|
16540
|
+
access: "view"
|
|
16384
16541
|
}), method(object({ userId: string() }), array(PasskeySummarySchema), { auth: "admin" }), method(object({
|
|
16385
16542
|
userId: string(),
|
|
16386
16543
|
credentialId: string()
|
|
@@ -16388,6 +16545,13 @@ method(object({
|
|
|
16388
16545
|
kind: "mutation",
|
|
16389
16546
|
auth: "admin",
|
|
16390
16547
|
access: "delete"
|
|
16548
|
+
}), method(object({ userId: string() }), object({ enabled: boolean() }), { auth: "admin" }), method(object({
|
|
16549
|
+
userId: string(),
|
|
16550
|
+
enabled: boolean()
|
|
16551
|
+
}), object({ success: literal(true) }), {
|
|
16552
|
+
kind: "mutation",
|
|
16553
|
+
auth: "admin",
|
|
16554
|
+
access: "create"
|
|
16391
16555
|
});
|
|
16392
16556
|
/**
|
|
16393
16557
|
* `videoclips` — the unified, navigable-clip surface for a camera.
|
|
@@ -17189,7 +17353,17 @@ var FaceInfoSchema = object({
|
|
|
17189
17353
|
recognizedIdentityId: string().optional(),
|
|
17190
17354
|
identityName: string().optional(),
|
|
17191
17355
|
assigned: boolean(),
|
|
17192
|
-
base64: string().optional()
|
|
17356
|
+
base64: string().optional(),
|
|
17357
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17358
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17359
|
+
* legacy rows written before design B. */
|
|
17360
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17361
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17362
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17363
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17364
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17365
|
+
* back to the inline `base64` face crop. */
|
|
17366
|
+
keyFrameMediaKey: string().optional()
|
|
17193
17367
|
});
|
|
17194
17368
|
var FaceFilterEnum = _enum([
|
|
17195
17369
|
"unassigned",
|
|
@@ -21308,6 +21482,12 @@ Object.freeze({
|
|
|
21308
21482
|
addonId: null,
|
|
21309
21483
|
access: "view"
|
|
21310
21484
|
},
|
|
21485
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21486
|
+
capName: "pipeline-analytics",
|
|
21487
|
+
capScope: "device",
|
|
21488
|
+
addonId: null,
|
|
21489
|
+
access: "view"
|
|
21490
|
+
},
|
|
21311
21491
|
"pipelineAnalytics.getMotionEvents": {
|
|
21312
21492
|
capName: "pipeline-analytics",
|
|
21313
21493
|
capScope: "device",
|
|
@@ -21836,12 +22016,24 @@ Object.freeze({
|
|
|
21836
22016
|
addonId: null,
|
|
21837
22017
|
access: "view"
|
|
21838
22018
|
},
|
|
22019
|
+
"pipelineRunner.getNativeCrop": {
|
|
22020
|
+
capName: "pipeline-runner",
|
|
22021
|
+
capScope: "system",
|
|
22022
|
+
addonId: null,
|
|
22023
|
+
access: "view"
|
|
22024
|
+
},
|
|
21839
22025
|
"pipelineRunner.reportMotion": {
|
|
21840
22026
|
capName: "pipeline-runner",
|
|
21841
22027
|
capScope: "system",
|
|
21842
22028
|
addonId: null,
|
|
21843
22029
|
access: "create"
|
|
21844
22030
|
},
|
|
22031
|
+
"pipelineRunner.runDetailSubtree": {
|
|
22032
|
+
capName: "pipeline-runner",
|
|
22033
|
+
capScope: "system",
|
|
22034
|
+
addonId: null,
|
|
22035
|
+
access: "create"
|
|
22036
|
+
},
|
|
21845
22037
|
"plateGallery.correctPlateText": {
|
|
21846
22038
|
capName: "plate-gallery",
|
|
21847
22039
|
capScope: "system",
|
|
@@ -22202,6 +22394,12 @@ Object.freeze({
|
|
|
22202
22394
|
addonId: null,
|
|
22203
22395
|
access: "view"
|
|
22204
22396
|
},
|
|
22397
|
+
"snapshot.getSnapshotOverview": {
|
|
22398
|
+
capName: "snapshot",
|
|
22399
|
+
capScope: "device",
|
|
22400
|
+
addonId: null,
|
|
22401
|
+
access: "view"
|
|
22402
|
+
},
|
|
22205
22403
|
"snapshot.invalidateCache": {
|
|
22206
22404
|
capName: "snapshot",
|
|
22207
22405
|
capScope: "device",
|
|
@@ -22880,6 +23078,12 @@ Object.freeze({
|
|
|
22880
23078
|
addonId: null,
|
|
22881
23079
|
access: "view"
|
|
22882
23080
|
},
|
|
23081
|
+
"userPasskeys.beginDiscoverableAuthentication": {
|
|
23082
|
+
capName: "user-passkeys",
|
|
23083
|
+
capScope: "system",
|
|
23084
|
+
addonId: null,
|
|
23085
|
+
access: "view"
|
|
23086
|
+
},
|
|
22883
23087
|
"userPasskeys.beginRegistration": {
|
|
22884
23088
|
capName: "user-passkeys",
|
|
22885
23089
|
capScope: "system",
|
|
@@ -22892,12 +23096,24 @@ Object.freeze({
|
|
|
22892
23096
|
addonId: null,
|
|
22893
23097
|
access: "view"
|
|
22894
23098
|
},
|
|
23099
|
+
"userPasskeys.finishDiscoverableAuthentication": {
|
|
23100
|
+
capName: "user-passkeys",
|
|
23101
|
+
capScope: "system",
|
|
23102
|
+
addonId: null,
|
|
23103
|
+
access: "view"
|
|
23104
|
+
},
|
|
22895
23105
|
"userPasskeys.finishRegistration": {
|
|
22896
23106
|
capName: "user-passkeys",
|
|
22897
23107
|
capScope: "system",
|
|
22898
23108
|
addonId: null,
|
|
22899
23109
|
access: "create"
|
|
22900
23110
|
},
|
|
23111
|
+
"userPasskeys.getSecondFactorPreference": {
|
|
23112
|
+
capName: "user-passkeys",
|
|
23113
|
+
capScope: "system",
|
|
23114
|
+
addonId: null,
|
|
23115
|
+
access: "view"
|
|
23116
|
+
},
|
|
22901
23117
|
"userPasskeys.listPasskeys": {
|
|
22902
23118
|
capName: "user-passkeys",
|
|
22903
23119
|
capScope: "system",
|
|
@@ -22910,6 +23126,12 @@ Object.freeze({
|
|
|
22910
23126
|
addonId: null,
|
|
22911
23127
|
access: "delete"
|
|
22912
23128
|
},
|
|
23129
|
+
"userPasskeys.setSecondFactorPreference": {
|
|
23130
|
+
capName: "user-passkeys",
|
|
23131
|
+
capScope: "system",
|
|
23132
|
+
addonId: null,
|
|
23133
|
+
access: "create"
|
|
23134
|
+
},
|
|
22913
23135
|
"vacuumControl.locate": {
|
|
22914
23136
|
capName: "vacuum-control",
|
|
22915
23137
|
capScope: "device",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-mqtt-broker",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.22",
|
|
4
4
|
"description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|