@camstack/types 0.1.1 → 0.1.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 (200) hide show
  1. package/dist/__tests__/addon-capability-provider.test.d.ts +2 -0
  2. package/dist/__tests__/addon-capability-provider.test.d.ts.map +1 -0
  3. package/dist/__tests__/addon-declaration.test.d.ts +2 -0
  4. package/dist/__tests__/addon-declaration.test.d.ts.map +1 -0
  5. package/dist/__tests__/capability.test.d.ts +2 -0
  6. package/dist/__tests__/capability.test.d.ts.map +1 -0
  7. package/dist/catalogs/coco-classmap.d.ts +5 -0
  8. package/dist/catalogs/coco-classmap.d.ts.map +1 -0
  9. package/dist/catalogs/index.d.ts +2 -0
  10. package/dist/catalogs/index.d.ts.map +1 -0
  11. package/dist/constants.d.ts +3 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/generated/addon-api.d.ts +4870 -0
  14. package/dist/generated/addon-api.d.ts.map +1 -0
  15. package/dist/index.d.ts +82 -3053
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +377 -8
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +369 -7
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/interfaces/addon-i18n.d.ts +41 -0
  22. package/dist/interfaces/addon-i18n.d.ts.map +1 -0
  23. package/dist/interfaces/addon-routes.d.ts +50 -0
  24. package/dist/interfaces/addon-routes.d.ts.map +1 -0
  25. package/dist/interfaces/addon.d.ts +294 -0
  26. package/dist/interfaces/addon.d.ts.map +1 -0
  27. package/dist/interfaces/advanced-notifier.d.ts +59 -0
  28. package/dist/interfaces/advanced-notifier.d.ts.map +1 -0
  29. package/dist/interfaces/agent-protocol.d.ts +189 -0
  30. package/dist/interfaces/agent-protocol.d.ts.map +1 -0
  31. package/dist/interfaces/agent.d.ts +87 -0
  32. package/dist/interfaces/agent.d.ts.map +1 -0
  33. package/dist/interfaces/analysis-persistence.d.ts +278 -0
  34. package/dist/interfaces/analysis-persistence.d.ts.map +1 -0
  35. package/dist/interfaces/analysis.d.ts +27 -0
  36. package/dist/interfaces/analysis.d.ts.map +1 -0
  37. package/dist/interfaces/api-shared.d.ts +168 -0
  38. package/dist/interfaces/api-shared.d.ts.map +1 -0
  39. package/dist/interfaces/auth-provider.d.ts +39 -0
  40. package/dist/interfaces/auth-provider.d.ts.map +1 -0
  41. package/dist/interfaces/auth.d.ts +47 -0
  42. package/dist/interfaces/auth.d.ts.map +1 -0
  43. package/dist/interfaces/camera-pipeline.d.ts +121 -0
  44. package/dist/interfaces/camera-pipeline.d.ts.map +1 -0
  45. package/dist/interfaces/capability.d.ts +84 -0
  46. package/dist/interfaces/capability.d.ts.map +1 -0
  47. package/dist/interfaces/classifier.d.ts +8 -0
  48. package/dist/interfaces/classifier.d.ts.map +1 -0
  49. package/dist/interfaces/config-ui.d.ts +152 -0
  50. package/dist/interfaces/config-ui.d.ts.map +1 -0
  51. package/dist/interfaces/context.d.ts +44 -0
  52. package/dist/interfaces/context.d.ts.map +1 -0
  53. package/dist/interfaces/cropper.d.ts +8 -0
  54. package/dist/interfaces/cropper.d.ts.map +1 -0
  55. package/dist/interfaces/decoder.d.ts +27 -0
  56. package/dist/interfaces/decoder.d.ts.map +1 -0
  57. package/dist/interfaces/detection-addon.d.ts +15 -0
  58. package/dist/interfaces/detection-addon.d.ts.map +1 -0
  59. package/dist/interfaces/detector.d.ts +8 -0
  60. package/dist/interfaces/detector.d.ts.map +1 -0
  61. package/dist/interfaces/device-capabilities/accessory.d.ts +14 -0
  62. package/dist/interfaces/device-capabilities/accessory.d.ts.map +1 -0
  63. package/dist/interfaces/device-capabilities/audio-detector.d.ts +12 -0
  64. package/dist/interfaces/device-capabilities/audio-detector.d.ts.map +1 -0
  65. package/dist/interfaces/device-capabilities/camera.d.ts +22 -0
  66. package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -0
  67. package/dist/interfaces/device-capabilities/doorbell.d.ts +10 -0
  68. package/dist/interfaces/device-capabilities/doorbell.d.ts.map +1 -0
  69. package/dist/interfaces/device-capabilities/events.d.ts +47 -0
  70. package/dist/interfaces/device-capabilities/events.d.ts.map +1 -0
  71. package/dist/interfaces/device-capabilities/index.d.ts +15 -0
  72. package/dist/interfaces/device-capabilities/index.d.ts.map +1 -0
  73. package/dist/interfaces/device-capabilities/motion-sensor.d.ts +7 -0
  74. package/dist/interfaces/device-capabilities/motion-sensor.d.ts.map +1 -0
  75. package/dist/interfaces/device-capabilities/native-detection.d.ts +14 -0
  76. package/dist/interfaces/device-capabilities/native-detection.d.ts.map +1 -0
  77. package/dist/interfaces/device-capabilities/object-detector.d.ts +59 -0
  78. package/dist/interfaces/device-capabilities/object-detector.d.ts.map +1 -0
  79. package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts +29 -0
  80. package/dist/interfaces/device-capabilities/pan-tilt-zoom.d.ts.map +1 -0
  81. package/dist/interfaces/device-capabilities/recording.d.ts +18 -0
  82. package/dist/interfaces/device-capabilities/recording.d.ts.map +1 -0
  83. package/dist/interfaces/device-capabilities/siren.d.ts +8 -0
  84. package/dist/interfaces/device-capabilities/siren.d.ts.map +1 -0
  85. package/dist/interfaces/device-capabilities/status-light.d.ts +7 -0
  86. package/dist/interfaces/device-capabilities/status-light.d.ts.map +1 -0
  87. package/dist/interfaces/device-capabilities/switch.d.ts +8 -0
  88. package/dist/interfaces/device-capabilities/switch.d.ts.map +1 -0
  89. package/dist/interfaces/device-capabilities/two-way-audio.d.ts +8 -0
  90. package/dist/interfaces/device-capabilities/two-way-audio.d.ts.map +1 -0
  91. package/dist/interfaces/device-capability.d.ts +14 -0
  92. package/dist/interfaces/device-capability.d.ts.map +1 -0
  93. package/dist/interfaces/device-provider.d.ts +43 -0
  94. package/dist/interfaces/device-provider.d.ts.map +1 -0
  95. package/dist/interfaces/device.d.ts +40 -0
  96. package/dist/interfaces/device.d.ts.map +1 -0
  97. package/dist/interfaces/event-bus.d.ts +22 -0
  98. package/dist/interfaces/event-bus.d.ts.map +1 -0
  99. package/dist/interfaces/feature-flags.d.ts +14 -0
  100. package/dist/interfaces/feature-flags.d.ts.map +1 -0
  101. package/dist/interfaces/ffmpeg.d.ts +10 -0
  102. package/dist/interfaces/ffmpeg.d.ts.map +1 -0
  103. package/dist/interfaces/inference-capabilities.d.ts +101 -0
  104. package/dist/interfaces/inference-capabilities.d.ts.map +1 -0
  105. package/dist/interfaces/inference-engine.d.ts +17 -0
  106. package/dist/interfaces/inference-engine.d.ts.map +1 -0
  107. package/dist/interfaces/lifecycle.d.ts +19 -0
  108. package/dist/interfaces/lifecycle.d.ts.map +1 -0
  109. package/dist/interfaces/logging.d.ts +33 -0
  110. package/dist/interfaces/logging.d.ts.map +1 -0
  111. package/dist/interfaces/model-catalog.d.ts +25 -0
  112. package/dist/interfaces/model-catalog.d.ts.map +1 -0
  113. package/dist/interfaces/network-quality.d.ts +25 -0
  114. package/dist/interfaces/network-quality.d.ts.map +1 -0
  115. package/dist/interfaces/network.d.ts +43 -0
  116. package/dist/interfaces/network.d.ts.map +1 -0
  117. package/dist/interfaces/notification.d.ts +53 -0
  118. package/dist/interfaces/notification.d.ts.map +1 -0
  119. package/dist/interfaces/pipeline-runner.d.ts +23 -0
  120. package/dist/interfaces/pipeline-runner.d.ts.map +1 -0
  121. package/dist/interfaces/pipeline-slot.d.ts +10 -0
  122. package/dist/interfaces/pipeline-slot.d.ts.map +1 -0
  123. package/dist/interfaces/platform.d.ts +55 -0
  124. package/dist/interfaces/platform.d.ts.map +1 -0
  125. package/dist/interfaces/process.d.ts +41 -0
  126. package/dist/interfaces/process.d.ts.map +1 -0
  127. package/dist/interfaces/python-env.d.ts +20 -0
  128. package/dist/interfaces/python-env.d.ts.map +1 -0
  129. package/dist/interfaces/refiner.d.ts +8 -0
  130. package/dist/interfaces/refiner.d.ts.map +1 -0
  131. package/dist/interfaces/repl.d.ts +26 -0
  132. package/dist/interfaces/repl.d.ts.map +1 -0
  133. package/dist/interfaces/repositories.d.ts +20 -0
  134. package/dist/interfaces/repositories.d.ts.map +1 -0
  135. package/dist/interfaces/restreamer.d.ts +24 -0
  136. package/dist/interfaces/restreamer.d.ts.map +1 -0
  137. package/dist/interfaces/router.d.ts +30 -0
  138. package/dist/interfaces/router.d.ts.map +1 -0
  139. package/dist/interfaces/scene-intelligence.d.ts +21 -0
  140. package/dist/interfaces/scene-intelligence.d.ts.map +1 -0
  141. package/dist/interfaces/scoped-token.d.ts +22 -0
  142. package/dist/interfaces/scoped-token.d.ts.map +1 -0
  143. package/dist/interfaces/server-analysis.d.ts +146 -0
  144. package/dist/interfaces/server-analysis.d.ts.map +1 -0
  145. package/dist/interfaces/server-network.d.ts +78 -0
  146. package/dist/interfaces/server-network.d.ts.map +1 -0
  147. package/dist/interfaces/storage-backend.d.ts +27 -0
  148. package/dist/interfaces/storage-backend.d.ts.map +1 -0
  149. package/dist/interfaces/storage.d.ts +174 -0
  150. package/dist/interfaces/storage.d.ts.map +1 -0
  151. package/dist/interfaces/stream-broker.d.ts +92 -0
  152. package/dist/interfaces/stream-broker.d.ts.map +1 -0
  153. package/dist/interfaces/streaming.d.ts +29 -0
  154. package/dist/interfaces/streaming.d.ts.map +1 -0
  155. package/dist/interfaces/task-handler.d.ts +46 -0
  156. package/dist/interfaces/task-handler.d.ts.map +1 -0
  157. package/dist/interfaces/webrtc-provider.d.ts +11 -0
  158. package/dist/interfaces/webrtc-provider.d.ts.map +1 -0
  159. package/dist/interfaces/worker-protocol.d.ts +110 -0
  160. package/dist/interfaces/worker-protocol.d.ts.map +1 -0
  161. package/dist/schemas/system-settings-schemas.d.ts +27 -0
  162. package/dist/schemas/system-settings-schemas.d.ts.map +1 -0
  163. package/dist/types/analytics.d.ts +75 -0
  164. package/dist/types/analytics.d.ts.map +1 -0
  165. package/dist/types/benchmark.d.ts +112 -0
  166. package/dist/types/benchmark.d.ts.map +1 -0
  167. package/dist/types/camera-detection.d.ts +34 -0
  168. package/dist/types/camera-detection.d.ts.map +1 -0
  169. package/dist/types/config.d.ts +37 -0
  170. package/dist/types/config.d.ts.map +1 -0
  171. package/dist/types/detection.d.ts +93 -0
  172. package/dist/types/detection.d.ts.map +1 -0
  173. package/dist/types/device-type.d.ts +10 -0
  174. package/dist/types/device-type.d.ts.map +1 -0
  175. package/dist/types/entities.d.ts +35 -0
  176. package/dist/types/entities.d.ts.map +1 -0
  177. package/dist/types/events.d.ts +35 -0
  178. package/dist/types/events.d.ts.map +1 -0
  179. package/dist/types/io.d.ts +25 -0
  180. package/dist/types/io.d.ts.map +1 -0
  181. package/dist/types/labels.d.ts +12 -0
  182. package/dist/types/labels.d.ts.map +1 -0
  183. package/dist/types/live-state.d.ts +47 -0
  184. package/dist/types/live-state.d.ts.map +1 -0
  185. package/dist/types/models.d.ts +79 -0
  186. package/dist/types/models.d.ts.map +1 -0
  187. package/dist/types/pipeline-schema.d.ts +78 -0
  188. package/dist/types/pipeline-schema.d.ts.map +1 -0
  189. package/dist/types/pipeline.d.ts +42 -0
  190. package/dist/types/pipeline.d.ts.map +1 -0
  191. package/dist/types/tracked.d.ts +21 -0
  192. package/dist/types/tracked.d.ts.map +1 -0
  193. package/dist/types/zones.d.ts +48 -0
  194. package/dist/types/zones.d.ts.map +1 -0
  195. package/dist/utils/cosine-similarity.d.ts +3 -0
  196. package/dist/utils/cosine-similarity.d.ts.map +1 -0
  197. package/dist/utils/hf-url.d.ts +2 -0
  198. package/dist/utils/hf-url.d.ts.map +1 -0
  199. package/package.json +16 -5
  200. package/dist/index.d.mts +0 -3053
