@trillboards/edge-core 0.1.0

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 (49) hide show
  1. package/dist/DeviceIdentity.d.ts +32 -0
  2. package/dist/DeviceIdentity.d.ts.map +1 -0
  3. package/dist/DeviceIdentity.js +131 -0
  4. package/dist/DeviceIdentity.js.map +1 -0
  5. package/dist/DeviceProfile.d.ts +39 -0
  6. package/dist/DeviceProfile.d.ts.map +1 -0
  7. package/dist/DeviceProfile.js +199 -0
  8. package/dist/DeviceProfile.js.map +1 -0
  9. package/dist/ObservationSignalClassifier.d.ts +33 -0
  10. package/dist/ObservationSignalClassifier.d.ts.map +1 -0
  11. package/dist/ObservationSignalClassifier.js +116 -0
  12. package/dist/ObservationSignalClassifier.js.map +1 -0
  13. package/dist/RecoveryLadder.d.ts +58 -0
  14. package/dist/RecoveryLadder.d.ts.map +1 -0
  15. package/dist/RecoveryLadder.js +199 -0
  16. package/dist/RecoveryLadder.js.map +1 -0
  17. package/dist/SensingConfig.d.ts +33 -0
  18. package/dist/SensingConfig.d.ts.map +1 -0
  19. package/dist/SensingConfig.js +179 -0
  20. package/dist/SensingConfig.js.map +1 -0
  21. package/dist/SignalBuffer.d.ts +56 -0
  22. package/dist/SignalBuffer.d.ts.map +1 -0
  23. package/dist/SignalBuffer.js +143 -0
  24. package/dist/SignalBuffer.js.map +1 -0
  25. package/dist/SocketManager.d.ts +73 -0
  26. package/dist/SocketManager.d.ts.map +1 -0
  27. package/dist/SocketManager.js +160 -0
  28. package/dist/SocketManager.js.map +1 -0
  29. package/dist/SubsystemHealthRegistry.d.ts +61 -0
  30. package/dist/SubsystemHealthRegistry.d.ts.map +1 -0
  31. package/dist/SubsystemHealthRegistry.js +230 -0
  32. package/dist/SubsystemHealthRegistry.js.map +1 -0
  33. package/dist/TelemetryScheduler.d.ts +56 -0
  34. package/dist/TelemetryScheduler.d.ts.map +1 -0
  35. package/dist/TelemetryScheduler.js +99 -0
  36. package/dist/TelemetryScheduler.js.map +1 -0
  37. package/dist/VASWeightConfig.d.ts +26 -0
  38. package/dist/VASWeightConfig.d.ts.map +1 -0
  39. package/dist/VASWeightConfig.js +83 -0
  40. package/dist/VASWeightConfig.js.map +1 -0
  41. package/dist/index.d.ts +15 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +44 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/types.d.ts +530 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +96 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +40 -0
