@trillboards/edge-sdk 0.2.138 → 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 (191) 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/TrillboardsSetupApp.m +131 -3
  22. package/deploy/macos/build-macos-pkg.sh +13 -10
  23. package/deploy/macos/scripts/setup-detector.sh +2 -2
  24. package/deploy/macos/scripts/setup-litertlm.sh +66 -30
  25. package/deploy/macos/test-setup-litertlm-reinstall.sh +57 -4
  26. package/deploy/setup-guidance.json +112 -0
  27. package/deploy/systemd/setup-detector.sh +2 -2
  28. package/deploy/systemd/setup-litertlm.sh +51 -27
  29. package/deploy/windows/build-windows.ps1 +11 -6
  30. package/deploy/windows/bundle-windows-installer.ps1 +3 -3
  31. package/deploy/windows/e2e/test-local-sense.ps1 +6 -5
  32. package/deploy/windows/install-update.ps1 +52 -9
  33. package/deploy/windows/set-executable-icon.ps1 +24 -5
  34. package/deploy/windows/setup-detector.ps1 +142 -4
  35. package/deploy/windows/setup-litertlm.ps1 +53 -10
  36. package/deploy/windows/trillboards-setup.ps1 +101 -2
  37. package/dist/AudienceAnalyzeClient.d.ts +10 -0
  38. package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
  39. package/dist/AudienceAnalyzeClient.js +5 -4
  40. package/dist/AudienceAnalyzeClient.js.map +1 -1
  41. package/dist/CloudSensingManager.d.ts +38 -1
  42. package/dist/CloudSensingManager.d.ts.map +1 -1
  43. package/dist/CloudSensingManager.js +403 -25
  44. package/dist/CloudSensingManager.js.map +1 -1
  45. package/dist/DetectorFieldProducer.d.ts +5 -1
  46. package/dist/DetectorFieldProducer.d.ts.map +1 -1
  47. package/dist/DetectorFieldProducer.js +8 -1
  48. package/dist/DetectorFieldProducer.js.map +1 -1
  49. package/dist/DurableVlmCandidateSpool.d.ts +83 -2
  50. package/dist/DurableVlmCandidateSpool.d.ts.map +1 -1
  51. package/dist/DurableVlmCandidateSpool.js +596 -30
  52. package/dist/DurableVlmCandidateSpool.js.map +1 -1
  53. package/dist/EdgeAgent.js +1 -1
  54. package/dist/FrameGroupingShadow.d.ts +51 -0
  55. package/dist/FrameGroupingShadow.d.ts.map +1 -0
  56. package/dist/FrameGroupingShadow.js +158 -0
  57. package/dist/FrameGroupingShadow.js.map +1 -0
  58. package/dist/ImageClassifierFieldProducer.d.ts +36 -0
  59. package/dist/ImageClassifierFieldProducer.d.ts.map +1 -0
  60. package/dist/ImageClassifierFieldProducer.js +150 -0
  61. package/dist/ImageClassifierFieldProducer.js.map +1 -0
  62. package/dist/LiteRtVlmProvider.d.ts +5 -0
  63. package/dist/LiteRtVlmProvider.d.ts.map +1 -1
  64. package/dist/LiteRtVlmProvider.js +72 -7
  65. package/dist/LiteRtVlmProvider.js.map +1 -1
  66. package/dist/LocalDetectorClient.d.ts +6 -0
  67. package/dist/LocalDetectorClient.d.ts.map +1 -1
  68. package/dist/LocalDetectorClient.js +8 -0
  69. package/dist/LocalDetectorClient.js.map +1 -1
  70. package/dist/OrderedFrameReview.d.ts +57 -0
  71. package/dist/OrderedFrameReview.d.ts.map +1 -0
  72. package/dist/OrderedFrameReview.js +121 -0
  73. package/dist/OrderedFrameReview.js.map +1 -0
  74. package/dist/OrderedReviewClient.d.ts +38 -0
  75. package/dist/OrderedReviewClient.d.ts.map +1 -0
  76. package/dist/OrderedReviewClient.js +121 -0
  77. package/dist/OrderedReviewClient.js.map +1 -0
  78. package/dist/OrderedSequenceStore.d.ts +69 -0
  79. package/dist/OrderedSequenceStore.d.ts.map +1 -0
  80. package/dist/OrderedSequenceStore.js +257 -0
  81. package/dist/OrderedSequenceStore.js.map +1 -0
  82. package/dist/ProfileReviewWork.d.ts +68 -0
  83. package/dist/ProfileReviewWork.d.ts.map +1 -0
  84. package/dist/ProfileReviewWork.js +150 -0
  85. package/dist/ProfileReviewWork.js.map +1 -0
  86. package/dist/RetainedFieldContract.d.ts +21 -0
  87. package/dist/RetainedFieldContract.d.ts.map +1 -0
  88. package/dist/RetainedFieldContract.js +92 -0
  89. package/dist/RetainedFieldContract.js.map +1 -0
  90. package/dist/ReviewModelUse.d.ts +7 -0
  91. package/dist/ReviewModelUse.d.ts.map +1 -0
  92. package/dist/ReviewModelUse.js +30 -0
  93. package/dist/ReviewModelUse.js.map +1 -0
  94. package/dist/ReviewPriority.d.ts +12 -0
  95. package/dist/ReviewPriority.d.ts.map +1 -0
  96. package/dist/ReviewPriority.js +45 -0
  97. package/dist/ReviewPriority.js.map +1 -0
  98. package/dist/RuntimeModelSelection.d.ts +10 -0
  99. package/dist/RuntimeModelSelection.d.ts.map +1 -0
  100. package/dist/RuntimeModelSelection.js +58 -0
  101. package/dist/RuntimeModelSelection.js.map +1 -0
  102. package/dist/SceneChangeDetector.d.ts +1 -1
  103. package/dist/SceneChangeDetector.d.ts.map +1 -1
  104. package/dist/SceneChangeDetector.js +18 -6
  105. package/dist/SceneChangeDetector.js.map +1 -1
  106. package/dist/ScopedVlmReview.d.ts +76 -0
  107. package/dist/ScopedVlmReview.d.ts.map +1 -0
  108. package/dist/ScopedVlmReview.js +267 -0
  109. package/dist/ScopedVlmReview.js.map +1 -0
  110. package/dist/SensingProfileClient.d.ts +50 -0
  111. package/dist/SensingProfileClient.d.ts.map +1 -1
  112. package/dist/SensingProfileClient.js +58 -2
  113. package/dist/SensingProfileClient.js.map +1 -1
  114. package/dist/TemporalReviewClient.d.ts +43 -0
  115. package/dist/TemporalReviewClient.d.ts.map +1 -0
  116. package/dist/TemporalReviewClient.js +117 -0
  117. package/dist/TemporalReviewClient.js.map +1 -0
  118. package/dist/TemporalReviewJournal.d.ts +91 -0
  119. package/dist/TemporalReviewJournal.d.ts.map +1 -0
  120. package/dist/TemporalReviewJournal.js +337 -0
  121. package/dist/TemporalReviewJournal.js.map +1 -0
  122. package/dist/UrgentReviewTriage.d.ts +35 -0
  123. package/dist/UrgentReviewTriage.d.ts.map +1 -0
  124. package/dist/UrgentReviewTriage.js +52 -0
  125. package/dist/UrgentReviewTriage.js.map +1 -0
  126. package/dist/VideoSegmentUploader.d.ts +293 -0
  127. package/dist/VideoSegmentUploader.d.ts.map +1 -0
  128. package/dist/VideoSegmentUploader.js +1002 -0
  129. package/dist/VideoSegmentUploader.js.map +1 -0
  130. package/dist/VlmCandidateBuffer.d.ts +19 -0
  131. package/dist/VlmCandidateBuffer.d.ts.map +1 -1
  132. package/dist/VlmCandidateBuffer.js.map +1 -1
  133. package/dist/autoSense.d.ts +2 -2
  134. package/dist/autoSense.d.ts.map +1 -1
  135. package/dist/autoSense.js +16 -11
  136. package/dist/autoSense.js.map +1 -1
  137. package/dist/cli.js +1 -1
  138. package/dist/cli.js.map +1 -1
  139. package/dist/config.d.ts +2 -0
  140. package/dist/config.d.ts.map +1 -1
  141. package/dist/config.js.map +1 -1
  142. package/dist/continuousReview.d.ts +71 -0
  143. package/dist/continuousReview.d.ts.map +1 -0
  144. package/dist/continuousReview.js +53 -0
  145. package/dist/continuousReview.js.map +1 -0
  146. package/dist/detectorCountReview.d.ts +9 -0
  147. package/dist/detectorCountReview.d.ts.map +1 -0
  148. package/dist/detectorCountReview.js +79 -0
  149. package/dist/detectorCountReview.js.map +1 -0
  150. package/dist/diagnose.d.ts +1 -1
  151. package/dist/diagnose.js +1 -1
  152. package/dist/installerOnboardingMode.d.ts.map +1 -1
  153. package/dist/installerOnboardingMode.js +5 -3
  154. package/dist/installerOnboardingMode.js.map +1 -1
  155. package/dist/localInferenceSchema.d.ts +8 -0
  156. package/dist/localInferenceSchema.d.ts.map +1 -1
  157. package/dist/localInferenceSchema.js +3 -3
  158. package/dist/localInferenceSchema.js.map +1 -1
  159. package/dist/localSenseE2eHarness.d.ts +12 -0
  160. package/dist/localSenseE2eHarness.d.ts.map +1 -1
  161. package/dist/localSenseE2eHarness.js +77 -4
  162. package/dist/localSenseE2eHarness.js.map +1 -1
  163. package/dist/localSensing.d.ts +91 -18
  164. package/dist/localSensing.d.ts.map +1 -1
  165. package/dist/localSensing.js +678 -153
  166. package/dist/localSensing.js.map +1 -1
  167. package/dist/mixedScopedCounts.d.ts +17 -0
  168. package/dist/mixedScopedCounts.d.ts.map +1 -0
  169. package/dist/mixedScopedCounts.js +90 -0
  170. package/dist/mixedScopedCounts.js.map +1 -0
  171. package/dist/sensingCatchRate.d.ts +9 -5
  172. package/dist/sensingCatchRate.d.ts.map +1 -1
  173. package/dist/sensingCatchRate.js +10 -6
  174. package/dist/sensingCatchRate.js.map +1 -1
  175. package/dist/sensingRunMode.d.ts +5 -0
  176. package/dist/sensingRunMode.d.ts.map +1 -1
  177. package/dist/sensingRunMode.js +56 -0
  178. package/dist/sensingRunMode.js.map +1 -1
  179. package/package.json +7 -4
  180. package/retained/ArchiveLifecycle.cjs +79 -0
  181. package/retained/ModelStageScheduler.cjs +66 -0
  182. package/retained/ProfileAuthorityClient.cjs +88 -0
  183. package/retained/RetainedCaptureClient.cjs +164 -0
  184. package/retained/WaitRecheckCaptureClient.cjs +109 -0
  185. package/retained/__tests__/archive-lifecycle.test.cjs +117 -0
  186. package/retained/__tests__/runtime.test.cjs +384 -0
  187. package/retained/alert-rule-policy.cjs +37 -0
  188. package/retained/manager.cjs +133 -0
  189. package/retained/pilot-profile-client.cjs +82 -0
  190. package/retained/temporal-grouping.cjs +78 -0
  191. package/retained/website-api-capability.cjs +122 -0
