@camstack/addon-post-analysis 1.1.25 → 1.1.26
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-CCC79h7t.js → dist-BEx5ST1W.js} +143 -6
- package/dist/{dist-Csk_yJr_.mjs → dist-DytVmDZg.mjs} +138 -7
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/enrichment-engine/index.js +2 -2
- package/dist/enrichment-engine/index.mjs +1 -1
- package/dist/{node-CIEkEv1F.js → node-Cg_cGqs0.js} +1 -1
- package/dist/pipeline-analytics/_stub.js +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Cb6Z2H5K.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-p-r6oXq8.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-DtOrjE2U.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C6LbOCa9.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-BrqCuPYQ.mjs → hostInit-2UZIpU0W.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +763 -40
- package/dist/pipeline-analytics/index.mjs +761 -38
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/dist/{resolve-frame-sKYbstL-.js → resolve-frame-Cbm_NFuq.js} +1 -1
- package/package.json +1 -1
|
@@ -4649,7 +4649,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4649
4649
|
return inst;
|
|
4650
4650
|
}
|
|
4651
4651
|
//#endregion
|
|
4652
|
-
//#region ../types/dist/sleep-
|
|
4652
|
+
//#region ../types/dist/sleep-BC9Yqte7.mjs
|
|
4653
4653
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4654
4654
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4655
4655
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7487,6 +7487,36 @@ var EncodeProfileSchema = object({
|
|
|
7487
7487
|
*/
|
|
7488
7488
|
outputArgs: array(string()).optional()
|
|
7489
7489
|
});
|
|
7490
|
+
/**
|
|
7491
|
+
* Per-call node pinning for `ctx.api` capability calls.
|
|
7492
|
+
*
|
|
7493
|
+
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
7494
|
+
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
7495
|
+
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
7496
|
+
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
7497
|
+
* call to that node.
|
|
7498
|
+
*
|
|
7499
|
+
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
7500
|
+
* method args), so capability method signatures stay `nodeId`-free — node
|
|
7501
|
+
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
7502
|
+
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
7503
|
+
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
7504
|
+
* which classifies a pinned agent node as `agent-child-forward`
|
|
7505
|
+
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
7506
|
+
*
|
|
7507
|
+
* Usage at a call site:
|
|
7508
|
+
*
|
|
7509
|
+
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
7510
|
+
*/
|
|
7511
|
+
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
7512
|
+
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
7513
|
+
/**
|
|
7514
|
+
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
7515
|
+
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
7516
|
+
*/
|
|
7517
|
+
function nodePin(nodeId) {
|
|
7518
|
+
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
7519
|
+
}
|
|
7490
7520
|
function hfModelUrl(repo, path) {
|
|
7491
7521
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
7492
7522
|
}
|
|
@@ -10892,6 +10922,25 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10892
10922
|
auth: "admin"
|
|
10893
10923
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10894
10924
|
/**
|
|
10925
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10926
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10927
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10928
|
+
* dims — no native resolution to plumb.
|
|
10929
|
+
*/
|
|
10930
|
+
var NativeCropBboxSchema = object({
|
|
10931
|
+
x: number(),
|
|
10932
|
+
y: number(),
|
|
10933
|
+
w: number(),
|
|
10934
|
+
h: number()
|
|
10935
|
+
});
|
|
10936
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10937
|
+
var NativeCropResultSchema = object({
|
|
10938
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10939
|
+
bytes: _instanceof(Uint8Array),
|
|
10940
|
+
width: number().int().positive(),
|
|
10941
|
+
height: number().int().positive()
|
|
10942
|
+
});
|
|
10943
|
+
/**
|
|
10895
10944
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10896
10945
|
* by both the Zod data schema (validation + default fallback) and
|
|
10897
10946
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11147,7 +11196,11 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11147
11196
|
avgInferenceTimeMs: number(),
|
|
11148
11197
|
queueDepth: number()
|
|
11149
11198
|
});
|
|
11150
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11199
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11200
|
+
handle: FrameHandleSchema,
|
|
11201
|
+
bbox: NativeCropBboxSchema,
|
|
11202
|
+
maxWidth: number().int().positive().optional()
|
|
11203
|
+
}), NativeCropResultSchema.nullable());
|
|
11151
11204
|
object({
|
|
11152
11205
|
detected: boolean(),
|
|
11153
11206
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15250,7 +15303,17 @@ var TrackSchema = object({
|
|
|
15250
15303
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15251
15304
|
totalDistance: number(),
|
|
15252
15305
|
state: TrackStateSchema,
|
|
15253
|
-
active: boolean()
|
|
15306
|
+
active: boolean(),
|
|
15307
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15308
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15309
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15310
|
+
importance: number().optional(),
|
|
15311
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15312
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15313
|
+
bestEventId: string().optional(),
|
|
15314
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15315
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15316
|
+
importanceReason: string().optional()
|
|
15254
15317
|
});
|
|
15255
15318
|
var BaseEventFields = {
|
|
15256
15319
|
id: string(),
|
|
@@ -15315,8 +15378,18 @@ var ObjectEventSchema = object({
|
|
|
15315
15378
|
frameHeight: number().optional(),
|
|
15316
15379
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15317
15380
|
mediaKey: string().optional(),
|
|
15381
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15382
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15383
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15384
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15385
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15386
|
+
keyFrameMediaKey: string().optional(),
|
|
15318
15387
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15319
|
-
mediaUrl: string().optional()
|
|
15388
|
+
mediaUrl: string().optional(),
|
|
15389
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15390
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15391
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15392
|
+
importance: number().optional()
|
|
15320
15393
|
});
|
|
15321
15394
|
var AudioEventSchema = object({
|
|
15322
15395
|
...BaseEventFields,
|
|
@@ -15340,7 +15413,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15340
15413
|
"fullFrame",
|
|
15341
15414
|
"fullFrameBoxed",
|
|
15342
15415
|
"faceCrop",
|
|
15343
|
-
"plateCrop"
|
|
15416
|
+
"plateCrop",
|
|
15417
|
+
"keyFrame"
|
|
15344
15418
|
]);
|
|
15345
15419
|
var MediaFileSchema = object({
|
|
15346
15420
|
key: string(),
|
|
@@ -15361,6 +15435,32 @@ var DeviceEventQueryInput = object({
|
|
|
15361
15435
|
projection: _enum(["full", "slim"]).optional()
|
|
15362
15436
|
});
|
|
15363
15437
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15438
|
+
var KeyEventQueryInput = object({
|
|
15439
|
+
deviceId: number(),
|
|
15440
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15441
|
+
since: number(),
|
|
15442
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15443
|
+
until: number(),
|
|
15444
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15445
|
+
/** Drop tracks scoring below this importance. */
|
|
15446
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15447
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15448
|
+
classFilter: string().optional()
|
|
15449
|
+
});
|
|
15450
|
+
var KeyEventSchema = object({
|
|
15451
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15452
|
+
id: string(),
|
|
15453
|
+
trackId: string(),
|
|
15454
|
+
/** Track start time (firstSeen). */
|
|
15455
|
+
timestamp: number(),
|
|
15456
|
+
className: string(),
|
|
15457
|
+
label: string().optional(),
|
|
15458
|
+
importance: number(),
|
|
15459
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15460
|
+
bestEventId: string(),
|
|
15461
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15462
|
+
windowMs: number().optional()
|
|
15463
|
+
});
|
|
15364
15464
|
var TrackedDetectionSchema = object({
|
|
15365
15465
|
trackId: string(),
|
|
15366
15466
|
className: string(),
|
|
@@ -15409,6 +15509,15 @@ var pipelineAnalyticsCapability = {
|
|
|
15409
15509
|
getMotionEvents: method(DeviceEventQueryInput, array(MotionEventSchema).readonly()),
|
|
15410
15510
|
getObjectEvents: method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()),
|
|
15411
15511
|
getAudioEvents: method(DeviceEventQueryInput, array(AudioEventSchema).readonly()),
|
|
15512
|
+
/**
|
|
15513
|
+
* Importance-ranked highlights for a device+window. Queries completed
|
|
15514
|
+
* tracks by (deviceId, firstSeen ∈ [since,until]), scores each (or reuses
|
|
15515
|
+
* the persisted score), filters by minImportance/classFilter, orders by
|
|
15516
|
+
* importance desc, and returns up to `limit` compact key events mapped to
|
|
15517
|
+
* each track's best event. Legacy tracks lacking a persisted score are
|
|
15518
|
+
* scored on-read (no write). Degrades to `[]` on error.
|
|
15519
|
+
*/
|
|
15520
|
+
getKeyEvents: method(KeyEventQueryInput, array(KeyEventSchema).readonly()),
|
|
15412
15521
|
/** Server-side bucketed event counts for the 24-hour timeline.
|
|
15413
15522
|
* Returns one entry per non-empty bucket; empty buckets are omitted. */
|
|
15414
15523
|
getEventDensity: method(object({
|
|
@@ -17375,7 +17484,17 @@ var FaceInfoSchema = object({
|
|
|
17375
17484
|
recognizedIdentityId: string().optional(),
|
|
17376
17485
|
identityName: string().optional(),
|
|
17377
17486
|
assigned: boolean(),
|
|
17378
|
-
base64: string().optional()
|
|
17487
|
+
base64: string().optional(),
|
|
17488
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17489
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17490
|
+
* legacy rows written before design B. */
|
|
17491
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17492
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17493
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17494
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17495
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17496
|
+
* back to the inline `base64` face crop. */
|
|
17497
|
+
keyFrameMediaKey: string().optional()
|
|
17379
17498
|
});
|
|
17380
17499
|
var FaceFilterEnum = _enum([
|
|
17381
17500
|
"unassigned",
|
|
@@ -21544,6 +21663,12 @@ Object.freeze({
|
|
|
21544
21663
|
addonId: null,
|
|
21545
21664
|
access: "view"
|
|
21546
21665
|
},
|
|
21666
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21667
|
+
capName: "pipeline-analytics",
|
|
21668
|
+
capScope: "device",
|
|
21669
|
+
addonId: null,
|
|
21670
|
+
access: "view"
|
|
21671
|
+
},
|
|
21547
21672
|
"pipelineAnalytics.getMotionEvents": {
|
|
21548
21673
|
capName: "pipeline-analytics",
|
|
21549
21674
|
capScope: "device",
|
|
@@ -22072,6 +22197,12 @@ Object.freeze({
|
|
|
22072
22197
|
addonId: null,
|
|
22073
22198
|
access: "view"
|
|
22074
22199
|
},
|
|
22200
|
+
"pipelineRunner.getNativeCrop": {
|
|
22201
|
+
capName: "pipeline-runner",
|
|
22202
|
+
capScope: "system",
|
|
22203
|
+
addonId: null,
|
|
22204
|
+
access: "view"
|
|
22205
|
+
},
|
|
22075
22206
|
"pipelineRunner.reportMotion": {
|
|
22076
22207
|
capName: "pipeline-runner",
|
|
22077
22208
|
capScope: "system",
|
|
@@ -23536,6 +23667,12 @@ Object.defineProperty(exports, "hydrateSchema", {
|
|
|
23536
23667
|
return hydrateSchema;
|
|
23537
23668
|
}
|
|
23538
23669
|
});
|
|
23670
|
+
Object.defineProperty(exports, "nodePin", {
|
|
23671
|
+
enumerable: true,
|
|
23672
|
+
get: function() {
|
|
23673
|
+
return nodePin;
|
|
23674
|
+
}
|
|
23675
|
+
});
|
|
23539
23676
|
Object.defineProperty(exports, "number", {
|
|
23540
23677
|
enumerable: true,
|
|
23541
23678
|
get: function() {
|
|
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4627
|
return inst;
|
|
4628
4628
|
}
|
|
4629
4629
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4630
|
+
//#region ../types/dist/sleep-BC9Yqte7.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7465,6 +7465,36 @@ var EncodeProfileSchema = object({
|
|
|
7465
7465
|
*/
|
|
7466
7466
|
outputArgs: array(string()).optional()
|
|
7467
7467
|
});
|
|
7468
|
+
/**
|
|
7469
|
+
* Per-call node pinning for `ctx.api` capability calls.
|
|
7470
|
+
*
|
|
7471
|
+
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
7472
|
+
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
7473
|
+
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
7474
|
+
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
7475
|
+
* call to that node.
|
|
7476
|
+
*
|
|
7477
|
+
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
7478
|
+
* method args), so capability method signatures stay `nodeId`-free — node
|
|
7479
|
+
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
7480
|
+
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
7481
|
+
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
7482
|
+
* which classifies a pinned agent node as `agent-child-forward`
|
|
7483
|
+
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
7484
|
+
*
|
|
7485
|
+
* Usage at a call site:
|
|
7486
|
+
*
|
|
7487
|
+
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
7488
|
+
*/
|
|
7489
|
+
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
7490
|
+
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
7491
|
+
/**
|
|
7492
|
+
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
7493
|
+
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
7494
|
+
*/
|
|
7495
|
+
function nodePin(nodeId) {
|
|
7496
|
+
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
7497
|
+
}
|
|
7468
7498
|
function hfModelUrl(repo, path) {
|
|
7469
7499
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
7470
7500
|
}
|
|
@@ -10870,6 +10900,25 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
10870
10900
|
auth: "admin"
|
|
10871
10901
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
10872
10902
|
/**
|
|
10903
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
10904
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
10905
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
10906
|
+
* dims — no native resolution to plumb.
|
|
10907
|
+
*/
|
|
10908
|
+
var NativeCropBboxSchema = object({
|
|
10909
|
+
x: number(),
|
|
10910
|
+
y: number(),
|
|
10911
|
+
w: number(),
|
|
10912
|
+
h: number()
|
|
10913
|
+
});
|
|
10914
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
10915
|
+
var NativeCropResultSchema = object({
|
|
10916
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
10917
|
+
bytes: _instanceof(Uint8Array),
|
|
10918
|
+
width: number().int().positive(),
|
|
10919
|
+
height: number().int().positive()
|
|
10920
|
+
});
|
|
10921
|
+
/**
|
|
10873
10922
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
10874
10923
|
* by both the Zod data schema (validation + default fallback) and
|
|
10875
10924
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -11125,7 +11174,11 @@ var RunnerLocalMetricsSchema = object({
|
|
|
11125
11174
|
avgInferenceTimeMs: number(),
|
|
11126
11175
|
queueDepth: number()
|
|
11127
11176
|
});
|
|
11128
|
-
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly())
|
|
11177
|
+
method(RunnerCameraConfigSchema, object({ success: literal(true) }), { kind: "mutation" }), method(object({ deviceId: number() }), object({ success: literal(true) }), { kind: "mutation" }), method(ReportMotionInputSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), RunnerLocalLoadSchema), method(_void(), RunnerLocalMetricsSchema), method(object({ deviceId: number() }), CameraMetricsSchema.nullable()), method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()), method(_void(), array(number()).readonly()), method(object({
|
|
11178
|
+
handle: FrameHandleSchema,
|
|
11179
|
+
bbox: NativeCropBboxSchema,
|
|
11180
|
+
maxWidth: number().int().positive().optional()
|
|
11181
|
+
}), NativeCropResultSchema.nullable());
|
|
11129
11182
|
object({
|
|
11130
11183
|
detected: boolean(),
|
|
11131
11184
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -15228,7 +15281,17 @@ var TrackSchema = object({
|
|
|
15228
15281
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
15229
15282
|
totalDistance: number(),
|
|
15230
15283
|
state: TrackStateSchema,
|
|
15231
|
-
active: boolean()
|
|
15284
|
+
active: boolean(),
|
|
15285
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
15286
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
15287
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
15288
|
+
importance: number().optional(),
|
|
15289
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
15290
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
15291
|
+
bestEventId: string().optional(),
|
|
15292
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
15293
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
15294
|
+
importanceReason: string().optional()
|
|
15232
15295
|
});
|
|
15233
15296
|
var BaseEventFields = {
|
|
15234
15297
|
id: string(),
|
|
@@ -15293,8 +15356,18 @@ var ObjectEventSchema = object({
|
|
|
15293
15356
|
frameHeight: number().optional(),
|
|
15294
15357
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
15295
15358
|
mediaKey: string().optional(),
|
|
15359
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
15360
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
15361
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
15362
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
15363
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
15364
|
+
keyFrameMediaKey: string().optional(),
|
|
15296
15365
|
/** Populated by B5 (recording playback URL for this event). */
|
|
15297
|
-
mediaUrl: string().optional()
|
|
15366
|
+
mediaUrl: string().optional(),
|
|
15367
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
15368
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
15369
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
15370
|
+
importance: number().optional()
|
|
15298
15371
|
});
|
|
15299
15372
|
var AudioEventSchema = object({
|
|
15300
15373
|
...BaseEventFields,
|
|
@@ -15318,7 +15391,8 @@ var MediaFileKindEnum = _enum([
|
|
|
15318
15391
|
"fullFrame",
|
|
15319
15392
|
"fullFrameBoxed",
|
|
15320
15393
|
"faceCrop",
|
|
15321
|
-
"plateCrop"
|
|
15394
|
+
"plateCrop",
|
|
15395
|
+
"keyFrame"
|
|
15322
15396
|
]);
|
|
15323
15397
|
var MediaFileSchema = object({
|
|
15324
15398
|
key: string(),
|
|
@@ -15339,6 +15413,32 @@ var DeviceEventQueryInput = object({
|
|
|
15339
15413
|
projection: _enum(["full", "slim"]).optional()
|
|
15340
15414
|
});
|
|
15341
15415
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
15416
|
+
var KeyEventQueryInput = object({
|
|
15417
|
+
deviceId: number(),
|
|
15418
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
15419
|
+
since: number(),
|
|
15420
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
15421
|
+
until: number(),
|
|
15422
|
+
limit: number().int().min(1).max(200).default(50),
|
|
15423
|
+
/** Drop tracks scoring below this importance. */
|
|
15424
|
+
minImportance: number().min(0).max(1).optional(),
|
|
15425
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
15426
|
+
classFilter: string().optional()
|
|
15427
|
+
});
|
|
15428
|
+
var KeyEventSchema = object({
|
|
15429
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
15430
|
+
id: string(),
|
|
15431
|
+
trackId: string(),
|
|
15432
|
+
/** Track start time (firstSeen). */
|
|
15433
|
+
timestamp: number(),
|
|
15434
|
+
className: string(),
|
|
15435
|
+
label: string().optional(),
|
|
15436
|
+
importance: number(),
|
|
15437
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
15438
|
+
bestEventId: string(),
|
|
15439
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
15440
|
+
windowMs: number().optional()
|
|
15441
|
+
});
|
|
15342
15442
|
var TrackedDetectionSchema = object({
|
|
15343
15443
|
trackId: string(),
|
|
15344
15444
|
className: string(),
|
|
@@ -15387,6 +15487,15 @@ var pipelineAnalyticsCapability = {
|
|
|
15387
15487
|
getMotionEvents: method(DeviceEventQueryInput, array(MotionEventSchema).readonly()),
|
|
15388
15488
|
getObjectEvents: method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()),
|
|
15389
15489
|
getAudioEvents: method(DeviceEventQueryInput, array(AudioEventSchema).readonly()),
|
|
15490
|
+
/**
|
|
15491
|
+
* Importance-ranked highlights for a device+window. Queries completed
|
|
15492
|
+
* tracks by (deviceId, firstSeen ∈ [since,until]), scores each (or reuses
|
|
15493
|
+
* the persisted score), filters by minImportance/classFilter, orders by
|
|
15494
|
+
* importance desc, and returns up to `limit` compact key events mapped to
|
|
15495
|
+
* each track's best event. Legacy tracks lacking a persisted score are
|
|
15496
|
+
* scored on-read (no write). Degrades to `[]` on error.
|
|
15497
|
+
*/
|
|
15498
|
+
getKeyEvents: method(KeyEventQueryInput, array(KeyEventSchema).readonly()),
|
|
15390
15499
|
/** Server-side bucketed event counts for the 24-hour timeline.
|
|
15391
15500
|
* Returns one entry per non-empty bucket; empty buckets are omitted. */
|
|
15392
15501
|
getEventDensity: method(object({
|
|
@@ -17353,7 +17462,17 @@ var FaceInfoSchema = object({
|
|
|
17353
17462
|
recognizedIdentityId: string().optional(),
|
|
17354
17463
|
identityName: string().optional(),
|
|
17355
17464
|
assigned: boolean(),
|
|
17356
|
-
base64: string().optional()
|
|
17465
|
+
base64: string().optional(),
|
|
17466
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
17467
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
17468
|
+
* legacy rows written before design B. */
|
|
17469
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
17470
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
17471
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
17472
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
17473
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
17474
|
+
* back to the inline `base64` face crop. */
|
|
17475
|
+
keyFrameMediaKey: string().optional()
|
|
17357
17476
|
});
|
|
17358
17477
|
var FaceFilterEnum = _enum([
|
|
17359
17478
|
"unassigned",
|
|
@@ -21522,6 +21641,12 @@ Object.freeze({
|
|
|
21522
21641
|
addonId: null,
|
|
21523
21642
|
access: "view"
|
|
21524
21643
|
},
|
|
21644
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
21645
|
+
capName: "pipeline-analytics",
|
|
21646
|
+
capScope: "device",
|
|
21647
|
+
addonId: null,
|
|
21648
|
+
access: "view"
|
|
21649
|
+
},
|
|
21525
21650
|
"pipelineAnalytics.getMotionEvents": {
|
|
21526
21651
|
capName: "pipeline-analytics",
|
|
21527
21652
|
capScope: "device",
|
|
@@ -22050,6 +22175,12 @@ Object.freeze({
|
|
|
22050
22175
|
addonId: null,
|
|
22051
22176
|
access: "view"
|
|
22052
22177
|
},
|
|
22178
|
+
"pipelineRunner.getNativeCrop": {
|
|
22179
|
+
capName: "pipeline-runner",
|
|
22180
|
+
capScope: "system",
|
|
22181
|
+
addonId: null,
|
|
22182
|
+
access: "view"
|
|
22183
|
+
},
|
|
22053
22184
|
"pipelineRunner.reportMotion": {
|
|
22054
22185
|
capName: "pipeline-runner",
|
|
22055
22186
|
capScope: "system",
|
|
@@ -23406,4 +23537,4 @@ object({
|
|
|
23406
23537
|
schemaVersion: literal(1)
|
|
23407
23538
|
});
|
|
23408
23539
|
//#endregion
|
|
23409
|
-
export {
|
|
23540
|
+
export { number as C, tuple as E, boolean as S, string as T, asJsonObject as _, embeddingEncoderCapability as a, _enum as b, nodePin as c, videoclipsCapability as d, zoneAnalyticsCapability as f, EventCategory as g, DeviceType as h, cosineSimilarity as i, pipelineAnalyticsCapability as l, BaseAddon as m, addonWidgetsSourceCapability as n, faceGalleryCapability as o, errMsg as p, audioMetricsCapability as r, hfModelUrl as s, EVENT_PAD_MS as t, plateGalleryCapability as u, createEvent as v, object as w, array as x, hydrateSchema as y };
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-BEx5ST1W.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_fs$1 = require_dist.__toESM(node_fs, 1);
|
|
8
8
|
node_fs = require_dist.__toESM(node_fs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as embeddingEncoderCapability,
|
|
1
|
+
import { a as embeddingEncoderCapability, m as BaseAddon, s as hfModelUrl } from "../dist-DytVmDZg.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
6
|
-
const require_resolve_frame = require("../resolve-frame-
|
|
5
|
+
const require_dist = require("../dist-BEx5ST1W.js");
|
|
6
|
+
const require_resolve_frame = require("../resolve-frame-Cbm_NFuq.js");
|
|
7
7
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
8
8
|
//#region src/enrichment-engine/types.ts
|
|
9
9
|
var DEFAULT_ENRICHMENT_CONFIG = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as
|
|
1
|
+
import { C as number, E as tuple, S as boolean, T as string, _ as asJsonObject, b as _enum, g as EventCategory, m as BaseAddon, v as createEvent, w as object, x as array } from "../dist-DytVmDZg.mjs";
|
|
2
2
|
import { n as extractCrop, t as resolveFrame } from "../resolve-frame-CT1T1tWy.mjs";
|
|
3
3
|
import { FrameRingReaderCache } from "@camstack/shm-ring";
|
|
4
4
|
//#region src/enrichment-engine/types.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C6LbOCa9.mjs";
|
|
4
4
|
import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
|
|
5
5
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
|
|
6
6
|
var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
|
|
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
|
|
|
3
3
|
var e = {
|
|
4
4
|
"@camstack/sdk": {
|
|
5
5
|
name: "@camstack/sdk",
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.23",
|
|
7
7
|
scope: ["default"],
|
|
8
8
|
loaded: !1,
|
|
9
9
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.1.
|
|
21
|
+
version: "1.1.42",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.1.
|
|
36
|
+
version: "1.1.34",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|