@@ -0,0 +1,174 @@
1
+ /**
2
+ * All location types that storage providers can serve.
3
+ * Each type maps to a logical category of files.
4
+ * A storage provider declares which location types it supports.
5
+ */
6
+ export type StorageLocationType = 'recordings-high' | 'recordings-low' | 'recordings-clips' | 'event-images' | 'models' | 'addons-data' | 'cache' | 'logs';
7
+ /** All location types as an array (for iteration) */
8
+ export declare const STORAGE_LOCATION_TYPES: readonly StorageLocationType[];
9
+ /** Default subdirectory names for filesystem storage */
10
+ export declare const DEFAULT_LOCATION_SUBDIRS: Readonly<Record<StorageLocationType, string>>;
11
+ /**
12
+ * A storage provider serves file-based storage for one or more location types.
13
+ * Multiple providers can coexist (local filesystem, NAS, S3, etc.).
14
+ * Each addon/system setting selects which provider to use per location type.
15
+ */
16
+ export interface IStorageProvider {
17
+ /** Unique provider ID (e.g., 'local', 'nas-synology', 's3-aws') */
18
+ readonly id: string;
19
+ /** Human-readable name (e.g., 'Local Filesystem', 'Synology NAS') */
20
+ readonly name: string;
21
+ /** Which location types this provider serves */
22
+ readonly supportedLocations: readonly StorageLocationType[];
23
+ /** Resolve an absolute path/URL for a file within a location */
24
+ resolve(location: StorageLocationType, relativePath: string): string;
25
+ /** Write file data */
26
+ write(location: StorageLocationType, relativePath: string, data: Buffer | NodeJS.ReadableStream): Promise<void>;
27
+ /** Read file data */
28
+ read(location: StorageLocationType, relativePath: string): Promise<Buffer>;
29
+ /** Check if a file exists */
30
+ exists(location: StorageLocationType, relativePath: string): Promise<boolean>;
31
+ /** List files/directories under a prefix within a location */
32
+ list(location: StorageLocationType, prefix?: string): Promise<readonly string[]>;
33
+ /** Delete a file */
34
+ delete(location: StorageLocationType, relativePath: string): Promise<void>;
35
+ /** Get available space in bytes, null if unknown (e.g., S3) */
36
+ getAvailableSpace(location: StorageLocationType): Promise<number | null>;
37
+ /** Lifecycle */
38
+ initialize(): Promise<void>;
39
+ shutdown(): Promise<void>;
40
+ }
41
+ /**
42
+ * All named collections that the settings backend manages.
43
+ * Each collection maps to a logical table/bucket in the backend.
44
+ */
45
+ export type SettingsCollection = 'system-settings' | 'addon-settings' | 'provider-settings' | 'device-settings' | 'detection-events' | 'audio-levels' | 'track-trails' | 'recording-segments' | 'recording-thumbnails' | 'recording-policies' | 'recording-storage-config' | 'recording-cleanup-queue' | 'known-faces';
46
+ /**
47
+ * Settings backend — persistent key-value and document storage.
48
+ * Default implementation: SQLite. Can be replaced by Postgres, etc.
49
+ */
50
+ export interface ISettingsBackend {
51
+ /** Get a single value by key from a collection */
52
+ get(collection: SettingsCollection, key: string): Promise<unknown>;
53
+ /** Set a value by key in a collection (upsert) */
54
+ set(collection: SettingsCollection, key: string, value: unknown): Promise<void>;
55
+ /** Get all entries matching an optional filter */
56
+ query(collection: SettingsCollection, filter?: QueryFilter): Promise<readonly SettingsRecord[]>;
57
+ /** Insert a new record */
58
+ insert(collection: SettingsCollection, record: SettingsRecord): Promise<void>;
59
+ /** Update an existing record by ID */
60
+ update(collection: SettingsCollection, id: string, data: Record<string, unknown>): Promise<void>;
61
+ /** Delete a record by key/ID */
62
+ delete(collection: SettingsCollection, key: string): Promise<void>;
63
+ /** Count entries in a collection */
64
+ count(collection: SettingsCollection, filter?: QueryFilter): Promise<number>;
65
+ /** Check if a collection is empty (used for first-boot detection) */
66
+ isEmpty(collection: SettingsCollection): Promise<boolean>;
67
+ /** Lifecycle */
68
+ initialize(): Promise<void>;
69
+ shutdown(): Promise<void>;
70
+ }
71
+ export interface SettingsRecord {
72
+ readonly id: string;
73
+ readonly data: Record<string, unknown>;
74
+ }
75
+ export interface QueryFilter {
76
+ where?: Record<string, unknown>;
77
+ whereIn?: Record<string, unknown[]>;
78
+ whereBetween?: Record<string, [unknown, unknown]>;
79
+ orderBy?: {
80
+ field: string;
81
+ direction: 'asc' | 'desc';
82
+ };
83
+ limit?: number;
84
+ offset?: number;
85
+ }
86
+ /**
87
+ * Embeddings backend — vector storage with approximate nearest neighbor search.
88
+ * Used for CLIP frame search, face recognition, plate matching.
89
+ * Default implementation: HNSW (usearch/hnswlib). Can be replaced by Qdrant, etc.
90
+ */
91
+ export interface IEmbeddingsBackend {
92
+ /** Create or open a named vector index */
93
+ openIndex(name: string, dimensions: number): Promise<IVectorIndex>;
94
+ /** List all index names */
95
+ listIndexes(): Promise<readonly string[]>;
96
+ /** Delete an index and its data */
97
+ deleteIndex(name: string): Promise<void>;
98
+ /** Lifecycle */
99
+ initialize(): Promise<void>;
100
+ shutdown(): Promise<void>;
101
+ }
102
+ export interface IVectorIndex {
103
+ /** Index name */
104
+ readonly name: string;
105
+ /** Vector dimensions */
106
+ readonly dimensions: number;
107
+ /** Insert a vector with ID and optional metadata */
108
+ insert(id: string, vector: Float32Array, metadata?: Record<string, unknown>): Promise<void>;
109
+ /** Batch insert for performance */
110
+ insertBatch(items: readonly VectorEntry[]): Promise<void>;
111
+ /** Search for nearest neighbors */
112
+ search(query: Float32Array, topK: number, filter?: EmbeddingFilter): Promise<readonly VectorSearchResult[]>;
113
+ /** Delete by ID */
114
+ delete(id: string): Promise<void>;
115
+ /** Count entries in the index */
116
+ count(): Promise<number>;
117
+ /** Flush pending writes to disk */
118
+ flush(): Promise<void>;
119
+ }
120
+ export interface VectorEntry {
121
+ readonly id: string;
122
+ readonly vector: Float32Array;
123
+ readonly metadata?: Record<string, unknown>;
124
+ }
125
+ export interface VectorSearchResult {
126
+ readonly id: string;
127
+ /** Similarity score (0-1, higher is more similar) */
128
+ readonly score: number;
129
+ readonly metadata?: Record<string, unknown>;
130
+ }
131
+ export interface EmbeddingFilter {
132
+ /** Filter by metadata key-value before vector search */
133
+ readonly where?: Record<string, unknown>;
134
+ /** Filter by timestamp range */
135
+ readonly timestampAfter?: number;
136
+ readonly timestampBefore?: number;
137
+ /** Filter by device */
138
+ readonly deviceId?: string;
139
+ }
140
+ /** @deprecated Use StorageLocationType instead */
141
+ export type StorageLocationName = StorageLocationType | 'data' | 'media' | 'recordings' | 'config' | 'events' | 'addon';
142
+ /** @deprecated Use IStorageProvider instead */
143
+ export interface StorageConfig {
144
+ locations: Record<string, string>;
145
+ }
146
+ /** @deprecated Use SettingsRecord instead */
147
+ export interface StorageRecord {
148
+ collection: string;
149
+ id: string;
150
+ data: Record<string, unknown>;
151
+ }
152
+ /** @deprecated Use ISettingsBackend instead */
153
+ export interface IStructuredStorage {
154
+ query(collection: string, filter?: QueryFilter): Promise<readonly StorageRecord[]>;
155
+ insert(record: StorageRecord): Promise<StorageRecord>;
156
+ update(collection: string, id: string, data: Record<string, unknown>): Promise<StorageRecord>;
157
+ delete(collection: string, id: string): Promise<void>;
158
+ count(collection: string, filter?: QueryFilter): Promise<number>;
159
+ }
160
+ /** @deprecated Use IStorageProvider.read/write instead */
161
+ export interface IFileStorage {
162
+ readFile(path: string): Promise<Buffer>;
163
+ writeFile(path: string, data: Buffer): Promise<void>;
164
+ deleteFile(path: string): Promise<void>;
165
+ listFiles(prefix?: string): Promise<readonly string[]>;
166
+ getFileUrl(path: string): Promise<string>;
167
+ exists(path: string): Promise<boolean>;
168
+ }
169
+ /** @deprecated Use IStorageProvider instead */
170
+ export interface IStorageLocation {
171
+ structured?: IStructuredStorage;
172
+ files?: IFileStorage;
173
+ }
174
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export type Unsubscribe = () => void;
2
+ export interface StreamSource {
3
+ readonly type: string;
4
+ readonly url: string;
5
+ readonly videoCodec?: string;
6
+ readonly audioCodec?: string;
7
+ readonly metadata?: Readonly<Record<string, unknown>>;
8
+ }
9
+ export interface StreamSourceOption {
10
+ readonly id: string;
11
+ readonly label: string;
12
+ readonly source: StreamSource;
13
+ readonly resolution?: {
14
+ readonly width: number;
15
+ readonly height: number;
16
+ };
17
+ readonly primary?: boolean;
18
+ }
19
+ export interface EncodedPacket {
20
+ readonly type: 'video' | 'audio';
21
+ readonly data: Buffer;
22
+ readonly pts: number;
23
+ readonly dts: number;
24
+ readonly keyframe: boolean;
25
+ readonly codec: string;
26
+ }
27
+ export interface DecodedFrame {
28
+ readonly data: Buffer;
29
+ readonly width: number;
30
+ readonly height: number;
31
+ readonly format: 'jpeg' | 'rgb' | 'yuv420';
32
+ readonly timestamp: number;
33
+ }
34
+ export interface DecodedAudioChunk {
35
+ readonly data: Buffer;
36
+ readonly sampleRate: number;
37
+ readonly channels: number;
38
+ readonly timestamp: number;
39
+ }
40
+ export interface DecodeOptions {
41
+ readonly maxFps?: number;
42
+ readonly format?: 'jpeg' | 'rgb' | 'yuv420';
43
+ readonly scale?: number;
44
+ }
45
+ export type BrokerStatus = 'idle' | 'connecting' | 'streaming' | 'error' | 'stopped';
46
+ export interface BrokerStats {
47
+ readonly status: BrokerStatus;
48
+ readonly inputFps: number;
49
+ readonly decodeFps: number;
50
+ readonly encodedSubscribers: number;
51
+ readonly decodedSubscribers: number;
52
+ readonly uptimeMs: number;
53
+ }
54
+ export interface IStreamBroker {
55
+ readonly deviceId: string;
56
+ readonly status: BrokerStatus;
57
+ start(source: StreamSource): Promise<void>;
58
+ stop(): Promise<void>;
59
+ onEncodedData(callback: (packet: EncodedPacket) => void): Unsubscribe;
60
+ onDecodedFrame(callback: (frame: DecodedFrame) => void, options?: DecodeOptions): Unsubscribe;
61
+ onDecodedAudioChunk(callback: (chunk: DecodedAudioChunk) => void): Unsubscribe;
62
+ getStats(): BrokerStats;
63
+ getLocalStreamUrl(): string;
64
+ }
65
+ /**
66
+ * Manager for stream brokers — the server interacts with this interface,
67
+ * while the concrete implementation lives in the addon-pipeline package.
68
+ */
69
+ export interface IStreamBrokerManager {
70
+ createBroker(brokerId: string, source: StreamSource): Promise<IStreamBroker>;
71
+ getBroker(brokerId: string): IStreamBroker | undefined;
72
+ destroyBroker(brokerId: string): Promise<void>;
73
+ destroyBrokersForDevice(deviceId: string): Promise<void>;
74
+ listBrokers(): readonly IStreamBroker[];
75
+ destroyAll(): Promise<void>;
76
+ setRestreamers(restreamers: readonly unknown[]): void;
77
+ getRestreamers(): readonly unknown[];
78
+ }
79
+ export type CameraPriority = 'always-on' | 'default';
80
+ export type CameraPhase = 'watching' | 'active';
81
+ export interface CameraDetectionConfig {
82
+ readonly enabled: boolean;
83
+ readonly priority: CameraPriority;
84
+ readonly pipeline: import('../types/pipeline.js').PipelineConfig;
85
+ readonly motionStreamId: string;
86
+ readonly detectionStreamId: string;
87
+ readonly motionFps: number;
88
+ readonly detectionFps: number;
89
+ readonly motionCooldownMs: number;
90
+ readonly audioStreamId?: string;
91
+ }
92
+ //# sourceMappingURL=stream-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-broker.d.ts","sourceRoot":"","sources":["../../src/interfaces/stream-broker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type StreamFormat = 'webrtc' | 'hls' | 'mjpeg' | 'rtsp';
2
+ export interface StreamingSource {
3
+ readonly url: string;
4
+ readonly protocol: 'rtsp' | 'http' | 'rtmp';
5
+ readonly deviceId: string;
6
+ readonly providerId: string;
7
+ readonly label?: string;
8
+ }
9
+ export interface StreamInfo {
10
+ readonly streamId: string;
11
+ readonly source: StreamingSource;
12
+ readonly formats: StreamFormat[];
13
+ }
14
+ export interface StreamStatus {
15
+ readonly active: boolean;
16
+ readonly viewers: number;
17
+ readonly startedAt?: number;
18
+ }
19
+ export interface IStreamingEngine {
20
+ initialize(config: Record<string, unknown>): Promise<void>;
21
+ shutdown(): Promise<void>;
22
+ registerStream(streamId: string, source: StreamingSource): Promise<void>;
23
+ unregisterStream(streamId: string): Promise<void>;
24
+ getStreamUrl(streamId: string, format: StreamFormat): string | null;
25
+ proxyWhepOffer(streamId: string, sdpOffer: string): Promise<string>;
26
+ listStreams(): StreamInfo[];
27
+ getStreamStatus(streamId: string): StreamStatus | null;
28
+ }
29
+ //# sourceMappingURL=streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/interfaces/streaming.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAAA;IACnE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnE,WAAW,IAAI,UAAU,EAAE,CAAA;IAC3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAA;CACvD"}
@@ -0,0 +1,46 @@
1
+ import type { IScopedLogger } from './logging.js';
2
+ /**
3
+ * Progress update sent from a task handler back to the hub.
4
+ */
5
+ export interface TaskProgress {
6
+ readonly percent?: number;
7
+ readonly message?: string;
8
+ readonly data?: unknown;
9
+ }
10
+ /**
11
+ * Context provided to a task handler when executing a task.
12
+ */
13
+ export interface TaskContext {
14
+ /** ID of the agent executing this task */
15
+ readonly taskId: string;
16
+ /** ID of the agent executing this task */
17
+ readonly agentId: string;
18
+ /** Pre-scoped logger for the task */
19
+ readonly logger: IScopedLogger;
20
+ /** Send progress updates back to hub */
21
+ reportProgress(progress: TaskProgress): void;
22
+ /** Check if the task has been cancelled */
23
+ isCancelled(): boolean;
24
+ }
25
+ /**
26
+ * Security level for a task handler. Dangerous tasks (e.g., terminal.exec)
27
+ * require explicit admin approval per agent.
28
+ */
29
+ export type TaskHandlerSecurity = 'safe' | 'dangerous';
30
+ /**
31
+ * Pluggable task handler interface. Any addon can register task handlers
32
+ * that the hub can dispatch to agents.
33
+ */
34
+ export interface ITaskHandler {
35
+ /** Unique task type identifier (e.g., 'pipeline.decode', 'system.info') */
36
+ readonly taskType: string;
37
+ /** Human-readable description */
38
+ readonly description: string;
39
+ /** Security level — dangerous tasks need explicit admin approval */
40
+ readonly security?: TaskHandlerSecurity;
41
+ /** Execute the task and return a result */
42
+ handle(payload: unknown, context: TaskContext): Promise<unknown>;
43
+ /** Optional cleanup when a running task is cancelled */
44
+ cancel?(): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=task-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../src/interfaces/task-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,wCAAwC;IACxC,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5C,2CAA2C;IAC3C,WAAW,IAAI,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,WAAW,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IACvC,2CAA2C;IAC3C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAChE,wDAAwD;IACxD,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB"}
@@ -0,0 +1,11 @@
1
+ import type { EncodedPacket } from './stream-broker.js';
2
+ export interface IWebRtcProvider {
3
+ readonly id: string;
4
+ readonly name: string;
5
+ handleOffer(streamId: string, sdpOffer: string): Promise<string>;
6
+ supportsStream(streamId: string): boolean;
7
+ registerStream(streamId: string, codec: string): Promise<void>;
8
+ pushPacket(streamId: string, packet: EncodedPacket): void;
9
+ unregisterStream(streamId: string): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=webrtc-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webrtc-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/webrtc-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IACzC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IACzD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD"}
@@ -0,0 +1,110 @@
1
+ /** Messages sent from main process to worker */
2
+ export type MainToWorkerMessage = {
3
+ type: 'INIT';
4
+ addonId: string;
5
+ addonDir: string;
6
+ config: Record<string, unknown>;
7
+ storagePaths: Record<string, string>;
8
+ /** Private data directory for this addon */
9
+ dataDir: string;
10
+ /** Legacy location paths (deprecated — use storageProvider proxy instead) */
11
+ locationPaths: Record<string, string>;
12
+ } | {
13
+ type: 'CONFIG_CHANGE';
14
+ config: Record<string, unknown>;
15
+ } | {
16
+ type: 'CAPABILITY_RESPONSE';
17
+ requestId: string;
18
+ result: unknown;
19
+ error?: string;
20
+ } | {
21
+ type: 'SHUTDOWN';
22
+ } | {
23
+ type: 'PING';
24
+ };
25
+ /** Messages sent from worker to main process */
26
+ export type WorkerToMainMessage = {
27
+ type: 'READY';
28
+ capabilities: ReadonlyArray<{
29
+ name: string;
30
+ mode: 'singleton' | 'collection';
31
+ }>;
32
+ } | {
33
+ type: 'CAPABILITY_REGISTER';
34
+ name: string;
35
+ mode: 'singleton' | 'collection';
36
+ } | {
37
+ type: 'CAPABILITY_CALL';
38
+ requestId: string;
39
+ capability: string;
40
+ method: string;
41
+ args: readonly unknown[];
42
+ } | {
43
+ type: 'LOG';
44
+ level: string;
45
+ message: string;
46
+ context?: Record<string, unknown>;
47
+ } | {
48
+ type: 'EVENT';
49
+ category: string;
50
+ data: Record<string, unknown>;
51
+ } | {
52
+ type: 'STATS';
53
+ cpu: number;
54
+ memory: number;
55
+ uptime: number;
56
+ } | {
57
+ type: 'PONG';
58
+ } | {
59
+ type: 'ERROR';
60
+ message: string;
61
+ stack?: string;
62
+ } | {
63
+ type: 'SUB_PROCESS_SPAWNED';
64
+ pid: number;
65
+ name: string;
66
+ command: string;
67
+ } | {
68
+ type: 'SUB_PROCESS_EXITED';
69
+ pid: number;
70
+ code: number | null;
71
+ } | {
72
+ type: 'TASK_HANDLER_REGISTER';
73
+ taskType: string;
74
+ description: string;
75
+ security?: 'safe' | 'dangerous';
76
+ };
77
+ /** Worker process state */
78
+ export type WorkerState = 'starting' | 'running' | 'stopping' | 'stopped' | 'crashed';
79
+ /** Worker process info exposed to main process */
80
+ export interface WorkerInfo {
81
+ readonly addonId: string;
82
+ readonly pid: number;
83
+ readonly state: WorkerState;
84
+ readonly cpuPercent: number;
85
+ readonly memoryRss: number;
86
+ readonly uptimeSeconds: number;
87
+ readonly restartCount: number;
88
+ readonly subProcesses: readonly SubProcessInfo[];
89
+ }
90
+ /** Sub-process info */
91
+ export interface SubProcessInfo {
92
+ readonly pid: number;
93
+ readonly name: string;
94
+ readonly command: string;
95
+ readonly state: 'running' | 'stopped' | 'crashed';
96
+ readonly cpuPercent: number;
97
+ readonly memoryRss: number;
98
+ readonly uptimeSeconds: number;
99
+ }
100
+ /** Worker process stats (distinct from the existing ProcessStats in process.ts) */
101
+ export interface WorkerProcessStats {
102
+ readonly pid: number;
103
+ readonly cpuPercent: number;
104
+ readonly memoryRss: number;
105
+ readonly heapUsed?: number;
106
+ readonly uptimeSeconds: number;
107
+ readonly restartCount: number;
108
+ readonly state: WorkerState;
109
+ }
110
+ //# sourceMappingURL=worker-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../../src/interfaces/worker-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * System settings UI schemas — the single source of truth for all settings sections.
3
+ *
4
+ * These are defined in @camstack/types so that:
5
+ * - The backend can serve them via API
6
+ * - Addons can reference/extend them
7
+ * - The frontend fetches them at runtime (no hardcoded duplication)
8
+ *
9
+ * Values are stored in the SQL system_settings table, not config.yaml.
10
+ * Only `server` is read-only (loaded from config.yaml at bootstrap).
11
+ */
12
+ import type { ConfigUISchema } from '../interfaces/config-ui.js';
13
+ export type SystemSettingsSection = 'server' | 'auth' | 'features' | 'storage' | 'logging' | 'addons' | 'recording' | 'streaming' | 'ffmpeg' | 'detection' | 'backup' | 'retention';
14
+ /** Sections where fields are read-only (bootstrap from config.yaml). */
15
+ export declare const READ_ONLY_SECTIONS: ReadonlySet<SystemSettingsSection>;
16
+ export interface SettingsTabDef {
17
+ readonly id: SystemSettingsSection;
18
+ readonly label: string;
19
+ }
20
+ export declare const SETTINGS_TABS: readonly SettingsTabDef[];
21
+ export declare const SYSTEM_SETTINGS_SCHEMAS: Readonly<Record<SystemSettingsSection, ConfigUISchema>>;
22
+ /**
23
+ * Get the UI schema for a settings section.
24
+ * Returns undefined for unknown sections.
25
+ */
26
+ export declare function getSystemSettingsSchema(section: string): ConfigUISchema | undefined;
27
+ //# sourceMappingURL=system-settings-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-settings-schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/system-settings-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAMhE,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GACjE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE/E,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,qBAAqB,CAEhE,CAAA;AAMF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EAQzC,CAAA;AA2TV,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAc3F,CAAA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEnF"}
@@ -0,0 +1,75 @@
1
+ import type { BoundingBox } from './io.js';
2
+ import type { ObjectState } from './tracked.js';
3
+ import type { DetectionEvent, EventSnapshot } from './events.js';
4
+ export interface TrackFilter {
5
+ readonly class?: readonly string[];
6
+ readonly state?: readonly ObjectState[];
7
+ readonly inZone?: string;
8
+ readonly minDwellMs?: number;
9
+ }
10
+ export interface TimeRangeOptions {
11
+ readonly from: number;
12
+ readonly to: number;
13
+ readonly resolution: 'minute' | '5min' | 'hour';
14
+ }
15
+ export interface ZoneHistoryPoint {
16
+ readonly timestamp: number;
17
+ readonly objectCount: number;
18
+ readonly objectsByClass: Readonly<Record<string, number>>;
19
+ readonly entrances: number;
20
+ readonly exits: number;
21
+ }
22
+ export interface HeatmapOptions {
23
+ readonly from: number;
24
+ readonly to: number;
25
+ readonly class?: string;
26
+ readonly resolution: number;
27
+ }
28
+ export interface HeatmapData {
29
+ readonly width: number;
30
+ readonly height: number;
31
+ readonly gridSize: number;
32
+ readonly cells: Float32Array;
33
+ readonly maxCount: number;
34
+ }
35
+ export interface TrackDetail {
36
+ readonly trackId: string;
37
+ readonly class: string;
38
+ readonly originalClass: string;
39
+ readonly state: ObjectState;
40
+ readonly firstSeen: number;
41
+ readonly lastSeen: number;
42
+ readonly totalDwellMs: number;
43
+ readonly path: ReadonlyArray<{
44
+ readonly timestamp: number;
45
+ readonly bbox: BoundingBox;
46
+ readonly velocity: {
47
+ readonly dx: number;
48
+ readonly dy: number;
49
+ };
50
+ }>;
51
+ readonly identity?: {
52
+ readonly name: string;
53
+ readonly confidence: number;
54
+ readonly matchedAt: number;
55
+ };
56
+ readonly plateText?: {
57
+ readonly text: string;
58
+ readonly confidence: number;
59
+ readonly readAt: number;
60
+ };
61
+ readonly subClass?: {
62
+ readonly class: string;
63
+ readonly confidence: number;
64
+ };
65
+ readonly zoneTransitions: ReadonlyArray<{
66
+ readonly zoneId: string;
67
+ readonly zoneName: string;
68
+ readonly entered: number;
69
+ readonly exited?: number;
70
+ readonly dwellMs: number;
71
+ }>;
72
+ readonly bestSnapshot?: EventSnapshot;
73
+ readonly events: readonly DetectionEvent[];
74
+ }
75
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"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"}