@trillboards/edge-sdk 0.2.140 → 0.2.150

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 (188) hide show
  1. package/README.md +2 -2
  2. package/deploy/detector/pyproject.toml +20 -2
  3. package/deploy/detector/tests/test_execution.py +124 -0
  4. package/deploy/detector/tests/test_model_identity.py +80 -0
  5. package/deploy/detector/tests/test_registry.py +18 -0
  6. package/deploy/detector/tests/test_server.py +3 -1
  7. package/deploy/detector/tests/test_version_stamp.py +4 -1
  8. package/deploy/detector/trillboards_detector/_version.py +2 -2
  9. package/deploy/detector/trillboards_detector/cli.py +3 -0
  10. package/deploy/detector/trillboards_detector/detections.py +7 -0
  11. package/deploy/detector/trillboards_detector/errors.py +4 -0
  12. package/deploy/detector/trillboards_detector/execution.py +109 -0
  13. package/deploy/detector/trillboards_detector/loader.py +6 -3
  14. package/deploy/detector/trillboards_detector/registry.py +27 -5
  15. package/deploy/detector/trillboards_detector/server.py +29 -2
  16. package/deploy/detector/trillboards_detector/session.py +15 -3
  17. package/deploy/litertlm/test_trillboards_litertlm_shim.py +81 -0
  18. package/deploy/litertlm/test_verify_model_proof.py +30 -0
  19. package/deploy/litertlm/trillboards_litertlm_shim.py +150 -1
  20. package/deploy/litertlm/verify_model_proof.py +30 -0
  21. package/deploy/macos/build-macos-pkg.sh +10 -10
  22. package/deploy/macos/scripts/setup-detector.sh +2 -2
  23. package/deploy/macos/scripts/setup-litertlm.sh +66 -30
  24. package/deploy/macos/test-setup-litertlm-reinstall.sh +57 -4
  25. package/deploy/systemd/setup-detector.sh +2 -2
  26. package/deploy/systemd/setup-litertlm.sh +51 -27
  27. package/deploy/windows/build-windows.ps1 +10 -6
  28. package/deploy/windows/bundle-windows-installer.ps1 +3 -3
  29. package/deploy/windows/e2e/test-local-sense.ps1 +6 -5
  30. package/deploy/windows/install-update.ps1 +52 -9
  31. package/deploy/windows/set-executable-icon.ps1 +24 -5
  32. package/deploy/windows/setup-detector.ps1 +142 -4
  33. package/deploy/windows/setup-litertlm.ps1 +53 -10
  34. package/dist/AudienceAnalyzeClient.d.ts +10 -0
  35. package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
  36. package/dist/AudienceAnalyzeClient.js +5 -4
  37. package/dist/AudienceAnalyzeClient.js.map +1 -1
  38. package/dist/CloudSensingManager.d.ts +38 -1
  39. package/dist/CloudSensingManager.d.ts.map +1 -1
  40. package/dist/CloudSensingManager.js +403 -25
  41. package/dist/CloudSensingManager.js.map +1 -1
  42. package/dist/DetectorFieldProducer.d.ts +5 -1
  43. package/dist/DetectorFieldProducer.d.ts.map +1 -1
  44. package/dist/DetectorFieldProducer.js +8 -1
  45. package/dist/DetectorFieldProducer.js.map +1 -1
  46. package/dist/DurableVlmCandidateSpool.d.ts +83 -2
  47. package/dist/DurableVlmCandidateSpool.d.ts.map +1 -1
  48. package/dist/DurableVlmCandidateSpool.js +596 -30
  49. package/dist/DurableVlmCandidateSpool.js.map +1 -1
  50. package/dist/EdgeAgent.js +1 -1
  51. package/dist/FrameGroupingShadow.d.ts +51 -0
  52. package/dist/FrameGroupingShadow.d.ts.map +1 -0
  53. package/dist/FrameGroupingShadow.js +158 -0
  54. package/dist/FrameGroupingShadow.js.map +1 -0
  55. package/dist/ImageClassifierFieldProducer.d.ts +36 -0
  56. package/dist/ImageClassifierFieldProducer.d.ts.map +1 -0
  57. package/dist/ImageClassifierFieldProducer.js +150 -0
  58. package/dist/ImageClassifierFieldProducer.js.map +1 -0
  59. package/dist/LiteRtVlmProvider.d.ts +5 -0
  60. package/dist/LiteRtVlmProvider.d.ts.map +1 -1
  61. package/dist/LiteRtVlmProvider.js +72 -7
  62. package/dist/LiteRtVlmProvider.js.map +1 -1
  63. package/dist/LocalDetectorClient.d.ts +6 -0
  64. package/dist/LocalDetectorClient.d.ts.map +1 -1
  65. package/dist/LocalDetectorClient.js +8 -0
  66. package/dist/LocalDetectorClient.js.map +1 -1
  67. package/dist/OrderedFrameReview.d.ts +57 -0
  68. package/dist/OrderedFrameReview.d.ts.map +1 -0
  69. package/dist/OrderedFrameReview.js +121 -0
  70. package/dist/OrderedFrameReview.js.map +1 -0
  71. package/dist/OrderedReviewClient.d.ts +38 -0
  72. package/dist/OrderedReviewClient.d.ts.map +1 -0
  73. package/dist/OrderedReviewClient.js +121 -0
  74. package/dist/OrderedReviewClient.js.map +1 -0
  75. package/dist/OrderedSequenceStore.d.ts +69 -0
  76. package/dist/OrderedSequenceStore.d.ts.map +1 -0
  77. package/dist/OrderedSequenceStore.js +257 -0
  78. package/dist/OrderedSequenceStore.js.map +1 -0
  79. package/dist/ProfileReviewWork.d.ts +68 -0
  80. package/dist/ProfileReviewWork.d.ts.map +1 -0
  81. package/dist/ProfileReviewWork.js +150 -0
  82. package/dist/ProfileReviewWork.js.map +1 -0
  83. package/dist/RetainedFieldContract.d.ts +21 -0
  84. package/dist/RetainedFieldContract.d.ts.map +1 -0
  85. package/dist/RetainedFieldContract.js +92 -0
  86. package/dist/RetainedFieldContract.js.map +1 -0
  87. package/dist/ReviewModelUse.d.ts +7 -0
  88. package/dist/ReviewModelUse.d.ts.map +1 -0
  89. package/dist/ReviewModelUse.js +30 -0
  90. package/dist/ReviewModelUse.js.map +1 -0
  91. package/dist/ReviewPriority.d.ts +12 -0
  92. package/dist/ReviewPriority.d.ts.map +1 -0
  93. package/dist/ReviewPriority.js +45 -0
  94. package/dist/ReviewPriority.js.map +1 -0
  95. package/dist/RuntimeModelSelection.d.ts +10 -0
  96. package/dist/RuntimeModelSelection.d.ts.map +1 -0
  97. package/dist/RuntimeModelSelection.js +58 -0
  98. package/dist/RuntimeModelSelection.js.map +1 -0
  99. package/dist/SceneChangeDetector.d.ts +1 -1
  100. package/dist/SceneChangeDetector.d.ts.map +1 -1
  101. package/dist/SceneChangeDetector.js +18 -6
  102. package/dist/SceneChangeDetector.js.map +1 -1
  103. package/dist/ScopedVlmReview.d.ts +76 -0
  104. package/dist/ScopedVlmReview.d.ts.map +1 -0
  105. package/dist/ScopedVlmReview.js +267 -0
  106. package/dist/ScopedVlmReview.js.map +1 -0
  107. package/dist/SensingProfileClient.d.ts +50 -0
  108. package/dist/SensingProfileClient.d.ts.map +1 -1
  109. package/dist/SensingProfileClient.js +58 -2
  110. package/dist/SensingProfileClient.js.map +1 -1
  111. package/dist/TemporalReviewClient.d.ts +43 -0
  112. package/dist/TemporalReviewClient.d.ts.map +1 -0
  113. package/dist/TemporalReviewClient.js +117 -0
  114. package/dist/TemporalReviewClient.js.map +1 -0
  115. package/dist/TemporalReviewJournal.d.ts +91 -0
  116. package/dist/TemporalReviewJournal.d.ts.map +1 -0
  117. package/dist/TemporalReviewJournal.js +337 -0
  118. package/dist/TemporalReviewJournal.js.map +1 -0
  119. package/dist/UrgentReviewTriage.d.ts +35 -0
  120. package/dist/UrgentReviewTriage.d.ts.map +1 -0
  121. package/dist/UrgentReviewTriage.js +52 -0
  122. package/dist/UrgentReviewTriage.js.map +1 -0
  123. package/dist/VideoSegmentUploader.d.ts +293 -0
  124. package/dist/VideoSegmentUploader.d.ts.map +1 -0
  125. package/dist/VideoSegmentUploader.js +1002 -0
  126. package/dist/VideoSegmentUploader.js.map +1 -0
  127. package/dist/VlmCandidateBuffer.d.ts +19 -0
  128. package/dist/VlmCandidateBuffer.d.ts.map +1 -1
  129. package/dist/VlmCandidateBuffer.js.map +1 -1
  130. package/dist/autoSense.d.ts +2 -2
  131. package/dist/autoSense.d.ts.map +1 -1
  132. package/dist/autoSense.js +16 -11
  133. package/dist/autoSense.js.map +1 -1
  134. package/dist/cli.js +1 -1
  135. package/dist/cli.js.map +1 -1
  136. package/dist/config.d.ts +2 -0
  137. package/dist/config.d.ts.map +1 -1
  138. package/dist/config.js.map +1 -1
  139. package/dist/continuousReview.d.ts +71 -0
  140. package/dist/continuousReview.d.ts.map +1 -0
  141. package/dist/continuousReview.js +53 -0
  142. package/dist/continuousReview.js.map +1 -0
  143. package/dist/detectorCountReview.d.ts +9 -0
  144. package/dist/detectorCountReview.d.ts.map +1 -0
  145. package/dist/detectorCountReview.js +79 -0
  146. package/dist/detectorCountReview.js.map +1 -0
  147. package/dist/diagnose.d.ts +1 -1
  148. package/dist/diagnose.js +1 -1
  149. package/dist/installerOnboardingMode.d.ts.map +1 -1
  150. package/dist/installerOnboardingMode.js +5 -3
  151. package/dist/installerOnboardingMode.js.map +1 -1
  152. package/dist/localInferenceSchema.d.ts +8 -0
  153. package/dist/localInferenceSchema.d.ts.map +1 -1
  154. package/dist/localInferenceSchema.js +3 -3
  155. package/dist/localInferenceSchema.js.map +1 -1
  156. package/dist/localSenseE2eHarness.d.ts +12 -0
  157. package/dist/localSenseE2eHarness.d.ts.map +1 -1
  158. package/dist/localSenseE2eHarness.js +77 -4
  159. package/dist/localSenseE2eHarness.js.map +1 -1
  160. package/dist/localSensing.d.ts +91 -18
  161. package/dist/localSensing.d.ts.map +1 -1
  162. package/dist/localSensing.js +678 -153
  163. package/dist/localSensing.js.map +1 -1
  164. package/dist/mixedScopedCounts.d.ts +17 -0
  165. package/dist/mixedScopedCounts.d.ts.map +1 -0
  166. package/dist/mixedScopedCounts.js +90 -0
  167. package/dist/mixedScopedCounts.js.map +1 -0
  168. package/dist/sensingCatchRate.d.ts +9 -5
  169. package/dist/sensingCatchRate.d.ts.map +1 -1
  170. package/dist/sensingCatchRate.js +10 -6
  171. package/dist/sensingCatchRate.js.map +1 -1
  172. package/dist/sensingRunMode.d.ts +5 -0
  173. package/dist/sensingRunMode.d.ts.map +1 -1
  174. package/dist/sensingRunMode.js +56 -0
  175. package/dist/sensingRunMode.js.map +1 -1
  176. package/package.json +7 -4
  177. package/retained/ArchiveLifecycle.cjs +79 -0
  178. package/retained/ModelStageScheduler.cjs +66 -0
  179. package/retained/ProfileAuthorityClient.cjs +88 -0
  180. package/retained/RetainedCaptureClient.cjs +164 -0
  181. package/retained/WaitRecheckCaptureClient.cjs +109 -0
  182. package/retained/__tests__/archive-lifecycle.test.cjs +117 -0
  183. package/retained/__tests__/runtime.test.cjs +384 -0
  184. package/retained/alert-rule-policy.cjs +37 -0
  185. package/retained/manager.cjs +133 -0
  186. package/retained/pilot-profile-client.cjs +82 -0
  187. package/retained/temporal-grouping.cjs +78 -0
  188. package/retained/website-api-capability.cjs +122 -0
