@trillboards/edge-sdk 0.2.7 → 0.2.9

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.
@@ -55,16 +55,21 @@ serves every Windows 10/11 — no per-arch builds.
55
55
 
56
56
  Requires NSIS and 7-Zip on PATH (`choco install nsis 7zip -y`). The release workflow publishes
57
57
  the `.exe` to `s3://trillboards-screen-static/connector/trillboards-connector-windows.exe`
58
- and invalidates the `screen.trillboards.com` CloudFront distribution, so the
59
- portal's stable download URL never changes.
58
+ plus `trillboards-connector-windows.version.json`, containing the exact connector
59
+ version, production commit, SHA-256, file size, and publication time. It then
60
+ invalidates the `screen.trillboards.com` CloudFront distribution, so the portal's
61
+ stable download URL never changes while field tests remain artifact-verifiable.
60
62
 
61
63
  ## Notes
62
64
 
63
65
  - Production `.exe` artifacts are signed with Azure Trusted Signing and checked
64
66
  with `Get-AuthenticodeSignature` before CDN publication.
65
- - The one-file wrapper uses the official 7-Zip SFX installer module from the
66
- LZMA SDK. 7-Zip is licensed under the GNU LGPL; source and license information
67
- are available at https://www.7-zip.org/.
67
+ - The one-file wrapper uses `7zSD.sfx` from the official LZMA SDK, which Igor
68
+ Pavlov places in the public domain. It launches the signed inner installer
69
+ directly with an empty SFX directory prefix so its absolute temporary path is
70
+ not rewritten as a relative command. The release workflow executes that final
71
+ wrapper before CDN publication. Source and license information are at
72
+ https://www.7-zip.org/.
68
73
  - The legacy `install-service.ps1` (local-inference: requires system Node + npm
69
74
  install + ONNX models + a hand-edited deviceToken) is a different, older path.
70
75
  This local-first installer supersedes it for BYO-CCTV onboarding.
@@ -17,8 +17,8 @@ param(
17
17
  [string]$ModelPath = "",
18
18
  [string]$ModelUrl = "https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it.litertlm",
19
19
  [string]$ModelSha256 = "181938105e0eefd105961417e8da75903eacda102c4fce9ce90f50b97139a63c",
20
- [string]$SevenZipSdkUrl = "https://www.7-zip.org/a/lzma2301.7z",
21
- [string]$SevenZipSdkSha256 = "317dd834d6bbfd95433488b832e823cd3d4d420101436422c03af88507dd1370"
20
+ [string]$SevenZipSdkUrl = "https://www.7-zip.org/a/lzma2602.7z",
21
+ [string]$SevenZipSdkSha256 = "2878c85f5f43a4a4e0952b1fd4e5fe097c1c143997a8047c7e1e788892aa9357"
22
22
  )
23
23
 
24
24
  $ErrorActionPreference = "Stop"
@@ -84,27 +84,12 @@ if (-not $sfxModule) { Fail "official 7zSD.sfx installer module was not found" }
84
84
  $innerName = "TrillboardsEdgeSetup-core.exe"
85
85
  Copy-Item -LiteralPath $InnerInstaller -Destination (Join-Path $Stage $innerName) -Force
86
86
  $sevenZipNotice = @'
87
- This installer uses the 7-Zip SFX installer module from the LZMA SDK.
88
- 7-Zip is licensed under the GNU LGPL and other included licenses.
87
+ This installer uses 7zSD.sfx from the LZMA SDK.
88
+ The LZMA SDK is placed in the public domain by Igor Pavlov.
89
89
  Source and license information: https://www.7-zip.org/
90
90
  '@
91
91
  [System.IO.File]::WriteAllText((Join-Path $Stage "7zip-NOTICE.txt"), $sevenZipNotice, [System.Text.UTF8Encoding]::new($false))
92
92
 
93
- $launcher = @'
94
- Option Explicit
95
- Dim shell, fso, base, installer, model, command, result
96
- Set shell = CreateObject("WScript.Shell")
97
- Set fso = CreateObject("Scripting.FileSystemObject")
98
- base = fso.GetParentFolderName(WScript.ScriptFullName)
99
- installer = fso.BuildPath(base, "TrillboardsEdgeSetup-core.exe")
100
- model = fso.BuildPath(base, "gemma-4-E2B-it.litertlm")
101
- shell.Environment("Process")("TRILLBOARDS_BUNDLED_MODEL_PATH") = model
102
- command = Chr(34) & installer & Chr(34) & " /MODEL_SOURCE=" & Chr(34) & model & Chr(34)
103
- result = shell.Run(command, 1, True)
104
- WScript.Quit result
105
- '@
106
- [System.IO.File]::WriteAllText((Join-Path $Stage "install-bundled-ai.vbs"), $launcher, [System.Text.UTF8Encoding]::new($false))
107
-
108
93
  $archive = Join-Path $Scratch "trillboards-cctv.7z"
