@camstack/types 0.1.8 → 0.1.10
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 +4974 -0
- package/dist/generated/addon-api.d.ts.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +550 -744
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +529 -777
- 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 +176 -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 +244 -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 +5 -5
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Camera Analysis Pipeline -- unified stream processing.
|
|
3
|
+
*/
|
|
4
|
+
export interface IStreamSourceAdapter {
|
|
5
|
+
protocol: string;
|
|
6
|
+
connect(config: Record<string, unknown>): Promise<NormalizedSource>;
|
|
7
|
+
disconnect(): Promise<void>;
|
|
8
|
+
getStatus(): SourceAdapterStatus;
|
|
9
|
+
}
|
|
10
|
+
export interface NormalizedSource {
|
|
11
|
+
type: 'url' | 'pipe';
|
|
12
|
+
url?: string;
|
|
13
|
+
pipe?: NodeJS.ReadableStream;
|
|
14
|
+
capabilities: SourceCapabilities;
|
|
15
|
+
}
|
|
16
|
+
export interface SourceCapabilities {
|
|
17
|
+
hasVideo: boolean;
|
|
18
|
+
hasAudio: boolean;
|
|
19
|
+
videoCodec?: 'h264' | 'h265' | 'mjpeg' | 'vp8' | 'vp9' | 'av1';
|
|
20
|
+
audioCodec?: 'aac' | 'opus' | 'pcm' | 'g711';
|
|
21
|
+
width?: number;
|
|
22
|
+
height?: number;
|
|
23
|
+
fps?: number;
|
|
24
|
+
sampleRate?: number;
|
|
25
|
+
audioChannels?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SourceAdapterStatus {
|
|
28
|
+
connected: boolean;
|
|
29
|
+
protocol: string;
|
|
30
|
+
error?: string;
|
|
31
|
+
bytesReceived?: number;
|
|
32
|
+
connectedSince?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface VideoFrame {
|
|
35
|
+
data: Buffer;
|
|
36
|
+
format: 'jpeg' | 'raw-yuv420' | 'raw-rgb' | 'h264-nal';
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
pts: number;
|
|
40
|
+
timestamp: number;
|
|
41
|
+
keyframe?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface AudioChunk {
|
|
44
|
+
data: Buffer;
|
|
45
|
+
format: 'pcm-s16le' | 'pcm-f32le' | 'aac' | 'opus';
|
|
46
|
+
sampleRate: number;
|
|
47
|
+
channels: number;
|
|
48
|
+
pts: number;
|
|
49
|
+
timestamp: number;
|
|
50
|
+
dBFS?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ICameraPipeline {
|
|
53
|
+
readonly deviceId: string;
|
|
54
|
+
readonly active: boolean;
|
|
55
|
+
start(): Promise<void>;
|
|
56
|
+
stop(): Promise<void>;
|
|
57
|
+
onVideoFrame(callback: VideoFrameCallback, options?: FrameSubscriptionOptions): () => void;
|
|
58
|
+
getLatestFrame(): VideoFrame | null;
|
|
59
|
+
onAudioChunk(callback: AudioChunkCallback): () => void;
|
|
60
|
+
getAudioLevel(): number;
|
|
61
|
+
getOutputStream(format: PipelineOutputFormat): PipelineOutputStream | null;
|
|
62
|
+
getAvailableOutputs(): PipelineOutputFormat[];
|
|
63
|
+
getStatus(): PipelineStatusInfo;
|
|
64
|
+
}
|
|
65
|
+
export type VideoFrameCallback = (frame: VideoFrame) => void;
|
|
66
|
+
export type AudioChunkCallback = (chunk: AudioChunk) => void;
|
|
67
|
+
export interface FrameSubscriptionOptions {
|
|
68
|
+
maxFps?: number;
|
|
69
|
+
format?: 'jpeg' | 'raw-yuv420' | 'raw-rgb';
|
|
70
|
+
maxWidth?: number;
|
|
71
|
+
maxHeight?: number;
|
|
72
|
+
keyframeOnly?: boolean;
|
|
73
|
+
}
|
|
74
|
+
export type PipelineOutputFormat = 'webrtc' | 'hls' | 'mjpeg' | 'rtsp' | 'raw-h264';
|
|
75
|
+
export interface PipelineOutputStream {
|
|
76
|
+
format: PipelineOutputFormat;
|
|
77
|
+
url?: string;
|
|
78
|
+
createOffer?(): Promise<string>;
|
|
79
|
+
handleAnswer?(sdp: string): Promise<void>;
|
|
80
|
+
pipe?: NodeJS.ReadableStream;
|
|
81
|
+
consumerCount: number;
|
|
82
|
+
}
|
|
83
|
+
export interface PipelineStatusInfo {
|
|
84
|
+
active: boolean;
|
|
85
|
+
source: {
|
|
86
|
+
protocol: string;
|
|
87
|
+
connected: boolean;
|
|
88
|
+
capabilities: SourceCapabilities;
|
|
89
|
+
} | null;
|
|
90
|
+
decode: {
|
|
91
|
+
fps: number;
|
|
92
|
+
droppedFrames: number;
|
|
93
|
+
totalFrames: number;
|
|
94
|
+
};
|
|
95
|
+
videoConsumers: number;
|
|
96
|
+
audioConsumers: number;
|
|
97
|
+
outputs: Array<{
|
|
98
|
+
format: PipelineOutputFormat;
|
|
99
|
+
consumers: number;
|
|
100
|
+
active: boolean;
|
|
101
|
+
}>;
|
|
102
|
+
uptime: number;
|
|
103
|
+
}
|
|
104
|
+
export interface IPipelineManager {
|
|
105
|
+
getPipeline(deviceId: string): ICameraPipeline | null;
|
|
106
|
+
createPipeline(deviceId: string, source: NormalizedSource): ICameraPipeline;
|
|
107
|
+
destroyPipeline(deviceId: string): Promise<void>;
|
|
108
|
+
listPipelines(): Array<{
|
|
109
|
+
deviceId: string;
|
|
110
|
+
status: PipelineStatusInfo;
|
|
111
|
+
}>;
|
|
112
|
+
}
|
|
113
|
+
export interface IPipelineConsumer {
|
|
114
|
+
id: string;
|
|
115
|
+
name: string;
|
|
116
|
+
videoRequirements?: FrameSubscriptionOptions;
|
|
117
|
+
needsAudio: boolean;
|
|
118
|
+
attachToPipeline(pipeline: ICameraPipeline, deviceId: string): void;
|
|
119
|
+
detachFromPipeline(deviceId: string): void;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=camera-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-pipeline.d.ts","sourceRoot":"","sources":["../../src/interfaces/camera-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { IStorageProvider } from './storage.js';
|
|
2
|
+
import type { ILogDestination } from './logging.js';
|
|
3
|
+
import type { IAnalysisAddon } from './analysis.js';
|
|
4
|
+
import type { IAddonPageProvider, IAdminUI } from './addon.js';
|
|
5
|
+
import type { IAuthProvider } from './auth-provider.js';
|
|
6
|
+
import type { INotificationOutput } from './notification.js';
|
|
7
|
+
import type { IAddonRouteProvider } from './addon-routes.js';
|
|
8
|
+
import type { IAnalysisDataPersistence } from './analysis-persistence.js';
|
|
9
|
+
import type { ISceneIntelligence } from './scene-intelligence.js';
|
|
10
|
+
import type { IAdvancedNotifier } from './advanced-notifier.js';
|
|
11
|
+
/**
|
|
12
|
+
* Whether a capability allows one active provider (singleton) or many (collection).
|
|
13
|
+
*/
|
|
14
|
+
export type CapabilityMode = 'singleton' | 'collection';
|
|
15
|
+
/**
|
|
16
|
+
* Declared in addon package.json manifests under camstack.addons[].capabilities.
|
|
17
|
+
*/
|
|
18
|
+
export interface CapabilityDeclaration {
|
|
19
|
+
/** Capability name (e.g. 'storage', 'decoder', 'analysis-pipeline') */
|
|
20
|
+
readonly name: string;
|
|
21
|
+
/** singleton: one active at a time. collection: all active in parallel. */
|
|
22
|
+
readonly mode: CapabilityMode;
|
|
23
|
+
/** Optional dependencies — addon won't initialize until these capabilities are available */
|
|
24
|
+
readonly dependsOn?: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registration object for a service that consumes a capability.
|
|
28
|
+
* The registry calls the appropriate callback when providers are added/removed/replaced.
|
|
29
|
+
*/
|
|
30
|
+
export interface CapabilityConsumerRegistration<T = unknown> {
|
|
31
|
+
/** Which capability this consumer needs */
|
|
32
|
+
readonly capability: string;
|
|
33
|
+
/** Called when a singleton provider is set or replaced. Async for teardown of previous. */
|
|
34
|
+
onSet?(provider: T): void | Promise<void>;
|
|
35
|
+
/** Called when a collection provider is added */
|
|
36
|
+
onAdded?(provider: T): void | Promise<void>;
|
|
37
|
+
/** Called when a collection provider is removed (addon disabled) */
|
|
38
|
+
onRemoved?(provider: T): void | Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Introspection data for a registered capability.
|
|
42
|
+
*/
|
|
43
|
+
export interface CapabilityInfo {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly mode: CapabilityMode;
|
|
46
|
+
/** All addon IDs that provide this capability */
|
|
47
|
+
readonly providers: readonly string[];
|
|
48
|
+
/** For singleton: the active addon ID (null if none) */
|
|
49
|
+
readonly activeProvider: string | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Maps capability names to their provider interfaces.
|
|
53
|
+
* Extensible via TypeScript declaration merging:
|
|
54
|
+
*
|
|
55
|
+
* ```typescript
|
|
56
|
+
* declare module '@camstack/types' {
|
|
57
|
+
* interface CapabilityProviderMap {
|
|
58
|
+
* 'my-custom-capability': IMyProvider
|
|
59
|
+
* }
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export interface CapabilityProviderMap {
|
|
64
|
+
'storage': IStorageProvider;
|
|
65
|
+
'log-destination': ILogDestination;
|
|
66
|
+
'analysis-pipeline': IAnalysisAddon;
|
|
67
|
+
'restreamer': unknown;
|
|
68
|
+
'webrtc': unknown;
|
|
69
|
+
'stream-broker': unknown;
|
|
70
|
+
'addon-pages': IAddonPageProvider;
|
|
71
|
+
'admin-ui': IAdminUI;
|
|
72
|
+
'auth-provider': IAuthProvider;
|
|
73
|
+
'notification-output': INotificationOutput;
|
|
74
|
+
'addon-routes': IAddonRouteProvider;
|
|
75
|
+
'recording-engine': unknown;
|
|
76
|
+
'analysis-data-persistence': IAnalysisDataPersistence;
|
|
77
|
+
'device-provider': unknown;
|
|
78
|
+
'network-access': unknown;
|
|
79
|
+
'streaming-engine': unknown;
|
|
80
|
+
'scene-intelligence': ISceneIntelligence;
|
|
81
|
+
'advanced-notifier': IAdvancedNotifier;
|
|
82
|
+
[key: string]: unknown;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/interfaces/capability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,YAAY,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B,CAAC,CAAC,GAAG,OAAO;IACzD,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2FAA2F;IAC3F,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,iDAAiD;IACjD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,oEAAoE;IACpE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,iBAAiB,EAAE,eAAe,CAAA;IAClC,mBAAmB,EAAE,cAAc,CAAA;IACnC,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,kBAAkB,CAAA;IACjC,UAAU,EAAE,QAAQ,CAAA;IACpB,eAAe,EAAE,aAAa,CAAA;IAC9B,qBAAqB,EAAE,mBAAmB,CAAA;IAC1C,cAAc,EAAE,mBAAmB,CAAA;IACnC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,2BAA2B,EAAE,wBAAwB,CAAA;IACrD,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,kBAAkB,CAAA;IACxC,mBAAmB,EAAE,iBAAiB,CAAA;IAEtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IPipelineSlotProvider } from './pipeline-slot.js';
|
|
2
|
+
import type { CropInput } from '../types/detection.js';
|
|
3
|
+
import type { ClassifierOutput } from '../types/detection.js';
|
|
4
|
+
export interface IClassifierProvider extends IPipelineSlotProvider {
|
|
5
|
+
readonly slot: 'classifier';
|
|
6
|
+
classify(input: CropInput): Promise<ClassifierOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/interfaces/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACtD"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { ModelCatalogEntry, ModelFormat, ModelOutputFormat, CustomModelMetadata } from '../types/models.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration UI Schema -- declarative form definition for any element.
|
|
4
|
+
*
|
|
5
|
+
* Used by addons, providers, and devices to declare their settings UI.
|
|
6
|
+
* The admin UI renders these schemas as responsive forms.
|
|
7
|
+
*/
|
|
8
|
+
export interface ConfigUISchema {
|
|
9
|
+
sections: ConfigSection[];
|
|
10
|
+
}
|
|
11
|
+
export interface ConfigSection {
|
|
12
|
+
id: string;
|
|
13
|
+
title: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
style?: 'card' | 'accordion';
|
|
16
|
+
defaultCollapsed?: boolean;
|
|
17
|
+
columns?: 1 | 2 | 3 | 4;
|
|
18
|
+
fields: ConfigField[];
|
|
19
|
+
}
|
|
20
|
+
export type ConfigField = ConfigTextField | ConfigNumberField | ConfigBooleanField | ConfigSelectField | ConfigMultiSelectField | ConfigColorField | ConfigPasswordField | ConfigTextAreaField | ConfigSliderField | ConfigTagsField | ConfigGroupField | ConfigSeparatorField | ConfigInfoField | ConfigModelSelectorField | ConfigStorageLocationField;
|
|
21
|
+
export interface ConfigFieldBase {
|
|
22
|
+
key: string;
|
|
23
|
+
label: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
required?: boolean;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
placeholder?: string;
|
|
28
|
+
span?: 1 | 2 | 3 | 4;
|
|
29
|
+
showWhen?: ConfigCondition;
|
|
30
|
+
}
|
|
31
|
+
export interface ConfigCondition {
|
|
32
|
+
field: string;
|
|
33
|
+
equals?: unknown;
|
|
34
|
+
notEquals?: unknown;
|
|
35
|
+
in?: unknown[];
|
|
36
|
+
notIn?: unknown[];
|
|
37
|
+
}
|
|
38
|
+
export interface ConfigTextField extends ConfigFieldBase {
|
|
39
|
+
type: 'text';
|
|
40
|
+
maxLength?: number;
|
|
41
|
+
pattern?: string;
|
|
42
|
+
inputType?: 'text' | 'url' | 'email';
|
|
43
|
+
}
|
|
44
|
+
export interface ConfigNumberField extends ConfigFieldBase {
|
|
45
|
+
type: 'number';
|
|
46
|
+
min?: number;
|
|
47
|
+
max?: number;
|
|
48
|
+
step?: number;
|
|
49
|
+
unit?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ConfigBooleanField extends ConfigFieldBase {
|
|
52
|
+
type: 'boolean';
|
|
53
|
+
style?: 'switch' | 'checkbox';
|
|
54
|
+
}
|
|
55
|
+
export interface ConfigSelectField extends ConfigFieldBase {
|
|
56
|
+
type: 'select';
|
|
57
|
+
options: ConfigOption[];
|
|
58
|
+
dependsOn?: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
export interface ConfigMultiSelectField extends ConfigFieldBase {
|
|
61
|
+
type: 'multiselect';
|
|
62
|
+
options: ConfigOption[];
|
|
63
|
+
maxItems?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ConfigColorField extends ConfigFieldBase {
|
|
66
|
+
type: 'color';
|
|
67
|
+
presets?: string[];
|
|
68
|
+
}
|
|
69
|
+
export interface ConfigPasswordField extends ConfigFieldBase {
|
|
70
|
+
type: 'password';
|
|
71
|
+
showToggle?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface ConfigTextAreaField extends ConfigFieldBase {
|
|
74
|
+
type: 'textarea';
|
|
75
|
+
rows?: number;
|
|
76
|
+
maxLength?: number;
|
|
77
|
+
}
|
|
78
|
+
export interface ConfigSliderField extends ConfigFieldBase {
|
|
79
|
+
type: 'slider';
|
|
80
|
+
min: number;
|
|
81
|
+
max: number;
|
|
82
|
+
step?: number;
|
|
83
|
+
showValue?: boolean;
|
|
84
|
+
unit?: string;
|
|
85
|
+
default?: number;
|
|
86
|
+
}
|
|
87
|
+
export interface ConfigTagsField extends ConfigFieldBase {
|
|
88
|
+
type: 'tags';
|
|
89
|
+
suggestions?: string[];
|
|
90
|
+
maxTags?: number;
|
|
91
|
+
}
|
|
92
|
+
export interface ConfigGroupField extends ConfigFieldBase {
|
|
93
|
+
type: 'group';
|
|
94
|
+
fields: ConfigField[];
|
|
95
|
+
style?: 'card' | 'inline' | 'accordion';
|
|
96
|
+
defaultCollapsed?: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** Visual separator between fields */
|
|
99
|
+
export interface ConfigSeparatorField {
|
|
100
|
+
type: 'separator';
|
|
101
|
+
key: string;
|
|
102
|
+
}
|
|
103
|
+
/** Read-only informational text */
|
|
104
|
+
export interface ConfigInfoField {
|
|
105
|
+
type: 'info';
|
|
106
|
+
key: string;
|
|
107
|
+
label: string;
|
|
108
|
+
content: string;
|
|
109
|
+
variant?: 'info' | 'warning' | 'success' | 'danger';
|
|
110
|
+
}
|
|
111
|
+
export interface ConfigOption {
|
|
112
|
+
value: string;
|
|
113
|
+
label: string;
|
|
114
|
+
description?: string;
|
|
115
|
+
icon?: string;
|
|
116
|
+
}
|
|
117
|
+
export interface ConfigModelSelectorField extends ConfigFieldBase {
|
|
118
|
+
type: 'model-selector';
|
|
119
|
+
/** Filter models by type */
|
|
120
|
+
modelType?: string;
|
|
121
|
+
/** Allow user to enter a custom local path or URL (default: true) */
|
|
122
|
+
allowCustomPath?: boolean;
|
|
123
|
+
/** Allow file upload via UI (default: true) */
|
|
124
|
+
allowUpload?: boolean;
|
|
125
|
+
/** Accepted file extensions for upload (default: ['.onnx']) */
|
|
126
|
+
acceptExtensions?: string[];
|
|
127
|
+
/** URL to model conversion documentation/guide */
|
|
128
|
+
conversionGuideUrl?: string;
|
|
129
|
+
/** Brief text explaining what models are compatible */
|
|
130
|
+
compatibilityNote?: string;
|
|
131
|
+
/** Legacy: inline catalog entries */
|
|
132
|
+
catalog?: readonly ModelCatalogEntry[];
|
|
133
|
+
allowCustom?: boolean;
|
|
134
|
+
acceptFormats?: readonly ModelFormat[];
|
|
135
|
+
allowConversion?: boolean;
|
|
136
|
+
requiredMetadata?: readonly (keyof CustomModelMetadata)[];
|
|
137
|
+
outputFormatHint?: ModelOutputFormat;
|
|
138
|
+
}
|
|
139
|
+
import type { StorageLocationType } from './storage.js';
|
|
140
|
+
export interface ConfigStorageLocationField extends ConfigFieldBase {
|
|
141
|
+
type: 'storage-location';
|
|
142
|
+
/** Which location type this field selects a provider for */
|
|
143
|
+
locationType: StorageLocationType;
|
|
144
|
+
/** Show available space indicator next to each provider option */
|
|
145
|
+
showAvailableSpace?: boolean;
|
|
146
|
+
}
|
|
147
|
+
export interface IConfigurable {
|
|
148
|
+
getConfigSchema(): ConfigUISchema;
|
|
149
|
+
getConfig(): Record<string, unknown>;
|
|
150
|
+
onConfigChange(config: Record<string, unknown>): Promise<void>;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=config-ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-ui.d.ts","sourceRoot":"","sources":["../../src/interfaces/config-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { IScopedLogger } from './logging.js';
|
|
2
|
+
import type { IEventBus } from './event-bus.js';
|
|
3
|
+
import type { IStorageLocation } from './storage.js';
|
|
4
|
+
/**
|
|
5
|
+
* CamstackContext -- injected into every provider, device, and addon.
|
|
6
|
+
*
|
|
7
|
+
* Each element receives a context scoped to its identity:
|
|
8
|
+
* - logger is pre-scoped: (Frigate)[FrontDoor] for a device, (Frigate) for a provider
|
|
9
|
+
* - storage is namespaced: all reads/writes are relative to this element's ID
|
|
10
|
+
* - eventBus is shared (system-wide) but the source is pre-filled
|
|
11
|
+
* - config provides read/write access to this element's persisted configuration
|
|
12
|
+
*
|
|
13
|
+
* The `id` is an immutable progressive identifier assigned at creation time.
|
|
14
|
+
* It never changes even if the element is renamed.
|
|
15
|
+
*/
|
|
16
|
+
export interface CamstackContext {
|
|
17
|
+
/** Immutable progressive ID of this element (e.g., 'provider:frigate-1', 'device:frigate-1/front-door') */
|
|
18
|
+
readonly id: string;
|
|
19
|
+
/** Pre-scoped logger -- logs automatically include this element's scope chain */
|
|
20
|
+
readonly logger: IScopedLogger;
|
|
21
|
+
/** Event bus -- shared system-wide, use for emitting and subscribing to events */
|
|
22
|
+
readonly eventBus: IEventBus;
|
|
23
|
+
/** Storage scoped to this element -- all paths are relative to this element's namespace */
|
|
24
|
+
readonly storage: IStorageLocation;
|
|
25
|
+
/** Persisted configuration for this element -- read/write/subscribe to changes */
|
|
26
|
+
readonly config: IElementConfig;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Scoped configuration store for an element.
|
|
30
|
+
* Values are persisted in the element's storage namespace.
|
|
31
|
+
*/
|
|
32
|
+
export interface IElementConfig {
|
|
33
|
+
/** Get the full config object */
|
|
34
|
+
getAll(): Record<string, unknown>;
|
|
35
|
+
/** Get a single value by dot-path (e.g., 'mqtt.brokerUrl') */
|
|
36
|
+
get<T = unknown>(key: string): T | undefined;
|
|
37
|
+
/** Set a single value */
|
|
38
|
+
set(key: string, value: unknown): Promise<void>;
|
|
39
|
+
/** Set the entire config object (merge or replace) */
|
|
40
|
+
setAll(config: Record<string, unknown>): Promise<void>;
|
|
41
|
+
/** Subscribe to config changes -- callback receives the new full config */
|
|
42
|
+
onChange(callback: (config: Record<string, unknown>) => void): () => void;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/interfaces/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IAEnB,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAE9B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAE5B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAElC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEjC,8DAA8D;IAC9D,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;IAE5C,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/C,sDAAsD;IACtD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtD,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC1E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IPipelineSlotProvider } from './pipeline-slot.js';
|
|
2
|
+
import type { CropInput } from '../types/detection.js';
|
|
3
|
+
import type { CropperOutput } from '../types/detection.js';
|
|
4
|
+
export interface ICropperProvider extends IPipelineSlotProvider {
|
|
5
|
+
readonly slot: 'cropper';
|
|
6
|
+
crop(input: CropInput): Promise<CropperOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=cropper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cropper.d.ts","sourceRoot":"","sources":["../../src/interfaces/cropper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC/C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { EncodedPacket, DecodedFrame, Unsubscribe } from './stream-broker.js';
|
|
2
|
+
export interface DecoderSessionConfig {
|
|
3
|
+
readonly codec: string;
|
|
4
|
+
readonly maxFps: number;
|
|
5
|
+
readonly outputFormat: 'jpeg' | 'rgb' | 'yuv420';
|
|
6
|
+
readonly scale: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DecoderStats {
|
|
9
|
+
readonly inputFps: number;
|
|
10
|
+
readonly outputFps: number;
|
|
11
|
+
readonly avgDecodeTimeMs: number;
|
|
12
|
+
readonly droppedFrames: number;
|
|
13
|
+
}
|
|
14
|
+
export interface IDecoderSession {
|
|
15
|
+
pushPacket(packet: EncodedPacket): void;
|
|
16
|
+
onFrame(callback: (frame: DecodedFrame) => void): Unsubscribe;
|
|
17
|
+
updateConfig(config: Partial<DecoderSessionConfig>): void;
|
|
18
|
+
destroy(): Promise<void>;
|
|
19
|
+
getStats(): DecoderStats;
|
|
20
|
+
}
|
|
21
|
+
export interface IDecoderProvider {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly name: string;
|
|
24
|
+
supportsCodec(codec: string): boolean;
|
|
25
|
+
createSession(config: DecoderSessionConfig): IDecoderSession;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/interfaces/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAElF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IACvC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,WAAW,CAAA;IAC7D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAA;IACzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,QAAQ,IAAI,YAAY,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IACrC,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAA;CAC7D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ICamstackAddon } from './addon.js';
|
|
2
|
+
import type { IPipelineSlotProvider } from './pipeline-slot.js';
|
|
3
|
+
import type { ConfigUISchema } from './config-ui.js';
|
|
4
|
+
import type { ClassMapDefinition, LabelDefinition } from '../types/labels.js';
|
|
5
|
+
import type { ModelCatalogEntry, DetectionModel } from '../types/models.js';
|
|
6
|
+
import type { ProbeResult } from '../types/config.js';
|
|
7
|
+
export interface IDetectionAddon extends ICamstackAddon, IPipelineSlotProvider {
|
|
8
|
+
getConfigSchema(): ConfigUISchema;
|
|
9
|
+
getClassMap(): ClassMapDefinition;
|
|
10
|
+
getModelCatalog(): ModelCatalogEntry[];
|
|
11
|
+
getAvailableModels(): DetectionModel[];
|
|
12
|
+
getActiveLabels(): readonly LabelDefinition[];
|
|
13
|
+
probe(): Promise<ProbeResult>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=detection-addon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection-addon.d.ts","sourceRoot":"","sources":["../../src/interfaces/detection-addon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,WAAW,eAAgB,SAAQ,cAAc,EAAE,qBAAqB;IAC5E,eAAe,IAAI,cAAc,CAAA;IACjC,WAAW,IAAI,kBAAkB,CAAA;IACjC,eAAe,IAAI,iBAAiB,EAAE,CAAA;IACtC,kBAAkB,IAAI,cAAc,EAAE,CAAA;IACtC,eAAe,IAAI,SAAS,eAAe,EAAE,CAAA;IAC7C,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CAC9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IPipelineSlotProvider } from './pipeline-slot.js';
|
|
2
|
+
import type { FrameInput } from '../types/io.js';
|
|
3
|
+
import type { DetectorOutput } from '../types/detection.js';
|
|
4
|
+
export interface IDetectorProvider extends IPipelineSlotProvider {
|
|
5
|
+
readonly slot: 'detector';
|
|
6
|
+
detect(frame: FrameInput): Promise<DetectorOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/interfaces/detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CACnD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IDeviceCapability } from '../device-capability.js';
|
|
2
|
+
export interface AccessoryInfo {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
state?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface IAccessory extends IDeviceCapability {
|
|
9
|
+
kind: 'accessory';
|
|
10
|
+
getAccessories(): Promise<AccessoryInfo[]>;
|
|
11
|
+
executeCommand(accessoryId: string, command: string, params?: Record<string, unknown>): Promise<void>;
|
|
12
|
+
getAccessoryState(accessoryId: string): Promise<Record<string, unknown>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=accessory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessory.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,IAAI,EAAE,WAAW,CAAA;IACjB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAC1C,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACzE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IDeviceCapability } from '../device-capability.js';
|
|
2
|
+
export interface AudioEvent {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
metric: string;
|
|
5
|
+
value?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface IAudioDetector extends IDeviceCapability {
|
|
8
|
+
kind: 'audioDetector';
|
|
9
|
+
getAudioLevel(): number;
|
|
10
|
+
subscribe(callback: (event: AudioEvent) => void): () => void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=audio-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-detector.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/audio-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,eAAe,CAAA;IACrB,aAAa,IAAI,MAAM,CAAA;IACvB,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC7D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IDeviceCapability } from '../device-capability.js';
|
|
2
|
+
export interface StreamOption {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
protocol: 'rtsp' | 'http' | 'webrtc';
|
|
6
|
+
quality: 'main' | 'mid' | 'sub' | 'mobile';
|
|
7
|
+
url?: string;
|
|
8
|
+
}
|
|
9
|
+
export type ConnectionMode = 'always-on' | 'on-demand';
|
|
10
|
+
export interface ICamera extends IDeviceCapability {
|
|
11
|
+
kind: 'camera';
|
|
12
|
+
getSnapshot(options?: {
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
}): Promise<Buffer>;
|
|
16
|
+
getStreamOptions(): Promise<StreamOption[]>;
|
|
17
|
+
getStreamUrl(option: StreamOption): Promise<string>;
|
|
18
|
+
onStreamRequested?(streamId: string): Promise<void>;
|
|
19
|
+
getConnectionMode(): ConnectionMode;
|
|
20
|
+
setConnectionMode(mode: ConnectionMode): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IACpC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,CAAA;AAEtD,MAAM,WAAW,OAAQ,SAAQ,iBAAiB;IAChD,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3E,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC3C,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,iBAAiB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,iBAAiB,IAAI,cAAc,CAAA;IACnC,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IDeviceCapability } from '../device-capability.js';
|
|
2
|
+
export interface DoorbellEvent {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
deviceId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IDoorbell extends IDeviceCapability {
|
|
7
|
+
kind: 'doorbell';
|
|
8
|
+
onRing(callback: (event: DoorbellEvent) => void): () => void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=doorbell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorbell.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/doorbell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAU,SAAQ,iBAAiB;IAClD,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC7D"}
|