@trillboards/edge-sdk 0.2.100 → 0.2.101

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.
@@ -91,10 +91,44 @@ sudo systemctl enable --now trillboards-litertlm \
91
91
  *** 'waiting for the on-device model'. Check: sudo systemctl status trillboards-litertlm"
92
92
 
93
93
  # The verification pass. Idempotent; the serve is up now, so the GPU probe runs.
94
+ VERIFY_OK=1
94
95
  sudo -u trillboards HOME=/opt/trillboards bash \
95
96
  node_modules/@trillboards/edge-sdk/deploy/systemd/setup-litertlm.sh \
96
- || echo " *** Vision-backend verification did not finish. The connector still runs;
97
- *** re-run install.sh to retry."
97
+ || { VERIFY_OK=0; echo " *** Vision-backend verification did not finish. The connector still runs;
98
+ *** re-run install.sh to retry."; }
99
+
100
+ # APPLY WHAT THE VERIFICATION DECIDED. The pass above can DECIDE but it cannot
101
+ # ACT: `write_litertlm_config` succeeds as the `trillboards` user, and the
102
+ # `restart_litertlm_serve` that would make the process re-read it does not —
103
+ # same nologin / no-sudoers reason as the start. Measured on a fresh box, the
104
+ # verification pass logs exactly this and then leaves the running engine on the
105
+ # old backend:
106
+ #
107
+ # WARN: GPU vision encoder did not answer a probe inference - falling back to
108
+ # the CPU encoder
109
+ # WARN: could not restart trillboards-litertlm
110
+ # local AI healthy on the CPU vision encoder (slower, but serving)
111
+ # -> config on disk says CPU, the loaded engine is still GPU, and a real image
112
+ # call still returns 500 Failed to create conversation
113
+ #
114
+ # A config the process never re-read is a decision nobody acted on. So the whole
115
+ # sequence needs THREE root actions around one unprivileged provisioner: START
116
+ # it (so the probe can run), let it VERIFY, then RESTART it (so the verdict is
117
+ # loaded). install.sh holds root at each point; the provisioner holds it at none.
118
+ # ONLY WHEN THE VERIFICATION ACTUALLY SUCCEEDED. If that pass exited nonzero —
119
+ # `uv tool install --force` failing while repairing a drifted install is the
120
+ # realistic case — there is no verdict to apply, and on an UPGRADE the old
121
+ # in-memory engine is still serving. Restarting into a half-installed state
122
+ # turns a degraded-but-serving box into a dead one, which is a worse outcome
123
+ # than the bug this whole change fixes.
124
+ if [ "$VERIFY_OK" -eq 1 ]; then
125
+ sudo systemctl restart trillboards-litertlm \
126
+ || echo " *** Could not restart LiteRT-LM to apply the verified vision backend.
127
+ *** Run: sudo systemctl restart trillboards-litertlm"
128
+ else
129
+ echo " *** Skipping the LiteRT-LM restart: verification did not complete, so there is
130
+ *** no verified backend to apply and the running engine is left as it is."
131
+ fi
98
132
 
99
133
 
100
134
  # The on-device OBJECT DETECTOR cascade gate (RF-DETR, 127.0.0.1:9380). Its own
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.100';
47
+ const SDK_VERSION = '0.2.101';
48
48
  class EdgeAgent extends events_1.EventEmitter {
49
49
  constructor(config, deps) {
50
50
  super();
@@ -31,7 +31,7 @@ export interface DiagnosticReport {
31
31
  skipped: number;
32
32
  };
33
33
  }
34
- declare const SDK_VERSION = "0.2.100";
34
+ declare const SDK_VERSION = "0.2.101";
35
35
  declare function checkNodeVersion(): CheckResult;
36
36
  declare function checkPlatform(): CheckResult;
37
37
  declare function checkMemory(): CheckResult;
package/dist/diagnose.js CHANGED
@@ -63,7 +63,7 @@ const localNetworkAccess_1 = require("./localNetworkAccess");
63
63
  // ---------------------------------------------------------------------------
64
64
  // SDK version — mirrors package.json; kept in sync by CI
65
65
  // ---------------------------------------------------------------------------
66
- const SDK_VERSION = '0.2.100';
66
+ const SDK_VERSION = '0.2.101';
67
67
  exports._SDK_VERSION = SDK_VERSION;
68
68
  // ---------------------------------------------------------------------------
69
69
  // 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.100",
3
+ "version": "0.2.101",
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",
@@ -16,7 +16,7 @@
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
18
  "dependencies": {
19
- "@trillboards/edge-core": "^0.4.1",
19
+ "@trillboards/edge-core": "^0.4.5",
20
20
  "@trillboards/edge-sensing": "^0.2.4",
21
21
  "@trillboards/edge-federated": "^0.2.0 || ^1.0.0",
22
22
  "@trillboards/edge-ads": "^0.2.0",