@@ -0,0 +1,530 @@
1
+ /**
2
+ * Core type definitions for Trillboards Edge AI SDK.
3
+ * These types define the protocol contract between edge devices and the backend.
4
+ * Both Kotlin agent-core and this TypeScript SDK implement the same contract.
5
+ */
6
+ /// <reference types="node" />
7
+ /// <reference types="node" />
8
+ /**
9
+ * Minimal ImageData interface for cross-platform compatibility.
10
+ * In browser contexts this matches the DOM ImageData; on Node.js it is a plain
11
+ * object with width, height, and a Uint8ClampedArray of RGBA pixel data.
12
+ */
13
+ export interface EdgeImageData {
14
+ readonly data: Uint8ClampedArray;
15
+ readonly height: number;
16
+ readonly width: number;
17
+ }
18
+ export interface DeviceIdentityInfo {
19
+ fingerprint: string;
20
+ sessionId: string;
21
+ platform: 'linux' | 'windows' | 'android' | 'webos' | 'tizen';
22
+ machineId: string;
23
+ createdAt: number;
24
+ }
25
+ export interface Demographics {
26
+ ageRanges: Record<string, number>;
27
+ genderEstimates: Record<string, number>;
28
+ }
29
+ export interface DwellTimeMetrics {
30
+ averageSeconds: number;
31
+ maxSeconds: number;
32
+ minSeconds: number;
33
+ totalViewerSeconds: number;
34
+ }
35
+ export interface EnvironmentMetrics {
36
+ ambientLightLux: number;
37
+ deviceTemperatureC: number;
38
+ orientation: 'portrait' | 'landscape' | 'unknown';
39
+ }
40
+ export interface AudienceSnapshot {
41
+ timestamp: number;
42
+ viewerCount: number;
43
+ personCount: number;
44
+ attentionScore: number;
45
+ demographics: Demographics;
46
+ dwellTime: DwellTimeMetrics;
47
+ environment: EnvironmentMetrics;
48
+ }
49
+ export interface DetectedFace {
50
+ id: number;
51
+ boundingBox: {
52
+ x: number;
53
+ y: number;
54
+ width: number;
55
+ height: number;
56
+ };
57
+ headEulerAngleX: number;
58
+ headEulerAngleY: number;
59
+ headEulerAngleZ: number;
60
+ smilingProbability: number | null;
61
+ leftEyeOpenProbability: number | null;
62
+ rightEyeOpenProbability: number | null;
63
+ estimatedAge: number | null;
64
+ estimatedGender: string | null;
65
+ firstSeenTimestamp: number;
66
+ lastSeenTimestamp: number;
67
+ }
68
+ /**
69
+ * AudienceMetricsPayload — matches the backend contract in audienceMetricsService.js.
70
+ * Field names MUST match what bufferMetrics() destructures, or signals are silently dropped.
71
+ */
72
+ export interface AudienceMetricsPayload {
73
+ fingerprint: string;
74
+ screenId: string | null;
75
+ windowStart: number;
76
+ windowEnd: number;
77
+ avgFaceCount: number;
78
+ maxFaceCount: number;
79
+ avgAttention: number;
80
+ avgDwellTimeMs: number;
81
+ avgNoiseLevel: number;
82
+ crowdedPct?: number;
83
+ dominantAmbience?: string;
84
+ sensingMode: string;
85
+ speech?: boolean;
86
+ emotionalEngagement?: number;
87
+ adReceptivityScore?: number;
88
+ estimatedOccupancy?: number;
89
+ inferredVenueType?: string;
90
+ ambientLux?: number;
91
+ luxVariance?: number;
92
+ shadowEvents?: ShadowEvent[];
93
+ currentAdId?: string;
94
+ currentContentType?: string;
95
+ sensingIntervalMs: number;
96
+ inferenceSnapshotId?: string;
97
+ onDeviceDemographics?: Record<string, unknown>;
98
+ creativeZones?: Record<string, unknown>;
99
+ footTraffic?: number;
100
+ faceSnapshotCount: number;
101
+ audioSnapshotCount: number;
102
+ measurementQuality: string;
103
+ edgeQuality?: EdgeQualityReport;
104
+ subsystemHealth?: Record<string, unknown>;
105
+ observationFamily: string;
106
+ evidenceGrade: string;
107
+ decisionability: string;
108
+ decisionBlockReasons: string[];
109
+ speechEvidence?: Record<string, unknown>;
110
+ visualEvidence?: Record<string, unknown>;
111
+ vasRaw?: number;
112
+ vasWeighted?: number;
113
+ vasQualityMultiplier?: number;
114
+ venue_id?: string;
115
+ }
116
+ export interface SpeechMetrics {
117
+ detected: boolean;
118
+ confidence: number;
119
+ language?: string;
120
+ segments?: SpeechSegment[];
121
+ }
122
+ export interface SpeechSegment {
123
+ text: string;
124
+ confidence: number;
125
+ startMs: number;
126
+ endMs: number;
127
+ }
128
+ export interface AudioMetrics {
129
+ timestamp: number;
130
+ classifications: AudioClassification[];
131
+ noiseLevel: number;
132
+ audienceEstimate: number;
133
+ }
134
+ export interface AudioClassification {
135
+ label: string;
136
+ confidence: number;
137
+ }
138
+ export declare enum EmotionType {
139
+ HAPPY = "HAPPY",
140
+ SURPRISED = "SURPRISED",
141
+ NEUTRAL = "NEUTRAL",
142
+ SAD = "SAD",
143
+ ANGRY = "ANGRY",
144
+ FEARFUL = "FEARFUL",
145
+ DISGUSTED = "DISGUSTED",
146
+ CONTEMPT = "CONTEMPT",
147
+ UNKNOWN = "UNKNOWN"
148
+ }
149
+ export interface EmotionMetrics {
150
+ dominantEmotion: EmotionType;
151
+ emotionConfidence: number;
152
+ happyScore: number;
153
+ surprisedScore: number;
154
+ neutralScore: number;
155
+ sadScore: number;
156
+ angryScore: number;
157
+ fearScore: number;
158
+ disgustScore: number;
159
+ isPositiveReaction: boolean;
160
+ isNegativeReaction: boolean;
161
+ emotionalEngagementScore: number;
162
+ confidence: number;
163
+ }
164
+ export declare const AGE_RANGES: readonly ["0-12", "13-17", "18-24", "25-34", "35-44", "45-54", "55-64", "65+"];
165
+ export type AgeRange = typeof AGE_RANGES[number];
166
+ export declare const GENDER_LABELS: readonly ["male", "female"];
167
+ export type GenderLabel = typeof GENDER_LABELS[number];
168
+ export interface AgeGenderResult {
169
+ ageRange: AgeRange;
170
+ ageConfidence: number;
171
+ gender: GenderLabel;
172
+ genderConfidence: number;
173
+ confidence: number;
174
+ }
175
+ export interface ContentState {
176
+ adId: string | null;
177
+ contentType: 'ad' | 'default_stream' | 'self_promo' | 'idle';
178
+ streamId: string | null;
179
+ impressionId: string | null;
180
+ }
181
+ export interface ContentStateProvider {
182
+ getCurrentContentState(): ContentState;
183
+ }
184
+ export interface AmbientLightProvider {
185
+ start(): void;
186
+ stop(): void;
187
+ getAmbientLight(): number;
188
+ getNormalizedAmbientLight(): number;
189
+ getAndResetShadowEvents(): number;
190
+ getViewabilityScore(): number;
191
+ }
192
+ export interface ShadowEvent {
193
+ type: 'shadow_detected' | 'tampering_suspected' | 'baseline_shift';
194
+ timestamp: number;
195
+ luxRatio: number;
196
+ }
197
+ export interface EdgeQualityReport {
198
+ cameraFps: number;
199
+ inferenceLatencyMs: number;
200
+ faceDetectionConfidence: number;
201
+ audioClassificationConfidence: number;
202
+ memoryUsageMb: number;
203
+ cpuUsagePercent: number;
204
+ modelLoadTimeMs: number;
205
+ droppedFrames: number;
206
+ totalFrames: number;
207
+ }
208
+ export interface VASResult {
209
+ vasRaw: number;
210
+ vasWeighted: number;
211
+ qualityMultiplier: number;
212
+ attestationSignature: string | null;
213
+ publicKeyId: string | null;
214
+ signingTimestamp: number | null;
215
+ }
216
+ export interface VASWeights {
217
+ attention: number;
218
+ emotion: number;
219
+ body: number;
220
+ focus: number;
221
+ }
222
+ export interface FederatedSliceContext {
223
+ venueType: string;
224
+ venueSubtype?: string;
225
+ daypart?: string;
226
+ geo?: string;
227
+ deviceProfile?: string;
228
+ }
229
+ export interface GradientUploadPayload {
230
+ modelType: string;
231
+ sliceContext: FederatedSliceContext;
232
+ sparseIndices: number[];
233
+ sparseValues: number[];
234
+ totalParams: number;
235
+ sampleCount: number;
236
+ modelVersion: string;
237
+ deviceFingerprint: string;
238
+ publicKeyId: string | null;
239
+ signature: string | null;
240
+ timestamp: number;
241
+ }
242
+ export interface HeartbeatPayload {
243
+ fingerprint: string;
244
+ screenId: string | null;
245
+ timestamp: number;
246
+ platform: string;
247
+ uptime: number;
248
+ metadata: Record<string, unknown>;
249
+ subsystemHealth?: Record<string, unknown>;
250
+ }
251
+ export declare enum Subsystem {
252
+ SOCKET = "SOCKET",
253
+ PLAYER = "PLAYER",
254
+ CAMERA = "CAMERA",
255
+ MICROPHONE = "MICROPHONE",
256
+ ML_PIPELINE = "ML_PIPELINE",
257
+ MEMORY = "MEMORY"
258
+ }
259
+ export declare enum SubsystemStatus {
260
+ CONNECTED = "CONNECTED",
261
+ DISCONNECTED = "DISCONNECTED",
262
+ RECONNECTING = "RECONNECTING",
263
+ PLAYING = "PLAYING",
264
+ STUCK = "STUCK",
265
+ CRASHED = "CRASHED",
266
+ RELOADING = "RELOADING",
267
+ ACTIVE = "ACTIVE",
268
+ PERMISSION_DENIED = "PERMISSION_DENIED",
269
+ ERROR = "ERROR",
270
+ FULL = "FULL",
271
+ DEGRADED = "DEGRADED",
272
+ CRITICAL = "CRITICAL",
273
+ OFFLINE = "OFFLINE",
274
+ NORMAL = "NORMAL",
275
+ MEDIUM = "MEDIUM",
276
+ HIGH = "HIGH"
277
+ }
278
+ export interface SubsystemHealth {
279
+ subsystem: Subsystem;
280
+ status: SubsystemStatus;
281
+ lastHeartbeatMs: number;
282
+ errorMessage: string | null;
283
+ metadata: Record<string, unknown> | null;
284
+ }
285
+ export type ObservationFamily = 'SCREEN_AUDIENCE' | 'AMBIENT_COMMERCE_INTENT' | 'DIAGNOSTIC_PROBE' | 'EMPTY_SCENE';
286
+ export type EvidenceGrade = 'FACE_BACKED' | 'PERSON_BACKED' | 'SPEECH_ONLY' | 'PROXY_ONLY' | 'EMPTY';
287
+ export type Decisionability = 'DECISIONABLE' | 'NON_DECISIONABLE';
288
+ export interface ObservationSignalClassification {
289
+ observationFamily: ObservationFamily;
290
+ evidenceGrade: EvidenceGrade;
291
+ decisionability: Decisionability;
292
+ decisionBlockReasons: string[];
293
+ measurementQuality: string;
294
+ }
295
+ export interface AudioConfig {
296
+ minClassificationConfidence: number;
297
+ speechAudienceSizeFactor: number;
298
+ musicAudienceSizeFactor: number;
299
+ crowdAudienceSizeFactor: number;
300
+ speechAttentionFactor: number;
301
+ musicAttentionFactor: number;
302
+ highSpeechReceptivity: number;
303
+ lowSpeechReceptivity: number;
304
+ musicReceptivity: number;
305
+ }
306
+ export interface AttentionConfig {
307
+ yawDivisor: number;
308
+ pitchDivisor: number;
309
+ eyeWeight: number;
310
+ yawWeight: number;
311
+ pitchWeight: number;
312
+ }
313
+ export interface EngagementConfig {
314
+ poseWeight: number;
315
+ emotionWeight: number;
316
+ gazeWeight: number;
317
+ highEngagementThreshold: number;
318
+ }
319
+ export interface GazeConfig {
320
+ yawDirect: number;
321
+ yawPartial: number;
322
+ yawAway: number;
323
+ pitchDirect: number;
324
+ pitchPartial: number;
325
+ pitchAway: number;
326
+ stabilityWindow: number;
327
+ directScore: number;
328
+ partialScore: number;
329
+ awayScore: number;
330
+ focusDirectScore: number;
331
+ focusPartialScore: number;
332
+ focusAwayScore: number;
333
+ minStabilityFrames: number;
334
+ }
335
+ export interface BodyConfig {
336
+ facingAngleThreshold: number;
337
+ leanMagnitudeThreshold: number;
338
+ movementSpeedThreshold: number;
339
+ facingScore: number;
340
+ leanScore: number;
341
+ movementScore: number;
342
+ }
343
+ export interface EmotionConfig {
344
+ confidenceThreshold: number;
345
+ reactionThreshold: number;
346
+ positiveSentimentFactor: number;
347
+ negativeSentimentFactor: number;
348
+ neutralSentimentFactor: number;
349
+ }
350
+ export interface DetectionConfig {
351
+ personConfidenceThreshold: number;
352
+ }
353
+ export interface ShadowConfig {
354
+ luxRatioHigh: number;
355
+ luxRatioLow: number;
356
+ cooldownMs: number;
357
+ baselineUpdateAlpha: number;
358
+ tamperingThreshold: number;
359
+ }
360
+ export interface ViewabilityConfig {
361
+ darkLux: number;
362
+ dimLux: number;
363
+ goodLux: number;
364
+ brightLux: number;
365
+ darkViewability: number;
366
+ dimViewability: number;
367
+ goodViewability: number;
368
+ brightViewability: number;
369
+ overbrightViewability: number;
370
+ }
371
+ export interface InsightConfig {
372
+ baselineConfidence: number;
373
+ brandBoost: number;
374
+ productBoost: number;
375
+ interestBoost: number;
376
+ purchaseIntentBoost: number;
377
+ }
378
+ export interface CaptureConfig {
379
+ periodicIntervalMs: number;
380
+ faceTriggeredIntervalMs: number;
381
+ jpegQuality: number;
382
+ }
383
+ export interface SensingConfigData {
384
+ audio: AudioConfig;
385
+ attention: AttentionConfig;
386
+ engagement: EngagementConfig;
387
+ gaze: GazeConfig;
388
+ body: BodyConfig;
389
+ emotion: EmotionConfig;
390
+ detection: DetectionConfig;
391
+ shadow: ShadowConfig;
392
+ viewability: ViewabilityConfig;
393
+ insight: InsightConfig;
394
+ capture: CaptureConfig;
395
+ }
396
+ export declare enum CapabilityTier {
397
+ TIER_1 = 1,// 6 TOPS NPU, 8GB — ALL models always ON
398
+ TIER_2 = 2,// 4-8GB RAM — most models ON
399
+ TIER_3 = 3,// 4GB RAM — basic models, aggressive shedding
400
+ TIER_4 = 4
401
+ }
402
+ export declare enum ModelAvailability {
403
+ ALWAYS_ON = "ALWAYS_ON",
404
+ SHED_AT_MEDIUM = "SHED_AT_MEDIUM",
405
+ SHED_AT_HIGH = "SHED_AT_HIGH",
406
+ OFF = "OFF"
407
+ }
408
+ export declare enum AttenuationTier {
409
+ NONE = "NONE",
410
+ MEDIUM = "MEDIUM",
411
+ HIGH = "HIGH",
412
+ CRITICAL = "CRITICAL"
413
+ }
414
+ export interface DeviceCapabilityMatrix {
415
+ tier: CapabilityTier;
416
+ description: string;
417
+ targetFps: number;
418
+ resolution: {
419
+ width: number;
420
+ height: number;
421
+ };
422
+ blazeFace: ModelAvailability;
423
+ yamnetAudio: ModelAvailability;
424
+ whisperAsr: ModelAvailability;
425
+ ferEmotion: ModelAvailability;
426
+ poseEngagement: ModelAvailability;
427
+ ageGender: ModelAvailability;
428
+ gazeTracking: ModelAvailability;
429
+ geminiVisionCadenceSeconds: number;
430
+ geminiVisionFaceDetectedCadenceSeconds: number;
431
+ federatedLearningEnabled: boolean;
432
+ federatedSparseUpload: boolean;
433
+ attenuationEnabled: boolean;
434
+ attenuationMediumThreshold: number;
435
+ attenuationHighThreshold: number;
436
+ attenuationCriticalThreshold: number;
437
+ maxRecoveryLevel: number;
438
+ }
439
+ export declare enum RecoveryLevel {
440
+ NONE = 0,
441
+ RECONNECT = 1,
442
+ RELOAD_PLAYER = 2,
443
+ REBIND_HARDWARE = 3,
444
+ ATTENUATE_MEMORY = 4,
445
+ RESTART_SERVICE = 5,
446
+ ROLLBACK = 6
447
+ }
448
+ export interface RecoveryAction {
449
+ level: RecoveryLevel;
450
+ subsystem: Subsystem;
451
+ action: string;
452
+ timestamp: number;
453
+ success: boolean;
454
+ }
455
+ export interface SocketEvents {
456
+ privateMessage: (data: unknown) => void;
457
+ deviceCommand: (data: {
458
+ command: string;
459
+ payload?: unknown;
460
+ }) => void;
461
+ 'config.push': (data: {
462
+ type: string;
463
+ payload: unknown;
464
+ }) => void;
465
+ audienceSignals: (data: AudienceMetricsPayload) => void;
466
+ deviceCommandAck: (data: {
467
+ commandId: string;
468
+ status: string;
469
+ }) => void;
470
+ deviceCommandStatus: (data: {
471
+ commandId: string;
472
+ status: string;
473
+ result?: unknown;
474
+ }) => void;
475
+ }
476
+ export interface CameraProvider {
477
+ open(deviceId?: string): Promise<void>;
478
+ getFrame(): Promise<EdgeImageData | Buffer>;
479
+ getResolution(): {
480
+ width: number;
481
+ height: number;
482
+ };
483
+ getFps(): number;
484
+ close(): Promise<void>;
485
+ isOpen(): boolean;
486
+ }
487
+ export interface AudioProvider {
488
+ open(deviceId?: string): Promise<void>;
489
+ getAudioChunk(durationMs: number): Promise<Float32Array>;
490
+ getSampleRate(): number;
491
+ close(): Promise<void>;
492
+ isOpen(): boolean;
493
+ }
494
+ export interface PlatformAdapter {
495
+ getMachineId(): Promise<string>;
496
+ getCpuInfo(): {
497
+ model: string;
498
+ cores: number;
499
+ architecture: string;
500
+ };
501
+ getMemoryInfo(): {
502
+ totalMb: number;
503
+ freeMb: number;
504
+ usedPercent: number;
505
+ };
506
+ getTemperature(): Promise<number>;
507
+ getNetworkType(): 'wifi' | 'ethernet' | 'cellular' | 'unknown';
508
+ getLocation(): Promise<{
509
+ lat: number;
510
+ lon: number;
511
+ } | null>;
512
+ getBatteryLevel(): Promise<number | null>;
513
+ getPersistencePath(): string;
514
+ }
515
+ export interface EdgeSDKConfig {
516
+ apiBaseUrl: string;
517
+ socketUrl?: string;
518
+ screenId?: string;
519
+ venueType?: string;
520
+ venueId?: string;
521
+ platform: PlatformAdapter;
522
+ camera?: CameraProvider;
523
+ audio?: AudioProvider;
524
+ enableFederatedLearning?: boolean;
525
+ enableCloudInference?: boolean;
526
+ geminiApiKey?: string;
527
+ deviceToken?: string;
528
+ metadata?: Record<string, unknown>;
529
+ }
530
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * Core type definitions for Trillboards Edge AI SDK.
4
+ * These types define the protocol contract between edge devices and the backend.
5
+ * Both Kotlin agent-core and this TypeScript SDK implement the same contract.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.RecoveryLevel = exports.AttenuationTier = exports.ModelAvailability = exports.CapabilityTier = exports.SubsystemStatus = exports.Subsystem = exports.GENDER_LABELS = exports.AGE_RANGES = exports.EmotionType = void 0;
9
+ // ─── Emotion Classification (matches EmotionType.kt / EmotionMetrics.kt) ────
10
+ var EmotionType;
11
+ (function (EmotionType) {
12
+ EmotionType["HAPPY"] = "HAPPY";
13
+ EmotionType["SURPRISED"] = "SURPRISED";
14
+ EmotionType["NEUTRAL"] = "NEUTRAL";
15
+ EmotionType["SAD"] = "SAD";
16
+ EmotionType["ANGRY"] = "ANGRY";
17
+ EmotionType["FEARFUL"] = "FEARFUL";
18
+ EmotionType["DISGUSTED"] = "DISGUSTED";
19
+ EmotionType["CONTEMPT"] = "CONTEMPT";
20
+ EmotionType["UNKNOWN"] = "UNKNOWN";
21
+ })(EmotionType || (exports.EmotionType = EmotionType = {}));
22
+ // ─── Age/Gender Classification (matches AgeGenderProcessor.kt) ──────────────
23
+ exports.AGE_RANGES = [
24
+ '0-12', '13-17', '18-24', '25-34',
25
+ '35-44', '45-54', '55-64', '65+',
26
+ ];
27
+ exports.GENDER_LABELS = ['male', 'female'];
28
+ // ─── Subsystem Health ───────────────────────────────────────────────────────
29
+ var Subsystem;
30
+ (function (Subsystem) {
31
+ Subsystem["SOCKET"] = "SOCKET";
32
+ Subsystem["PLAYER"] = "PLAYER";
33
+ Subsystem["CAMERA"] = "CAMERA";
34
+ Subsystem["MICROPHONE"] = "MICROPHONE";
35
+ Subsystem["ML_PIPELINE"] = "ML_PIPELINE";
36
+ Subsystem["MEMORY"] = "MEMORY";
37
+ })(Subsystem || (exports.Subsystem = Subsystem = {}));
38
+ var SubsystemStatus;
39
+ (function (SubsystemStatus) {
40
+ // Socket
41
+ SubsystemStatus["CONNECTED"] = "CONNECTED";
42
+ SubsystemStatus["DISCONNECTED"] = "DISCONNECTED";
43
+ SubsystemStatus["RECONNECTING"] = "RECONNECTING";
44
+ // Player
45
+ SubsystemStatus["PLAYING"] = "PLAYING";
46
+ SubsystemStatus["STUCK"] = "STUCK";
47
+ SubsystemStatus["CRASHED"] = "CRASHED";
48
+ SubsystemStatus["RELOADING"] = "RELOADING";
49
+ // Camera/Mic
50
+ SubsystemStatus["ACTIVE"] = "ACTIVE";
51
+ SubsystemStatus["PERMISSION_DENIED"] = "PERMISSION_DENIED";
52
+ SubsystemStatus["ERROR"] = "ERROR";
53
+ // ML Pipeline
54
+ SubsystemStatus["FULL"] = "FULL";
55
+ SubsystemStatus["DEGRADED"] = "DEGRADED";
56
+ SubsystemStatus["CRITICAL"] = "CRITICAL";
57
+ SubsystemStatus["OFFLINE"] = "OFFLINE";
58
+ // Memory
59
+ SubsystemStatus["NORMAL"] = "NORMAL";
60
+ SubsystemStatus["MEDIUM"] = "MEDIUM";
61
+ SubsystemStatus["HIGH"] = "HIGH";
62
+ })(SubsystemStatus || (exports.SubsystemStatus = SubsystemStatus = {}));
63
+ // ─── Device Capability ──────────────────────────────────────────────────────
64
+ var CapabilityTier;
65
+ (function (CapabilityTier) {
66
+ CapabilityTier[CapabilityTier["TIER_1"] = 1] = "TIER_1";
67
+ CapabilityTier[CapabilityTier["TIER_2"] = 2] = "TIER_2";
68
+ CapabilityTier[CapabilityTier["TIER_3"] = 3] = "TIER_3";
69
+ CapabilityTier[CapabilityTier["TIER_4"] = 4] = "TIER_4";
70
+ })(CapabilityTier || (exports.CapabilityTier = CapabilityTier = {}));
71
+ var ModelAvailability;
72
+ (function (ModelAvailability) {
73
+ ModelAvailability["ALWAYS_ON"] = "ALWAYS_ON";
74
+ ModelAvailability["SHED_AT_MEDIUM"] = "SHED_AT_MEDIUM";
75
+ ModelAvailability["SHED_AT_HIGH"] = "SHED_AT_HIGH";
76
+ ModelAvailability["OFF"] = "OFF";
77
+ })(ModelAvailability || (exports.ModelAvailability = ModelAvailability = {}));
78
+ var AttenuationTier;
79
+ (function (AttenuationTier) {
80
+ AttenuationTier["NONE"] = "NONE";
81
+ AttenuationTier["MEDIUM"] = "MEDIUM";
82
+ AttenuationTier["HIGH"] = "HIGH";
83
+ AttenuationTier["CRITICAL"] = "CRITICAL";
84
+ })(AttenuationTier || (exports.AttenuationTier = AttenuationTier = {}));
85
+ // ─── Recovery ───────────────────────────────────────────────────────────────
86
+ var RecoveryLevel;
87
+ (function (RecoveryLevel) {
88
+ RecoveryLevel[RecoveryLevel["NONE"] = 0] = "NONE";
89
+ RecoveryLevel[RecoveryLevel["RECONNECT"] = 1] = "RECONNECT";
90
+ RecoveryLevel[RecoveryLevel["RELOAD_PLAYER"] = 2] = "RELOAD_PLAYER";
91
+ RecoveryLevel[RecoveryLevel["REBIND_HARDWARE"] = 3] = "REBIND_HARDWARE";
92
+ RecoveryLevel[RecoveryLevel["ATTENUATE_MEMORY"] = 4] = "ATTENUATE_MEMORY";
93
+ RecoveryLevel[RecoveryLevel["RESTART_SERVICE"] = 5] = "RESTART_SERVICE";
94
+ RecoveryLevel[RecoveryLevel["ROLLBACK"] = 6] = "ROLLBACK";
95
+ })(RecoveryLevel || (exports.RecoveryLevel = RecoveryLevel = {}));
96
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAwJH,+EAA+E;AAE/E,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,kCAAmB,CAAA;AACrB,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB;AAkBD,+EAA+E;AAElE,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;CACxB,CAAC;AAIE,QAAA,aAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAU,CAAC;AA+GzD,+EAA+E;AAE/E,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,sCAAyB,CAAA;IACzB,wCAA2B,CAAA;IAC3B,8BAAiB,CAAA;AACnB,CAAC,EAPW,SAAS,yBAAT,SAAS,QAOpB;AAED,IAAY,eAuBX;AAvBD,WAAY,eAAe;IACzB,SAAS;IACT,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,gDAA6B,CAAA;IAC7B,SAAS;IACT,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,sCAAmB,CAAA;IACnB,0CAAuB,CAAA;IACvB,aAAa;IACb,oCAAiB,CAAA;IACjB,0DAAuC,CAAA;IACvC,kCAAe,CAAA;IACf,cAAc;IACd,gCAAa,CAAA;IACb,wCAAqB,CAAA;IACrB,wCAAqB,CAAA;IACrB,sCAAmB,CAAA;IACnB,SAAS;IACT,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAvBW,eAAe,+BAAf,eAAe,QAuB1B;AAsJD,+EAA+E;AAE/E,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;IACV,uDAAU,CAAA;AACZ,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,4CAAuB,CAAA;IACvB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,gCAAW,CAAA;AACb,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,wCAAqB,CAAA;AACvB,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAkCD,+EAA+E;AAE/E,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,iDAAQ,CAAA;IACR,2DAAa,CAAA;IACb,mEAAiB,CAAA;IACjB,uEAAmB,CAAA;IACnB,yEAAoB,CAAA;IACpB,uEAAmB,CAAA;IACnB,yDAAY,CAAA;AACd,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB"}