@@ -1,16 +1,19 @@
1
1
  <#
2
2
  .SYNOPSIS
3
- Replaces every application icon group in a Windows executable.
3
+ Updates installer icons and optionally declares per-user execution.
4
4
 
5
5
  .DESCRIPTION
6
6
  The customer installer uses the official 7-Zip SFX module, whose generic
7
7
  icon would otherwise become the icon customers see in Explorer. This helper
8
8
  updates that module before the installer payload is appended and signed.
9
+ EnsurePerUserExecution adds an asInvoker manifest to avoid Windows installer
10
+ heuristics requesting elevation for this per-user connector wrapper.
9
11
  #>
10
12
  [CmdletBinding()]
11
13
  param(
12
14
  [Parameter(Mandatory = $true)][string]$ExecutablePath,
13
- [Parameter(Mandatory = $true)][string]$IconPath
15
+ [Parameter(Mandatory = $true)][string]$IconPath,
16
+ [switch]$EnsurePerUserExecution
14
17
  )
15
18
 
16
19
  $ErrorActionPreference = "Stop"
@@ -28,6 +31,7 @@ using System.Collections.Generic;
28
31
  using System.ComponentModel;
29
32
  using System.IO;
30
33
  using System.Runtime.InteropServices;
34
+ using System.Text;
31
35
 
