@trillboards/edge-sdk 0.2.42 → 0.2.49

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.
Files changed (51) hide show
  1. package/README.md +18 -0
  2. package/deploy/docker/connector-entrypoint.sh +1 -1
  3. package/dist/CloudSensingManager.d.ts +18 -0
  4. package/dist/CloudSensingManager.d.ts.map +1 -1
  5. package/dist/CloudSensingManager.js +101 -16
  6. package/dist/CloudSensingManager.js.map +1 -1
  7. package/dist/DurableVlmCandidateSpool.d.ts +99 -0
  8. package/dist/DurableVlmCandidateSpool.d.ts.map +1 -0
  9. package/dist/DurableVlmCandidateSpool.js +522 -0
  10. package/dist/DurableVlmCandidateSpool.js.map +1 -0
  11. package/dist/EdgeAgent.js +1 -1
  12. package/dist/LiteRtVlmProvider.d.ts +12 -1
  13. package/dist/LiteRtVlmProvider.d.ts.map +1 -1
  14. package/dist/LiteRtVlmProvider.js.map +1 -1
  15. package/dist/SceneChangeDetector.d.ts +35 -5
  16. package/dist/SceneChangeDetector.d.ts.map +1 -1
  17. package/dist/SceneChangeDetector.js +19 -5
  18. package/dist/SceneChangeDetector.js.map +1 -1
  19. package/dist/VlmAdmissionGate.d.ts +63 -0
  20. package/dist/VlmAdmissionGate.d.ts.map +1 -1
  21. package/dist/VlmAdmissionGate.js +64 -0
  22. package/dist/VlmAdmissionGate.js.map +1 -1
  23. package/dist/VlmCandidateBuffer.d.ts +17 -0
  24. package/dist/VlmCandidateBuffer.d.ts.map +1 -1
  25. package/dist/VlmCandidateBuffer.js +6 -0
  26. package/dist/VlmCandidateBuffer.js.map +1 -1
  27. package/dist/config.d.ts +37 -4
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/connectorCadence.d.ts +193 -8
  31. package/dist/connectorCadence.d.ts.map +1 -1
  32. package/dist/connectorCadence.js +225 -10
  33. package/dist/connectorCadence.js.map +1 -1
  34. package/dist/deployedCadence.d.ts +18 -5
  35. package/dist/deployedCadence.d.ts.map +1 -1
  36. package/dist/deployedCadence.js +50 -13
  37. package/dist/deployedCadence.js.map +1 -1
  38. package/dist/diagnose.d.ts +1 -1
  39. package/dist/diagnose.js +1 -1
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/sensingCatchRate.d.ts +105 -3
  45. package/dist/sensingCatchRate.d.ts.map +1 -1
  46. package/dist/sensingCatchRate.js +98 -10
  47. package/dist/sensingCatchRate.js.map +1 -1
  48. package/dist/sensingRunMode.d.ts.map +1 -1
  49. package/dist/sensingRunMode.js +95 -4
  50. package/dist/sensingRunMode.js.map +1 -1
  51. 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): ShapeReport[];
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":"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"}
1
+ {"version":3,"file":"sensingCatchRate.d.ts","sourceRoot":"","sources":["../src/sensingCatchRate.ts"],"names":[],"mappings":"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"}
@@ -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
- phase.set(f, (stagger + rand() * cfg.lookCadenceS) % cfg.lookCadenceS);
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
- slotFreeAt[slot] = t + cfg.analyzeS;
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 frame = buffer.shift();
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 motion = Boolean(active && active.producesMotion && !changePresented.has(active.id));
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
- falseTriggerRate: totalFires > 0 ? result.falseTriggers / totalFires : 0,
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
- falseTriggerRate: rows.reduce((a, r) => a + r.falseTriggerRate * r.events, 0) / events,
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":";;;AAsMA,8BAEC;AAYD,sCAUC;AAcD,oCAIC;AAWD,8CAMC;AAqOD,wBAyOC;AAkED,sCAsCC;AAGD,sCA4BC;AAUD,oDAIC;AAp2BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,yDAAiF;AAcpE,QAAA,YAAY,GAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAU,CAAC;AAkCvG;;;;;;;;;;GAUG;AACU,QAAA,eAAe,GAA6B,MAAM,CAAC,MAAM,CAAC;IACrE;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,wFAAwF;QACrG,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,kBAAkB;KACjC;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,0GAA0G;QACvH,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,gBAAgB;KAC/B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0GAA0G;QACvH,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,gBAAgB;KAC/B;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,+EAA+E;QAC5F,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,cAAc;KAC7B;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,sFAAsF;QACnG,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,4BAA4B;KAC3C;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uGAAuG;QACpH,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,eAAe;KAC9B;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uGAAuG;QACpH,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,qBAAqB;KACpC;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,uBAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnE,yEAAyE;AACzE,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAC3B,SAAiB,EACjB,UAAuC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,uBAAe,EAAE,CAAC;QACpC,IAAI,SAAS,IAAI,KAAK,CAAC,YAAY,IAAI,SAAS,GAAG,KAAK,CAAC,YAAY;eAChE,KAAK,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,SAAiB,EAAE,QAAgB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,UAA6B,EAAE,QAAgB;IAC/E,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,CAAC;AA4IY,QAAA,eAAe,GAA4B,MAAM,CAAC,MAAM,CAAC;IACpE,YAAY,EAAE,mCAAgB,GAAG,IAAI;IACrC,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,4CAAyB,GAAG,IAAI;IAC1C,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,CAAC;IAChB,iBAAiB,EAAE,CAAC;IACpB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,SAAS;CAC1B,CAAC,CAAC;AAyCH;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACnB,OAAO,GAAG,EAAE;QACV,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AASD;;;;;;;;;;;GAWG;AACH,SAAgB,MAAM,CACpB,MAAiC,EACjC,SAAiC,EAAE,EACnC,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,EAAwC;IAE7D,MAAM,GAAG,GAAkB,EAAE,GAAG,uBAAe,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,4EAA4E;IAC5E,wEAAwE;IACxE,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,GAAG,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;YACvC,wEAAwE;YACxE,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,+CAA+C;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,uEAAuE;IACvE,MAAM,UAAU,GAAa,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B;;;;;OAKG;IACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,IAAI,aAAa,GAAkB,CAAC,CAAC;IACrC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,CAAS,EAAW,EAAE;QAChE,IAAI,CAAC,GAAG,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,GAAG,aAAa,IAAI,GAAG,CAAC,iBAAiB;YAAE,OAAO,KAAK,CAAC;QACvF,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,uDAAuD;QACvD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACtC,IAAI,IAAI,GAAG,MAAM;gBAAE,OAAO,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,gCAAgC;IAClF,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,6EAA6E;IAC7E,6EAA6E;IAC7E,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,6EAA6E;IAC7E,yEAAyE;IACzE,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,gCAAgC;IAChC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,yEAAyE;IACzE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,yDAAyD;IACzD,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE;QACpC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,sEAAsE;IACtE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,CAAS,EAAE,KAAgB,EAAE,EAAE;QAChE,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;YACrE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC5B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClC,aAAa,GAAG,IAAI,CAAC;QACrB,QAAQ,IAAI,CAAC,CAAC;QACd,sEAAsE;QACtE,8BAA8B;QAC9B,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;gBAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,YAAY,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,oEAAoE;IACpE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,iEAAiE;QACjE,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,gEAAgE;QAChE,qCAAqC;QACrC,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,aAAa,GAAG,CAAC,CAAC;QACnE,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,uEAAuE;QACvE,uDAAuD;QACvD,yEAAyE;QACzE,4EAA4E;QAC5E,sEAAsE;QACtE,4EAA4E;QAC5E,wEAAwE;QACxE,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,MAAM;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,oDAAoD;IACpD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,KAAK,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,CAAC;QACR,KAAK,IAAI,CAAC,CAAC;QAEX,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,MAAM;YAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEtC,wDAAwD;QACxD,sEAAsE;QACtE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnG,4EAA4E;QAC5E,4EAA4E;QAC5E,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QACnF,2EAA2E;QAC3E,qEAAqE;QACrE,2CAA2C;QAC3C,IAAI,cAAc,IAAI,MAAM;YAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY;YAAE,SAAS,CAAC,oCAAoC;QAE5E,MAAM,KAAK,GAAc;YACvB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;YAClC,IAAI;YACJ,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,oEAAoE;QACpE,qEAAqE;QACrE,IAAI,MAAM;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,CAAC;IAEhB,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,QAAQ,GAAmB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC;QACxC,IAAI,MAAM,GAA2B,IAAI,CAAC;QAC1C,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,cAAc,CAAC;aAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,qEAAqE;YACrE,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,6DAA6D;YAC7D,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,MAAM,GAAG,gBAAgB,CAAC;iBACjD,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,MAAM,GAAG,cAAc,CAAC;;gBACnD,MAAM,GAAG,cAAc,CAAC;QAC/B,CAAC;aACI,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa;YAAE,MAAM,GAAG,IAAI,CAAC;;YAC9C,MAAM,GAAG,aAAa,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM;YACN,QAAQ;YACR,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SACjD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,iBAAiB;YAAE,aAAa,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC;AAiDD,SAAS,QAAQ,CAAC,MAAgB;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAC,MAAoB,EAAE,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,EAAE;IAChF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,uBAAe,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAC3D,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAChE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;YAC/B,yEAAyE;YACzE,uEAAuE;YACvE,wEAAwE;YACxE,sBAAsB;YACtB,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACjG,yBAAyB,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC1F,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAkB,CAAC,CAAC;YACvF,IAAI,EAAE;gBACJ,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;gBACpE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;gBACpE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM;gBACpE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,MAAM;gBACxE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;aACnE;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2DAA2D;AAC3D,SAAgB,aAAa,CAAC,OAA+B;IAI3D,MAAM,GAAG,GAGJ,EAAE,CAAC;IACR,KAAK,MAAM,KAAK,IAAI,oBAAY,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,CAAC;YAAE,SAAS;QAC3B,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM;YACxE,qEAAqE;YACrE,qEAAqE;YACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC;gBAC7D,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAI,CAAC,CAAC,gBAA2B,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM;YACpF,yBAAyB,EACvB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM;YAC/E,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM;SACvE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,eAAuB,EAAE,MAAc;IAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,eAAe,GAAG,MAAM,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sensingRunMode.d.ts","sourceRoot":"","sources":["../src/sensingRunMode.ts"],"names":[],"mappings":"AAAA,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;AAmNpE;;;;;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;AAuGD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,EAAE,GAAE,SAAqB,EACzB,IAAI,CAAC,EAAE,kBAAkB,GACxB,mBAAmB,GAAG,IAAI,CAoF5B"}
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,CAuG5B"}
@@ -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
- look_interval: 'the connector never looks that often',
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 bits = [`${hold.served} analyzed`];
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, shared by every feed, drop-not-queue.
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,22 @@ 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: config.cloudSensing?.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
+ },
523
614
  });
524
615
  wireSensingLogs(manager, io, (name, response) => `[${name}] local→preAnalyzed → HTTP ${response.statusCode}${response.ok ? '' : ' (NOT OK)'}`);
525
616
  return manager;