@camstack/addon-pipeline 1.2.115 → 1.2.119
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/{addon-utils-C0ht2KPO.js → addon-utils-RAHF2hmW.js} +1 -1
- package/dist/audio-analyzer/index.js +3 -3
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/detection-pipeline/index.js +171 -167
- package/dist/detection-pipeline/index.mjs +169 -165
- package/dist/{dist-BqIbYW1A.js → dist-DIsM42Ex.js} +121 -11
- package/dist/{dist-DGQkkWc6.mjs → dist-Db664g2O.mjs} +116 -12
- package/dist/{event-loop-stall-monitor-ylMGpz48.js → event-loop-stall-monitor-CSpdFZb6.js} +1 -1
- package/dist/{event-loop-stall-monitor-D5jK5v4Z.mjs → event-loop-stall-monitor-DY6339bX.mjs} +1 -1
- package/dist/{lazy-sharp-cOsy7l_P.js → lazy-sharp-LSlEXQe_.js} +1 -1
- package/dist/motion-wasm/index.js +2 -2
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +12 -14
- package/dist/pipeline-runner/index.mjs +11 -13
- package/dist/{process-memory-BtT7WfbJ.mjs → process-memory-CPm5TMBl.mjs} +1 -1
- package/dist/{process-memory-45juuHpN.js → process-memory-DpSJQF-p.js} +1 -1
- package/dist/recorder/index.js +261 -32
- package/dist/recorder/index.mjs +260 -31
- package/dist/session-decode/decode-worker-child.js +34 -26
- package/dist/session-decode/decode-worker-child.mjs +33 -25
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-C_SFFNGT.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CstvrzmK.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BiNja8Hw.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-BAMyzCWw.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D-NFPV_g.mjs} +1 -1
- package/dist/stream-broker/{hostInit-CG28NvlV.mjs → hostInit-kHeLqEod.mjs} +2 -2
- package/dist/stream-broker/index.js +8 -6
- package/dist/stream-broker/index.mjs +8 -6
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-CIrqGbpG.js → worker-protocol-C1tr8WP3.js} +1 -1
- package/dist/{worker-protocol-DyocTIx_.mjs → worker-protocol-_zMPqSas.mjs} +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-B1LDFHY9.mjs +0 -26
|
@@ -9150,6 +9150,25 @@ var ModelVariantGroupSchema = object({
|
|
|
9150
9150
|
*/
|
|
9151
9151
|
resolution: number().int().positive().optional()
|
|
9152
9152
|
});
|
|
9153
|
+
var ModelProviderIdSchema = _enum([
|
|
9154
|
+
"camstack",
|
|
9155
|
+
"frigate",
|
|
9156
|
+
"scrypted",
|
|
9157
|
+
"custom"
|
|
9158
|
+
]);
|
|
9159
|
+
/**
|
|
9160
|
+
* Resolve a catalog entry's picker provider. An explicit stamp always wins;
|
|
9161
|
+
* otherwise Frigate/Scrypted are recognised from id prefix or description.
|
|
9162
|
+
* Unstamped BYO registry rows fall through to `custom`. Family `yolov9` is
|
|
9163
|
+
* NOT a Scrypted signal — CamStack ships that family too.
|
|
9164
|
+
*/
|
|
9165
|
+
function inferModelProvider(entry) {
|
|
9166
|
+
if (entry.provider !== void 0) return entry.provider;
|
|
9167
|
+
const haystack = `${entry.id} ${entry.description ?? ""}`;
|
|
9168
|
+
if (/scrypted/i.test(haystack)) return "scrypted";
|
|
9169
|
+
if (/frigate/i.test(haystack)) return "frigate";
|
|
9170
|
+
return "custom";
|
|
9171
|
+
}
|
|
9153
9172
|
var ModelCatalogEntrySchema = object({
|
|
9154
9173
|
id: string(),
|
|
9155
9174
|
name: string(),
|
|
@@ -9247,6 +9266,12 @@ var ModelCatalogEntrySchema = object({
|
|
|
9247
9266
|
*/
|
|
9248
9267
|
group: ModelVariantGroupSchema.optional(),
|
|
9249
9268
|
/**
|
|
9269
|
+
* Catalog source for the pipeline stepper's provider-first picker. Absent on
|
|
9270
|
+
* built-in CamStack entries (treated as `camstack`) and on registry rows
|
|
9271
|
+
* persisted before this field existed (`inferModelProvider` fills those).
|
|
9272
|
+
*/
|
|
9273
|
+
provider: ModelProviderIdSchema.optional(),
|
|
9274
|
+
/**
|
|
9250
9275
|
* Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
|
|
9251
9276
|
* applies (Frigate / COCO public catalog). Set on a custom model whose raw
|
|
9252
9277
|
* labels already ARE the CamStack macros (Scrypted identity map).
|
|
@@ -16213,12 +16238,15 @@ var NcOccupancyConditionSchema = object({
|
|
|
16213
16238
|
* there is no second switch that can disagree with the first and every rule
|
|
16214
16239
|
* authored before the decision migrates for free (`audioModeOf`):
|
|
16215
16240
|
*
|
|
16216
|
-
* - **LABEL mode — `labels` present.** The rule fires
|
|
16217
|
-
*
|
|
16218
|
-
* `hitPercent` and `samplingSeconds` are ignored
|
|
16219
|
-
*
|
|
16220
|
-
*
|
|
16221
|
-
*
|
|
16241
|
+
* - **LABEL mode — `labels` present.** The rule fires when `confirmHits`
|
|
16242
|
+
* labelled frames land inside `confirmWindowSec` (default 2 in 5 s).
|
|
16243
|
+
* `hitPercent` and `samplingSeconds` are still ignored — a percentage of
|
|
16244
|
+
* frames is the wrong question for a classifier that labels 1–3 frames
|
|
16245
|
+
* per episode. The count window is the brake that drops a single-frame
|
|
16246
|
+
* false positive; the rule's own `throttle` cooldown is the other. The
|
|
16247
|
+
* per-label confidence floor is the analyzer's (`classificationMinScore`,
|
|
16248
|
+
* per device) — a label only reaches this condition if the classifier was
|
|
16249
|
+
* already confident enough. `confirmHits: 1` restores first-frame fire.
|
|
16222
16250
|
* - **LEVEL mode — `dbThreshold` present, no labels.** The sampling window IS
|
|
16223
16251
|
* the condition: at least `hitPercent`% of the samples over
|
|
16224
16252
|
* `samplingSeconds` must be at or above `dbThreshold` dBFS (see
|
|
@@ -16245,14 +16273,22 @@ var NcOccupancyConditionSchema = object({
|
|
|
16245
16273
|
* an operator who typed `dog` mean the same thing.
|
|
16246
16274
|
*/
|
|
16247
16275
|
var NcAudioConditionSchema = object({
|
|
16248
|
-
/** LABEL MODE: audio macro labels. Present ⇒
|
|
16276
|
+
/** LABEL MODE: audio macro labels. Present ⇒ count-in-window confirm. */
|
|
16249
16277
|
labels: array(string().min(1)).min(1).optional(),
|
|
16250
16278
|
/** LEVEL MODE: floor in dBFS (negative-going, `0` = full scale). */
|
|
16251
16279
|
dbThreshold: number().min(-96).max(0).optional(),
|
|
16252
16280
|
/** LEVEL MODE ONLY: percentage of the window's samples that must be hits (1–100). */
|
|
16253
16281
|
hitPercent: number().int().min(1).max(100).default(60),
|
|
16254
16282
|
/** LEVEL MODE ONLY: length of the sampling window in seconds. */
|
|
16255
|
-
samplingSeconds: number().int().min(1).max(300).default(10)
|
|
16283
|
+
samplingSeconds: number().int().min(1).max(300).default(10),
|
|
16284
|
+
/**
|
|
16285
|
+
* LABEL MODE: how many labelled frames must land inside
|
|
16286
|
+
* {@link NcAudioConditionSchema.shape.confirmWindowSec} before dispatch.
|
|
16287
|
+
* Absent ⇒ 2 (the matcher default). `1` is first-frame fire.
|
|
16288
|
+
*/
|
|
16289
|
+
confirmHits: number().int().min(1).max(20).optional(),
|
|
16290
|
+
/** LABEL MODE: the window those frames must share, in seconds. Absent ⇒ 5. */
|
|
16291
|
+
confirmWindowSec: number().int().min(1).max(60).optional()
|
|
16256
16292
|
});
|
|
16257
16293
|
/**
|
|
16258
16294
|
* Which zone-crossing DIRECTION a rule accepts (`ObjectEvent.zoneCrossing`).
|
|
@@ -18626,6 +18662,46 @@ var RecentTracksPageSchema = object({
|
|
|
18626
18662
|
/** Cursor for the next page, or null when this page is the last. */
|
|
18627
18663
|
nextCursor: string().nullable()
|
|
18628
18664
|
});
|
|
18665
|
+
var LIST_GROUPS_DEFAULT_LIMIT = 40;
|
|
18666
|
+
var LIST_GROUPS_MAX_LIMIT = 100;
|
|
18667
|
+
var AnalyticsGroupRecordSchema = object({
|
|
18668
|
+
id: string(),
|
|
18669
|
+
deviceId: number().int(),
|
|
18670
|
+
openedAt: number().int(),
|
|
18671
|
+
closedAt: number().int(),
|
|
18672
|
+
timestamp: number().int(),
|
|
18673
|
+
memberCount: number().int(),
|
|
18674
|
+
memberTrackIds: array(string()).readonly(),
|
|
18675
|
+
className: string(),
|
|
18676
|
+
classes: array(string()).readonly(),
|
|
18677
|
+
/** Relative event-media path, or null when the group has no picture yet. */
|
|
18678
|
+
mediaUrl: string().nullable(),
|
|
18679
|
+
singleton: boolean()
|
|
18680
|
+
});
|
|
18681
|
+
var AnalyticsGroupMemberSchema = object({
|
|
18682
|
+
trackId: string(),
|
|
18683
|
+
deviceId: number().int(),
|
|
18684
|
+
className: string(),
|
|
18685
|
+
firstSeen: number().int(),
|
|
18686
|
+
lastSeen: number().int(),
|
|
18687
|
+
mediaUrl: string().nullable()
|
|
18688
|
+
});
|
|
18689
|
+
var AnalyticsGroupDetailSchema = AnalyticsGroupRecordSchema.extend({ members: array(AnalyticsGroupMemberSchema).readonly() });
|
|
18690
|
+
var ListGroupsQueryInput = object({
|
|
18691
|
+
/** Devices to merge. An empty array yields `{ groups: [], nextCursor: null }`. */
|
|
18692
|
+
deviceIds: array(number()),
|
|
18693
|
+
/** Window lower bound on `closedAt` (inclusive). */
|
|
18694
|
+
since: number().optional(),
|
|
18695
|
+
/** Window upper bound on `openedAt` (inclusive). */
|
|
18696
|
+
until: number().optional(),
|
|
18697
|
+
limit: number().int().min(1).max(LIST_GROUPS_MAX_LIMIT).default(LIST_GROUPS_DEFAULT_LIMIT),
|
|
18698
|
+
/** Opaque continuation cursor from a previous page's `nextCursor`. */
|
|
18699
|
+
cursor: string().optional()
|
|
18700
|
+
});
|
|
18701
|
+
var ListGroupsPageSchema = object({
|
|
18702
|
+
groups: array(AnalyticsGroupRecordSchema).readonly(),
|
|
18703
|
+
nextCursor: string().nullable()
|
|
18704
|
+
});
|
|
18629
18705
|
var KeyEventQueryInput = object({
|
|
18630
18706
|
deviceId: number(),
|
|
18631
18707
|
/** Window lower bound (track firstSeen ≥ since). */
|
|
@@ -18701,7 +18777,9 @@ var TrackCascadeCountsSchema = object({
|
|
|
18701
18777
|
/** Unassigned plate reads removed (best-effort; plate leg deferred to plate-intelligence). */
|
|
18702
18778
|
plates: number().int(),
|
|
18703
18779
|
/** Per-track CLIP search vectors removed (best-effort). */
|
|
18704
|
-
embeddings: number().int()
|
|
18780
|
+
embeddings: number().int(),
|
|
18781
|
+
/** Group membership + group rows removed with their last member (best-effort). */
|
|
18782
|
+
groups: number().int()
|
|
18705
18783
|
});
|
|
18706
18784
|
/** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
|
|
18707
18785
|
var DiskReconcileCountsSchema = object({
|
|
@@ -18847,7 +18925,10 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
18847
18925
|
* stationary registry). Default false: the timeline lists passages,
|
|
18848
18926
|
* not parking records (operator decision, 2026-08-15). */
|
|
18849
18927
|
includeStationary: boolean().optional()
|
|
18850
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(
|
|
18928
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(ListGroupsQueryInput, ListGroupsPageSchema), method(object({
|
|
18929
|
+
deviceId: number(),
|
|
18930
|
+
groupId: string().min(1)
|
|
18931
|
+
}), AnalyticsGroupDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
18851
18932
|
kind: "mutation",
|
|
18852
18933
|
auth: "admin"
|
|
18853
18934
|
}), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
|
|
@@ -19157,7 +19238,8 @@ var PipelineModelOptionSchema = object({
|
|
|
19157
19238
|
sizeMB: number()
|
|
19158
19239
|
})),
|
|
19159
19240
|
group: ModelVariantGroupSchema.optional(),
|
|
19160
|
-
legacy: boolean().optional()
|
|
19241
|
+
legacy: boolean().optional(),
|
|
19242
|
+
provider: ModelProviderIdSchema.optional()
|
|
19161
19243
|
});
|
|
19162
19244
|
var ConfigFieldBridge = custom();
|
|
19163
19245
|
var PipelineAddonSchemaSchema = object({
|
|
@@ -31839,6 +31921,12 @@ Object.freeze({
|
|
|
31839
31921
|
addonId: null,
|
|
31840
31922
|
access: "view"
|
|
31841
31923
|
},
|
|
31924
|
+
"pipelineAnalytics.getGroup": {
|
|
31925
|
+
capName: "pipeline-analytics",
|
|
31926
|
+
capScope: "device",
|
|
31927
|
+
addonId: null,
|
|
31928
|
+
access: "view"
|
|
31929
|
+
},
|
|
31842
31930
|
"pipelineAnalytics.getKeyEvents": {
|
|
31843
31931
|
capName: "pipeline-analytics",
|
|
31844
31932
|
capScope: "device",
|
|
@@ -31923,6 +32011,12 @@ Object.freeze({
|
|
|
31923
32011
|
addonId: null,
|
|
31924
32012
|
access: "view"
|
|
31925
32013
|
},
|
|
32014
|
+
"pipelineAnalytics.listGroups": {
|
|
32015
|
+
capName: "pipeline-analytics",
|
|
32016
|
+
capScope: "device",
|
|
32017
|
+
addonId: null,
|
|
32018
|
+
access: "view"
|
|
32019
|
+
},
|
|
31926
32020
|
"pipelineAnalytics.listOpsLog": {
|
|
31927
32021
|
capName: "pipeline-analytics",
|
|
31928
32022
|
capScope: "device",
|
|
@@ -35342,6 +35436,11 @@ Object.freeze({
|
|
|
35342
35436
|
form: "single",
|
|
35343
35437
|
optional: false
|
|
35344
35438
|
}],
|
|
35439
|
+
"pipelineAnalytics.getGroup": [{
|
|
35440
|
+
name: "deviceId",
|
|
35441
|
+
form: "single",
|
|
35442
|
+
optional: false
|
|
35443
|
+
}],
|
|
35345
35444
|
"pipelineAnalytics.getKeyEvents": [{
|
|
35346
35445
|
name: "deviceId",
|
|
35347
35446
|
form: "single",
|
|
@@ -35397,6 +35496,11 @@ Object.freeze({
|
|
|
35397
35496
|
form: "array",
|
|
35398
35497
|
optional: false
|
|
35399
35498
|
}],
|
|
35499
|
+
"pipelineAnalytics.listGroups": [{
|
|
35500
|
+
name: "deviceIds",
|
|
35501
|
+
form: "array",
|
|
35502
|
+
optional: false
|
|
35503
|
+
}],
|
|
35400
35504
|
"pipelineAnalytics.listOpsLog": [{
|
|
35401
35505
|
name: "deviceId",
|
|
35402
35506
|
form: "single",
|
|
@@ -37689,4 +37793,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
37689
37793
|
return out;
|
|
37690
37794
|
}
|
|
37691
37795
|
//#endregion
|
|
37692
|
-
export {
|
|
37796
|
+
export { pickClusterStepModels as $, audioAnalyzerCapability as A, makeSourceBrokerId as At, deriveRecordingMode as B, lazy as Bt, RATE_CONTROL_TIGHT as C, CAM_PROFILE_ORDER as Ct, YAMNET_TO_MACRO as D, hydrateSchema as Dt, RingBuffer as E, createEvent as Et, customAction as F, sleep as Ft, evaluateZoneRules as G, string as Gt, egressTranscodeSharingKey as H, number as Ht, defaultDeviceFor as I, _enum as It, mapAudioLabelToMacro as J, hfModelUrl as K, union as Kt, defineCustomActions as L, array as Lt, batteryCapability as M, parseJsonUnknown as Mt, cameraStreamsCapability as N, parseProfileBrokerId as Nt, addonWidgetsSourceCapability as O, isEvent as Ot, createHwAccelCache as P, selectAssignedProfileSlots as Pt, parseProcStatus as Q, deriveBatteryPresence as R, boolean as Rt, RATE_CONTROL_RELAXED as S, BaseAddon as St, RecordingConfigSchema as T, DeviceType as Tt, egressTransportFromRequest as U, object as Ut, detectionPipelineCapability as V, literal as Vt, enumerateInferenceDevices as W, record as Wt, motionDetectionCapability as X, maskUrlCredentials as Y, overlayClusterStepSettings as Z, HF_BASE_URL as _, AUDIO_PRESETS as _t, COCO_80_LABELS as a, recordingCapability as at, OpsLogEntrySchema as b, invocationFromEncodeProfile as bt, DEFAULT_CLUSTER_STEP_MODELS as c, resolveEgressDecodeHwAccel as ct, DEFAULT_EVENTS_BAND_BUFFER_SEC as d, runtimeDevices as dt, pickClusterStepSettings as et, DEFAULT_NATIVE_LEASE_SETTINGS as f, storageEvictableCapability as ft, ExportRecordSchema as g, errMsg as gt, EncodeProfileSchema as h, webrtcSessionCapability as ht, BatteryStatusSchema as i, pipelineRunnerCapability as it, audioKindId as j, nodePin as jt, audioAnalysisCapability as k, makeProfileBrokerId as kt, DEFAULT_CLUSTER_STEP_SETTINGS as l, resolvePoolMemoryPolicy as lt, EVENT_PAD_MS as m, supportedRuntimes as mt, AUDIO_BACKEND_CHOICES as n, pickNativeLeaseOverride as nt, COCO_TO_MACRO as o, recordingExportCapability as ot, DEVICE_BACKEND_TO_FORMAT as p, streamBrokerCapability as pt, inferModelProvider as q, EventCategory as qt, AUDIO_MACRO_LABELS as r, pipelineExecutorCapability as rt, DEFAULT_AUDIO_ANALYZER_CONFIG as s, resolveClusterStepModelId as st, APPLE_SA_TO_MACRO as t, pickDetailCropConvention as tt, DEFAULT_DETAIL_CROP_CONVENTION as u, resolveRecordingProfiles as ut, NativeLeaseAdmissionSchema as v, Fmp4BoxSplitter as vt, RECORDING_EXPORT_MAX_READ_BYTES as w, DeviceFeature as wt, PoolMemoryWatchdog as x, isSoftwareDecode as xt, NativeLeaseSettingsSchema as y, buildFfmpegArgs as yt, deriveDetailCropRect as z, discriminatedUnion as zt };
|
package/dist/{event-loop-stall-monitor-D5jK5v4Z.mjs → event-loop-stall-monitor-DY6339bX.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { K as hfModelUrl, a as COCO_80_LABELS, j as audioKindId, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-
|
|
1
|
+
import { K as hfModelUrl, a as COCO_80_LABELS, j as audioKindId, o as COCO_TO_MACRO, r as AUDIO_MACRO_LABELS } from "./dist-Db664g2O.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { PerformanceObserver } from "node:perf_hooks";
|
|
4
4
|
//#region src/detection-pipeline/registry/model-catalogs.ts
|
|
@@ -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-DIsM42Ex.js");
|
|
6
|
+
const require_lazy_sharp = require("../lazy-sharp-LSlEXQe_.js");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
let node_fs = require("node:fs");
|
|
9
9
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Dt as hydrateSchema, G as evaluateZoneRules, St as BaseAddon, Tt as DeviceType, X as motionDetectionCapability } from "../dist-Db664g2O.mjs";
|
|
2
2
|
import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { readFileSync } from "node:fs";
|
|
@@ -2,11 +2,11 @@ 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_event_loop_stall_monitor = require("../event-loop-stall-monitor-
|
|
7
|
-
const require_worker_protocol = require("../worker-protocol-
|
|
5
|
+
const require_dist = require("../dist-DIsM42Ex.js");
|
|
6
|
+
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CSpdFZb6.js");
|
|
7
|
+
const require_worker_protocol = require("../worker-protocol-C1tr8WP3.js");
|
|
8
8
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
9
|
-
const require_lazy_sharp = require("../lazy-sharp-
|
|
9
|
+
const require_lazy_sharp = require("../lazy-sharp-LSlEXQe_.js");
|
|
10
10
|
const require_restream_intent = require("../restream-intent-Cv9x3jmu.js");
|
|
11
11
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
12
12
|
let sharp = require("sharp");
|
|
@@ -3130,16 +3130,14 @@ var PACKAGE_DETECTION_STEP_ID = "package-detection";
|
|
|
3130
3130
|
/**
|
|
3131
3131
|
* Burst: 5 runs, 5s apart — 0s, 5s, 10s, 15s, 20s after the settle edge.
|
|
3132
3132
|
*
|
|
3133
|
-
* Sized
|
|
3134
|
-
* `
|
|
3135
|
-
*
|
|
3136
|
-
*
|
|
3137
|
-
*
|
|
3138
|
-
*
|
|
3139
|
-
*
|
|
3140
|
-
*
|
|
3141
|
-
* delivery falls back to the poll. 20s over 15s is one whole run of margin,
|
|
3142
|
-
* which is what absorbs a dropped analyzer frame.
|
|
3133
|
+
* Sized as a SAFETY NET when the operator raises `packageDropDwellSec` above
|
|
3134
|
+
* zero: the burst SPAN (`(burstCount - 1) × burstIntervalMs` = 20s) must
|
|
3135
|
+
* clear that dwell, or the delivery falls back to the 45 s poll. Promotion
|
|
3136
|
+
* itself counts FRAMES (`packageDropMinFrames`, default 3), so a single
|
|
3137
|
+
* settle session that sees the box three times is enough when dwell is 0 —
|
|
3138
|
+
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device 615
|
|
3139
|
+
* (2026-08-24 13:40). The relation is pinned by
|
|
3140
|
+
* `scripts/check-package-promotion-satisfiable.ts`.
|
|
3143
3141
|
*
|
|
3144
3142
|
* Cost: 5 extra inferences per motion episode, on cameras with an active
|
|
3145
3143
|
* package zone only (the caller consults this governor only while the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as resolveFrameViewGeometry, r as localFrameRegistry, t as attributeStall, u as getStepDefinition } from "../event-loop-stall-monitor-
|
|
3
|
-
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-
|
|
1
|
+
import { Bt as lazy, Et as createEvent, F as customAction, Gt as string, Ht as number, It as _enum, L as defineCustomActions, Lt as array, Rt as boolean, St as BaseAddon, Ut as object, Vt as literal, gt as errMsg, it as pipelineRunnerCapability, jt as nodePin, nt as pickNativeLeaseOverride, p as DEVICE_BACKEND_TO_FORMAT, qt as EventCategory, tt as pickDetailCropConvention, u as DEFAULT_DETAIL_CROP_CONVENTION, z as deriveDetailCropRect } from "../dist-Db664g2O.mjs";
|
|
2
|
+
import { i as resolveFrameViewGeometry, r as localFrameRegistry, t as attributeStall, u as getStepDefinition } from "../event-loop-stall-monitor-DY6339bX.mjs";
|
|
3
|
+
import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-_zMPqSas.mjs";
|
|
4
4
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
5
5
|
import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
|
|
6
6
|
import { n as withDetectionIntent } from "../restream-intent-B4BXZra7.mjs";
|
|
@@ -3123,16 +3123,14 @@ var PACKAGE_DETECTION_STEP_ID = "package-detection";
|
|
|
3123
3123
|
/**
|
|
3124
3124
|
* Burst: 5 runs, 5s apart — 0s, 5s, 10s, 15s, 20s after the settle edge.
|
|
3125
3125
|
*
|
|
3126
|
-
* Sized
|
|
3127
|
-
* `
|
|
3128
|
-
*
|
|
3129
|
-
*
|
|
3130
|
-
*
|
|
3131
|
-
*
|
|
3132
|
-
*
|
|
3133
|
-
*
|
|
3134
|
-
* delivery falls back to the poll. 20s over 15s is one whole run of margin,
|
|
3135
|
-
* which is what absorbs a dropped analyzer frame.
|
|
3126
|
+
* Sized as a SAFETY NET when the operator raises `packageDropDwellSec` above
|
|
3127
|
+
* zero: the burst SPAN (`(burstCount - 1) × burstIntervalMs` = 20s) must
|
|
3128
|
+
* clear that dwell, or the delivery falls back to the 45 s poll. Promotion
|
|
3129
|
+
* itself counts FRAMES (`packageDropMinFrames`, default 3), so a single
|
|
3130
|
+
* settle session that sees the box three times is enough when dwell is 0 —
|
|
3131
|
+
* the 15 s dwell plus a 5 s round-gap missed a real parcel on device 615
|
|
3132
|
+
* (2026-08-24 13:40). The relation is pinned by
|
|
3133
|
+
* `scripts/check-package-promotion-satisfiable.ts`.
|
|
3136
3134
|
*
|
|
3137
3135
|
* Cost: 5 extra inferences per motion episode, on cameras with an active
|
|
3138
3136
|
* package zone only (the caller consults this governor only while the
|