@camstack/addon-pipeline 1.2.153 → 1.2.155
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 +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/detection-pipeline/index.js +5 -5
- package/dist/detection-pipeline/index.mjs +4 -4
- package/dist/{dist-Dsritt4-.mjs → dist-CBRky_dz.mjs} +304 -4
- package/dist/{dist-DnVnWACi.js → dist-CmrtJ8RB.js} +304 -4
- package/dist/{lazy-sharp-DZWYKdV2.js → lazy-sharp-BODx7w1t.js} +1 -1
- package/dist/{local-frame-registry-BpFLRfbw.js → local-frame-registry-BRG0GTmK.js} +1 -1
- package/dist/{local-frame-registry-Yf-uIxbS.mjs → local-frame-registry-ByKcWWPU.mjs} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-C5xmFvjS.js → node-BSeMUwxJ.js} +1 -1
- package/dist/{node-CNGxkfes.mjs → node-CQzPpwIR.mjs} +1 -1
- package/dist/pipeline-runner/index.js +5 -5
- package/dist/pipeline-runner/index.mjs +4 -4
- package/dist/{process-memory-DX_KCfdx.mjs → process-memory-DQX-DbHx.mjs} +1 -1
- package/dist/{process-memory-COT8rA8L.js → process-memory-DVmHBraW.js} +1 -1
- package/dist/recorder/index.js +667 -100
- package/dist/recorder/index.mjs +667 -100
- package/dist/{segment-demux-js-CTFSl-b9.mjs → segment-demux-js-DGX1iGLL.mjs} +1 -1
- package/dist/{segment-demux-js-Dwg9Jq5_.js → segment-demux-js-DmqnujVx.js} +1 -1
- package/dist/session-decode/decode-worker-child.js +2 -2
- package/dist/session-decode/decode-worker-child.mjs +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-ZucA907q.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DvfM0ofY.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-lMPlG5w5.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-CSNuIp4J.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-BqUcM0Fh.mjs → hostInit-DQGeMfoN.mjs} +3 -3
- package/dist/stream-broker/index.js +3 -3
- package/dist/stream-broker/index.mjs +3 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-CDBQXOIu.mjs → worker-protocol-C7jOjCsc.mjs} +1 -1
- package/dist/{worker-protocol-BsvaPb-G.js → worker-protocol-S2nAdf6B.js} +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-B14Zc1oq.mjs +0 -26
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DO6LkN6o.mjs +0 -26
|
@@ -9353,6 +9353,20 @@ var RelocateJobSchema = object({
|
|
|
9353
9353
|
* in its row, not in its name, so `MediaRelocateEngine` never reconciles one.
|
|
9354
9354
|
*/
|
|
9355
9355
|
rowsReconciled: number().int().nonnegative().optional(),
|
|
9356
|
+
/**
|
|
9357
|
+
* Rows this run FORGOT because the file they name is not on disk.
|
|
9358
|
+
*
|
|
9359
|
+
* The mover derived the path from the row's own fields and `stat`ed it; an
|
|
9360
|
+
* ENOENT there is a per-path confirmation that the segment is gone (D296),
|
|
9361
|
+
* and the durable row is dropped through the same channel eviction uses. It
|
|
9362
|
+
* is reported for the same reason `rowsReconciled` is: this is a durable
|
|
9363
|
+
* mutation nobody asked for, and a migration that quietly erases hour rows is
|
|
9364
|
+
* the same failure as one that quietly skips them (D295).
|
|
9365
|
+
*
|
|
9366
|
+
* The production drain of 2026-08-30 would have reported 11 074 here — the
|
|
9367
|
+
* ledger claimed 5.65 GB of footage that no longer existed.
|
|
9368
|
+
*/
|
|
9369
|
+
rowsForgotten: number().int().nonnegative().optional(),
|
|
9356
9370
|
startedAt: number(),
|
|
9357
9371
|
finishedAt: number().nullable(),
|
|
9358
9372
|
error: string().nullable()
|
|
@@ -9716,6 +9730,91 @@ var RelocateResidueSchema = object({
|
|
|
9716
9730
|
segments: number().int().nonnegative(),
|
|
9717
9731
|
bytes: number().int().nonnegative()
|
|
9718
9732
|
}).nullable();
|
|
9733
|
+
/**
|
|
9734
|
+
* Ask one location whether its durable hour rows describe the disk — the walk
|
|
9735
|
+
* (D319).
|
|
9736
|
+
*
|
|
9737
|
+
* `apply` DEFAULTS TO FALSE and that default is the product: the operator's
|
|
9738
|
+
* missing tool is the question, and the dry run is how they sanity-check the
|
|
9739
|
+
* destructive run before authorising it.
|
|
9740
|
+
*/
|
|
9741
|
+
var LedgerWalkInputSchema = object({
|
|
9742
|
+
locationId: string().min(1),
|
|
9743
|
+
/** Forget the confirmed-absent rows, rather than only counting them. */
|
|
9744
|
+
apply: boolean().optional(),
|
|
9745
|
+
/** Narrow to one camera. */
|
|
9746
|
+
deviceId: number().int().positive().optional(),
|
|
9747
|
+
/** Narrow to these recording profiles; empty/absent = every profile. */
|
|
9748
|
+
profiles: array(string().min(1)).optional()
|
|
9749
|
+
});
|
|
9750
|
+
/** Why a whole walk did nothing. Every one leaves the ledger untouched. */
|
|
9751
|
+
var LedgerWalkRefusalSchema = _enum([
|
|
9752
|
+
"location-unknown",
|
|
9753
|
+
"source-writable",
|
|
9754
|
+
"no-ledger",
|
|
9755
|
+
"archive-unreadable",
|
|
9756
|
+
"anchor-absent",
|
|
9757
|
+
"anchor-unreadable",
|
|
9758
|
+
"anchor-moved"
|
|
9759
|
+
]);
|
|
9760
|
+
_enum([
|
|
9761
|
+
"live-tail",
|
|
9762
|
+
"listing-error",
|
|
9763
|
+
"path-mismatch",
|
|
9764
|
+
"durable-refused"
|
|
9765
|
+
]);
|
|
9766
|
+
/** Every skip reason, always present, always a number — so a reason that never
|
|
9767
|
+
* fired reports as zero rather than absent and the report shape is constant
|
|
9768
|
+
* between passes. Spelled out rather than `z.record` for exactly that. */
|
|
9769
|
+
var LedgerWalkSkipCountsSchema = object({
|
|
9770
|
+
"live-tail": number().int().nonnegative(),
|
|
9771
|
+
"listing-error": number().int().nonnegative(),
|
|
9772
|
+
"path-mismatch": number().int().nonnegative(),
|
|
9773
|
+
"durable-refused": number().int().nonnegative()
|
|
9774
|
+
});
|
|
9775
|
+
/** One camera's share of a walk, so a report names cameras and not rows. */
|
|
9776
|
+
var LedgerWalkDeviceReportSchema = object({
|
|
9777
|
+
deviceId: number().int(),
|
|
9778
|
+
hoursWalked: number().int().nonnegative(),
|
|
9779
|
+
hoursMissing: number().int().nonnegative(),
|
|
9780
|
+
ghostSegments: number().int().nonnegative(),
|
|
9781
|
+
ghostBytes: number().int().nonnegative(),
|
|
9782
|
+
forgottenSegments: number().int().nonnegative(),
|
|
9783
|
+
orphanFiles: number().int().nonnegative()
|
|
9784
|
+
});
|
|
9785
|
+
/**
|
|
9786
|
+
* What one walk claimed, listed, found and (only when armed) forgot.
|
|
9787
|
+
*
|
|
9788
|
+
* `archiveSegments` is the **M** and `segmentsClaimed` the **N** (D295), so a
|
|
9789
|
+
* walk that saw a fraction of the location is visible in its own report rather
|
|
9790
|
+
* than in the absence of one.
|
|
9791
|
+
*/
|
|
9792
|
+
var LedgerWalkReportSchema = object({
|
|
9793
|
+
locationId: string(),
|
|
9794
|
+
applied: boolean(),
|
|
9795
|
+
refused: LedgerWalkRefusalSchema.nullable(),
|
|
9796
|
+
archiveSegments: number().int().nonnegative().nullable(),
|
|
9797
|
+
archiveBytes: number().int().nonnegative().nullable(),
|
|
9798
|
+
hoursClaimed: number().int().nonnegative(),
|
|
9799
|
+
hoursWalked: number().int().nonnegative(),
|
|
9800
|
+
hoursMissing: number().int().nonnegative(),
|
|
9801
|
+
/** `readdir` calls issued — the cost, stated in the unit that is paid. */
|
|
9802
|
+
listings: number().int().nonnegative(),
|
|
9803
|
+
segmentsClaimed: number().int().nonnegative(),
|
|
9804
|
+
ghostSegments: number().int().nonnegative(),
|
|
9805
|
+
ghostBytes: number().int().nonnegative(),
|
|
9806
|
+
ghostHoursWhole: number().int().nonnegative(),
|
|
9807
|
+
forgottenSegments: number().int().nonnegative(),
|
|
9808
|
+
forgottenBytes: number().int().nonnegative(),
|
|
9809
|
+
/** Files under a claimed hour that no durable row names. Never deleted. */
|
|
9810
|
+
orphanFiles: number().int().nonnegative(),
|
|
9811
|
+
orphanSample: array(string()).readonly(),
|
|
9812
|
+
hoursSkipped: number().int().nonnegative(),
|
|
9813
|
+
skippedByReason: LedgerWalkSkipCountsSchema,
|
|
9814
|
+
/** The walk stopped at its per-pass hour bound with claims unwalked. */
|
|
9815
|
+
bounded: boolean(),
|
|
9816
|
+
byDevice: array(LedgerWalkDeviceReportSchema).readonly()
|
|
9817
|
+
});
|
|
9719
9818
|
/** How many rows a media pass would still act on against a given target — the
|
|
9720
9819
|
* media lane's denominator AND its residue, from ONE derivation so the two can
|
|
9721
9820
|
* never disagree. `null` = the count could not be taken. */
|
|
@@ -21151,13 +21250,15 @@ var ListGroupsPageSchema = object({
|
|
|
21151
21250
|
groups: array(AnalyticsGroupRecordSchema).readonly(),
|
|
21152
21251
|
nextCursor: string().nullable()
|
|
21153
21252
|
});
|
|
21253
|
+
var KEY_EVENTS_DEFAULT_LIMIT = 50;
|
|
21254
|
+
var KEY_EVENTS_MAX_LIMIT = 200;
|
|
21154
21255
|
var KeyEventQueryInput = object({
|
|
21155
21256
|
deviceId: number(),
|
|
21156
21257
|
/** Window lower bound (track firstSeen ≥ since). */
|
|
21157
21258
|
since: number(),
|
|
21158
21259
|
/** Window upper bound (track firstSeen ≤ until). */
|
|
21159
21260
|
until: number(),
|
|
21160
|
-
limit: number().int().min(1).max(
|
|
21261
|
+
limit: number().int().min(1).max(KEY_EVENTS_MAX_LIMIT).default(KEY_EVENTS_DEFAULT_LIMIT),
|
|
21161
21262
|
/** Drop tracks scoring below this importance. */
|
|
21162
21263
|
minImportance: number().min(0).max(1).optional(),
|
|
21163
21264
|
/** Restrict to a single class (e.g. 'person'). */
|
|
@@ -21179,6 +21280,32 @@ var KeyEventSchema = object({
|
|
|
21179
21280
|
...TrackFlagFields,
|
|
21180
21281
|
...TrackRetrainFields
|
|
21181
21282
|
});
|
|
21283
|
+
/** `getKeyEvents`' window and filters, asked of a SET of cameras at once. */
|
|
21284
|
+
var KeyEventBatchQueryInput = object({
|
|
21285
|
+
deviceIds: array(number()).min(1).max(200),
|
|
21286
|
+
since: number(),
|
|
21287
|
+
until: number(),
|
|
21288
|
+
/** Applied PER CAMERA, exactly as `getKeyEvents.limit` is — never a total
|
|
21289
|
+
* across the set, which would let a busy camera starve a quiet one of its
|
|
21290
|
+
* rows and change what the merged feed contains. */
|
|
21291
|
+
limit: number().int().min(1).max(KEY_EVENTS_MAX_LIMIT).default(KEY_EVENTS_DEFAULT_LIMIT),
|
|
21292
|
+
minImportance: number().min(0).max(1).optional(),
|
|
21293
|
+
classFilter: string().optional()
|
|
21294
|
+
});
|
|
21295
|
+
/**
|
|
21296
|
+
* One camera's key events in a batch answer.
|
|
21297
|
+
*
|
|
21298
|
+
* The row exists for every requested id. `getKeyEvents` degrades to `[]` on
|
|
21299
|
+
* error rather than throwing, so a camera whose store read failed and one with
|
|
21300
|
+
* no events in the window were ALREADY indistinguishable per camera — the
|
|
21301
|
+
* batch does not make that worse, and the row keeps the deviceId the single
|
|
21302
|
+
* method's output never carried (the caller used to stamp it from the fan-out
|
|
21303
|
+
* key, which only worked because there was one query per camera).
|
|
21304
|
+
*/
|
|
21305
|
+
var KeyEventsForDeviceSchema = object({
|
|
21306
|
+
deviceId: number(),
|
|
21307
|
+
events: array(KeyEventSchema).readonly()
|
|
21308
|
+
});
|
|
21182
21309
|
object({
|
|
21183
21310
|
trackId: string(),
|
|
21184
21311
|
className: string(),
|
|
@@ -21250,6 +21377,50 @@ var EventStoreFootprintSchema = object({
|
|
|
21250
21377
|
totalBytes: number().int(),
|
|
21251
21378
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
21252
21379
|
});
|
|
21380
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
21381
|
+
var EventMediaKindFootprintSchema = object({
|
|
21382
|
+
kind: MediaFileKindEnum,
|
|
21383
|
+
/** Media rows of this kind. */
|
|
21384
|
+
rows: number().int(),
|
|
21385
|
+
/** Bytes on disk held by those rows. */
|
|
21386
|
+
bytes: number().int()
|
|
21387
|
+
});
|
|
21388
|
+
/**
|
|
21389
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
21390
|
+
* actually turns on.
|
|
21391
|
+
*
|
|
21392
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
21393
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
21394
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
21395
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
21396
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
21397
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
21398
|
+
*
|
|
21399
|
+
* ## Why `unaccounted*` exists
|
|
21400
|
+
*
|
|
21401
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
21402
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
21403
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
21404
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
21405
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
21406
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
21407
|
+
* against a denominator smaller than the disk.
|
|
21408
|
+
*
|
|
21409
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
21410
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
21411
|
+
*/
|
|
21412
|
+
var EventMediaKindBreakdownSchema = object({
|
|
21413
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
21414
|
+
totalRows: number().int(),
|
|
21415
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
21416
|
+
totalBytes: number().int(),
|
|
21417
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
21418
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
21419
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
21420
|
+
unaccountedRows: number().int(),
|
|
21421
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
21422
|
+
unaccountedBytes: number().int()
|
|
21423
|
+
});
|
|
21253
21424
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
21254
21425
|
var EventPruneCountsSchema = object({
|
|
21255
21426
|
motion: number().int(),
|
|
@@ -21404,7 +21575,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
21404
21575
|
until: number().optional(),
|
|
21405
21576
|
kinds: array(string()).optional(),
|
|
21406
21577
|
limit: number().int().min(1).max(MAX_EVENT_QUERY_LIMIT).default(DEFAULT_EVENT_QUERY_LIMIT)
|
|
21407
|
-
}), array(SensorEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(object({
|
|
21578
|
+
}), array(SensorEventSchema).readonly()), method(KeyEventQueryInput, array(KeyEventSchema).readonly()), method(KeyEventBatchQueryInput, array(KeyEventsForDeviceSchema).readonly()), method(object({
|
|
21408
21579
|
deviceId: number(),
|
|
21409
21580
|
since: number(),
|
|
21410
21581
|
until: number(),
|
|
@@ -21453,6 +21624,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
21453
21624
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
21454
21625
|
kind: "query",
|
|
21455
21626
|
auth: "admin"
|
|
21627
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
21628
|
+
kind: "query",
|
|
21629
|
+
auth: "admin"
|
|
21456
21630
|
}), method(object({
|
|
21457
21631
|
olderThanMs: number(),
|
|
21458
21632
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -23546,6 +23720,20 @@ method(object({
|
|
|
23546
23720
|
error: string().optional()
|
|
23547
23721
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
23548
23722
|
providerId: string(),
|
|
23723
|
+
/**
|
|
23724
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
23725
|
+
*
|
|
23726
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
23727
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
23728
|
+
* credential the operator did not retype — and posting that here
|
|
23729
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
23730
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
23731
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
23732
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
23733
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
23734
|
+
* every value was typed just now and nothing is stored yet.
|
|
23735
|
+
*/
|
|
23736
|
+
locationId: string().optional(),
|
|
23549
23737
|
config: record(string(), unknown())
|
|
23550
23738
|
}), object({
|
|
23551
23739
|
ok: boolean(),
|
|
@@ -29458,6 +29646,23 @@ var recordingCapability = {
|
|
|
29458
29646
|
kind: "query",
|
|
29459
29647
|
auth: "admin"
|
|
29460
29648
|
}),
|
|
29649
|
+
/**
|
|
29650
|
+
* Does this location's LEDGER tell the truth about its disk? (D319)
|
|
29651
|
+
*
|
|
29652
|
+
* One `readdir` per claimed hour, diffed both ways: durable rows whose file
|
|
29653
|
+
* is not there, and files no durable row names. `apply` defaults to FALSE —
|
|
29654
|
+
* the report is the product, and the dry run is how an operator
|
|
29655
|
+
* sanity-checks the destructive run before authorising it.
|
|
29656
|
+
*
|
|
29657
|
+
* REFUSES a source that is still a write target: a listing of a live
|
|
29658
|
+
* location is a lower bound, which is not the strong evidence that lets
|
|
29659
|
+
* this pass forget without a budget. A live location is reconciled by the
|
|
29660
|
+
* mover, under D318's bound.
|
|
29661
|
+
*/
|
|
29662
|
+
reconcileLedgerAgainstDisk: method(LedgerWalkInputSchema, LedgerWalkReportSchema, {
|
|
29663
|
+
kind: "mutation",
|
|
29664
|
+
auth: "admin"
|
|
29665
|
+
}),
|
|
29461
29666
|
/** Cancel a running or queued relocate job. A queued job never runs. */
|
|
29462
29667
|
cancelRelocateJob: method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
29463
29668
|
kind: "mutation",
|
|
@@ -29911,7 +30116,26 @@ var SceneMonitorStatusSchema = object({
|
|
|
29911
30116
|
monitors: array(SceneMonitorSchema),
|
|
29912
30117
|
lastFetchedAt: number()
|
|
29913
30118
|
});
|
|
29914
|
-
|
|
30119
|
+
/**
|
|
30120
|
+
* One camera's row in a `listScenesBatch` answer.
|
|
30121
|
+
*
|
|
30122
|
+
* `status` is NULLABLE and the nullability is the whole point. `scene-monitor`
|
|
30123
|
+
* is a `defaultActive` wrapper, so every camera is asked; a camera whose
|
|
30124
|
+
* provider is absent (pipeline-analytics not deployed, the post-processing node
|
|
30125
|
+
* down) cannot answer, and that is not the same fact as a camera with no scenes
|
|
30126
|
+
* configured. Fanned out per camera the difference was visible — one query
|
|
30127
|
+
* errored while the others resolved — and a batch that returned only the rows
|
|
30128
|
+
* it managed would have destroyed it, silently, by making an unreachable camera
|
|
30129
|
+
* indistinguishable from one that answered `monitors: []`.
|
|
30130
|
+
*
|
|
30131
|
+
* So: EVERY requested deviceId gets a row. `status: null` means "this camera
|
|
30132
|
+
* could not be read"; `status.monitors: []` means "read, and it has none".
|
|
30133
|
+
*/
|
|
30134
|
+
var SceneMonitorStatusForDeviceSchema = object({
|
|
30135
|
+
deviceId: number(),
|
|
30136
|
+
status: SceneMonitorStatusSchema.nullable()
|
|
30137
|
+
});
|
|
30138
|
+
DeviceType.Camera, method(object({ deviceId: number() }), SceneMonitorStatusSchema), method(object({ deviceIds: array(number()).min(1).max(200) }), array(SceneMonitorStatusForDeviceSchema).readonly()), method(object({
|
|
29915
30139
|
deviceId: number(),
|
|
29916
30140
|
label: string(),
|
|
29917
30141
|
roi: MaskRectShapeSchema,
|
|
@@ -31235,6 +31459,27 @@ var CameraOccupancySnapshotSchema = object({
|
|
|
31235
31459
|
stationaryObjects: array(StationaryObjectSchema).readonly().optional()
|
|
31236
31460
|
});
|
|
31237
31461
|
/**
|
|
31462
|
+
* One camera's row in a `getCurrentSnapshotBatch` answer.
|
|
31463
|
+
*
|
|
31464
|
+
* THREE outcomes, and the single-camera method could only express two of them
|
|
31465
|
+
* because `snapshot: null` was already spoken for:
|
|
31466
|
+
*
|
|
31467
|
+
* - `read: 'read'`, `snapshot` present — the live occupancy reading.
|
|
31468
|
+
* - `read: 'read'`, `snapshot: null` — read, and this camera has no reading
|
|
31469
|
+
* yet: no frame since boot, and no parked-object registry to hydrate from.
|
|
31470
|
+
* - `read: 'unreadable'` — the owner could not answer for this
|
|
31471
|
+
* camera. `snapshot` is null, and it does NOT mean "nothing parked here".
|
|
31472
|
+
*
|
|
31473
|
+
* Collapsing the last two is the failure this field exists to prevent: a
|
|
31474
|
+
* hydration that threw would otherwise render as an empty Stationary section,
|
|
31475
|
+
* which is a definite claim about a camera nobody could read.
|
|
31476
|
+
*/
|
|
31477
|
+
var CameraOccupancySnapshotForDeviceSchema = object({
|
|
31478
|
+
deviceId: number(),
|
|
31479
|
+
read: _enum(["read", "unreadable"]),
|
|
31480
|
+
snapshot: CameraOccupancySnapshotSchema.nullable()
|
|
31481
|
+
});
|
|
31482
|
+
/**
|
|
31238
31483
|
* Time-series resolution. The history methods return one bucket per
|
|
31239
31484
|
* step over the requested range. Smaller resolutions cost more
|
|
31240
31485
|
* memory + bandwidth; bound to discrete steps so caller cannot ask
|
|
@@ -31258,7 +31503,7 @@ var HistoryPointSchema = object({
|
|
|
31258
31503
|
/** Object count averaged over the bucket (rounded to nearest integer). */
|
|
31259
31504
|
count: number().int().nonnegative()
|
|
31260
31505
|
});
|
|
31261
|
-
DeviceType.Camera, method(object({ deviceId: number() }), CameraOccupancySnapshotSchema.nullable()), method(object({
|
|
31506
|
+
DeviceType.Camera, method(object({ deviceId: number() }), CameraOccupancySnapshotSchema.nullable()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(CameraOccupancySnapshotForDeviceSchema).readonly()), method(object({
|
|
31262
31507
|
deviceId: number(),
|
|
31263
31508
|
zoneId: string(),
|
|
31264
31509
|
className: string().optional()
|
|
@@ -34698,6 +34943,12 @@ Object.freeze({
|
|
|
34698
34943
|
addonId: null,
|
|
34699
34944
|
access: "view"
|
|
34700
34945
|
},
|
|
34946
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
34947
|
+
capName: "pipeline-analytics",
|
|
34948
|
+
capScope: "device",
|
|
34949
|
+
addonId: null,
|
|
34950
|
+
access: "view"
|
|
34951
|
+
},
|
|
34701
34952
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
34702
34953
|
capName: "pipeline-analytics",
|
|
34703
34954
|
capScope: "device",
|
|
@@ -34716,6 +34967,12 @@ Object.freeze({
|
|
|
34716
34967
|
addonId: null,
|
|
34717
34968
|
access: "view"
|
|
34718
34969
|
},
|
|
34970
|
+
"pipelineAnalytics.getKeyEventsBatch": {
|
|
34971
|
+
capName: "pipeline-analytics",
|
|
34972
|
+
capScope: "device",
|
|
34973
|
+
addonId: null,
|
|
34974
|
+
access: "view"
|
|
34975
|
+
},
|
|
34719
34976
|
"pipelineAnalytics.getMotionEvents": {
|
|
34720
34977
|
capName: "pipeline-analytics",
|
|
34721
34978
|
capScope: "device",
|
|
@@ -35892,6 +36149,12 @@ Object.freeze({
|
|
|
35892
36149
|
addonId: null,
|
|
35893
36150
|
access: "view"
|
|
35894
36151
|
},
|
|
36152
|
+
"recording.reconcileLedgerAgainstDisk": {
|
|
36153
|
+
capName: "recording",
|
|
36154
|
+
capScope: "system",
|
|
36155
|
+
addonId: null,
|
|
36156
|
+
access: "create"
|
|
36157
|
+
},
|
|
35895
36158
|
"recording.refreshStorageLocationsForMigration": {
|
|
35896
36159
|
capName: "recording",
|
|
35897
36160
|
capScope: "system",
|
|
@@ -36018,6 +36281,12 @@ Object.freeze({
|
|
|
36018
36281
|
addonId: null,
|
|
36019
36282
|
access: "view"
|
|
36020
36283
|
},
|
|
36284
|
+
"sceneMonitor.listScenesBatch": {
|
|
36285
|
+
capName: "scene-monitor",
|
|
36286
|
+
capScope: "device",
|
|
36287
|
+
addonId: null,
|
|
36288
|
+
access: "view"
|
|
36289
|
+
},
|
|
36021
36290
|
"sceneMonitor.recheckNow": {
|
|
36022
36291
|
capName: "scene-monitor",
|
|
36023
36292
|
capScope: "device",
|
|
@@ -37374,6 +37643,12 @@ Object.freeze({
|
|
|
37374
37643
|
addonId: null,
|
|
37375
37644
|
access: "view"
|
|
37376
37645
|
},
|
|
37646
|
+
"zoneAnalytics.getCurrentSnapshotBatch": {
|
|
37647
|
+
capName: "zone-analytics",
|
|
37648
|
+
capScope: "device",
|
|
37649
|
+
addonId: null,
|
|
37650
|
+
access: "view"
|
|
37651
|
+
},
|
|
37377
37652
|
"zoneAnalytics.getUnzonedHistory": {
|
|
37378
37653
|
capName: "zone-analytics",
|
|
37379
37654
|
capScope: "device",
|
|
@@ -38363,6 +38638,11 @@ Object.freeze({
|
|
|
38363
38638
|
form: "single",
|
|
38364
38639
|
optional: false
|
|
38365
38640
|
}],
|
|
38641
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
38642
|
+
name: "deviceId",
|
|
38643
|
+
form: "single",
|
|
38644
|
+
optional: true
|
|
38645
|
+
}],
|
|
38366
38646
|
"pipelineAnalytics.getGroup": [{
|
|
38367
38647
|
name: "deviceId",
|
|
38368
38648
|
form: "single",
|
|
@@ -38373,6 +38653,11 @@ Object.freeze({
|
|
|
38373
38653
|
form: "single",
|
|
38374
38654
|
optional: false
|
|
38375
38655
|
}],
|
|
38656
|
+
"pipelineAnalytics.getKeyEventsBatch": [{
|
|
38657
|
+
name: "deviceIds",
|
|
38658
|
+
form: "array",
|
|
38659
|
+
optional: false
|
|
38660
|
+
}],
|
|
38376
38661
|
"pipelineAnalytics.getMotionEvents": [{
|
|
38377
38662
|
name: "deviceId",
|
|
38378
38663
|
form: "single",
|
|
@@ -38813,6 +39098,11 @@ Object.freeze({
|
|
|
38813
39098
|
form: "single",
|
|
38814
39099
|
optional: false
|
|
38815
39100
|
}],
|
|
39101
|
+
"recording.reconcileLedgerAgainstDisk": [{
|
|
39102
|
+
name: "deviceId",
|
|
39103
|
+
form: "single",
|
|
39104
|
+
optional: true
|
|
39105
|
+
}],
|
|
38816
39106
|
"recording.relocateFootage": [{
|
|
38817
39107
|
name: "deviceId",
|
|
38818
39108
|
form: "single",
|
|
@@ -38878,6 +39168,11 @@ Object.freeze({
|
|
|
38878
39168
|
form: "single",
|
|
38879
39169
|
optional: false
|
|
38880
39170
|
}],
|
|
39171
|
+
"sceneMonitor.listScenesBatch": [{
|
|
39172
|
+
name: "deviceIds",
|
|
39173
|
+
form: "array",
|
|
39174
|
+
optional: false
|
|
39175
|
+
}],
|
|
38881
39176
|
"sceneMonitor.recheckNow": [{
|
|
38882
39177
|
name: "deviceId",
|
|
38883
39178
|
form: "single",
|
|
@@ -39139,6 +39434,11 @@ Object.freeze({
|
|
|
39139
39434
|
form: "single",
|
|
39140
39435
|
optional: false
|
|
39141
39436
|
}],
|
|
39437
|
+
"zoneAnalytics.getCurrentSnapshotBatch": [{
|
|
39438
|
+
name: "deviceIds",
|
|
39439
|
+
form: "array",
|
|
39440
|
+
optional: false
|
|
39441
|
+
}],
|
|
39142
39442
|
"zoneAnalytics.getUnzonedHistory": [{
|
|
39143
39443
|
name: "deviceId",
|
|
39144
39444
|
form: "single",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-
|
|
1
|
+
import { M as audioKindId, Z as hfModelUrl, a as COCO_80_LABELS, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-CBRky_dz.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
//#region src/detection-pipeline/registry/model-catalogs.ts
|
|
4
4
|
var HF_REPO = "camstack/camstack-models";
|
|
@@ -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_lazy_sharp = require("../lazy-sharp-
|
|
5
|
+
const require_dist = require("../dist-CmrtJ8RB.js");
|
|
6
|
+
const require_lazy_sharp = require("../lazy-sharp-BODx7w1t.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-
|
|
1
|
+
import { It as hydrateSchema, Pt as DeviceType, Y as evaluateZoneRules, it as motionDetectionCapability, jt as BaseAddon } from "../dist-CBRky_dz.mjs";
|
|
2
2
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-
|
|
1
|
+
import { Dt as buildFfmpegArgs, Et as Fmp4BoxSplitter, kt as isSoftwareDecode, wt as errMsg } from "./dist-CBRky_dz.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import "node:fs";
|
|
4
4
|
import "node:path";
|
|
@@ -2,12 +2,12 @@ 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_node = require("../node-
|
|
7
|
-
const require_local_frame_registry = require("../local-frame-registry-
|
|
8
|
-
const require_worker_protocol = require("../worker-protocol-
|
|
5
|
+
const require_dist = require("../dist-CmrtJ8RB.js");
|
|
6
|
+
const require_node = require("../node-BSeMUwxJ.js");
|
|
7
|
+
const require_local_frame_registry = require("../local-frame-registry-BRG0GTmK.js");
|
|
8
|
+
const require_worker_protocol = require("../worker-protocol-S2nAdf6B.js");
|
|
9
9
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
10
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
10
|
+
const require_lazy_sharp = require("../lazy-sharp-BODx7w1t.js");
|
|
11
11
|
const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
|
|
12
12
|
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-DaUBcb13.js");
|
|
13
13
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-
|
|
2
|
-
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-
|
|
3
|
-
import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-
|
|
4
|
-
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-
|
|
1
|
+
import { B as defineCustomActions, Bt as nodePin, Ft as createEvent, Gt as _enum, H as deriveDetailCropRect, Kt as array, L as customAction, Qt as object, X as failureContributionCapability, Xt as literal, Yt as lazy, Zt as number, _ as FailureCounters, en as string, et as loadContributionCapability, ft as pipelineRunnerCapability, jt as BaseAddon, lt as pickDetailCropConvention, m as DEVICE_BACKEND_TO_FORMAT, nn as EventCategory, p as DEFAULT_NATIVE_LEASE_SETTINGS, qt as boolean, u as DEFAULT_DETAIL_CROP_CONVENTION, ut as pickNativeLeaseOverride, wt as errMsg } from "../dist-CBRky_dz.mjs";
|
|
2
|
+
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-CQzPpwIR.mjs";
|
|
3
|
+
import { c as getStepDefinition, n as resolveFrameViewGeometry, t as localFrameRegistry } from "../local-frame-registry-ByKcWWPU.mjs";
|
|
4
|
+
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-C7jOjCsc.mjs";
|
|
5
5
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
6
6
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
7
7
|
import { n as withDetectionIntent } from "../restream-intent-B4BXZra7.mjs";
|