@camstack/addon-pipeline 1.1.53 → 1.1.55
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/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +289 -1469
- package/dist/detection-pipeline/index.mjs +269 -1449
- package/dist/{dist-DWb62H5U.js → dist-DI57FC8K.js} +167 -8
- package/dist/{dist-BalxNwOt.mjs → dist-RWGGPwVx.mjs} +167 -8
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +772 -21
- package/dist/pipeline-runner/index.mjs +772 -22
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/{remote-source-plane-CZpzIVro.js → remote-source-plane-CHgvzzA6.js} +1 -1
- package/dist/{remote-source-plane-BCJW5CvF.mjs → remote-source-plane-DU0aRSPv.mjs} +1 -1
- package/dist/session-decode/decode-worker-child.js +538 -35
- package/dist/session-decode/decode-worker-child.mjs +538 -35
- package/dist/step-definitions-CNBFKjZe.js +1514 -0
- package/dist/step-definitions-CP9kVSml.mjs +1479 -0
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DIN3CcRP.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-mDCPzmT3.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B3gTdHEh.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C9fwKMfg.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Dn_pxzP-.mjs} +1 -1
- package/dist/stream-broker/{hostInit-CGUEq--X.mjs → hostInit-GM_CI22k.mjs} +3 -3
- package/dist/stream-broker/index.js +2 -2
- package/dist/stream-broker/index.mjs +2 -2
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-pk7qdYXt.mjs → worker-protocol-CyVJTZEO.mjs} +7 -0
- package/dist/{worker-protocol-BCfO8gUF.js → worker-protocol-PP4jKHHJ.js} +7 -0
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CqOe8eYa.js → MaskShapeCanvas-DI4BY7W2-BChW0ntM.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-CZyLeUnd.js → MotionZonesSettings-NcxxQN8r-DDzqEbSe.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-Cn0hGZnu.js → PrivacyMaskSettings-APgPLF7p-B879GXaf.js} +1 -1
- package/embed-dist/assets/{index-DRl4XYjA.js → index-CNjQ5rAE.js} +10 -10
- package/embed-dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-o4tu_xuc.mjs +0 -26
|
@@ -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-Baang_XW.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -11711,7 +11711,15 @@ var pipelineExecutorCapability = {
|
|
|
11711
11711
|
image: _instanceof(Uint8Array).optional(),
|
|
11712
11712
|
referenceImage: string().optional(),
|
|
11713
11713
|
deviceId: number().optional(),
|
|
11714
|
-
sessionId: string().optional()
|
|
11714
|
+
sessionId: string().optional(),
|
|
11715
|
+
/**
|
|
11716
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
11717
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
11718
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
11719
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11720
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11721
|
+
*/
|
|
11722
|
+
plane: _enum(["full", "frame"]).optional()
|
|
11715
11723
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
11716
11724
|
/**
|
|
11717
11725
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -11890,6 +11898,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
11890
11898
|
auth: "admin"
|
|
11891
11899
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
11892
11900
|
/**
|
|
11901
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
11902
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
11903
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
11904
|
+
* dims — no native resolution to plumb.
|
|
11905
|
+
*/
|
|
11906
|
+
var NativeCropBboxSchema = object({
|
|
11907
|
+
x: number(),
|
|
11908
|
+
y: number(),
|
|
11909
|
+
w: number(),
|
|
11910
|
+
h: number()
|
|
11911
|
+
});
|
|
11912
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
11913
|
+
var NativeCropResultSchema = object({
|
|
11914
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
11915
|
+
bytes: _instanceof(Uint8Array),
|
|
11916
|
+
width: number().int().positive(),
|
|
11917
|
+
height: number().int().positive()
|
|
11918
|
+
});
|
|
11919
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11920
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
11921
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
11922
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
11923
|
+
* normalized [0,1] convention). */
|
|
11924
|
+
var DetailParentSchema = object({
|
|
11925
|
+
bbox: NativeCropBboxSchema,
|
|
11926
|
+
className: string()
|
|
11927
|
+
});
|
|
11928
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
11929
|
+
* or refined detection produced by running the crop-subtree on a
|
|
11930
|
+
* single tracked detection. */
|
|
11931
|
+
var DetailResultSchema = object({
|
|
11932
|
+
stepId: string(),
|
|
11933
|
+
className: string(),
|
|
11934
|
+
score: number(),
|
|
11935
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
11936
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
11937
|
+
embedding: string().optional(),
|
|
11938
|
+
label: string().optional(),
|
|
11939
|
+
alignedCropJpeg: string().optional()
|
|
11940
|
+
});
|
|
11941
|
+
/**
|
|
11893
11942
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
11894
11943
|
* by both the Zod data schema (validation + default fallback) and
|
|
11895
11944
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -12193,7 +12242,42 @@ var pipelineRunnerCapability = {
|
|
|
12193
12242
|
/** All per-camera metrics in one round-trip. */
|
|
12194
12243
|
getAllCameraMetrics: method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()),
|
|
12195
12244
|
/** List the deviceIds currently attached to this runner. */
|
|
12196
|
-
getLocalCameras: method(_void(), array(number()).readonly())
|
|
12245
|
+
getLocalCameras: method(_void(), array(number()).readonly()),
|
|
12246
|
+
/**
|
|
12247
|
+
* Best-effort NATIVE-resolution crop of a retention-ring frame. Given the
|
|
12248
|
+
* `FrameHandle` that rode an inference-result event and a normalized `bbox`,
|
|
12249
|
+
* the runner asks the decode worker still holding that frame's NATIVE
|
|
12250
|
+
* surface to GPU/CPU-crop ONLY the ROI at native res and download just the
|
|
12251
|
+
* crop. Returns `null` on a miss (handle not registered, or the worker's
|
|
12252
|
+
* tiny native-retention ring already evicted the frame) — the caller falls
|
|
12253
|
+
* back to a detection-frame crop. Routed to the frame's owning node by
|
|
12254
|
+
* `handle.nodeId`; NEVER ships a full native frame.
|
|
12255
|
+
*/
|
|
12256
|
+
getNativeCrop: method(object({
|
|
12257
|
+
handle: FrameHandleSchema,
|
|
12258
|
+
bbox: NativeCropBboxSchema,
|
|
12259
|
+
maxWidth: number().int().positive().optional()
|
|
12260
|
+
}), NativeCropResultSchema.nullable()),
|
|
12261
|
+
/**
|
|
12262
|
+
* Two-plane design: run the DETAIL subtree (crop children —
|
|
12263
|
+
* embedding, classifier, refiner steps whose `inputClasses ≠ null`)
|
|
12264
|
+
* for a single tracked detection. The per-frame plane (`runPipeline`
|
|
12265
|
+
* with `plane: 'frame'`) skips crop children entirely; a track-level
|
|
12266
|
+
* caller invokes this per-track, on its own cadence, instead of on
|
|
12267
|
+
* every frame. Takes either a `frameHandle` (shm lease/session —
|
|
12268
|
+
* preferred, zero-copy) or a `cropJpeg` fallback when the lease/
|
|
12269
|
+
* session backing the frame is already gone. `steps` narrows which
|
|
12270
|
+
* configured children to run (default: all configured children for
|
|
12271
|
+
* `parent.className`). Returns `null` when neither frame source is
|
|
12272
|
+
* resolvable (handle evicted and no cropJpeg fallback supplied).
|
|
12273
|
+
*/
|
|
12274
|
+
runDetailSubtree: method(object({
|
|
12275
|
+
deviceId: number(),
|
|
12276
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
12277
|
+
cropJpeg: string().optional(),
|
|
12278
|
+
parent: DetailParentSchema,
|
|
12279
|
+
steps: array(string()).optional()
|
|
12280
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" })
|
|
12197
12281
|
}
|
|
12198
12282
|
};
|
|
12199
12283
|
object({
|
|
@@ -16443,7 +16527,17 @@ var TrackSchema = object({
|
|
|
16443
16527
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
16444
16528
|
totalDistance: number(),
|
|
16445
16529
|
state: TrackStateSchema,
|
|
16446
|
-
active: boolean()
|
|
16530
|
+
active: boolean(),
|
|
16531
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
16532
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
16533
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
16534
|
+
importance: number().optional(),
|
|
16535
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
16536
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
16537
|
+
bestEventId: string().optional(),
|
|
16538
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
16539
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
16540
|
+
importanceReason: string().optional()
|
|
16447
16541
|
});
|
|
16448
16542
|
var BaseEventFields = {
|
|
16449
16543
|
id: string(),
|
|
@@ -16508,8 +16602,18 @@ var ObjectEventSchema = object({
|
|
|
16508
16602
|
frameHeight: number().optional(),
|
|
16509
16603
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
16510
16604
|
mediaKey: string().optional(),
|
|
16605
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
16606
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
16607
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
16608
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
16609
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
16610
|
+
keyFrameMediaKey: string().optional(),
|
|
16511
16611
|
/** Populated by B5 (recording playback URL for this event). */
|
|
16512
|
-
mediaUrl: string().optional()
|
|
16612
|
+
mediaUrl: string().optional(),
|
|
16613
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
16614
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
16615
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
16616
|
+
importance: number().optional()
|
|
16513
16617
|
});
|
|
16514
16618
|
var AudioEventSchema = object({
|
|
16515
16619
|
...BaseEventFields,
|
|
@@ -16533,7 +16637,8 @@ var MediaFileKindEnum = _enum([
|
|
|
16533
16637
|
"fullFrame",
|
|
16534
16638
|
"fullFrameBoxed",
|
|
16535
16639
|
"faceCrop",
|
|
16536
|
-
"plateCrop"
|
|
16640
|
+
"plateCrop",
|
|
16641
|
+
"keyFrame"
|
|
16537
16642
|
]);
|
|
16538
16643
|
var MediaFileSchema = object({
|
|
16539
16644
|
key: string(),
|
|
@@ -16554,6 +16659,32 @@ var DeviceEventQueryInput = object({
|
|
|
16554
16659
|
projection: _enum(["full", "slim"]).optional()
|
|
16555
16660
|
});
|
|
16556
16661
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
16662
|
+
var KeyEventQueryInput = object({
|
|
16663
|
+
deviceId: number(),
|
|
16664
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
16665
|
+
since: number(),
|
|
16666
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
16667
|
+
until: number(),
|
|
16668
|
+
limit: number().int().min(1).max(200).default(50),
|
|
16669
|
+
/** Drop tracks scoring below this importance. */
|
|
16670
|
+
minImportance: number().min(0).max(1).optional(),
|
|
16671
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
16672
|
+
classFilter: string().optional()
|
|
16673
|
+
});
|
|
16674
|
+
var KeyEventSchema = object({
|
|
16675
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
16676
|
+
id: string(),
|
|
16677
|
+
trackId: string(),
|
|
16678
|
+
/** Track start time (firstSeen). */
|
|
16679
|
+
timestamp: number(),
|
|
16680
|
+
className: string(),
|
|
16681
|
+
label: string().optional(),
|
|
16682
|
+
importance: number(),
|
|
16683
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
16684
|
+
bestEventId: string(),
|
|
16685
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
16686
|
+
windowMs: number().optional()
|
|
16687
|
+
});
|
|
16557
16688
|
var TrackedDetectionSchema = object({
|
|
16558
16689
|
trackId: string(),
|
|
16559
16690
|
className: string(),
|
|
@@ -16583,7 +16714,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16583
16714
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
16584
16715
|
kind: "mutation",
|
|
16585
16716
|
auth: "admin"
|
|
16586
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
16717
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
16587
16718
|
deviceId: number(),
|
|
16588
16719
|
since: number(),
|
|
16589
16720
|
until: number(),
|
|
@@ -18595,7 +18726,17 @@ var FaceInfoSchema = object({
|
|
|
18595
18726
|
recognizedIdentityId: string().optional(),
|
|
18596
18727
|
identityName: string().optional(),
|
|
18597
18728
|
assigned: boolean(),
|
|
18598
|
-
base64: string().optional()
|
|
18729
|
+
base64: string().optional(),
|
|
18730
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
18731
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
18732
|
+
* legacy rows written before design B. */
|
|
18733
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
18734
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
18735
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
18736
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
18737
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
18738
|
+
* back to the inline `base64` face crop. */
|
|
18739
|
+
keyFrameMediaKey: string().optional()
|
|
18599
18740
|
});
|
|
18600
18741
|
var FaceFilterEnum = _enum([
|
|
18601
18742
|
"unassigned",
|
|
@@ -22747,6 +22888,12 @@ Object.freeze({
|
|
|
22747
22888
|
addonId: null,
|
|
22748
22889
|
access: "view"
|
|
22749
22890
|
},
|
|
22891
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
22892
|
+
capName: "pipeline-analytics",
|
|
22893
|
+
capScope: "device",
|
|
22894
|
+
addonId: null,
|
|
22895
|
+
access: "view"
|
|
22896
|
+
},
|
|
22750
22897
|
"pipelineAnalytics.getMotionEvents": {
|
|
22751
22898
|
capName: "pipeline-analytics",
|
|
22752
22899
|
capScope: "device",
|
|
@@ -23275,12 +23422,24 @@ Object.freeze({
|
|
|
23275
23422
|
addonId: null,
|
|
23276
23423
|
access: "view"
|
|
23277
23424
|
},
|
|
23425
|
+
"pipelineRunner.getNativeCrop": {
|
|
23426
|
+
capName: "pipeline-runner",
|
|
23427
|
+
capScope: "system",
|
|
23428
|
+
addonId: null,
|
|
23429
|
+
access: "view"
|
|
23430
|
+
},
|
|
23278
23431
|
"pipelineRunner.reportMotion": {
|
|
23279
23432
|
capName: "pipeline-runner",
|
|
23280
23433
|
capScope: "system",
|
|
23281
23434
|
addonId: null,
|
|
23282
23435
|
access: "create"
|
|
23283
23436
|
},
|
|
23437
|
+
"pipelineRunner.runDetailSubtree": {
|
|
23438
|
+
capName: "pipeline-runner",
|
|
23439
|
+
capScope: "system",
|
|
23440
|
+
addonId: null,
|
|
23441
|
+
access: "create"
|
|
23442
|
+
},
|
|
23284
23443
|
"plateGallery.correctPlateText": {
|
|
23285
23444
|
capName: "plate-gallery",
|
|
23286
23445
|
capScope: "system",
|
|
@@ -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-Baang_XW.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -11711,7 +11711,15 @@ var pipelineExecutorCapability = {
|
|
|
11711
11711
|
image: _instanceof(Uint8Array).optional(),
|
|
11712
11712
|
referenceImage: string().optional(),
|
|
11713
11713
|
deviceId: number().optional(),
|
|
11714
|
-
sessionId: string().optional()
|
|
11714
|
+
sessionId: string().optional(),
|
|
11715
|
+
/**
|
|
11716
|
+
* Execution plane. 'full' (default) runs the whole tree — benchmark,
|
|
11717
|
+
* reference-image, and detail-subtree calls. 'frame' is the live
|
|
11718
|
+
* per-frame dispatch: ONLY root-plane steps run; crop children
|
|
11719
|
+
* (inputClasses ≠ null) are skipped and served per-track via
|
|
11720
|
+
* pipelineRunner.runDetailSubtree (two-plane design).
|
|
11721
|
+
*/
|
|
11722
|
+
plane: _enum(["full", "frame"]).optional()
|
|
11715
11723
|
}), PipelineRunResultBridge, { kind: "mutation" }),
|
|
11716
11724
|
/**
|
|
11717
11725
|
* Batched run — N raw frames packed into one cap call. The provider
|
|
@@ -11890,6 +11898,47 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(ZoneSchema).read
|
|
|
11890
11898
|
auth: "admin"
|
|
11891
11899
|
}), object({ zones: array(ZoneSchema).readonly() });
|
|
11892
11900
|
/**
|
|
11901
|
+
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
11902
|
+
* decode worker resolves it against the RETAINED native frame's real pixel dims,
|
|
11903
|
+
* so the caller supplies only the detection-res bbox divided by the detection
|
|
11904
|
+
* dims — no native resolution to plumb.
|
|
11905
|
+
*/
|
|
11906
|
+
var NativeCropBboxSchema = object({
|
|
11907
|
+
x: number(),
|
|
11908
|
+
y: number(),
|
|
11909
|
+
w: number(),
|
|
11910
|
+
h: number()
|
|
11911
|
+
});
|
|
11912
|
+
/** Result of a best-effort native-resolution crop (`getNativeCrop`). */
|
|
11913
|
+
var NativeCropResultSchema = object({
|
|
11914
|
+
/** Packed rgb (24-bit) pixels of the crop. */
|
|
11915
|
+
bytes: _instanceof(Uint8Array),
|
|
11916
|
+
width: number().int().positive(),
|
|
11917
|
+
height: number().int().positive()
|
|
11918
|
+
});
|
|
11919
|
+
/** Parent detection context passed to `runDetailSubtree` — the crop's
|
|
11920
|
+
* originating detection, in FRAME-space coordinates. Reuses
|
|
11921
|
+
* `NativeCropBboxSchema`'s `{x,y,w,h}` shape (same numeric fields; here
|
|
11922
|
+
* the coordinates are frame-space rather than getNativeCrop's
|
|
11923
|
+
* normalized [0,1] convention). */
|
|
11924
|
+
var DetailParentSchema = object({
|
|
11925
|
+
bbox: NativeCropBboxSchema,
|
|
11926
|
+
className: string()
|
|
11927
|
+
});
|
|
11928
|
+
/** One child-step result from `runDetailSubtree` — an embedding, label,
|
|
11929
|
+
* or refined detection produced by running the crop-subtree on a
|
|
11930
|
+
* single tracked detection. */
|
|
11931
|
+
var DetailResultSchema = object({
|
|
11932
|
+
stepId: string(),
|
|
11933
|
+
className: string(),
|
|
11934
|
+
score: number(),
|
|
11935
|
+
/** FRAME-space bbox (already mapped back from crop space). */
|
|
11936
|
+
bbox: NativeCropBboxSchema.optional(),
|
|
11937
|
+
embedding: string().optional(),
|
|
11938
|
+
label: string().optional(),
|
|
11939
|
+
alignedCropJpeg: string().optional()
|
|
11940
|
+
});
|
|
11941
|
+
/**
|
|
11893
11942
|
* Per-camera tunable ranges + defaults. Single source of truth used
|
|
11894
11943
|
* by both the Zod data schema (validation + default fallback) and
|
|
11895
11944
|
* the device settings UI (slider min/max/step). Touch one place and
|
|
@@ -12193,7 +12242,42 @@ var pipelineRunnerCapability = {
|
|
|
12193
12242
|
/** All per-camera metrics in one round-trip. */
|
|
12194
12243
|
getAllCameraMetrics: method(_void(), array(CameraMetricsWithDeviceIdSchema).readonly()),
|
|
12195
12244
|
/** List the deviceIds currently attached to this runner. */
|
|
12196
|
-
getLocalCameras: method(_void(), array(number()).readonly())
|
|
12245
|
+
getLocalCameras: method(_void(), array(number()).readonly()),
|
|
12246
|
+
/**
|
|
12247
|
+
* Best-effort NATIVE-resolution crop of a retention-ring frame. Given the
|
|
12248
|
+
* `FrameHandle` that rode an inference-result event and a normalized `bbox`,
|
|
12249
|
+
* the runner asks the decode worker still holding that frame's NATIVE
|
|
12250
|
+
* surface to GPU/CPU-crop ONLY the ROI at native res and download just the
|
|
12251
|
+
* crop. Returns `null` on a miss (handle not registered, or the worker's
|
|
12252
|
+
* tiny native-retention ring already evicted the frame) — the caller falls
|
|
12253
|
+
* back to a detection-frame crop. Routed to the frame's owning node by
|
|
12254
|
+
* `handle.nodeId`; NEVER ships a full native frame.
|
|
12255
|
+
*/
|
|
12256
|
+
getNativeCrop: method(object({
|
|
12257
|
+
handle: FrameHandleSchema,
|
|
12258
|
+
bbox: NativeCropBboxSchema,
|
|
12259
|
+
maxWidth: number().int().positive().optional()
|
|
12260
|
+
}), NativeCropResultSchema.nullable()),
|
|
12261
|
+
/**
|
|
12262
|
+
* Two-plane design: run the DETAIL subtree (crop children —
|
|
12263
|
+
* embedding, classifier, refiner steps whose `inputClasses ≠ null`)
|
|
12264
|
+
* for a single tracked detection. The per-frame plane (`runPipeline`
|
|
12265
|
+
* with `plane: 'frame'`) skips crop children entirely; a track-level
|
|
12266
|
+
* caller invokes this per-track, on its own cadence, instead of on
|
|
12267
|
+
* every frame. Takes either a `frameHandle` (shm lease/session —
|
|
12268
|
+
* preferred, zero-copy) or a `cropJpeg` fallback when the lease/
|
|
12269
|
+
* session backing the frame is already gone. `steps` narrows which
|
|
12270
|
+
* configured children to run (default: all configured children for
|
|
12271
|
+
* `parent.className`). Returns `null` when neither frame source is
|
|
12272
|
+
* resolvable (handle evicted and no cropJpeg fallback supplied).
|
|
12273
|
+
*/
|
|
12274
|
+
runDetailSubtree: method(object({
|
|
12275
|
+
deviceId: number(),
|
|
12276
|
+
frameHandle: FrameHandleSchema.optional(),
|
|
12277
|
+
cropJpeg: string().optional(),
|
|
12278
|
+
parent: DetailParentSchema,
|
|
12279
|
+
steps: array(string()).optional()
|
|
12280
|
+
}), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" })
|
|
12197
12281
|
}
|
|
12198
12282
|
};
|
|
12199
12283
|
object({
|
|
@@ -16443,7 +16527,17 @@ var TrackSchema = object({
|
|
|
16443
16527
|
/** Cumulative normalized distance travelled (0..1 units = full frame width). */
|
|
16444
16528
|
totalDistance: number(),
|
|
16445
16529
|
state: TrackStateSchema,
|
|
16446
|
-
active: boolean()
|
|
16530
|
+
active: boolean(),
|
|
16531
|
+
/** Deterministic key-event importance score in [0,1] (server-computed at
|
|
16532
|
+
* track expiry, recomputed on late label). Absent on legacy rows written
|
|
16533
|
+
* before scoring shipped — consumers degrade to absence / compute-on-read. */
|
|
16534
|
+
importance: number().optional(),
|
|
16535
|
+
/** Id of the track's highest-confidence ObjectEvent (its representative
|
|
16536
|
+
* "best" frame). Absent when the track produced no object events. */
|
|
16537
|
+
bestEventId: string().optional(),
|
|
16538
|
+
/** Tag of the importance sub-signal that dominated the score
|
|
16539
|
+
* (identity|dwell|proximity|class|confidence|travel|zone). */
|
|
16540
|
+
importanceReason: string().optional()
|
|
16447
16541
|
});
|
|
16448
16542
|
var BaseEventFields = {
|
|
16449
16543
|
id: string(),
|
|
@@ -16508,8 +16602,18 @@ var ObjectEventSchema = object({
|
|
|
16508
16602
|
frameHeight: number().optional(),
|
|
16509
16603
|
/** MediaStore key for the crop attached to this event (if any). */
|
|
16510
16604
|
mediaKey: string().optional(),
|
|
16605
|
+
/** Design B: MediaStore key of the track's native-resolution key frame (the
|
|
16606
|
+
* best-detection full frame). Resolve via the event-media data-plane
|
|
16607
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`) for a detail view that
|
|
16608
|
+
* draws `bbox` over the native frame. Absent on legacy rows / non-decoded
|
|
16609
|
+
* sources — consumers fall back to `mediaKey` (the tight crop). */
|
|
16610
|
+
keyFrameMediaKey: string().optional(),
|
|
16511
16611
|
/** Populated by B5 (recording playback URL for this event). */
|
|
16512
|
-
mediaUrl: string().optional()
|
|
16612
|
+
mediaUrl: string().optional(),
|
|
16613
|
+
/** The parent track's key-event importance [0,1], propagated to every object
|
|
16614
|
+
* event of the track (so an event row can be sorted by importance without a
|
|
16615
|
+
* track join). Absent on legacy rows / before the track was scored. */
|
|
16616
|
+
importance: number().optional()
|
|
16513
16617
|
});
|
|
16514
16618
|
var AudioEventSchema = object({
|
|
16515
16619
|
...BaseEventFields,
|
|
@@ -16533,7 +16637,8 @@ var MediaFileKindEnum = _enum([
|
|
|
16533
16637
|
"fullFrame",
|
|
16534
16638
|
"fullFrameBoxed",
|
|
16535
16639
|
"faceCrop",
|
|
16536
|
-
"plateCrop"
|
|
16640
|
+
"plateCrop",
|
|
16641
|
+
"keyFrame"
|
|
16537
16642
|
]);
|
|
16538
16643
|
var MediaFileSchema = object({
|
|
16539
16644
|
key: string(),
|
|
@@ -16554,6 +16659,32 @@ var DeviceEventQueryInput = object({
|
|
|
16554
16659
|
projection: _enum(["full", "slim"]).optional()
|
|
16555
16660
|
});
|
|
16556
16661
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: string().optional() });
|
|
16662
|
+
var KeyEventQueryInput = object({
|
|
16663
|
+
deviceId: number(),
|
|
16664
|
+
/** Window lower bound (track firstSeen ≥ since). */
|
|
16665
|
+
since: number(),
|
|
16666
|
+
/** Window upper bound (track firstSeen ≤ until). */
|
|
16667
|
+
until: number(),
|
|
16668
|
+
limit: number().int().min(1).max(200).default(50),
|
|
16669
|
+
/** Drop tracks scoring below this importance. */
|
|
16670
|
+
minImportance: number().min(0).max(1).optional(),
|
|
16671
|
+
/** Restrict to a single class (e.g. 'person'). */
|
|
16672
|
+
classFilter: string().optional()
|
|
16673
|
+
});
|
|
16674
|
+
var KeyEventSchema = object({
|
|
16675
|
+
/** The representative event id (the track's best ObjectEvent, else its trackId). */
|
|
16676
|
+
id: string(),
|
|
16677
|
+
trackId: string(),
|
|
16678
|
+
/** Track start time (firstSeen). */
|
|
16679
|
+
timestamp: number(),
|
|
16680
|
+
className: string(),
|
|
16681
|
+
label: string().optional(),
|
|
16682
|
+
importance: number(),
|
|
16683
|
+
/** Highest-confidence ObjectEvent id for the track (empty when none). */
|
|
16684
|
+
bestEventId: string(),
|
|
16685
|
+
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
16686
|
+
windowMs: number().optional()
|
|
16687
|
+
});
|
|
16557
16688
|
var TrackedDetectionSchema = object({
|
|
16558
16689
|
trackId: string(),
|
|
16559
16690
|
className: string(),
|
|
@@ -16583,7 +16714,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
16583
16714
|
}), array(TrackSchema).readonly()), method(object({ deviceId: number() }), _void(), {
|
|
16584
16715
|
kind: "mutation",
|
|
16585
16716
|
auth: "admin"
|
|
16586
|
-
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({
|
|
16717
|
+
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
16587
16718
|
deviceId: number(),
|
|
16588
16719
|
since: number(),
|
|
16589
16720
|
until: number(),
|
|
@@ -18595,7 +18726,17 @@ var FaceInfoSchema = object({
|
|
|
18595
18726
|
recognizedIdentityId: string().optional(),
|
|
18596
18727
|
identityName: string().optional(),
|
|
18597
18728
|
assigned: boolean(),
|
|
18598
|
-
base64: string().optional()
|
|
18729
|
+
base64: string().optional(),
|
|
18730
|
+
/** Design B: the face bbox (pixel space) on the key frame — lets a detail
|
|
18731
|
+
* view draw the box over the native `keyFrameMediaKey` frame. Absent on
|
|
18732
|
+
* legacy rows written before design B. */
|
|
18733
|
+
faceBbox: BoundingBoxSchema.optional(),
|
|
18734
|
+
/** Design B: MediaStore key of the track's native-resolution key frame.
|
|
18735
|
+
* Fetch the native JPEG via the event-media data-plane
|
|
18736
|
+
* (`/addon/<addonId>/event-media/<keyFrameMediaKey>`). Absent when the
|
|
18737
|
+
* track produced no key frame (e.g. native/onboard source) — the UI falls
|
|
18738
|
+
* back to the inline `base64` face crop. */
|
|
18739
|
+
keyFrameMediaKey: string().optional()
|
|
18599
18740
|
});
|
|
18600
18741
|
var FaceFilterEnum = _enum([
|
|
18601
18742
|
"unassigned",
|
|
@@ -22747,6 +22888,12 @@ Object.freeze({
|
|
|
22747
22888
|
addonId: null,
|
|
22748
22889
|
access: "view"
|
|
22749
22890
|
},
|
|
22891
|
+
"pipelineAnalytics.getKeyEvents": {
|
|
22892
|
+
capName: "pipeline-analytics",
|
|
22893
|
+
capScope: "device",
|
|
22894
|
+
addonId: null,
|
|
22895
|
+
access: "view"
|
|
22896
|
+
},
|
|
22750
22897
|
"pipelineAnalytics.getMotionEvents": {
|
|
22751
22898
|
capName: "pipeline-analytics",
|
|
22752
22899
|
capScope: "device",
|
|
@@ -23275,12 +23422,24 @@ Object.freeze({
|
|
|
23275
23422
|
addonId: null,
|
|
23276
23423
|
access: "view"
|
|
23277
23424
|
},
|
|
23425
|
+
"pipelineRunner.getNativeCrop": {
|
|
23426
|
+
capName: "pipeline-runner",
|
|
23427
|
+
capScope: "system",
|
|
23428
|
+
addonId: null,
|
|
23429
|
+
access: "view"
|
|
23430
|
+
},
|
|
23278
23431
|
"pipelineRunner.reportMotion": {
|
|
23279
23432
|
capName: "pipeline-runner",
|
|
23280
23433
|
capScope: "system",
|
|
23281
23434
|
addonId: null,
|
|
23282
23435
|
access: "create"
|
|
23283
23436
|
},
|
|
23437
|
+
"pipelineRunner.runDetailSubtree": {
|
|
23438
|
+
capName: "pipeline-runner",
|
|
23439
|
+
capScope: "system",
|
|
23440
|
+
addonId: null,
|
|
23441
|
+
access: "create"
|
|
23442
|
+
},
|
|
23284
23443
|
"plateGallery.correctPlateText": {
|
|
23285
23444
|
capName: "plate-gallery",
|
|
23286
23445
|
capScope: "system",
|
|
@@ -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-DI57FC8K.js");
|
|
6
6
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-
|
|
1
|
+
import { B as DeviceType, E as motionDetectionCapability, L as BaseAddon, U as hydrateSchema, x as evaluateZoneRules } from "../dist-RWGGPwVx.mjs";
|
|
2
2
|
import { FrameRingReaderCache } from "@camstack/shm-ring";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|