@camstack/addon-model-studio 1.1.128 → 1.1.129
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/{MotionZonesSettings-Y4BOcwCT.mjs → MotionZonesSettings-C0ZZHN5q.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-D0dMH34n.mjs → PrivacyMaskSettings-D4uGl7zT.mjs} +4 -4
- package/dist/{SceneMonitorEditor-iS9jtSJq.mjs → SceneMonitorEditor-BKYzMLFb.mjs} +258 -255
- package/dist/_stub.js +10 -10
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-DStSHZb_.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CS5tkis3.mjs} +4 -4
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CXCz80XV.mjs +26 -0
- package/dist/{hostInit-s1JYi2jS.mjs → hostInit-BtQKjmWv.mjs} +3 -3
- package/dist/model-studio.addon.js +131 -50
- package/dist/model-studio.addon.mjs +131 -50
- package/dist/{player-overlays-q0vtmqkn.mjs → player-overlays-CMrYqFCL.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-DNXbYsNH.mjs → responsive-JVBuLbSa.mjs} +3 -3
- package/dist/{square-CvCVejCK.mjs → square-BCP4gOno.mjs} +1 -1
- package/dist/{trash-2-pcumgheo.mjs → trash-2-CeqN21XB.mjs} +1 -1
- package/dist/{use-device-snapshot-BKYQa7fa.mjs → use-device-snapshot-UOdeTQpP.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CNgFCxL8.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-C_r2F6t8.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CO-CV0SJ.mjs +0 -26
|
@@ -523,7 +523,7 @@ async function importScryptedCatalogModel(input, deps) {
|
|
|
523
523
|
}
|
|
524
524
|
}
|
|
525
525
|
//#endregion
|
|
526
|
-
//#region ../types/dist/event-category-
|
|
526
|
+
//#region ../types/dist/event-category-ZyX6jcse.mjs
|
|
527
527
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
528
528
|
EventCategory["SystemBoot"] = "system.boot";
|
|
529
529
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1084,7 +1084,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1084
1084
|
* a package zone — a newly-appeared stationary object of a package class
|
|
1085
1085
|
* that cleared the class / zone / dwell / size gates. Payload:
|
|
1086
1086
|
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
1087
|
-
* entryId, className, zoneIds,
|
|
1087
|
+
* entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
|
|
1088
1088
|
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
1089
1089
|
* this bus topic drives notifier rules + live UI. See
|
|
1090
1090
|
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
@@ -5870,7 +5870,7 @@ var ZodIssueCode = {
|
|
|
5870
5870
|
var ZodFirstPartyTypeKind;
|
|
5871
5871
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5872
5872
|
//#endregion
|
|
5873
|
-
//#region ../types/dist/sleep-
|
|
5873
|
+
//#region ../types/dist/sleep-CnLyvg3w.mjs
|
|
5874
5874
|
/**
|
|
5875
5875
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5876
5876
|
* window to float samples (D455).
|
|
@@ -7880,13 +7880,30 @@ new Set([
|
|
|
7880
7880
|
"scene",
|
|
7881
7881
|
"motion",
|
|
7882
7882
|
"object",
|
|
7883
|
-
"audio"
|
|
7883
|
+
"audio",
|
|
7884
|
+
"mosaic"
|
|
7884
7885
|
]);
|
|
7885
|
-
|
|
7886
|
+
/**
|
|
7887
|
+
* The owner types that are event tables, in the order the event-media resolver
|
|
7888
|
+
* should consider them. Exported so a consumer asking "is this key an event?"
|
|
7889
|
+
* does not re-spell the list and drift from it.
|
|
7890
|
+
*/
|
|
7891
|
+
var EVENT_OWNER_TYPES = [
|
|
7886
7892
|
"motion",
|
|
7887
7893
|
"object",
|
|
7888
7894
|
"audio"
|
|
7889
|
-
]
|
|
7895
|
+
];
|
|
7896
|
+
/**
|
|
7897
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
7898
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
7899
|
+
* `(table, id)`).
|
|
7900
|
+
*
|
|
7901
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
7902
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
7903
|
+
* nothing failing until a caller asked.
|
|
7904
|
+
*/
|
|
7905
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
7906
|
+
new Set(EVENT_OWNER_TYPES);
|
|
7890
7907
|
var EncodeProfileSchema = object({
|
|
7891
7908
|
video: object({
|
|
7892
7909
|
codec: _enum([
|
|
@@ -13039,6 +13056,16 @@ method(object({
|
|
|
13039
13056
|
filter: QueryFilterSchema.optional(),
|
|
13040
13057
|
columns: array(string()).readonly().optional()
|
|
13041
13058
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
13059
|
+
namespace: string().optional(),
|
|
13060
|
+
collection: string(),
|
|
13061
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
13062
|
+
* index on the collection. Never empty. */
|
|
13063
|
+
conflict: array(string()).readonly(),
|
|
13064
|
+
record: BulkRecordSchema
|
|
13065
|
+
}), object({
|
|
13066
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
13067
|
+
* row's own id on an update. */
|
|
13068
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
13042
13069
|
namespace: string().optional(),
|
|
13043
13070
|
collection: string(),
|
|
13044
13071
|
record: object({
|
|
@@ -13173,6 +13200,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
13173
13200
|
id: union([string(), number()]) }), {
|
|
13174
13201
|
kind: "mutation",
|
|
13175
13202
|
auth: "admin"
|
|
13203
|
+
}), method(object({
|
|
13204
|
+
namespace: string().optional(),
|
|
13205
|
+
collection: string(),
|
|
13206
|
+
conflict: array(string()).readonly(),
|
|
13207
|
+
record: BulkRecordSchema
|
|
13208
|
+
}), object({ id: union([string(), number()]) }), {
|
|
13209
|
+
kind: "mutation",
|
|
13210
|
+
auth: "admin"
|
|
13176
13211
|
}), method(object({
|
|
13177
13212
|
namespace: string().optional(),
|
|
13178
13213
|
collection: string(),
|
|
@@ -19395,8 +19430,8 @@ var TrackPositionSchema = object({
|
|
|
19395
19430
|
var TrackSnapshotSchema = object({
|
|
19396
19431
|
timestamp: number(),
|
|
19397
19432
|
position: TrackPositionSchema,
|
|
19398
|
-
/**
|
|
19399
|
-
|
|
19433
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
19434
|
+
mediaId: number().int()
|
|
19400
19435
|
});
|
|
19401
19436
|
/**
|
|
19402
19437
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -20000,14 +20035,14 @@ var ObjectEventSchema = object({
|
|
|
20000
20035
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
20001
20036
|
frameWidth: number().optional(),
|
|
20002
20037
|
frameHeight: number().optional(),
|
|
20003
|
-
/**
|
|
20004
|
-
|
|
20005
|
-
/** Design B:
|
|
20038
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
20039
|
+
mediaId: number().int().optional(),
|
|
20040
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
20006
20041
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
20007
|
-
* (`/addon/<addonId>/event-media/<
|
|
20042
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
20008
20043
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
20009
|
-
* sources — consumers fall back to `
|
|
20010
|
-
|
|
20044
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
20045
|
+
keyFrameMediaId: number().int().optional(),
|
|
20011
20046
|
/** Populated by B5 (recording playback URL for this event). */
|
|
20012
20047
|
mediaUrl: string().optional(),
|
|
20013
20048
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -20057,7 +20092,7 @@ var MediaFileKindEnum = _enum([
|
|
|
20057
20092
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
20058
20093
|
*
|
|
20059
20094
|
* `url` points at the `event-media` data plane
|
|
20060
|
-
* (`/addon/<addonId>/event-media/<
|
|
20095
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
20061
20096
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
20062
20097
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
20063
20098
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -20065,10 +20100,13 @@ var MediaFileKindEnum = _enum([
|
|
|
20065
20100
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
20066
20101
|
* (per-device scoping).
|
|
20067
20102
|
*
|
|
20068
|
-
* The URL is built from the row's
|
|
20069
|
-
*
|
|
20103
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
20104
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
20105
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
20070
20106
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
20071
|
-
* `faceCrop`/`plateCrop
|
|
20107
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
20108
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
20109
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
20072
20110
|
*
|
|
20073
20111
|
* ## `base64` is TRANSITIONAL and is going away
|
|
20074
20112
|
*
|
|
@@ -20081,7 +20119,19 @@ var MediaFileKindEnum = _enum([
|
|
|
20081
20119
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
20082
20120
|
*/
|
|
20083
20121
|
var MediaFileSchema = object({
|
|
20084
|
-
|
|
20122
|
+
/**
|
|
20123
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
20124
|
+
*
|
|
20125
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
20126
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
20127
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
20128
|
+
* different rows that spell the same number, and a track whose
|
|
20129
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
20130
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
20131
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
20132
|
+
* at all.
|
|
20133
|
+
*/
|
|
20134
|
+
mediaId: number().int(),
|
|
20085
20135
|
kind: MediaFileKindEnum,
|
|
20086
20136
|
sizeBytes: number(),
|
|
20087
20137
|
timestamp: number()
|
|
@@ -20189,7 +20239,7 @@ var RetrainTrackSchema = object({
|
|
|
20189
20239
|
});
|
|
20190
20240
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
20191
20241
|
var RetrainFrameCandidateSchema = object({
|
|
20192
|
-
|
|
20242
|
+
mediaId: number().int(),
|
|
20193
20243
|
kind: MediaFileKindEnum,
|
|
20194
20244
|
timestamp: number(),
|
|
20195
20245
|
sizeBytes: number().int(),
|
|
@@ -20203,7 +20253,7 @@ var RetrainFrameSchema = object({
|
|
|
20203
20253
|
deviceId: number(),
|
|
20204
20254
|
trackId: string(),
|
|
20205
20255
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
20206
|
-
|
|
20256
|
+
sourceMediaId: number().int(),
|
|
20207
20257
|
sourceKind: MediaFileKindEnum,
|
|
20208
20258
|
sizeBytes: number().int(),
|
|
20209
20259
|
width: number().int(),
|
|
@@ -20219,7 +20269,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
20219
20269
|
var RetrainFrameSelectionSchema = object({
|
|
20220
20270
|
copied: array(RetrainFrameSchema).readonly(),
|
|
20221
20271
|
refused: array(object({
|
|
20222
|
-
|
|
20272
|
+
sourceMediaId: number().int(),
|
|
20223
20273
|
reason: RetrainCopyRefusalSchema
|
|
20224
20274
|
})).readonly()
|
|
20225
20275
|
});
|
|
@@ -20227,7 +20277,7 @@ var RetrainFrameListSchema = object({
|
|
|
20227
20277
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
20228
20278
|
copies: array(RetrainFrameSchema).readonly(),
|
|
20229
20279
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
20230
|
-
|
|
20280
|
+
autoPickMediaId: number().int().optional()
|
|
20231
20281
|
});
|
|
20232
20282
|
/** What the operator asked the assist to look for. */
|
|
20233
20283
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -20322,9 +20372,11 @@ var RecentTracksQueryInput = object({
|
|
|
20322
20372
|
});
|
|
20323
20373
|
/**
|
|
20324
20374
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
20325
|
-
* `
|
|
20326
|
-
* served by the event-media plane
|
|
20327
|
-
* member visible has been materialised
|
|
20375
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
20376
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
20377
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
20378
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
20379
|
+
* row once event ids became per-table rowids).
|
|
20328
20380
|
*/
|
|
20329
20381
|
var SummarySchema = object({
|
|
20330
20382
|
id: string(),
|
|
@@ -20333,7 +20385,7 @@ var SummarySchema = object({
|
|
|
20333
20385
|
lastActiveAt: number(),
|
|
20334
20386
|
sealedAt: number().nullable(),
|
|
20335
20387
|
memberCount: number().int().nonnegative(),
|
|
20336
|
-
|
|
20388
|
+
groupShotMediaId: number().int().nullable()
|
|
20337
20389
|
});
|
|
20338
20390
|
var SummariesQueryInput = object({
|
|
20339
20391
|
deviceIds: array(number()).min(1),
|
|
@@ -20887,7 +20939,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20887
20939
|
}), method(object({
|
|
20888
20940
|
deviceId: number(),
|
|
20889
20941
|
trackId: string(),
|
|
20890
|
-
|
|
20942
|
+
mediaIds: array(number().int()).min(1)
|
|
20891
20943
|
}), RetrainFrameSelectionSchema, {
|
|
20892
20944
|
kind: "mutation",
|
|
20893
20945
|
auth: "admin"
|
|
@@ -20955,7 +21007,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20955
21007
|
kind: "query",
|
|
20956
21008
|
auth: "admin"
|
|
20957
21009
|
}), method(object({
|
|
20958
|
-
|
|
21010
|
+
/** Which of the three event tables owns the row. */
|
|
21011
|
+
ownerType: EventOwnerTypeSchema,
|
|
21012
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
21013
|
+
eventId: number().int(),
|
|
20959
21014
|
kind: MediaFileKindEnum.optional(),
|
|
20960
21015
|
deviceId: number()
|
|
20961
21016
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
@@ -20966,7 +21021,8 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
20966
21021
|
trackId: string(),
|
|
20967
21022
|
deviceId: number()
|
|
20968
21023
|
}), array(MediaFileInfoSchema).readonly()), method(object({
|
|
20969
|
-
|
|
21024
|
+
ownerType: EventOwnerTypeSchema,
|
|
21025
|
+
eventId: number().int(),
|
|
20970
21026
|
deviceId: number()
|
|
20971
21027
|
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
20972
21028
|
kind: "mutation",
|
|
@@ -25429,8 +25485,8 @@ var IdentitySchema = object({
|
|
|
25429
25485
|
id: string(),
|
|
25430
25486
|
name: string(),
|
|
25431
25487
|
sampleCount: number().int().nonnegative(),
|
|
25432
|
-
|
|
25433
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
25488
|
+
coverMediaId: number().int().optional(),
|
|
25489
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
25434
25490
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
25435
25491
|
coverBase64: string().optional()
|
|
25436
25492
|
});
|
|
@@ -25456,8 +25512,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
25456
25512
|
enrolledAt: number().int(),
|
|
25457
25513
|
deviceId: number().int().optional(),
|
|
25458
25514
|
source: _enum(["detected", "photo"]),
|
|
25459
|
-
/** The enrolled crop's media
|
|
25460
|
-
|
|
25515
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
25516
|
+
mediaId: number().int().optional(),
|
|
25461
25517
|
/**
|
|
25462
25518
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
25463
25519
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -25526,15 +25582,15 @@ var FaceInfoSchema = object({
|
|
|
25526
25582
|
*/
|
|
25527
25583
|
cropUrl: string().optional(),
|
|
25528
25584
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
25529
|
-
* view draw the box over the native `
|
|
25585
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
25530
25586
|
* legacy rows written before design B. */
|
|
25531
25587
|
faceBbox: BoundingBoxSchema.optional(),
|
|
25532
25588
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
25533
25589
|
* Fetch the native JPEG via the event-media data-plane
|
|
25534
|
-
* (`/addon/<addonId>/event-media/<
|
|
25590
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
25535
25591
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
25536
25592
|
* back to the inline `base64` face crop. */
|
|
25537
|
-
|
|
25593
|
+
keyFrameMediaId: number().int().optional(),
|
|
25538
25594
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
25539
25595
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
25540
25596
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -25603,11 +25659,14 @@ var FaceClusterSchema = object({
|
|
|
25603
25659
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
25604
25660
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
25605
25661
|
*
|
|
25606
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
25607
|
-
* media
|
|
25662
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
25663
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
25664
|
+
* access decision.
|
|
25608
25665
|
*/
|
|
25609
25666
|
var MediaFileLiteSchema$1 = object({
|
|
25610
|
-
|
|
25667
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
25668
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
25669
|
+
mediaId: number().int(),
|
|
25611
25670
|
kind: string(),
|
|
25612
25671
|
url: string(),
|
|
25613
25672
|
sizeBytes: number(),
|
|
@@ -25624,7 +25683,7 @@ method(object({
|
|
|
25624
25683
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
25625
25684
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
25626
25685
|
*
|
|
25627
|
-
* Nothing loses its avatar: `
|
|
25686
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
25628
25687
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
25629
25688
|
*
|
|
25630
25689
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -28092,8 +28151,8 @@ var VehicleSchema = object({
|
|
|
28092
28151
|
id: string(),
|
|
28093
28152
|
name: string(),
|
|
28094
28153
|
sampleCount: number().int().nonnegative(),
|
|
28095
|
-
|
|
28096
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
28154
|
+
coverMediaId: number().int().optional(),
|
|
28155
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
28097
28156
|
coverBase64: string().optional()
|
|
28098
28157
|
});
|
|
28099
28158
|
var VehicleSampleInfoSchema = object({
|
|
@@ -28126,7 +28185,7 @@ var PlateInfoSchema = object({
|
|
|
28126
28185
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
28127
28186
|
plateBbox: BoundingBoxSchema.optional(),
|
|
28128
28187
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
28129
|
-
|
|
28188
|
+
keyFrameMediaId: number().int().optional(),
|
|
28130
28189
|
base64: string().optional(),
|
|
28131
28190
|
/**
|
|
28132
28191
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -28147,11 +28206,14 @@ var PlateInfoSchema = object({
|
|
|
28147
28206
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
28148
28207
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
28149
28208
|
*
|
|
28150
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
28151
|
-
* media
|
|
28209
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
28210
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
28211
|
+
* access decision.
|
|
28152
28212
|
*/
|
|
28153
28213
|
var MediaFileLiteSchema = object({
|
|
28154
|
-
|
|
28214
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
28215
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
28216
|
+
mediaId: number().int(),
|
|
28155
28217
|
kind: string(),
|
|
28156
28218
|
url: string(),
|
|
28157
28219
|
sizeBytes: number(),
|
|
@@ -28210,7 +28272,7 @@ method(object({
|
|
|
28210
28272
|
}), method(object({
|
|
28211
28273
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
28212
28274
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
28213
|
-
* option; `
|
|
28275
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
28214
28276
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
28215
28277
|
* resolves to `false` and is exactly the intended default. */
|
|
28216
28278
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()), method(object({ name: string().min(1) }), VehicleSchema, {
|
|
@@ -29534,7 +29596,14 @@ var SceneReferenceSchema = object({
|
|
|
29534
29596
|
modelId: string(),
|
|
29535
29597
|
condition: SceneConditionSchema,
|
|
29536
29598
|
capturedAt: number(),
|
|
29537
|
-
|
|
29599
|
+
/**
|
|
29600
|
+
* The reference thumbnail's media ROW id (D482).
|
|
29601
|
+
*
|
|
29602
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
29603
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
29604
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
29605
|
+
*/
|
|
29606
|
+
thumbnailMediaId: number().int().optional(),
|
|
29538
29607
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
29539
29608
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
29540
29609
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -30982,7 +31051,7 @@ var StationaryObjectSchema = object({
|
|
|
30982
31051
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
30983
31052
|
label: string().optional(),
|
|
30984
31053
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
30985
|
-
|
|
31054
|
+
keyFrameMediaId: number().int().optional()
|
|
30986
31055
|
});
|
|
30987
31056
|
var CameraOccupancySnapshotSchema = object({
|
|
30988
31057
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -32138,6 +32207,12 @@ Object.freeze({
|
|
|
32138
32207
|
addonId: null,
|
|
32139
32208
|
access: "create"
|
|
32140
32209
|
},
|
|
32210
|
+
"dataStoreProvider.upsert": {
|
|
32211
|
+
capName: "data-store-provider",
|
|
32212
|
+
capScope: "system",
|
|
32213
|
+
addonId: null,
|
|
32214
|
+
access: "create"
|
|
32215
|
+
},
|
|
32141
32216
|
"dayNight.getOptions": {
|
|
32142
32217
|
capName: "day-night",
|
|
32143
32218
|
capScope: "device",
|
|
@@ -36002,6 +36077,12 @@ Object.freeze({
|
|
|
36002
36077
|
addonId: null,
|
|
36003
36078
|
access: "create"
|
|
36004
36079
|
},
|
|
36080
|
+
"settingsStore.upsert": {
|
|
36081
|
+
capName: "settings-store",
|
|
36082
|
+
capScope: "system",
|
|
36083
|
+
addonId: null,
|
|
36084
|
+
access: "create"
|
|
36085
|
+
},
|
|
36005
36086
|
"smtpProvider.getStatus": {
|
|
36006
36087
|
capName: "smtp-provider",
|
|
36007
36088
|
capScope: "system",
|