@camstack/addon-post-analysis 1.2.225 → 1.2.227
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/{dist-BypQW8jz.js → dist-BmhTo2Yp.js} +174 -62
- package/dist/{dist-B-cXIX_e.mjs → dist-C7-GAwZ9.mjs} +163 -57
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +35 -39
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CpDC7X_O.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-JHb4u0Nk.mjs} +3 -3
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BCU_bvyw.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-yat2fBJg.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-CchqWIpc.mjs → hostInit-Bui_t0wo.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +3525 -2786
- package/dist/pipeline-analytics/index.mjs +3525 -2786
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -2
|
@@ -29,7 +29,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
29
29
|
enumerable: true
|
|
30
30
|
}) : target, mod));
|
|
31
31
|
//#endregion
|
|
32
|
-
//#region ../types/dist/event-category-
|
|
32
|
+
//#region ../types/dist/event-category-ZyX6jcse.mjs
|
|
33
33
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
34
34
|
EventCategory["SystemBoot"] = "system.boot";
|
|
35
35
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -590,7 +590,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
590
590
|
* a package zone — a newly-appeared stationary object of a package class
|
|
591
591
|
* that cleared the class / zone / dwell / size gates. Payload:
|
|
592
592
|
* `PipelineAnalyticsPackageDeliveredPayload` carrying `{ deviceId,
|
|
593
|
-
* entryId, className, zoneIds,
|
|
593
|
+
* entryId, className, zoneIds, keyFrameMediaId?, bbox, timestamp }`.
|
|
594
594
|
* Telemetry (D8): the durable record is the `package-events` store row;
|
|
595
595
|
* this bus topic drives notifier rules + live UI. See
|
|
596
596
|
* docs/superpowers/specs/2026-07-17-package-zones-design.md §5.1.
|
|
@@ -5376,7 +5376,7 @@ var ZodIssueCode = {
|
|
|
5376
5376
|
var ZodFirstPartyTypeKind;
|
|
5377
5377
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5378
5378
|
//#endregion
|
|
5379
|
-
//#region ../types/dist/sleep-
|
|
5379
|
+
//#region ../types/dist/sleep-CnLyvg3w.mjs
|
|
5380
5380
|
/**
|
|
5381
5381
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5382
5382
|
* window to float samples (D455).
|
|
@@ -7522,7 +7522,7 @@ function errMsg(err) {
|
|
|
7522
7522
|
if (typeof err === "string") return err;
|
|
7523
7523
|
return String(err);
|
|
7524
7524
|
}
|
|
7525
|
-
new Set([
|
|
7525
|
+
var OWNER_TYPES = new Set([
|
|
7526
7526
|
"track",
|
|
7527
7527
|
"summary",
|
|
7528
7528
|
"face",
|
|
@@ -7532,12 +7532,20 @@ new Set([
|
|
|
7532
7532
|
"scene",
|
|
7533
7533
|
"motion",
|
|
7534
7534
|
"object",
|
|
7535
|
-
"audio"
|
|
7535
|
+
"audio",
|
|
7536
|
+
"mosaic"
|
|
7536
7537
|
]);
|
|
7537
|
-
/**
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7538
|
+
/**
|
|
7539
|
+
* Is this string a declared media owner type?
|
|
7540
|
+
*
|
|
7541
|
+
* Exported because the `event-media` plane's path parser needs it (D482): a
|
|
7542
|
+
* path segment is an arbitrary string until something narrows it, and a
|
|
7543
|
+
* hand-written list at the door would drift from {@link MEDIA_OWNER_TYPES} the
|
|
7544
|
+
* day an owner kind is added — the failure this module's own docblock already
|
|
7545
|
+
* records for `vehicle` and `scene`.
|
|
7546
|
+
*/
|
|
7547
|
+
function isMediaOwnerType(value) {
|
|
7548
|
+
return OWNER_TYPES.has(value);
|
|
7541
7549
|
}
|
|
7542
7550
|
/**
|
|
7543
7551
|
* The owner types that are event tables, in the order the event-media resolver
|
|
@@ -7549,7 +7557,21 @@ var EVENT_OWNER_TYPES = [
|
|
|
7549
7557
|
"object",
|
|
7550
7558
|
"audio"
|
|
7551
7559
|
];
|
|
7552
|
-
|
|
7560
|
+
/**
|
|
7561
|
+
* The same list as a Zod enum, for the cap inputs that must NAME the table
|
|
7562
|
+
* (D482: `getEventMedia` / `listEventMedia` take an owner, and an owner is
|
|
7563
|
+
* `(table, id)`).
|
|
7564
|
+
*
|
|
7565
|
+
* Built FROM {@link EVENT_OWNER_TYPES} rather than re-spelled: a fourth event
|
|
7566
|
+
* table would otherwise be accepted by the codec and refused at the door, with
|
|
7567
|
+
* nothing failing until a caller asked.
|
|
7568
|
+
*/
|
|
7569
|
+
var EventOwnerTypeSchema = _enum(EVENT_OWNER_TYPES);
|
|
7570
|
+
var EVENT_OWNER_TYPE_SET = new Set(EVENT_OWNER_TYPES);
|
|
7571
|
+
/** True when this key's owner is one of the three event tables. */
|
|
7572
|
+
function isEventOwnerType(ownerType) {
|
|
7573
|
+
return EVENT_OWNER_TYPE_SET.has(ownerType);
|
|
7574
|
+
}
|
|
7553
7575
|
var EncodeProfileSchema = object({
|
|
7554
7576
|
video: object({
|
|
7555
7577
|
codec: _enum([
|
|
@@ -13153,6 +13175,16 @@ method(object({
|
|
|
13153
13175
|
filter: QueryFilterSchema.optional(),
|
|
13154
13176
|
columns: array(string()).readonly().optional()
|
|
13155
13177
|
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
13178
|
+
namespace: string().optional(),
|
|
13179
|
+
collection: string(),
|
|
13180
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
13181
|
+
* index on the collection. Never empty. */
|
|
13182
|
+
conflict: array(string()).readonly(),
|
|
13183
|
+
record: BulkRecordSchema
|
|
13184
|
+
}), object({
|
|
13185
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
13186
|
+
* row's own id on an update. */
|
|
13187
|
+
id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
13156
13188
|
namespace: string().optional(),
|
|
13157
13189
|
collection: string(),
|
|
13158
13190
|
record: object({
|
|
@@ -13287,6 +13319,14 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
13287
13319
|
id: union([string(), number()]) }), {
|
|
13288
13320
|
kind: "mutation",
|
|
13289
13321
|
auth: "admin"
|
|
13322
|
+
}), method(object({
|
|
13323
|
+
namespace: string().optional(),
|
|
13324
|
+
collection: string(),
|
|
13325
|
+
conflict: array(string()).readonly(),
|
|
13326
|
+
record: BulkRecordSchema
|
|
13327
|
+
}), object({ id: union([string(), number()]) }), {
|
|
13328
|
+
kind: "mutation",
|
|
13329
|
+
auth: "admin"
|
|
13290
13330
|
}), method(object({
|
|
13291
13331
|
namespace: string().optional(),
|
|
13292
13332
|
collection: string(),
|
|
@@ -20355,8 +20395,8 @@ var TrackPositionSchema = object({
|
|
|
20355
20395
|
var TrackSnapshotSchema = object({
|
|
20356
20396
|
timestamp: number(),
|
|
20357
20397
|
position: TrackPositionSchema,
|
|
20358
|
-
/**
|
|
20359
|
-
|
|
20398
|
+
/** The snapshot's media row id (D482); resolve via `listTrackMedia({ trackId })`. */
|
|
20399
|
+
mediaId: number().int()
|
|
20360
20400
|
});
|
|
20361
20401
|
/**
|
|
20362
20402
|
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
@@ -20960,14 +21000,14 @@ var ObjectEventSchema = object({
|
|
|
20960
21000
|
* pixel-space `bbox` onto a displayed image. Omitted in slim projection. */
|
|
20961
21001
|
frameWidth: number().optional(),
|
|
20962
21002
|
frameHeight: number().optional(),
|
|
20963
|
-
/**
|
|
20964
|
-
|
|
20965
|
-
/** Design B:
|
|
21003
|
+
/** Media row id of the crop attached to this event (if any) — D482. */
|
|
21004
|
+
mediaId: number().int().optional(),
|
|
21005
|
+
/** Design B: media row id of the track's native-resolution key frame (the
|
|
20966
21006
|
* best-detection full frame). Resolve via the event-media data-plane
|
|
20967
|
-
* (`/addon/<addonId>/event-media/<
|
|
21007
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`) for a detail view that
|
|
20968
21008
|
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
20969
|
-
* sources — consumers fall back to `
|
|
20970
|
-
|
|
21009
|
+
* sources — consumers fall back to `mediaId` (the tight crop). */
|
|
21010
|
+
keyFrameMediaId: number().int().optional(),
|
|
20971
21011
|
/** Populated by B5 (recording playback URL for this event). */
|
|
20972
21012
|
mediaUrl: string().optional(),
|
|
20973
21013
|
/** The parent track's key-event importance [0,1], propagated to every object
|
|
@@ -21017,7 +21057,7 @@ var MediaFileKindEnum = _enum([
|
|
|
21017
21057
|
* hub-main's heap on the way past — for an `<img>` that would have cached it.
|
|
21018
21058
|
*
|
|
21019
21059
|
* `url` points at the `event-media` data plane
|
|
21020
|
-
* (`/addon/<addonId>/event-media/<
|
|
21060
|
+
* (`/addon/<addonId>/event-media/m/<mediaId>` — D482), which serves the same blob
|
|
21021
21061
|
* with an ETag and `Cache-Control: immutable`, honours conditional GETs, can
|
|
21022
21062
|
* render a `?variant=thumb`, and streams. The hub gate in front of it requires
|
|
21023
21063
|
* a bearer or the session cookie (`access: 'authenticated'`), so the bytes are
|
|
@@ -21025,10 +21065,13 @@ var MediaFileKindEnum = _enum([
|
|
|
21025
21065
|
* `data-plane-access.ts` for the rule and the one gap it does not close
|
|
21026
21066
|
* (per-device scoping).
|
|
21027
21067
|
*
|
|
21028
|
-
* The URL is built from the row's
|
|
21029
|
-
*
|
|
21068
|
+
* The URL is built from the row's own id, which since D482 says nothing about
|
|
21069
|
+
* the row's owner or kind — and that is the point. The published `kind` is not
|
|
21070
|
+
* the stored one (a track's face/plate crop is stored as `crop` under
|
|
21030
21071
|
* `('face'|'plate', '<prefix>-<trackId>')` and published as
|
|
21031
|
-
* `faceCrop`/`plateCrop
|
|
21072
|
+
* `faceCrop`/`plateCrop`), and under the old composite key the URL had to be
|
|
21073
|
+
* taken from `row.key` verbatim or it 404'd exactly those two rows. An id
|
|
21074
|
+
* cannot be mis-reconstructed, because there is nothing in it to reconstruct.
|
|
21032
21075
|
*
|
|
21033
21076
|
* ## `base64` is TRANSITIONAL and is going away
|
|
21034
21077
|
*
|
|
@@ -21041,7 +21084,19 @@ var MediaFileKindEnum = _enum([
|
|
|
21041
21084
|
* `analytics-query-facade.ts`; nothing else reads it.
|
|
21042
21085
|
*/
|
|
21043
21086
|
var MediaFileSchema = object({
|
|
21044
|
-
|
|
21087
|
+
/**
|
|
21088
|
+
* The media row's OWN id — the rowid SQLite assigned it (D482).
|
|
21089
|
+
*
|
|
21090
|
+
* It used to be the row's composite key, `<ownerType>:<ownerId>:<fileKind>
|
|
21091
|
+
* [:<timestampMs>]`, which embedded a FOREIGN id. D474 made event ids
|
|
21092
|
+
* per-table rowid aliases, so `object:101314` and `motion:101314` are two
|
|
21093
|
+
* different rows that spell the same number, and a track whose
|
|
21094
|
+
* `bestEventId` was an object event was served a motion event's snapshot —
|
|
21095
|
+
* a night-time thumbnail on an afternoon track, with no error anywhere. A
|
|
21096
|
+
* surrogate id cannot name the wrong row's owner, because it names no owner
|
|
21097
|
+
* at all.
|
|
21098
|
+
*/
|
|
21099
|
+
mediaId: number().int(),
|
|
21045
21100
|
kind: MediaFileKindEnum,
|
|
21046
21101
|
sizeBytes: number(),
|
|
21047
21102
|
timestamp: number()
|
|
@@ -21149,7 +21204,7 @@ var RetrainTrackSchema = object({
|
|
|
21149
21204
|
});
|
|
21150
21205
|
/** A frame the picker may offer — an index row, no blob was read to produce it. */
|
|
21151
21206
|
var RetrainFrameCandidateSchema = object({
|
|
21152
|
-
|
|
21207
|
+
mediaId: number().int(),
|
|
21153
21208
|
kind: MediaFileKindEnum,
|
|
21154
21209
|
timestamp: number(),
|
|
21155
21210
|
sizeBytes: number().int(),
|
|
@@ -21163,7 +21218,7 @@ var RetrainFrameSchema = object({
|
|
|
21163
21218
|
deviceId: number(),
|
|
21164
21219
|
trackId: string(),
|
|
21165
21220
|
/** Provenance only. It may already point at nothing — that is expected. */
|
|
21166
|
-
|
|
21221
|
+
sourceMediaId: number().int(),
|
|
21167
21222
|
sourceKind: MediaFileKindEnum,
|
|
21168
21223
|
sizeBytes: number().int(),
|
|
21169
21224
|
width: number().int(),
|
|
@@ -21179,7 +21234,7 @@ var RetrainCopyRefusalSchema = _enum([
|
|
|
21179
21234
|
var RetrainFrameSelectionSchema = object({
|
|
21180
21235
|
copied: array(RetrainFrameSchema).readonly(),
|
|
21181
21236
|
refused: array(object({
|
|
21182
|
-
|
|
21237
|
+
sourceMediaId: number().int(),
|
|
21183
21238
|
reason: RetrainCopyRefusalSchema
|
|
21184
21239
|
})).readonly()
|
|
21185
21240
|
});
|
|
@@ -21187,7 +21242,7 @@ var RetrainFrameListSchema = object({
|
|
|
21187
21242
|
candidates: array(RetrainFrameCandidateSchema).readonly(),
|
|
21188
21243
|
copies: array(RetrainFrameSchema).readonly(),
|
|
21189
21244
|
/** What the page pre-selects — the native key frame when one survives. */
|
|
21190
|
-
|
|
21245
|
+
autoPickMediaId: number().int().optional()
|
|
21191
21246
|
});
|
|
21192
21247
|
/** What the operator asked the assist to look for. */
|
|
21193
21248
|
var RetrainAssistSubjectSchema = discriminatedUnion("kind", [object({
|
|
@@ -21282,9 +21337,11 @@ var RecentTracksQueryInput = object({
|
|
|
21282
21337
|
});
|
|
21283
21338
|
/**
|
|
21284
21339
|
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
21285
|
-
* `
|
|
21286
|
-
* served by the event-media plane
|
|
21287
|
-
* member visible has been materialised
|
|
21340
|
+
* `groupShotMediaId` is the media ROW id of its group shot (`ownerKind:
|
|
21341
|
+
* 'summary'`, served by the event-media plane at `/m/<id>`), null until the
|
|
21342
|
+
* first frame with a member visible has been materialised (D482 — it was the
|
|
21343
|
+
* row's composite key, which embedded the owner and could name another table's
|
|
21344
|
+
* row once event ids became per-table rowids).
|
|
21288
21345
|
*/
|
|
21289
21346
|
var SummarySchema = object({
|
|
21290
21347
|
id: string(),
|
|
@@ -21293,7 +21350,7 @@ var SummarySchema = object({
|
|
|
21293
21350
|
lastActiveAt: number(),
|
|
21294
21351
|
sealedAt: number().nullable(),
|
|
21295
21352
|
memberCount: number().int().nonnegative(),
|
|
21296
|
-
|
|
21353
|
+
groupShotMediaId: number().int().nullable()
|
|
21297
21354
|
});
|
|
21298
21355
|
var SummariesQueryInput = object({
|
|
21299
21356
|
deviceIds: array(number()).min(1),
|
|
@@ -22276,7 +22333,7 @@ var pipelineAnalyticsCapability = {
|
|
|
22276
22333
|
selectRetrainFrames: method(object({
|
|
22277
22334
|
deviceId: number(),
|
|
22278
22335
|
trackId: string(),
|
|
22279
|
-
|
|
22336
|
+
mediaIds: array(number().int()).min(1)
|
|
22280
22337
|
}), RetrainFrameSelectionSchema, {
|
|
22281
22338
|
kind: "mutation",
|
|
22282
22339
|
auth: "admin"
|
|
@@ -22440,8 +22497,29 @@ var pipelineAnalyticsCapability = {
|
|
|
22440
22497
|
kind: "query",
|
|
22441
22498
|
auth: "admin"
|
|
22442
22499
|
}),
|
|
22500
|
+
/**
|
|
22501
|
+
* The media an EVENT owns.
|
|
22502
|
+
*
|
|
22503
|
+
* `ownerType` is REQUIRED, and that is the whole correction (D482). An
|
|
22504
|
+
* event is a row in ONE of three tables, and since D474 each numbers from
|
|
22505
|
+
* 1 independently: `motion:101314` and `object:101314` both exist. This
|
|
22506
|
+
* method took a bare `eventId` and the provider probed motion → object →
|
|
22507
|
+
* audio, stopping at the first hit — so on the live hub, where object
|
|
22508
|
+
* events own no media of their own and 299 883 of 300 559 media rows are
|
|
22509
|
+
* motion-owned, EVERY object event resolved to its motion namesake. A
|
|
22510
|
+
* track from 17:34 on camera 615 was served a snapshot from 22:35 eleven
|
|
22511
|
+
* days earlier, silently.
|
|
22512
|
+
*
|
|
22513
|
+
* D476 had already disambiguated the KEY (`motion:` vs `object:`); this is
|
|
22514
|
+
* the API catching up to it. Naming the table is not a "qualification" of
|
|
22515
|
+
* the ambiguity — a listing BY OWNER has no address to make surrogate: the
|
|
22516
|
+
* owner IS (table, id), and half of it is not a question.
|
|
22517
|
+
*/
|
|
22443
22518
|
getEventMedia: method(object({
|
|
22444
|
-
|
|
22519
|
+
/** Which of the three event tables owns the row. */
|
|
22520
|
+
ownerType: EventOwnerTypeSchema,
|
|
22521
|
+
/** The event's rowid in that table (D474: an event id is a number). */
|
|
22522
|
+
eventId: number().int(),
|
|
22445
22523
|
kind: MediaFileKindEnum.optional(),
|
|
22446
22524
|
deviceId: number()
|
|
22447
22525
|
}), array(MediaFileSchema).readonly()),
|
|
@@ -22486,11 +22564,14 @@ var pipelineAnalyticsCapability = {
|
|
|
22486
22564
|
* the live hub: one event's `fullFrameBoxed` is 2 824 077 B, base64'd to
|
|
22487
22565
|
* ~3.8 MB, allocated whole in hub-main's heap, for a list of keys.
|
|
22488
22566
|
*
|
|
22489
|
-
* Same `deviceId` authorization subject as `getEventMedia`,
|
|
22490
|
-
*
|
|
22567
|
+
* Same `deviceId` authorization subject as `getEventMedia`, the same
|
|
22568
|
+
* REQUIRED `ownerType` (read that method's docblock for the night-time
|
|
22569
|
+
* thumbnail this closes — D482), and the same rows: this is a projection
|
|
22570
|
+
* of that method, never a different question.
|
|
22491
22571
|
*/
|
|
22492
22572
|
listEventMedia: method(object({
|
|
22493
|
-
|
|
22573
|
+
ownerType: EventOwnerTypeSchema,
|
|
22574
|
+
eventId: number().int(),
|
|
22494
22575
|
deviceId: number()
|
|
22495
22576
|
}), array(MediaFileInfoSchema).readonly()),
|
|
22496
22577
|
/**
|
|
@@ -27778,8 +27859,8 @@ var IdentitySchema = object({
|
|
|
27778
27859
|
id: string(),
|
|
27779
27860
|
name: string(),
|
|
27780
27861
|
sampleCount: number().int().nonnegative(),
|
|
27781
|
-
|
|
27782
|
-
/** Inline base64 of the cover sample's crop, resolved from `
|
|
27862
|
+
coverMediaId: number().int().optional(),
|
|
27863
|
+
/** Inline base64 of the cover sample's crop, resolved from `coverMediaId`.
|
|
27783
27864
|
* Lets the UI render the person's face avatar instead of a placeholder icon. */
|
|
27784
27865
|
coverBase64: string().optional()
|
|
27785
27866
|
});
|
|
@@ -27805,8 +27886,8 @@ var IdentitySampleAuditRowSchema = object({
|
|
|
27805
27886
|
enrolledAt: number().int(),
|
|
27806
27887
|
deviceId: number().int().optional(),
|
|
27807
27888
|
source: _enum(["detected", "photo"]),
|
|
27808
|
-
/** The enrolled crop's media
|
|
27809
|
-
|
|
27889
|
+
/** The enrolled crop's media row id, so the panel can show the evidence. */
|
|
27890
|
+
mediaId: number().int().optional(),
|
|
27810
27891
|
/**
|
|
27811
27892
|
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
27812
27893
|
* across feature spaces is a well-formed float with no meaning. Every number
|
|
@@ -27875,15 +27956,15 @@ var FaceInfoSchema = object({
|
|
|
27875
27956
|
*/
|
|
27876
27957
|
cropUrl: string().optional(),
|
|
27877
27958
|
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
27878
|
-
* view draw the box over the native `
|
|
27959
|
+
* view draw the box over the native `keyFrameMediaId` frame. Absent on
|
|
27879
27960
|
* legacy rows written before design B. */
|
|
27880
27961
|
faceBbox: BoundingBoxSchema.optional(),
|
|
27881
27962
|
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
27882
27963
|
* Fetch the native JPEG via the event-media data-plane
|
|
27883
|
-
* (`/addon/<addonId>/event-media/<
|
|
27964
|
+
* (`/addon/<addonId>/event-media/m/<keyFrameMediaId>`). Absent when the
|
|
27884
27965
|
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
27885
27966
|
* back to the inline `base64` face crop. */
|
|
27886
|
-
|
|
27967
|
+
keyFrameMediaId: number().int().optional(),
|
|
27887
27968
|
/** Winning identity-match cosine (0..1) for this face's track, when an
|
|
27888
27969
|
* identity was auto-confirmed. Lets the UI surface WHY a face was assigned
|
|
27889
27970
|
* (confidence badge / low-confidence audit). Absent on legacy rows and on
|
|
@@ -27952,11 +28033,14 @@ var FaceClusterSchema = object({
|
|
|
27952
28033
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
27953
28034
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
27954
28035
|
*
|
|
27955
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
27956
|
-
* media
|
|
28036
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
28037
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
28038
|
+
* access decision.
|
|
27957
28039
|
*/
|
|
27958
28040
|
var MediaFileLiteSchema$1 = object({
|
|
27959
|
-
|
|
28041
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
28042
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
28043
|
+
mediaId: number().int(),
|
|
27960
28044
|
kind: string(),
|
|
27961
28045
|
url: string(),
|
|
27962
28046
|
sizeBytes: number(),
|
|
@@ -27978,7 +28062,7 @@ var faceGalleryCapability = {
|
|
|
27978
28062
|
* covers inline, ~10 KB of base64 per row, on a query this UI mounts
|
|
27979
28063
|
* four times and the viewer holds at `staleTime: 30_000`.
|
|
27980
28064
|
*
|
|
27981
|
-
* Nothing loses its avatar: `
|
|
28065
|
+
* Nothing loses its avatar: `coverMediaId` is already on every row and
|
|
27982
28066
|
* the `event-media` plane serves that key `immutable` with an ETag.
|
|
27983
28067
|
*
|
|
27984
28068
|
* **This is an INPUT field, so it does not reach the addon until the
|
|
@@ -31400,8 +31484,8 @@ var VehicleSchema = object({
|
|
|
31400
31484
|
id: string(),
|
|
31401
31485
|
name: string(),
|
|
31402
31486
|
sampleCount: number().int().nonnegative(),
|
|
31403
|
-
|
|
31404
|
-
/** Inline base64 of the cover sample's plate crop, resolved from `
|
|
31487
|
+
coverMediaId: number().int().optional(),
|
|
31488
|
+
/** Inline base64 of the cover sample's plate crop, resolved from `coverMediaId`. */
|
|
31405
31489
|
coverBase64: string().optional()
|
|
31406
31490
|
});
|
|
31407
31491
|
var VehicleSampleInfoSchema = object({
|
|
@@ -31434,7 +31518,7 @@ var PlateInfoSchema = object({
|
|
|
31434
31518
|
/** keyFrame parity: the plate bbox (pixel space) on the native key frame. */
|
|
31435
31519
|
plateBbox: BoundingBoxSchema.optional(),
|
|
31436
31520
|
/** keyFrame parity: MediaStore key of the track's native-resolution key frame. */
|
|
31437
|
-
|
|
31521
|
+
keyFrameMediaId: number().int().optional(),
|
|
31438
31522
|
base64: string().optional(),
|
|
31439
31523
|
/**
|
|
31440
31524
|
* Same crop as a data-plane URL, always present when the plate has a stored
|
|
@@ -31455,11 +31539,14 @@ var PlateInfoSchema = object({
|
|
|
31455
31539
|
* `data:image/jpeg;base64,…` from a row whose `key` sat right beside it, in a
|
|
31456
31540
|
* dialog already rendering its key FRAME from the `event-media` plane.
|
|
31457
31541
|
*
|
|
31458
|
-
* `url` is `/addon/<addonId>/event-media/<
|
|
31459
|
-
* media
|
|
31542
|
+
* `url` is `/addon/<addonId>/event-media/m/<mediaId>` (D482). The plane
|
|
31543
|
+
* resolves a media row by its own id, so this needed no new plane and no new
|
|
31544
|
+
* access decision.
|
|
31460
31545
|
*/
|
|
31461
31546
|
var MediaFileLiteSchema = object({
|
|
31462
|
-
|
|
31547
|
+
/** The media row's own id — the same address `MediaFileRef.mediaId` carries
|
|
31548
|
+
* (D482). It was the row's composite key, which embedded the owner. */
|
|
31549
|
+
mediaId: number().int(),
|
|
31463
31550
|
kind: string(),
|
|
31464
31551
|
url: string(),
|
|
31465
31552
|
sizeBytes: number(),
|
|
@@ -31541,7 +31628,7 @@ var plateGalleryCapability = {
|
|
|
31541
31628
|
listVehicles: method(object({
|
|
31542
31629
|
/** Inline {@link VehicleSchema.coverBase64} on every row. Default
|
|
31543
31630
|
* `false` — the vehicle twin of `faceGallery.listIdentities`'s
|
|
31544
|
-
* option; `
|
|
31631
|
+
* option; `coverMediaId` + the `event-media` plane carry the picture.
|
|
31545
31632
|
* INPUT field: stripped by the hub router until the train ships, which
|
|
31546
31633
|
* resolves to `false` and is exactly the intended default. */
|
|
31547
31634
|
includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly()),
|
|
@@ -33145,7 +33232,14 @@ var SceneReferenceSchema = object({
|
|
|
33145
33232
|
modelId: string(),
|
|
33146
33233
|
condition: SceneConditionSchema,
|
|
33147
33234
|
capturedAt: number(),
|
|
33148
|
-
|
|
33235
|
+
/**
|
|
33236
|
+
* The reference thumbnail's media ROW id (D482).
|
|
33237
|
+
*
|
|
33238
|
+
* The name already said `mediaId` while the value was the row's composite
|
|
33239
|
+
* key — a leftover that read as done and was not. It is the row's own id
|
|
33240
|
+
* now, addressed at `/addon/<addonId>/event-media/m/<id>`.
|
|
33241
|
+
*/
|
|
33242
|
+
thumbnailMediaId: number().int().optional(),
|
|
33149
33243
|
/** Whole-frame (downscaled) embedding captured alongside the ROI crop. The
|
|
33150
33244
|
* anti-view-shift anchor: a bumped camera, a PTZ preset or a re-aim makes the
|
|
33151
33245
|
* normalized rect frame a different piece of world, and the scene would
|
|
@@ -35130,7 +35224,7 @@ var StationaryObjectSchema = object({
|
|
|
35130
35224
|
/** Enrichment label carried from the source track (identity / plate). */
|
|
35131
35225
|
label: string().optional(),
|
|
35132
35226
|
/** Native-resolution key-frame media key for the parked object's best image. */
|
|
35133
|
-
|
|
35227
|
+
keyFrameMediaId: number().int().optional()
|
|
35134
35228
|
});
|
|
35135
35229
|
var CameraOccupancySnapshotSchema = object({
|
|
35136
35230
|
/** Frame timestamp of the inference result that produced this snapshot. */
|
|
@@ -37644,6 +37738,12 @@ Object.freeze({
|
|
|
37644
37738
|
addonId: null,
|
|
37645
37739
|
access: "create"
|
|
37646
37740
|
},
|
|
37741
|
+
"dataStoreProvider.upsert": {
|
|
37742
|
+
capName: "data-store-provider",
|
|
37743
|
+
capScope: "system",
|
|
37744
|
+
addonId: null,
|
|
37745
|
+
access: "create"
|
|
37746
|
+
},
|
|
37647
37747
|
"dayNight.getOptions": {
|
|
37648
37748
|
capName: "day-night",
|
|
37649
37749
|
capScope: "device",
|
|
@@ -41508,6 +41608,12 @@ Object.freeze({
|
|
|
41508
41608
|
addonId: null,
|
|
41509
41609
|
access: "create"
|
|
41510
41610
|
},
|
|
41611
|
+
"settingsStore.upsert": {
|
|
41612
|
+
capName: "settings-store",
|
|
41613
|
+
capScope: "system",
|
|
41614
|
+
addonId: null,
|
|
41615
|
+
access: "create"
|
|
41616
|
+
},
|
|
41511
41617
|
"smtpProvider.getStatus": {
|
|
41512
41618
|
capName: "smtp-provider",
|
|
41513
41619
|
capScope: "system",
|
|
@@ -46366,12 +46472,6 @@ Object.defineProperty(exports, "failureContributionCapability", {
|
|
|
46366
46472
|
return failureContributionCapability;
|
|
46367
46473
|
}
|
|
46368
46474
|
});
|
|
46369
|
-
Object.defineProperty(exports, "formatMediaOwnerKey", {
|
|
46370
|
-
enumerable: true,
|
|
46371
|
-
get: function() {
|
|
46372
|
-
return formatMediaOwnerKey;
|
|
46373
|
-
}
|
|
46374
|
-
});
|
|
46375
46475
|
Object.defineProperty(exports, "hfModelUrl", {
|
|
46376
46476
|
enumerable: true,
|
|
46377
46477
|
get: function() {
|
|
@@ -46396,6 +46496,18 @@ Object.defineProperty(exports, "isDeviceScopedCap", {
|
|
|
46396
46496
|
return isDeviceScopedCap;
|
|
46397
46497
|
}
|
|
46398
46498
|
});
|
|
46499
|
+
Object.defineProperty(exports, "isEventOwnerType", {
|
|
46500
|
+
enumerable: true,
|
|
46501
|
+
get: function() {
|
|
46502
|
+
return isEventOwnerType;
|
|
46503
|
+
}
|
|
46504
|
+
});
|
|
46505
|
+
Object.defineProperty(exports, "isMediaOwnerType", {
|
|
46506
|
+
enumerable: true,
|
|
46507
|
+
get: function() {
|
|
46508
|
+
return isMediaOwnerType;
|
|
46509
|
+
}
|
|
46510
|
+
});
|
|
46399
46511
|
Object.defineProperty(exports, "isScheduleActive", {
|
|
46400
46512
|
enumerable: true,
|
|
46401
46513
|
get: function() {
|