@@ -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
@@ -120,8 +120,8 @@ function Format-ByteCount($Value) {
120
120
  $Form = New-Object System.Windows.Forms.Form
121
121
  $Form.Text = 'Sense Anything Connector'
122
122
  $Form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
123
- $Form.ClientSize = New-Object System.Drawing.Size(760, 540)
124
- $Form.MinimumSize = New-Object System.Drawing.Size(700, 520)
123
+ $Form.ClientSize = New-Object System.Drawing.Size(760, 700)
124
+ $Form.MinimumSize = New-Object System.Drawing.Size(760, 700)
125
125
  $Form.BackColor = [System.Drawing.Color]::White
126
126
  $Form.MaximizeBox = $false
127
127
 
@@ -224,6 +224,85 @@ $CloseAction.Size = New-Object System.Drawing.Size(100, 42)
224
224
  $CloseAction.Visible = $false
225
225
  $Form.Controls.Add($CloseAction)
226
226
 
227
+ # Guidance preferences contain only a boolean; setup never depends on storage.
228
+ $GuidancePreferencePath = Join-Path $StateDir 'setup-guiding-tips.json'
229
+ $script:GuidanceCatalog = $null
230
+ $script:DismissedGuidance = @{}
231
+ $guidePath = Join-Path $BinDir 'setup-guidance.json'
232
+ if (-not (Test-Path $guidePath)) { $guidePath = Join-Path $BinDir '..\setup-guidance.json' }
233
+ try { $script:GuidanceCatalog = Get-Content -Raw $guidePath | ConvertFrom-Json } catch { }
234
+ $guidanceDisabled = $false
235
+ try { $guidanceDisabled = (Get-Content -Raw $GuidancePreferencePath | ConvertFrom-Json).disabled -eq $true } catch { }
236
+ $GuidanceToggle = New-Object System.Windows.Forms.CheckBox
237
+ $GuidanceToggle.Text = 'Guiding tips'
238
+ $GuidanceToggle.Location = New-Object System.Drawing.Point(24, 510)
239
+ $GuidanceToggle.Size = New-Object System.Drawing.Size(145, 28)
240
+ $GuidanceToggle.Checked = -not $guidanceDisabled
241
+ $Sidebar.Controls.Add($GuidanceToggle)
242
+ $GuidanceRestore = New-Object System.Windows.Forms.Button
243
+ $GuidanceRestore.Text = 'Show this tip'
244
+ $GuidanceRestore.Location = New-Object System.Drawing.Point(24, 548)
245
+ $GuidanceRestore.Size = New-Object System.Drawing.Size(140, 30)
246
+ $Sidebar.Controls.Add($GuidanceRestore)
247
+ $GuidancePanel = New-Object System.Windows.Forms.Panel
248
+ $GuidancePanel.Location = New-Object System.Drawing.Point(236, 530)
249
+ $GuidancePanel.Size = New-Object System.Drawing.Size(465, 150)
250
+ $GuidancePanel.BackColor = [System.Drawing.Color]::FromArgb(255, 245, 232)
251
+ $GuidancePanel.BorderStyle = [System.Windows.Forms.BorderStyle]::FixedSingle
252
+ $Form.Controls.Add($GuidancePanel)
253
+ $GuidanceTitle = New-Label -Text '' -Size 10 -Style ([System.Drawing.FontStyle]::Bold)
254
+ $GuidanceTitle.Location = New-Object System.Drawing.Point(12, 9)
255
+ $GuidanceTitle.Size = New-Object System.Drawing.Size(402, 38)
256
+ $GuidanceTitle.ForeColor = [System.Drawing.Color]::FromArgb(71, 51, 36)
257
+ $GuidancePanel.Controls.Add($GuidanceTitle)
258
+ $GuidanceBody = New-Label -Text '' -Size 9
259
+ $GuidanceBody.Location = New-Object System.Drawing.Point(12, 48)
260
+ $GuidanceBody.Size = New-Object System.Drawing.Size(435, 62)
261
+ $GuidanceBody.ForeColor = [System.Drawing.Color]::FromArgb(97, 74, 59)
262
+ $GuidancePanel.Controls.Add($GuidanceBody)
263
+ $GuidanceDismiss = New-Object System.Windows.Forms.Button
264
+ $GuidanceDismiss.Text = 'x'
265
+ $GuidanceDismiss.AccessibleName = 'Dismiss this tip'
266
+ $GuidanceDismiss.Location = New-Object System.Drawing.Point(423, 8)
267
+ $GuidanceDismiss.Size = New-Object System.Drawing.Size(28, 26)
268
+ $GuidancePanel.Controls.Add($GuidanceDismiss)
269
+ $GuidanceMore = New-Object System.Windows.Forms.Button
270
+ $GuidanceMore.Text = 'More help'
271
+ $GuidanceMore.Location = New-Object System.Drawing.Point(12, 115)
272
+ $GuidanceMore.Size = New-Object System.Drawing.Size(100, 26)
273
+ $GuidancePanel.Controls.Add($GuidanceMore)
274
+
275
+ function Get-CurrentGuidance {
276
+ if ($null -eq $script:GuidanceCatalog) { return $null }
277
+ $entry = $script:GuidanceCatalog.PSObject.Properties[$script:LastStage]
278
+ if ($null -eq $entry) { return $null }
279
+ return $entry.Value
280
+ }
281
+ function Update-Guidance {
282
+ $guide = Get-CurrentGuidance
283
+ $dismissed = $script:DismissedGuidance.ContainsKey($script:LastStage)
284
+ $GuidancePanel.Visible = $GuidanceToggle.Checked -and -not $dismissed -and $null -ne $guide
285
+ $GuidanceRestore.Visible = $GuidanceToggle.Checked -and $dismissed
286
+ if ($null -ne $guide) {
287
+ $GuidanceTitle.Text = [string]$guide.title
288
+ $GuidanceBody.Text = [string]$guide.body
289
+ }
290
+ }
291
+ $GuidanceToggle.Add_CheckedChanged({
292
+ $script:DismissedGuidance.Clear()
293
+ Update-Guidance
294
+ try {
295
+ [void][System.IO.Directory]::CreateDirectory($StateDir)
296
+ @{ disabled = -not $GuidanceToggle.Checked } | ConvertTo-Json | Set-Content -Path $GuidancePreferencePath -Encoding UTF8
297
+ } catch { }
298
+ })
299
+ $GuidanceDismiss.Add_Click({ $script:DismissedGuidance[$script:LastStage] = $true; Update-Guidance })
300
+ $GuidanceRestore.Add_Click({ $script:DismissedGuidance.Remove($script:LastStage); Update-Guidance })
301
+ $GuidanceMore.Add_Click({
302
+ $guide = Get-CurrentGuidance
303
+ if ($null -ne $guide) { [void][System.Windows.Forms.MessageBox]::Show($Form, [string]$guide.detail, [string]$guide.title) }
304
+ })
305
+
227
306
  # Native onboarding controls
228
307
  # These panels are real WinForms controls rather than a webview. Google and
229
308
  # Stripe alone open the system browser for provider-owned secure UI, then the
@@ -467,6 +546,7 @@ $PlanSubmit.Add_Click({
467
546
  function Show-Welcome {
468
547
  Set-OnboardingPanel $null
469
548
  $script:LastStage = 'welcome'
549
+ Update-Guidance
470
550
  $Headline.Text = 'Set up this computer for CCTV'
471
551
  $Detail.Text = 'Connect your Sense Anything account, find your recorder, and verify every camera before screens are created.'
472
552
  $StatusValue.Text = 'About 5 minutes'
@@ -481,6 +561,7 @@ function Show-Welcome {
481
561
  function Show-LocalError([string]$Title, [string]$Message) {
482
562
  Set-OnboardingPanel $null
483
563
  $script:LastStage = 'error'
564
+ Update-Guidance
484
565
  $Headline.Text = $Title
485
566
  $Detail.Text = $Message
486
567
  $StatusValue.Text = 'Setup stopped'
@@ -565,6 +646,7 @@ function Complete-UpdateCheck {
565
646
  }
566
647
  $script:RequiredUpdateUrl = $downloadUrl
567
648
  $script:LastStage = 'update_required'
649
+ Update-Guidance
568
650
  $Headline.Text = 'Update required before setup can continue'
569
651
  $Detail.Text = 'Install the latest Sense Anything Connector, then reopen it to finish camera setup.'
570
652
  $StatusValue.Text = "Version $availableText"
@@ -623,6 +705,7 @@ function Start-Setup {
623
705
  $Progress.Value = 8
624
706
  $Action.Enabled = $false
625
707
  $script:LastStage = 'starting'
708
+ Update-Guidance
626
709
  $script:SetupStarted = $true
627
710
 
628
711
  $startInfo = New-Object System.Diagnostics.ProcessStartInfo
@@ -653,6 +736,7 @@ function Start-LocalAiSetup {
653
736
  $Action.Text = 'Working...'
654
737
  $Action.Enabled = $false
655
738
  $script:LastStage = 'local_ai'
739
+ Update-Guidance
656
740
 
657
741
  $startInfo = New-Object System.Diagnostics.ProcessStartInfo
658
742
  $startInfo.FileName = 'powershell.exe'
@@ -721,6 +805,7 @@ function Render-State($State) {
721
805
  if (-not $stage) { return }
722
806
  $previousStage = $script:LastStage
723
807
  $script:LastStage = $stage
808
+ Update-Guidance
724
809
  $url = Get-StateValue $State 'portalUrl'
725
810
  if ($url) { $script:PortalUrl = [string]$url }
726
811
  $Headline.Text = [string](Get-StateValue $State 'title')
@@ -932,6 +1017,20 @@ $Timer.Add_Tick({
932
1017
  })
933
1018
  Show-Welcome
934
1019
  if ($SmokeTest) {
1020
+ if ($null -eq $script:GuidanceCatalog) { throw 'Setup guidance catalog is missing.' }
1021
+ foreach ($entry in $script:GuidanceCatalog.PSObject.Properties) {
1022
+ $script:LastStage = $entry.Name
1023
+ Update-Guidance
1024
+ foreach ($label in @($GuidanceTitle, $GuidanceBody)) {
1025
+ $available = New-Object System.Drawing.Size(($label.Width - 6), 1000)
1026
+ $measured = [System.Windows.Forms.TextRenderer]::MeasureText($label.Text, $label.Font, $available, [System.Windows.Forms.TextFormatFlags]::WordBreak)
1027
+ if ($measured.Height -gt $label.Height) { throw "Setup guidance text clipped: $($entry.Name)" }
1028
+ }
1029
+ }
1030
+ if ($GuidancePanel.Bounds.IntersectsWith($Action.Bounds) -or $GuidancePanel.Bounds.IntersectsWith($AccountPanel.Bounds)) {
1031
+ throw 'Guidance overlaps setup controls.'
1032
+ }
1033
+ Show-Welcome
935
1034
  if ($StepLabels.Count -ne 8 -or $Form.Controls.Count -lt 8 -or $Action.Text -ne 'Start setup') {
936
1035
  throw 'Windows setup UI did not construct its expected controls.'
937
1036
  }
@@ -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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"}