32
36
  namespace SenseAnything.Build
33
37
  {
@@ -140,7 +144,7 @@ namespace SenseAnything.Build
140
144
  IntPtr update,
141
145
  [MarshalAs(UnmanagedType.Bool)] bool discard);
142
146
 
143
- public static void Replace(string executablePath, string iconPath)
147
+ public static void Replace(string executablePath, string iconPath, bool ensurePerUserExecution)
144
148
  {
145
149
  List<IconImage> images = ReadIcon(iconPath);
146
150
  List<ResourceGroup> groups = ReadIconGroups(executablePath);
@@ -210,7 +214,22 @@ namespace SenseAnything.Build
210
214
  }
211
215
  }
212
216
 
213
- Require(EndUpdateResourceW(update, false), "Could not commit the executable icon");
217
+ if (ensurePerUserExecution)
218
+ {
219
+ // The official SFX module has no execution-level manifest.
220
+ // Declare the same per-user level as the inner NSIS package;
221
+ // do not let installer heuristics request elevation instead.
222
+ byte[] manifest = Encoding.UTF8.GetBytes(@"<?xml version=""1.0"" encoding=""UTF-8""?>
223
+ <assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">
224
+ <assemblyIdentity name=""Trillboards.SenseAnything.Connector"" version=""1.0.0.0"" type=""win32""/>
225
+ <trustInfo xmlns=""urn:schemas-microsoft-com:asm.v3""><security><requestedPrivileges>
226
+ <requestedExecutionLevel level=""asInvoker"" uiAccess=""false""/>
227
+ </requestedPrivileges></security></trustInfo>
228
+ </assembly>");
229
+ Require(UpdateResourceById(update, MakeResource(24), MakeResource(1), 0,
230
+ manifest, (uint)manifest.Length), "Could not write the per-user execution manifest");
231
+ }
232
+ Require(EndUpdateResourceW(update, false), "Could not commit the executable resources");
214
233
  committed = true;
215
234
  }
216
235
  finally
@@ -350,5 +369,5 @@ namespace SenseAnything.Build
350
369
  }
351
370
  '@
352
371
 
353
- [SenseAnything.Build.ExecutableIcon]::Replace($ExecutablePath, $IconPath)
372
+ [SenseAnything.Build.ExecutableIcon]::Replace($ExecutablePath, $IconPath, $EnsurePerUserExecution.IsPresent)
354
373
  Write-Host "[icon] applied Sense Anything icon to $ExecutablePath" -ForegroundColor Green
@@ -42,7 +42,8 @@
42
42
  param(
43
43
  [string]$Port = "9380",
44
44
  [string]$DetectorPython = $(if ($env:TRILLBOARDS_DETECTOR_PYTHON) { $env:TRILLBOARDS_DETECTOR_PYTHON } else { "3.12" }),
45
- [string]$SourcePath = ""
45
+ [string]$SourcePath = "",
46
+ [ValidateSet('auto','cpu')][string]$Runtime = 'auto'
46
47
  )
47
48
 
48
49
  $ErrorActionPreference = "Continue"
@@ -70,6 +71,107 @@ function Resolve-DetectorSource {
70
71
  return $null
71
72
  }
72
73
 
