@camstack/addon-pipeline 1.1.61 → 1.1.62
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 +2 -2
- package/dist/detection-pipeline/index.mjs +2 -2
- package/dist/{dist-p_JqOxtk.js → dist-DlMmkOsE.js} +164 -2
- package/dist/{dist-D16_dBsr.mjs → dist-LkwlodgP.mjs} +159 -3
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +2 -2
- package/dist/pipeline-runner/index.mjs +2 -2
- package/dist/recorder/index.js +161 -20
- package/dist/recorder/index.mjs +161 -20
- package/dist/{step-definitions-CoxF5G31.js → step-definitions-CxwB0fEq.js} +68 -1
- package/dist/{step-definitions-DxAcpUV-.mjs → step-definitions-DxN9tmQP.mjs} +68 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Wu4TlSuq.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-3gAFmxjh.mjs} +3 -3
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DHJB3xUN.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-DGxcX3Wf.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C4pcysOQ.mjs} +1 -1
- package/dist/stream-broker/{hostInit-D_dSciqF.mjs → hostInit-B1aDV0u0.mjs} +3 -3
- package/dist/stream-broker/index.js +1 -1
- package/dist/stream-broker/index.mjs +1 -1
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-BldL9_Ee.js → MaskShapeCanvas-DI4BY7W2-C7IhxQQ_.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-BgWqMe4f.js → MotionZonesSettings-NcxxQN8r-DZXzBUU8.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-YBgaXffP.js → PrivacyMaskSettings-APgPLF7p-Dz9ttl4A.js} +1 -1
- package/embed-dist/assets/index-DRsQUyLF.js +81 -0
- 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-BPujpbZ0.mjs +0 -26
- package/embed-dist/assets/index-e0bQ8yep.js +0 -81
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-DlMmkOsE.js");
|
|
7
7
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
8
8
|
const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-Dv-oFwjN.js");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { B as
|
|
2
|
+
import { B as errMsg, K as hydrateSchema, T as mapAudioLabelToMacro, V as BaseAddon, _ as audioAnalyzerCapability, g as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, u as HF_BASE_URL } from "../dist-LkwlodgP.mjs";
|
|
3
3
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
4
4
|
import { i as downloadFile } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
|
|
5
5
|
import * as fs from "node:fs";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_step_definitions = require("../step-definitions-
|
|
6
|
+
const require_dist = require("../dist-DlMmkOsE.js");
|
|
7
|
+
const require_step_definitions = require("../step-definitions-CxwB0fEq.js");
|
|
8
8
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
9
9
|
const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-Dv-oFwjN.js");
|
|
10
10
|
let node_child_process = require("node:child_process");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-
|
|
2
|
+
import { $ as sleep, A as pipelineExecutorCapability, B as errMsg, C as evaluateZoneRules, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, S as detectionPipelineCapability, V as BaseAddon, X as parseJsonUnknown, b as defaultDeviceFor$1, dt as EventCategory, k as nodePin, m as YAMNET_TO_MACRO, t as APPLE_SA_TO_MACRO } from "../dist-LkwlodgP.mjs";
|
|
3
|
+
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-DxN9tmQP.mjs";
|
|
4
4
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
5
5
|
import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
|
|
6
6
|
import { spawn } from "node:child_process";
|
|
@@ -7580,6 +7580,62 @@ function migrateConfigToBands(config) {
|
|
|
7580
7580
|
return schedules.map((schedule) => bandFromSchedule(schedule, bandMode, config));
|
|
7581
7581
|
}
|
|
7582
7582
|
/**
|
|
7583
|
+
* Ops-log — the durable, append-only operations audit shared by the
|
|
7584
|
+
* recordings and events management surfaces.
|
|
7585
|
+
*
|
|
7586
|
+
* ONE row shape is reused for both domains so a single "Activity" view can
|
|
7587
|
+
* merge the recorder's DurableState ring (recordings ops-log) and the
|
|
7588
|
+
* pipeline-analytics SQLite collection (events ops-log). Each row records a
|
|
7589
|
+
* management operation, WHY it ran (reason), and its measurable effect
|
|
7590
|
+
* (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
|
|
7591
|
+
* never fail the operation it records.
|
|
7592
|
+
*/
|
|
7593
|
+
/** Which management domain the operation belongs to. */
|
|
7594
|
+
var OpsLogDomainSchema = _enum(["recording", "events"]);
|
|
7595
|
+
/** The kind of management operation performed. */
|
|
7596
|
+
var OpsLogOpSchema = _enum([
|
|
7597
|
+
"prune",
|
|
7598
|
+
"manual-delete",
|
|
7599
|
+
"rescan",
|
|
7600
|
+
"retention-run"
|
|
7601
|
+
]);
|
|
7602
|
+
/** Why the operation ran. */
|
|
7603
|
+
var OpsLogReasonSchema = _enum([
|
|
7604
|
+
"retention",
|
|
7605
|
+
"quota",
|
|
7606
|
+
"manual",
|
|
7607
|
+
"operator"
|
|
7608
|
+
]);
|
|
7609
|
+
/** One audit row, shared verbatim by both domains. */
|
|
7610
|
+
var OpsLogEntrySchema = object({
|
|
7611
|
+
/** Unique row id. */
|
|
7612
|
+
id: string(),
|
|
7613
|
+
/** Epoch ms the operation completed. */
|
|
7614
|
+
at: number(),
|
|
7615
|
+
domain: OpsLogDomainSchema,
|
|
7616
|
+
op: OpsLogOpSchema,
|
|
7617
|
+
reason: OpsLogReasonSchema,
|
|
7618
|
+
/** The camera the op targeted; null for a cluster/global op. */
|
|
7619
|
+
deviceId: number().nullable(),
|
|
7620
|
+
/** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
|
|
7621
|
+
nodeId: string(),
|
|
7622
|
+
/** Buckets / rows deleted (op-specific unit). */
|
|
7623
|
+
itemsAffected: number(),
|
|
7624
|
+
/** Bytes reclaimed by the op (0 when not measurable). */
|
|
7625
|
+
bytesReclaimed: number(),
|
|
7626
|
+
/** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
|
|
7627
|
+
detail: string().nullable(),
|
|
7628
|
+
/** Who/what triggered the op. */
|
|
7629
|
+
actor: string()
|
|
7630
|
+
});
|
|
7631
|
+
/** Shared query input for the per-domain `listOpsLog` cap methods. */
|
|
7632
|
+
var OpsLogQueryInputSchema = object({
|
|
7633
|
+
/** Restrict to a single camera; omit for every row. */
|
|
7634
|
+
deviceId: number().optional(),
|
|
7635
|
+
/** Max rows returned, newest-first. */
|
|
7636
|
+
limit: number().int().min(1).max(1e3).optional()
|
|
7637
|
+
});
|
|
7638
|
+
/**
|
|
7583
7639
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
7584
7640
|
* storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
|
|
7585
7641
|
* so the persisted record schema and the consumer-facing cap can both consume it
|
|
@@ -17558,6 +17614,26 @@ var TrackCascadeCountsSchema = object({
|
|
|
17558
17614
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
17559
17615
|
embeddings: number().int()
|
|
17560
17616
|
});
|
|
17617
|
+
/** Event-store footprint for one camera. */
|
|
17618
|
+
var EventStoreDeviceFootprintSchema = object({
|
|
17619
|
+
deviceId: number(),
|
|
17620
|
+
/** Persisted event rows (motion + object + audio) for the camera. */
|
|
17621
|
+
rows: number().int(),
|
|
17622
|
+
/** Event-owned media bytes on disk for the camera. */
|
|
17623
|
+
bytes: number().int()
|
|
17624
|
+
});
|
|
17625
|
+
/** Aggregate event-store footprint: global totals + per-camera breakdown. */
|
|
17626
|
+
var EventStoreFootprintSchema = object({
|
|
17627
|
+
totalRows: number().int(),
|
|
17628
|
+
totalBytes: number().int(),
|
|
17629
|
+
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
17630
|
+
});
|
|
17631
|
+
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
17632
|
+
var EventPruneCountsSchema = object({
|
|
17633
|
+
motion: number().int(),
|
|
17634
|
+
object: number().int(),
|
|
17635
|
+
audio: number().int()
|
|
17636
|
+
});
|
|
17561
17637
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
17562
17638
|
deviceId: number(),
|
|
17563
17639
|
trackId: string()
|
|
@@ -17621,6 +17697,21 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17621
17697
|
}), {
|
|
17622
17698
|
kind: "mutation",
|
|
17623
17699
|
auth: "admin"
|
|
17700
|
+
}), method(object({}), EventStoreFootprintSchema, {
|
|
17701
|
+
kind: "query",
|
|
17702
|
+
auth: "admin"
|
|
17703
|
+
}), method(object({
|
|
17704
|
+
olderThanMs: number(),
|
|
17705
|
+
reason: OpsLogReasonSchema.optional()
|
|
17706
|
+
}), EventPruneCountsSchema, {
|
|
17707
|
+
kind: "mutation",
|
|
17708
|
+
auth: "admin"
|
|
17709
|
+
}), method(object({ deviceId: number() }), EventPruneCountsSchema, {
|
|
17710
|
+
kind: "mutation",
|
|
17711
|
+
auth: "admin"
|
|
17712
|
+
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17713
|
+
kind: "query",
|
|
17714
|
+
auth: "admin"
|
|
17624
17715
|
}), method(object({
|
|
17625
17716
|
eventId: string(),
|
|
17626
17717
|
kind: MediaFileKindEnum.optional()
|
|
@@ -20979,14 +21070,43 @@ var recordingCapability = {
|
|
|
20979
21070
|
auth: "admin"
|
|
20980
21071
|
}),
|
|
20981
21072
|
/** Apply this device's retention policy to footage now; returns the oldest
|
|
20982
|
-
* surviving footage start (the retention floor) or null if no footage.
|
|
20983
|
-
|
|
21073
|
+
* surviving footage start (the retention floor) or null if no footage. The
|
|
21074
|
+
* prune is logged to the recordings ops-log with `reason` (default
|
|
21075
|
+
* `'retention'` — the policy-driven prune; `'quota'` when disk-pressure
|
|
21076
|
+
* triggered). */
|
|
21077
|
+
pruneFootage: method(object({
|
|
21078
|
+
deviceId: number(),
|
|
21079
|
+
reason: OpsLogReasonSchema.optional()
|
|
21080
|
+
}), object({
|
|
20984
21081
|
floorMs: number().nullable(),
|
|
20985
21082
|
deletedBuckets: number().int(),
|
|
20986
21083
|
reclaimedBytes: number().int()
|
|
20987
21084
|
}), {
|
|
20988
21085
|
kind: "mutation",
|
|
20989
21086
|
auth: "admin"
|
|
21087
|
+
}),
|
|
21088
|
+
/**
|
|
21089
|
+
* Manually delete a camera's footage — the whole footprint, or a
|
|
21090
|
+
* `[fromMs, toMs)` window when either bound is given. Logged to the
|
|
21091
|
+
* recordings ops-log as `op:'manual-delete', reason:'manual'`. Destructive:
|
|
21092
|
+
* the admin UI guards it behind a confirm.
|
|
21093
|
+
*/
|
|
21094
|
+
deleteFootprint: method(object({
|
|
21095
|
+
deviceId: number(),
|
|
21096
|
+
fromMs: number().optional(),
|
|
21097
|
+
toMs: number().optional()
|
|
21098
|
+
}), object({
|
|
21099
|
+
deletedBuckets: number().int(),
|
|
21100
|
+
reclaimedBytes: number().int()
|
|
21101
|
+
}), {
|
|
21102
|
+
kind: "mutation",
|
|
21103
|
+
auth: "admin"
|
|
21104
|
+
}),
|
|
21105
|
+
/** The recordings ops-log rows (newest-first), optionally scoped to one
|
|
21106
|
+
* camera. Backed by the recorder's bounded DurableState ring. */
|
|
21107
|
+
listOpsLog: method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
21108
|
+
kind: "query",
|
|
21109
|
+
auth: "admin"
|
|
20990
21110
|
})
|
|
20991
21111
|
}
|
|
20992
21112
|
};
|
|
@@ -24127,6 +24247,12 @@ Object.freeze({
|
|
|
24127
24247
|
addonId: null,
|
|
24128
24248
|
access: "delete"
|
|
24129
24249
|
},
|
|
24250
|
+
"pipelineAnalytics.deleteDeviceEvents": {
|
|
24251
|
+
capName: "pipeline-analytics",
|
|
24252
|
+
capScope: "device",
|
|
24253
|
+
addonId: null,
|
|
24254
|
+
access: "delete"
|
|
24255
|
+
},
|
|
24130
24256
|
"pipelineAnalytics.deleteTracks": {
|
|
24131
24257
|
capName: "pipeline-analytics",
|
|
24132
24258
|
capScope: "device",
|
|
@@ -24157,6 +24283,12 @@ Object.freeze({
|
|
|
24157
24283
|
addonId: null,
|
|
24158
24284
|
access: "view"
|
|
24159
24285
|
},
|
|
24286
|
+
"pipelineAnalytics.getEventStoreFootprint": {
|
|
24287
|
+
capName: "pipeline-analytics",
|
|
24288
|
+
capScope: "device",
|
|
24289
|
+
addonId: null,
|
|
24290
|
+
access: "view"
|
|
24291
|
+
},
|
|
24160
24292
|
"pipelineAnalytics.getKeyEvents": {
|
|
24161
24293
|
capName: "pipeline-analytics",
|
|
24162
24294
|
capScope: "device",
|
|
@@ -24199,6 +24331,12 @@ Object.freeze({
|
|
|
24199
24331
|
addonId: null,
|
|
24200
24332
|
access: "view"
|
|
24201
24333
|
},
|
|
24334
|
+
"pipelineAnalytics.listOpsLog": {
|
|
24335
|
+
capName: "pipeline-analytics",
|
|
24336
|
+
capScope: "device",
|
|
24337
|
+
addonId: null,
|
|
24338
|
+
access: "view"
|
|
24339
|
+
},
|
|
24202
24340
|
"pipelineAnalytics.listRecentTracks": {
|
|
24203
24341
|
capName: "pipeline-analytics",
|
|
24204
24342
|
capScope: "device",
|
|
@@ -24211,6 +24349,12 @@ Object.freeze({
|
|
|
24211
24349
|
addonId: null,
|
|
24212
24350
|
access: "view"
|
|
24213
24351
|
},
|
|
24352
|
+
"pipelineAnalytics.pruneEvents": {
|
|
24353
|
+
capName: "pipeline-analytics",
|
|
24354
|
+
capScope: "device",
|
|
24355
|
+
addonId: null,
|
|
24356
|
+
access: "create"
|
|
24357
|
+
},
|
|
24214
24358
|
"pipelineAnalytics.pruneEventsBefore": {
|
|
24215
24359
|
capName: "pipeline-analytics",
|
|
24216
24360
|
capScope: "device",
|
|
@@ -24973,6 +25117,12 @@ Object.freeze({
|
|
|
24973
25117
|
addonId: null,
|
|
24974
25118
|
access: "create"
|
|
24975
25119
|
},
|
|
25120
|
+
"recording.deleteFootprint": {
|
|
25121
|
+
capName: "recording",
|
|
25122
|
+
capScope: "system",
|
|
25123
|
+
addonId: null,
|
|
25124
|
+
access: "delete"
|
|
25125
|
+
},
|
|
24976
25126
|
"recording.getAvailability": {
|
|
24977
25127
|
capName: "recording",
|
|
24978
25128
|
capScope: "system",
|
|
@@ -25003,6 +25153,12 @@ Object.freeze({
|
|
|
25003
25153
|
addonId: null,
|
|
25004
25154
|
access: "view"
|
|
25005
25155
|
},
|
|
25156
|
+
"recording.listOpsLog": {
|
|
25157
|
+
capName: "recording",
|
|
25158
|
+
capScope: "system",
|
|
25159
|
+
addonId: null,
|
|
25160
|
+
access: "view"
|
|
25161
|
+
},
|
|
25006
25162
|
"recording.locateSegment": {
|
|
25007
25163
|
capName: "recording",
|
|
25008
25164
|
capScope: "system",
|
|
@@ -26520,6 +26676,12 @@ Object.defineProperty(exports, "HF_BASE_URL", {
|
|
|
26520
26676
|
return HF_BASE_URL;
|
|
26521
26677
|
}
|
|
26522
26678
|
});
|
|
26679
|
+
Object.defineProperty(exports, "OpsLogEntrySchema", {
|
|
26680
|
+
enumerable: true,
|
|
26681
|
+
get: function() {
|
|
26682
|
+
return OpsLogEntrySchema;
|
|
26683
|
+
}
|
|
26684
|
+
});
|
|
26523
26685
|
Object.defineProperty(exports, "RecordingConfigSchema", {
|
|
26524
26686
|
enumerable: true,
|
|
26525
26687
|
get: function() {
|
|
@@ -7580,6 +7580,62 @@ function migrateConfigToBands(config) {
|
|
|
7580
7580
|
return schedules.map((schedule) => bandFromSchedule(schedule, bandMode, config));
|
|
7581
7581
|
}
|
|
7582
7582
|
/**
|
|
7583
|
+
* Ops-log — the durable, append-only operations audit shared by the
|
|
7584
|
+
* recordings and events management surfaces.
|
|
7585
|
+
*
|
|
7586
|
+
* ONE row shape is reused for both domains so a single "Activity" view can
|
|
7587
|
+
* merge the recorder's DurableState ring (recordings ops-log) and the
|
|
7588
|
+
* pipeline-analytics SQLite collection (events ops-log). Each row records a
|
|
7589
|
+
* management operation, WHY it ran (reason), and its measurable effect
|
|
7590
|
+
* (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
|
|
7591
|
+
* never fail the operation it records.
|
|
7592
|
+
*/
|
|
7593
|
+
/** Which management domain the operation belongs to. */
|
|
7594
|
+
var OpsLogDomainSchema = _enum(["recording", "events"]);
|
|
7595
|
+
/** The kind of management operation performed. */
|
|
7596
|
+
var OpsLogOpSchema = _enum([
|
|
7597
|
+
"prune",
|
|
7598
|
+
"manual-delete",
|
|
7599
|
+
"rescan",
|
|
7600
|
+
"retention-run"
|
|
7601
|
+
]);
|
|
7602
|
+
/** Why the operation ran. */
|
|
7603
|
+
var OpsLogReasonSchema = _enum([
|
|
7604
|
+
"retention",
|
|
7605
|
+
"quota",
|
|
7606
|
+
"manual",
|
|
7607
|
+
"operator"
|
|
7608
|
+
]);
|
|
7609
|
+
/** One audit row, shared verbatim by both domains. */
|
|
7610
|
+
var OpsLogEntrySchema = object({
|
|
7611
|
+
/** Unique row id. */
|
|
7612
|
+
id: string(),
|
|
7613
|
+
/** Epoch ms the operation completed. */
|
|
7614
|
+
at: number(),
|
|
7615
|
+
domain: OpsLogDomainSchema,
|
|
7616
|
+
op: OpsLogOpSchema,
|
|
7617
|
+
reason: OpsLogReasonSchema,
|
|
7618
|
+
/** The camera the op targeted; null for a cluster/global op. */
|
|
7619
|
+
deviceId: number().nullable(),
|
|
7620
|
+
/** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
|
|
7621
|
+
nodeId: string(),
|
|
7622
|
+
/** Buckets / rows deleted (op-specific unit). */
|
|
7623
|
+
itemsAffected: number(),
|
|
7624
|
+
/** Bytes reclaimed by the op (0 when not measurable). */
|
|
7625
|
+
bytesReclaimed: number(),
|
|
7626
|
+
/** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
|
|
7627
|
+
detail: string().nullable(),
|
|
7628
|
+
/** Who/what triggered the op. */
|
|
7629
|
+
actor: string()
|
|
7630
|
+
});
|
|
7631
|
+
/** Shared query input for the per-domain `listOpsLog` cap methods. */
|
|
7632
|
+
var OpsLogQueryInputSchema = object({
|
|
7633
|
+
/** Restrict to a single camera; omit for every row. */
|
|
7634
|
+
deviceId: number().optional(),
|
|
7635
|
+
/** Max rows returned, newest-first. */
|
|
7636
|
+
limit: number().int().min(1).max(1e3).optional()
|
|
7637
|
+
});
|
|
7638
|
+
/**
|
|
7583
7639
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
7584
7640
|
* storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
|
|
7585
7641
|
* so the persisted record schema and the consumer-facing cap can both consume it
|
|
@@ -17558,6 +17614,26 @@ var TrackCascadeCountsSchema = object({
|
|
|
17558
17614
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
17559
17615
|
embeddings: number().int()
|
|
17560
17616
|
});
|
|
17617
|
+
/** Event-store footprint for one camera. */
|
|
17618
|
+
var EventStoreDeviceFootprintSchema = object({
|
|
17619
|
+
deviceId: number(),
|
|
17620
|
+
/** Persisted event rows (motion + object + audio) for the camera. */
|
|
17621
|
+
rows: number().int(),
|
|
17622
|
+
/** Event-owned media bytes on disk for the camera. */
|
|
17623
|
+
bytes: number().int()
|
|
17624
|
+
});
|
|
17625
|
+
/** Aggregate event-store footprint: global totals + per-camera breakdown. */
|
|
17626
|
+
var EventStoreFootprintSchema = object({
|
|
17627
|
+
totalRows: number().int(),
|
|
17628
|
+
totalBytes: number().int(),
|
|
17629
|
+
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
17630
|
+
});
|
|
17631
|
+
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
17632
|
+
var EventPruneCountsSchema = object({
|
|
17633
|
+
motion: number().int(),
|
|
17634
|
+
object: number().int(),
|
|
17635
|
+
audio: number().int()
|
|
17636
|
+
});
|
|
17561
17637
|
DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).readonly()), method(object({
|
|
17562
17638
|
deviceId: number(),
|
|
17563
17639
|
trackId: string()
|
|
@@ -17621,6 +17697,21 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17621
17697
|
}), {
|
|
17622
17698
|
kind: "mutation",
|
|
17623
17699
|
auth: "admin"
|
|
17700
|
+
}), method(object({}), EventStoreFootprintSchema, {
|
|
17701
|
+
kind: "query",
|
|
17702
|
+
auth: "admin"
|
|
17703
|
+
}), method(object({
|
|
17704
|
+
olderThanMs: number(),
|
|
17705
|
+
reason: OpsLogReasonSchema.optional()
|
|
17706
|
+
}), EventPruneCountsSchema, {
|
|
17707
|
+
kind: "mutation",
|
|
17708
|
+
auth: "admin"
|
|
17709
|
+
}), method(object({ deviceId: number() }), EventPruneCountsSchema, {
|
|
17710
|
+
kind: "mutation",
|
|
17711
|
+
auth: "admin"
|
|
17712
|
+
}), method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
17713
|
+
kind: "query",
|
|
17714
|
+
auth: "admin"
|
|
17624
17715
|
}), method(object({
|
|
17625
17716
|
eventId: string(),
|
|
17626
17717
|
kind: MediaFileKindEnum.optional()
|
|
@@ -20979,14 +21070,43 @@ var recordingCapability = {
|
|
|
20979
21070
|
auth: "admin"
|
|
20980
21071
|
}),
|
|
20981
21072
|
/** Apply this device's retention policy to footage now; returns the oldest
|
|
20982
|
-
* surviving footage start (the retention floor) or null if no footage.
|
|
20983
|
-
|
|
21073
|
+
* surviving footage start (the retention floor) or null if no footage. The
|
|
21074
|
+
* prune is logged to the recordings ops-log with `reason` (default
|
|
21075
|
+
* `'retention'` — the policy-driven prune; `'quota'` when disk-pressure
|
|
21076
|
+
* triggered). */
|
|
21077
|
+
pruneFootage: method(object({
|
|
21078
|
+
deviceId: number(),
|
|
21079
|
+
reason: OpsLogReasonSchema.optional()
|
|
21080
|
+
}), object({
|
|
20984
21081
|
floorMs: number().nullable(),
|
|
20985
21082
|
deletedBuckets: number().int(),
|
|
20986
21083
|
reclaimedBytes: number().int()
|
|
20987
21084
|
}), {
|
|
20988
21085
|
kind: "mutation",
|
|
20989
21086
|
auth: "admin"
|
|
21087
|
+
}),
|
|
21088
|
+
/**
|
|
21089
|
+
* Manually delete a camera's footage — the whole footprint, or a
|
|
21090
|
+
* `[fromMs, toMs)` window when either bound is given. Logged to the
|
|
21091
|
+
* recordings ops-log as `op:'manual-delete', reason:'manual'`. Destructive:
|
|
21092
|
+
* the admin UI guards it behind a confirm.
|
|
21093
|
+
*/
|
|
21094
|
+
deleteFootprint: method(object({
|
|
21095
|
+
deviceId: number(),
|
|
21096
|
+
fromMs: number().optional(),
|
|
21097
|
+
toMs: number().optional()
|
|
21098
|
+
}), object({
|
|
21099
|
+
deletedBuckets: number().int(),
|
|
21100
|
+
reclaimedBytes: number().int()
|
|
21101
|
+
}), {
|
|
21102
|
+
kind: "mutation",
|
|
21103
|
+
auth: "admin"
|
|
21104
|
+
}),
|
|
21105
|
+
/** The recordings ops-log rows (newest-first), optionally scoped to one
|
|
21106
|
+
* camera. Backed by the recorder's bounded DurableState ring. */
|
|
21107
|
+
listOpsLog: method(OpsLogQueryInputSchema, array(OpsLogEntrySchema).readonly(), {
|
|
21108
|
+
kind: "query",
|
|
21109
|
+
auth: "admin"
|
|
20990
21110
|
})
|
|
20991
21111
|
}
|
|
20992
21112
|
};
|
|
@@ -24127,6 +24247,12 @@ Object.freeze({
|
|
|
24127
24247
|
addonId: null,
|
|
24128
24248
|
access: "delete"
|
|
24129
24249
|
},
|
|
24250
|
+
"pipelineAnalytics.deleteDeviceEvents": {
|
|
24251
|
+
capName: "pipeline-analytics",
|
|
24252
|
+
capScope: "device",
|
|
24253
|
+
addonId: null,
|
|
24254
|
+
access: "delete"
|
|
24255
|
+
},
|
|
24130
24256
|
"pipelineAnalytics.deleteTracks": {
|
|
24131
24257
|
capName: "pipeline-analytics",
|
|
24132
24258
|
capScope: "device",
|
|
@@ -24157,6 +24283,12 @@ Object.freeze({
|
|
|
24157
24283
|
addonId: null,
|
|
24158
24284
|
access: "view"
|
|
24159
24285
|
},
|
|
24286
|
+
"pipelineAnalytics.getEventStoreFootprint": {
|
|
24287
|
+
capName: "pipeline-analytics",
|
|
24288
|
+
capScope: "device",
|
|
24289
|
+
addonId: null,
|
|
24290
|
+
access: "view"
|
|
24291
|
+
},
|
|
24160
24292
|
"pipelineAnalytics.getKeyEvents": {
|
|
24161
24293
|
capName: "pipeline-analytics",
|
|
24162
24294
|
capScope: "device",
|
|
@@ -24199,6 +24331,12 @@ Object.freeze({
|
|
|
24199
24331
|
addonId: null,
|
|
24200
24332
|
access: "view"
|
|
24201
24333
|
},
|
|
24334
|
+
"pipelineAnalytics.listOpsLog": {
|
|
24335
|
+
capName: "pipeline-analytics",
|
|
24336
|
+
capScope: "device",
|
|
24337
|
+
addonId: null,
|
|
24338
|
+
access: "view"
|
|
24339
|
+
},
|
|
24202
24340
|
"pipelineAnalytics.listRecentTracks": {
|
|
24203
24341
|
capName: "pipeline-analytics",
|
|
24204
24342
|
capScope: "device",
|
|
@@ -24211,6 +24349,12 @@ Object.freeze({
|
|
|
24211
24349
|
addonId: null,
|
|
24212
24350
|
access: "view"
|
|
24213
24351
|
},
|
|
24352
|
+
"pipelineAnalytics.pruneEvents": {
|
|
24353
|
+
capName: "pipeline-analytics",
|
|
24354
|
+
capScope: "device",
|
|
24355
|
+
addonId: null,
|
|
24356
|
+
access: "create"
|
|
24357
|
+
},
|
|
24214
24358
|
"pipelineAnalytics.pruneEventsBefore": {
|
|
24215
24359
|
capName: "pipeline-analytics",
|
|
24216
24360
|
capScope: "device",
|
|
@@ -24973,6 +25117,12 @@ Object.freeze({
|
|
|
24973
25117
|
addonId: null,
|
|
24974
25118
|
access: "create"
|
|
24975
25119
|
},
|
|
25120
|
+
"recording.deleteFootprint": {
|
|
25121
|
+
capName: "recording",
|
|
25122
|
+
capScope: "system",
|
|
25123
|
+
addonId: null,
|
|
25124
|
+
access: "delete"
|
|
25125
|
+
},
|
|
24976
25126
|
"recording.getAvailability": {
|
|
24977
25127
|
capName: "recording",
|
|
24978
25128
|
capScope: "system",
|
|
@@ -25003,6 +25153,12 @@ Object.freeze({
|
|
|
25003
25153
|
addonId: null,
|
|
25004
25154
|
access: "view"
|
|
25005
25155
|
},
|
|
25156
|
+
"recording.listOpsLog": {
|
|
25157
|
+
capName: "recording",
|
|
25158
|
+
capScope: "system",
|
|
25159
|
+
addonId: null,
|
|
25160
|
+
access: "view"
|
|
25161
|
+
},
|
|
25006
25162
|
"recording.locateSegment": {
|
|
25007
25163
|
capName: "recording",
|
|
25008
25164
|
capScope: "system",
|
|
@@ -26430,4 +26586,4 @@ function defaultDeviceFor(id) {
|
|
|
26430
26586
|
return def(id).defaultDevice;
|
|
26431
26587
|
}
|
|
26432
26588
|
//#endregion
|
|
26433
|
-
export {
|
|
26589
|
+
export { sleep as $, pipelineExecutorCapability as A, errMsg as B, evaluateZoneRules as C, migrateConfigToBands as D, maskUrlCredentials as E, runtimeDevices as F, createEvent as G, CAM_PROFILE_ORDER as H, storageEvictableCapability as I, makeProfileBrokerId as J, hydrateSchema as K, streamBrokerCapability as L, recordingCapability as M, recordingExportCapability as N, motionDetectionCapability as O, resolveScrubThumbnailGeometry as P, selectAssignedProfileSlots as Q, supportedRuntimes as R, detectionPipelineCapability as S, mapAudioLabelToMacro as T, DeviceFeature as U, BaseAddon as V, DeviceType as W, parseJsonUnknown as X, makeSourceBrokerId as Y, parseProfileBrokerId as Z, audioAnalyzerCapability as _, COCO_TO_MACRO as a, literal as at, defaultDeviceFor as b, EncodeProfileSchema as c, record as ct, OpsLogEntrySchema as d, EventCategory as dt, _enum as et, RecordingConfigSchema as f, audioAnalysisCapability as g, addonWidgetsSourceCapability as h, COCO_80_LABELS as i, lazy as it, pipelineRunnerCapability as j, nodePin as k, ExportRecordSchema as l, string as lt, YAMNET_TO_MACRO as m, AUDIO_BACKEND_CHOICES as n, boolean as nt, DEFAULT_AUDIO_ANALYZER_CONFIG as o, number as ot, RingBuffer as p, isEvent as q, AUDIO_MACRO_LABELS as r, discriminatedUnion as rt, EVENT_PAD_MS as s, object as st, APPLE_SA_TO_MACRO as t, array as tt, HF_BASE_URL as u, union as ut, cameraStreamsCapability as v, hfModelUrl as w, defineCustomActions as x, customAction as y, webrtcSessionCapability as z };
|
|
@@ -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-DlMmkOsE.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as evaluateZoneRules, K as hydrateSchema, O as motionDetectionCapability, V as BaseAddon, W as DeviceType } from "../dist-LkwlodgP.mjs";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-DlMmkOsE.js");
|
|
7
7
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
8
8
|
const require_sheet_geometry = require("../sheet-geometry-BR-ip0CP.js");
|
|
9
9
|
const require_worker_protocol = require("../worker-protocol-PP4jKHHJ.js");
|
|
10
|
-
const require_step_definitions = require("../step-definitions-
|
|
10
|
+
const require_step_definitions = require("../step-definitions-CxwB0fEq.js");
|
|
11
11
|
let node_child_process = require("node:child_process");
|
|
12
12
|
let node_url = require("node:url");
|
|
13
13
|
let sharp = require("sharp");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as errMsg, G as createEvent, V as BaseAddon, dt as EventCategory, et as _enum, it as lazy, j as pipelineRunnerCapability, k as nodePin, lt as string, nt as boolean, ot as number, st as object, tt as array, x as defineCustomActions, y as customAction } from "../dist-LkwlodgP.mjs";
|
|
2
2
|
import { n as profileForStreamId, t as isRemoteRestream } from "../remote-restream-BeHi78PZ.mjs";
|
|
3
3
|
import { r as resolveHubHostname } from "../sheet-geometry-DcpuGTCm.mjs";
|
|
4
4
|
import { t as isWorkerReply } from "../worker-protocol-CyVJTZEO.mjs";
|
|
5
|
-
import { a as getStepDefinition } from "../step-definitions-
|
|
5
|
+
import { a as getStepDefinition } from "../step-definitions-DxN9tmQP.mjs";
|
|
6
6
|
import { fork } from "node:child_process";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import sharp from "sharp";
|