@trillboards/edge-sdk 0.2.73 → 0.2.76

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 (54) hide show
  1. package/deploy/detector/README.md +133 -0
  2. package/deploy/detector/bench/verify_against_reference.py +120 -0
  3. package/deploy/detector/pyproject.toml +49 -0
  4. package/deploy/detector/tests/__init__.py +0 -0
  5. package/deploy/detector/tests/test_modelpath.py +108 -0
  6. package/deploy/detector/tests/test_server.py +577 -0
  7. package/deploy/detector/tests/test_session.py +242 -0
  8. package/deploy/detector/trillboards_detector/__init__.py +8 -0
  9. package/deploy/detector/trillboards_detector/__main__.py +4 -0
  10. package/deploy/detector/trillboards_detector/cli.py +141 -0
  11. package/deploy/detector/trillboards_detector/errors.py +16 -0
  12. package/deploy/detector/trillboards_detector/labels.py +107 -0
  13. package/deploy/detector/trillboards_detector/loader.py +257 -0
  14. package/deploy/detector/trillboards_detector/modelpath.py +74 -0
  15. package/deploy/detector/trillboards_detector/server.py +460 -0
  16. package/deploy/detector/trillboards_detector/session.py +354 -0
  17. package/deploy/macos/build-macos-pkg.sh +48 -0
  18. package/deploy/macos/com.trillboards.detector.plist +61 -0
  19. package/deploy/macos/scripts/ensure-detector.sh +85 -0
  20. package/deploy/macos/scripts/postinstall +28 -0
  21. package/deploy/macos/scripts/setup-detector.sh +185 -0
  22. package/deploy/systemd/install.sh +35 -0
  23. package/deploy/systemd/setup-detector.sh +130 -0
  24. package/deploy/systemd/trillboards-detector.service +54 -0
  25. package/deploy/windows/build-windows.ps1 +38 -0
  26. package/deploy/windows/installer.nsi +24 -1
  27. package/deploy/windows/register-detector-task.ps1 +161 -0
  28. package/deploy/windows/register-task.ps1 +27 -0
  29. package/deploy/windows/setup-detector.ps1 +176 -0
  30. package/deploy/windows/stop-existing.ps1 +1 -0
  31. package/deploy/windows/trillboards-edge.cmd +25 -0
  32. package/dist/AudienceAnalyzeClient.d.ts +6 -0
  33. package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
  34. package/dist/AudienceAnalyzeClient.js +14 -0
  35. package/dist/AudienceAnalyzeClient.js.map +1 -1
  36. package/dist/EdgeAgent.js +1 -1
  37. package/dist/LocalDetectorClient.d.ts +92 -0
  38. package/dist/LocalDetectorClient.d.ts.map +1 -0
  39. package/dist/LocalDetectorClient.js +241 -0
  40. package/dist/LocalDetectorClient.js.map +1 -0
  41. package/dist/diagnose.d.ts +1 -1
  42. package/dist/diagnose.js +1 -1
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +17 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/localSensing.d.ts.map +1 -1
  48. package/dist/localSensing.js +6 -0
  49. package/dist/localSensing.js.map +1 -1
  50. package/dist/zoneContainment.d.ts +148 -0
  51. package/dist/zoneContainment.d.ts.map +1 -0
  52. package/dist/zoneContainment.js +172 -0
  53. package/dist/zoneContainment.js.map +1 -0
  54. package/package.json +1 -1
