@trillboards/edge-sdk 0.2.42 → 0.2.52
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/README.md +76 -0
- package/deploy/docker/connector-entrypoint.sh +1 -1
- package/dist/AudioOnsetDetector.d.ts +211 -0
- package/dist/AudioOnsetDetector.d.ts.map +1 -0
- package/dist/AudioOnsetDetector.js +286 -0
- package/dist/AudioOnsetDetector.js.map +1 -0
- package/dist/CloudSensingManager.d.ts +67 -0
- package/dist/CloudSensingManager.d.ts.map +1 -1
- package/dist/CloudSensingManager.js +185 -17
- package/dist/CloudSensingManager.js.map +1 -1
- package/dist/DurableVlmCandidateSpool.d.ts +99 -0
- package/dist/DurableVlmCandidateSpool.d.ts.map +1 -0
- package/dist/DurableVlmCandidateSpool.js +522 -0
- package/dist/DurableVlmCandidateSpool.js.map +1 -0
- package/dist/EdgeAgent.d.ts.map +1 -1
- package/dist/EdgeAgent.js +20 -2
- package/dist/EdgeAgent.js.map +1 -1
- package/dist/LiteRtVlmProvider.d.ts +66 -1
- package/dist/LiteRtVlmProvider.d.ts.map +1 -1
- package/dist/LiteRtVlmProvider.js +132 -0
- package/dist/LiteRtVlmProvider.js.map +1 -1
- package/dist/SceneChangeDetector.d.ts +62 -6
- package/dist/SceneChangeDetector.d.ts.map +1 -1
- package/dist/SceneChangeDetector.js +61 -5
- package/dist/SceneChangeDetector.js.map +1 -1
- package/dist/VlmAdmissionGate.d.ts +63 -0
- package/dist/VlmAdmissionGate.d.ts.map +1 -1
- package/dist/VlmAdmissionGate.js +64 -0
- package/dist/VlmAdmissionGate.js.map +1 -1
- package/dist/VlmCandidateBuffer.d.ts +17 -0
- package/dist/VlmCandidateBuffer.d.ts.map +1 -1
- package/dist/VlmCandidateBuffer.js +6 -0
- package/dist/VlmCandidateBuffer.js.map +1 -1
- package/dist/attachAudioOnset.d.ts +87 -0
- package/dist/attachAudioOnset.d.ts.map +1 -0
- package/dist/attachAudioOnset.js +87 -0
- package/dist/attachAudioOnset.js.map +1 -0
- package/dist/config.d.ts +83 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/connectorCadence.d.ts +193 -8
- package/dist/connectorCadence.d.ts.map +1 -1
- package/dist/connectorCadence.js +225 -10
- package/dist/connectorCadence.js.map +1 -1
- package/dist/deployedCadence.d.ts +18 -5
- package/dist/deployedCadence.d.ts.map +1 -1
- package/dist/deployedCadence.js +50 -13
- package/dist/deployedCadence.js.map +1 -1
- package/dist/diagnose.d.ts +1 -1
- package/dist/diagnose.js +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/sensingCatchRate.d.ts +105 -3
- package/dist/sensingCatchRate.d.ts.map +1 -1
- package/dist/sensingCatchRate.js +98 -10
- package/dist/sensingCatchRate.js.map +1 -1
- package/dist/sensingRunMode.d.ts.map +1 -1
- package/dist/sensingRunMode.js +100 -4
- package/dist/sensingRunMode.js.map +1 -1
- package/dist/wavEncode.d.ts +29 -0
- package/dist/wavEncode.d.ts.map +1 -0
- package/dist/wavEncode.js +63 -0
- package/dist/wavEncode.js.map +1 -0
- package/package.json +1 -1
|
@@ -134,6 +134,84 @@ export interface SamplerConfig {
|
|
|
134
134
|
* replay.
|
|
135
135
|
*/
|
|
136
136
|
falsePositiveRate: number;
|
|
137
|
+
/**
|
|
138
|
+
* Probability the MOTION GATE reports a change it actually looked at.
|
|
139
|
+
*
|
|
140
|
+
* This used to be an unexamined 1: the replay assumed that if a look landed
|
|
141
|
+
* inside an event, `MotionGate` would call it. Nothing had checked that, and
|
|
142
|
+
* it is the one assumption a degraded stream is most likely to break — the
|
|
143
|
+
* detector is a frame-to-frame differ over a ~178x100 grey downscale, and a
|
|
144
|
+
* retail NVR's 399 kbps 4-second-GOP encode is not the clean footage
|
|
145
|
+
* Frigate's defaults were chosen against.
|
|
146
|
+
*
|
|
147
|
+
* It is now MEASURED, by `scripts/measure-gate-sensitivity.mjs`, as the
|
|
148
|
+
* paired recall of the degraded arm against a visually-lossless control arm
|
|
149
|
+
* over identical content, and lives in
|
|
150
|
+
* `eval/gate-sensitivity-degraded.json`. The default stays 1 so the closed
|
|
151
|
+
* form and the shipped baseline remain reproducible, and so that a caller who
|
|
152
|
+
* supplies nothing gets the temporal layer in isolation rather than a number
|
|
153
|
+
* somebody guessed.
|
|
154
|
+
*/
|
|
155
|
+
gateRecall: number;
|
|
156
|
+
/**
|
|
157
|
+
* Half-width of the uniform spread on `analyzeS`, seconds.
|
|
158
|
+
*
|
|
159
|
+
* DEFAULT 0, which is exactly the behaviour every committed baseline was
|
|
160
|
+
* measured under, so turning this on is opt-in and cannot silently move a
|
|
161
|
+
* pinned number.
|
|
162
|
+
*
|
|
163
|
+
* It exists because a CONSTANT service time against periodic per-feed look
|
|
164
|
+
* timers is a resonator, not a queue. Each feed ticks at a fixed phase in the
|
|
165
|
+
* look cadence; if every analysis occupies the slot for the same 7.30 s, the
|
|
166
|
+
* phase relationship never rotates and the same feeds arrive when the slot is
|
|
167
|
+
* free forever. Measured, that turns starvation TOTAL: at a 60 s heartbeat
|
|
168
|
+
* over 8 feeds, two feeds catch 100% of their still-scene events and the
|
|
169
|
+
* other six catch 0%.
|
|
170
|
+
*
|
|
171
|
+
* Real analyses are not constant — `connectorCadence.ts` measures the SOP
|
|
172
|
+
* field set at 6.0-7.5 s around its 7.30 s median. Feeding that spread in is
|
|
173
|
+
* what separates "the model has a lockstep artefact" from "the admission gate
|
|
174
|
+
* has no fairness", and the two want completely different fixes.
|
|
175
|
+
*/
|
|
176
|
+
analyzeJitterS: number;
|
|
177
|
+
/**
|
|
178
|
+
* Mirror of `VlmAdmissionGate.fairShareAcrossFeeds`. Default false, which is
|
|
179
|
+
* both today's shipped gate and the configuration every committed baseline
|
|
180
|
+
* was measured under.
|
|
181
|
+
*
|
|
182
|
+
* The replay models the SAME policy rather than an idealisation of it —
|
|
183
|
+
* including the bounded hold — because the number this arm produces is the
|
|
184
|
+
* argument for turning the real flag on, and an idealised queue would promise
|
|
185
|
+
* something the gate cannot deliver.
|
|
186
|
+
*/
|
|
187
|
+
fairShareAcrossFeeds: boolean;
|
|
188
|
+
/** Mirror of `fairShareMaxHoldMs`, in seconds. */
|
|
189
|
+
fairShareMaxHoldS: number;
|
|
190
|
+
/**
|
|
191
|
+
* How the per-feed look PHASES are laid out within the cadence.
|
|
192
|
+
*
|
|
193
|
+
* 'uniform' — each feed's phase is drawn uniformly across the whole
|
|
194
|
+
* cadence. Default, and what every committed baseline was
|
|
195
|
+
* measured under.
|
|
196
|
+
* 'staggered' — feeds are spread EVENLY, `index * cadence / feeds`, with a
|
|
197
|
+
* small drift. This is what `CloudSensingManager` actually
|
|
198
|
+
* does (`staggerFor(s) = s.index * staggerStepMs()`).
|
|
199
|
+
*
|
|
200
|
+
* The two answer different questions and neither is wrong. For CATCH RATE the
|
|
201
|
+
* phase must be uncorrelated with the events, and 'uniform' is the honest
|
|
202
|
+
* model — that is why it is the default and why the baseline uses it.
|
|
203
|
+
*
|
|
204
|
+
* For CONTENTION it is actively misleading. A uniform draw over 8 feeds puts
|
|
205
|
+
* them all inside a 6.8 s span of a 30 s cadence often enough to matter — one
|
|
206
|
+
* such draw is what made a first pass at this sweep report that lowering the
|
|
207
|
+
* heartbeat made `absence` WORSE, monotonically, down to 12.5%. The real
|
|
208
|
+
* system goes to deliberate trouble to prevent exactly that stampede
|
|
209
|
+
* (`staggerStepMs`, and the comment at CloudSensingManager.ts:813 about not
|
|
210
|
+
* collapsing every feed's carefully-staggered phase onto one instant), so
|
|
211
|
+
* measuring slot contention against a model that undoes the stagger measures
|
|
212
|
+
* a machine we do not ship.
|
|
213
|
+
*/
|
|
214
|
+
feedPhaseModel: 'uniform' | 'staggered';
|
|
137
215
|
}
|
|
138
216
|
export declare const DEFAULT_SAMPLER: Readonly<SamplerConfig>;
|
|
139
217
|
/** Per-event replay outcome. */
|
|
@@ -204,7 +282,28 @@ export interface ShapeReport {
|
|
|
204
282
|
* BESIDE the catch rate and never folded into it: a detector that fires
|
|
205
283
|
* constantly has a perfect catch rate and is worthless.
|
|
206
284
|
*/
|
|
207
|
-
falseTriggerRate: number;
|
|
285
|
+
falseTriggerRate: number | null;
|
|
286
|
+
/**
|
|
287
|
+
* The ADMISSION-layer false-trigger rate: the share of the analysis budget
|
|
288
|
+
* spent on frames with NO event in progress.
|
|
289
|
+
*
|
|
290
|
+
* This is the column that must sit beside a catch rate, and unlike
|
|
291
|
+
* `falseTriggerRate` it is always measurable — it is arithmetic over the
|
|
292
|
+
* replay, needs no model and no labelled footage. A gate tuned on catch rate
|
|
293
|
+
* alone reaches 90% trivially by admitting everything, and THIS is the number
|
|
294
|
+
* that makes that visible: admitting everything drives it to ~1.
|
|
295
|
+
*
|
|
296
|
+
* It is not the same quantity as `falseTriggerRate` and must never be folded
|
|
297
|
+
* into it. This says how much of the budget was wasted; that says how often a
|
|
298
|
+
* wasted analysis nevertheless fired an alert at an operator. The second
|
|
299
|
+
* needs content labels the demo clips cannot provide, which is why it is
|
|
300
|
+
* null.
|
|
301
|
+
*/
|
|
302
|
+
admissionFalseTriggerRate: number;
|
|
303
|
+
/** Analyses that landed with no event in progress. The numerator above. */
|
|
304
|
+
idleAnalyses: number;
|
|
305
|
+
/** Total analyses in the run. The denominator above. */
|
|
306
|
+
analyses: number;
|
|
208
307
|
/** Median seconds from event start to the analysis landing, for caught events. */
|
|
209
308
|
medianLatencyS: number | null;
|
|
210
309
|
/** Loss attribution — where the missed events went. */
|
|
@@ -225,13 +324,16 @@ export interface ShapeReport {
|
|
|
225
324
|
* reads one row, and a row that hides the noise is the row that sells a
|
|
226
325
|
* detector nobody can live with.
|
|
227
326
|
*/
|
|
228
|
-
export declare function reportByShape(result: ReplayResult
|
|
327
|
+
export declare function reportByShape(result: ReplayResult, { contentScored }?: {
|
|
328
|
+
contentScored?: boolean | undefined;
|
|
329
|
+
}): ShapeReport[];
|
|
229
330
|
/** Roll the shape rows up to the four reporting groups. */
|
|
230
331
|
export declare function reportByGroup(reports: readonly ShapeReport[]): Array<{
|
|
231
332
|
group: ShapeGroup;
|
|
232
333
|
events: number;
|
|
233
334
|
catchRate: number;
|
|
234
|
-
falseTriggerRate: number;
|
|
335
|
+
falseTriggerRate: number | null;
|
|
336
|
+
admissionFalseTriggerRate: number;
|
|
235
337
|
lookRate: number;
|
|
236
338
|
}>;
|
|
237
339
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensingCatchRate.d.ts","sourceRoot":"","sources":["../src/sensingCatchRate.ts"],"names":[],"mappings":"AAqEA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAwD,CAAC;AAEvG;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,GAAG,oBAAoB,CAAC;IAC3F;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAuElD,CAAC;AAIH,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,GACtC,aAAa,GAAG,IAAI,CAOtB;AAMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhG;AAMD,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sensingCatchRate.d.ts","sourceRoot":"","sources":["../src/sensingCatchRate.ts"],"names":[],"mappings":"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"}
|
package/dist/sensingCatchRate.js
CHANGED
|
@@ -227,6 +227,11 @@ exports.DEFAULT_SAMPLER = Object.freeze({
|
|
|
227
227
|
bufferMaxFrames: 32,
|
|
228
228
|
fieldAccuracy: 1,
|
|
229
229
|
falsePositiveRate: 0,
|
|
230
|
+
gateRecall: 1,
|
|
231
|
+
analyzeJitterS: 0,
|
|
232
|
+
fairShareAcrossFeeds: false,
|
|
233
|
+
fairShareMaxHoldS: 5,
|
|
234
|
+
feedPhaseModel: 'uniform',
|
|
230
235
|
});
|
|
231
236
|
/**
|
|
232
237
|
* A tiny deterministic PRNG. Seeded and explicit, because a replay whose
|
|
@@ -264,7 +269,18 @@ function replay(events, config = {}, { durationS, seed = 1 }) {
|
|
|
264
269
|
const phase = new Map();
|
|
265
270
|
feeds.forEach((f, i) => {
|
|
266
271
|
const stagger = feeds.length > 0 ? (i * cfg.lookCadenceS) / feeds.length : 0;
|
|
267
|
-
|
|
272
|
+
if (cfg.feedPhaseModel === 'staggered') {
|
|
273
|
+
// Even spread plus a drift of at most one stagger step, which is what a
|
|
274
|
+
// real timer does to a schedule it is trying to hold. The events are laid
|
|
275
|
+
// out independently of this, so the phase stays uncorrelated with them —
|
|
276
|
+
// the property catch rate needs — while the FEEDS stay spread apart, the
|
|
277
|
+
// property the shipped stagger exists to give.
|
|
278
|
+
const step = feeds.length > 0 ? cfg.lookCadenceS / feeds.length : 0;
|
|
279
|
+
phase.set(f, (stagger + rand() * step) % cfg.lookCadenceS);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
phase.set(f, (stagger + rand() * cfg.lookCadenceS) % cfg.lookCadenceS);
|
|
283
|
+
}
|
|
268
284
|
});
|
|
269
285
|
const byFeed = new Map();
|
|
270
286
|
for (const e of events) {
|
|
@@ -275,6 +291,36 @@ function replay(events, config = {}, { durationS, seed = 1 }) {
|
|
|
275
291
|
// Slot occupancy: the times at which each in-flight analysis frees up.
|
|
276
292
|
const slotFreeAt = new Array(Math.max(1, cfg.maxInFlight)).fill(0);
|
|
277
293
|
const buffer = [];
|
|
294
|
+
/**
|
|
295
|
+
* Last time each feed was ADMITTED, and the moment the slot last became free.
|
|
296
|
+
* Both exist only to reproduce `VlmAdmissionGate`'s fair-share rule exactly:
|
|
297
|
+
* a feed better-served than the hungriest yields, unless the slot has already
|
|
298
|
+
* been held open longer than `fairShareMaxHoldS`.
|
|
299
|
+
*/
|
|
300
|
+
const lastAdmittedAt = new Map();
|
|
301
|
+
let slotFreeSince = 0;
|
|
302
|
+
const yieldsToHungrierFeed = (name, t) => {
|
|
303
|
+
if (!cfg.fairShareAcrossFeeds)
|
|
304
|
+
return false;
|
|
305
|
+
if (feeds.length < 2)
|
|
306
|
+
return false;
|
|
307
|
+
if (slotFreeSince !== null && t - slotFreeSince >= cfg.fairShareMaxHoldS)
|
|
308
|
+
return false;
|
|
309
|
+
const mine = lastAdmittedAt.get(name);
|
|
310
|
+
// Never admitted — nobody is hungrier, so never yield.
|
|
311
|
+
if (mine === undefined)
|
|
312
|
+
return false;
|
|
313
|
+
for (const other of feeds) {
|
|
314
|
+
if (other === name)
|
|
315
|
+
continue;
|
|
316
|
+
const theirs = lastAdmittedAt.get(other);
|
|
317
|
+
if (theirs === undefined)
|
|
318
|
+
return true;
|
|
319
|
+
if (mine > theirs)
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
};
|
|
278
324
|
const analyzedEvents = new Map(); // eventId -> analysis land time
|
|
279
325
|
let idleAnalyses = 0;
|
|
280
326
|
let analyses = 0;
|
|
@@ -306,7 +352,14 @@ function replay(events, config = {}, { durationS, seed = 1 }) {
|
|
|
306
352
|
};
|
|
307
353
|
/** Run the analysis, booking the slot and recording what it found. */
|
|
308
354
|
const runAnalysis = (slot, t, frame) => {
|
|
309
|
-
|
|
355
|
+
// Draw the service time only when a spread was asked for, so the default
|
|
356
|
+
// consumes the same random stream the committed baselines were measured on.
|
|
357
|
+
const cost = cfg.analyzeJitterS > 0
|
|
358
|
+
? Math.max(0.1, cfg.analyzeS + (rand() * 2 - 1) * cfg.analyzeJitterS)
|
|
359
|
+
: cfg.analyzeS;
|
|
360
|
+
slotFreeAt[slot] = t + cost;
|
|
361
|
+
lastAdmittedAt.set(frame.feed, t);
|
|
362
|
+
slotFreeSince = null;
|
|
310
363
|
analyses += 1;
|
|
311
364
|
// `markAnalyzed()` — the single commit point. Only a landed inference
|
|
312
365
|
// resets the heartbeat clock.
|
|
@@ -326,9 +379,23 @@ function replay(events, config = {}, { durationS, seed = 1 }) {
|
|
|
326
379
|
if (t - buffer[i].capturedAtS > cfg.bufferTtlS)
|
|
327
380
|
buffer.splice(i, 1);
|
|
328
381
|
}
|
|
382
|
+
// Capacity appearing opens the fairness hold window, exactly as
|
|
383
|
+
// `VlmAdmissionGate.release()` does.
|
|
384
|
+
if (slotFreeSince === null && acquire(t) !== -1)
|
|
385
|
+
slotFreeSince = t;
|
|
329
386
|
let slot = acquire(t);
|
|
387
|
+
// The buffer drain goes through the SAME admission decision as a fresh
|
|
388
|
+
// frame, fairness included. `CloudSensingManager` does
|
|
389
|
+
// (`admissionGate.tryAcquire(next.name)` at the pump), and a replay that
|
|
390
|
+
// let held frames in for free would exempt a whole frame path from the gate
|
|
391
|
+
// it is measuring — the measured admission rate would then not be the
|
|
392
|
+
// admission rate. Held frames are scanned in order and the first admissible
|
|
393
|
+
// one is served, so one yielding feed cannot block the queue behind it.
|
|
330
394
|
while (slot !== -1 && buffer.length > 0) {
|
|
331
|
-
const
|
|
395
|
+
const idx = buffer.findIndex((f) => !yieldsToHungrierFeed(f.feed, t));
|
|
396
|
+
if (idx === -1)
|
|
397
|
+
break;
|
|
398
|
+
const [frame] = buffer.splice(idx, 1);
|
|
332
399
|
runAnalysis(slot, t, frame);
|
|
333
400
|
slot = acquire(t);
|
|
334
401
|
}
|
|
@@ -354,18 +421,27 @@ function replay(events, config = {}, { durationS, seed = 1 }) {
|
|
|
354
421
|
// `motion` only on the look that catches the CHANGE. A still-scene event
|
|
355
422
|
// never presents one at all and is reachable ONLY by the heartbeat — the
|
|
356
423
|
// leaking-cooler case connectorCadence.ts is written about.
|
|
357
|
-
const
|
|
424
|
+
const presentsChange = Boolean(active && active.producesMotion && !changePresented.has(active.id));
|
|
425
|
+
// The gate can MISS a change it looked at. `gateRecall < 1` draws for that,
|
|
426
|
+
// and the draw is short-circuited at 1 so the shipped baseline consumes the
|
|
427
|
+
// same random stream it always did — a config that only isolates a layer
|
|
428
|
+
// must not perturb the numbers it is being compared against.
|
|
429
|
+
const gateSaw = presentsChange && (cfg.gateRecall >= 1 || rand() < cfg.gateRecall);
|
|
430
|
+
// The change happened whether or not the gate called it: a differ gets ONE
|
|
431
|
+
// look at a transition. Marking it presented on a miss is what makes
|
|
432
|
+
// `gateRecall` a loss rather than a retry.
|
|
433
|
+
if (presentsChange && active)
|
|
434
|
+
changePresented.add(active.id);
|
|
435
|
+
const motion = gateSaw;
|
|
358
436
|
if (!motion && !heartbeatDue)
|
|
359
437
|
continue; // no_motion / stationary -> dropped
|
|
360
|
-
if (motion && active)
|
|
361
|
-
changePresented.add(active.id);
|
|
362
438
|
const frame = {
|
|
363
439
|
eventId: active ? active.id : null,
|
|
364
440
|
feed,
|
|
365
441
|
capturedAtS: t,
|
|
366
442
|
};
|
|
367
443
|
const slot = acquire(t);
|
|
368
|
-
if (slot !== -1) {
|
|
444
|
+
if (slot !== -1 && !yieldsToHungrierFeed(feed, t)) {
|
|
369
445
|
runAnalysis(slot, t, frame);
|
|
370
446
|
continue;
|
|
371
447
|
}
|
|
@@ -442,7 +518,7 @@ function medianOf(values) {
|
|
|
442
518
|
* reads one row, and a row that hides the noise is the row that sells a
|
|
443
519
|
* detector nobody can live with.
|
|
444
520
|
*/
|
|
445
|
-
function reportByShape(result) {
|
|
521
|
+
function reportByShape(result, { contentScored = false } = {}) {
|
|
446
522
|
const byShape = new Map();
|
|
447
523
|
for (const o of result.outcomes) {
|
|
448
524
|
if (!byShape.has(o.shapeId))
|
|
@@ -463,7 +539,14 @@ function reportByShape(result) {
|
|
|
463
539
|
lookRate: outs.filter((o) => o.looked).length / outs.length,
|
|
464
540
|
analyzeRate: outs.filter((o) => o.analyzed).length / outs.length,
|
|
465
541
|
catchRate: caught / outs.length,
|
|
466
|
-
|
|
542
|
+
// NULL, not 0, whenever the content layer was not scored. A zero here is
|
|
543
|
+
// a claim that an idle analysis never fires a false alert, and nothing
|
|
544
|
+
// has measured that. `falsePositiveRate` is only non-zero when a scored
|
|
545
|
+
// replay supplied it.
|
|
546
|
+
falseTriggerRate: contentScored ? (totalFires > 0 ? result.falseTriggers / totalFires : 0) : null,
|
|
547
|
+
admissionFalseTriggerRate: result.analyses > 0 ? result.idleAnalyses / result.analyses : 0,
|
|
548
|
+
idleAnalyses: result.idleAnalyses,
|
|
549
|
+
analyses: result.analyses,
|
|
467
550
|
medianLatencyS: medianOf(outs.filter((o) => o.caught).map((o) => o.latencyS)),
|
|
468
551
|
lost: {
|
|
469
552
|
never_looked: outs.filter((o) => o.lostTo === 'never_looked').length,
|
|
@@ -490,7 +573,12 @@ function reportByGroup(reports) {
|
|
|
490
573
|
group,
|
|
491
574
|
events,
|
|
492
575
|
catchRate: rows.reduce((a, r) => a + r.catchRate * r.events, 0) / events,
|
|
493
|
-
|
|
576
|
+
// One null row makes the whole group null. Averaging a measured rate
|
|
577
|
+
// together with an unmeasured one produces a number that is neither.
|
|
578
|
+
falseTriggerRate: rows.some((r) => r.falseTriggerRate === null)
|
|
579
|
+
? null
|
|
580
|
+
: rows.reduce((a, r) => a + r.falseTriggerRate * r.events, 0) / events,
|
|
581
|
+
admissionFalseTriggerRate: rows.reduce((a, r) => a + r.admissionFalseTriggerRate * r.events, 0) / events,
|
|
494
582
|
lookRate: rows.reduce((a, r) => a + r.lookRate * r.events, 0) / events,
|
|
495
583
|
});
|
|
496
584
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensingCatchRate.js","sourceRoot":"","sources":["../src/sensingCatchRate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sensingCatchRate.js","sourceRoot":"","sources":["../src/sensingCatchRate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensingRunMode.d.ts","sourceRoot":"","sources":["../src/sensingRunMode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sensingRunMode.d.ts","sourceRoot":"","sources":["../src/sensingRunMode.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EAGnB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAOhD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7B;AA0CD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,IAAI;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;CACH;AAED,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,qEAAqE;AACrE,eAAO,MAAM,SAAS,EAAE,SAIvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAEgD,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,QAAgB,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,qCAAqC,QAAiB,CAAC;AA6OpE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,GAC1D,MAAM,CAsCR;AAED;;;;;;;;;;GAUG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,SAAS,EACb,GAAG,GAAE,MAAM,MAAiB,GAC3B;IAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAA;CAAE,CA+BjD;AAoHD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,EAAE,GAAE,SAAqB,EACzB,IAAI,CAAC,EAAE,kBAAkB,GACxB,mBAAmB,GAAG,IAAI,CA4G5B"}
|
package/dist/sensingRunMode.js
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.TRANSPORT_FAILURE_RESTATE_INTERVAL_MS = exports.SENSING_HEALTH_LOG_INTERVAL_MS = exports.NO_FEEDS_MESSAGE = exports.consoleIo = void 0;
|
|
4
37
|
exports.formatSensingHealth = formatSensingHealth;
|
|
5
38
|
exports.createTransportFailureReporter = createTransportFailureReporter;
|
|
6
39
|
exports.buildLocalSensingManager = buildLocalSensingManager;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
7
41
|
const CloudSensingManager_1 = require("./CloudSensingManager");
|
|
8
42
|
const localSensing_1 = require("./localSensing");
|
|
9
43
|
const SensingProfileClient_1 = require("./SensingProfileClient");
|
|
@@ -76,8 +110,12 @@ exports.TRANSPORT_FAILURE_RESTATE_INTERVAL_MS = 10 * 60 * 1000;
|
|
|
76
110
|
const CADENCE_CLAMP_WORDING = {
|
|
77
111
|
no_request: '',
|
|
78
112
|
operator_request: '',
|
|
113
|
+
// Not a clamp — the profile asked for nothing and the connector adopted what
|
|
114
|
+
// it can afford — so it carries no "clamped to" wording, exactly like
|
|
115
|
+
// `no_request` and `operator_request`.
|
|
116
|
+
derived_default: '',
|
|
79
117
|
local_inference_budget: 'this machine\'s single inference slot',
|
|
80
|
-
|
|
118
|
+
analyze_floor: 'the connector never analyzes one feed that often',
|
|
81
119
|
cadence_ceiling: 'a capture loop cannot run a cadence that slow',
|
|
82
120
|
};
|
|
83
121
|
/**
|
|
@@ -104,6 +142,12 @@ function formatDeployedCadence(cadence) {
|
|
|
104
142
|
parts.push(`deployed ${secs(cadence.requestedMs)} → running ${secs(cadence.intervalMs)} ` +
|
|
105
143
|
`(${CADENCE_CLAMP_WORDING[cadence.reason] || cadence.reason})`);
|
|
106
144
|
}
|
|
145
|
+
else if (cadence.reason === 'derived_default') {
|
|
146
|
+
// Nothing was deployed, so calling this a "deployed cadence" would tell an
|
|
147
|
+
// operator their server asked for a number it never asked for — and would
|
|
148
|
+
// send them looking for a profile setting that does not exist.
|
|
149
|
+
parts.push(`cadence ${secs(cadence.intervalMs)} (derived: no cadence deployed)`);
|
|
150
|
+
}
|
|
107
151
|
else {
|
|
108
152
|
parts.push(`deployed cadence ${secs(cadence.intervalMs)}`);
|
|
109
153
|
}
|
|
@@ -254,7 +298,16 @@ function describeSkips(cascade) {
|
|
|
254
298
|
* layer up.
|
|
255
299
|
*/
|
|
256
300
|
function describeCandidateHold(hold) {
|
|
257
|
-
const
|
|
301
|
+
const analyzed = hold.storage === 'disk'
|
|
302
|
+
? `${hold.completed ?? 0} accepted (${hold.served} attempts)`
|
|
303
|
+
: `${hold.served} analyzed`;
|
|
304
|
+
const bits = [analyzed];
|
|
305
|
+
if ((hold.recovered ?? 0) > 0)
|
|
306
|
+
bits.push(`${hold.recovered} recovered after restart`);
|
|
307
|
+
if ((hold.retried ?? 0) > 0)
|
|
308
|
+
bits.push(`${hold.retried} retained for retry`);
|
|
309
|
+
if ((hold.inFlight ?? 0) > 0)
|
|
310
|
+
bits.push(`${hold.inFlight} being analyzed`);
|
|
258
311
|
if (hold.buffered > 0) {
|
|
259
312
|
const oldest = hold.oldestAgeMs === null ? '' : `, oldest ${(hold.oldestAgeMs / 1000).toFixed(0)}s`;
|
|
260
313
|
bits.push(`${hold.buffered}/${hold.maxFrames} waiting${oldest}`);
|
|
@@ -263,6 +316,12 @@ function describeCandidateHold(hold) {
|
|
|
263
316
|
bits.push(`${hold.evicted} evicted (hold full)`);
|
|
264
317
|
if (hold.expired > 0)
|
|
265
318
|
bits.push(`${hold.expired} expired (too old to act on)`);
|
|
319
|
+
if ((hold.writeFailed ?? 0) > 0)
|
|
320
|
+
bits.push(`${hold.writeFailed} disk writes failed`);
|
|
321
|
+
if ((hold.readFailed ?? 0) > 0)
|
|
322
|
+
bits.push(`${hold.readFailed} disk reads failed`);
|
|
323
|
+
if ((hold.deleteFailed ?? 0) > 0)
|
|
324
|
+
bits.push(`${hold.deleteFailed} disk deletes failed`);
|
|
266
325
|
return bits.join(' · ');
|
|
267
326
|
}
|
|
268
327
|
/**
|
|
@@ -430,6 +489,16 @@ function resolveMotionGateOptions(config, enabledByDefault) {
|
|
|
430
489
|
...(configured?.scanIntervalMs !== undefined
|
|
431
490
|
? { scanIntervalMs: configured.scanIntervalMs }
|
|
432
491
|
: {}),
|
|
492
|
+
// `minScanIntervalMs` is documented at config.ts and promised in
|
|
493
|
+
// CloudSensingManager's header, and until 2026-08-18 this function dropped
|
|
494
|
+
// it — every other motionGate key was forwarded and this one was not, so a
|
|
495
|
+
// documented escape hatch was unreachable from a config file and the only
|
|
496
|
+
// way to reach it was to construct the manager by hand. Same defect class as
|
|
497
|
+
// the rest of this plan: the vocabulary agreed on both sides and nothing
|
|
498
|
+
// carried the value.
|
|
499
|
+
...(configured?.minScanIntervalMs !== undefined
|
|
500
|
+
? { minScanIntervalMs: configured.minScanIntervalMs }
|
|
501
|
+
: {}),
|
|
433
502
|
...(configured?.heartbeatIntervalMs !== undefined
|
|
434
503
|
? { heartbeatIntervalMs: configured.heartbeatIntervalMs }
|
|
435
504
|
: {}),
|
|
@@ -445,6 +514,9 @@ function resolveMotionGateOptions(config, enabledByDefault) {
|
|
|
445
514
|
...(configured?.stationaryReanalyzeEvery !== undefined
|
|
446
515
|
? { stationaryReanalyzeEvery: configured.stationaryReanalyzeEvery }
|
|
447
516
|
: {}),
|
|
517
|
+
...(configured?.stationaryReanalyzeAfterMs !== undefined
|
|
518
|
+
? { stationaryReanalyzeAfterMs: configured.stationaryReanalyzeAfterMs }
|
|
519
|
+
: {}),
|
|
448
520
|
};
|
|
449
521
|
}
|
|
450
522
|
/**
|
|
@@ -488,6 +560,9 @@ function buildLocalSensingManager(config, io = exports.consoleIo, opts) {
|
|
|
488
560
|
streamUrlResolver: (feed, currentUrl, error) => opts?.streamUrlResolver?.(feed, currentUrl, error) ??
|
|
489
561
|
addressRecovery.recover(feed, currentUrl, error),
|
|
490
562
|
});
|
|
563
|
+
const configuredHold = config.cloudSensing?.candidateBuffer;
|
|
564
|
+
const configuredDisk = configuredHold?.diskSpool;
|
|
565
|
+
const configDirectory = path.dirname(path.resolve(opts?.configPath || 'trillboards.config.json'));
|
|
491
566
|
const manager = new CloudSensingManager_1.CloudSensingManager({
|
|
492
567
|
loops,
|
|
493
568
|
periodicIntervalMs: config.localSensing?.captureIntervalMs ?? config.cloudSensing?.periodicIntervalMs,
|
|
@@ -509,7 +584,8 @@ function buildLocalSensingManager(config, io = exports.consoleIo, opts) {
|
|
|
509
584
|
// `litert-lm serve` takes ONE conversation at a time. Without this gate N
|
|
510
585
|
// feeds pile onto it, frames age against the provider's 120 s timeout, and
|
|
511
586
|
// each failure burns retries — 16 cameras produce ~17x the work the server
|
|
512
|
-
// can do. One slot
|
|
587
|
+
// can do. One slot is shared by every feed; motion-positive candidates wait
|
|
588
|
+
// in the bounded evidence spool rather than inside litert-lm's request path.
|
|
513
589
|
maxConcurrentAnalyses: config.cloudSensing?.maxConcurrentAnalyses ?? 1,
|
|
514
590
|
maxAnalysisInFlightMs: config.cloudSensing?.maxAnalysisInFlightMs,
|
|
515
591
|
admissionRetryDelayMs: config.cloudSensing?.admissionRetryDelayMs,
|
|
@@ -519,7 +595,27 @@ function buildLocalSensingManager(config, io = exports.consoleIo, opts) {
|
|
|
519
595
|
// motion-positive frame can arrive while the model is mid-inference; the
|
|
520
596
|
// hold keeps THAT frame until the slot frees instead of dropping it and
|
|
521
597
|
// asking about an empty aisle thirteen minutes later.
|
|
522
|
-
candidateBuffer:
|
|
598
|
+
candidateBuffer: {
|
|
599
|
+
...configuredHold,
|
|
600
|
+
diskSpool: {
|
|
601
|
+
...configuredDisk,
|
|
602
|
+
enabled: configuredDisk?.enabled !== false,
|
|
603
|
+
directory: configuredDisk?.directory || path.join(configDirectory, 'evidence-spool'),
|
|
604
|
+
// Preserve the pre-spool tuning surface. A venue that deliberately
|
|
605
|
+
// narrowed the old hold keeps those exact limits unless it opts into
|
|
606
|
+
// disk-specific values; fresh installs receive the larger durable
|
|
607
|
+
// defaults from DurableVlmCandidateSpool.
|
|
608
|
+
maxFrames: configuredDisk?.maxFrames ?? configuredHold?.maxFrames,
|
|
609
|
+
maxPerFeed: configuredDisk?.maxPerFeed ?? configuredHold?.maxPerFeed,
|
|
610
|
+
maxBytes: configuredDisk?.maxBytes ?? configuredHold?.maxBytes,
|
|
611
|
+
retentionMs: configuredDisk?.retentionMs ?? configuredHold?.ttlMs,
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
// Forwarded verbatim, and asserted end-to-end in sensingRunModeAudio.test.ts.
|
|
615
|
+
// A knob documented in config.ts that never reaches the manager is a knob
|
|
616
|
+
// that does nothing — the exact shape that already swallowed
|
|
617
|
+
// `minScanIntervalMs` in this file.
|
|
618
|
+
audioSensing: config.cloudSensing?.audioSensing,
|
|
523
619
|
});
|
|
524
620
|
wireSensingLogs(manager, io, (name, response) => `[${name}] local→preAnalyzed → HTTP ${response.statusCode}${response.ok ? '' : ' (NOT OK)'}`);
|
|
525
621
|
return manager;
|