@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.
- 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 -3053
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +377 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +369 -7
- 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 +168 -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 +16 -5
- package/dist/index.d.mts +0 -3053
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,OAAQ,SAAQ,iBAAiB;IAChD,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,IAAI,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IDeviceCapability } from '../device-capability.js';
|
|
2
|
+
export interface ITwoWayAudio extends IDeviceCapability {
|
|
3
|
+
kind: 'twoWayAudio';
|
|
4
|
+
startMicrophone(stream: unknown): Promise<void>;
|
|
5
|
+
stopMicrophone(): Promise<void>;
|
|
6
|
+
isMicrophoneActive(): boolean;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=two-way-audio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-way-audio.d.ts","sourceRoot":"","sources":["../../../src/interfaces/device-capabilities/two-way-audio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,IAAI,EAAE,aAAa,CAAA;IACnB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,kBAAkB,IAAI,OAAO,CAAA;CAC9B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface IDeviceCapability {
|
|
2
|
+
kind: DeviceCapabilityName;
|
|
3
|
+
}
|
|
4
|
+
export type DeviceCapabilityName = 'camera' | 'panTiltZoom' | 'motionSensor' | 'objectDetector' | 'audioDetector' | 'twoWayAudio' | 'doorbell' | 'events' | 'recording' | 'accessory' | 'statusLight' | 'siren' | 'switch';
|
|
5
|
+
export interface CapabilityBinding {
|
|
6
|
+
source: 'native' | 'addon' | 'disabled';
|
|
7
|
+
addonId?: string;
|
|
8
|
+
config?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface DeviceCapabilityBinding {
|
|
11
|
+
deviceId: string;
|
|
12
|
+
bindings: Partial<Record<DeviceCapabilityName, CapabilityBinding>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=device-capability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-capability.d.ts","sourceRoot":"","sources":["../../src/interfaces/device-capability.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,oBAAoB,CAAA;CAC3B;AAED,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,UAAU,GACV,QAAQ,GACR,WAAW,GACX,WAAW,GACX,aAAa,GACb,OAAO,GACP,QAAQ,CAAA;AAEZ,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAA;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAA;CACnE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { IDevice, DeviceType, DeviceMetadata } from './device.js';
|
|
2
|
+
import type { DeviceCapabilityName } from './device-capability.js';
|
|
3
|
+
import type { CamstackContext } from './context.js';
|
|
4
|
+
import type { ConfigUISchema } from './config-ui.js';
|
|
5
|
+
export interface ProviderStatus {
|
|
6
|
+
connected: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
deviceCount: number;
|
|
9
|
+
}
|
|
10
|
+
export interface DiscoveredDevice {
|
|
11
|
+
externalId: string;
|
|
12
|
+
name: string;
|
|
13
|
+
type: DeviceType;
|
|
14
|
+
capabilities: DeviceCapabilityName[];
|
|
15
|
+
metadata: DeviceMetadata;
|
|
16
|
+
}
|
|
17
|
+
export interface LiveEvent {
|
|
18
|
+
type: string;
|
|
19
|
+
camera: string;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
data: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface IDeviceProvider {
|
|
24
|
+
/** Immutable progressive ID */
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly type: string;
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly discoveryMode: 'auto' | 'manual' | 'both';
|
|
29
|
+
/** The provider's context -- logger, storage, eventBus scoped to this provider */
|
|
30
|
+
readonly ctx: CamstackContext;
|
|
31
|
+
start(): Promise<void>;
|
|
32
|
+
stop(): Promise<void>;
|
|
33
|
+
getStatus(): ProviderStatus;
|
|
34
|
+
discoverDevices(): Promise<DiscoveredDevice[]>;
|
|
35
|
+
getDeviceConfigSchema?(): unknown;
|
|
36
|
+
createDevice?(config: Record<string, unknown>): Promise<IDevice>;
|
|
37
|
+
adoptDevice?(externalId: string, config?: Record<string, unknown>): Promise<IDevice>;
|
|
38
|
+
getDevices(): IDevice[];
|
|
39
|
+
subscribeLiveEvents(callback: (event: LiveEvent) => void): () => void;
|
|
40
|
+
/** Optional: declare configurable settings UI for this provider */
|
|
41
|
+
getConfigSchema?(): ConfigUISchema;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=device-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/device-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,oBAAoB,EAAE,CAAA;IACpC,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;IAElD,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAE7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,SAAS,IAAI,cAAc,CAAA;IAC3B,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC9C,qBAAqB,CAAC,IAAI,OAAO,CAAA;IACjC,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAChE,WAAW,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,UAAU,IAAI,OAAO,EAAE,CAAA;IACvB,mBAAmB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAErE,mEAAmE;IACnE,eAAe,CAAC,IAAI,cAAc,CAAA;CACnC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IDeviceCapability, DeviceCapabilityName } from './device-capability.js';
|
|
2
|
+
import type { CamstackContext } from './context.js';
|
|
3
|
+
import type { ConfigUISchema } from './config-ui.js';
|
|
4
|
+
export type DeviceType = 'camera' | 'doorbell' | 'sensor' | 'switch' | 'thermostat' | 'light' | 'generic';
|
|
5
|
+
export interface DeviceState {
|
|
6
|
+
online: boolean;
|
|
7
|
+
lastSeen?: number;
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DeviceMetadata {
|
|
11
|
+
manufacturer?: string;
|
|
12
|
+
model?: string;
|
|
13
|
+
firmware?: string;
|
|
14
|
+
hardwareId?: string;
|
|
15
|
+
ip?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DeviceEvent {
|
|
18
|
+
deviceId: string;
|
|
19
|
+
type: string;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
data: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface IDevice {
|
|
24
|
+
/** Immutable progressive ID */
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly providerId: string;
|
|
28
|
+
readonly type: DeviceType;
|
|
29
|
+
readonly capabilities: DeviceCapabilityName[];
|
|
30
|
+
/** The device's context -- logger, storage, eventBus scoped to this device */
|
|
31
|
+
readonly ctx: CamstackContext;
|
|
32
|
+
getCapability<T extends IDeviceCapability>(cap: DeviceCapabilityName): T | null;
|
|
33
|
+
hasCapability(cap: DeviceCapabilityName): boolean;
|
|
34
|
+
getState(): DeviceState;
|
|
35
|
+
getMetadata(): DeviceMetadata;
|
|
36
|
+
subscribeEvents?(callback: (event: DeviceEvent) => void): () => void;
|
|
37
|
+
/** Optional: declare configurable settings UI for this device */
|
|
38
|
+
getConfigSchema?(): ConfigUISchema;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/interfaces/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,SAAS,CAAA;AAEb,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,EAAE,CAAA;IAE7C,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAE7B,aAAa,CAAC,CAAC,SAAS,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/E,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAA;IACjD,QAAQ,IAAI,WAAW,CAAA;IACvB,WAAW,IAAI,cAAc,CAAA;IAC7B,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAEpE,iEAAiE;IACjE,eAAe,CAAC,IAAI,cAAc,CAAA;CACnC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface EventSource {
|
|
2
|
+
type: string;
|
|
3
|
+
id: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SystemEvent {
|
|
6
|
+
id: string;
|
|
7
|
+
timestamp: Date;
|
|
8
|
+
source: EventSource;
|
|
9
|
+
category: string;
|
|
10
|
+
data: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export interface EventFilter {
|
|
13
|
+
source?: EventSource;
|
|
14
|
+
category?: string;
|
|
15
|
+
since?: Date;
|
|
16
|
+
}
|
|
17
|
+
export interface IEventBus {
|
|
18
|
+
emit(event: SystemEvent): void;
|
|
19
|
+
subscribe(filter: EventFilter, handler: (event: SystemEvent) => void): () => void;
|
|
20
|
+
getRecent(filter?: EventFilter, limit?: number): readonly SystemEvent[];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/interfaces/event-bus.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,IAAI,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,IAAI,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IAC9B,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IACjF,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAAA;CACxE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface FeatureManifest {
|
|
2
|
+
streaming: boolean;
|
|
3
|
+
notifications: boolean;
|
|
4
|
+
objectDetection: boolean;
|
|
5
|
+
remoteAccess: boolean;
|
|
6
|
+
agentCluster: boolean;
|
|
7
|
+
smartHome: boolean;
|
|
8
|
+
recordings: boolean;
|
|
9
|
+
backup: boolean;
|
|
10
|
+
repl: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type FeatureFlag = keyof FeatureManifest;
|
|
13
|
+
export declare const DEFAULT_FEATURES: FeatureManifest;
|
|
14
|
+
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/interfaces/feature-flags.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,eAAe,CAAA;AAE/C,eAAO,MAAM,gBAAgB,EAAE,eAU9B,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface FfmpegConfig {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly hwaccel?: 'vaapi' | 'qsv' | 'videotoolbox' | 'cuda' | 'v4l2m2m' | 'none';
|
|
4
|
+
readonly inputArgs?: readonly string[];
|
|
5
|
+
readonly outputArgs?: readonly string[];
|
|
6
|
+
readonly videoCodec?: string;
|
|
7
|
+
readonly audioCodec?: string;
|
|
8
|
+
readonly threads?: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ffmpeg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/interfaces/ffmpeg.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { ModelFormat } from '../types/models.js';
|
|
2
|
+
/** A hardware backend available for inference (e.g. CPU, CoreML, CUDA) */
|
|
3
|
+
export interface BackendInfo {
|
|
4
|
+
/** Backend identifier — matches engine-resolver backend param */
|
|
5
|
+
readonly id: string;
|
|
6
|
+
/** Human-readable label */
|
|
7
|
+
readonly label: string;
|
|
8
|
+
/** Whether this backend is available on the current agent/hub */
|
|
9
|
+
readonly available: boolean;
|
|
10
|
+
/** Device type for display */
|
|
11
|
+
readonly device: string;
|
|
12
|
+
}
|
|
13
|
+
/** A Python-specific backend with its associated model format */
|
|
14
|
+
export interface PythonBackendInfo extends BackendInfo {
|
|
15
|
+
/** The model format this backend needs (coreml → .mlpackage, openvino → .xml, etc.) */
|
|
16
|
+
readonly modelFormat: ModelFormat;
|
|
17
|
+
/** Python module required (e.g. 'coremltools', 'openvino', 'torch') */
|
|
18
|
+
readonly pythonModule: string;
|
|
19
|
+
}
|
|
20
|
+
/** Node.js runtime — uses onnxruntime-node, always loads .onnx files */
|
|
21
|
+
export interface NodeRuntimeInfo {
|
|
22
|
+
readonly available: true;
|
|
23
|
+
/** ONNX execution provider backends (cpu, coreml, cuda, tensorrt) */
|
|
24
|
+
readonly backends: readonly BackendInfo[];
|
|
25
|
+
/** Node.js always uses ONNX format */
|
|
26
|
+
readonly modelFormat: 'onnx';
|
|
27
|
+
}
|
|
28
|
+
/** Python runtime — uses subprocess with native model formats */
|
|
29
|
+
export interface PythonRuntimeInfo {
|
|
30
|
+
readonly available: boolean;
|
|
31
|
+
readonly pythonPath?: string;
|
|
32
|
+
/** Each Python backend uses a different model format */
|
|
33
|
+
readonly backends: readonly PythonBackendInfo[];
|
|
34
|
+
}
|
|
35
|
+
/** All runtimes available on an agent/hub */
|
|
36
|
+
export interface RuntimeCapabilities {
|
|
37
|
+
readonly node: NodeRuntimeInfo;
|
|
38
|
+
readonly python: PythonRuntimeInfo;
|
|
39
|
+
}
|
|
40
|
+
/** Download status of a specific model format */
|
|
41
|
+
export interface ModelFormatStatus {
|
|
42
|
+
readonly url: string;
|
|
43
|
+
readonly sizeMB: number;
|
|
44
|
+
readonly downloaded: boolean;
|
|
45
|
+
readonly filePath?: string;
|
|
46
|
+
}
|
|
47
|
+
/** A model from the catalog with download status per format */
|
|
48
|
+
export interface ModelAvailability {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly name: string;
|
|
51
|
+
readonly description: string;
|
|
52
|
+
readonly inputSize: {
|
|
53
|
+
readonly width: number;
|
|
54
|
+
readonly height: number;
|
|
55
|
+
};
|
|
56
|
+
readonly formats: Partial<Readonly<Record<ModelFormat, ModelFormatStatus>>>;
|
|
57
|
+
}
|
|
58
|
+
/** Detection addon with its available models */
|
|
59
|
+
export interface AddonCapabilityInfo {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly name: string;
|
|
62
|
+
readonly models: readonly ModelAvailability[];
|
|
63
|
+
}
|
|
64
|
+
/** Complete inference capabilities for an agent/hub */
|
|
65
|
+
export interface InferenceCapabilities {
|
|
66
|
+
readonly agentId: string;
|
|
67
|
+
readonly agentName: string;
|
|
68
|
+
readonly platform: string;
|
|
69
|
+
readonly arch: string;
|
|
70
|
+
readonly addons: readonly AddonCapabilityInfo[];
|
|
71
|
+
readonly runtimes: RuntimeCapabilities;
|
|
72
|
+
readonly modelsDir: string;
|
|
73
|
+
/** Platform scores from PlatformScorer — available after boot probe */
|
|
74
|
+
readonly platformScores?: readonly import('./platform.js').PlatformScore[];
|
|
75
|
+
}
|
|
76
|
+
/** Configuration to create/retrieve a managed inference engine */
|
|
77
|
+
export interface EngineConfig {
|
|
78
|
+
readonly addonId: string;
|
|
79
|
+
readonly modelId: string;
|
|
80
|
+
/** 'node' = onnxruntime-node, 'python' = Python subprocess */
|
|
81
|
+
readonly runtime: 'node' | 'python';
|
|
82
|
+
/** Backend within that runtime (e.g. 'cpu', 'coreml', 'cuda') */
|
|
83
|
+
readonly backend: string;
|
|
84
|
+
}
|
|
85
|
+
/** Progress event emitted during model download */
|
|
86
|
+
export interface ModelDownloadProgress {
|
|
87
|
+
readonly modelId: string;
|
|
88
|
+
readonly format: ModelFormat;
|
|
89
|
+
readonly downloadedBytes: number;
|
|
90
|
+
readonly totalBytes: number;
|
|
91
|
+
readonly percent: number;
|
|
92
|
+
}
|
|
93
|
+
/** Result of a benchmark model download */
|
|
94
|
+
export interface BenchmarkDownloadResult {
|
|
95
|
+
readonly modelId: string;
|
|
96
|
+
readonly format: ModelFormat;
|
|
97
|
+
readonly filePath: string;
|
|
98
|
+
readonly sizeMB: number;
|
|
99
|
+
readonly durationMs: number;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=inference-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference-capabilities.d.ts","sourceRoot":"","sources":["../../src/interfaces/inference-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DetectionRuntime, DetectionDevice } from '../types/config.js';
|
|
2
|
+
import type { ModelCatalogEntry } from '../types/models.js';
|
|
3
|
+
export interface IInferenceEngine {
|
|
4
|
+
readonly runtime: DetectionRuntime;
|
|
5
|
+
readonly device: DetectionDevice;
|
|
6
|
+
run(input: Float32Array, inputShape: readonly number[]): Promise<Float32Array>;
|
|
7
|
+
/** Run inference and return all named output tensors. Used by multi-output models (e.g. YOLO-seg). */
|
|
8
|
+
runMultiOutput(input: Float32Array, inputShape: readonly number[]): Promise<Record<string, Float32Array>>;
|
|
9
|
+
dispose(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface ResolveEngineOptions {
|
|
12
|
+
readonly runtime: DetectionRuntime | 'auto';
|
|
13
|
+
readonly backend: string;
|
|
14
|
+
readonly modelEntry: ModelCatalogEntry;
|
|
15
|
+
readonly modelsDir: string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=inference-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference-engine.d.ts","sourceRoot":"","sources":["../../src/interfaces/inference-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9E,sGAAsG;IACtG,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IACzG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ElementState = 'stopped' | 'starting' | 'running' | 'stopping' | 'error' | 'disabled';
|
|
2
|
+
export interface ElementStatus {
|
|
3
|
+
state: ElementState;
|
|
4
|
+
error?: string;
|
|
5
|
+
startedAt?: number;
|
|
6
|
+
stoppedAt?: number;
|
|
7
|
+
restartCount: number;
|
|
8
|
+
uptime: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ILifecycleManaged {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
getStatus(): ElementStatus;
|
|
13
|
+
start(): Promise<void>;
|
|
14
|
+
stop(): Promise<void>;
|
|
15
|
+
restart(): Promise<void>;
|
|
16
|
+
enable(): Promise<void>;
|
|
17
|
+
disable(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/interfaces/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAA;AAEjG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,SAAS,IAAI,aAAa,CAAA;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
2
|
+
export interface LogEntry {
|
|
3
|
+
timestamp: Date;
|
|
4
|
+
level: LogLevel;
|
|
5
|
+
scope: string[];
|
|
6
|
+
message: string;
|
|
7
|
+
meta?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface LogFilter {
|
|
10
|
+
scope?: string[];
|
|
11
|
+
level?: LogLevel;
|
|
12
|
+
since?: Date;
|
|
13
|
+
until?: Date;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ILogDestination {
|
|
17
|
+
initialize(): Promise<void>;
|
|
18
|
+
shutdown(): Promise<void>;
|
|
19
|
+
write(entry: LogEntry): void;
|
|
20
|
+
query?(filter: LogFilter): Promise<readonly LogEntry[]>;
|
|
21
|
+
}
|
|
22
|
+
export interface IScopedLogger {
|
|
23
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
24
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
25
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
26
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
27
|
+
child(scope: string): IScopedLogger;
|
|
28
|
+
}
|
|
29
|
+
/** Factory that creates scoped loggers */
|
|
30
|
+
export type LoggerFactory = {
|
|
31
|
+
createLogger(scope: string): IScopedLogger;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/interfaces/logging.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,IAAI,CAAA;IACf,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;CACpC;AAED,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;CAC3C,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type ModelType = 'detection' | 'face-detection' | 'face-recognition' | 'plate-detection' | 'ocr' | 'embedding' | 'audio-classification' | 'custom';
|
|
2
|
+
export type ModelFormat = 'onnx' | 'tflite' | 'coreml' | 'openvino';
|
|
3
|
+
export interface ServerModelCatalogEntry {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly description: string;
|
|
7
|
+
readonly type: ModelType;
|
|
8
|
+
readonly format: ModelFormat;
|
|
9
|
+
readonly available: boolean;
|
|
10
|
+
readonly downloadUrl?: string;
|
|
11
|
+
readonly fallbackDownloadUrls?: readonly string[];
|
|
12
|
+
readonly sizeMB?: number;
|
|
13
|
+
readonly exportHint?: string;
|
|
14
|
+
readonly inputSize: {
|
|
15
|
+
readonly width: number;
|
|
16
|
+
readonly height: number;
|
|
17
|
+
readonly channels?: number;
|
|
18
|
+
};
|
|
19
|
+
readonly labels?: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export interface IModelCatalogProvider {
|
|
22
|
+
readonly pluginId: string;
|
|
23
|
+
getModelCatalog(): ServerModelCatalogEntry[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=model-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/interfaces/model-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,KAAK,GACL,WAAW,GACX,sBAAsB,GACtB,QAAQ,CAAA;AAEZ,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEnE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnG,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,eAAe,IAAI,uBAAuB,EAAE,CAAA;CAC7C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface StreamNetworkStats {
|
|
2
|
+
readonly nominalBitrateKbps: number;
|
|
3
|
+
readonly observedBitrateKbps: number;
|
|
4
|
+
readonly peakBitrateKbps: number;
|
|
5
|
+
readonly packetLossPercent: number;
|
|
6
|
+
readonly lastUpdated: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ClientNetworkStats {
|
|
9
|
+
readonly rttMs: number;
|
|
10
|
+
readonly jitterMs: number;
|
|
11
|
+
readonly estimatedBandwidthKbps: number;
|
|
12
|
+
readonly lastUpdated: number;
|
|
13
|
+
}
|
|
14
|
+
export interface DeviceNetworkStats {
|
|
15
|
+
readonly deviceId: string;
|
|
16
|
+
readonly streams: Readonly<Record<string, StreamNetworkStats>>;
|
|
17
|
+
readonly client?: ClientNetworkStats;
|
|
18
|
+
}
|
|
19
|
+
export interface INetworkQualityTracker {
|
|
20
|
+
reportStreamStats(deviceId: string, streamId: string, bitrateKbps: number, packetLoss?: number): void;
|
|
21
|
+
reportClientStats(deviceId: string, stats: Omit<ClientNetworkStats, 'lastUpdated'>): void;
|
|
22
|
+
getDeviceStats(deviceId: string): DeviceNetworkStats | null;
|
|
23
|
+
getAllStats(): readonly DeviceNetworkStats[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=network-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-quality.d.ts","sourceRoot":"","sources":["../../src/interfaces/network-quality.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAG,IAAI,CAAA;IACzF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAA;IAC3D,WAAW,IAAI,SAAS,kBAAkB,EAAE,CAAA;CAC7C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface NetworkAddress {
|
|
2
|
+
readonly host: string;
|
|
3
|
+
readonly port: number;
|
|
4
|
+
readonly protocol: 'http' | 'https';
|
|
5
|
+
}
|
|
6
|
+
export interface PublicAddress {
|
|
7
|
+
readonly url: string;
|
|
8
|
+
readonly provider: string;
|
|
9
|
+
}
|
|
10
|
+
export interface INetworkProvider {
|
|
11
|
+
getLocalAddress(): NetworkAddress;
|
|
12
|
+
getPublicAddress(): PublicAddress | null;
|
|
13
|
+
registerRemoteAccess(provider: IRemoteAccessProvider): void;
|
|
14
|
+
unregisterRemoteAccess(providerId: string): void;
|
|
15
|
+
onPublicAddressChange(callback: (address: PublicAddress | null) => void): () => void;
|
|
16
|
+
}
|
|
17
|
+
export type RemoteAccessStatus = 'connected' | 'connecting' | 'disconnected' | 'error';
|
|
18
|
+
export interface IRemoteAccessProvider {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly name: string;
|
|
21
|
+
getPublicUrl(): string | null;
|
|
22
|
+
getStatus(): RemoteAccessStatus;
|
|
23
|
+
start(): Promise<void>;
|
|
24
|
+
stop(): Promise<void>;
|
|
25
|
+
onStatusChange?(callback: (status: RemoteAccessStatus) => void): () => void;
|
|
26
|
+
}
|
|
27
|
+
export interface ITurnProvider {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
getCredentials(): Promise<TurnCredentials>;
|
|
31
|
+
getServers(): TurnServer[];
|
|
32
|
+
}
|
|
33
|
+
export interface TurnCredentials {
|
|
34
|
+
readonly username: string;
|
|
35
|
+
readonly credential: string;
|
|
36
|
+
readonly ttl: number;
|
|
37
|
+
}
|
|
38
|
+
export interface TurnServer {
|
|
39
|
+
readonly urls: string;
|
|
40
|
+
readonly username?: string;
|
|
41
|
+
readonly credential?: string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/interfaces/network.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,IAAI,cAAc,CAAA;IACjC,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAAA;IACxC,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC3D,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CACrF;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,CAAA;AAEtF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,IAAI,kBAAkB,CAAA;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,IAAI,UAAU,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ConfigUISchema } from './config-ui.js';
|
|
2
|
+
/**
|
|
3
|
+
* A notification to be sent through configured output channels.
|
|
4
|
+
*/
|
|
5
|
+
export interface Notification {
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly message: string;
|
|
8
|
+
readonly severity: 'info' | 'warning' | 'critical';
|
|
9
|
+
readonly category: string;
|
|
10
|
+
readonly data?: Record<string, unknown>;
|
|
11
|
+
readonly imageUrl?: string;
|
|
12
|
+
readonly deviceId?: string;
|
|
13
|
+
readonly timestamp: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A toast notification for the admin UI.
|
|
17
|
+
*/
|
|
18
|
+
export interface Toast {
|
|
19
|
+
readonly title: string;
|
|
20
|
+
readonly message: string;
|
|
21
|
+
readonly severity: 'info' | 'warning' | 'critical';
|
|
22
|
+
readonly duration?: number;
|
|
23
|
+
readonly action?: {
|
|
24
|
+
readonly label: string;
|
|
25
|
+
readonly url: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Service interface for broadcasting toast notifications to connected clients.
|
|
30
|
+
*/
|
|
31
|
+
export interface IToastService {
|
|
32
|
+
broadcast(toast: Toast): void;
|
|
33
|
+
sendToUser(userId: string, toast: Toast): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Pluggable notification output channel.
|
|
37
|
+
* Each addon implements a notification channel (Telegram, webhook, email, etc.).
|
|
38
|
+
*/
|
|
39
|
+
export interface INotificationOutput {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly icon: string;
|
|
43
|
+
/** Send a notification */
|
|
44
|
+
send(notification: Notification): Promise<void>;
|
|
45
|
+
/** Test the notification channel */
|
|
46
|
+
sendTest?(): Promise<{
|
|
47
|
+
success: boolean;
|
|
48
|
+
error?: string;
|
|
49
|
+
}>;
|
|
50
|
+
/** Config schema for the admin UI */
|
|
51
|
+
getConfigSchema?(): ConfigUISchema;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=notification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/interfaces/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KACrB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,0BAA0B;IAC1B,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/C,oCAAoC;IACpC,QAAQ,CAAC,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAE1D,qCAAqC;IACrC,eAAe,CAAC,IAAI,cAAc,CAAA;CACnC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { FrameInput } from '../types/io.js';
|
|
2
|
+
import type { CropInput } from '../types/detection.js';
|
|
3
|
+
import type { PipelineConfig, PipelineResult, StepResult, PipelineStatus } from '../types/pipeline.js';
|
|
4
|
+
export interface IPipelineRunner {
|
|
5
|
+
run(frame: FrameInput, config?: PipelineConfig): Promise<PipelineResult>;
|
|
6
|
+
runSingle(addonId: string, input: FrameInput | CropInput, config?: Record<string, unknown>): Promise<StepResult>;
|
|
7
|
+
getStatus(): PipelineStatus[];
|
|
8
|
+
}
|
|
9
|
+
export interface ValidationIssue {
|
|
10
|
+
readonly step?: string;
|
|
11
|
+
readonly addon?: string;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
readonly severity: 'error' | 'warning';
|
|
14
|
+
}
|
|
15
|
+
export interface ValidationResult {
|
|
16
|
+
readonly valid: boolean;
|
|
17
|
+
readonly errors: readonly ValidationIssue[];
|
|
18
|
+
readonly warnings: readonly ValidationIssue[];
|
|
19
|
+
}
|
|
20
|
+
export interface IPipelineValidator {
|
|
21
|
+
validate(config: PipelineConfig): ValidationResult;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=pipeline-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-runner.d.ts","sourceRoot":"","sources":["../../src/interfaces/pipeline-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAEtG,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IACxE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAChH,SAAS,IAAI,cAAc,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;IAC3C,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAA;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACnD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PipelineSlot } from '../types/pipeline.js';
|
|
2
|
+
import type { RequiredStep } from './addon.js';
|
|
3
|
+
export interface IPipelineSlotProvider {
|
|
4
|
+
readonly slot: PipelineSlot;
|
|
5
|
+
readonly inputClasses: readonly string[] | null;
|
|
6
|
+
readonly outputClasses: readonly string[];
|
|
7
|
+
readonly requiredSteps?: readonly RequiredStep[];
|
|
8
|
+
readonly slotPriority: number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=pipeline-slot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-slot.d.ts","sourceRoot":"","sources":["../../src/interfaces/pipeline-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IAChD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B"}
|