@trillboards/edge-sdk 0.2.14 → 0.2.16
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/deploy/windows/README.md +7 -0
- package/deploy/windows/build-windows.ps1 +4 -0
- package/deploy/windows/ensure-sensing.ps1 +58 -0
- package/deploy/windows/install-update.ps1 +32 -6
- package/deploy/windows/stop-existing.ps1 +51 -1
- package/deploy/windows/trillboards-edge.cmd +8 -2
- package/deploy/windows/trillboards-hidden-run.vbs +47 -0
- package/deploy/windows/trillboards-setup.ps1 +25 -0
- package/dist/AudienceAnalyzeClient.d.ts +48 -4
- package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
- package/dist/AudienceAnalyzeClient.js +33 -2
- package/dist/AudienceAnalyzeClient.js.map +1 -1
- package/dist/CloudSensingManager.d.ts +157 -7
- package/dist/CloudSensingManager.d.ts.map +1 -1
- package/dist/CloudSensingManager.js +392 -23
- package/dist/CloudSensingManager.js.map +1 -1
- package/dist/EdgeAgent.js +1 -1
- package/dist/SceneChangeDetector.d.ts +39 -3
- package/dist/SceneChangeDetector.d.ts.map +1 -1
- package/dist/SceneChangeDetector.js +84 -16
- package/dist/SceneChangeDetector.js.map +1 -1
- package/dist/VlmAdmissionGate.d.ts +14 -0
- package/dist/VlmAdmissionGate.d.ts.map +1 -1
- package/dist/VlmAdmissionGate.js +14 -0
- package/dist/VlmAdmissionGate.js.map +1 -1
- package/dist/VlmCandidateBuffer.d.ts +247 -0
- package/dist/VlmCandidateBuffer.d.ts.map +1 -0
- package/dist/VlmCandidateBuffer.js +349 -0
- package/dist/VlmCandidateBuffer.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnose.d.ts +1 -1
- package/dist/diagnose.js +1 -1
- package/dist/discovery.d.ts +15 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +65 -0
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/localSensing.d.ts +2 -2
- package/dist/localSensing.d.ts.map +1 -1
- package/dist/localSensing.js +16 -0
- package/dist/localSensing.js.map +1 -1
- package/dist/recorderRanking.d.ts +71 -0
- package/dist/recorderRanking.d.ts.map +1 -0
- package/dist/recorderRanking.js +230 -0
- package/dist/recorderRanking.js.map +1 -0
- package/dist/sensingRunMode.d.ts.map +1 -1
- package/dist/sensingRunMode.js +40 -0
- package/dist/sensingRunMode.js.map +1 -1
- package/dist/setupMode.d.ts +9 -0
- package/dist/setupMode.d.ts.map +1 -1
- package/dist/setupMode.js +23 -1
- package/dist/setupMode.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import type { CameraProvider } from '@trillboards/edge-core';
|
|
3
|
-
import { AudienceAnalyzeClient, type AudienceAnalyzeResponse, type CameraHealthFailureClass, type CameraHealthReport, type HttpPoster } from './AudienceAnalyzeClient';
|
|
3
|
+
import { AudienceAnalyzeClient, type AudienceAnalyzeResponse, type CameraHealthFailureClass, type CameraHealthReport, type FrameDimensions, type HttpPoster } from './AudienceAnalyzeClient';
|
|
4
4
|
import { SharedFrameSource } from './MosaicSource';
|
|
5
5
|
import type { EdgeAgentConfig, MosaicTile, RecorderIdentity } from './config';
|
|
6
6
|
import { type VlmAdmissionStats } from './VlmAdmissionGate';
|
|
7
7
|
import { type MotionGateOptions, type MotionGateReason } from './SceneChangeDetector';
|
|
8
|
+
import { type VlmCandidateBufferOptions, type VlmCandidateBufferStats } from './VlmCandidateBuffer';
|
|
8
9
|
import type { DeployedCadence } from './deployedCadence';
|
|
9
10
|
import type { LiteRtAccelerator, LiteRtAcceleratorHealth } from './LiteRtVlmProvider';
|
|
10
11
|
export declare function classifyRtspFailureClass(err: unknown): CameraHealthFailureClass;
|
|
@@ -15,10 +16,16 @@ export declare function classifyRtspFailureClass(err: unknown): CameraHealthFail
|
|
|
15
16
|
* runs UNCHANGED for both the cloud and local paths.
|
|
16
17
|
*/
|
|
17
18
|
export interface SensingClient {
|
|
19
|
+
/**
|
|
20
|
+
* `imageWidth`/`imageHeight` are the frame's MEASURED dimensions for this
|
|
21
|
+
* capture, not the feed's configured ones. Optional because a provider may
|
|
22
|
+
* not implement `getResolution()`; an implementation that cannot forward them
|
|
23
|
+
* simply falls back to whatever its upload client was constructed with.
|
|
24
|
+
*/
|
|
18
25
|
analyze(request: {
|
|
19
26
|
jpeg: Buffer;
|
|
20
27
|
captureMode?: string;
|
|
21
|
-
}): Promise<AudienceAnalyzeResponse>;
|
|
28
|
+
} & FrameDimensions): Promise<AudienceAnalyzeResponse>;
|
|
22
29
|
reportCameraHealth?(cameraHealth: CameraHealthReport): Promise<AudienceAnalyzeResponse>;
|
|
23
30
|
getEndpoint(): string;
|
|
24
31
|
/**
|
|
@@ -195,6 +202,37 @@ export interface CloudSensingManagerOptions {
|
|
|
195
202
|
*/
|
|
196
203
|
minScanIntervalMs?: number;
|
|
197
204
|
};
|
|
205
|
+
/**
|
|
206
|
+
* Bounded hold for frames the cascade already called interesting but the
|
|
207
|
+
* admission gate could not take yet.
|
|
208
|
+
*
|
|
209
|
+
* ON BY DEFAULT WHEREVER IT CAN BE, which is wherever `motionGate` is on —
|
|
210
|
+
* and that is not a hedge, it is the precondition. Without a cascade nothing
|
|
211
|
+
* has classified the frame, so holding it would be the undifferentiated queue
|
|
212
|
+
* `VlmAdmissionGate` exists to refuse; the feature is therefore structurally
|
|
213
|
+
* coupled to its own classifier rather than to a flag someone has to
|
|
214
|
+
* remember. That lands it exactly where the single-conversation backend
|
|
215
|
+
* lives (local sensing enables the cascade by default) and leaves the
|
|
216
|
+
* genuinely-concurrent cloud path untouched.
|
|
217
|
+
*
|
|
218
|
+
* It is on rather than off because the thing it fixes is not a tuning
|
|
219
|
+
* preference: a motion-positive frame dropped at the gate is the alert not
|
|
220
|
+
* firing, and a connector shipped with the fix switched off is a connector
|
|
221
|
+
* that still drops it. Memory cannot run away — the hold is capped in
|
|
222
|
+
* frames, per feed, and in bytes, all enforced on the way in (see
|
|
223
|
+
* VlmCandidateBuffer). `enabled: false` restores the pure drop semantics.
|
|
224
|
+
*/
|
|
225
|
+
candidateBuffer?: VlmCandidateBufferOptions & {
|
|
226
|
+
/** Default: true whenever the motion cascade is on. */
|
|
227
|
+
enabled?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* How often the buffer is offered to a freed slot (ms). Default: the same
|
|
230
|
+
* derived value as `admissionRetryDelayMs` (250…5000), because it answers
|
|
231
|
+
* the same question — how quickly should a waiting frame notice a slot
|
|
232
|
+
* freed — and two knobs for one question drift apart.
|
|
233
|
+
*/
|
|
234
|
+
pumpIntervalMs?: number;
|
|
235
|
+
};
|
|
198
236
|
/**
|
|
199
237
|
* Let the motion verdict drive the periodic/face-triggered cadence switch —
|
|
200
238
|
* finally supplying the `setFaceDetected` signal this loop was always
|
|
@@ -253,6 +291,13 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
253
291
|
private readonly cameraHealthHeartbeatIntervalMs;
|
|
254
292
|
private readonly admissionGate;
|
|
255
293
|
private readonly admissionRetryDelayMs;
|
|
294
|
+
/**
|
|
295
|
+
* The bounded hold between the cascade and the gate. NULL when there is no
|
|
296
|
+
* cascade to name a candidate — see the `candidateBuffer` option.
|
|
297
|
+
*/
|
|
298
|
+
private readonly candidates;
|
|
299
|
+
private readonly candidatePumpIntervalMs;
|
|
300
|
+
private candidatePumpTimer;
|
|
256
301
|
private readonly motionDrivesCadence;
|
|
257
302
|
/** Retained so a cadence change can rebuild each feed's gate heartbeat. */
|
|
258
303
|
private motionGateOptions;
|
|
@@ -380,6 +425,31 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
380
425
|
skipped: number;
|
|
381
426
|
byReason: Record<MotionGateReason, number>;
|
|
382
427
|
};
|
|
428
|
+
/**
|
|
429
|
+
* The bounded hold between the cascade and the gate. `served` is the whole
|
|
430
|
+
* point — frames that were interesting, could not be analyzed at the
|
|
431
|
+
* instant they were taken, and reached the model anyway. `evicted` and
|
|
432
|
+
* `expired` are the price, and they are reported rather than absorbed: a
|
|
433
|
+
* silent eviction would move the lost frame from one invisible place to
|
|
434
|
+
* another, which is the defect this buffer exists to fix.
|
|
435
|
+
*/
|
|
436
|
+
candidateBuffer: {
|
|
437
|
+
enabled: boolean;
|
|
438
|
+
/** Held right now. */
|
|
439
|
+
buffered: number;
|
|
440
|
+
bytes: number;
|
|
441
|
+
maxFrames: number;
|
|
442
|
+
maxPerFeed: number;
|
|
443
|
+
maxBytes: number;
|
|
444
|
+
ttlMs: number;
|
|
445
|
+
enqueued: number;
|
|
446
|
+
served: number;
|
|
447
|
+
evicted: number;
|
|
448
|
+
expired: number;
|
|
449
|
+
/** How long the oldest waiting candidate has been waiting. */
|
|
450
|
+
oldestAgeMs: number | null;
|
|
451
|
+
perFeed: VlmCandidateBufferStats['perFeed'];
|
|
452
|
+
};
|
|
383
453
|
/**
|
|
384
454
|
* Frames sent to the cloud VLM for confirmation (local sensing with
|
|
385
455
|
* escalation enabled). 0 — and `cloudEscalationEnabled:false` — for a
|
|
@@ -408,6 +478,10 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
408
478
|
motionSkipped: number;
|
|
409
479
|
/** This feed's skips, attributed to the cascade stage that made them. */
|
|
410
480
|
motionSkippedByReason: Record<MotionGateReason, number>;
|
|
481
|
+
/** Candidates this feed is holding right now — "camera 12 is waiting". */
|
|
482
|
+
candidatesBuffered: number;
|
|
483
|
+
/** Candidates of this feed's that the hold delivered to the model. */
|
|
484
|
+
candidatesServed: number;
|
|
411
485
|
cloudEscalated: number;
|
|
412
486
|
faceDetected: boolean;
|
|
413
487
|
currentIntervalMs: number;
|
|
@@ -524,6 +598,22 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
524
598
|
private emitLoopError;
|
|
525
599
|
private reportCameraFailure;
|
|
526
600
|
private reportCameraHealth;
|
|
601
|
+
/**
|
|
602
|
+
* Report this feed as `open`, carrying the proof we ACTUALLY have.
|
|
603
|
+
*
|
|
604
|
+
* `frameProven` and `streamOpened` are two different facts and the caller must
|
|
605
|
+
* not conflate them:
|
|
606
|
+
*
|
|
607
|
+
* `streamOpened` — `camera.open()` resolved. The RTSP handshake completed,
|
|
608
|
+
* so the RECORDER IS REACHABLE. No frame has decoded, so
|
|
609
|
+
* this deliberately carries NO `lastFrameAtMs` and does NOT
|
|
610
|
+
* advance `lastCaptureAtMs` — a feed that has proved only
|
|
611
|
+
* reachability is still owed a video probe, immediately.
|
|
612
|
+
* `frameProven` — ffmpeg handed us real bytes. VIDEO IS HEALTHY.
|
|
613
|
+
*
|
|
614
|
+
* Both force a report, because both are transitions an operator is waiting on
|
|
615
|
+
* ("Connecting…" must clear the moment the recorder answers).
|
|
616
|
+
*/
|
|
527
617
|
private reportCameraOpen;
|
|
528
618
|
private healthProbeDue;
|
|
529
619
|
/**
|
|
@@ -532,14 +622,74 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
532
622
|
*/
|
|
533
623
|
private captureHealthFrame;
|
|
534
624
|
/**
|
|
535
|
-
* One cascade pass for a feed
|
|
536
|
-
*
|
|
625
|
+
* One cascade pass for a feed. Which pass depends on whether there is a
|
|
626
|
+
* cascade to name a candidate — see the class header for why the order
|
|
627
|
+
* differs and why that is not two behaviours bolted together.
|
|
537
628
|
*
|
|
538
|
-
*
|
|
539
|
-
*
|
|
540
|
-
*
|
|
629
|
+
* Deliberately NOT `async`: it hands the chosen pass's promise straight back
|
|
630
|
+
* instead of adopting it. An `async` dispatcher would insert two microtask
|
|
631
|
+
* hops in front of every capture on a path this PR does not otherwise
|
|
632
|
+
* change, and a fake-timer test that advances a fixed number of drains would
|
|
633
|
+
* then complete fewer ticks per advance — which is not a behaviour change but
|
|
634
|
+
* is indistinguishable from one at 2 a.m. Zero delta on the untouched path is
|
|
635
|
+
* cheaper to hold than the argument about whether the delta mattered.
|
|
541
636
|
*/
|
|
542
637
|
private captureAndPost;
|
|
638
|
+
/**
|
|
639
|
+
* LOOK FIRST, admit second: capture → motion → (candidate) → admission.
|
|
640
|
+
*
|
|
641
|
+
* Runs only with the cascade on, because only the cascade can answer "is
|
|
642
|
+
* this frame worth holding?". A candidate the gate cannot take right now
|
|
643
|
+
* goes into the bounded hold instead of onto the floor; anything the cascade
|
|
644
|
+
* rejected is dropped exactly as before and is never offered.
|
|
645
|
+
*/
|
|
646
|
+
private lookThenAdmit;
|
|
647
|
+
/**
|
|
648
|
+
* ADMIT FIRST, look second — the original order, unchanged, and the only one
|
|
649
|
+
* available without a cascade: nothing has classified the frame, so paying
|
|
650
|
+
* for a grab the model cannot take buys nothing, and a denied tick drops
|
|
651
|
+
* without touching the camera. Video health stays independent: at most one
|
|
652
|
+
* feed at a time may take a slow-cadence decode-only proof while the model
|
|
653
|
+
* is occupied.
|
|
654
|
+
*/
|
|
655
|
+
private admitThenLook;
|
|
656
|
+
/**
|
|
657
|
+
* Everything that happens once a frame has been analyzed, in ONE place, so a
|
|
658
|
+
* held frame and a fresh one can never be counted — or reported to the portal
|
|
659
|
+
* — differently.
|
|
660
|
+
*
|
|
661
|
+
* Synchronous on purpose. The obvious factoring wraps the `analyze()` call
|
|
662
|
+
* itself, but that turns every caller's inline await into an await of an
|
|
663
|
+
* async helper, which adds microtask hops to the pre-existing capture path
|
|
664
|
+
* for no behavioural gain. What the two callers genuinely share is the
|
|
665
|
+
* bookkeeping AFTER the call, and that is what lives here; the four-line
|
|
666
|
+
* try/catch around the call stays at each site, where its `unavailable`
|
|
667
|
+
* report is visible next to the thing that can fail.
|
|
668
|
+
*/
|
|
669
|
+
private recordAnalysis;
|
|
670
|
+
/**
|
|
671
|
+
* Arm the candidate pump for ONE run of the manager.
|
|
672
|
+
*
|
|
673
|
+
* A manager-scoped chain rather than a per-feed one, and that is the point:
|
|
674
|
+
* service order across feeds has to be a DECISION (least-recently-served,
|
|
675
|
+
* see VlmCandidateBuffer), not a race between 32 independent timers all
|
|
676
|
+
* polling for the same freed slot. `generation` carries the same meaning it
|
|
677
|
+
* carries in `scheduleNext` — a pump that survives a stop()/start() cycle
|
|
678
|
+
* must not arm a second chain.
|
|
679
|
+
*/
|
|
680
|
+
private scheduleCandidatePump;
|
|
681
|
+
/**
|
|
682
|
+
* Offer the hold to every slot that is free right now.
|
|
683
|
+
*
|
|
684
|
+
* Synchronous by construction: each admitted candidate is launched as its own
|
|
685
|
+
* task and the pump does not await it, so one slow inference cannot delay the
|
|
686
|
+
* next pump tick or another feed's turn. Concurrency stays bounded by the
|
|
687
|
+
* admission gate, which is the only thing that ever knew the backend's real
|
|
688
|
+
* capacity.
|
|
689
|
+
*/
|
|
690
|
+
private pumpCandidates;
|
|
691
|
+
/** Analyze one held candidate and give the slot back. Never throws. */
|
|
692
|
+
private serveCandidate;
|
|
543
693
|
/**
|
|
544
694
|
* Convert a camera frame to JPEG bytes for the POST.
|
|
545
695
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAEvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAoB,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhG,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"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"}
|