@@ -0,0 +1,161 @@
1
+ <#
2
+ register-detector-task.ps1 -- register the Scheduled Task that runs the
3
+ on-device OBJECT DETECTOR service (RF-DETR Medium, fp32 ONNX, :9380) with
4
+ crash-restart. Mirrors register-litertlm-task.ps1 rung for rung: the same
5
+ degradation ladder, the same S4U-not-SystemAccount principal, the same
6
+ stop-before-re-register, the same restart settings.
7
+
8
+ It never prompts. Headless costs one elevation on Windows (S4U needs
9
+ SeBatchLogonRight, which Task Scheduler grants only to an administrator
10
+ caller), and a second UAC dialog in one install is not acceptable -- so
11
+ ensure-sensing.ps1 owns the single prompt and register-task.ps1 repairs THIS
12
+ task inside that same elevated pass, exactly as it already does for
13
+ TrillboardsLiteRtLm. Invoked by setup-detector.ps1.
14
+
15
+ WHERE IT DIFFERS FROM THE LITERT-LM TASK, AND WHY:
16
+
17
+ --log-file A Scheduled Task has no stdout, so litert-lm's own log is
18
+ discarded on Windows and NOWHERE ELSE -- which is why the
19
+ 2026-08-19 windows-latest failure is still undiagnosed:
20
+ "the one process that knows why wrote its explanation to a
21
+ handle nobody was holding". litert-lm cannot be fixed from
22
+ here (it has no --log-file, and wrapping it in cmd.exe would
23
+ break the stop path's image-name filter). THIS binary is
24
+ ours and takes the flag, so the same blindness does not get
25
+ inherited. The file is size-capped and rotated by the
26
+ service itself.
27
+
28
+ boot delay PT30S, not litert-lm's PT1M. That one memory-maps a ~2.4 GB
29
+ model off a disk still busy with the rest of boot. This one
30
+ loads a ~128 MB ONNX -- and if the artifact is not there yet
31
+ it does not fail, it reports itself unhealthy and picks the
32
+ file up when it lands, so an early start is self-healing.
33
+ #>
34
+ [CmdletBinding()]
35
+ param(
36
+ [Parameter(Mandatory = $true)][string]$DetectorPath,
37
+ [string]$Port = "9380",
38
+ [string]$LogFile = ""
39
+ )
40
+ $ErrorActionPreference = "Stop"
41
+
42
+ $TaskName = "TrillboardsDetector"
43
+ $UserId = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
44
+
45
+ if ([string]::IsNullOrWhiteSpace($LogFile)) {
46
+ $LogFile = Join-Path (Join-Path $env:LOCALAPPDATA "Trillboards\logs") "detector.service.log"
47
+ }
48
+ try { New-Item -ItemType Directory -Force -Path (Split-Path -Parent $LogFile) | Out-Null } catch { }
49
+
50
+ # trillboards-detector serve --host 127.0.0.1 --port <port> --log-file <path>
51
+ # Loopback only -- LocalDetectorClient is local; nothing off-box has any
52
+ # business reaching this.
53
+ $argument = 'serve --host 127.0.0.1 --port ' + $Port + ' --log-file "' + $LogFile + '"'
54
+ $Action = New-ScheduledTaskAction -Execute $DetectorPath -Argument $argument
55
+
56
+ # NOT AT LOGON ONLY -- see register-task.ps1 for the full rationale, including
57
+ # why the REPEATING trigger (not the boot trigger) is the load-bearing one: only
58
+ # an Administrators-group member can create a task with a boot trigger, and this
59
+ # runs from a no-admin installer.
60
+ $RepeatTrigger = New-ScheduledTaskTrigger -Once -At ((Get-Date).AddMinutes(1)) `
61
+ -RepetitionInterval (New-TimeSpan -Minutes 5) -RepetitionDuration (New-TimeSpan -Days 3650)
62
+ $BootTrigger = New-ScheduledTaskTrigger -AtStartup
63
+ # Best-effort, exactly as in register-task.ps1: never fail registration over it.
64
+ try { $BootTrigger.Delay = "PT30S" } catch { Write-Warning "Could not set the boot-trigger delay: $($_.Exception.Message)" }
65
+ $LogonTrigger = New-ScheduledTaskTrigger -AtLogOn -User $UserId
66
+
67
+ # RestartCount/Interval == the plist's ThrottleInterval crash-loop guard; Zero
68
+ # time limit == the always-on service. MultipleInstances IgnoreNew matters now
69
+ # that several triggers exist: a second instance would fail to bind $Port anyway
70
+ # -- and it MUST fail, which is why DetectorServer turns SO_REUSEADDR off on
71
+ # Windows, where that flag otherwise lets a second process steal a live port.
72
+ $Settings = New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) `
73
+ -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable `
74
+ -MultipleInstances IgnoreNew `
75
+ -ExecutionTimeLimit ([TimeSpan]::Zero)
76
+
77
+ # S4U, NOT SystemAccount: trillboards-detector.exe lives under the user profile
78
+ # ($env:USERPROFILE\.local\bin) and reads its model from
79
+ # $env:USERPROFILE\.trillboards\models. SYSTEM would resolve both to
80
+ # C:\Windows\system32\config\systemprofile -- the binary would not be found and,
81
+ # if it were, it would look for the artifact in a directory the connector never
82
+ # writes to and report itself permanently unhealthy.
83
+ function New-DetectorPrincipal([string]$LogonType) {
84
+ New-ScheduledTaskPrincipal -UserId $UserId -LogonType $LogonType -RunLevel Limited
85
+ }
86
+
87
+ $Description = "Trillboards object detector - on-device RF-DETR cascade gate (:$Port)"
88
+
89
+ # Same degradation ladder as register-task.ps1 / register-litertlm-task.ps1.
90
+ $Attempts = @(
91
+ @{ Label = "S4U + boot + repeat"; LogonType = "S4U"; Triggers = @($BootTrigger, $RepeatTrigger, $LogonTrigger) },
92
+ @{ Label = "S4U + repeat"; LogonType = "S4U"; Triggers = @($RepeatTrigger, $LogonTrigger) },
93
+ @{ Label = "Interactive + repeat"; LogonType = "Interactive"; Triggers = @($RepeatTrigger, $LogonTrigger) },
94
+ @{ Label = "Interactive + logon only"; LogonType = "Interactive"; Triggers = @($LogonTrigger) }
95
+ )
96
+
97
+ # STOP THE RUNNING SERVICE BEFORE RE-REGISTERING, and wait for it to actually go.
98
+ #
99
+ # Unregistering a task is not documented to terminate a running instance, and
100
+ # this is a long-lived process holding :$Port. Left alive it keeps ANSWERING --
101
+ # so an upgrade would install the new tool, re-register the task, fail to bind,
102
+ # and leave the OLD build serving while every health probe passed. That is the
103
+ # incident register-litertlm-task.ps1 records, and it is worse here: a stale
104
+ # detector answering /detect is a stale MODEL grading a customer's frames.
105
+ #
106
+ # Done ONCE, before the ladder below, which may unregister and re-register
107
+ # several times.
108
+ Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
109
+
110
+ # Belt and braces: kill any detector process still listening on the port. Scoped
111
+ # to THIS user's processes whose command line carries our port AND our tool
112
+ # name, so a developer's unrelated python is never touched.
113
+ try {
114
+ Get-CimInstance Win32_Process -Filter "Name = 'trillboards-detector.exe' OR Name = 'python.exe' OR Name = 'pythonw.exe'" -ErrorAction SilentlyContinue |
115
+ Where-Object { $_.CommandLine -and $_.CommandLine -match 'trillboards.detector' -and $_.CommandLine -match ('--port\s+' + [regex]::Escape($Port)) } |
116
+ ForEach-Object {
117
+ Write-Host "stopping previous detector service (pid $($_.ProcessId)) before re-registering"
118
+ Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue
119
+ }
120
+ } catch { }
121
+
122
+ for ($i = 0; $i -lt 15; $i++) {
123
+ $inUse = $null
124
+ try { $inUse = Get-NetTCPConnection -LocalPort ([int]$Port) -State Listen -ErrorAction SilentlyContinue } catch { }
125
+ if (-not $inUse) { break }
126
+ Start-Sleep -Seconds 1
127
+ }
128
+
129
+ $Landed = $null
130
+ foreach ($attempt in $Attempts) {
131
+ Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue
132
+ try {
133
+ Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger $attempt.Triggers -Settings $Settings `
134
+ -Principal (New-DetectorPrincipal $attempt.LogonType) -Description $Description -ErrorAction Stop | Out-Null
135
+ $Landed = $attempt
136
+ break
137
+ } catch {
138
+ Write-Host "Registration attempt '$($attempt.Label)' was refused: $($_.Exception.Message)"
139
+ }
140
+ }
141
+ if (-not $Landed) {
142
+ Write-Error "Scheduled task '$TaskName' could not be registered in ANY supported shape."
143
+ exit 1
144
+ }
145
+
146
+ $registered = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
147
+ if (-not $registered) {
148
+ Write-Error "Scheduled task '$TaskName' did NOT register (Get-ScheduledTask found nothing)."
149
+ exit 1
150
+ }
151
+ $definition = Export-ScheduledTask -TaskName $TaskName
152
+ $logonType = if ($definition -match "<LogonType>([^<]+)</LogonType>") { $Matches[1] } else { "unknown" }
153
+ if (($definition -notmatch "<BootTrigger>") -and ($definition -notmatch "<Repetition>")) {
154
+ Write-Warning "Scheduled task '$TaskName' registered with a LOGON-ONLY trigger - after a reboot the connector would come back with no detector and send every frame to the VLM."
155
+ }
156
+ if ($logonType -eq "InteractiveToken") {
157
+ Write-Warning "Scheduled task '$TaskName' registered with an INTERACTIVE principal - the detector will only run while $UserId is logged on."
158
+ }
159
+
160
+ Start-ScheduledTask -TaskName $TaskName
161
+ Write-Host "Registered scheduled task '$TaskName' (trillboards-detector serve on :$Port, shape '$($Landed.Label)', logon type $logonType, restarts on failure, log $LogFile)."
@@ -194,4 +194,31 @@ if (Test-IsElevated) {
194
194
  }
195
195
  }
196
196
  }
197
+
198
+ # The object detector's task, repaired in the SAME pass and for the same
199
+ # reason. It is a third task, not a third prompt: ensure-sensing.ps1 owns the
200
+ # single UAC dialog, and anything that asked for its own would make a clean
201
+ # install cost two.
202
+ #
203
+ # A logon-only detector is a milder failure than a logon-only model server --
204
+ # the connector still senses, it just sends every frame to the VLM instead of
205
+ # ~15.3% of them -- but it is the same defect and it is free to fix here.
206
+ $detectorTask = Get-ScheduledTask -TaskName "TrillboardsDetector" -ErrorAction SilentlyContinue
207
+ if ($detectorTask) {
208
+ $detectorXml = Export-ScheduledTask -TaskName "TrillboardsDetector"
209
+ $detectorHeadless = (($detectorXml -match "<BootTrigger>") -or ($detectorXml -match "<Repetition>")) -and
210
+ ($detectorXml -notmatch "<LogonType>InteractiveToken</LogonType>")
211
+ if (-not $detectorHeadless) {
212
+ # Recover the interpreter path from the task we are replacing rather than
213
+ # re-deriving it: setup-detector.ps1 resolved it under the USER profile,
214
+ # and an elevated re-derivation could resolve somewhere else entirely.
215
+ $detectorExe = ($detectorTask.Actions | Select-Object -First 1).Execute
216
+ $detectorRegister = Join-Path $InstallDir "bin\register-detector-task.ps1"
217
+ if ($detectorExe -and (Test-Path $detectorRegister)) {
218
+ Write-Host "Repairing 'TrillboardsDetector' in the same elevated pass."
219
+ try { & $detectorRegister -DetectorPath $detectorExe | Out-Null }
220
+ catch { Write-Warning "Could not repair the detector task: $($_.Exception.Message)" }
221
+ }
222
+ }
223
+ }
197
224
  }
@@ -0,0 +1,176 @@
1
+ <#
2
+ setup-detector.ps1 -- provision the on-device OBJECT DETECTOR service
3
+ (RF-DETR Medium, fp32 ONNX, 127.0.0.1:9380) for the BYO-CCTV connector.
4
+
5
+ Runs as the signed-in user, is safe to retry, and never prompts.
6
+
7
+ WHAT IT DOES:
8
+ 1. Ensure `uv`, with the same enterprise-TLS and proxy handling as
9
+ setup-litertlm.ps1 -- behind a TLS-inspecting proxy `uv tool install` is
10
+ the step that dies, and it dies naming the wrong component.
11
+ 2. `uv tool install` the staged trillboards-detector package under ITS OWN
12
+ TOOL NAME, so uv gives it its own venv. Never a package added into
13
+ litert-lm's: `uv tool install --force` rebuilds that venv from scratch on
14
+ any version drift or health failure and would take the addition with it.
15
+ 3. Register the Scheduled Task (register-detector-task.ps1) on :9380.
16
+ litert-lm's :9379 is not touched.
17
+ 4. Verify the service ANSWERS.
18
+
19
+ WHAT IT DELIBERATELY DOES NOT DO:
20
+ * Fetch the model. The 124 MB fp32 ONNX is OTA'd by edge-core's
21
+ ModelManager on the same channel as Gemma's weights.
22
+ * Write a config file. There is nothing to configure -- which is also why
23
+ this script cannot repeat the 2026-08-19 BOM incident, where
24
+ `Set-Content -Encoding UTF8` (BOM-ful on Windows PowerShell 5.1) wrote a
25
+ config litert-lm's json.load refuses and every inference 500'd while
26
+ /v1/models still answered 200. The detector takes its settings on the
27
+ command line, so there is no file whose encoding could be wrong.
28
+ * Fail the install. Gemma is required because without it the connector
29
+ cannot sense at all; the detector removes ~84.7% of VLM calls for ~2.1%
30
+ of events, and without it every frame simply goes to the VLM as it does
31
+ today. This script exits 0 on every failure path with a logged reason.
32
+
33
+ WHY "ANSWERS" AND NOT "READY" IS THE BAR HERE:
34
+ at install time the model has not been downloaded yet, so /health is 503 BY
35
+ DESIGN. Demanding 200 would fail every fresh install. What distinguishes a
36
+ working install from a broken one is that the service is listening and
37
+ speaking JSON at all -- and the log says WHICH of the two states it is in, so
38
+ an operator can tell "waiting for the model" from "did not start". That is
39
+ the exact pair litert-lm's /v1/models check cannot distinguish.
40
+ #>
41
+ [CmdletBinding()]
42
+ param(
43
+ [string]$Port = "9380",
44
+ [string]$DetectorPython = $(if ($env:TRILLBOARDS_DETECTOR_PYTHON) { $env:TRILLBOARDS_DETECTOR_PYTHON } else { "3.12" }),
45
+ [string]$SourcePath = ""
46
+ )
47
+
48
+ $ErrorActionPreference = "Continue"
49
+ $Here = Split-Path -Parent $MyInvocation.MyCommand.Path
50
+ $LocalBin = Join-Path $env:USERPROFILE ".local\bin"
51
+ $LogDir = Join-Path $env:LOCALAPPDATA "Trillboards\logs"
52
+ New-Item -ItemType Directory -Force -Path $LogDir | Out-Null
53
+ $LogPath = Join-Path $LogDir "detector-setup.log"
54
+
55
+ function Log([string]$Message) {
56
+ $line = "[trillboards setup-detector] {0} {1}" -f (Get-Date -Format "HH:mm:ss"), $Message
57
+ Write-Host $line
58
+ try { Add-Content -LiteralPath $LogPath -Value $line -Encoding UTF8 } catch { }
59
+ }
60
+
61
+ function Resolve-DetectorSource {
62
+ if ($SourcePath -and (Test-Path -LiteralPath (Join-Path $SourcePath "pyproject.toml"))) { return (Resolve-Path -LiteralPath $SourcePath).Path }
63
+ foreach ($c in @(
64
+ (Join-Path $Here "detector"),
65
+ (Join-Path $Here "..\detector"),
66
+ (Join-Path $Here "..\..\detector")
67
+ )) {
68
+ if (Test-Path -LiteralPath (Join-Path $c "pyproject.toml")) { return (Resolve-Path -LiteralPath $c).Path }
69
+ }
70
+ return $null
71
+ }
72
+
73
+ Log "starting detector provisioning"
74
+
75
+ # --- Enterprise TLS + proxy for uv -------------------------------------------
76
+ # uv does NOT use Schannel and does NOT auto-discover a Windows proxy. It ships
77
+ # bundled Mozilla roots and reads proxy settings only from environment
78
+ # variables. Both names are set because an unknown env var is ignored, while a
79
+ # CLI flag would fail outright on a version that lacks it.
80
+ $env:UV_SYSTEM_CERTS = "1"
81
+ $env:UV_NATIVE_TLS = "1"
82
+ if (-not ($env:HTTPS_PROXY -or $env:https_proxy -or $env:ALL_PROXY)) {
83
+ try {
84
+ $probe = [Uri]"https://api.trillboards.com"
85
+ $systemProxy = [System.Net.WebRequest]::GetSystemWebProxy()
86
+ if ($null -ne $systemProxy -and -not $systemProxy.IsBypassed($probe)) {
87
+ $resolved = $systemProxy.GetProxy($probe)
88
+ if ($null -ne $resolved -and $resolved.AbsoluteUri -ne $probe.AbsoluteUri) {
89
+ $env:HTTPS_PROXY = $resolved.AbsoluteUri.TrimEnd("/")
90
+ $env:HTTP_PROXY = $env:HTTPS_PROXY
91
+ Log "using this machine's configured proxy for detector downloads: $($env:HTTPS_PROXY)"
92
+ }
93
+ }
94
+ } catch { }
95
+ }
96
+
97
+ # --- 1. uv -------------------------------------------------------------------
98
+ $env:PATH = "$LocalBin;$env:PATH"
99
+ $uvCmd = Get-Command uv -ErrorAction SilentlyContinue
100
+ if (-not $uvCmd) {
101
+ Log "uv not found - installing via astral.sh standalone installer (no admin)"
102
+ try {
103
+ & powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "irm https://astral.sh/uv/install.ps1 | iex" *>> $LogPath
104
+ } catch { Log "WARN: uv install failed: $_" }
105
+ $env:PATH = "$LocalBin;$env:LOCALAPPDATA\uv\bin;$env:PATH"
106
+ $uvCmd = Get-Command uv -ErrorAction SilentlyContinue
107
+ }
108
+ if (-not $uvCmd) {
109
+ Log "ERROR: uv unavailable; the detector cascade stays off and every frame goes to the VLM"
110
+ exit 0
111
+ }
112
+
113
+ # --- 2. The tool -------------------------------------------------------------
114
+ # Reinstalled unconditionally. The source is tens of KB, the dependency versions
115
+ # are PINNED in pyproject.toml, and uv skips work it has already done - so
116
+ # --force costs nothing on a healthy machine and repairs a drifted one. Gating
117
+ # it behind a health check is how a repaired-and-healthy box keeps a broken venv
118
+ # while reporting fine; setup-litertlm.ps1's shim carries the same note, from
119
+ # the same mistake.
120
+ $source = Resolve-DetectorSource
121
+ if (-not $source) {
122
+ Log "ERROR: detector package source not found near $Here"
123
+ exit 0
124
+ }
125
+ Log "installing/repairing trillboards-detector from $source with uv-managed Python $DetectorPython"
126
+ & $uvCmd.Source tool install --python $DetectorPython --managed-python --force "$source" *>> $LogPath
127
+ if ($LASTEXITCODE -ne 0) {
128
+ Log "ERROR: trillboards-detector install failed; the cascade stays off (the VLM still runs every frame)"
129
+ exit 0
130
+ }
131
+
132
+ $detectorPath = Join-Path $LocalBin "trillboards-detector.exe"
133
+ if (-not (Test-Path -LiteralPath $detectorPath)) {
134
+ $found = Get-Command trillboards-detector -ErrorAction SilentlyContinue
135
+ if ($found) { $detectorPath = $found.Source }
136
+ }
137
+ if (-not (Test-Path -LiteralPath $detectorPath)) {
138
+ Log "ERROR: trillboards-detector binary missing after install"
139
+ exit 0
140
+ }
141
+ Log "trillboards-detector installed at $detectorPath"
142
+
143
+ # --- 3. The Scheduled Task ---------------------------------------------------
144
+ $registration = Join-Path $Here "register-detector-task.ps1"
145
+ if (-not (Test-Path -LiteralPath $registration)) {
146
+ Log "ERROR: register-detector-task.ps1 is missing; the detector cannot be supervised"
147
+ exit 0
148
+ }
149
+ Log "registering the detector Scheduled Task on :$Port"
150
+ & powershell.exe -NoProfile -ExecutionPolicy Bypass -File $registration -DetectorPath $detectorPath -Port $Port *>> $LogPath
151
+ if ($LASTEXITCODE -ne 0) {
152
+ Log "ERROR: the detector Scheduled Task could not be registered; the cascade stays off"
153
+ exit 0
154
+ }
155
+
156
+ # --- 4. Does it ANSWER? ------------------------------------------------------
157
+ # Not "is it ready". Invoke-WebRequest THROWS on a 503, so the status code is
158
+ # read out of the exception rather than treated as a failure - a 503 here is the
159
+ # designed answer of a correctly-installed service whose model has not landed.
160
+ $code = 0
161
+ for ($attempt = 0; $attempt -lt 30 -and $code -eq 0; $attempt++) {
162
+ try {
163
+ $res = Invoke-WebRequest -Uri "http://127.0.0.1:$Port/health" -UseBasicParsing -TimeoutSec 3
164
+ $code = [int]$res.StatusCode
165
+ } catch {
166
+ if ($_.Exception.Response) { $code = [int]$_.Exception.Response.StatusCode } else { Start-Sleep -Seconds 1 }
167
+ }
168
+ }
169
+ switch ($code) {
170
+ 200 { Log "detector is READY (model already present)" }
171
+ 503 { Log "detector is running and AWAITING ITS MODEL - the OTA will land it and the service picks it up without a restart" }
172
+ default { Log "WARN: the detector service did not answer /health (code $code); every frame keeps going to the VLM" }
173
+ }
174
+
175
+ Log "done"
176
+ exit 0
@@ -36,6 +36,7 @@ function Get-TrillboardsEdgeProcesses {
36
36
  'trillboards-setup.ps1',
37
37
  'trillboards-pair.cmd',
38
38
  'setup-litertlm.ps1',
39
+ 'setup-detector.ps1',
39
40
  'cli.js',
40
41
  'ffmpeg.exe'
41
42
  )
@@ -52,6 +52,31 @@ if /I "%~1"=="auto-sense" (
52
52
  "!HIDDEN_RUN!" "%BIN%trillboards-hidden-run.vbs" "powershell.exe" "-NoProfile" "-ExecutionPolicy" "Bypass" "-WindowStyle" "Hidden" "-File" "%BIN%setup-litertlm.ps1" "-RequireBundledModel"
53
53
  )
54
54
  )
55
+
56
+ REM The on-device OBJECT DETECTOR, repaired on the same logon trigger. TWO
57
+ REM signals only -- the task exists, and the service answers on :9380.
58
+ REM
59
+ REM THE HEALTH PROBE ASKS WHETHER IT ANSWERS, NOT WHETHER IT IS READY, and
60
+ REM that is why there is no `--fail` here. The detector's model is OTA'd, so a
61
+ REM correctly-installed service reports 503 for as long as the artifact has not
62
+ REM landed -- minutes on a fresh install, indefinitely on a box that cannot
63
+ REM reach the CDN. Treating 503 as broken would reinstall a working tool on
64
+ REM every single logon. `curl.exe -o NUL -w %%{http_code}` returns 000 only
65
+ REM when nothing answered at all, which is the state worth repairing.
66
+ REM
67
+ REM There is deliberately no config-file check to match the litert-lm BOM test
68
+ REM above: this service is configured entirely on its command line, so it has
69
+ REM no file whose encoding could silently break it.
70
+ set "NEEDS_DETECTOR=0"
71
+ schtasks /Query /TN "TrillboardsDetector" >nul 2>&1
72
+ if errorlevel 1 set "NEEDS_DETECTOR=1"
73
+ for /f %%C in ('curl.exe --silent --output NUL --write-out "%%{http_code}" --max-time 2 http://127.0.0.1:9380/health 2^>nul') do set "DETECTOR_CODE=%%C"
74
+ if not defined DETECTOR_CODE set "NEEDS_DETECTOR=1"
75
+ if "!DETECTOR_CODE!"=="000" set "NEEDS_DETECTOR=1"
76
+ if "!NEEDS_DETECTOR!"=="1" if exist "%BIN%setup-detector.ps1" (
77
+ set "HIDDEN_RUN=%WINDIR%\System32\wscript.exe"
78
+ "!HIDDEN_RUN!" "%BIN%trillboards-hidden-run.vbs" "powershell.exe" "-NoProfile" "-ExecutionPolicy" "Bypass" "-WindowStyle" "Hidden" "-File" "%BIN%setup-detector.ps1"
79
+ )
55
80
  )
56
81
 
57
82
  "%BIN%node.exe" "%BIN%..\lib\edge-sdk\dist\cli.js" %*
@@ -204,6 +204,12 @@ export declare class AudienceAnalyzeClient {
204
204
  * `localAnalyzeMs` for why it is sent.
205
205
  */
206
206
  analyzeMs?: number;
207
+ /**
208
+ * The exact prompt this box put to the on-device model for THIS frame.
209
+ * Sent so `vision_call_log.prompt_text` stops being 0% populated on
210
+ * local-vlm rows while the cloud path is 100%.
211
+ */
212
+ promptText?: string;
207
213
  }): Promise<AudienceAnalyzeResponse>;
208
214
  /**
209
215
  * POST a FRAMELESS camera-health beacon. This is used when the connector can
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceAnalyzeClient.d.ts","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudienceAnalyzeClient.d.ts","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"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"}
@@ -216,6 +216,20 @@ class AudienceAnalyzeClient {
216
216
  && request.analyzeMs > 0
217
217
  ? { localAnalyzeMs: Math.round(request.analyzeMs) }
218
218
  : {}),
219
+ // The QUESTION that produced `preAnalyzed`, reported by the box that
220
+ // asked it. Same defect as `localAnalyzeMs` above and the same fix: the
221
+ // connector computes this on every analysis (localSensing caches it as
222
+ // `cachedPrompt`) and then drops it, so the only way to see what we asked
223
+ // a customer's camera was to read the builder at whatever commit that box
224
+ // is running. That reconstruction has already been wrong once, and the
225
+ // prompt was the bug.
226
+ //
227
+ // Guarded, not trusted: the server sanitises again at the trust boundary
228
+ // (utils/localPromptText). Sending a non-string or an empty string would
229
+ // put a value that is not a prompt under a column name that says it is.
230
+ ...(typeof request.promptText === 'string' && request.promptText.trim() !== ''
231
+ ? { localPromptText: request.promptText }
232
+ : {}),
219
233
  // Same last-spread override semantics as analyze(); see the note there.
220
234
  ...(request.extra || {}),
221
235
  ...(evidenceId ? { evidenceId } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceAnalyzeClient.js","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudienceAnalyzeClient.js","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"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"}
package/dist/EdgeAgent.js CHANGED
@@ -44,7 +44,7 @@ const edge_ads_1 = require("@trillboards/edge-ads");
44
44
  const CommandRouter_1 = require("./CommandRouter");
45
45
  const config_1 = require("./config");
46
46
  const dataDir_1 = require("./dataDir");
47
- const SDK_VERSION = '0.2.73';
47
+ const SDK_VERSION = '0.2.76';
48
48
  class EdgeAgent extends events_1.EventEmitter {
49
49
  constructor(config, deps) {
50
50
  super();
@@ -0,0 +1,92 @@
1
+ /** Where the detector service listens. Distinct port from litert-lm's 9379. */
2
+ export declare const DEFAULT_DETECTOR_PORT = 9380;
3
+ /** One detected object, in the coordinate space the frame was submitted in. */
4
+ export interface Detection {
5
+ /** Class label as the model names it, e.g. 'person'. Never an index. */
6
+ label: string;
7
+ /** 0..1 confidence. */
8
+ confidence: number;
9
+ /**
10
+ * Pixel-space box in the SUBMITTED frame's dimensions.
11
+ *
12
+ * Pixel, not normalised, because the submitted frame's size is known here and
13
+ * a normalised box would have to be de-normalised against a resolution this
14
+ * client would then have to carry. The zone test that consumes these compares
15
+ * against a NORMALISED `[0,1]` rectangle (`sensing_route_screens.focus_*`), so
16
+ * exactly one conversion is needed and it belongs at that comparison, once,
17
+ * where both the box and the frame size are in hand.
18
+ */
19
+ box: {
20
+ x: number;
21
+ y: number;
22
+ width: number;
23
+ height: number;
24
+ };
25
+ }
26
+ export interface DetectResult {
27
+ detections: Detection[];
28
+ /** Wall-clock ms the service spent on inference, as the service reports it. */
29
+ inferenceMs: number | null;
30
+ /** The artifact that produced this, so a result can be attributed. */
31
+ model: string | null;
32
+ }
33
+ /** Injectable HTTP transport — lets tests stub the service entirely. */
34
+ export interface DetectorHttpPoster {
35
+ (url: string, options: {
36
+ method: string;
37
+ headers: Record<string, string>;
38
+ timeoutMs: number;
39
+ }, body: string | null): Promise<{
40
+ statusCode: number;
41
+ body: string;
42
+ }>;
43
+ }
44
+ export interface LocalDetectorClientOptions {
45
+ baseUrl?: string;
46
+ timeoutMs?: number;
47
+ /**
48
+ * Classes to return. Empty means every class the model knows.
49
+ *
50
+ * This is where `sensing_profiles.classes` lands — the array an LLM already
51
+ * writes on every profile from a COCO vocabulary, and which nothing has ever
52
+ * read. Filtering at the SERVICE keeps the wire small; filtering here would
53
+ * ship every box across loopback to throw most away.
54
+ */
55
+ classes?: string[];
56
+ /** Minimum confidence. The service applies it; nothing re-filters downstream. */
57
+ minConfidence?: number;
58
+ }
59
+ /** The service was unreachable or answered non-2xx. Distinct from "no objects". */
60
+ export declare class DetectorUnavailableError extends Error {
61
+ }
62
+ export declare class LocalDetectorClient {
63
+ private readonly detectEndpoint;
64
+ private readonly healthEndpoint;
65
+ private readonly timeoutMs;
66
+ private readonly classes;
67
+ private readonly minConfidence;
68
+ private readonly poster;
69
+ constructor(options?: LocalDetectorClientOptions, poster?: DetectorHttpPoster);
70
+ getDetectEndpoint(): string;
71
+ /**
72
+ * Is the service up? A CHEAP probe — it must not run inference.
73
+ *
74
+ * Returns false rather than throwing: a connector whose detector is down must
75
+ * fall through to the VLM, not stop sensing. The runtime edge-cases runbook is
76
+ * a catalogue of the opposite mistake, where a failure could not report itself;
77
+ * this returns a boolean the caller is forced to look at.
78
+ */
79
+ isHealthy(): Promise<boolean>;
80
+ /**
81
+ * Detect objects in one JPEG.
82
+ *
83
+ * Throws `DetectorUnavailableError` when the SERVICE failed. An empty
84
+ * `detections` array is a RESULT — the frame genuinely had nothing — and the
85
+ * two must never collapse into one another: a gate that reads "service down"
86
+ * as "nothing there" suppresses every alert while looking healthy.
87
+ */
88
+ detect(jpeg: Buffer): Promise<DetectResult>;
89
+ }
90
+ /** Node built-ins only — no new dependency, matching LiteRtVlmProvider. */
91
+ export declare const defaultDetectorPoster: DetectorHttpPoster;
92
+ //# sourceMappingURL=LocalDetectorClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalDetectorClient.d.ts","sourceRoot":"","sources":["../src/LocalDetectorClient.ts"],"names":[],"mappings":"AA6DA,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,+EAA+E;AAC/E,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;OASG;IACH,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,CACE,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,mFAAmF;AACnF,qBAAa,wBAAyB,SAAQ,KAAK;CAAG;AAEtD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,OAAO,GAAE,0BAA+B,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAUjF,iBAAiB,IAAI,MAAM;IAE3B;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAanC;;;;;;;OAOG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAmFlD;AAED,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,EAAE,kBA+ChC,CAAC"}