@trillboards/edge-sdk 0.2.61 → 0.2.63
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/litertlm/test_trillboards_litertlm_shim.py +132 -0
- package/deploy/litertlm/trillboards-litertlm-shim.pth +1 -0
- package/deploy/litertlm/trillboards_litertlm_shim.py +214 -0
- package/deploy/macos/bench-local-vlm.sh +8 -4
- package/deploy/macos/build-macos-pkg.sh +4 -0
- package/deploy/macos/scripts/setup-litertlm.sh +99 -2
- package/deploy/systemd/setup-litertlm.sh +99 -2
- package/deploy/windows/build-windows.ps1 +4 -0
- package/deploy/windows/register-litertlm-task.ps1 +22 -0
- package/deploy/windows/setup-litertlm.ps1 +131 -3
- package/deploy/windows/trillboards-edge.cmd +19 -0
- package/dist/CloudSensingManager.d.ts +61 -0
- package/dist/CloudSensingManager.d.ts.map +1 -1
- package/dist/CloudSensingManager.js +52 -30
- package/dist/CloudSensingManager.js.map +1 -1
- package/dist/EdgeAgent.js +1 -1
- package/dist/LiteRtVlmProvider.d.ts +74 -7
- package/dist/LiteRtVlmProvider.d.ts.map +1 -1
- package/dist/LiteRtVlmProvider.js.map +1 -1
- package/dist/MosaicSource.d.ts +18 -0
- package/dist/MosaicSource.d.ts.map +1 -1
- package/dist/MosaicSource.js +23 -0
- package/dist/MosaicSource.js.map +1 -1
- package/dist/analyzeCostObserver.d.ts +96 -0
- package/dist/analyzeCostObserver.d.ts.map +1 -0
- package/dist/analyzeCostObserver.js +130 -0
- package/dist/analyzeCostObserver.js.map +1 -0
- package/dist/connectorCadence.d.ts +286 -57
- package/dist/connectorCadence.d.ts.map +1 -1
- package/dist/connectorCadence.js +313 -61
- package/dist/connectorCadence.js.map +1 -1
- package/dist/deployedCadence.d.ts +8 -2
- package/dist/deployedCadence.d.ts.map +1 -1
- package/dist/deployedCadence.js +6 -3
- package/dist/deployedCadence.js.map +1 -1
- package/dist/deployedCadenceSource.d.ts +10 -0
- package/dist/deployedCadenceSource.d.ts.map +1 -1
- package/dist/deployedCadenceSource.js +11 -0
- package/dist/deployedCadenceSource.js.map +1 -1
- package/dist/diagnose.d.ts +1 -1
- package/dist/diagnose.js +1 -1
- package/dist/localInferenceSchema.d.ts +8 -3
- package/dist/localInferenceSchema.d.ts.map +1 -1
- package/dist/localInferenceSchema.js +8 -3
- package/dist/localInferenceSchema.js.map +1 -1
- package/dist/localSensing.d.ts +22 -1
- package/dist/localSensing.d.ts.map +1 -1
- package/dist/localSensing.js +101 -7
- package/dist/localSensing.js.map +1 -1
- package/dist/localVlmBench.d.ts +82 -0
- package/dist/localVlmBench.d.ts.map +1 -1
- package/dist/localVlmBench.js +88 -0
- package/dist/localVlmBench.js.map +1 -1
- package/dist/sensingCatchRate.d.ts.map +1 -1
- package/dist/sensingCatchRate.js +75 -10
- package/dist/sensingCatchRate.js.map +1 -1
- package/dist/sensingRunMode.d.ts.map +1 -1
- package/dist/sensingRunMode.js +26 -2
- package/dist/sensingRunMode.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,28 @@ $TaskName = "TrillboardsLiteRtLm"
|
|
|
26
26
|
$UserId = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
|
|
27
27
|
# litert-lm serve --host 127.0.0.1 --port <port> (loopback only -- the connector
|
|
28
28
|
# is local; never expose the model server off-box).
|
|
29
|
+
#
|
|
30
|
+
# THE SERVE'S OWN LOG IS DISCARDED ON WINDOWS, AND ONLY ON WINDOWS. A Scheduled
|
|
31
|
+
# Task has no stdout, so everything `litert-lm serve` prints goes nowhere. The
|
|
32
|
+
# other two platforms keep it: the macOS LaunchAgent sets StandardOutPath /
|
|
33
|
+
# StandardErrorPath (com.trillboards.litertlm.plist), and the unit sets
|
|
34
|
+
# StandardOutput=journal (trillboards-litertlm.service). `litert-lm serve` has no
|
|
35
|
+
# --log-file of its own -- only --verbose -- so redirection is the only route.
|
|
36
|
+
#
|
|
37
|
+
# This is not cosmetic. On 2026-08-19 windows-latest could not complete a single
|
|
38
|
+
# frame on the shipped config (run 32227929611: both provisioner probes died with
|
|
39
|
+
# connection-level errors, then two 12-minute request timeouts), and the reason is
|
|
40
|
+
# STILL unknown for exactly this reason -- the one process that knows why wrote
|
|
41
|
+
# its explanation to a handle nobody was holding.
|
|
42
|
+
#
|
|
43
|
+
# DO NOT "fix" this by wrapping the action in cmd.exe /c "... >> log 2>&1". The
|
|
44
|
+
# stop path below filters Win32_Process on Name = python.exe|litert-lm.exe|
|
|
45
|
+
# pythonw.exe, so a cmd.exe parent is invisible to it and would be orphaned on
|
|
46
|
+
# every re-register, and Task Scheduler's restart-on-failure would then be
|
|
47
|
+
# watching the wrapper instead of the server. Capturing this needs either an
|
|
48
|
+
# upstream --log-file or a purpose-built launcher that keeps the image name, and
|
|
49
|
+
# it must be proved against the S4U/boot-trigger ladder (the 0.2.17 incident)
|
|
50
|
+
# before it ships.
|
|
29
51
|
$argument = 'serve --host 127.0.0.1 --port ' + $Port
|
|
30
52
|
$Action = New-ScheduledTaskAction -Execute $LitertLmPath -Argument $argument
|
|
31
53
|
|
|
@@ -138,8 +138,19 @@ function Test-ServeHealthy {
|
|
|
138
138
|
# `litert-lm serve` takes NO flags for any of this: serve accepts only
|
|
139
139
|
# --host/--port/--api/--cors-origin/--verbose. Every engine knob it honours comes
|
|
140
140
|
# from $LITERT_LM_DIR\config.json, merged per model id by
|
|
141
|
-
# litert_lm_cli.config.get_model_config. So this file IS the tuning surface
|
|
142
|
-
# the serve stays stock
|
|
141
|
+
# litert_lm_cli.config.get_model_config. So this file IS the tuning surface for
|
|
142
|
+
# everything it can express, and the serve binary stays stock: we pass it no
|
|
143
|
+
# flags and we modify none of its files.
|
|
144
|
+
#
|
|
145
|
+
# ONE knob is NOT expressible there, and it is the largest one left. Every
|
|
146
|
+
# request the serve handles gets ConstrainedDecodingConfig(enable=True, ...)
|
|
147
|
+
# built for it unconditionally -- enable is True even when the caller sent no
|
|
148
|
+
# response_format and the generation is therefore unconstrained -- so the native
|
|
149
|
+
# conversation-create builds constraint machinery for a grammar nothing will
|
|
150
|
+
# use, once per frame. config_schema.json on the pinned 0.16.0 has 17 keys and
|
|
151
|
+
# NONE reaches it; no request field reaches it either, and 0.15.0 and 0.16.1
|
|
152
|
+
# construct it identically, so a version move does not reach it. That is why
|
|
153
|
+
# Install-LitertlmShim below exists -- see it for the measurement.
|
|
143
154
|
#
|
|
144
155
|
# MEASURED (M4 Max 12P+4E/48G, litert-lm 0.16.0, Gemma 4 E2B, delegate asserted
|
|
145
156
|
# GPU from the native log, 16 warm-ups, arms interleaved, operator/SOP field set,
|
|
@@ -169,7 +180,22 @@ function Write-LitertlmConfig {
|
|
|
169
180
|
$cfg = [ordered]@{ models = [ordered]@{ $ModelId = $model } }
|
|
170
181
|
$path = Get-LitertlmConfigPath
|
|
171
182
|
$tmp = "$path.tmp"
|
|
172
|
-
|
|
183
|
+
# UTF-8 WITHOUT a BOM, written explicitly rather than via -Encoding.
|
|
184
|
+
#
|
|
185
|
+
# `Set-Content -Encoding UTF8` emits a BOM on Windows PowerShell 5.1 (it is
|
|
186
|
+
# BOM-less only on PowerShell 7+), and this script runs under whichever host
|
|
187
|
+
# the installer happens to invoke. litert-lm parses this file with a plain
|
|
188
|
+
# `json.load`, which REFUSES a BOM:
|
|
189
|
+
# Failed to parse config.json: Unexpected UTF-8 BOM (decode using utf-8-sig)
|
|
190
|
+
# That is a 500 on EVERY inference, not a degraded mode -- and because
|
|
191
|
+
# /v1/models answers 200 without building an engine, the install still looked
|
|
192
|
+
# healthy. Measured on windows-latest 2026-08-19, run 32223243603: 0 frames
|
|
193
|
+
# out of a 3-arm matrix, every arm HTTP 500. The macOS and Linux
|
|
194
|
+
# provisioners write this file with `printf` and were never affected.
|
|
195
|
+
[System.IO.File]::WriteAllText(
|
|
196
|
+
$tmp,
|
|
197
|
+
($cfg | ConvertTo-Json -Depth 6),
|
|
198
|
+
(New-Object System.Text.UTF8Encoding($false)))
|
|
173
199
|
Move-Item -LiteralPath $tmp -Destination $path -Force
|
|
174
200
|
$label = if ($VisionBackend) { $VisionBackend } else { "cpu-default" }
|
|
175
201
|
Log "wrote $path (vision_backend=$label, speculative_decoding=true)"
|
|
@@ -449,6 +475,90 @@ if ((Test-LitertLmCli) -and ($installedLitertLmVersion -eq $LitertLmVersion)) {
|
|
|
449
475
|
Log "litert-lm CLI repaired successfully at $(Get-LitertLmVersion)"
|
|
450
476
|
}
|
|
451
477
|
|
|
478
|
+
# -- The one knob config.json cannot express -----------------------------------
|
|
479
|
+
#
|
|
480
|
+
# `litert-lm serve` builds ConstrainedDecodingConfig(enable=True, provider=...)
|
|
481
|
+
# for EVERY request, at both openai_handler.py construction sites, with enable
|
|
482
|
+
# hardcoded True -- so a request that carried no response_format, which is every
|
|
483
|
+
# request the connector sends, still makes the native conversation-create build
|
|
484
|
+
# constraint machinery for a grammar nothing will use. It is rebuilt per request
|
|
485
|
+
# because the serve creates one conversation per request.
|
|
486
|
+
#
|
|
487
|
+
# MEASURED (M4 Max 16c/48G, litert-lm 0.16.0, Gemma 4 E2B, GPU/Metal, vision_backend
|
|
488
|
+
# =gpu + speculative_decoding=true, operator/SOP field set, the two committed CCTV
|
|
489
|
+
# fixtures, arms alternated sample-by-sample with the leading arm rotated each
|
|
490
|
+
# round, load average 22-25):
|
|
491
|
+
#
|
|
492
|
+
# in-process, one engine, n=10 pairs
|
|
493
|
+
# arm create_conversation send_message total
|
|
494
|
+
# stock 0.717 s 0.560 s 1.275 s
|
|
495
|
+
# without it 0.001 s 0.603 s 0.604 s
|
|
496
|
+
# paired 2.194x (min 2.040, max 2.284); generations BYTE-IDENTICAL 10/10;
|
|
497
|
+
# prefill 493 / decode 58 on both arms
|
|
498
|
+
#
|
|
499
|
+
# through two stock serves on two ports, interleaved, n=16 pairs
|
|
500
|
+
# 1.309 s -> 0.592 s p50 (p95 3.664 -> 0.965), paired 2.42x (min 2.174, max
|
|
501
|
+
# 4.657), 16/16 schema-valid and 16/16 byte-identical on both arms
|
|
502
|
+
#
|
|
503
|
+
# bench-local-vlm.mjs --arms gpu-sop, 16 warm-ups, n=8, back to back
|
|
504
|
+
# 1.32 s/frame (2,727 analyses/hour) -> 0.72 s/frame (5,000/hour), 8/8
|
|
505
|
+
# schema-valid and 83.3% field accuracy on BOTH arms
|
|
506
|
+
#
|
|
507
|
+
# A speed change, not an answer change -- the same bar speculative_decoding had
|
|
508
|
+
# to clear. The RATIO is itself load-dependent (3.734x at 0.0% CPU idle vs 2.42x
|
|
509
|
+
# at load 25, because the removed work is CPU-bound and the retained work is
|
|
510
|
+
# GPU-bound), so quote the near-idle figure.
|
|
511
|
+
#
|
|
512
|
+
# We do NOT patch upstream. Two files are ADDED to the litert-lm tool venv's
|
|
513
|
+
# site-packages: our shim, and a one-line .pth that imports it. Every upstream
|
|
514
|
+
# file stays byte-identical, the Scheduled Task's action is untouched (so the
|
|
515
|
+
# model OTA's `schtasks /End; /Run /TN TrillboardsLiteRtLm` still finds the same
|
|
516
|
+
# task), and a serve started by hand gets the fix too. It fails OPEN: any
|
|
517
|
+
# failure leaves stock behaviour and prints one line to the serve's own log, and
|
|
518
|
+
# TRILLBOARDS_LITERTLM_SHIM=0 disables it without uninstalling anything.
|
|
519
|
+
#
|
|
520
|
+
# Runs UNCONDITIONALLY, never inside the install/repair branch: `uv tool install
|
|
521
|
+
# --force` rebuilds the venv and takes both files with it, while Test-LitertLmCli
|
|
522
|
+
# short-circuits that branch on a healthy CLI -- gating this behind it is exactly
|
|
523
|
+
# how a repaired-and-healthy machine would keep the slow serve and report fine.
|
|
524
|
+
# Never throws: this is a speed fix, and it must not be able to fail an install.
|
|
525
|
+
function Install-LitertlmShim {
|
|
526
|
+
param([string]$UvPath)
|
|
527
|
+
try {
|
|
528
|
+
$shim = $null
|
|
529
|
+
foreach ($c in @(
|
|
530
|
+
(Join-Path $PSScriptRoot "trillboards_litertlm_shim.py"),
|
|
531
|
+
(Join-Path $PSScriptRoot "..\litertlm\trillboards_litertlm_shim.py")
|
|
532
|
+
)) { if (Test-Path -LiteralPath $c -PathType Leaf) { $shim = $c; break } }
|
|
533
|
+
if (-not $shim) { Log "WARN: litert-lm shim source not found; serve keeps stock (slower) conversation setup"; return $false }
|
|
534
|
+
|
|
535
|
+
$toolDir = (& $UvPath tool dir 2>$null | Select-Object -First 1)
|
|
536
|
+
if ([string]::IsNullOrWhiteSpace($toolDir)) { Log "WARN: could not resolve 'uv tool dir'; skipping litert-lm shim"; return $false }
|
|
537
|
+
$py = Join-Path $toolDir.Trim() "litert-lm\Scripts\python.exe"
|
|
538
|
+
if (-not (Test-Path -LiteralPath $py -PathType Leaf)) { Log "WARN: litert-lm venv python missing at $py; skipping shim"; return $false }
|
|
539
|
+
|
|
540
|
+
$site = (& $py -c "import sysconfig;print(sysconfig.get_paths()['purelib'])" 2>$null | Select-Object -First 1)
|
|
541
|
+
if ([string]::IsNullOrWhiteSpace($site) -or -not (Test-Path -LiteralPath $site.Trim())) {
|
|
542
|
+
Log "WARN: could not resolve litert-lm site-packages; skipping shim"; return $false
|
|
543
|
+
}
|
|
544
|
+
$site = $site.Trim()
|
|
545
|
+
Copy-Item -LiteralPath $shim -Destination (Join-Path $site "trillboards_litertlm_shim.py") -Force
|
|
546
|
+
Set-Content -LiteralPath (Join-Path $site "trillboards-litertlm-shim.pth") -Value "import trillboards_litertlm_shim" -Encoding ASCII
|
|
547
|
+
|
|
548
|
+
# Capability is established by ATTEMPTING THE OPERATION. Importing litert_lm
|
|
549
|
+
# here is the only thing that proves the wrap landed on the class the serve
|
|
550
|
+
# will use; a file that merely exists proves nothing.
|
|
551
|
+
& $py -c "import litert_lm,sys; sys.exit(0 if getattr(litert_lm.Engine.create_conversation,'_trillboards_litertlm_shim',False) else 1)" *>> $LogPath
|
|
552
|
+
if ($LASTEXITCODE -eq 0) { Log "litert-lm fast-conversation shim active in $site"; return $true }
|
|
553
|
+
Log "WARN: litert-lm shim did not take effect; serve keeps stock (slower) conversation setup"
|
|
554
|
+
return $false
|
|
555
|
+
} catch {
|
|
556
|
+
Log "WARN: litert-lm shim install failed: $_"
|
|
557
|
+
return $false
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
Install-LitertlmShim -UvPath $uvCmd.Source | Out-Null
|
|
561
|
+
|
|
452
562
|
$bundledModelVerified = $false
|
|
453
563
|
if (-not [string]::IsNullOrWhiteSpace($BundledModelPath)) {
|
|
454
564
|
if (-not (Test-Path -LiteralPath $BundledModelPath -PathType Leaf)) {
|
|
@@ -590,6 +700,24 @@ if (-not (Test-LitertlmVision)) {
|
|
|
590
700
|
Stop-SetupLock
|
|
591
701
|
exit 1
|
|
592
702
|
}
|
|
703
|
+
# RE-PROBE, with the same probe that sent us here.
|
|
704
|
+
#
|
|
705
|
+
# Test-ServeHealthy above only proves /v1/models answers, and this file's own
|
|
706
|
+
# comment six lines up says that route never builds an engine. So before this
|
|
707
|
+
# check existed, a CPU fallback that ALSO could not infer logged "healthy on
|
|
708
|
+
# the CPU vision encoder (slower, but serving)" and exited 0 on a machine where
|
|
709
|
+
# every frame 500s. That is exactly how the UTF-8 BOM above shipped as a GREEN
|
|
710
|
+
# install: the cascade detected the failure, downgraded a tier, and then
|
|
711
|
+
# verified the downgrade with a check that cannot fail for this reason.
|
|
712
|
+
#
|
|
713
|
+
# A CPU fallback that cannot infer is not a slower tier. It is a broken
|
|
714
|
+
# install, and the operator has to hear so at setup time rather than discover
|
|
715
|
+
# it as silence from a camera weeks later.
|
|
716
|
+
if (-not (Test-LitertlmVision)) {
|
|
717
|
+
Fail-LocalAi "Gemma is installed and the local AI service is answering, but it could not analyze a test image on either the GPU or the CPU vision encoder. See $LogPath."
|
|
718
|
+
Stop-SetupLock
|
|
719
|
+
exit 1
|
|
720
|
+
}
|
|
593
721
|
Log "local AI healthy on the CPU vision encoder (slower, but serving)"
|
|
594
722
|
} else {
|
|
595
723
|
Log "local AI healthy with the GPU vision encoder"
|
|
@@ -19,6 +19,25 @@ if /I "%~1"=="auto-sense" (
|
|
|
19
19
|
if errorlevel 1 set "NEEDS_LOCAL_AI=1"
|
|
20
20
|
curl.exe --fail --silent --max-time 2 http://127.0.0.1:9379/v1/models >nul 2>&1
|
|
21
21
|
if errorlevel 1 set "NEEDS_LOCAL_AI=1"
|
|
22
|
+
REM A CONFIG litert-lm CANNOT PARSE IS INVISIBLE TO EVERY PROBE ABOVE. The
|
|
23
|
+
REM model is installed, the task exists, and /v1/models answers 200 -- that
|
|
24
|
+
REM route never builds an engine -- while EVERY inference returns 500. That is
|
|
25
|
+
REM exactly what shipped on 2026-08-19: setup-litertlm.ps1 wrote config.json
|
|
26
|
+
REM with `Set-Content -Encoding UTF8`, which is BOM-ful on Windows PowerShell
|
|
27
|
+
REM 5.1, and litert-lm parses the file with a plain json.load that refuses a
|
|
28
|
+
REM BOM. Without this check the repaired provisioner would land by auto-update
|
|
29
|
+
REM and never re-run, so the fix would reach NEW INSTALLS ONLY and every
|
|
30
|
+
REM already-broken box would stay broken forever while reporting healthy.
|
|
31
|
+
REM
|
|
32
|
+
REM Byte comparison, not a parse, and the BOM test comes FIRST: PowerShell's
|
|
33
|
+
REM ConvertFrom-Json happily accepts a BOM, so a parse alone would call the
|
|
34
|
+
REM broken file good. Self-clearing -- once the provisioner rewrites the file
|
|
35
|
+
REM without a BOM this never fires again -- and it fails toward REPAIR, which
|
|
36
|
+
REM is the safe direction for a box that cannot sense.
|
|
37
|
+
if exist "!LITERT_ROOT!\config.json" (
|
|
38
|
+
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "try { $p = '!LITERT_ROOT!\config.json'; $b = [System.IO.File]::ReadAllBytes($p); if ($b.Length -ge 3 -and $b[0] -eq 0xEF -and $b[1] -eq 0xBB -and $b[2] -eq 0xBF) { exit 1 }; $t = [System.Text.Encoding]::UTF8.GetString($b).Trim(); if ($t.Length -gt 0) { [void]($t | ConvertFrom-Json) }; exit 0 } catch { exit 1 }" >nul 2>&1
|
|
39
|
+
if errorlevel 1 set "NEEDS_LOCAL_AI=1"
|
|
40
|
+
)
|
|
22
41
|
REM Launch the repair through the wscript host, NOT `start`. cmd's `start`
|
|
23
42
|
REM allocates a NEW console for the child before PowerShell can hide itself,
|
|
24
43
|
REM so the customer saw a black window on exactly the reboot that needs a
|
|
@@ -10,6 +10,7 @@ import { type MotionGateOptions, type MotionGateReason } from './SceneChangeDete
|
|
|
10
10
|
import { type VlmCandidateBufferOptions, type VlmCandidateBufferStats } from './VlmCandidateBuffer';
|
|
11
11
|
import { type DurableVlmCandidateSpoolOptions } from './DurableVlmCandidateSpool';
|
|
12
12
|
import type { DeployedCadence } from './deployedCadence';
|
|
13
|
+
import { type CaptureMode } from './connectorCadence';
|
|
13
14
|
import type { LiteRtAccelerator, LiteRtAcceleratorHealth } from './LiteRtVlmProvider';
|
|
14
15
|
export declare function classifyRtspFailureClass(err: unknown): CameraHealthFailureClass;
|
|
15
16
|
/**
|
|
@@ -46,6 +47,8 @@ export interface SensingClient {
|
|
|
46
47
|
*/
|
|
47
48
|
getLocalInferenceStats?(): {
|
|
48
49
|
completed: number;
|
|
50
|
+
analyzeMsP50?: number | null;
|
|
51
|
+
analyzeSamples?: number;
|
|
49
52
|
};
|
|
50
53
|
/**
|
|
51
54
|
* Which litert-lm delegate this client's on-device runtime resolved, and why
|
|
@@ -187,6 +190,23 @@ export interface CloudSensingManagerOptions {
|
|
|
187
190
|
* single-conversation server and 16 free-running loops oversubscribe it ~17x.
|
|
188
191
|
*/
|
|
189
192
|
maxConcurrentAnalyses?: number;
|
|
193
|
+
/**
|
|
194
|
+
* How the loops' `CameraProvider`s acquire frames.
|
|
195
|
+
*
|
|
196
|
+
* Default `'per_grab'` — the historical behaviour, so every existing caller
|
|
197
|
+
* and every test derives exactly the cadence it did before. `buildLocalSensingManager`
|
|
198
|
+
* passes `'persistent'` because `buildLocalSensingLoops` builds
|
|
199
|
+
* `RTSPStreamCameraProvider`s, where a look is a memory read rather than an
|
|
200
|
+
* RTSP handshake and the recorder therefore does not bound the look cadence.
|
|
201
|
+
*
|
|
202
|
+
* This is DECLARED rather than sniffed from the providers on purpose: the
|
|
203
|
+
* providers do not know their mode until `open()` (a feed degrades to
|
|
204
|
+
* per-grab when a recorder will not hold a session), the cadence is needed at
|
|
205
|
+
* construction, and a cadence that changed under a running connector would
|
|
206
|
+
* mean `getSensingHealth()` reporting one number while the timers ran another.
|
|
207
|
+
* A feed that degrades queues on `CaptureAdmission` exactly as it does today.
|
|
208
|
+
*/
|
|
209
|
+
captureMode?: CaptureMode;
|
|
190
210
|
/**
|
|
191
211
|
* Reclaim an admission slot held longer than this (ms). Default 180000 — the
|
|
192
212
|
* provider's 120 s HTTP timeout plus retry headroom. Guards a 24/7 connector
|
|
@@ -348,6 +368,11 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
348
368
|
/** Live audio attachments, keyed by feed name. Empty unless audio is enabled. */
|
|
349
369
|
private audioAttachments;
|
|
350
370
|
private motionGateOptions;
|
|
371
|
+
/**
|
|
372
|
+
* How this connector's feeds ACQUIRE frames, which decides which machine
|
|
373
|
+
* bounds its look cadence. See `lookIntervalMsForFeedCount`.
|
|
374
|
+
*/
|
|
375
|
+
private readonly captureMode;
|
|
351
376
|
/** Look-rate for a still feed when the cascade is on. null ⇒ cascade off. */
|
|
352
377
|
private motionScanIntervalMs;
|
|
353
378
|
/** Stage-1 decimation: what was asked for, the floor, and whether it bit. */
|
|
@@ -494,6 +519,42 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
494
519
|
skipped: number;
|
|
495
520
|
byReason: Record<MotionGateReason, number>;
|
|
496
521
|
};
|
|
522
|
+
/**
|
|
523
|
+
* How frames are being ACQUIRED right now, and how many feeds are not
|
|
524
|
+
* getting what was asked for.
|
|
525
|
+
*
|
|
526
|
+
* `RTSPStreamCameraProvider` degrades to the per-grab path when a recorder
|
|
527
|
+
* will not hold a persistent session — deliberately, so this change can
|
|
528
|
+
* never break a camera that works today. But a degrade that nobody can see
|
|
529
|
+
* is the connector's recurring defect wearing a new hat: those feeds keep
|
|
530
|
+
* running at the OLD look cadence (an RTSP handshake per look, ~2 s) while
|
|
531
|
+
* `cascade.scanIntervalMs` reports the fast one, which is exactly the shape
|
|
532
|
+
* of "getSensingHealth() reports a cadence the connector is not running"
|
|
533
|
+
* that `lookIntervalMsForFeedCount` exists to prevent.
|
|
534
|
+
*
|
|
535
|
+
* DERIVED on every call from each provider's own `getStats()`, never
|
|
536
|
+
* latched — a provider's mode is only settled after `open()`, and a feed
|
|
537
|
+
* that degrades on a reconnect must show up here without anything having to
|
|
538
|
+
* remember to re-write a flag.
|
|
539
|
+
*/
|
|
540
|
+
capture: {
|
|
541
|
+
/** What this connector was BUILT for. */
|
|
542
|
+
mode: CaptureMode;
|
|
543
|
+
/** Feeds actually holding a persistent session. */
|
|
544
|
+
persistentFeeds: number;
|
|
545
|
+
/** Feeds running the per-grab path, whatever the connector asked for. */
|
|
546
|
+
perGrabFeeds: number;
|
|
547
|
+
/** Feeds whose provider does not report a mode (a fake, or a webcam). */
|
|
548
|
+
unknownFeeds: number;
|
|
549
|
+
/** Why the degraded feeds degraded, counted. */
|
|
550
|
+
degradedByReason: Record<string, number>;
|
|
551
|
+
/** getFrame() calls that found no new frame in time, across all feeds. */
|
|
552
|
+
staleReads: number;
|
|
553
|
+
/** ffmpeg session restarts across all feeds. A silent stream is not one. */
|
|
554
|
+
sessionRestarts: number;
|
|
555
|
+
/** Age of the oldest feed's newest frame, ms. Null when nothing reports. */
|
|
556
|
+
oldestFrameAgeMs: number | null;
|
|
557
|
+
};
|
|
497
558
|
/**
|
|
498
559
|
* The bounded hold between the cascade and the gate. `served` is the whole
|
|
499
560
|
* point — frames that were interesting, could not be analyzed at the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -327,35 +327,6 @@ class CloudSensingManager extends events_1.EventEmitter {
|
|
|
327
327
|
// One gate for the whole process. Defaulting to one slot PER LOOP keeps the
|
|
328
328
|
// cloud path (a genuinely concurrent backend) exactly as it is today; the
|
|
329
329
|
// local path passes 1 because its backend is single-conversation.
|
|
330
|
-
//
|
|
331
|
-
// MEASURED 2026-08-18, and the result is worse than "no speedup" — it is
|
|
332
|
-
// SILENT WRONG ANSWERS, so do not raise this for the local path.
|
|
333
|
-
//
|
|
334
|
-
// Two threads, one `litert_lm.Engine`, one conversation each, real frames:
|
|
335
|
-
// thread 0 returned 4/4 correct generations and thread 1 returned the
|
|
336
|
-
// EMPTY STRING 4/4 times. No exception, no status code, no log line — each
|
|
337
|
-
// empty call still blocked ~2.9 s first. Serial on the same engine in the
|
|
338
|
-
// same process was 8/8 valid. So concurrency did not trade correctness for
|
|
339
|
-
// throughput, it destroyed both: 1,250 valid analyses/hour against 2,330
|
|
340
|
-
// serial.
|
|
341
|
-
//
|
|
342
|
-
// TWO engines, one per thread, IS safe (8/8 valid, 1.249x) — but it costs a
|
|
343
|
-
// second engine's private footprint (~0.9 GB; the 1.3 GB of mapped model is
|
|
344
|
-
// clean and shared) and it is unreachable from here anyway, because the
|
|
345
|
-
// process on the other end of the socket is `litert-lm serve`.
|
|
346
|
-
//
|
|
347
|
-
// And that serve settles it independently: it is `http.server.HTTPServer`,
|
|
348
|
-
// the SERIAL one, on BOTH 0.13.1 and the pinned 0.16.0. Measured against a
|
|
349
|
-
// live serve, two requests issued 0.5 ms apart: the second received its
|
|
350
|
-
// first byte at 19,718 ms — exactly the sum of both, i.e. it was not even
|
|
351
|
-
// READ until the first had fully answered. There is no overlap to harvest,
|
|
352
|
-
// which also rules out pipelining frame N+1's image encode against frame
|
|
353
|
-
// N's decode: the seam does not exist at this layer.
|
|
354
|
-
//
|
|
355
|
-
// The throughput that WAS available came from the engine's configuration, not
|
|
356
|
-
// from concurrency — 2.765x on the SOP schema by moving the vision encoder to
|
|
357
|
-
// the GPU and enabling speculative decoding. See
|
|
358
|
-
// docs/runbooks/cctv-local-inference-hardware-floor.md §10.
|
|
359
330
|
this.admissionGate = new VlmAdmissionGate_1.VlmAdmissionGate({
|
|
360
331
|
maxInFlight: Math.max(1, Math.trunc(options.maxConcurrentAnalyses ?? this.loops.length)),
|
|
361
332
|
maxInFlightMs: options.maxAnalysisInFlightMs,
|
|
@@ -367,6 +338,7 @@ class CloudSensingManager extends events_1.EventEmitter {
|
|
|
367
338
|
});
|
|
368
339
|
this.admissionRetryDelayMs = Math.max(1, Math.trunc(options.admissionRetryDelayMs ??
|
|
369
340
|
Math.min(MAX_ADMISSION_RETRY_MS, Math.max(MIN_ADMISSION_RETRY_MS, this.staggerStepMs()))));
|
|
341
|
+
this.captureMode = options.captureMode ?? 'per_grab';
|
|
370
342
|
if (motionGateEnabled) {
|
|
371
343
|
const gateOptions = options.motionGate;
|
|
372
344
|
// STAGE 1 — decimation. Never look faster than the floor (Frigate's
|
|
@@ -379,8 +351,17 @@ class CloudSensingManager extends events_1.EventEmitter {
|
|
|
379
351
|
// cadence an accident of the ANALYZE knob: they were both 30 s, so nothing
|
|
380
352
|
// distinguished them and the 30 s look cadence that caught 8.3% of Instant
|
|
381
353
|
// events looked deliberate.
|
|
354
|
+
//
|
|
355
|
+
// `captureMode` is the second input and it is what makes the derivation
|
|
356
|
+
// honest after 2026-08-18. A cadence is only real if the machine can
|
|
357
|
+
// deliver it, and WHICH machine bounds it depends on how frames are
|
|
358
|
+
// acquired: per-grab capture is bounded by the RECORDER (an RTSP
|
|
359
|
+
// handshake per look), a persistent session by the DETECTOR (the frame is
|
|
360
|
+
// already in memory). Deriving both from one formula would either promise
|
|
361
|
+
// a per-grab connector a cadence its recorder cannot serve, or hold a
|
|
362
|
+
// persistent one down to a limit that no longer applies to it.
|
|
382
363
|
const requested = Math.max(1, Math.trunc(gateOptions.scanIntervalMs
|
|
383
|
-
?? (0, connectorCadence_1.lookIntervalMsForFeedCount)(this.loops.length)
|
|
364
|
+
?? (0, connectorCadence_1.lookIntervalMsForFeedCount)(this.loops.length, this.captureMode)
|
|
384
365
|
?? connectorCadence_1.LOOK_INTERVAL_MS));
|
|
385
366
|
this.motionScanFloorMs = Math.max(0, Math.trunc(gateOptions.minScanIntervalMs ?? DEFAULT_MIN_MOTION_SCAN_INTERVAL_MS));
|
|
386
367
|
this.motionScanRequestedMs = requested;
|
|
@@ -558,6 +539,46 @@ class CloudSensingManager extends events_1.EventEmitter {
|
|
|
558
539
|
// never describe two different instants.
|
|
559
540
|
const candidateStats = this.candidates?.getStats() ?? null;
|
|
560
541
|
const candidateByFeed = new Map((candidateStats?.perFeed ?? []).map((f) => [f.name, f]));
|
|
542
|
+
// Ask every provider what path it is ACTUALLY on. `getStats` is optional on
|
|
543
|
+
// `CameraProvider` (a webcam adapter has none), so a provider that cannot
|
|
544
|
+
// answer is counted as UNKNOWN rather than assumed to be fine — a capture
|
|
545
|
+
// health block that reported an unanswered feed as healthy would be the same
|
|
546
|
+
// defect one layer up. Mosaic tiles answer through `CropViewProvider` ->
|
|
547
|
+
// `SharedFrameSource`, which forward this call, so every tile of one
|
|
548
|
+
// composite reports that recorder's real mode rather than `unknown`.
|
|
549
|
+
const captureHealth = {
|
|
550
|
+
mode: this.captureMode,
|
|
551
|
+
persistentFeeds: 0,
|
|
552
|
+
perGrabFeeds: 0,
|
|
553
|
+
unknownFeeds: 0,
|
|
554
|
+
degradedByReason: {},
|
|
555
|
+
staleReads: 0,
|
|
556
|
+
sessionRestarts: 0,
|
|
557
|
+
oldestFrameAgeMs: null,
|
|
558
|
+
};
|
|
559
|
+
for (const s of this.loops) {
|
|
560
|
+
const stats = s.deps.camera.getStats?.();
|
|
561
|
+
const mode = stats?.mode;
|
|
562
|
+
if (mode === 'persistent')
|
|
563
|
+
captureHealth.persistentFeeds += 1;
|
|
564
|
+
else if (mode === 'per_grab')
|
|
565
|
+
captureHealth.perGrabFeeds += 1;
|
|
566
|
+
else {
|
|
567
|
+
captureHealth.unknownFeeds += 1;
|
|
568
|
+
continue;
|
|
569
|
+
}
|
|
570
|
+
const reason = stats?.degradedReason;
|
|
571
|
+
if (typeof reason === 'string') {
|
|
572
|
+
captureHealth.degradedByReason[reason] = (captureHealth.degradedByReason[reason] ?? 0) + 1;
|
|
573
|
+
}
|
|
574
|
+
if (typeof stats?.staleReads === 'number')
|
|
575
|
+
captureHealth.staleReads += stats.staleReads;
|
|
576
|
+
if (typeof stats?.restarts === 'number')
|
|
577
|
+
captureHealth.sessionRestarts += stats.restarts;
|
|
578
|
+
if (typeof stats?.frameAgeMs === 'number') {
|
|
579
|
+
captureHealth.oldestFrameAgeMs = Math.max(captureHealth.oldestFrameAgeMs ?? 0, stats.frameAgeMs);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
561
582
|
const cascadeByReason = emptyMotionReasonCounts();
|
|
562
583
|
let cascadeEvaluated = 0;
|
|
563
584
|
let cascadeAnalyzed = 0;
|
|
@@ -596,6 +617,7 @@ class CloudSensingManager extends events_1.EventEmitter {
|
|
|
596
617
|
skipped: cascadeEvaluated - cascadeAnalyzed,
|
|
597
618
|
byReason: cascadeByReason,
|
|
598
619
|
},
|
|
620
|
+
capture: captureHealth,
|
|
599
621
|
candidateBuffer: {
|
|
600
622
|
enabled: this.candidates !== null,
|
|
601
623
|
storage: candidateStats?.storage ?? 'memory',
|