74
+ # uv supplies Python, not the Windows C++ runtime used by the pinned ONNX wheel.
75
+ # A fresh Windows Server install has none of these DLLs: an executable on disk
76
+ # and a matching package version do not prove the detector can even import.
77
+ function Ensure-DetectorNativeRuntime {
78
+ $required = @('vcruntime140.dll','vcruntime140_1.dll','msvcp140.dll')
79
+ $missing = @($required | Where-Object { -not (Test-Path -LiteralPath (Join-Path $env:WINDIR ('System32\' + $_))) })
80
+ if (-not $missing.Count) { return }
81
+ Log 'Installing the missing Microsoft x64 C++ runtime required by the local detector'
82
+ $runtimeDirectory = [IO.Path]::GetFullPath((Join-Path $env:TEMP ('trillboards-detector-vc-' + [Guid]::NewGuid().ToString('N'))))
83
+ $runtimeInstaller = Join-Path $runtimeDirectory 'vc_redist.x64.exe'
84
+ New-Item -ItemType Directory -Path $runtimeDirectory -ErrorAction Stop | Out-Null
85
+ try {
86
+ # Official vendor permalink; never execute an unsigned or different signer.
87
+ Invoke-WebRequest -UseBasicParsing -Uri 'https://aka.ms/vc14/vc_redist.x64.exe' -OutFile $runtimeInstaller -TimeoutSec 120 -ErrorAction Stop
88
+ $signature = Get-AuthenticodeSignature -LiteralPath $runtimeInstaller -ErrorAction Stop
89
+ if ($signature.Status -ne 'Valid' -or -not $signature.SignerCertificate -or
90
+ $signature.SignerCertificate.Subject -notmatch '(^|,\s*)CN=Microsoft Corporation(,|$)') {
91
+ throw 'Microsoft C++ runtime signature verification failed; nothing was executed'
92
+ }
93
+ $runtimeProcess = Start-Process -FilePath $runtimeInstaller -ArgumentList @('/install','/quiet','/norestart') -WindowStyle Hidden -PassThru -ErrorAction Stop
94
+ $null = $runtimeProcess.Handle
95
+ if (-not $runtimeProcess.WaitForExit(180000)) {
96
+ Stop-Process -Id $runtimeProcess.Id -Force -ErrorAction SilentlyContinue
97
+ throw 'Microsoft C++ runtime installation timed out'
98
+ }
99
+ if ($runtimeProcess.ExitCode -notin @(0,1638,3010)) {
100
+ throw ('Microsoft C++ runtime installer exit ' + $runtimeProcess.ExitCode + '; an administrator may need to retry Local AI setup')
101
+ }
102
+ Log ('Microsoft C++ runtime installer completed (exit ' + $runtimeProcess.ExitCode + ')')
103
+ } finally {
104
+ # Only our one downloaded file and freshly created, now-empty directory.
105
+ # Never recursively remove a user temp root or a directory from a download.
106
+ Remove-Item -LiteralPath $runtimeInstaller -Force -ErrorAction SilentlyContinue
107
+ Remove-Item -LiteralPath $runtimeDirectory -ErrorAction SilentlyContinue
108
+ }
109
+ }
110
+
111
+ # Installer verification and the connector's first-run repair can both reach
112
+ # this provisioner. Serialize across this user's Windows sessions, and stop the
113
+ # owned service BEFORE uv replaces its venv: a live Python holds Scripts open,
114
+ # while uv may already have removed site-packages before reporting access denied.
115
+ $detectorIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
116
+ $detectorUserSid = $detectorIdentity.User.Value
117
+ $detectorSetupMutex = New-Object System.Threading.Mutex($false, ("Global\TrillboardsDetectorSetup-" + $detectorUserSid))
118
+ $haveDetectorSetupMutex = $false
119
+ try {
120
+ $haveDetectorSetupMutex = $detectorSetupMutex.WaitOne(0)
121
+ } catch [System.Threading.AbandonedMutexException] { $haveDetectorSetupMutex = $true }
122
+ if (-not $haveDetectorSetupMutex) {
123
+ Log "Detector provisioning is already running; waiting for this user's repair"
124
+ try { $haveDetectorSetupMutex = $detectorSetupMutex.WaitOne(600000) }
125
+ catch [System.Threading.AbandonedMutexException] { $haveDetectorSetupMutex = $true }
126
+ }
127
+ if (-not $haveDetectorSetupMutex) {
128
+ Log "ERROR: detector provisioning did not finish; no concurrent venv replacement was attempted"
129
+ $detectorSetupMutex.Dispose()
130
+ exit 0
131
+ }
132
+ $pausedDetectorTask = $null
133
+ $pausedDetectorWasEnabled = $false
134
+ $detectorTaskReplaced = $false
135
+
136
+ function Stop-OwnedDetectorForRepair {
137
+ $ownLauncher = [IO.Path]::GetFullPath((Join-Path $LocalBin 'trillboards-detector.exe'))
138
+ $ownToolRoot = [IO.Path]::GetFullPath((Join-Path $env:APPDATA 'uv\tools\trillboards-detector')).TrimEnd('\') + '\'
139
+ $task = Get-ScheduledTask -TaskName 'TrillboardsDetector' -ErrorAction SilentlyContinue
140
+ if ($task) {
141
+ $actions = @($task.Actions)
142
+ if ($actions.Count -ne 1 -or [IO.Path]::GetFullPath($actions[0].Execute) -ine $ownLauncher) {
143
+ throw 'The detector task is not owned by this user installation; refusing to stop or replace it'
144
+ }
145
+ $taskSid = (New-Object System.Security.Principal.NTAccount($task.Principal.UserId)).Translate([System.Security.Principal.SecurityIdentifier]).Value
146
+ if ($taskSid -ne $detectorUserSid) { throw 'The detector task principal belongs to another user' }
147
+ if (-not $script:pausedDetectorTask) {
148
+ $script:pausedDetectorTask = $task
149
+ $script:pausedDetectorWasEnabled = [bool]$task.Settings.Enabled
150
+ }
151
+ Disable-ScheduledTask -TaskName $task.TaskName -TaskPath $task.TaskPath -ErrorAction Stop | Out-Null
152
+ Stop-ScheduledTask -TaskName $task.TaskName -TaskPath $task.TaskPath -ErrorAction Stop
153
+ }
154
+ # Task Scheduler may leave a child after stopping its launcher. Scope by this
155
+ # user's exact tool paths AND SID, never by all Python processes or a port.
156
+ foreach ($process in @(Get-CimInstance Win32_Process -ErrorAction Stop)) {
157
+ $exe = $process.ExecutablePath
158
+ if (-not $exe -or ($exe -ine $ownLauncher -and -not $exe.StartsWith($ownToolRoot, [StringComparison]::OrdinalIgnoreCase))) { continue }
159
+ try { $owner = Invoke-CimMethod -InputObject $process -MethodName GetOwnerSid -ErrorAction Stop } catch {
160
+ # Stopping the launcher can also finish a child from this CIM snapshot.
161
+ # Only an independently confirmed absent PID is already stopped; a live
162
+ # process with an unverifiable owner remains a visible repair failure.
163
+ if (-not (Get-CimInstance Win32_Process -Filter ("ProcessId=" + $process.ProcessId) -ErrorAction Stop)) { continue }
164
+ throw
165
+ }
166
+ if ($owner.ReturnValue -ne 0 -or $owner.Sid -ne $detectorUserSid) { throw 'Cannot verify detector process ownership' }
167
+ Log "stopping this user's detector process before venv repair (pid $($process.ProcessId))"
168
+ Stop-Process -Id $process.ProcessId -Force -ErrorAction SilentlyContinue
169
+ $remaining = Get-Process -Id $process.ProcessId -ErrorAction SilentlyContinue
170
+ if ($remaining -and -not $remaining.WaitForExit(10000)) { throw 'Owned detector process did not stop before venv repair' }
171
+ }
172
+ }
173
+
174
+ try {
73
175
  Log "starting detector provisioning"
74
176
 
75
177
  # --- Enterprise TLS + proxy for uv -------------------------------------------
@@ -95,6 +197,10 @@ if (-not ($env:HTTPS_PROXY -or $env:https_proxy -or $env:ALL_PROXY)) {
95
197
  }
96
198
 
97
199
  # --- 1. uv -------------------------------------------------------------------
200
+ try { Ensure-DetectorNativeRuntime } catch {
201
+ Log "ERROR: detector native runtime unavailable: $($_.Exception.Message)"
202
+ exit 0
203
+ }
98
204
  $env:PATH = "$LocalBin;$env:PATH"
99
205
  $uvCmd = Get-Command uv -ErrorAction SilentlyContinue
100
206
  if (-not $uvCmd) {
@@ -144,8 +250,31 @@ if (-not $source) {
144
250
  # re-downloads the pinned ~250 MB onnxruntime wheel on a shop PC every time, for
145
251
  # nothing - an exact pin cannot resolve to different bytes.
146
252
  Log "installing/repairing trillboards-detector from $source with uv-managed Python $DetectorPython"
147
- & $uvCmd.Source tool install --python $DetectorPython --managed-python --force --refresh-package trillboards-detector "$source" *>> $LogPath
148
- if ($LASTEXITCODE -ne 0) {
253
+ try { Stop-OwnedDetectorForRepair } catch {
254
+ Log "ERROR: detector service could not be safely stopped before repair: $($_.Exception.Message)"
255
+ exit 0
256
+ }
257
+ $runtimeExtra = 'cpu'
258
+ if ($Runtime -eq 'auto') {
259
+ try {
260
+ $nvidia = @(Get-CimInstance Win32_VideoController -ErrorAction Stop | Where-Object {
261
+ $_.PNPDeviceID -match 'VEN_10DE' -or $_.AdapterCompatibility -match 'NVIDIA'
262
+ })
263
+ if ($nvidia.Count) { $runtimeExtra = 'cuda' }
264
+ } catch { Log "WARN: GPU inventory unavailable; selecting CPU: $($_.Exception.Message)" }
265
+ }
266
+ Log "Selected detector runtime: $runtimeExtra (NVIDIA CUDA only; Intel integrated graphics retain CPU)"
267
+ function Install-DetectorRuntime {
268
+ & $uvCmd.Source tool install --python $DetectorPython --managed-python --force --refresh-package trillboards-detector ($source + '[' + $script:runtimeExtra + ']') *>> $LogPath
269
+ if ($LASTEXITCODE -ne 0 -and $script:runtimeExtra -eq 'cuda') {
270
+ Log 'WARN: CUDA runtime installation failed; retrying the same detector with CPU dependencies'
271
+ $script:runtimeExtra = 'cpu'
272
+ & $uvCmd.Source tool install --python $DetectorPython --managed-python --force --refresh-package trillboards-detector ($source + '[cpu]') *>> $LogPath
273
+ }
274
+ return $LASTEXITCODE
275
+ }
276
+ $runtimeInstallExit = Install-DetectorRuntime
277
+ if ($runtimeInstallExit -ne 0) {
149
278
  Log "ERROR: trillboards-detector install failed; the cascade stays off (the VLM still runs every frame)"
150
279
  exit 0
151
280
  }
@@ -194,8 +323,9 @@ if (-not $wantVersion) {
194
323
  # mismatch here means uv served something other than the staged directory, so
195
324
  # asking it again the same way is not a repair.
196
325
  Log "WARN: the installed detector reports '$haveVersion' but the staged package is '$wantVersion' - reinstalling from scratch"
326
+ Stop-OwnedDetectorForRepair
197
327
  & $uvCmd.Source tool uninstall trillboards-detector *>> $LogPath
198
- & $uvCmd.Source tool install --python $DetectorPython --managed-python --force --refresh-package trillboards-detector "$source" *>> $LogPath
328
+ $runtimeInstallExit = Install-DetectorRuntime
199
329
  $haveVersion = Get-InstalledDetectorVersion -Exe $detectorPath
200
330
  if ($haveVersion -eq $wantVersion) {
201
331
  Log "trillboards-detector repaired to $haveVersion"
@@ -275,6 +405,7 @@ if ($LASTEXITCODE -ne 0) {
275
405
  Log "ERROR: the detector Scheduled Task could not be registered; the cascade stays off"
276
406
  exit 0
277
407
  }
408
+ $detectorTaskReplaced = $true
278
409
 
279
410
  # --- 4. Does it ANSWER? ------------------------------------------------------
280
411
  # Not "is it ready". Invoke-WebRequest THROWS on a 503, so the status code is
@@ -297,3 +428,10 @@ switch ($code) {
297
428
 
298
429
  Log "done"
299
430
  exit 0
431
+ } finally {
432
+ if ($pausedDetectorTask -and -not $detectorTaskReplaced -and $pausedDetectorWasEnabled) {
433
+ Enable-ScheduledTask -TaskName $pausedDetectorTask.TaskName -TaskPath $pausedDetectorTask.TaskPath -ErrorAction SilentlyContinue | Out-Null
434
+ }
435
+ if ($haveDetectorSetupMutex) { $detectorSetupMutex.ReleaseMutex() }
436
+ $detectorSetupMutex.Dispose()
437
+ }
@@ -20,7 +20,7 @@ param(
20
20
  [string]$LitertLmVersion = $(if ($env:LITERT_LM_VERSION) { $env:LITERT_LM_VERSION } else { "0.16.0" }),
21
21
  [string]$ModelVersion = $(if ($env:GEMMA_VLM_VERSION) { $env:GEMMA_VLM_VERSION } else { "1.0.0" }),
22
22
  [string]$BundledModelPath = "",
23
- [string]$BundledModelSha256 = "181938105e0eefd105961417e8da75903eacda102c4fce9ce90f50b97139a63c",
23
+ [string]$BundledModelSha256 = "ab7838cdfc8f77e54d8ca45eadceb20452d9f01e4bfade03e5dce27911b27e42",
24
24
  [switch]$RequireBundledModel,
25
25
  [switch]$AllowModelDownload,
26
26
  [string]$ProgressPath = "",
@@ -34,7 +34,7 @@ $LogDir = Join-Path $env:LOCALAPPDATA "Trillboards\logs"
34
34
  $LitertDir = if ($env:LITERT_LM_DIR) { $env:LITERT_LM_DIR } else { Join-Path $env:USERPROFILE ".litert-lm" }
35
35
  $StoreDir = Join-Path (Join-Path $LitertDir "models") $ModelId
36
36
  $VersionMarker = Join-Path $StoreDir "trillboards-bundled-version.json"
37
- $ExpectedModelBytes = [long](2.4 * 1GB)
37
+ $ExpectedModelBytes = [long]2583085056
38
38
  New-Item -ItemType Directory -Force -Path $LogDir | Out-Null
39
39
  $LogPath = Join-Path $LogDir "litertlm-setup.log"
40
40
 
@@ -241,8 +241,14 @@ function Test-LitertlmVision {
241
241
  } | ConvertTo-Json -Depth 8
242
242
  $resp = Invoke-WebRequest -Uri "http://127.0.0.1:$Port/v1/chat/completions" `
243
243
  -Method POST -ContentType "application/json" -Body $body `
244
+ -Headers @{ "X-Trillboards-Model-Sha256" = $BundledModelSha256 } `
244
245
  -TimeoutSec 180 -UseBasicParsing
245
- return ($resp.StatusCode -eq 200)
246
+ if ($resp.StatusCode -ne 200) { return $false }
247
+ $proof = ($resp.Content | ConvertFrom-Json).runtimeModel
248
+ $runtimeMatches = $proof.runtimeModelId -eq $InferenceModel `
249
+ -or ($InferenceModel -eq $ModelId -and $proof.runtimeModelId -eq "$ModelId,cpu")
250
+ return ($null -ne $proof -and $proof.version -eq 1 -and $proof.format -eq "litert-lm" `
251
+ -and $proof.sha256 -eq $BundledModelSha256 -and $runtimeMatches)
246
252
  } catch {
247
253
  Log "vision probe for '$InferenceModel' did not answer: $_"
248
254
  return $false
@@ -292,10 +298,41 @@ function Fail-LocalAi([string]$Message) {
292
298
  }
293
299
 
294
300
  function Test-LitertLmModel([string]$ExecutablePath) {
295
- try { return ((& $ExecutablePath list 2>$null | Out-String) -match [regex]::Escape($ModelId)) }
301
+ try {
302
+ if ((& $ExecutablePath list 2>$null | Out-String) -notmatch [regex]::Escape($ModelId)) { return $false }
303
+ $modelFile = Join-Path $StoreDir "model.litertlm"
304
+ if (-not (Test-Path -LiteralPath $modelFile -PathType Leaf)) { return $false }
305
+ return ((Get-FileHash -LiteralPath $modelFile -Algorithm SHA256).Hash.ToLowerInvariant() -eq $BundledModelSha256)
306
+ }
296
307
  catch { return $false }
297
308
  }
298
309
 
310
+ function Import-VerifiedModel([string]$SourcePath, [string]$ExecutablePath) {
311
+ if ((Get-FileHash -LiteralPath $SourcePath -Algorithm SHA256).Hash.ToLowerInvariant() -ne $BundledModelSha256) {
312
+ Log "refusing to import an unverified local AI artifact"
313
+ return $false
314
+ }
315
+ $modelFile = Join-Path $StoreDir "model.litertlm"
316
+ if (Test-Path -LiteralPath $modelFile -PathType Leaf) {
317
+ $previousSha = (Get-FileHash -LiteralPath $modelFile -Algorithm SHA256).Hash.ToLowerInvariant()
318
+ if ($previousSha -ne $BundledModelSha256) {
319
+ # Keep the previous bytes for rollback; never delete the operator's model
320
+ # or treat an existing model ID as proof that it is the selected artifact.
321
+ $backupDir = Join-Path $StoreDir "rollback"
322
+ New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
323
+ $backupPath = Join-Path $backupDir "$previousSha.litertlm"
324
+ if (-not (Test-Path -LiteralPath $backupPath)) { Copy-Item -LiteralPath $modelFile -Destination $backupPath }
325
+ if ((Get-FileHash -LiteralPath $backupPath -Algorithm SHA256).Hash.ToLowerInvariant() -ne $previousSha) {
326
+ Log "previous model rollback copy could not be verified"
327
+ return $false
328
+ }
329
+ Stop-ScheduledTask -TaskName "TrillboardsLiteRtLm" -ErrorAction SilentlyContinue
330
+ }
331
+ }
332
+ & $ExecutablePath import $SourcePath $ModelId *>> $LogPath
333
+ return (($LASTEXITCODE -eq 0) -and (Test-LitertLmModel $ExecutablePath))
334
+ }
335
+
299
336
  if ($SmokeTest) {
300
337
  if ([string]::IsNullOrWhiteSpace($ProgressPath)) { throw "SmokeTest requires ProgressPath" }
301
338
  Write-SetupProgress -Stage "local_ai" -Title "Installing local AI" -Message "Smoke test" -Phase "installing_model" -Percent 62 -TotalBytes $ExpectedModelBytes
@@ -323,7 +360,7 @@ if (-not $haveSetupMutex) {
323
360
  exit 0
324
361
  }
325
362
  for ($attempt = 0; $attempt -lt 600 -and -not $haveSetupMutex; $attempt++) {
326
- if (Test-ServeHealthy) {
363
+ if ((Test-ServeHealthy) -and (Test-LitertlmVision -InferenceModel "$ModelId,gpu")) {
327
364
  Complete-Setup
328
365
  $setupMutex.Dispose()
329
366
  exit 0
@@ -608,8 +645,7 @@ if ($haveModel) {
608
645
  Log "model $ModelId already imported; skipping import"
609
646
  } elseif ($bundledModelVerified) {
610
647
  Write-SetupProgress -Stage "local_ai" -Title "Installing local AI" -Message "Installing the AI model included with Trillboards. Cloud inference remains off." -Phase "installing_model" -Percent 25 -TotalBytes (Get-Item -LiteralPath $BundledModelPath).Length
611
- & $litertlmPath import $BundledModelPath $ModelId *>> $LogPath
612
- $haveModel = (($LASTEXITCODE -eq 0) -and (Test-LitertLmModel $litertlmPath))
648
+ $haveModel = Import-VerifiedModel $BundledModelPath $litertlmPath
613
649
  if ($haveModel) {
614
650
  Log "model imported from the installer bundle"
615
651
  } else {
@@ -622,19 +658,23 @@ if ($haveModel) {
622
658
  } else {
623
659
  $maxAttempts = 3
624
660
  for ($attempt = 1; $attempt -le $maxAttempts -and -not $haveModel; $attempt++) {
625
- Log "importing $ModelId from $HfRepo (about 2.4 GB) [attempt $attempt/$maxAttempts]"
661
+ Log "importing the verified $ModelId revision (about 2.4 GB) [attempt $attempt/$maxAttempts]"
626
662
  Write-DownloadProgress
627
663
  $stdoutPath = Join-Path $LogDir "litertlm-import-$PID.out.log"
628
664
  $stderrPath = Join-Path $LogDir "litertlm-import-$PID.err.log"
629
665
  try {
630
- $process = Start-Process -FilePath $litertlmPath -ArgumentList @("import", "--from-huggingface-repo", $HfRepo, $ModelId) -NoNewWindow -RedirectStandardOutput $stdoutPath -RedirectStandardError $stderrPath -PassThru
666
+ $downloadPath = Join-Path $StoreDir "approved-model.tmp"
667
+ New-Item -ItemType Directory -Force -Path $StoreDir | Out-Null
668
+ $modelUrl = "https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/84b6978eff6e4eea02825bc2ee4ea48579f13109/gemma-4-E2B-it.litertlm"
669
+ $process = Start-Process -FilePath "curl.exe" -ArgumentList @("--fail", "--location", "--output", ('"' + $downloadPath + '"'), $modelUrl) -WindowStyle Hidden -RedirectStandardOutput $stdoutPath -RedirectStandardError $stderrPath -PassThru
631
670
  while (-not $process.HasExited) {
632
671
  Write-DownloadProgress
633
672
  Start-Sleep -Seconds 2
634
673
  $process.Refresh()
635
674
  }
636
675
  $process.WaitForExit()
637
- Log "model import exited with code $($process.ExitCode)"
676
+ Log "model download exited with code $($process.ExitCode)"
677
+ if ($process.ExitCode -eq 0) { $haveModel = Import-VerifiedModel $downloadPath $litertlmPath }
638
678
  $process.Dispose()
639
679
  } catch {
640
680
  Log "WARN: model import process failed: $_"
@@ -647,6 +687,9 @@ if ($haveModel) {
647
687
  }
648
688
  $haveModel = Test-LitertLmModel $litertlmPath
649
689
  if ($haveModel) {
690
+ if (Test-Path -LiteralPath $downloadPath -PathType Leaf) {
691
+ Remove-Item -LiteralPath $downloadPath -Force
692
+ }
650
693
  Log "model imported"
651
694
  } elseif ($attempt -lt $maxAttempts) {
652
695
  $backoff = 5 * $attempt
@@ -67,6 +67,16 @@ export interface AudienceAnalyzeRequest extends FrameDimensions {
67
67
  evidenceId?: string;
68
68
  /** SHA-256 of the exact JPEG bytes supplied in `jpeg`. */
69
69
  evidenceSha256?: string;
70
+ reviewWindowMs?: number;
71
+ cachedAnalysis?: Record<string, unknown>;
72
+ reviewContext?: Record<string, unknown>;
73
+ /** Local archive callback; never accepted from a remote payload. */
74
+ resolveTemporalCoverage?: (contract: import('./TemporalReviewJournal').TemporalReviewContract) => import('./TemporalReviewJournal').TemporalCoverage | undefined;
75
+ /** Locally established capture/grouping uncertainty, not a model observation. */
76
+ temporalContinuityBreak?: boolean;
77
+ checkpointAnalysis?: (result: Record<string, unknown>) => void;
78
+ scopedVlmProgress?: import('./ScopedVlmReview').ScopedVlmProgress;
79
+ checkpointScopedReview?: (progress: import('./ScopedVlmReview').ScopedVlmProgress) => void;
70
80
  /** Extra body fields merged into the payload (e.g. per_face_observations). */
71
81
  extra?: Record<string, unknown>;
72
82
  }
@@ -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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"}
@@ -178,10 +178,10 @@ class AudienceAnalyzeClient {
178
178
  const computedEvidenceSha256 = imageBuffer && imageBuffer.length > 0
179
179
  ? (0, crypto_1.createHash)('sha256').update(imageBuffer).digest('hex')
180
180
  : undefined;
181
- if (request.evidenceSha256 && request.evidenceSha256 !== computedEvidenceSha256) {
181
+ if (request.evidenceSha256 && (!/^[a-f0-9]{64}$/.test(request.evidenceSha256) ||
182
+ (computedEvidenceSha256 && request.evidenceSha256 !== computedEvidenceSha256)))
182
183
  throw new Error('analyzePreAnalyzed() evidenceSha256 does not match the evidence JPEG');
183
- }
184
- const evidenceId = computedEvidenceSha256
184
+ const evidenceId = (computedEvidenceSha256 || request.evidenceSha256)
185
185
  ? (request.evidenceId || `ev_${(0, crypto_1.randomUUID)()}`)
186
186
  : undefined;
187
187
  // The resolution the ON-DEVICE model actually saw. Reported here too — an
@@ -242,7 +242,8 @@ class AudienceAnalyzeClient {
242
242
  // Same last-spread override semantics as analyze(); see the note there.
243
243
  ...(request.extra || {}),
244
244
  ...(evidenceId ? { evidenceId } : {}),
245
- ...(computedEvidenceSha256 ? { evidenceSha256: computedEvidenceSha256 } : {}),
245
+ ...((computedEvidenceSha256 || request.evidenceSha256)
246
+ ? { evidenceSha256: computedEvidenceSha256 || request.evidenceSha256 } : {}),
246
247
  };
247
248
  const result = await this.poster(this.endpoint, { method: 'POST', headers: this.authHeaders(), timeoutMs: this.timeoutMs }, JSON.stringify(payload));
248
249
  let parsed = null;
@@ -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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"}
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
+ import { type ContinuousReviewOptions } from './continuousReview';
2
3
  import type { CameraProvider } from '@trillboards/edge-core';
3
4
  import { AudienceAnalyzeClient, type AudienceAnalyzeRequest, type AudienceAnalyzeResponse, type CameraHealthFailureClass, type CameraHealthReport, type HttpPoster } from './AudienceAnalyzeClient';
4
5
  import { type LocalNetworkVerdict } from './localNetworkAccess';
@@ -7,7 +8,7 @@ import type { EdgeAgentConfig, MosaicTile, RecorderIdentity } from './config';
7
8
  import { type VlmAdmissionStats } from './VlmAdmissionGate';
8
9
  import { type AudioSensingOptions } from './attachAudioOnset';
9
10
  import { type MotionGateOptions, type MotionGateReason } from './SceneChangeDetector';
10
- import { type VlmCandidateBufferOptions, type VlmCandidateBufferStats } from './VlmCandidateBuffer';
11
+ import { type VlmCandidate, type VlmCandidateBufferOptions, type VlmCandidateBufferStats } from './VlmCandidateBuffer';
11
12
  import { type DurableVlmCandidateSpoolOptions } from './DurableVlmCandidateSpool';
12
13
  import { DetectorShadowProbe, type DetectorShadowStats } from './DetectorShadowProbe';
13
14
  import { type CascadeGateStats } from './detectorCascadeGate';
@@ -31,6 +32,17 @@ export interface SensingClient {
31
32
  analyze(request: AudienceAnalyzeRequest): Promise<AudienceAnalyzeResponse>;
32
33
  reportCameraHealth?(cameraHealth: CameraHealthReport): Promise<AudienceAnalyzeResponse>;
33
34
  getEndpoint(): string;
35
+ prepareReview?(): Promise<void>;
36
+ /** Website-disarmed feeds keep decoding health frames, not new model work. */
37
+ isReviewActive?(): boolean;
38
+ captureReviewContext?(): Record<string, unknown>;
39
+ /** Exact retained execution route. Clients without this reserve both models. */
40
+ getReviewModelUse?(context: Record<string, unknown> | undefined): import('./ReviewModelUse').ReviewModelUse;
41
+ /** Inference plus durable checkpoint only; implemented by the local client. */
42
+ reviewCandidate?(request: AudienceAnalyzeRequest): Promise<void>;
43
+ /** Explicit local sequence capture: saves originals before ordinary queue admission. */
44
+ retainOrderedCapture?(candidate: VlmCandidate): void;
45
+ pendingOrderedCandidates?(): VlmCandidate[];
34
46
  /**
35
47
  * Frames this client analyzed ON THIS MACHINE (LocalSensingClient only).
36
48
  *
@@ -124,6 +136,8 @@ export interface SensingLoopDeps {
124
136
  audioRtspUrl?: string;
125
137
  }
126
138
  export interface CloudSensingManagerOptions {
139
+ /** Paired API, supplied by local-sensing wiring for explicit pilot delivery only. */
140
+ retainedApiBaseUrl?: string;
127
141
  /** Per-feed capture loops. */
128
142
  loops: SensingLoopDeps[];
129
143
  /**
@@ -291,6 +305,8 @@ export interface CloudSensingManagerOptions {
291
305
  * VlmCandidateBuffer). `enabled: false` restores the pure drop semantics.
292
306
  */
293
307
  candidateBuffer?: VlmCandidateBufferOptions & {
308
+ /** Local opt-in experiment; requires a durable spool and motion LOOK. */
309
+ continuousReview?: ContinuousReviewOptions;
294
310
  /** Default: true whenever the motion cascade is on. */
295
311
  enabled?: boolean;
296
312
  /**
@@ -404,6 +420,16 @@ export declare class CloudSensingManager extends EventEmitter {
404
420
  */
405
421
  private readonly candidates;
406
422
  private readonly candidatePumpIntervalMs;
423
+ private readonly continuousReview;
424
+ private readonly urgentTriageClients;
425
+ private urgentTriageBusy;
426
+ private readonly reviewPriorities;
427
+ private readonly frameGroupers;
428
+ private readonly separateProfileWork;
429
+ private readonly reviewsInFlight;
430
+ private readonly modelReviewsInFlight;
431
+ private readonly uploadsInFlight;
432
+ private deliveryRetryAtMs;
407
433
  private candidatePumpTimer;
408
434
  /**
409
435
  * The detector running in shadow mode. NULL ⇒ nothing is measured and nothing
@@ -698,6 +724,9 @@ export declare class CloudSensingManager extends EventEmitter {
698
724
  writeFailed: number;
699
725
  readFailed: number;
700
726
  deleteFailed: number;
727
+ reviewWindowMs?: number;
728
+ delayed?: number;
729
+ capacityRejected?: number;
701
730
  };
702
731
  /**
703
732
  * WHICH litert-lm delegate the on-device runtime is actually running, and
@@ -1018,6 +1047,7 @@ export declare class CloudSensingManager extends EventEmitter {
1018
1047
  * goes into the bounded hold instead of onto the floor; anything the cascade
1019
1048
  * rejected is dropped exactly as before and is never offered.
1020
1049
  */
1050
+ private lookAndRetain;
1021
1051
  private lookThenAdmit;
1022
1052
  /**
1023
1053
  * ADMIT FIRST, look second — the original order, unchanged, and the only one
@@ -1053,6 +1083,8 @@ export declare class CloudSensingManager extends EventEmitter {
1053
1083
  * must not arm a second chain.
1054
1084
  */
1055
1085
  private scheduleCandidatePump;
1086
+ /** A single CPU detector request can overlap Gemma; capture never awaits it. */
1087
+ private pumpUrgentTriage;
1056
1088
  /**
1057
1089
  * Offer the hold to every slot that is free right now.
1058
1090
  *
@@ -1063,8 +1095,13 @@ export declare class CloudSensingManager extends EventEmitter {
1063
1095
  * capacity.
1064
1096
  */
1065
1097
  private pumpCandidates;
1098
+ private reviewModelUse;
1099
+ private canReviewModels;
1100
+ /** One bounded upload worker, independent of the actual model-call limit. */
1101
+ private pumpDeliveries;
1066
1102
  /** Analyze one held candidate and give the slot back. Never throws. */
1067
1103
  private serveCandidate;
1104
+ private deferCandidate;
1068
1105
  /**
1069
1106
  * Convert a camera frame to JPEG bytes for the POST.
1070
1107
  *