@camstack/addon-pipeline 1.2.357 → 1.2.359
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 +3 -3
- package/dist/audio-analyzer/index.mjs +3 -3
- package/dist/{custom-model-catalog-IDV_JbaV.js → custom-model-catalog-BZFt7qC7.js} +2 -2
- package/dist/{custom-model-catalog-ZdOOtn-r.mjs → custom-model-catalog-Bdp__rWS.mjs} +2 -2
- package/dist/detection-pipeline/index.js +4 -4
- package/dist/detection-pipeline/index.mjs +4 -4
- package/dist/{dist-vf1gSnDD.js → dist-8okS4wxl.js} +52 -2
- package/dist/{dist-Dnh7fzvR.mjs → dist-TseSUtZJ.mjs} +52 -2
- package/dist/{model-catalogs-Kr9Qb33p.mjs → model-catalogs-BSCj4g0O.mjs} +1 -1
- package/dist/{model-catalogs-DXZcRGsq.js → model-catalogs-C0aOsH6-.js} +1 -1
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-DCRoqtZO.js → node-BStoDcFQ.js} +1 -1
- package/dist/{node-B-ZL1ARj.mjs → node-I5Y2Dzmr.mjs} +1 -1
- package/dist/pipeline-runner/index.js +3 -3
- package/dist/pipeline-runner/index.mjs +3 -3
- package/dist/{process-memory-C1IfH9_K.js → process-memory-7YJfeXUK.js} +1 -1
- package/dist/{process-memory-DihQW-e5.mjs → process-memory-D4H6J3CG.mjs} +1 -1
- package/dist/recorder/index.js +127 -3
- package/dist/recorder/index.mjs +127 -3
- package/dist/{segment-demux-js-snYi0bGh.js → segment-demux-js-BwQRJ24B.js} +1 -1
- package/dist/{segment-demux-js-DgaXlND5.mjs → segment-demux-js-RgT0biID.mjs} +1 -1
- package/dist/stream-broker/_stub.js +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-lVYtyYRc.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DqdW2pDb.mjs} +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-XWaPHrfA.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-DyZTqdF8.mjs → hostInit-xe-7xOfx.mjs} +1 -1
- 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/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-Wy0jRnQx.mjs +0 -26
|
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_model_catalogs = require("../model-catalogs-
|
|
8
|
-
const require_process_memory = require("../process-memory-
|
|
6
|
+
const require_dist = require("../dist-8okS4wxl.js");
|
|
7
|
+
const require_model_catalogs = require("../model-catalogs-C0aOsH6-.js");
|
|
8
|
+
const require_process_memory = require("../process-memory-7YJfeXUK.js");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
10
10
|
node_fs = require_chunk.__toESM(node_fs);
|
|
11
11
|
let node_path = require("node:path");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $ as audioAnalysisCapability, Hn as hydrateSchema, Kn as nodePin, L as PoolMemoryWatchdog, Ln as audioChunkBytesPerSample, Mn as errMsg, Pn as BaseAddon, Rt as mapAudioLabelToMacro, Vn as expandAudioChunkToF32le, cr as EventCategory, et as audioAnalyzerCapability, h as DEFAULT_AUDIO_ANALYZER_CONFIG, r as AUDIO_BACKEND_CHOICES, un as resolvePoolMemoryPolicy } from "../dist-
|
|
3
|
-
import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-
|
|
4
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
2
|
+
import { $ as audioAnalysisCapability, Hn as hydrateSchema, Kn as nodePin, L as PoolMemoryWatchdog, Ln as audioChunkBytesPerSample, Mn as errMsg, Pn as BaseAddon, Rt as mapAudioLabelToMacro, Vn as expandAudioChunkToF32le, cr as EventCategory, et as audioAnalyzerCapability, h as DEFAULT_AUDIO_ANALYZER_CONFIG, r as AUDIO_BACKEND_CHOICES, un as resolvePoolMemoryPolicy } from "../dist-TseSUtZJ.mjs";
|
|
3
|
+
import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-BSCj4g0O.mjs";
|
|
4
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-D4H6J3CG.mjs";
|
|
5
5
|
import * as fs from "node:fs";
|
|
6
6
|
import * as path$1 from "node:path";
|
|
7
7
|
import { ensureModel } from "@camstack/system/addon-utils";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
2
|
-
const require_model_catalogs = require("./model-catalogs-
|
|
1
|
+
const require_dist = require("./dist-8okS4wxl.js");
|
|
2
|
+
const require_model_catalogs = require("./model-catalogs-C0aOsH6-.js");
|
|
3
3
|
const require_worker_protocol = require("./worker-protocol-C-G8qmye.js");
|
|
4
4
|
let node_crypto = require("node:crypto");
|
|
5
5
|
//#region src/detection-pipeline/registry/effective-confidence.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as LABEL_SUPPLY_VOCABULARIES, Mt as inferModelProvider, b as DEVICE_BACKEND_TO_FORMAT, f as COCO_80_LABELS, hn as stepModelRunsOnFormat, i as AUDIO_MACRO_LABELS, p as COCO_TO_MACRO, tt as audioKindId } from "./dist-
|
|
2
|
-
import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-
|
|
1
|
+
import { A as LABEL_SUPPLY_VOCABULARIES, Mt as inferModelProvider, b as DEVICE_BACKEND_TO_FORMAT, f as COCO_80_LABELS, hn as stepModelRunsOnFormat, i as AUDIO_MACRO_LABELS, p as COCO_TO_MACRO, tt as audioKindId } from "./dist-TseSUtZJ.mjs";
|
|
2
|
+
import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-BSCj4g0O.mjs";
|
|
3
3
|
import { t as isWorkerReply } from "./worker-protocol-D_NzPcnh.mjs";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
//#region src/detection-pipeline/registry/effective-confidence.ts
|
|
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_node = require("../node-
|
|
8
|
-
const require_custom_model_catalog = require("../custom-model-catalog-
|
|
6
|
+
const require_dist = require("../dist-8okS4wxl.js");
|
|
7
|
+
const require_node = require("../node-BStoDcFQ.js");
|
|
8
|
+
const require_custom_model_catalog = require("../custom-model-catalog-BZFt7qC7.js");
|
|
9
9
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
10
|
-
const require_process_memory = require("../process-memory-
|
|
10
|
+
const require_process_memory = require("../process-memory-7YJfeXUK.js");
|
|
11
11
|
let node_os = require("node:os");
|
|
12
12
|
node_os = require_chunk.__toESM(node_os);
|
|
13
13
|
let node_fs = require("node:fs");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { Gt as modelBindingKey, Hn as hydrateSchema, It as loadContributionCapability, Kn as nodePin, L as PoolMemoryWatchdog, Mn as errMsg$1, Pn as BaseAddon, Pt as linkedLabelStepId, Q as applyModelBoundSettings, Qt as pipelineExecutorCapability, Rn as createEvent, St as evaluateZoneRules, Y as YAMNET_TO_MACRO, Yn as sleep, Yt as pickClusterStepSettings, Zn as array, an as resolveClusterStepModelId, bn as supportedRuntimes$1, cr as EventCategory, ct as collectModelBoundKeys, d as CLUSTER_MODEL_SCOPED_STEPS, g as DEFAULT_CLUSTER_STEP_SETTINGS, hn as stepModelRunsOnFormat, jt as hfModelUrl, k as LABEL_SUPPLY_MACRO, lt as containingParentIndex, mn as runtimeDevices$1, n as APPLE_SA_TO_MACRO, or as string, pn as rootSuppliesOf, pt as defaultDeviceFor$1, qt as overlayClusterStepSettings, rr as object, sr as union, un as resolvePoolMemoryPolicy, vt as detectionPipelineCapability, xt as enumerateInferenceDevices } from "../dist-
|
|
3
|
-
import { s as readProcessCost } from "../node-
|
|
4
|
-
import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog-
|
|
2
|
+
import { Gt as modelBindingKey, Hn as hydrateSchema, It as loadContributionCapability, Kn as nodePin, L as PoolMemoryWatchdog, Mn as errMsg$1, Pn as BaseAddon, Pt as linkedLabelStepId, Q as applyModelBoundSettings, Qt as pipelineExecutorCapability, Rn as createEvent, St as evaluateZoneRules, Y as YAMNET_TO_MACRO, Yn as sleep, Yt as pickClusterStepSettings, Zn as array, an as resolveClusterStepModelId, bn as supportedRuntimes$1, cr as EventCategory, ct as collectModelBoundKeys, d as CLUSTER_MODEL_SCOPED_STEPS, g as DEFAULT_CLUSTER_STEP_SETTINGS, hn as stepModelRunsOnFormat, jt as hfModelUrl, k as LABEL_SUPPLY_MACRO, lt as containingParentIndex, mn as runtimeDevices$1, n as APPLE_SA_TO_MACRO, or as string, pn as rootSuppliesOf, pt as defaultDeviceFor$1, qt as overlayClusterStepSettings, rr as object, sr as union, un as resolvePoolMemoryPolicy, vt as detectionPipelineCapability, xt as enumerateInferenceDevices } from "../dist-TseSUtZJ.mjs";
|
|
3
|
+
import { s as readProcessCost } from "../node-I5Y2Dzmr.mjs";
|
|
4
|
+
import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog-Bdp__rWS.mjs";
|
|
5
5
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
6
|
-
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-
|
|
6
|
+
import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-D4H6J3CG.mjs";
|
|
7
7
|
import * as os$1 from "node:os";
|
|
8
8
|
import * as fs from "node:fs";
|
|
9
9
|
import * as path$1 from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
let node_crypto = require("node:crypto");
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-C4hVnRo8.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -218,7 +218,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
218
218
|
EventCategory["RecordingStopped"] = "recording.stopped";
|
|
219
219
|
EventCategory["RecordingError"] = "recording.error";
|
|
220
220
|
EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
|
|
221
|
+
/** Recording enabled but no segment finalized for the NC stall window. */
|
|
222
|
+
EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
|
|
223
|
+
/** Recovery from {@link RecordingHealthStalled}. */
|
|
224
|
+
EventCategory["RecordingHealthOk"] = "recording.health.ok";
|
|
221
225
|
EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
|
|
226
|
+
/** Free space on a storage location crossed the warn bar. */
|
|
227
|
+
EventCategory["StorageLocationLow"] = "storage.location.low";
|
|
228
|
+
/** Free space at/under the critical bar, or capacity probe failed (`null`). */
|
|
229
|
+
EventCategory["StorageLocationCritical"] = "storage.location.critical";
|
|
230
|
+
/** Recovery from low/critical on a storage location. */
|
|
231
|
+
EventCategory["StorageLocationOk"] = "storage.location.ok";
|
|
222
232
|
EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
|
|
223
233
|
EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
|
|
224
234
|
EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
|
|
@@ -5377,7 +5387,7 @@ var ZodIssueCode = {
|
|
|
5377
5387
|
var ZodFirstPartyTypeKind;
|
|
5378
5388
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5379
5389
|
//#endregion
|
|
5380
|
-
//#region ../types/dist/sleep-
|
|
5390
|
+
//#region ../types/dist/sleep-Tkp9dHXv.mjs
|
|
5381
5391
|
/**
|
|
5382
5392
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5383
5393
|
* window to float samples (D455).
|
|
@@ -23446,6 +23456,12 @@ var NcSystemEventKindSchema = _enum([
|
|
|
23446
23456
|
"node-updating",
|
|
23447
23457
|
"node-inference-unavailable",
|
|
23448
23458
|
"detection-blind",
|
|
23459
|
+
"recording-stalled",
|
|
23460
|
+
"recording-healthy",
|
|
23461
|
+
"recording-degraded",
|
|
23462
|
+
"storage-location-low",
|
|
23463
|
+
"storage-location-critical",
|
|
23464
|
+
"storage-location-ok",
|
|
23449
23465
|
"addon-crash-loop",
|
|
23450
23466
|
"addon-update-available",
|
|
23451
23467
|
"server-update-available",
|
|
@@ -56654,6 +56670,9 @@ new Map(Object.entries({
|
|
|
56654
56670
|
"stream-online": "device-events",
|
|
56655
56671
|
"stream-offline": "device-events",
|
|
56656
56672
|
"detection-blind": "device-events",
|
|
56673
|
+
"recording-stalled": "device-events",
|
|
56674
|
+
"recording-healthy": "device-events",
|
|
56675
|
+
"recording-degraded": "device-events",
|
|
56657
56676
|
"node-online": "system",
|
|
56658
56677
|
"node-offline": "system",
|
|
56659
56678
|
"node-restarting": "system",
|
|
@@ -56667,6 +56686,9 @@ new Map(Object.entries({
|
|
|
56667
56686
|
"wrapper-update-available": "system",
|
|
56668
56687
|
"backup-completed": "system",
|
|
56669
56688
|
"export-completed": "system",
|
|
56689
|
+
"storage-location-low": "system",
|
|
56690
|
+
"storage-location-critical": "system",
|
|
56691
|
+
"storage-location-ok": "system",
|
|
56670
56692
|
"alarm-triggered": "alarm",
|
|
56671
56693
|
"alarm-armed": "alarm",
|
|
56672
56694
|
"alarm-disarmed": "alarm",
|
|
@@ -56728,6 +56750,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
56728
56750
|
label: "Detecting nothing",
|
|
56729
56751
|
kinds: ["detection-blind"]
|
|
56730
56752
|
},
|
|
56753
|
+
{
|
|
56754
|
+
id: "recording",
|
|
56755
|
+
family: "device-events",
|
|
56756
|
+
label: "Recording",
|
|
56757
|
+
kinds: [
|
|
56758
|
+
"recording-stalled",
|
|
56759
|
+
"recording-healthy",
|
|
56760
|
+
"recording-degraded"
|
|
56761
|
+
]
|
|
56762
|
+
},
|
|
56731
56763
|
{
|
|
56732
56764
|
id: "nodes",
|
|
56733
56765
|
family: "system",
|
|
@@ -56768,6 +56800,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
56768
56800
|
label: "Backups & exports",
|
|
56769
56801
|
kinds: ["backup-completed", "export-completed"]
|
|
56770
56802
|
},
|
|
56803
|
+
{
|
|
56804
|
+
id: "storage",
|
|
56805
|
+
family: "system",
|
|
56806
|
+
label: "Storage locations",
|
|
56807
|
+
kinds: [
|
|
56808
|
+
"storage-location-low",
|
|
56809
|
+
"storage-location-critical",
|
|
56810
|
+
"storage-location-ok"
|
|
56811
|
+
]
|
|
56812
|
+
},
|
|
56771
56813
|
{
|
|
56772
56814
|
id: "alarm",
|
|
56773
56815
|
family: "alarm",
|
|
@@ -56850,6 +56892,9 @@ var DEVICE_EVENTS = [
|
|
|
56850
56892
|
"stream-online",
|
|
56851
56893
|
"stream-offline",
|
|
56852
56894
|
"detection-blind",
|
|
56895
|
+
"recording-stalled",
|
|
56896
|
+
"recording-healthy",
|
|
56897
|
+
"recording-degraded",
|
|
56853
56898
|
...ALARM
|
|
56854
56899
|
];
|
|
56855
56900
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -57017,6 +57062,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
57017
57062
|
[...RULE_TEXT],
|
|
57018
57063
|
[...RULE_TEXT],
|
|
57019
57064
|
[...RULE_TEXT],
|
|
57065
|
+
[...RULE_TEXT],
|
|
57066
|
+
[...RULE_TEXT],
|
|
57067
|
+
[...RULE_TEXT],
|
|
57068
|
+
[...RULE_TEXT],
|
|
57069
|
+
[...RULE_TEXT],
|
|
57020
57070
|
([...RULE_TEXT], [...UPDATES]),
|
|
57021
57071
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
57022
57072
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-C4hVnRo8.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -218,7 +218,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
218
218
|
EventCategory["RecordingStopped"] = "recording.stopped";
|
|
219
219
|
EventCategory["RecordingError"] = "recording.error";
|
|
220
220
|
EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
|
|
221
|
+
/** Recording enabled but no segment finalized for the NC stall window. */
|
|
222
|
+
EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
|
|
223
|
+
/** Recovery from {@link RecordingHealthStalled}. */
|
|
224
|
+
EventCategory["RecordingHealthOk"] = "recording.health.ok";
|
|
221
225
|
EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
|
|
226
|
+
/** Free space on a storage location crossed the warn bar. */
|
|
227
|
+
EventCategory["StorageLocationLow"] = "storage.location.low";
|
|
228
|
+
/** Free space at/under the critical bar, or capacity probe failed (`null`). */
|
|
229
|
+
EventCategory["StorageLocationCritical"] = "storage.location.critical";
|
|
230
|
+
/** Recovery from low/critical on a storage location. */
|
|
231
|
+
EventCategory["StorageLocationOk"] = "storage.location.ok";
|
|
222
232
|
EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
|
|
223
233
|
EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
|
|
224
234
|
EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
|
|
@@ -5377,7 +5387,7 @@ var ZodIssueCode = {
|
|
|
5377
5387
|
var ZodFirstPartyTypeKind;
|
|
5378
5388
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5379
5389
|
//#endregion
|
|
5380
|
-
//#region ../types/dist/sleep-
|
|
5390
|
+
//#region ../types/dist/sleep-Tkp9dHXv.mjs
|
|
5381
5391
|
/**
|
|
5382
5392
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5383
5393
|
* window to float samples (D455).
|
|
@@ -23446,6 +23456,12 @@ var NcSystemEventKindSchema = _enum([
|
|
|
23446
23456
|
"node-updating",
|
|
23447
23457
|
"node-inference-unavailable",
|
|
23448
23458
|
"detection-blind",
|
|
23459
|
+
"recording-stalled",
|
|
23460
|
+
"recording-healthy",
|
|
23461
|
+
"recording-degraded",
|
|
23462
|
+
"storage-location-low",
|
|
23463
|
+
"storage-location-critical",
|
|
23464
|
+
"storage-location-ok",
|
|
23449
23465
|
"addon-crash-loop",
|
|
23450
23466
|
"addon-update-available",
|
|
23451
23467
|
"server-update-available",
|
|
@@ -56654,6 +56670,9 @@ new Map(Object.entries({
|
|
|
56654
56670
|
"stream-online": "device-events",
|
|
56655
56671
|
"stream-offline": "device-events",
|
|
56656
56672
|
"detection-blind": "device-events",
|
|
56673
|
+
"recording-stalled": "device-events",
|
|
56674
|
+
"recording-healthy": "device-events",
|
|
56675
|
+
"recording-degraded": "device-events",
|
|
56657
56676
|
"node-online": "system",
|
|
56658
56677
|
"node-offline": "system",
|
|
56659
56678
|
"node-restarting": "system",
|
|
@@ -56667,6 +56686,9 @@ new Map(Object.entries({
|
|
|
56667
56686
|
"wrapper-update-available": "system",
|
|
56668
56687
|
"backup-completed": "system",
|
|
56669
56688
|
"export-completed": "system",
|
|
56689
|
+
"storage-location-low": "system",
|
|
56690
|
+
"storage-location-critical": "system",
|
|
56691
|
+
"storage-location-ok": "system",
|
|
56670
56692
|
"alarm-triggered": "alarm",
|
|
56671
56693
|
"alarm-armed": "alarm",
|
|
56672
56694
|
"alarm-disarmed": "alarm",
|
|
@@ -56728,6 +56750,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
56728
56750
|
label: "Detecting nothing",
|
|
56729
56751
|
kinds: ["detection-blind"]
|
|
56730
56752
|
},
|
|
56753
|
+
{
|
|
56754
|
+
id: "recording",
|
|
56755
|
+
family: "device-events",
|
|
56756
|
+
label: "Recording",
|
|
56757
|
+
kinds: [
|
|
56758
|
+
"recording-stalled",
|
|
56759
|
+
"recording-healthy",
|
|
56760
|
+
"recording-degraded"
|
|
56761
|
+
]
|
|
56762
|
+
},
|
|
56731
56763
|
{
|
|
56732
56764
|
id: "nodes",
|
|
56733
56765
|
family: "system",
|
|
@@ -56768,6 +56800,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
56768
56800
|
label: "Backups & exports",
|
|
56769
56801
|
kinds: ["backup-completed", "export-completed"]
|
|
56770
56802
|
},
|
|
56803
|
+
{
|
|
56804
|
+
id: "storage",
|
|
56805
|
+
family: "system",
|
|
56806
|
+
label: "Storage locations",
|
|
56807
|
+
kinds: [
|
|
56808
|
+
"storage-location-low",
|
|
56809
|
+
"storage-location-critical",
|
|
56810
|
+
"storage-location-ok"
|
|
56811
|
+
]
|
|
56812
|
+
},
|
|
56771
56813
|
{
|
|
56772
56814
|
id: "alarm",
|
|
56773
56815
|
family: "alarm",
|
|
@@ -56850,6 +56892,9 @@ var DEVICE_EVENTS = [
|
|
|
56850
56892
|
"stream-online",
|
|
56851
56893
|
"stream-offline",
|
|
56852
56894
|
"detection-blind",
|
|
56895
|
+
"recording-stalled",
|
|
56896
|
+
"recording-healthy",
|
|
56897
|
+
"recording-degraded",
|
|
56853
56898
|
...ALARM
|
|
56854
56899
|
];
|
|
56855
56900
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -57017,6 +57062,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
57017
57062
|
[...RULE_TEXT],
|
|
57018
57063
|
[...RULE_TEXT],
|
|
57019
57064
|
[...RULE_TEXT],
|
|
57065
|
+
[...RULE_TEXT],
|
|
57066
|
+
[...RULE_TEXT],
|
|
57067
|
+
[...RULE_TEXT],
|
|
57068
|
+
[...RULE_TEXT],
|
|
57069
|
+
[...RULE_TEXT],
|
|
57020
57070
|
([...RULE_TEXT], [...UPDATES]),
|
|
57021
57071
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
57022
57072
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
@@ -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-8okS4wxl.js");
|
|
6
6
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Hn as hydrateSchema, Kt as motionDetectionCapability, Pn as BaseAddon, St as evaluateZoneRules, jn as DeviceType } from "../dist-
|
|
1
|
+
import { Hn as hydrateSchema, Kt as motionDetectionCapability, Pn as BaseAddon, St as evaluateZoneRules, jn as DeviceType } from "../dist-TseSUtZJ.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,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-8okS4wxl.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_fs = require("node:fs");
|
|
5
5
|
node_fs = require_chunk.__toESM(node_fs, 1);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { En as buildFfmpegArgs, Mn as errMsg, Tn as Fmp4BoxSplitter, kn as isSoftwareDecode } from "./dist-
|
|
1
|
+
import { En as buildFfmpegArgs, Mn as errMsg, Tn as Fmp4BoxSplitter, kn as isSoftwareDecode } from "./dist-TseSUtZJ.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_node = require("../node-
|
|
8
|
-
const require_custom_model_catalog = require("../custom-model-catalog-
|
|
6
|
+
const require_dist = require("../dist-8okS4wxl.js");
|
|
7
|
+
const require_node = require("../node-BStoDcFQ.js");
|
|
8
|
+
const require_custom_model_catalog = require("../custom-model-catalog-BZFt7qC7.js");
|
|
9
9
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
10
10
|
const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
|
|
11
11
|
const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $t as pipelineRunnerCapability, Bn as defineCustomActions, E as FailureCounters, Et as failureContributionCapability, Ft as linkedStepOf, I as PIPELINE_RAMP, It as loadContributionCapability, Kn as nodePin, M as NativeLeaseAdmissionSchema, Mn as errMsg, N as NativeLeaseSettingsSchema, P as NodeBenchRunnerInputSchema, Pn as BaseAddon, Qn as boolean, Rn as createEvent, U as ROOT_SUPPLIABLE_STEP_IDS, Xn as _enum, Xt as pickDetailCropConvention, Z as allowedSuppliedEffect, Zn as array, Zt as pickNativeLeaseOverride, _ as DEFAULT_DETAIL_CROP_CONVENTION, _t as deriveRootFaceRefineRect, a as BackgroundRunRegistry, cr as EventCategory, er as lazy, fn as resolveRootSupply, ht as deriveDetailCropRect, it as cameraOwnsMotionViaSensor, j as MODEL_FORMATS, ln as resolveModelBoundSetting, m as CROP_SUPPLY_SOURCES, nr as number, or as string, pn as rootSuppliesOf, rr as object, rt as buildBenchStepTree, tr as literal, x as DEVICE_RAMP, y as DEFAULT_NATIVE_LEASE_SETTINGS, zn as customAction } from "../dist-
|
|
2
|
-
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-
|
|
3
|
-
import { a as stepsForElectedPool, b as getStepDefinition, d as rootObjectGate, f as localFrameRegistry, h as resolveFrameViewGeometry, i as placeDetailStep, l as resolveDefaultDetectionModel, m as createSessionDecodeCoordinator, p as isSessionDecodeReadGone, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, y as getStep } from "../custom-model-catalog-
|
|
1
|
+
import { $t as pipelineRunnerCapability, Bn as defineCustomActions, E as FailureCounters, Et as failureContributionCapability, Ft as linkedStepOf, I as PIPELINE_RAMP, It as loadContributionCapability, Kn as nodePin, M as NativeLeaseAdmissionSchema, Mn as errMsg, N as NativeLeaseSettingsSchema, P as NodeBenchRunnerInputSchema, Pn as BaseAddon, Qn as boolean, Rn as createEvent, U as ROOT_SUPPLIABLE_STEP_IDS, Xn as _enum, Xt as pickDetailCropConvention, Z as allowedSuppliedEffect, Zn as array, Zt as pickNativeLeaseOverride, _ as DEFAULT_DETAIL_CROP_CONVENTION, _t as deriveRootFaceRefineRect, a as BackgroundRunRegistry, cr as EventCategory, er as lazy, fn as resolveRootSupply, ht as deriveDetailCropRect, it as cameraOwnsMotionViaSensor, j as MODEL_FORMATS, ln as resolveModelBoundSetting, m as CROP_SUPPLY_SOURCES, nr as number, or as string, pn as rootSuppliesOf, rr as object, rt as buildBenchStepTree, tr as literal, x as DEVICE_RAMP, y as DEFAULT_NATIVE_LEASE_SETTINGS, zn as customAction } from "../dist-TseSUtZJ.mjs";
|
|
2
|
+
import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-I5Y2Dzmr.mjs";
|
|
3
|
+
import { a as stepsForElectedPool, b as getStepDefinition, d as rootObjectGate, f as localFrameRegistry, h as resolveFrameViewGeometry, i as placeDetailStep, l as resolveDefaultDetectionModel, m as createSessionDecodeCoordinator, p as isSessionDecodeReadGone, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, y as getStep } from "../custom-model-catalog-Bdp__rWS.mjs";
|
|
4
4
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
5
5
|
import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
|
|
6
6
|
import { c as withDetectionIntent, o as preRollRequestOf, t as DETECTION_PRE_ROLL_REQUEST_MS } from "../restream-intent-DyGmLAU9.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-emK7D4bc.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-8okS4wxl.js");
|
|
3
3
|
let node_fs = require("node:fs");
|
|
4
4
|
node_fs = require_chunk.__toESM(node_fs);
|
|
5
5
|
let node_child_process = require("node:child_process");
|
package/dist/recorder/index.js
CHANGED
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_node = require("../node-
|
|
6
|
+
const require_dist = require("../dist-8okS4wxl.js");
|
|
7
|
+
const require_node = require("../node-BStoDcFQ.js");
|
|
8
8
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
9
9
|
const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
|
|
10
10
|
const require_retire_root_keys = require("../retire-root-keys-Csb8z2f3.js");
|
|
@@ -16328,6 +16328,94 @@ var SpawnPressureGovernor = class {
|
|
|
16328
16328
|
return this.deps.now?.() ?? Date.now();
|
|
16329
16329
|
}
|
|
16330
16330
|
};
|
|
16331
|
+
var DEFAULT_RECORDING_STALL_CONFIG = {
|
|
16332
|
+
thresholdMs: 5 * 6e4,
|
|
16333
|
+
degradedCooldownMs: 30 * 6e4
|
|
16334
|
+
};
|
|
16335
|
+
var RecordingStallMonitor = class {
|
|
16336
|
+
config;
|
|
16337
|
+
state = /* @__PURE__ */ new Map();
|
|
16338
|
+
constructor(config = DEFAULT_RECORDING_STALL_CONFIG) {
|
|
16339
|
+
this.config = config;
|
|
16340
|
+
}
|
|
16341
|
+
/**
|
|
16342
|
+
* Declare whether this camera is expected to produce segments. When
|
|
16343
|
+
* `expected` becomes false, any open stall episode is cleared without a
|
|
16344
|
+
* healthy event (switched-off must not look like recovery).
|
|
16345
|
+
*/
|
|
16346
|
+
setExpected(deviceId, expected, now) {
|
|
16347
|
+
const prev = this.state.get(deviceId);
|
|
16348
|
+
if (!expected) {
|
|
16349
|
+
this.state.set(deviceId, {
|
|
16350
|
+
expected: false,
|
|
16351
|
+
lastSegmentAt: prev?.lastSegmentAt ?? null,
|
|
16352
|
+
stalledReported: false,
|
|
16353
|
+
lastDegradedAt: prev?.lastDegradedAt ?? null
|
|
16354
|
+
});
|
|
16355
|
+
return;
|
|
16356
|
+
}
|
|
16357
|
+
this.state.set(deviceId, {
|
|
16358
|
+
expected: true,
|
|
16359
|
+
lastSegmentAt: prev?.lastSegmentAt ?? now,
|
|
16360
|
+
stalledReported: prev?.stalledReported ?? false,
|
|
16361
|
+
lastDegradedAt: prev?.lastDegradedAt ?? null
|
|
16362
|
+
});
|
|
16363
|
+
}
|
|
16364
|
+
/** A segment finalized for this camera (any profile). */
|
|
16365
|
+
noteSegment(deviceId, now) {
|
|
16366
|
+
const prev = this.state.get(deviceId);
|
|
16367
|
+
const wasStalled = prev?.stalledReported === true;
|
|
16368
|
+
this.state.set(deviceId, {
|
|
16369
|
+
expected: prev?.expected ?? false,
|
|
16370
|
+
lastSegmentAt: now,
|
|
16371
|
+
stalledReported: false,
|
|
16372
|
+
lastDegradedAt: prev?.lastDegradedAt ?? null
|
|
16373
|
+
});
|
|
16374
|
+
if (wasStalled && (prev?.expected ?? false)) return { deviceId };
|
|
16375
|
+
return null;
|
|
16376
|
+
}
|
|
16377
|
+
/**
|
|
16378
|
+
* Devices that have JUST crossed into stalled. Call from a periodic sweep.
|
|
16379
|
+
*/
|
|
16380
|
+
sweep(now) {
|
|
16381
|
+
const out = [];
|
|
16382
|
+
for (const [deviceId, s] of this.state) {
|
|
16383
|
+
if (!s.expected || s.stalledReported) continue;
|
|
16384
|
+
if (s.lastSegmentAt === null) continue;
|
|
16385
|
+
const idleMs = now - s.lastSegmentAt;
|
|
16386
|
+
if (idleMs < this.config.thresholdMs) continue;
|
|
16387
|
+
this.state.set(deviceId, {
|
|
16388
|
+
...s,
|
|
16389
|
+
stalledReported: true
|
|
16390
|
+
});
|
|
16391
|
+
out.push({
|
|
16392
|
+
deviceId,
|
|
16393
|
+
idleMs,
|
|
16394
|
+
thresholdMs: this.config.thresholdMs
|
|
16395
|
+
});
|
|
16396
|
+
}
|
|
16397
|
+
return out;
|
|
16398
|
+
}
|
|
16399
|
+
/**
|
|
16400
|
+
* Writer restart budget exhausted. Cooldown per camera so a storm is one
|
|
16401
|
+
* notification, not one per give-up.
|
|
16402
|
+
*/
|
|
16403
|
+
noteDegraded(deviceId, message, now) {
|
|
16404
|
+
const prev = this.state.get(deviceId);
|
|
16405
|
+
const last = prev?.lastDegradedAt ?? null;
|
|
16406
|
+
if (last !== null && now - last < this.config.degradedCooldownMs) return null;
|
|
16407
|
+
this.state.set(deviceId, {
|
|
16408
|
+
expected: prev?.expected ?? false,
|
|
16409
|
+
lastSegmentAt: prev?.lastSegmentAt ?? null,
|
|
16410
|
+
stalledReported: prev?.stalledReported ?? false,
|
|
16411
|
+
lastDegradedAt: now
|
|
16412
|
+
});
|
|
16413
|
+
return {
|
|
16414
|
+
deviceId,
|
|
16415
|
+
message
|
|
16416
|
+
};
|
|
16417
|
+
}
|
|
16418
|
+
};
|
|
16331
16419
|
//#endregion
|
|
16332
16420
|
//#region src/recorder/addon/recording-controller.ts
|
|
16333
16421
|
/**
|
|
@@ -16688,6 +16776,7 @@ var RecordingController = class {
|
|
|
16688
16776
|
* for good reason. Every bounded-parallel attach in this file reads it.
|
|
16689
16777
|
*/
|
|
16690
16778
|
spawnPressure;
|
|
16779
|
+
stallMonitor = new RecordingStallMonitor();
|
|
16691
16780
|
constructor(deps) {
|
|
16692
16781
|
this.deps = deps;
|
|
16693
16782
|
this.spawnPressure = new SpawnPressureGovernor({
|
|
@@ -17266,6 +17355,20 @@ var RecordingController = class {
|
|
|
17266
17355
|
segmentSeconds: this.active.get(s.deviceId)?.find((r) => r.profile === s.profile)?.segmentSeconds
|
|
17267
17356
|
}
|
|
17268
17357
|
});
|
|
17358
|
+
for (const edge of this.stallMonitor.sweep(now)) {
|
|
17359
|
+
this.deps.logger.warn("recorder: recording stalled for Notification Center", {
|
|
17360
|
+
tags: { deviceId: edge.deviceId },
|
|
17361
|
+
meta: {
|
|
17362
|
+
idleMs: edge.idleMs,
|
|
17363
|
+
thresholdMs: edge.thresholdMs
|
|
17364
|
+
}
|
|
17365
|
+
});
|
|
17366
|
+
this.deps.emitRecordingHealth?.(require_dist.EventCategory.RecordingHealthStalled, {
|
|
17367
|
+
deviceId: edge.deviceId,
|
|
17368
|
+
idleMs: edge.idleMs,
|
|
17369
|
+
thresholdMs: edge.thresholdMs
|
|
17370
|
+
});
|
|
17371
|
+
}
|
|
17269
17372
|
const byDevice = /* @__PURE__ */ new Map();
|
|
17270
17373
|
for (const s of stalled) {
|
|
17271
17374
|
const list = byDevice.get(s.deviceId);
|
|
@@ -17415,6 +17518,7 @@ var RecordingController = class {
|
|
|
17415
17518
|
const config = await this.deps.loadConfig(deviceId);
|
|
17416
17519
|
if (this.stopped || this.paused) return;
|
|
17417
17520
|
const wantRecording = shouldRecordAt(config, this.triggersFor(deviceId), new Date(this.now()));
|
|
17521
|
+
this.stallMonitor.setExpected(deviceId, wantRecording, this.now());
|
|
17418
17522
|
this.scheduleNextDecision(deviceId, config);
|
|
17419
17523
|
if (!wantRecording) {
|
|
17420
17524
|
this.reportUnrecordable(deviceId, config);
|
|
@@ -17889,6 +17993,20 @@ var RecordingController = class {
|
|
|
17889
17993
|
pid
|
|
17890
17994
|
}) ?? require_node.NO_COST_CLAIM,
|
|
17891
17995
|
onGaveUp: () => {
|
|
17996
|
+
const degraded = this.stallMonitor.noteDegraded(deviceId, `writer gave up on profile ${profile}`, this.now());
|
|
17997
|
+
if (degraded !== null) {
|
|
17998
|
+
this.deps.logger.warn("recorder: recording degraded (restart budget exhausted)", {
|
|
17999
|
+
tags: { deviceId },
|
|
18000
|
+
meta: {
|
|
18001
|
+
profile,
|
|
18002
|
+
message: degraded.message
|
|
18003
|
+
}
|
|
18004
|
+
});
|
|
18005
|
+
this.deps.emitRecordingHealth?.(require_dist.EventCategory.RecordingHealthDegraded, {
|
|
18006
|
+
deviceId,
|
|
18007
|
+
message: degraded.message
|
|
18008
|
+
});
|
|
18009
|
+
}
|
|
17892
18010
|
this.recoverWriterGaveUp(deviceId, profile);
|
|
17893
18011
|
},
|
|
17894
18012
|
onResourcePressure: () => this.spawnPressure.report(deviceId)
|
|
@@ -17930,7 +18048,10 @@ var RecordingController = class {
|
|
|
17930
18048
|
},
|
|
17931
18049
|
intervalMs: this.deps.watchIntervalMs > 0 ? this.deps.watchIntervalMs : DEFAULT_WATCH_INTERVAL_MS,
|
|
17932
18050
|
onFinalized: async (startMs, durMs, flatAbsPath) => {
|
|
17933
|
-
|
|
18051
|
+
const segmentAt = this.now();
|
|
18052
|
+
this.lastSegmentAt.set(idleKey(deviceId, profile), segmentAt);
|
|
18053
|
+
const recovered = this.stallMonitor.noteSegment(deviceId, segmentAt);
|
|
18054
|
+
if (recovered !== null) this.deps.emitRecordingHealth?.(require_dist.EventCategory.RecordingHealthOk, { deviceId: recovered.deviceId });
|
|
17934
18055
|
if (startMs >= writerStartedMs - 1e3 && !firstSegmentSeen) {
|
|
17935
18056
|
firstSegmentSeen = true;
|
|
17936
18057
|
this.deps.logger.info("recorder: first segment of this attach", {
|
|
@@ -21714,6 +21835,9 @@ var RecorderV2Addon = class extends require_dist.BaseAddon {
|
|
|
21714
21835
|
count: missed.count
|
|
21715
21836
|
});
|
|
21716
21837
|
},
|
|
21838
|
+
emitRecordingHealth: (category, data) => {
|
|
21839
|
+
this.emitExportEvent(category, data);
|
|
21840
|
+
},
|
|
21717
21841
|
spawn: node_child_process.spawn,
|
|
21718
21842
|
costRegistry: this.costRegistry,
|
|
21719
21843
|
segmentSeconds: this.config.segmentSeconds,
|