109
94
  Push-Location $Stage
110
95
  try {
@@ -123,7 +108,8 @@ $config = @'
123
108
  Title="Trillboards CCTV Setup"
124
109
  Progress="yes"
125
110
  GUIMode="1"
126
- RunProgram="wscript.exe install-bundled-ai.vbs"
111
+ Directory=""
112
+ RunProgram="\"%%T\TrillboardsEdgeSetup-core.exe\" /MODEL_SOURCE=\"%%T\gemma-4-E2B-it.litertlm\""
127
113
  ;!@InstallEnd@!
128
114
  '@
129
115
  $configPath = Join-Path $Scratch "sfx-config.txt"
@@ -57,18 +57,43 @@ BrandingText "Trillboards"
57
57
  !insertmacro MUI_LANGUAGE "English"
58
58
 
59
59
  Function .onInit
60
- ; The SFX launcher supplies a process-scoped environment value so paths with
61
- ; spaces are unambiguous. Keep the command-line option as an engineering and
62
- ; recovery fallback.
60
+ ; The SFX launcher passes its absolute extraction path. Keep the environment
61
+ ; value as an engineering and recovery fallback for the signed inner package.
63
62
  ReadEnvStr $ModelSource "TRILLBOARDS_BUNDLED_MODEL_PATH"
64
63
  ${If} $ModelSource == ""
65
64
  ${GetParameters} $0
66
65
  ${GetOptions} $0 "/MODEL_SOURCE=" $ModelSource
67
66
  ${EndIf}
68
67
  ${If} $ModelSource == ""
68
+ ReadEnvStr $1 "TRILLBOARDS_BUNDLE_RELEASE_SMOKE_MARKER"
69
+ ${If} $1 != ""
70
+ SetErrorLevel 2
71
+ Quit
72
+ ${EndIf}
69
73
  MessageBox MB_ICONSTOP|MB_OK "This installer is missing its included local AI model. Download the complete Trillboards CCTV installer and try again."
70
74
  Abort
71
75
  ${EndIf}
76
+
77
+ ; The production release runs the final signed customer SFX once before CDN
78
+ ; publication. This branch proves that the wrapper extracted the model and
79
+ ; launched this exact signed inner installer without modifying the machine.
80
+ ReadEnvStr $1 "TRILLBOARDS_BUNDLE_RELEASE_SMOKE_MARKER"
81
+ ${If} $1 != ""
82
+ ${IfNot} ${FileExists} "$ModelSource"
83
+ SetErrorLevel 2
84
+ Quit
85
+ ${EndIf}
86
+ ClearErrors
87
+ FileOpen $2 "$1" w
88
+ IfErrors bundle_smoke_failed
89
+ FileWrite $2 "Trillboards customer bundle launch OK$\r$\n"
90
+ FileClose $2
91
+ SetErrorLevel 0
92
+ Quit
93
+ bundle_smoke_failed:
94
+ SetErrorLevel 3
95
+ Quit
96
+ ${EndIf}
72
97
  FunctionEnd
73
98
 
74
99
  Section "Install"
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.7';
47
+ const SDK_VERSION = '0.2.9';
48
48
  class EdgeAgent extends events_1.EventEmitter {
49
49
  constructor(config, deps) {
50
50
  super();
@@ -21,7 +21,7 @@ export interface DiagnosticReport {
21
21
  warnings: number;
22
22
  };
23
23
  }
24
- declare const SDK_VERSION = "0.2.7";
24
+ declare const SDK_VERSION = "0.2.9";
25
25
  declare function checkNodeVersion(): CheckResult;
26
26
  declare function checkPlatform(): CheckResult;
27
27
  declare function checkMemory(): CheckResult;
package/dist/diagnose.js CHANGED
@@ -59,7 +59,7 @@ const modelIntegrity_1 = require("./modelIntegrity");
59
59
  // ---------------------------------------------------------------------------
60
60
  // SDK version — mirrors package.json; kept in sync by CI
61
61
  // ---------------------------------------------------------------------------
62
- const SDK_VERSION = '0.2.7';
62
+ const SDK_VERSION = '0.2.9';
63
63
  exports._SDK_VERSION = SDK_VERSION;
64
64
  // ---------------------------------------------------------------------------
65
65
  // ANSI helpers (no external deps)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trillboards/edge-sdk",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Composable cross-platform Edge AI SDK for audience sensing on DOOH/CTV devices",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",