@camstack/types 1.0.4 → 1.0.5

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.
@@ -1756,6 +1756,21 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
1756
1756
  };
1757
1757
  meta: object;
1758
1758
  }>;
1759
+ getEngineProvisioning: import("@trpc/server").TRPCQueryProcedure<{
1760
+ input: {
1761
+ [x: string]: unknown;
1762
+ nodeId: string;
1763
+ };
1764
+ output: {
1765
+ runtimeId: "onnx" | "coreml" | "openvino" | null;
1766
+ device: string | null;
1767
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
1768
+ progress?: number | undefined;
1769
+ error?: string | undefined;
1770
+ nextRetryAt?: number | undefined;
1771
+ };
1772
+ meta: object;
1773
+ }>;
1759
1774
  getVideoPipelineSteps: import("@trpc/server").TRPCQueryProcedure<{
1760
1775
  input: {
1761
1776
  nodeId?: string | undefined;
@@ -2704,6 +2719,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
2704
2719
  modelId: string;
2705
2720
  settings: Readonly<Record<string, unknown>>;
2706
2721
  }>>;
2722
+ maxCameras: number | null;
2707
2723
  } | null;
2708
2724
  meta: object;
2709
2725
  }>;
@@ -2719,6 +2735,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
2719
2735
  modelId: string;
2720
2736
  settings: Readonly<Record<string, unknown>>;
2721
2737
  }>>;
2738
+ maxCameras: number | null;
2722
2739
  };
2723
2740
  }[];
2724
2741
  meta: object;
@@ -2749,6 +2766,17 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
2749
2766
  };
2750
2767
  meta: object;
2751
2768
  }>;
2769
+ setAgentMaxCameras: import("@trpc/server").TRPCMutationProcedure<{
2770
+ input: {
2771
+ [x: string]: unknown;
2772
+ agentNodeId: string;
2773
+ maxCameras: number | null;
2774
+ };
2775
+ output: {
2776
+ success: true;
2777
+ };
2778
+ meta: object;
2779
+ }>;
2752
2780
  getCameraSettings: import("@trpc/server").TRPCQueryProcedure<{
2753
2781
  input: {
2754
2782
  [x: string]: unknown;
@@ -2859,6 +2887,186 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
2859
2887
  };
2860
2888
  meta: object;
2861
2889
  }>;
