@trillboards/edge-sdk 0.2.1 → 0.2.3

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 (50) hide show
  1. package/README.md +147 -2
  2. package/deploy/docker/Dockerfile.cpu +132 -0
  3. package/deploy/docker/Dockerfile.cuda +134 -0
  4. package/deploy/docker/Dockerfile.openvino +131 -0
  5. package/deploy/docker/README.md +358 -0
  6. package/deploy/helm/README.md +508 -0
  7. package/deploy/helm/trillboards-edge/Chart.yaml +19 -0
  8. package/deploy/helm/trillboards-edge/templates/_helpers.tpl +40 -0
  9. package/deploy/helm/trillboards-edge/templates/daemonset.yaml +120 -0
  10. package/deploy/helm/trillboards-edge/templates/service.yaml +15 -0
  11. package/deploy/helm/trillboards-edge/values.yaml +95 -0
  12. package/deploy/k8s/daemonset.yaml +144 -0
  13. package/dist/CommandRouter.d.ts +113 -0
  14. package/dist/CommandRouter.d.ts.map +1 -0
  15. package/dist/CommandRouter.js +392 -0
  16. package/dist/CommandRouter.js.map +1 -0
  17. package/dist/EdgeAgent.d.ts +6 -1
  18. package/dist/EdgeAgent.d.ts.map +1 -1
  19. package/dist/EdgeAgent.js +277 -10
  20. package/dist/EdgeAgent.js.map +1 -1
  21. package/dist/cli.js +60 -8
  22. package/dist/cli.js.map +1 -1
  23. package/dist/config.d.ts +1 -0
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js.map +1 -1
  26. package/dist/demo.d.ts +111 -0
  27. package/dist/demo.d.ts.map +1 -0
  28. package/dist/demo.js +483 -0
  29. package/dist/demo.js.map +1 -0
  30. package/dist/diagnose.d.ts +59 -0
  31. package/dist/diagnose.d.ts.map +1 -0
  32. package/dist/diagnose.js +651 -0
  33. package/dist/diagnose.js.map +1 -0
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +7 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/init.d.ts +19 -0
  39. package/dist/init.d.ts.map +1 -0
  40. package/dist/init.js +364 -0
  41. package/dist/init.js.map +1 -0
  42. package/dist/mcp-server.d.ts +27 -0
  43. package/dist/mcp-server.d.ts.map +1 -0
  44. package/dist/mcp-server.js +1264 -0
  45. package/dist/mcp-server.js.map +1 -0
  46. package/dist/status.d.ts +11 -0
  47. package/dist/status.d.ts.map +1 -0
  48. package/dist/status.js +343 -0
  49. package/dist/status.js.map +1 -0
  50. package/package.json +5 -4
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ /**
3
+ * CommandRouter — Routes incoming `deviceCommand` socket events to
4
+ * the appropriate handler and reports results back to the caller.
5
+ *
6
+ * Supported commands:
7
+ * config.push — Hot-push sensing/VAS/full config
8
+ * device.screenshot — Capture + upload a screenshot to S3
9
+ * power.sleep — DPMS display off
10
+ * power.wake — DPMS display on
11
+ * kiosk.reload — Reload kiosk browser
12
+ * device.restart — Restart the edge agent process
13
+ * device.ping — Heartbeat ping/pong
14
+ * device.info — Return host system information
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.CommandRouter = void 0;
51
+ const events_1 = require("events");
52
+ const os = __importStar(require("os"));
53
+ // ─── Supported command names (used for the unsupported-command hint) ─────────
54
+ const SUPPORTED_COMMANDS = [
55
+ 'config.push',
56
+ 'device.screenshot',
57
+ 'power.sleep',
58
+ 'power.wake',
59
+ 'kiosk.reload',
60
+ 'device.restart',
61
+ 'device.ping',
62
+ 'device.info',
63
+ ];
64
+ // ─── CommandRouter ──────────────────────────────────────────────────────────
65
+ class CommandRouter extends events_1.EventEmitter {
66
+ constructor(context, maxHistory = 100) {
67
+ super();
68
+ this.commandHistory = [];
69
+ this.context = context;
70
+ this.maxHistory = maxHistory;
71
+ this.startedAt = Date.now();
72
+ }
73
+ // ── Public API ──────────────────────────────────────────────────────────
74
+ /**
75
+ * Route and execute an incoming device command.
76
+ * Returns the `CommandResult` which the caller should send back via socket.
77
+ *
78
+ * This method **never throws** — every failure path is captured in
79
+ * the result with `status: 'failed'` and a human-readable error message.
80
+ */
81
+ async handleCommand(cmd) {
82
+ const t0 = Date.now();
83
+ let result;
84
+ try {
85
+ result = await this.dispatch(cmd, t0);
86
+ }
87
+ catch (err) {
88
+ // Belt-and-suspenders: dispatch() has its own try/catch per handler,
89
+ // but if something truly unexpected happens, catch it here.
90
+ result = {
91
+ commandId: cmd.commandId,
92
+ command: cmd.command,
93
+ status: 'failed',
94
+ error: err instanceof Error ? err.message : String(err),
95
+ durationMs: Date.now() - t0,
96
+ };
97
+ }
98
+ this.recordHistory(result);
99
+ this.emit('commandExecuted', result);
100
+ return result;
101
+ }
102
+ /**
103
+ * Return a shallow copy of the recent command history, newest-first.
104
+ */
105
+ getHistory() {
106
+ return this.commandHistory.slice();
107
+ }
108
+ // ── Internal dispatch ───────────────────────────────────────────────────
109
+ async dispatch(cmd, t0) {
110
+ switch (cmd.command) {
111
+ case 'config.push':
112
+ return this.handleConfigPush(cmd, t0);
113
+ case 'device.screenshot':
114
+ return this.handleScreenshot(cmd, t0);
115
+ case 'power.sleep':
116
+ return this.handlePowerSleep(cmd, t0);
117
+ case 'power.wake':
118
+ return this.handlePowerWake(cmd, t0);
119
+ case 'kiosk.reload':
120
+ return this.handleKioskReload(cmd, t0);
121
+ case 'device.restart':
122
+ return this.handleDeviceRestart(cmd, t0);
123
+ case 'device.ping':
124
+ return this.handleDevicePing(cmd, t0);
125
+ case 'device.info':
126
+ return this.handleDeviceInfo(cmd, t0);
127
+ default:
128
+ return {
129
+ commandId: cmd.commandId,
130
+ command: cmd.command,
131
+ status: 'unsupported',
132
+ error: `Unknown command "${cmd.command}". Supported commands: ${SUPPORTED_COMMANDS.join(', ')}`,
133
+ durationMs: Date.now() - t0,
134
+ };
135
+ }
136
+ }
137
+ // ── Command Handlers ────────────────────────────────────────────────────
138
+ /**
139
+ * config.push — Update sensing/VAS config.
140
+ * Payload: `{ type: 'sensing' | 'vas' | 'full', config: {...} }`
141
+ */
142
+ async handleConfigPush(cmd, t0) {
143
+ try {
144
+ const payload = cmd.payload || {};
145
+ const configType = payload.type;
146
+ const config = payload.config;
147
+ if (!config || typeof config !== 'object') {
148
+ return {
149
+ commandId: cmd.commandId,
150
+ command: cmd.command,
151
+ status: 'failed',
152
+ error: 'config.push requires payload.config to be a non-null object',
153
+ durationMs: Date.now() - t0,
154
+ };
155
+ }
156
+ await this.context.updateConfig({ type: configType || 'full', ...config });
157
+ return {
158
+ commandId: cmd.commandId,
159
+ command: cmd.command,
160
+ status: 'completed',
161
+ result: { applied: true, type: configType || 'full' },
162
+ durationMs: Date.now() - t0,
163
+ };
164
+ }
165
+ catch (err) {
166
+ return {
167
+ commandId: cmd.commandId,
168
+ command: cmd.command,
169
+ status: 'failed',
170
+ error: err instanceof Error ? err.message : String(err),
171
+ durationMs: Date.now() - t0,
172
+ };
173
+ }
174
+ }
175
+ /**
176
+ * device.screenshot — Capture kiosk screenshot, upload to S3.
177
+ * 1. captureScreenshot() -> Buffer | null
178
+ * 2. getUploadUrl('screenshot') -> presigned URL
179
+ * 3. uploadToS3(url, buffer, 'image/png')
180
+ */
181
+ async handleScreenshot(cmd, t0) {
182
+ try {
183
+ const buffer = await this.context.captureScreenshot();
184
+ if (!buffer) {
185
+ return {
186
+ commandId: cmd.commandId,
187
+ command: cmd.command,
188
+ status: 'failed',
189
+ error: 'Screenshot capture returned null — kiosk browser may not be running',
190
+ durationMs: Date.now() - t0,
191
+ };
192
+ }
193
+ const uploadUrl = await this.context.getUploadUrl('screenshot');
194
+ if (!uploadUrl) {
195
+ return {
196
+ commandId: cmd.commandId,
197
+ command: cmd.command,
198
+ status: 'failed',
199
+ error: 'Failed to obtain presigned upload URL from backend',
200
+ durationMs: Date.now() - t0,
201
+ };
202
+ }
203
+ const uploaded = await this.context.uploadToS3(uploadUrl, buffer, 'image/png');
204
+ if (!uploaded) {
205
+ return {
206
+ commandId: cmd.commandId,
207
+ command: cmd.command,
208
+ status: 'failed',
209
+ error: 'S3 upload returned false — upload may have been rejected or timed out',
210
+ durationMs: Date.now() - t0,
211
+ };
212
+ }
213
+ // Strip query params (signed tokens) from the URL for the result
214
+ const publicUrl = uploadUrl.split('?')[0];
215
+ return {
216
+ commandId: cmd.commandId,
217
+ command: cmd.command,
218
+ status: 'completed',
219
+ result: { uploaded: true, url: publicUrl, sizeBytes: buffer.length },
220
+ durationMs: Date.now() - t0,
221
+ };
222
+ }
223
+ catch (err) {
224
+ return {
225
+ commandId: cmd.commandId,
226
+ command: cmd.command,
227
+ status: 'failed',
228
+ error: err instanceof Error ? err.message : String(err),
229
+ durationMs: Date.now() - t0,
230
+ };
231
+ }
232
+ }
233
+ /**
234
+ * power.sleep — Put the display to sleep via DPMS.
235
+ */
236
+ async handlePowerSleep(cmd, t0) {
237
+ try {
238
+ await this.context.setSleepMode(true);
239
+ return {
240
+ commandId: cmd.commandId,
241
+ command: cmd.command,
242
+ status: 'completed',
243
+ result: { sleep: true },
244
+ durationMs: Date.now() - t0,
245
+ };
246
+ }
247
+ catch (err) {
248
+ return {
249
+ commandId: cmd.commandId,
250
+ command: cmd.command,
251
+ status: 'failed',
252
+ error: err instanceof Error ? err.message : String(err),
253
+ durationMs: Date.now() - t0,
254
+ };
255
+ }
256
+ }
257
+ /**
258
+ * power.wake — Wake the display from DPMS sleep.
259
+ */
260
+ async handlePowerWake(cmd, t0) {
261
+ try {
262
+ await this.context.setSleepMode(false);
263
+ return {
264
+ commandId: cmd.commandId,
265
+ command: cmd.command,
266
+ status: 'completed',
267
+ result: { sleep: false },
268
+ durationMs: Date.now() - t0,
269
+ };
270
+ }
271
+ catch (err) {
272
+ return {
273
+ commandId: cmd.commandId,
274
+ command: cmd.command,
275
+ status: 'failed',
276
+ error: err instanceof Error ? err.message : String(err),
277
+ durationMs: Date.now() - t0,
278
+ };
279
+ }
280
+ }
281
+ /**
282
+ * kiosk.reload — Reload the kiosk browser page.
283
+ */
284
+ async handleKioskReload(cmd, t0) {
285
+ try {
286
+ await this.context.reloadKiosk();
287
+ return {
288
+ commandId: cmd.commandId,
289
+ command: cmd.command,
290
+ status: 'completed',
291
+ result: { reloaded: true },
292
+ durationMs: Date.now() - t0,
293
+ };
294
+ }
295
+ catch (err) {
296
+ return {
297
+ commandId: cmd.commandId,
298
+ command: cmd.command,
299
+ status: 'failed',
300
+ error: err instanceof Error ? err.message : String(err),
301
+ durationMs: Date.now() - t0,
302
+ };
303
+ }
304
+ }
305
+ /**
306
+ * device.restart — Restart the edge agent process.
307
+ *
308
+ * Note: after calling `context.restartDevice()`, this process may terminate
309
+ * before the result can be sent. The caller should emit the ack/status
310
+ * *before* actually restarting if reliable delivery matters.
311
+ */
312
+ async handleDeviceRestart(cmd, t0) {
313
+ try {
314
+ await this.context.restartDevice();
315
+ return {
316
+ commandId: cmd.commandId,
317
+ command: cmd.command,
318
+ status: 'completed',
319
+ result: { restarting: true },
320
+ durationMs: Date.now() - t0,
321
+ };
322
+ }
323
+ catch (err) {
324
+ return {
325
+ commandId: cmd.commandId,
326
+ command: cmd.command,
327
+ status: 'failed',
328
+ error: err instanceof Error ? err.message : String(err),
329
+ durationMs: Date.now() - t0,
330
+ };
331
+ }
332
+ }
333
+ /**
334
+ * device.ping — Simple liveness check. Returns a pong with server timestamp.
335
+ */
336
+ async handleDevicePing(cmd, t0) {
337
+ return {
338
+ commandId: cmd.commandId,
339
+ command: cmd.command,
340
+ status: 'completed',
341
+ result: { pong: true, timestamp: Date.now() },
342
+ durationMs: Date.now() - t0,
343
+ };
344
+ }
345
+ /**
346
+ * device.info — Return system information useful for remote diagnostics.
347
+ */
348
+ async handleDeviceInfo(cmd, t0) {
349
+ try {
350
+ const cpus = os.cpus();
351
+ const info = {
352
+ hostname: os.hostname(),
353
+ platform: os.platform(),
354
+ arch: os.arch(),
355
+ totalMemory: os.totalmem(),
356
+ freeMemory: os.freemem(),
357
+ cpuCount: cpus.length,
358
+ cpuModel: cpus.length > 0 ? cpus[0].model : 'unknown',
359
+ nodeVersion: process.version,
360
+ uptime: os.uptime(),
361
+ processUptime: process.uptime(),
362
+ agentUptime: Math.floor((Date.now() - this.startedAt) / 1000),
363
+ loadAvg: os.loadavg(),
364
+ };
365
+ return {
366
+ commandId: cmd.commandId,
367
+ command: cmd.command,
368
+ status: 'completed',
369
+ result: info,
370
+ durationMs: Date.now() - t0,
371
+ };
372
+ }
373
+ catch (err) {
374
+ return {
375
+ commandId: cmd.commandId,
376
+ command: cmd.command,
377
+ status: 'failed',
378
+ error: err instanceof Error ? err.message : String(err),
379
+ durationMs: Date.now() - t0,
380
+ };
381
+ }
382
+ }
383
+ // ── History ring buffer ─────────────────────────────────────────────────
384
+ recordHistory(result) {
385
+ this.commandHistory.push(result);
386
+ while (this.commandHistory.length > this.maxHistory) {
387
+ this.commandHistory.shift();
388
+ }
389
+ }
390
+ }
391
+ exports.CommandRouter = CommandRouter;
392
+ //# sourceMappingURL=CommandRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandRouter.js","sourceRoot":"","sources":["../src/CommandRouter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
- import type { EdgeAgentConfig } from './config';
2
+ import { type EdgeAgentConfig } from './config';
3
3
  export declare class EdgeAgent extends EventEmitter {
4
4
  private config;
5
5
  private platform;
@@ -13,6 +13,10 @@ export declare class EdgeAgent extends EventEmitter {
13
13
  private federatedTrainer;
14
14
  private healthRegistry;
15
15
  private signalBuffer;
16
+ private statusServer;
17
+ private commandRouter;
18
+ private memoryManager;
19
+ private modelManager;
16
20
  private running;
17
21
  private signalHandlersRegistered;
18
22
  private boundShutdownSigint;
@@ -21,6 +25,7 @@ export declare class EdgeAgent extends EventEmitter {
21
25
  start(): Promise<void>;
22
26
  stop(): Promise<void>;
23
27
  private shutdown;
28
+ private getLoadedModelNames;
24
29
  /**
25
30
  * Load the platform-specific adapter using require() so that optional
26
31
  * dependencies fail gracefully at runtime when not installed.
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeAgent.d.ts","sourceRoot":"","sources":["../src/EdgeAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA6BtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,oBAAoB,CAA6B;gBAE7C,MAAM,EAAE,eAAe;IAK7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+NtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Bb,QAAQ;IAMtB;;;OAGG;YACW,mBAAmB;IAwBjC;;OAEG;YACW,UAAU;IAoCxB;;OAEG;YACW,SAAS;IAsBvB,OAAO,CAAC,GAAG;CAgBZ"}
1
+ {"version":3,"file":"EdgeAgent.d.ts","sourceRoot":"","sources":["../src/EdgeAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAmCtC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAI/D,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,oBAAoB,CAA6B;gBAE7C,MAAM,EAAE,eAAe;IAK7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAubtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAgCb,QAAQ;IAMtB,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;YACW,mBAAmB;IAwBjC;;OAEG;YACW,UAAU;IAoCxB;;OAEG;YACW,SAAS;IAsBvB,OAAO,CAAC,GAAG;CAgBZ"}