@camstack/types 0.1.2 → 0.1.4
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.
- package/dist/__tests__/addon-capability-provider.test.d.ts +2 -0
- package/dist/__tests__/addon-capability-provider.test.d.ts.map +1 -0
- package/dist/__tests__/addon-declaration.test.d.ts +2 -0
- package/dist/__tests__/addon-declaration.test.d.ts.map +1 -0
- package/dist/__tests__/capability.test.d.ts +2 -0
- package/dist/__tests__/capability.test.d.ts.map +1 -0
- package/dist/catalogs/coco-classmap.d.ts +5 -0
- package/dist/catalogs/coco-classmap.d.ts.map +1 -0
- package/dist/catalogs/index.d.ts +2 -0
- package/dist/catalogs/index.d.ts.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/generated/addon-api.d.ts +4870 -0
- package/dist/generated/addon-api.d.ts.map +1 -0
- package/dist/index.d.ts +82 -6702
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +744 -550
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +777 -529
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/addon-i18n.d.ts +41 -0
- package/dist/interfaces/addon-i18n.d.ts.map +1 -0
- package/dist/interfaces/addon-routes.d.ts +50 -0
- package/dist/interfaces/addon-routes.d.ts.map +1 -0
- package/dist/interfaces/addon.d.ts +294 -0
- package/dist/interfaces/addon.d.ts.map +1 -0
- package/dist/interfaces/advanced-notifier.d.ts +59 -0
- package/dist/interfaces/advanced-notifier.d.ts.map +1 -0
- package/dist/interfaces/agent-protocol.d.ts +189 -0
- package/dist/interfaces/agent-protocol.d.ts.map +1 -0
- package/dist/interfaces/agent.d.ts +87 -0
- package/dist/interfaces/agent.d.ts.map +1 -0
- package/dist/interfaces/analysis-persistence.d.ts +278 -0
- package/dist/interfaces/analysis-persistence.d.ts.map +1 -0
- package/dist/interfaces/analysis.d.ts +27 -0
- package/dist/interfaces/analysis.d.ts.map +1 -0
- package/dist/interfaces/api-shared.d.ts +169 -0
- package/dist/interfaces/api-shared.d.ts.map +1 -0
- package/dist/interfaces/auth-provider.d.ts +39 -0
- package/dist/interfaces/auth-provider.d.ts.map +1 -0
- package/dist/interfaces/auth.d.ts +47 -0
- package/dist/interfaces/auth.d.ts.map +1 -0
- package/dist/interfaces/camera-pipeline.d.ts +121 -0
- package/dist/interfaces/camera-pipeline.d.ts.map +1 -0
- package/dist/interfaces/capability.d.ts +84 -0
- package/dist/interfaces/capability.d.ts.map +1 -0
- package/dist/interfaces/classifier.d.ts +8 -0
- package/dist/interfaces/classifier.d.ts.map +1 -0
- package/dist/interfaces/config-ui.d.ts +152 -0
- package/dist/interfaces/config-ui.d.ts.map +1 -0
- package/dist/interfaces/context.d.ts +44 -0
- package/dist/interfaces/context.d.ts.map +1 -0
- package/dist/interfaces/cropper.d.ts +8 -0
- package/dist/interfaces/cropper.d.ts.map +1 -0
- package/dist/interfaces/decoder.d.ts +27 -0
- package/dist/interfaces/decoder.d.ts.map +1 -0
- package/dist/interfaces/detection-addon.d.ts +15 -0
- package/dist/interfaces/detection-addon.d.ts.map +1 -0
- package/dist/interfaces/detector.d.ts +8 -0
- package/dist/interfaces/detector.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/accessory.d.ts +14 -0
- package/dist/interfaces/device-capabilities/accessory.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/audio-detector.d.ts +12 -0
- package/dist/interfaces/device-capabilities/audio-detector.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/camera.d.ts +22 -0
- package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/doorbell.d.ts +10 -0
- package/dist/interfaces/device-capabilities/doorbell.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/events.d.ts +47 -0
- package/dist/interfaces/device-capabilities/events.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/index.d.ts +15 -0
- package/dist/interfaces/device-capabilities/index.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/motion-sensor.d.ts +7 -0
- package/dist/interfaces/device-capabilities/motion-sensor.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/native-detection.d.ts +14 -0
- package/dist/interfaces/device-capabilities/native-detection.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/object-detector.d.ts +59 -0
- package/dist/interfaces/device-capabilities/object-detector.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts +29 -0
- package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/recording.d.ts +18 -0
- package/dist/interfaces/device-capabilities/recording.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/siren.d.ts +8 -0
- package/dist/interfaces/device-capabilities/siren.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/status-light.d.ts +7 -0
- package/dist/interfaces/device-capabilities/status-light.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/switch.d.ts +8 -0
- package/dist/interfaces/device-capabilities/switch.d.ts.map +1 -0
- package/dist/interfaces/device-capabilities/two-way-audio.d.ts +8 -0
- package/dist/interfaces/device-capabilities/two-way-audio.d.ts.map +1 -0
- package/dist/interfaces/device-capability.d.ts +14 -0
- package/dist/interfaces/device-capability.d.ts.map +1 -0
- package/dist/interfaces/device-provider.d.ts +43 -0
- package/dist/interfaces/device-provider.d.ts.map +1 -0
- package/dist/interfaces/device.d.ts +40 -0
- package/dist/interfaces/device.d.ts.map +1 -0
- package/dist/interfaces/event-bus.d.ts +22 -0
- package/dist/interfaces/event-bus.d.ts.map +1 -0
- package/dist/interfaces/feature-flags.d.ts +14 -0
- package/dist/interfaces/feature-flags.d.ts.map +1 -0
- package/dist/interfaces/ffmpeg.d.ts +10 -0
- package/dist/interfaces/ffmpeg.d.ts.map +1 -0
- package/dist/interfaces/inference-capabilities.d.ts +101 -0
- package/dist/interfaces/inference-capabilities.d.ts.map +1 -0
- package/dist/interfaces/inference-engine.d.ts +17 -0
- package/dist/interfaces/inference-engine.d.ts.map +1 -0
- package/dist/interfaces/lifecycle.d.ts +19 -0
- package/dist/interfaces/lifecycle.d.ts.map +1 -0
- package/dist/interfaces/logging.d.ts +33 -0
- package/dist/interfaces/logging.d.ts.map +1 -0
- package/dist/interfaces/model-catalog.d.ts +25 -0
- package/dist/interfaces/model-catalog.d.ts.map +1 -0
- package/dist/interfaces/network-quality.d.ts +25 -0
- package/dist/interfaces/network-quality.d.ts.map +1 -0
- package/dist/interfaces/network.d.ts +43 -0
- package/dist/interfaces/network.d.ts.map +1 -0
- package/dist/interfaces/notification.d.ts +53 -0
- package/dist/interfaces/notification.d.ts.map +1 -0
- package/dist/interfaces/pipeline-runner.d.ts +23 -0
- package/dist/interfaces/pipeline-runner.d.ts.map +1 -0
- package/dist/interfaces/pipeline-slot.d.ts +10 -0
- package/dist/interfaces/pipeline-slot.d.ts.map +1 -0
- package/dist/interfaces/platform.d.ts +55 -0
- package/dist/interfaces/platform.d.ts.map +1 -0
- package/dist/interfaces/process.d.ts +41 -0
- package/dist/interfaces/process.d.ts.map +1 -0
- package/dist/interfaces/python-env.d.ts +20 -0
- package/dist/interfaces/python-env.d.ts.map +1 -0
- package/dist/interfaces/refiner.d.ts +8 -0
- package/dist/interfaces/refiner.d.ts.map +1 -0
- package/dist/interfaces/repl.d.ts +26 -0
- package/dist/interfaces/repl.d.ts.map +1 -0
- package/dist/interfaces/repositories.d.ts +20 -0
- package/dist/interfaces/repositories.d.ts.map +1 -0
- package/dist/interfaces/restreamer.d.ts +24 -0
- package/dist/interfaces/restreamer.d.ts.map +1 -0
- package/dist/interfaces/router.d.ts +30 -0
- package/dist/interfaces/router.d.ts.map +1 -0
- package/dist/interfaces/scene-intelligence.d.ts +21 -0
- package/dist/interfaces/scene-intelligence.d.ts.map +1 -0
- package/dist/interfaces/scoped-token.d.ts +22 -0
- package/dist/interfaces/scoped-token.d.ts.map +1 -0
- package/dist/interfaces/server-analysis.d.ts +146 -0
- package/dist/interfaces/server-analysis.d.ts.map +1 -0
- package/dist/interfaces/server-network.d.ts +78 -0
- package/dist/interfaces/server-network.d.ts.map +1 -0
- package/dist/interfaces/storage-backend.d.ts +27 -0
- package/dist/interfaces/storage-backend.d.ts.map +1 -0
- package/dist/interfaces/storage.d.ts +174 -0
- package/dist/interfaces/storage.d.ts.map +1 -0
- package/dist/interfaces/stream-broker.d.ts +92 -0
- package/dist/interfaces/stream-broker.d.ts.map +1 -0
- package/dist/interfaces/streaming.d.ts +29 -0
- package/dist/interfaces/streaming.d.ts.map +1 -0
- package/dist/interfaces/task-handler.d.ts +46 -0
- package/dist/interfaces/task-handler.d.ts.map +1 -0
- package/dist/interfaces/webrtc-provider.d.ts +11 -0
- package/dist/interfaces/webrtc-provider.d.ts.map +1 -0
- package/dist/interfaces/worker-protocol.d.ts +110 -0
- package/dist/interfaces/worker-protocol.d.ts.map +1 -0
- package/dist/schemas/system-settings-schemas.d.ts +27 -0
- package/dist/schemas/system-settings-schemas.d.ts.map +1 -0
- package/dist/types/analytics.d.ts +75 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/benchmark.d.ts +112 -0
- package/dist/types/benchmark.d.ts.map +1 -0
- package/dist/types/camera-detection.d.ts +34 -0
- package/dist/types/camera-detection.d.ts.map +1 -0
- package/dist/types/config.d.ts +37 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/detection.d.ts +93 -0
- package/dist/types/detection.d.ts.map +1 -0
- package/dist/types/device-type.d.ts +10 -0
- package/dist/types/device-type.d.ts.map +1 -0
- package/dist/types/entities.d.ts +35 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/events.d.ts +35 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/io.d.ts +25 -0
- package/dist/types/io.d.ts.map +1 -0
- package/dist/types/labels.d.ts +12 -0
- package/dist/types/labels.d.ts.map +1 -0
- package/dist/types/live-state.d.ts +47 -0
- package/dist/types/live-state.d.ts.map +1 -0
- package/dist/types/models.d.ts +79 -0
- package/dist/types/models.d.ts.map +1 -0
- package/dist/types/pipeline-schema.d.ts +78 -0
- package/dist/types/pipeline-schema.d.ts.map +1 -0
- package/dist/types/pipeline.d.ts +42 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/tracked.d.ts +21 -0
- package/dist/types/tracked.d.ts.map +1 -0
- package/dist/types/zones.d.ts +48 -0
- package/dist/types/zones.d.ts.map +1 -0
- package/dist/utils/cosine-similarity.d.ts +3 -0
- package/dist/utils/cosine-similarity.d.ts.map +1 -0
- package/dist/utils/hf-url.d.ts +2 -0
- package/dist/utils/hf-url.d.ts.map +1 -0
- package/package.json +3 -2
- package/dist/index.d.mts +0 -6702
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analysis Persistence Types — interfaces for event persistence, track trails,
|
|
3
|
+
* retention, session tracking, and known faces.
|
|
4
|
+
*
|
|
5
|
+
* These interfaces define the contracts used by the server; concrete
|
|
6
|
+
* implementations live in addon-pipeline and are received via CapabilityRegistry.
|
|
7
|
+
*/
|
|
8
|
+
import type { ServerTrackedDetection } from './server-analysis.js';
|
|
9
|
+
export interface ObjectSnapshotResult {
|
|
10
|
+
readonly trackId: string;
|
|
11
|
+
readonly thumbnail?: Buffer;
|
|
12
|
+
readonly fullCrop?: Buffer;
|
|
13
|
+
}
|
|
14
|
+
export interface AnnotatedSnapshotResult {
|
|
15
|
+
readonly thumbnail: Buffer;
|
|
16
|
+
readonly full: Buffer;
|
|
17
|
+
}
|
|
18
|
+
export interface PersistableEvent {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly timestamp: number;
|
|
21
|
+
readonly deviceId: string;
|
|
22
|
+
readonly category: string;
|
|
23
|
+
readonly className: string;
|
|
24
|
+
readonly score: number;
|
|
25
|
+
readonly trackId: string;
|
|
26
|
+
readonly severity: string;
|
|
27
|
+
readonly description: string;
|
|
28
|
+
readonly data: Record<string, unknown>;
|
|
29
|
+
readonly mediaFiles: readonly string[];
|
|
30
|
+
}
|
|
31
|
+
export interface EventBufferStatus {
|
|
32
|
+
readonly eventCount: number;
|
|
33
|
+
readonly mediaCount: number;
|
|
34
|
+
readonly mediaSizeMB: number;
|
|
35
|
+
}
|
|
36
|
+
export type TrackMediaType = 'crop-thumb' | 'crop-full' | 'debug-annotated-thumb' | 'debug-annotated-full' | 'original' | 'original-thumb' | 'inline-crop' | 'unknown';
|
|
37
|
+
export interface TrackMediaFile {
|
|
38
|
+
readonly path: string;
|
|
39
|
+
readonly type: TrackMediaType;
|
|
40
|
+
readonly data: Buffer;
|
|
41
|
+
readonly source: 'buffer' | 'storage';
|
|
42
|
+
}
|
|
43
|
+
export interface TrackCaptureConfig {
|
|
44
|
+
readonly enabled: boolean;
|
|
45
|
+
readonly snapshotIntervalMs: number;
|
|
46
|
+
readonly maxTrailLength: number;
|
|
47
|
+
readonly saveThumbnails: boolean;
|
|
48
|
+
readonly thumbnailSize: {
|
|
49
|
+
readonly width: number;
|
|
50
|
+
readonly height: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export interface TrackPosition {
|
|
54
|
+
readonly x: number;
|
|
55
|
+
readonly y: number;
|
|
56
|
+
readonly timestamp: number;
|
|
57
|
+
readonly bbox: readonly [number, number, number, number];
|
|
58
|
+
}
|
|
59
|
+
export interface TrackSnapshot {
|
|
60
|
+
readonly timestamp: number;
|
|
61
|
+
readonly position: TrackPosition;
|
|
62
|
+
readonly thumbnailPath: string;
|
|
63
|
+
}
|
|
64
|
+
export interface TrackTrail {
|
|
65
|
+
readonly trackId: string;
|
|
66
|
+
readonly deviceId: string;
|
|
67
|
+
readonly className: string;
|
|
68
|
+
readonly label?: string;
|
|
69
|
+
readonly firstSeen: number;
|
|
70
|
+
readonly lastSeen: number;
|
|
71
|
+
readonly positions: readonly TrackPosition[];
|
|
72
|
+
readonly snapshots: readonly TrackSnapshot[];
|
|
73
|
+
readonly totalDistance: number;
|
|
74
|
+
readonly zonesVisited: readonly string[];
|
|
75
|
+
readonly active: boolean;
|
|
76
|
+
}
|
|
77
|
+
export interface RetentionConfig {
|
|
78
|
+
readonly cleanupIntervalMs: number;
|
|
79
|
+
readonly detectionEventsDays: number;
|
|
80
|
+
readonly audioLevelsDays: number;
|
|
81
|
+
/** @deprecated — snapshots are tied to events, use detectionEventsDays */
|
|
82
|
+
readonly snapshotsDays: number;
|
|
83
|
+
readonly deviceOverrides?: Readonly<Record<string, Partial<Pick<RetentionConfig, 'detectionEventsDays' | 'audioLevelsDays' | 'snapshotsDays'>>>>;
|
|
84
|
+
}
|
|
85
|
+
export declare const DEFAULT_RETENTION: RetentionConfig;
|
|
86
|
+
export interface RetentionReport {
|
|
87
|
+
readonly deletedEvents: number;
|
|
88
|
+
readonly deletedAudioRecords: number;
|
|
89
|
+
readonly deletedSnapshots: number;
|
|
90
|
+
}
|
|
91
|
+
export interface SessionTrack {
|
|
92
|
+
readonly trackId: string;
|
|
93
|
+
readonly deviceId: string;
|
|
94
|
+
readonly className: string;
|
|
95
|
+
readonly label?: string;
|
|
96
|
+
readonly firstSeen: number;
|
|
97
|
+
readonly lastSeen: number;
|
|
98
|
+
readonly totalFrames: number;
|
|
99
|
+
readonly lastDetection: ServerTrackedDetection;
|
|
100
|
+
readonly state: string;
|
|
101
|
+
readonly positions: ReadonlyArray<{
|
|
102
|
+
readonly x: number;
|
|
103
|
+
readonly y: number;
|
|
104
|
+
readonly t: number;
|
|
105
|
+
}>;
|
|
106
|
+
readonly embedding?: Float32Array;
|
|
107
|
+
readonly globalId?: string;
|
|
108
|
+
readonly bestCrop?: Buffer;
|
|
109
|
+
}
|
|
110
|
+
export interface GlobalIdentity {
|
|
111
|
+
readonly globalId: string;
|
|
112
|
+
readonly embedding: Float32Array;
|
|
113
|
+
readonly label?: string;
|
|
114
|
+
readonly firstSeen: number;
|
|
115
|
+
readonly lastSeen: number;
|
|
116
|
+
readonly deviceIds: ReadonlyArray<string>;
|
|
117
|
+
}
|
|
118
|
+
export interface ClipRecognizer {
|
|
119
|
+
getEmbedding(imageBuffer: Buffer): Promise<Float32Array>;
|
|
120
|
+
}
|
|
121
|
+
export interface KnownFaceEntry {
|
|
122
|
+
readonly id: string;
|
|
123
|
+
readonly label: string;
|
|
124
|
+
readonly group?: string;
|
|
125
|
+
readonly embedding: readonly number[];
|
|
126
|
+
readonly cropBase64: string;
|
|
127
|
+
readonly createdAt: number;
|
|
128
|
+
readonly updatedAt: number;
|
|
129
|
+
readonly source?: string;
|
|
130
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Interface for the recording addon — the server uses this instead of
|
|
134
|
+
* importing PipelineAddon directly from addon-pipeline.
|
|
135
|
+
*/
|
|
136
|
+
export interface IRecordingAddon {
|
|
137
|
+
getCoordinator(): IRecordingCoordinator;
|
|
138
|
+
getRecordingDb(): IRecordingDb;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Minimal coordinator interface for the server's recording router.
|
|
142
|
+
*/
|
|
143
|
+
export interface IRecordingCoordinator {
|
|
144
|
+
enableRecording(deviceId: string, options: {
|
|
145
|
+
policy: unknown;
|
|
146
|
+
ffmpegOverrides?: unknown;
|
|
147
|
+
}): Promise<void>;
|
|
148
|
+
disableRecording(deviceId: string): Promise<void>;
|
|
149
|
+
isRecording(deviceId: string): boolean;
|
|
150
|
+
readonly playlistGenerator: {
|
|
151
|
+
generate(deviceId: string, streamId: string, startTime: number, endTime: number, options?: {
|
|
152
|
+
live?: boolean;
|
|
153
|
+
}): unknown;
|
|
154
|
+
};
|
|
155
|
+
readonly storageEstimator: {
|
|
156
|
+
estimateForDevice(deviceId: string, motionInput?: {
|
|
157
|
+
avgEventsPerDay: number;
|
|
158
|
+
avgDurationSec: number;
|
|
159
|
+
}): {
|
|
160
|
+
totalEstimatedGb: number;
|
|
161
|
+
[key: string]: unknown;
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Minimal recording database interface for the server's recording router.
|
|
167
|
+
*/
|
|
168
|
+
export interface IRecordingDb {
|
|
169
|
+
upsertStorageConfig(config: {
|
|
170
|
+
deviceId: string;
|
|
171
|
+
dataCategory: string;
|
|
172
|
+
storageName: string;
|
|
173
|
+
subDirectory: string;
|
|
174
|
+
retentionDays: number | null;
|
|
175
|
+
retentionGb: number | null;
|
|
176
|
+
}): void;
|
|
177
|
+
getPolicy(deviceId: string): unknown;
|
|
178
|
+
getEnabledPolicies(): Array<{
|
|
179
|
+
deviceId: string;
|
|
180
|
+
[key: string]: unknown;
|
|
181
|
+
}>;
|
|
182
|
+
querySegments(deviceId: string, streamId: string, startTime: number, endTime: number): unknown;
|
|
183
|
+
getAvailability(deviceId: string, startTime: number, endTime: number): unknown;
|
|
184
|
+
getStorageUsage(deviceId: string, streamId: string): unknown;
|
|
185
|
+
upsertPolicy(policy: unknown): void;
|
|
186
|
+
findNearestThumbnail(deviceId: string, timestamp: number, category: string): unknown;
|
|
187
|
+
getMotionStats(deviceId: string, startTime: number, endTime: number): {
|
|
188
|
+
avgEventsPerDay: number;
|
|
189
|
+
avgDurationSec: number;
|
|
190
|
+
dutyCyclePercent: number;
|
|
191
|
+
totalEvents: number;
|
|
192
|
+
};
|
|
193
|
+
resolveStorageConfig(deviceId: string, dataCategory: string): unknown;
|
|
194
|
+
}
|
|
195
|
+
export interface IEventPersistence {
|
|
196
|
+
start(): void;
|
|
197
|
+
stop(): void;
|
|
198
|
+
saveDetectionCrops(eventId: string, crops: readonly ObjectSnapshotResult[]): void;
|
|
199
|
+
saveAnnotatedFrame(eventId: string, result: AnnotatedSnapshotResult): void;
|
|
200
|
+
saveOriginalFrame(eventId: string, frame: import('./camera-pipeline.js').VideoFrame): Promise<void>;
|
|
201
|
+
getEventMedia(eventId: string): Promise<unknown>;
|
|
202
|
+
getTrackMedia(trackId: string): Promise<unknown>;
|
|
203
|
+
getDeviceMedia(deviceId: string, since?: number, until?: number): Promise<unknown>;
|
|
204
|
+
getBufferStatus(): unknown;
|
|
205
|
+
flush(): Promise<void>;
|
|
206
|
+
}
|
|
207
|
+
export interface ITrackTrail {
|
|
208
|
+
setConfig(deviceId: string, config: Partial<TrackCaptureConfig>): void;
|
|
209
|
+
getConfig(deviceId: string): unknown;
|
|
210
|
+
recordFrame(ctx: unknown): Promise<void>;
|
|
211
|
+
getActiveTrail(trackId: string): unknown;
|
|
212
|
+
getActiveTrails(deviceId: string): unknown;
|
|
213
|
+
getPersistedTrail(trackId: string): Promise<unknown>;
|
|
214
|
+
getTrail(trackId: string): Promise<unknown>;
|
|
215
|
+
listTrails(deviceId: string, options?: {
|
|
216
|
+
since?: number;
|
|
217
|
+
until?: number;
|
|
218
|
+
limit?: number;
|
|
219
|
+
className?: string;
|
|
220
|
+
}): Promise<unknown>;
|
|
221
|
+
}
|
|
222
|
+
export interface IRetention {
|
|
223
|
+
start(): void;
|
|
224
|
+
stop(): void;
|
|
225
|
+
runCleanup(): Promise<unknown>;
|
|
226
|
+
setConfig(update: Partial<RetentionConfig>): void;
|
|
227
|
+
getConfig(): unknown;
|
|
228
|
+
forceCleanup(): Promise<unknown>;
|
|
229
|
+
}
|
|
230
|
+
export interface ISessionTracker {
|
|
231
|
+
updateFromAnalysis(deviceId: string, ctx: unknown): void;
|
|
232
|
+
getActiveTracks(deviceId: string): unknown;
|
|
233
|
+
getAllActiveTracks(): unknown;
|
|
234
|
+
getTrack(deviceId: string, trackId: string): unknown;
|
|
235
|
+
getTrackCounts(): unknown;
|
|
236
|
+
clearDevice(deviceId: string): void;
|
|
237
|
+
clearAll(): void;
|
|
238
|
+
getGlobalPool(): unknown;
|
|
239
|
+
}
|
|
240
|
+
export interface IKnownFaces {
|
|
241
|
+
register(entry: KnownFaceEntry): Promise<void>;
|
|
242
|
+
listAll(): Promise<unknown>;
|
|
243
|
+
delete(id: string): Promise<void>;
|
|
244
|
+
update(id: string, updates: Partial<Pick<KnownFaceEntry, 'label' | 'group'>>): Promise<void>;
|
|
245
|
+
recalculateEmbedding(id: string, clipRecognizer: ClipRecognizer): Promise<void>;
|
|
246
|
+
findMatch(embedding: Float32Array, threshold: number): Promise<unknown>;
|
|
247
|
+
batchRegister(entries: ReadonlyArray<{
|
|
248
|
+
readonly label: string;
|
|
249
|
+
readonly cropBase64: string;
|
|
250
|
+
readonly group?: string;
|
|
251
|
+
}>, clipRecognizer: ClipRecognizer): Promise<unknown>;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Composite interface exposed via CapabilityRegistry as the
|
|
255
|
+
* 'analysis-data-persistence' singleton. Each sub-service is wired
|
|
256
|
+
* individually to the corresponding NestJS wrapper service.
|
|
257
|
+
*/
|
|
258
|
+
export interface IAnalysisDataPersistence {
|
|
259
|
+
readonly eventPersistence: IEventPersistence;
|
|
260
|
+
readonly knownFaces: IKnownFaces;
|
|
261
|
+
readonly sessionTracker: ISessionTracker;
|
|
262
|
+
readonly retention: IRetention;
|
|
263
|
+
readonly trackTrail: ITrackTrail;
|
|
264
|
+
}
|
|
265
|
+
export interface TestConnectionResult {
|
|
266
|
+
readonly success: boolean;
|
|
267
|
+
readonly version?: string;
|
|
268
|
+
readonly cameraCount?: number;
|
|
269
|
+
readonly error?: string;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Generic interface for testing provider connections.
|
|
273
|
+
* Each provider addon can expose a connection tester.
|
|
274
|
+
*/
|
|
275
|
+
export interface IProviderConnectionTester {
|
|
276
|
+
testConnection(): Promise<TestConnectionResult>;
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=analysis-persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis-persistence.d.ts","sourceRoot":"","sources":["../../src/interfaces/analysis-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ICamstackAddon } from './addon.js';
|
|
2
|
+
import type { FrameInput } from '../types/io.js';
|
|
3
|
+
import type { PipelineConfig, PipelineStatus } from '../types/pipeline.js';
|
|
4
|
+
import type { DetectionEvent } from '../types/events.js';
|
|
5
|
+
import type { KnownFace, KnownPlate } from '../types/entities.js';
|
|
6
|
+
import type { CameraZone, MotionSource } from '../types/zones.js';
|
|
7
|
+
import type { CameraLiveState, TrackedObjectSummary, ZoneLiveState } from '../types/live-state.js';
|
|
8
|
+
import type { TrackDetail, TrackFilter, ZoneHistoryPoint, HeatmapData, HeatmapOptions, TimeRangeOptions } from '../types/analytics.js';
|
|
9
|
+
export interface ICameraAnalyticsProvider {
|
|
10
|
+
getLiveState(deviceId: string): CameraLiveState | null;
|
|
11
|
+
getTracks(deviceId: string, filter?: TrackFilter): TrackedObjectSummary[];
|
|
12
|
+
getZoneState(deviceId: string, zoneId: string): ZoneLiveState | null;
|
|
13
|
+
getZoneHistory(deviceId: string, zoneId: string, options: TimeRangeOptions): Promise<ZoneHistoryPoint[]>;
|
|
14
|
+
getHeatmap(deviceId: string, options: HeatmapOptions): Promise<HeatmapData>;
|
|
15
|
+
getTrackDetail(deviceId: string, trackId: string): TrackDetail | null;
|
|
16
|
+
getCameraStatus(deviceId: string): PipelineStatus[];
|
|
17
|
+
}
|
|
18
|
+
export interface IAnalysisAddon extends ICamstackAddon, ICameraAnalyticsProvider {
|
|
19
|
+
processFrame(deviceId: string, frame: FrameInput): Promise<DetectionEvent[]>;
|
|
20
|
+
setCameraPipeline(deviceId: string, config: PipelineConfig): void;
|
|
21
|
+
setCameraZones(deviceId: string, zones: readonly CameraZone[]): void;
|
|
22
|
+
setCameraMotionConfig(deviceId: string, source: MotionSource): void;
|
|
23
|
+
setKnownFaces(faces: KnownFace[]): void;
|
|
24
|
+
setKnownPlates(plates: KnownPlate[]): void;
|
|
25
|
+
onLiveStateChange(deviceId: string, callback: (state: CameraLiveState) => void): () => void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/interfaces/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAEtI,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAA;IACtD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,oBAAoB,EAAE,CAAA;IACzE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAA;IACpE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACxG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3E,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAA;IACrE,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAAA;CACpD;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc,EAAE,wBAAwB;IAC9E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAC5E,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;IACjE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAA;IACpE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACnE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IACvC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAC1C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5F"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API-shared types — types that originated in @camstack/core, @camstack/kernel,
|
|
3
|
+
* or server internals and are now canonical here so the generated API type file
|
|
4
|
+
* has zero external dependencies beyond @camstack/types.
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderStatus } from './device-provider.js';
|
|
7
|
+
import type { ElementStatus } from './lifecycle.js';
|
|
8
|
+
import type { CameraPriority, CameraPhase } from './stream-broker.js';
|
|
9
|
+
import type { AddonPageDeclaration } from './addon.js';
|
|
10
|
+
export interface BackupManifest {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly timestamp: number;
|
|
13
|
+
readonly label?: string;
|
|
14
|
+
readonly locations: readonly string[];
|
|
15
|
+
readonly sizeMB: number;
|
|
16
|
+
readonly path: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ProviderListItem {
|
|
19
|
+
id: string;
|
|
20
|
+
type: string;
|
|
21
|
+
name: string;
|
|
22
|
+
status: ProviderStatus;
|
|
23
|
+
started: boolean;
|
|
24
|
+
lifecycle: ElementStatus;
|
|
25
|
+
}
|
|
26
|
+
export interface InstalledPackage {
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly version: string;
|
|
29
|
+
readonly dir: string;
|
|
30
|
+
readonly installSource?: 'npm' | 'workspace';
|
|
31
|
+
}
|
|
32
|
+
/** A page declaration enriched with its source addon ID */
|
|
33
|
+
export interface AddonPageInfo {
|
|
34
|
+
readonly addonId: string;
|
|
35
|
+
readonly page: AddonPageDeclaration;
|
|
36
|
+
readonly bundleUrl: string;
|
|
37
|
+
}
|
|
38
|
+
export type BenchmarkPhase = 'init' | 'warmup' | 'running' | 'done';
|
|
39
|
+
export interface BenchmarkProgress {
|
|
40
|
+
readonly addonId: string;
|
|
41
|
+
readonly phase: BenchmarkPhase;
|
|
42
|
+
readonly elapsedSec: number;
|
|
43
|
+
readonly totalSec: number;
|
|
44
|
+
readonly warmupFrame: number;
|
|
45
|
+
readonly warmupTotal: number;
|
|
46
|
+
readonly framesProcessed: number;
|
|
47
|
+
readonly totalDetections: number;
|
|
48
|
+
readonly objectsFound: number;
|
|
49
|
+
readonly errorCount: number;
|
|
50
|
+
readonly simulatedCameras: number;
|
|
51
|
+
readonly batchSize: number;
|
|
52
|
+
readonly currentDps: number;
|
|
53
|
+
readonly currentFps: number;
|
|
54
|
+
readonly recentAvgMs: number;
|
|
55
|
+
readonly inferenceMs: number;
|
|
56
|
+
}
|
|
57
|
+
export interface BenchmarkResult {
|
|
58
|
+
readonly addonId: string;
|
|
59
|
+
readonly addonName: string;
|
|
60
|
+
readonly referenceImage: string;
|
|
61
|
+
readonly runtime: string;
|
|
62
|
+
readonly iterations: number;
|
|
63
|
+
readonly durationSec: number;
|
|
64
|
+
readonly warmup: number;
|
|
65
|
+
readonly inputResolution: string;
|
|
66
|
+
readonly dps: number;
|
|
67
|
+
readonly totalDetections: number;
|
|
68
|
+
readonly objectsFound: number;
|
|
69
|
+
readonly avgDetectionsPerFrame: number;
|
|
70
|
+
readonly inferenceAvgMs: number;
|
|
71
|
+
readonly inferenceP50Ms: number;
|
|
72
|
+
readonly inferenceP95Ms: number;
|
|
73
|
+
readonly inferenceP99Ms: number;
|
|
74
|
+
readonly fps: number;
|
|
75
|
+
readonly avgMs: number;
|
|
76
|
+
readonly p50Ms: number;
|
|
77
|
+
readonly p95Ms: number;
|
|
78
|
+
readonly p99Ms: number;
|
|
79
|
+
readonly minMs: number;
|
|
80
|
+
readonly maxMs: number;
|
|
81
|
+
readonly peakMemoryMB: number;
|
|
82
|
+
readonly errorCount: number;
|
|
83
|
+
readonly successCount: number;
|
|
84
|
+
readonly modelId: string;
|
|
85
|
+
readonly simulatedCameras: number;
|
|
86
|
+
readonly batchSize: number;
|
|
87
|
+
}
|
|
88
|
+
export interface HistoryEntry {
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly date: string;
|
|
91
|
+
readonly agentName: string;
|
|
92
|
+
readonly addonId: string;
|
|
93
|
+
readonly modelName: string;
|
|
94
|
+
readonly runtime: string;
|
|
95
|
+
readonly dps: number;
|
|
96
|
+
readonly inferenceAvgMs: number;
|
|
97
|
+
readonly totalDetections: number;
|
|
98
|
+
readonly fps: number;
|
|
99
|
+
readonly avgMs: number;
|
|
100
|
+
readonly p50Ms: number;
|
|
101
|
+
readonly p95Ms: number;
|
|
102
|
+
readonly p99Ms: number;
|
|
103
|
+
readonly minMs: number;
|
|
104
|
+
readonly maxMs: number;
|
|
105
|
+
readonly peakMemoryMB: number;
|
|
106
|
+
readonly iterations: number;
|
|
107
|
+
readonly warmup: number;
|
|
108
|
+
readonly inputResolution: string;
|
|
109
|
+
readonly simulatedCameras?: number;
|
|
110
|
+
readonly batchSize?: number;
|
|
111
|
+
readonly errorCount?: number;
|
|
112
|
+
}
|
|
113
|
+
export interface PipelineProgressEvent {
|
|
114
|
+
readonly step: 'loading-engine' | 'inferring' | 'complete';
|
|
115
|
+
readonly addonId: string;
|
|
116
|
+
readonly modelId: string;
|
|
117
|
+
readonly ms?: number;
|
|
118
|
+
readonly message?: string;
|
|
119
|
+
}
|
|
120
|
+
export interface OrchestratorMetrics {
|
|
121
|
+
readonly activeCameras: number;
|
|
122
|
+
readonly throttledCameras: number;
|
|
123
|
+
readonly avgInferenceTimeMs: number;
|
|
124
|
+
readonly queueDepth: number;
|
|
125
|
+
}
|
|
126
|
+
export interface CameraMetrics {
|
|
127
|
+
readonly priority: CameraPriority;
|
|
128
|
+
readonly configuredFps: number;
|
|
129
|
+
readonly actualFps: number;
|
|
130
|
+
readonly queueDepth: number;
|
|
131
|
+
readonly avgInferenceTimeMs: number;
|
|
132
|
+
readonly droppedFrames: number;
|
|
133
|
+
readonly phase: CameraPhase;
|
|
134
|
+
}
|
|
135
|
+
export interface PackageUpdate {
|
|
136
|
+
readonly name: string;
|
|
137
|
+
readonly currentVersion: string;
|
|
138
|
+
readonly latestVersion: string;
|
|
139
|
+
readonly category: 'addon' | 'core';
|
|
140
|
+
readonly requiresRestart: boolean;
|
|
141
|
+
}
|
|
142
|
+
export interface UpdateResult {
|
|
143
|
+
readonly success: boolean;
|
|
144
|
+
readonly version: string;
|
|
145
|
+
readonly requiresRestart: boolean;
|
|
146
|
+
readonly error?: string;
|
|
147
|
+
}
|
|
148
|
+
export interface DetectorDetails {
|
|
149
|
+
id: string;
|
|
150
|
+
name: string;
|
|
151
|
+
models: Array<{
|
|
152
|
+
id: string;
|
|
153
|
+
name: string;
|
|
154
|
+
inputSize?: {
|
|
155
|
+
width: number;
|
|
156
|
+
height: number;
|
|
157
|
+
};
|
|
158
|
+
}>;
|
|
159
|
+
runtimes: Array<{
|
|
160
|
+
value: string;
|
|
161
|
+
label: string;
|
|
162
|
+
}>;
|
|
163
|
+
backends: Array<{
|
|
164
|
+
value: string;
|
|
165
|
+
label: string;
|
|
166
|
+
}>;
|
|
167
|
+
defaultConfig: Record<string, unknown> | null;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=api-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-shared.d.ts","sourceRoot":"","sources":["../../src/interfaces/api-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result returned by an auth provider after successful authentication.
|
|
3
|
+
*/
|
|
4
|
+
export interface AuthResult {
|
|
5
|
+
readonly externalId: string;
|
|
6
|
+
readonly username: string;
|
|
7
|
+
readonly email?: string;
|
|
8
|
+
readonly displayName?: string;
|
|
9
|
+
readonly avatarUrl?: string;
|
|
10
|
+
readonly groups?: string[];
|
|
11
|
+
readonly rawProfile?: unknown;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Pluggable authentication provider.
|
|
15
|
+
* Each addon can register one or more auth providers (collection capability).
|
|
16
|
+
*/
|
|
17
|
+
export interface IAuthProvider {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly icon: string;
|
|
21
|
+
/** Type of auth flow */
|
|
22
|
+
readonly flowType: 'credentials' | 'redirect' | 'token';
|
|
23
|
+
/**
|
|
24
|
+
* For 'credentials' flow: validate username/password, return user info.
|
|
25
|
+
*/
|
|
26
|
+
validateCredentials?(username: string, password: string): Promise<AuthResult | null>;
|
|
27
|
+
/**
|
|
28
|
+
* For 'redirect' flow (OIDC, OAuth2):
|
|
29
|
+
* getLoginUrl() returns the URL to redirect the user to.
|
|
30
|
+
* handleCallback() processes the callback and returns user info.
|
|
31
|
+
*/
|
|
32
|
+
getLoginUrl?(state: string): string;
|
|
33
|
+
handleCallback?(params: Record<string, string>): Promise<AuthResult>;
|
|
34
|
+
/**
|
|
35
|
+
* For 'token' flow: validate an external token (e.g., from mobile app).
|
|
36
|
+
*/
|
|
37
|
+
validateToken?(token: string): Promise<AuthResult | null>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=auth-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-provider.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,CAAA;IAEvD;;OAEG;IACH,mBAAmB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IAEpF;;;;OAIG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACnC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEpE;;OAEG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAC1D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type UserRole = 'super_admin' | 'admin' | 'viewer' | 'agent';
|
|
2
|
+
export interface UserPermissions {
|
|
3
|
+
role: UserRole;
|
|
4
|
+
allowedProviders: string[] | '*';
|
|
5
|
+
allowedDevices: Record<string, string[] | '*'>;
|
|
6
|
+
}
|
|
7
|
+
export interface UserRecord {
|
|
8
|
+
id: string;
|
|
9
|
+
username: string;
|
|
10
|
+
passwordHash: string;
|
|
11
|
+
role: UserRole;
|
|
12
|
+
allowedProviders: string[] | '*';
|
|
13
|
+
allowedDevices: Record<string, string[] | '*'>;
|
|
14
|
+
createdAt: number;
|
|
15
|
+
updatedAt: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ApiKeyRecord {
|
|
18
|
+
id: string;
|
|
19
|
+
label: string;
|
|
20
|
+
role: UserRole;
|
|
21
|
+
allowedProviders: string[] | '*';
|
|
22
|
+
allowedDevices: Record<string, string[] | '*'>;
|
|
23
|
+
tokenHash: string;
|
|
24
|
+
tokenPrefix: string;
|
|
25
|
+
createdAt: number;
|
|
26
|
+
lastUsedAt?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface TokenPayload {
|
|
29
|
+
type?: 'api_key' | 'service';
|
|
30
|
+
keyId?: string;
|
|
31
|
+
userId?: string;
|
|
32
|
+
username?: string;
|
|
33
|
+
role: UserRole;
|
|
34
|
+
agentId?: string;
|
|
35
|
+
allowedProviders: string[] | '*';
|
|
36
|
+
allowedDevices: Record<string, string[] | '*'>;
|
|
37
|
+
iat?: number;
|
|
38
|
+
exp?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface AuthenticatedUser {
|
|
41
|
+
id: string;
|
|
42
|
+
username: string;
|
|
43
|
+
role: UserRole;
|
|
44
|
+
permissions: UserPermissions;
|
|
45
|
+
isApiKey: boolean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEnE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB"}
|