2890
+ getCameraStatus: import("@trpc/server").TRPCQueryProcedure<{
2891
+ input: {
2892
+ [x: string]: unknown;
2893
+ deviceId: number;
2894
+ };
2895
+ output: {
2896
+ deviceId: number;
2897
+ assignment: {
2898
+ detectionNodeId: string | null;
2899
+ decoderNodeId: string | null;
2900
+ audioNodeId: string | null;
2901
+ pinned: {
2902
+ detection: boolean;
2903
+ decoder: boolean;
2904
+ audio: boolean;
2905
+ };
2906
+ reasons: {
2907
+ detection?: string | undefined;
2908
+ decoder?: string | undefined;
2909
+ audio?: string | undefined;
2910
+ };
2911
+ };
2912
+ source: {
2913
+ streams: readonly {
2914
+ camStreamId: string;
2915
+ codec: string;
2916
+ width: number;
2917
+ height: number;
2918
+ fps: number;
2919
+ kind: string;
2920
+ }[];
2921
+ };
2922
+ broker: {
2923
+ profiles: readonly {
2924
+ profile: string;
2925
+ status: string;
2926
+ codec: string;
2927
+ width: number;
2928
+ height: number;
2929
+ subscribers: number;
2930
+ inFps: number;
2931
+ outFps: number;
2932
+ }[];
2933
+ webrtcSessions: number;
2934
+ rtspRestream: boolean;
2935
+ } | null;
2936
+ decoder: {
2937
+ nodeId: string;
2938
+ formats: readonly string[];
2939
+ sessionCount: number;
2940
+ shm: {
2941
+ framesWritten: number;
2942
+ getFrameHits: number;
2943
+ getFrameMisses: number;
2944
+ budgetMb: number;
2945
+ };
2946
+ } | null;
2947
+ motion: {
2948
+ enabled: boolean;
2949
+ fps: number;
2950
+ } | null;
2951
+ detection: {
2952
+ nodeId: string;
2953
+ engine: {
2954
+ backend: string;
2955
+ device: string;
2956
+ };
2957
+ phase: "idle" | "active" | "watching";
2958
+ configuredFps: number;
2959
+ actualFps: number;
2960
+ queueDepth: number;
2961
+ avgInferenceMs: number;
2962
+ provisioning: {
2963
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
2964
+ error?: string | undefined;
2965
+ };
2966
+ } | null;
2967
+ audio: {
2968
+ nodeId: string;
2969
+ enabled: boolean;
2970
+ } | null;
2971
+ recording: {
2972
+ mode: "events" | "off" | "continuous";
2973
+ active: boolean;
2974
+ storageBytes: number;
2975
+ } | null;
2976
+ fetchedAt: number;
2977
+ };
2978
+ meta: object;
2979
+ }>;
2980
+ getCameraStatuses: import("@trpc/server").TRPCQueryProcedure<{
2981
+ input: {
2982
+ [x: string]: unknown;
2983
+ deviceIds?: number[] | undefined;
2984
+ };
2985
+ output: readonly {
2986
+ deviceId: number;
2987
+ assignment: {
2988
+ detectionNodeId: string | null;
2989
+ decoderNodeId: string | null;
2990
+ audioNodeId: string | null;
2991
+ pinned: {
2992
+ detection: boolean;
2993
+ decoder: boolean;
2994
+ audio: boolean;
2995
+ };
2996
+ reasons: {
2997
+ detection?: string | undefined;
2998
+ decoder?: string | undefined;
2999
+ audio?: string | undefined;
3000
+ };
3001
+ };
3002
+ source: {
3003
+ streams: readonly {
3004
+ camStreamId: string;
3005
+ codec: string;
3006
+ width: number;
3007
+ height: number;
3008
+ fps: number;
3009
+ kind: string;
3010
+ }[];
3011
+ };
3012
+ broker: {
3013
+ profiles: readonly {
3014
+ profile: string;
3015
+ status: string;
3016
+ codec: string;
3017
+ width: number;
3018
+ height: number;
3019
+ subscribers: number;
3020
+ inFps: number;
3021
+ outFps: number;
3022
+ }[];
3023
+ webrtcSessions: number;
3024
+ rtspRestream: boolean;
3025
+ } | null;
3026
+ decoder: {
3027
+ nodeId: string;
3028
+ formats: readonly string[];
3029
+ sessionCount: number;
3030
+ shm: {
3031
+ framesWritten: number;
3032
+ getFrameHits: number;
3033
+ getFrameMisses: number;
3034
+ budgetMb: number;
3035
+ };
3036
+ } | null;
3037
+ motion: {
3038
+ enabled: boolean;
3039
+ fps: number;
3040
+ } | null;
3041
+ detection: {
3042
+ nodeId: string;
3043
+ engine: {
3044
+ backend: string;
3045
+ device: string;
3046
+ };
3047
+ phase: "idle" | "active" | "watching";
3048
+ configuredFps: number;
3049
+ actualFps: number;
3050
+ queueDepth: number;
3051
+ avgInferenceMs: number;
3052
+ provisioning: {
3053
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
3054
+ error?: string | undefined;
3055
+ };
3056
+ } | null;
3057
+ audio: {
3058
+ nodeId: string;
3059
+ enabled: boolean;
3060
+ } | null;
3061
+ recording: {
3062
+ mode: "events" | "off" | "continuous";
3063
+ active: boolean;
3064
+ storageBytes: number;
3065
+ } | null;
3066
+ fetchedAt: number;
3067
+ }[];
3068
+ meta: object;
3069
+ }>;
2862
3070
  listTemplates: import("@trpc/server").TRPCQueryProcedure<{
2863
3071
  input: {
2864
3072
  nodeId?: string | undefined;
@@ -14902,6 +15110,21 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
14902
15110
  };
14903
15111
  meta: object;
14904
15112
  }>;
15113
+ getEngineProvisioning: import("@trpc/server").TRPCQueryProcedure<{
15114
+ input: {
15115
+ [x: string]: unknown;
15116
+ nodeId: string;
15117
+ };
15118
+ output: {
15119
+ runtimeId: "onnx" | "coreml" | "openvino" | null;
15120
+ device: string | null;
15121
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
15122
+ progress?: number | undefined;
15123
+ error?: string | undefined;
15124
+ nextRetryAt?: number | undefined;
15125
+ };
15126
+ meta: object;
15127
+ }>;
14905
15128
  getVideoPipelineSteps: import("@trpc/server").TRPCQueryProcedure<{
14906
15129
  input: {
14907
15130
  nodeId?: string | undefined;
@@ -15850,6 +16073,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
15850
16073
  modelId: string;
15851
16074
  settings: Readonly<Record<string, unknown>>;
15852
16075
  }>>;
16076
+ maxCameras: number | null;
15853
16077
  } | null;
