@camstack/addon-provider-dreame 0.2.99 → 0.2.101
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/addon.js +131 -50
- package/dist/addon.mjs +131 -50
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -52672,7 +52672,7 @@ var DreameCameraStream = class extends TypedEmitter {
|
|
|
52672
52672
|
}
|
|
52673
52673
|
};
|
|
52674
52674
|
//#endregion
|
|
52675
|
-
//#region ../types/dist/event-category-
|
|
52675
|
+
//#region ../types/dist/event-category-ZyX6jcse.mjs
|
|
52676
52676
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
52677
52677
|
EventCategory["SystemBoot"] = "system.boot";
|
|
52678
52678
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -53233,7 +53233,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
53233
53233
|
* a package zone — a newly-appeared stationary object of a package class
|
|
53234
53234
|
* that cleared the class / zone / dwell / size gates. Payload:
|
|
53235
53235
|
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
53236
|
-
* entryId, className, zoneIds,
|
|
53236
|
+
* entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
|
|
53237
53237
|
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
53238
53238
|
* this bus topic drives notifier rules + live UI. See
|
|
53239
53239
|
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
@@ -58019,7 +58019,7 @@ var ZodIssueCode = {
|
|
|
58019
58019
|
var ZodFirstPartyTypeKind;
|
|
58020
58020
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
58021
58021
|
//#endregion
|
|
58022
|
-
//#region ../types/dist/sleep-
|
|
58022
|
+
//#region ../types/dist/sleep-CnLyvg3w.mjs
|
|
58023
58023
|
/**
|
|
58024
58024
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
58025
58025
|
* window to float samples (D455).
|
|
@@ -59986,13 +59986,30 @@ new Set([
|
|
|
59986
59986
|
"scene",
|
|
59987
59987
|
"motion",
|
|
59988
59988
|
"object",
|
|
59989
|
-
"audio"
|
|
59989
|
+
"audio",
|
|
59990
|
+
"mosaic"
|
|
59990
59991
|
]);
|
|
59991
|
-
|
|
59992
|
+
/**
|
|
59993
|
+
* The owner types that are event tables, in the order the event-media resolver
|
|
59994
|
+
* should consider them. Exported so a consumer asking "is this key an event?"
|
|
59995
|
+
* does not re-spell the list and drift from it.
|
|
59996
|
+
*/
|
|
59997
|
+
var EVENT_OWNER_TYPES = [
|
|
59992
59998
|
"motion",
|
|
59993
59999
|
"object",
|
|
59994
60000
|
"audio"
|
|
59995
|
-
]
|
|
60001
|
+
];
|
|
60002
|
+
/**
|
|
60003
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
60004
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
60005
|
+
* `(table, id)`).
|
|
60006
|
+
*
|
|
60007
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
60008
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
60009
|
+
* nothing failing until a caller asked.
|
|
60010
|
+
*/
|
|
60011
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
60012
|
+
new Set(EVENT_OWNER_TYPES);
|
|
59996
60013
|
var EncodeProfileSchema = object({
|
|
59997
60014
|
video: object({
|
|
59998
60015
|
codec: _enum([
|
|
@@ -65191,6 +65208,16 @@ method(object({
|
|
|
65191
65208
|
filter: QueryFilterSchema.optional(),
|
|
65192
65209
|
columns: array(string()).readonly().optional()
|
|
65193
65210
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
65211
|
+
namespace: string().optional(),
|
|
65212
|
+
collection: string(),
|
|
65213
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
65214
|
+
* index on the collection. Never empty. */
|
|
65215
|
+
conflict: array(string()).readonly(),
|
|
65216
|
+
record: BulkRecordSchema
|
|
65217
|
+
}), object({
|
|
65218
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
65219
|
+
* row's own id on an update. */
|
|
65220
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
65194
65221
|
namespace: string().optional(),
|
|
65195
65222
|
collection: string(),
|
|
65196
65223
|
record: object({
|
|
@@ -65325,6 +65352,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
65325
65352
|
id: union([string(), number()]) }), {
|
|
65326
65353
|
kind: "mutation",
|
|
65327
65354
|
auth: "admin"
|
|
65355
|
+
}), method(object({
|
|
65356
|
+
namespace: string().optional(),
|
|
65357
|
+
collection: string(),
|
|
65358
|
+
conflict: array(string()).readonly(),
|
|
65359
|
+
record: BulkRecordSchema
|
|
65360
|
+
}), object({ id: union([string(), number()]) }), {
|
|
65361
|
+
kind: "mutation",
|
|
65362
|
+
auth: "admin"
|
|
65328
65363
|
}), method(object({
|
|
65329
65364
|
namespace: string().optional(),
|
|
65330
65365
|
collection: string(),
|
|
@@ -71824,8 +71859,8 @@ var TrackPositionSchema = object({
|
|
|
71824
71859
|
var TrackSnapshotSchema = object({
|
|
71825
71860
|
timestamp: number(),
|
|
71826
71861
|
position: TrackPositionSchema,
|
|
71827
|
-
/**
|
|
71828
|
-
|
|
71862
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
71863
|
+
mediaId: number().int()
|
|
71829
71864
|
});
|
|
71830
71865
|
/**
|
|
71831
71866
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -72429,14 +72464,14 @@ var ObjectEventSchema = object({
|
|
|
72429
72464
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
72430
72465
|
frameWidth: number().optional(),
|
|
72431
72466
|
frameHeight: number().optional(),
|
|
72432
|
-
/**
|
|
72433
|
-
|
|
72434
|
-
/** Design B:
|
|
72467
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
72468
|
+
mediaId: number().int().optional(),
|
|
72469
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
72435
72470
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
72436
|
-
* (`/addon/<addonId>/event-media/<
|
|
72471
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
72437
72472
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
72438
|
-
* sources — consumers fall back to `
|
|
72439
|
-
|
|
72473
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
72474
|
+
keyFrameMediaId: number().int().optional(),
|
|
72440
72475
|
/** Populated by B5 (recording playback URL for this event). */
|
|
72441
72476
|
mediaUrl: string().optional(),
|
|
72442
72477
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -72486,7 +72521,7 @@ var MediaFileKindEnum = _enum([
|
|
|
72486
72521
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
72487
72522
|
*
|
|
72488
72523
|
* `url` points at the `event-media` data plane
|
|
72489
|
-
* (`/addon/<addonId>/event-media/<
|
|
72524
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
72490
72525
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
72491
72526
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
72492
72527
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -72494,10 +72529,13 @@ var MediaFileKindEnum = _enum([
|
|
|
72494
72529
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
72495
72530
|
* (per-device scoping).
|
|
72496
72531
|
*
|
|
72497
|
-
* The URL is built from the row's
|
|
72498
|
-
*
|
|
72532
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
72533
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
72534
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
72499
72535
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
72500
|
-
* `faceCrop`/`plateCrop
|
|
72536
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
72537
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
72538
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
72501
72539
|
*
|
|
72502
72540
|
* ## `base64` is TRANSITIONAL and is going away
|
|
72503
72541
|
*
|
|
@@ -72510,7 +72548,19 @@ var MediaFileKindEnum = _enum([
|
|
|
72510
72548
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
72511
72549
|
*/
|
|
72512
72550
|
var MediaFileSchema = object({
|
|
72513
|
-
|
|
72551
|
+
/**
|
|
72552
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
72553
|
+
*
|
|
72554
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
72555
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
72556
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
72557
|
+
* different rows that spell the same number, and a track whose
|
|
72558
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
72559
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
72560
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
72561
|
+
* at all.
|
|
72562
|
+
*/
|
|
72563
|
+
mediaId: number().int(),
|
|
72514
72564
|
kind: MediaFileKindEnum,
|
|
72515
72565
|
sizeBytes: number(),
|
|
72516
72566
|
timestamp: number()
|
|
@@ -72618,7 +72668,7 @@ var RetrainTrackSchema = object({
|
|
|
72618
72668
|
});
|
|
72619
72669
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
72620
72670
|
var RetrainFrameCandidateSchema = object({
|
|
72621
|
-
|
|
72671
|
+
mediaId: number().int(),
|
|
72622
72672
|
kind: MediaFileKindEnum,
|
|
72623
72673
|
timestamp: number(),
|
|
72624
72674
|
sizeBytes: number().int(),
|
|
@@ -72632,7 +72682,7 @@ var RetrainFrameSchema = object({
|
|
|
72632
72682
|
deviceId: number(),
|
|
72633
72683
|
trackId: string(),
|
|
72634
72684
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
72635
|
-
|
|
72685
|
+
sourceMediaId: number().int(),
|
|
72636
72686
|
sourceKind: MediaFileKindEnum,
|
|
72637
72687
|
sizeBytes: number().int(),
|
|
72638
72688
|
width: number().int(),
|
|
@@ -72648,7 +72698,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
72648
72698
|
var RetrainFrameSelectionSchema = object({
|
|
72649
72699
|
copied: array(RetrainFrameSchema).readonly(),
|
|
72650
72700
|
refused: array(object({
|
|
72651
|
-
|
|
72701
|
+
sourceMediaId: number().int(),
|
|
72652
72702
|
reason: RetrainCopyRefusalSchema
|
|
72653
72703
|
})).readonly()
|
|
72654
72704
|
});
|
|
@@ -72656,7 +72706,7 @@ var RetrainFrameListSchema = object({
|
|
|
72656
72706
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
72657
72707
|
copies: array(RetrainFrameSchema).readonly(),
|
|
72658
72708
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
72659
|
-
|
|
72709
|
+
autoPickMediaId: number().int().optional()
|
|
72660
72710
|
});
|
|
72661
72711
|
/** What the operator asked the assist to look for. */
|
|
72662
72712
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -72751,9 +72801,11 @@ var RecentTracksQueryInput = object({
|
|
|
72751
72801
|
});
|
|
72752
72802
|
/**
|
|
72753
72803
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
72754
|
-
* `
|
|
72755
|
-
* served by the event-media plane
|
|
72756
|
-
* member visible has been materialised
|
|
72804
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
72805
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
72806
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
72807
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
72808
|
+
* row once event ids became per-table rowids).
|
|
72757
72809
|
*/
|
|
72758
72810
|
var SummarySchema = object({
|
|
72759
72811
|
id: string(),
|
|
@@ -72762,7 +72814,7 @@ var SummarySchema = object({
|
|
|
72762
72814
|
lastActiveAt: number(),
|
|
72763
72815
|
sealedAt: number().nullable(),
|
|
72764
72816
|
memberCount: number().int().nonnegative(),
|
|
72765
|
-
|
|
72817
|
+
groupShotMediaId: number().int().nullable()
|
|
72766
72818
|
});
|
|
72767
72819
|
var SummariesQueryInput = object({
|
|
72768
72820
|
deviceIds: array(number()).min(1),
|
|
@@ -73316,7 +73368,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73316
73368
|
}), method(object({
|
|
73317
73369
|
deviceId: number(),
|
|
73318
73370
|
trackId: string(),
|
|
73319
|
-
|
|
73371
|
+
mediaIds: array(number().int()).min(1)
|
|
73320
73372
|
}), RetrainFrameSelectionSchema, {
|
|
73321
73373
|
kind: "mutation",
|
|
73322
73374
|
auth: "admin"
|
|
@@ -73384,7 +73436,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73384
73436
|
kind: "query",
|
|
73385
73437
|
auth: "admin"
|
|
73386
73438
|
}), method(object({
|
|
73387
|
-
|
|
73439
|
+
/** Which of the three event tables owns the row. */
|
|
73440
|
+
ownerType: EventOwnerTypeSchema,
|
|
73441
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
73442
|
+
eventId: number().int(),
|
|
73388
73443
|
kind: MediaFileKindEnum.optional(),
|
|
73389
73444
|
deviceId: number()
|
|
73390
73445
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
@@ -73395,7 +73450,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73395
73450
|
trackId: string(),
|
|
73396
73451
|
deviceId: number()
|
|
73397
73452
|
}), array(MediaFileInfoSchema).readonly()), method(object({
|
|
73398
|
-
|
|
73453
|
+
ownerType: EventOwnerTypeSchema,
|
|
73454
|
+
eventId: number().int(),
|
|
73399
73455
|
deviceId: number()
|
|
73400
73456
|
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
73401
73457
|
kind: "mutation",
|
|
@@ -78613,8 +78669,8 @@ var IdentitySchema = object({
|
|
|
78613
78669
|
id: string(),
|
|
78614
78670
|
name: string(),
|
|
78615
78671
|
sampleCount: number().int().nonnegative(),
|
|
78616
|
-
|
|
78617
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
78672
|
+
coverMediaId: number().int().optional(),
|
|
78673
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
78618
78674
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
78619
78675
|
coverBase64: string().optional()
|
|
78620
78676
|
});
|
|
@@ -78640,8 +78696,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
78640
78696
|
enrolledAt: number().int(),
|
|
78641
78697
|
deviceId: number().int().optional(),
|
|
78642
78698
|
source: _enum(["detected", "photo"]),
|
|
78643
|
-
/** The enrolled crop's media
|
|
78644
|
-
|
|
78699
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
78700
|
+
mediaId: number().int().optional(),
|
|
78645
78701
|
/**
|
|
78646
78702
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
78647
78703
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -78710,15 +78766,15 @@ var FaceInfoSchema = object({
|
|
|
78710
78766
|
*/
|
|
78711
78767
|
cropUrl: string().optional(),
|
|
78712
78768
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
78713
|
-
* view draw the box over the native `
|
|
78769
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
78714
78770
|
* legacy rows written before design B. */
|
|
78715
78771
|
faceBbox: BoundingBoxSchema.optional(),
|
|
78716
78772
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
78717
78773
|
* Fetch the native JPEG via the event-media data-plane
|
|
78718
|
-
* (`/addon/<addonId>/event-media/<
|
|
78774
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
78719
78775
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
78720
78776
|
* back to the inline `base64` face crop. */
|
|
78721
|
-
|
|
78777
|
+
keyFrameMediaId: number().int().optional(),
|
|
78722
78778
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
78723
78779
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
78724
78780
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -78787,11 +78843,14 @@ var FaceClusterSchema = object({
|
|
|
78787
78843
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
78788
78844
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
78789
78845
|
*
|
|
78790
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
78791
|
-
* media
|
|
78846
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
78847
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
78848
|
+
* access decision.
|
|
78792
78849
|
*/
|
|
78793
78850
|
var MediaFileLiteSchema$1 = object({
|
|
78794
|
-
|
|
78851
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
78852
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
78853
|
+
mediaId: number().int(),
|
|
78795
78854
|
kind: string(),
|
|
78796
78855
|
url: string(),
|
|
78797
78856
|
sizeBytes: number(),
|
|
@@ -78808,7 +78867,7 @@ method(object({
|
|
|
78808
78867
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
78809
78868
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
78810
78869
|
*
|
|
78811
|
-
* Nothing loses its avatar: `
|
|
78870
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
78812
78871
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
78813
78872
|
*
|
|
78814
78873
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -82319,8 +82378,8 @@ var VehicleSchema = object({
|
|
|
82319
82378
|
id: string(),
|
|
82320
82379
|
name: string(),
|
|
82321
82380
|
sampleCount: number().int().nonnegative(),
|
|
82322
|
-
|
|
82323
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
82381
|
+
coverMediaId: number().int().optional(),
|
|
82382
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
82324
82383
|
coverBase64: string().optional()
|
|
82325
82384
|
});
|
|
82326
82385
|
var VehicleSampleInfoSchema = object({
|
|
@@ -82353,7 +82412,7 @@ var PlateInfoSchema = object({
|
|
|
82353
82412
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
82354
82413
|
plateBbox: BoundingBoxSchema.optional(),
|
|
82355
82414
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
82356
|
-
|
|
82415
|
+
keyFrameMediaId: number().int().optional(),
|
|
82357
82416
|
base64: string().optional(),
|
|
82358
82417
|
/**
|
|
82359
82418
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -82374,11 +82433,14 @@ var PlateInfoSchema = object({
|
|
|
82374
82433
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
82375
82434
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
82376
82435
|
*
|
|
82377
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
82378
|
-
* media
|
|
82436
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
82437
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
82438
|
+
* access decision.
|
|
82379
82439
|
*/
|
|
82380
82440
|
var MediaFileLiteSchema = object({
|
|
82381
|
-
|
|
82441
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
82442
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
82443
|
+
mediaId: number().int(),
|
|
82382
82444
|
kind: string(),
|
|
82383
82445
|
url: string(),
|
|
82384
82446
|
sizeBytes: number(),
|
|
@@ -82437,7 +82499,7 @@ method(object({
|
|
|
82437
82499
|
}), method(object({
|
|
82438
82500
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
82439
82501
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
82440
|
-
* option; `
|
|
82502
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
82441
82503
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
82442
82504
|
* resolves to `false` and is exactly the intended default. */
|
|
82443
82505
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
@@ -84006,7 +84068,14 @@ var SceneReferenceSchema = object({
|
|
|
84006
84068
|
modelId: string(),
|
|
84007
84069
|
condition: SceneConditionSchema,
|
|
84008
84070
|
capturedAt: number(),
|
|
84009
|
-
|
|
84071
|
+
/**
|
|
84072
|
+
* The reference thumbnail's media ROW id (D482).
|
|
84073
|
+
*
|
|
84074
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
84075
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
84076
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
84077
|
+
*/
|
|
84078
|
+
thumbnailMediaId: number().int().optional(),
|
|
84010
84079
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
84011
84080
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
84012
84081
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -85990,7 +86059,7 @@ var StationaryObjectSchema = object({
|
|
|
85990
86059
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
85991
86060
|
label: string().optional(),
|
|
85992
86061
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
85993
|
-
|
|
86062
|
+
keyFrameMediaId: number().int().optional()
|
|
85994
86063
|
});
|
|
85995
86064
|
var CameraOccupancySnapshotSchema = object({
|
|
85996
86065
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -88728,6 +88797,12 @@ Object.freeze({
|
|
|
88728
88797
|
addonId: null,
|
|
88729
88798
|
access: "create"
|
|
88730
88799
|
},
|
|
88800
|
+
"dataStoreProvider.upsert": {
|
|
88801
|
+
capName: "data-store-provider",
|
|
88802
|
+
capScope: "system",
|
|
88803
|
+
addonId: null,
|
|
88804
|
+
access: "create"
|
|
88805
|
+
},
|
|
88731
88806
|
"dayNight.getOptions": {
|
|
88732
88807
|
capName: "day-night",
|
|
88733
88808
|
capScope: "device",
|
|
@@ -92592,6 +92667,12 @@ Object.freeze({
|
|
|
92592
92667
|
addonId: null,
|
|
92593
92668
|
access: "create"
|
|
92594
92669
|
},
|
|
92670
|
+
"settingsStore.upsert": {
|
|
92671
|
+
capName: "settings-store",
|
|
92672
|
+
capScope: "system",
|
|
92673
|
+
addonId: null,
|
|
92674
|
+
access: "create"
|
|
92675
|
+
},
|
|
92595
92676
|
"smtpProvider.getStatus": {
|
|
92596
92677
|
capName: "smtp-provider",
|
|
92597
92678
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -52669,7 +52669,7 @@ var DreameCameraStream = class extends TypedEmitter {
|
|
|
52669
52669
|
}
|
|
52670
52670
|
};
|
|
52671
52671
|
//#endregion
|
|
52672
|
-
//#region ../types/dist/event-category-
|
|
52672
|
+
//#region ../types/dist/event-category-ZyX6jcse.mjs
|
|
52673
52673
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
52674
52674
|
EventCategory["SystemBoot"] = "system.boot";
|
|
52675
52675
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -53230,7 +53230,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
53230
53230
|
* a package zone — a newly-appeared stationary object of a package class
|
|
53231
53231
|
* that cleared the class / zone / dwell / size gates. Payload:
|
|
53232
53232
|
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
53233
|
-
* entryId, className, zoneIds,
|
|
53233
|
+
* entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
|
|
53234
53234
|
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
53235
53235
|
* this bus topic drives notifier rules + live UI. See
|
|
53236
53236
|
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
@@ -58016,7 +58016,7 @@ var ZodIssueCode = {
|
|
|
58016
58016
|
var ZodFirstPartyTypeKind;
|
|
58017
58017
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
58018
58018
|
//#endregion
|
|
58019
|
-
//#region ../types/dist/sleep-
|
|
58019
|
+
//#region ../types/dist/sleep-CnLyvg3w.mjs
|
|
58020
58020
|
/**
|
|
58021
58021
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
58022
58022
|
* window to float samples (D455).
|
|
@@ -59983,13 +59983,30 @@ new Set([
|
|
|
59983
59983
|
"scene",
|
|
59984
59984
|
"motion",
|
|
59985
59985
|
"object",
|
|
59986
|
-
"audio"
|
|
59986
|
+
"audio",
|
|
59987
|
+
"mosaic"
|
|
59987
59988
|
]);
|
|
59988
|
-
|
|
59989
|
+
/**
|
|
59990
|
+
* The owner types that are event tables, in the order the event-media resolver
|
|
59991
|
+
* should consider them. Exported so a consumer asking "is this key an event?"
|
|
59992
|
+
* does not re-spell the list and drift from it.
|
|
59993
|
+
*/
|
|
59994
|
+
var EVENT_OWNER_TYPES = [
|
|
59989
59995
|
"motion",
|
|
59990
59996
|
"object",
|
|
59991
59997
|
"audio"
|
|
59992
|
-
]
|
|
59998
|
+
];
|
|
59999
|
+
/**
|
|
60000
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
60001
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
60002
|
+
* `(table, id)`).
|
|
60003
|
+
*
|
|
60004
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
60005
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
60006
|
+
* nothing failing until a caller asked.
|
|
60007
|
+
*/
|
|
60008
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
60009
|
+
new Set(EVENT_OWNER_TYPES);
|
|
59993
60010
|
var EncodeProfileSchema = object({
|
|
59994
60011
|
video: object({
|
|
59995
60012
|
codec: _enum([
|
|
@@ -65188,6 +65205,16 @@ method(object({
|
|
|
65188
65205
|
filter: QueryFilterSchema.optional(),
|
|
65189
65206
|
columns: array(string()).readonly().optional()
|
|
65190
65207
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
65208
|
+
namespace: string().optional(),
|
|
65209
|
+
collection: string(),
|
|
65210
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
65211
|
+
* index on the collection. Never empty. */
|
|
65212
|
+
conflict: array(string()).readonly(),
|
|
65213
|
+
record: BulkRecordSchema
|
|
65214
|
+
}), object({
|
|
65215
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
65216
|
+
* row's own id on an update. */
|
|
65217
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
65191
65218
|
namespace: string().optional(),
|
|
65192
65219
|
collection: string(),
|
|
65193
65220
|
record: object({
|
|
@@ -65322,6 +65349,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
65322
65349
|
id: union([string(), number()]) }), {
|
|
65323
65350
|
kind: "mutation",
|
|
65324
65351
|
auth: "admin"
|
|
65352
|
+
}), method(object({
|
|
65353
|
+
namespace: string().optional(),
|
|
65354
|
+
collection: string(),
|
|
65355
|
+
conflict: array(string()).readonly(),
|
|
65356
|
+
record: BulkRecordSchema
|
|
65357
|
+
}), object({ id: union([string(), number()]) }), {
|
|
65358
|
+
kind: "mutation",
|
|
65359
|
+
auth: "admin"
|
|
65325
65360
|
}), method(object({
|
|
65326
65361
|
namespace: string().optional(),
|
|
65327
65362
|
collection: string(),
|
|
@@ -71821,8 +71856,8 @@ var TrackPositionSchema = object({
|
|
|
71821
71856
|
var TrackSnapshotSchema = object({
|
|
71822
71857
|
timestamp: number(),
|
|
71823
71858
|
position: TrackPositionSchema,
|
|
71824
|
-
/**
|
|
71825
|
-
|
|
71859
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
71860
|
+
mediaId: number().int()
|
|
71826
71861
|
});
|
|
71827
71862
|
/**
|
|
71828
71863
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -72426,14 +72461,14 @@ var ObjectEventSchema = object({
|
|
|
72426
72461
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
72427
72462
|
frameWidth: number().optional(),
|
|
72428
72463
|
frameHeight: number().optional(),
|
|
72429
|
-
/**
|
|
72430
|
-
|
|
72431
|
-
/** Design B:
|
|
72464
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
72465
|
+
mediaId: number().int().optional(),
|
|
72466
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
72432
72467
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
72433
|
-
* (`/addon/<addonId>/event-media/<
|
|
72468
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
72434
72469
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
72435
|
-
* sources — consumers fall back to `
|
|
72436
|
-
|
|
72470
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
72471
|
+
keyFrameMediaId: number().int().optional(),
|
|
72437
72472
|
/** Populated by B5 (recording playback URL for this event). */
|
|
72438
72473
|
mediaUrl: string().optional(),
|
|
72439
72474
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -72483,7 +72518,7 @@ var MediaFileKindEnum = _enum([
|
|
|
72483
72518
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
72484
72519
|
*
|
|
72485
72520
|
* `url` points at the `event-media` data plane
|
|
72486
|
-
* (`/addon/<addonId>/event-media/<
|
|
72521
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
72487
72522
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
72488
72523
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
72489
72524
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -72491,10 +72526,13 @@ var MediaFileKindEnum = _enum([
|
|
|
72491
72526
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
72492
72527
|
* (per-device scoping).
|
|
72493
72528
|
*
|
|
72494
|
-
* The URL is built from the row's
|
|
72495
|
-
*
|
|
72529
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
72530
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
72531
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
72496
72532
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
72497
|
-
* `faceCrop`/`plateCrop
|
|
72533
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
72534
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
72535
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
72498
72536
|
*
|
|
72499
72537
|
* ## `base64` is TRANSITIONAL and is going away
|
|
72500
72538
|
*
|
|
@@ -72507,7 +72545,19 @@ var MediaFileKindEnum = _enum([
|
|
|
72507
72545
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
72508
72546
|
*/
|
|
72509
72547
|
var MediaFileSchema = object({
|
|
72510
|
-
|
|
72548
|
+
/**
|
|
72549
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
72550
|
+
*
|
|
72551
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
72552
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
72553
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
72554
|
+
* different rows that spell the same number, and a track whose
|
|
72555
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
72556
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
72557
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
72558
|
+
* at all.
|
|
72559
|
+
*/
|
|
72560
|
+
mediaId: number().int(),
|
|
72511
72561
|
kind: MediaFileKindEnum,
|
|
72512
72562
|
sizeBytes: number(),
|
|
72513
72563
|
timestamp: number()
|
|
@@ -72615,7 +72665,7 @@ var RetrainTrackSchema = object({
|
|
|
72615
72665
|
});
|
|
72616
72666
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
72617
72667
|
var RetrainFrameCandidateSchema = object({
|
|
72618
|
-
|
|
72668
|
+
mediaId: number().int(),
|
|
72619
72669
|
kind: MediaFileKindEnum,
|
|
72620
72670
|
timestamp: number(),
|
|
72621
72671
|
sizeBytes: number().int(),
|
|
@@ -72629,7 +72679,7 @@ var RetrainFrameSchema = object({
|
|
|
72629
72679
|
deviceId: number(),
|
|
72630
72680
|
trackId: string(),
|
|
72631
72681
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
72632
|
-
|
|
72682
|
+
sourceMediaId: number().int(),
|
|
72633
72683
|
sourceKind: MediaFileKindEnum,
|
|
72634
72684
|
sizeBytes: number().int(),
|
|
72635
72685
|
width: number().int(),
|
|
@@ -72645,7 +72695,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
72645
72695
|
var RetrainFrameSelectionSchema = object({
|
|
72646
72696
|
copied: array(RetrainFrameSchema).readonly(),
|
|
72647
72697
|
refused: array(object({
|
|
72648
|
-
|
|
72698
|
+
sourceMediaId: number().int(),
|
|
72649
72699
|
reason: RetrainCopyRefusalSchema
|
|
72650
72700
|
})).readonly()
|
|
72651
72701
|
});
|
|
@@ -72653,7 +72703,7 @@ var RetrainFrameListSchema = object({
|
|
|
72653
72703
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
72654
72704
|
copies: array(RetrainFrameSchema).readonly(),
|
|
72655
72705
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
72656
|
-
|
|
72706
|
+
autoPickMediaId: number().int().optional()
|
|
72657
72707
|
});
|
|
72658
72708
|
/** What the operator asked the assist to look for. */
|
|
72659
72709
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -72748,9 +72798,11 @@ var RecentTracksQueryInput = object({
|
|
|
72748
72798
|
});
|
|
72749
72799
|
/**
|
|
72750
72800
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
72751
|
-
* `
|
|
72752
|
-
* served by the event-media plane
|
|
72753
|
-
* member visible has been materialised
|
|
72801
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
72802
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
72803
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
72804
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
72805
|
+
* row once event ids became per-table rowids).
|
|
72754
72806
|
*/
|
|
72755
72807
|
var SummarySchema = object({
|
|
72756
72808
|
id: string(),
|
|
@@ -72759,7 +72811,7 @@ var SummarySchema = object({
|
|
|
72759
72811
|
lastActiveAt: number(),
|
|
72760
72812
|
sealedAt: number().nullable(),
|
|
72761
72813
|
memberCount: number().int().nonnegative(),
|
|
72762
|
-
|
|
72814
|
+
groupShotMediaId: number().int().nullable()
|
|
72763
72815
|
});
|
|
72764
72816
|
var SummariesQueryInput = object({
|
|
72765
72817
|
deviceIds: array(number()).min(1),
|
|
@@ -73313,7 +73365,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73313
73365
|
}), method(object({
|
|
73314
73366
|
deviceId: number(),
|
|
73315
73367
|
trackId: string(),
|
|
73316
|
-
|
|
73368
|
+
mediaIds: array(number().int()).min(1)
|
|
73317
73369
|
}), RetrainFrameSelectionSchema, {
|
|
73318
73370
|
kind: "mutation",
|
|
73319
73371
|
auth: "admin"
|
|
@@ -73381,7 +73433,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73381
73433
|
kind: "query",
|
|
73382
73434
|
auth: "admin"
|
|
73383
73435
|
}), method(object({
|
|
73384
|
-
|
|
73436
|
+
/** Which of the three event tables owns the row. */
|
|
73437
|
+
ownerType: EventOwnerTypeSchema,
|
|
73438
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
73439
|
+
eventId: number().int(),
|
|
73385
73440
|
kind: MediaFileKindEnum.optional(),
|
|
73386
73441
|
deviceId: number()
|
|
73387
73442
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
@@ -73392,7 +73447,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
73392
73447
|
trackId: string(),
|
|
73393
73448
|
deviceId: number()
|
|
73394
73449
|
}), array(MediaFileInfoSchema).readonly()), method(object({
|
|
73395
|
-
|
|
73450
|
+
ownerType: EventOwnerTypeSchema,
|
|
73451
|
+
eventId: number().int(),
|
|
73396
73452
|
deviceId: number()
|
|
73397
73453
|
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
73398
73454
|
kind: "mutation",
|
|
@@ -78610,8 +78666,8 @@ var IdentitySchema = object({
|
|
|
78610
78666
|
id: string(),
|
|
78611
78667
|
name: string(),
|
|
78612
78668
|
sampleCount: number().int().nonnegative(),
|
|
78613
|
-
|
|
78614
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
78669
|
+
coverMediaId: number().int().optional(),
|
|
78670
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
78615
78671
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
78616
78672
|
coverBase64: string().optional()
|
|
78617
78673
|
});
|
|
@@ -78637,8 +78693,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
78637
78693
|
enrolledAt: number().int(),
|
|
78638
78694
|
deviceId: number().int().optional(),
|
|
78639
78695
|
source: _enum(["detected", "photo"]),
|
|
78640
|
-
/** The enrolled crop's media
|
|
78641
|
-
|
|
78696
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
78697
|
+
mediaId: number().int().optional(),
|
|
78642
78698
|
/**
|
|
78643
78699
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
78644
78700
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -78707,15 +78763,15 @@ var FaceInfoSchema = object({
|
|
|
78707
78763
|
*/
|
|
78708
78764
|
cropUrl: string().optional(),
|
|
78709
78765
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
78710
|
-
* view draw the box over the native `
|
|
78766
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
78711
78767
|
* legacy rows written before design B. */
|
|
78712
78768
|
faceBbox: BoundingBoxSchema.optional(),
|
|
78713
78769
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
78714
78770
|
* Fetch the native JPEG via the event-media data-plane
|
|
78715
|
-
* (`/addon/<addonId>/event-media/<
|
|
78771
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
78716
78772
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
78717
78773
|
* back to the inline `base64` face crop. */
|
|
78718
|
-
|
|
78774
|
+
keyFrameMediaId: number().int().optional(),
|
|
78719
78775
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
78720
78776
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
78721
78777
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -78784,11 +78840,14 @@ var FaceClusterSchema = object({
|
|
|
78784
78840
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
78785
78841
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
78786
78842
|
*
|
|
78787
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
78788
|
-
* media
|
|
78843
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
78844
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
78845
|
+
* access decision.
|
|
78789
78846
|
*/
|
|
78790
78847
|
var MediaFileLiteSchema$1 = object({
|
|
78791
|
-
|
|
78848
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
78849
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
78850
|
+
mediaId: number().int(),
|
|
78792
78851
|
kind: string(),
|
|
78793
78852
|
url: string(),
|
|
78794
78853
|
sizeBytes: number(),
|
|
@@ -78805,7 +78864,7 @@ method(object({
|
|
|
78805
78864
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
78806
78865
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
78807
78866
|
*
|
|
78808
|
-
* Nothing loses its avatar: `
|
|
78867
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
78809
78868
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
78810
78869
|
*
|
|
78811
78870
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -82316,8 +82375,8 @@ var VehicleSchema = object({
|
|
|
82316
82375
|
id: string(),
|
|
82317
82376
|
name: string(),
|
|
82318
82377
|
sampleCount: number().int().nonnegative(),
|
|
82319
|
-
|
|
82320
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
82378
|
+
coverMediaId: number().int().optional(),
|
|
82379
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
82321
82380
|
coverBase64: string().optional()
|
|
82322
82381
|
});
|
|
82323
82382
|
var VehicleSampleInfoSchema = object({
|
|
@@ -82350,7 +82409,7 @@ var PlateInfoSchema = object({
|
|
|
82350
82409
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
82351
82410
|
plateBbox: BoundingBoxSchema.optional(),
|
|
82352
82411
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
82353
|
-
|
|
82412
|
+
keyFrameMediaId: number().int().optional(),
|
|
82354
82413
|
base64: string().optional(),
|
|
82355
82414
|
/**
|
|
82356
82415
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -82371,11 +82430,14 @@ var PlateInfoSchema = object({
|
|
|
82371
82430
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
82372
82431
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
82373
82432
|
*
|
|
82374
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
82375
|
-
* media
|
|
82433
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
82434
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
82435
|
+
* access decision.
|
|
82376
82436
|
*/
|
|
82377
82437
|
var MediaFileLiteSchema = object({
|
|
82378
|
-
|
|
82438
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
82439
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
82440
|
+
mediaId: number().int(),
|
|
82379
82441
|
kind: string(),
|
|
82380
82442
|
url: string(),
|
|
82381
82443
|
sizeBytes: number(),
|
|
@@ -82434,7 +82496,7 @@ method(object({
|
|
|
82434
82496
|
}), method(object({
|
|
82435
82497
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
82436
82498
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
82437
|
-
* option; `
|
|
82499
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
82438
82500
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
82439
82501
|
* resolves to `false` and is exactly the intended default. */
|
|
82440
82502
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
@@ -84003,7 +84065,14 @@ var SceneReferenceSchema = object({
|
|
|
84003
84065
|
modelId: string(),
|
|
84004
84066
|
condition: SceneConditionSchema,
|
|
84005
84067
|
capturedAt: number(),
|
|
84006
|
-
|
|
84068
|
+
/**
|
|
84069
|
+
* The reference thumbnail's media ROW id (D482).
|
|
84070
|
+
*
|
|
84071
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
84072
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
84073
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
84074
|
+
*/
|
|
84075
|
+
thumbnailMediaId: number().int().optional(),
|
|
84007
84076
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
84008
84077
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
84009
84078
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -85987,7 +86056,7 @@ var StationaryObjectSchema = object({
|
|
|
85987
86056
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
85988
86057
|
label: string().optional(),
|
|
85989
86058
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
85990
|
-
|
|
86059
|
+
keyFrameMediaId: number().int().optional()
|
|
85991
86060
|
});
|
|
85992
86061
|
var CameraOccupancySnapshotSchema = object({
|
|
85993
86062
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -88725,6 +88794,12 @@ Object.freeze({
|
|
|
88725
88794
|
addonId: null,
|
|
88726
88795
|
access: "create"
|
|
88727
88796
|
},
|
|
88797
|
+
"dataStoreProvider.upsert": {
|
|
88798
|
+
capName: "data-store-provider",
|
|
88799
|
+
capScope: "system",
|
|
88800
|
+
addonId: null,
|
|
88801
|
+
access: "create"
|
|
88802
|
+
},
|
|
88728
88803
|
"dayNight.getOptions": {
|
|
88729
88804
|
capName: "day-night",
|
|
88730
88805
|
capScope: "device",
|
|
@@ -92589,6 +92664,12 @@ Object.freeze({
|
|
|
92589
92664
|
addonId: null,
|
|
92590
92665
|
access: "create"
|
|
92591
92666
|
},
|
|
92667
|
+
"settingsStore.upsert": {
|
|
92668
|
+
capName: "settings-store",
|
|
92669
|
+
capScope: "system",
|
|
92670
|
+
addonId: null,
|
|
92671
|
+
access: "create"
|
|
92672
|
+
},
|
|
92592
92673
|
"smtpProvider.getStatus": {
|
|
92593
92674
|
capName: "smtp-provider",
|
|
92594
92675
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-dreame",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.101",
|
|
4
4
|
"description": "Dreame robot-vacuum / lawn-mower device-provider addon for CamStack — wraps the @apocaliss92/nodedreame Dreamehome cloud client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|