15854
16078
  meta: object;
15855
16079
  }>;
@@ -15865,6 +16089,7 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
15865
16089
  modelId: string;
15866
16090
  settings: Readonly<Record<string, unknown>>;
15867
16091
  }>>;
16092
+ maxCameras: number | null;
15868
16093
  };
15869
16094
  }[];
15870
16095
  meta: object;
@@ -15895,6 +16120,17 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
15895
16120
  };
15896
16121
  meta: object;
15897
16122
  }>;
16123
+ setAgentMaxCameras: import("@trpc/server").TRPCMutationProcedure<{
16124
+ input: {
16125
+ [x: string]: unknown;
16126
+ agentNodeId: string;
16127
+ maxCameras: number | null;
16128
+ };
16129
+ output: {
16130
+ success: true;
16131
+ };
16132
+ meta: object;
16133
+ }>;
15898
16134
  getCameraSettings: import("@trpc/server").TRPCQueryProcedure<{
15899
16135
  input: {
15900
16136
  [x: string]: unknown;
@@ -16005,6 +16241,186 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
16005
16241
  };
16006
16242
  meta: object;
16007
16243
  }>;
16244
+ getCameraStatus: import("@trpc/server").TRPCQueryProcedure<{
16245
+ input: {
16246
+ [x: string]: unknown;
16247
+ deviceId: number;
16248
+ };
16249
+ output: {
16250
+ deviceId: number;
16251
+ assignment: {
16252
+ detectionNodeId: string | null;
16253
+ decoderNodeId: string | null;
16254
+ audioNodeId: string | null;
16255
+ pinned: {
16256
+ detection: boolean;
16257
+ decoder: boolean;
16258
+ audio: boolean;
16259
+ };
16260
+ reasons: {
16261
+ detection?: string | undefined;
16262
+ decoder?: string | undefined;
16263
+ audio?: string | undefined;
16264
+ };
16265
+ };
16266
+ source: {
16267
+ streams: readonly {
16268
+ camStreamId: string;
16269
+ codec: string;
16270
+ width: number;
16271
+ height: number;
16272
+ fps: number;
16273
+ kind: string;
16274
+ }[];
16275
+ };
16276
+ broker: {
16277
+ profiles: readonly {
16278
+ profile: string;
16279
+ status: string;
16280
+ codec: string;
16281
+ width: number;
16282
+ height: number;
16283
+ subscribers: number;
16284
+ inFps: number;
16285
+ outFps: number;
16286
+ }[];
16287
+ webrtcSessions: number;
16288
+ rtspRestream: boolean;
16289
+ } | null;
16290
+ decoder: {
16291
+ nodeId: string;
16292
+ formats: readonly string[];
16293
+ sessionCount: number;
16294
+ shm: {
16295
+ framesWritten: number;
16296
+ getFrameHits: number;
16297
+ getFrameMisses: number;
16298
+ budgetMb: number;
16299
+ };
16300
+ } | null;
16301
+ motion: {
16302
+ enabled: boolean;
16303
+ fps: number;
16304
+ } | null;
16305
+ detection: {
16306
+ nodeId: string;
16307
+ engine: {
16308
+ backend: string;
16309
+ device: string;
16310
+ };
16311
+ phase: "idle" | "active" | "watching";
16312
+ configuredFps: number;
16313
+ actualFps: number;
16314
+ queueDepth: number;
16315
+ avgInferenceMs: number;
16316
+ provisioning: {
16317
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
16318
+ error?: string | undefined;
16319
+ };
16320
+ } | null;
16321
+ audio: {
16322
+ nodeId: string;
16323
+ enabled: boolean;
16324
+ } | null;
16325
+ recording: {
16326
+ mode: "events" | "off" | "continuous";
16327
+ active: boolean;
16328
+ storageBytes: number;
16329
+ } | null;
16330
+ fetchedAt: number;
16331
+ };
16332
+ meta: object;
16333
+ }>;
16334
+ getCameraStatuses: import("@trpc/server").TRPCQueryProcedure<{
16335
+ input: {
16336
+ [x: string]: unknown;
16337
+ deviceIds?: number[] | undefined;
16338
+ };
16339
+ output: readonly {
16340
+ deviceId: number;
16341
+ assignment: {
16342
+ detectionNodeId: string | null;
16343
+ decoderNodeId: string | null;
16344
+ audioNodeId: string | null;
16345
+ pinned: {
16346
+ detection: boolean;
16347
+ decoder: boolean;
16348
+ audio: boolean;
16349
+ };
16350
+ reasons: {
16351
+ detection?: string | undefined;
16352
+ decoder?: string | undefined;
16353
+ audio?: string | undefined;
16354
+ };
16355
+ };
16356
+ source: {
16357
+ streams: readonly {
16358
+ camStreamId: string;
16359
+ codec: string;
16360
+ width: number;
16361
+ height: number;
16362
+ fps: number;
16363
+ kind: string;
16364
+ }[];
16365
+ };
16366
+ broker: {
16367
+ profiles: readonly {
16368
+ profile: string;
16369
+ status: string;
16370
+ codec: string;
16371
+ width: number;
16372
+ height: number;
16373
+ subscribers: number;
16374
+ inFps: number;
16375
+ outFps: number;
16376
+ }[];
16377
+ webrtcSessions: number;
16378
+ rtspRestream: boolean;
16379
+ } | null;
16380
+ decoder: {
16381
+ nodeId: string;
16382
+ formats: readonly string[];
16383
+ sessionCount: number;
16384
+ shm: {
16385
+ framesWritten: number;
16386
+ getFrameHits: number;
16387
+ getFrameMisses: number;
16388
+ budgetMb: number;
16389
+ };
16390
+ } | null;
16391
+ motion: {
16392
+ enabled: boolean;
16393
+ fps: number;
16394
+ } | null;
16395
+ detection: {
16396
+ nodeId: string;
16397
+ engine: {
16398
+ backend: string;
16399
+ device: string;
16400
+ };
16401
+ phase: "idle" | "active" | "watching";
16402
+ configuredFps: number;
16403
+ actualFps: number;
16404
+ queueDepth: number;
16405
+ avgInferenceMs: number;
16406
+ provisioning: {
16407
+ state: "idle" | "failed" | "ready" | "installing" | "verifying";
16408
+ error?: string | undefined;
16409
+ };
16410
+ } | null;
16411
+ audio: {
16412
+ nodeId: string;
16413
+ enabled: boolean;
16414
+ } | null;
16415
+ recording: {
16416
+ mode: "events" | "off" | "continuous";
16417
+ active: boolean;
16418
+ storageBytes: number;
16419
+ } | null;
16420
+ fetchedAt: number;
16421
+ }[];
16422
+ meta: object;
16423
+ }>;
16008
16424
  listTemplates: import("@trpc/server").TRPCQueryProcedure<{
16009
16425
  input: {
16010
16426
  nodeId?: string | undefined;
@@ -259,7 +259,7 @@ export interface DeviceProxy {
259
259
  readonly faceGallery: Pick<InferDeviceProxyCap<typeof faceGalleryCapability>, 'getFaceByTrack'>;
260
260
  readonly networkQuality: Pick<InferDeviceProxyCap<typeof networkQualityCapability>, 'getDeviceStats' | 'reportClientStats'>;
261
261
  readonly pipelineExecutor: Pick<InferDeviceProxyCap<typeof pipelineExecutorCapability>, 'runPipeline' | 'runPipelineBatch'>;
262
- readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignDecoder' | 'unassignDecoder' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | 'getAudioAssignments' | 'getDecoderAssignment' | 'getCameraSettings' | 'setCameraStepToggle' | 'getCameraStepOverrides' | 'setCameraStepOverride' | 'setCameraPipelineForAgent' | 'resolvePipeline' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
262
+ readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignDecoder' | 'unassignDecoder' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | 'getAudioAssignments' | 'getDecoderAssignment' | 'getCameraSettings' | 'setCameraStepToggle' | 'getCameraStepOverrides' | 'setCameraStepOverride' | 'setCameraPipelineForAgent' | 'resolvePipeline' | 'getCameraStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
263
263
  readonly pipelineRunner: Pick<InferDeviceProxyCap<typeof pipelineRunnerCapability>, 'detachCamera' | 'getCameraMetrics'>;
264
264
  readonly plateGallery: Pick<InferDeviceProxyCap<typeof plateGalleryCapability>, 'listPlates' | 'getPlateByTrack'>;
265
265
  readonly recording: Pick<InferDeviceProxyCap<typeof recordingCapability>, 'getAvailability' | 'getDaysWithRecordings' | 'getPlaybackManifest' | 'getDeviceConfig' | 'locateSegment' | 'readSegmentBytes' | 'setDeviceConfig' | 'rescanStorage' | 'pruneFootage' | 'getStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 698 method paths across 107 capabilities.
9
+ * Coverage: 702 method paths across 107 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -71,8 +71,8 @@ export interface SystemProxy {
71
71
  readonly networkQuality: Pick<InferProvider<typeof networkQualityCapability>, 'getAllStats'>;
72
72
  readonly nodes: Pick<InferProvider<typeof nodesCapability>, 'topology' | 'deployAddon' | 'undeployAddon' | 'restartAddon' | 'restartProcess' | 'restartNode' | 'shutdownNode' | 'renameNode' | 'clusterAddonStatus' | 'getCapUsageGraph' | 'getNodeAddons' | 'setProcessLogLevel' | 'executeQuery'>;
73
73
  readonly notificationOutput: Pick<InferProvider<typeof notificationOutputCapability>, 'send' | 'sendTest'>;
74
- readonly pipelineExecutor: Pick<InferProvider<typeof pipelineExecutorCapability>, 'getAvailableEngines' | 'getSelectedEngine' | 'getDefaultSteps' | 'reprobeEngine' | 'getVideoPipelineSteps' | 'setVideoPipelineSteps' | 'getSchema' | 'getGlobalSteps' | 'getGlobalPipelineConfig' | 'getOrchestratorConfigSchema' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate' | 'getCapabilities' | 'getAddonModels' | 'downloadModel' | 'deleteModel' | 'detect' | 'cacheFrameInPool' | 'inferCached' | 'uncacheFrame' | 'getEffectiveTuning' | 'listLoadedEngines' | 'spinEngine' | 'killEngine' | 'listReferenceImages' | 'getReferenceImage' | 'getReferenceAudioFiles' | 'getReferenceAudio' | 'getAudioCapabilities' | 'runAudioTest' | 'getDetectionConfigSchema'>;
75
- readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getDecoderAssignments' | 'getAudioNodeLoad' | 'getAgentSettings' | 'listAgentSettings' | 'setAgentAddonDefaults' | 'removeAgentSettings' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
74
+ readonly pipelineExecutor: Pick<InferProvider<typeof pipelineExecutorCapability>, 'getAvailableEngines' | 'getSelectedEngine' | 'getDefaultSteps' | 'reprobeEngine' | 'getEngineProvisioning' | 'getVideoPipelineSteps' | 'setVideoPipelineSteps' | 'getSchema' | 'getGlobalSteps' | 'getGlobalPipelineConfig' | 'getOrchestratorConfigSchema' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate' | 'getCapabilities' | 'getAddonModels' | 'downloadModel' | 'deleteModel' | 'detect' | 'cacheFrameInPool' | 'inferCached' | 'uncacheFrame' | 'getEffectiveTuning' | 'listLoadedEngines' | 'spinEngine' | 'killEngine' | 'listReferenceImages' | 'getReferenceImage' | 'getReferenceAudioFiles' | 'getReferenceAudio' | 'getAudioCapabilities' | 'runAudioTest' | 'getDetectionConfigSchema'>;
75
+ readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getDecoderAssignments' | 'getAudioNodeLoad' | 'getAgentSettings' | 'listAgentSettings' | 'setAgentAddonDefaults' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'getCameraStatuses' | 'listTemplates' | 'saveTemplate' | 'updateTemplate' | 'deleteTemplate'>;
76
76
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras'>;
77
77
  readonly plateGallery: Pick<InferProvider<typeof plateGalleryCapability>, 'getPlateMedia' | 'searchPlates' | 'suggestPlateClusters' | 'correctPlateText' | 'deletePlate'>;
78
78
  readonly recording: Pick<InferProvider<typeof recordingCapability>, 'getStorageUsage'>;