@camstack/types 1.1.24 → 1.1.25
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/capabilities/pipeline-orchestrator.cap.d.ts +40 -0
- package/dist/generated/addon-api.d.ts +32 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +1 -1
- package/dist/index.js +57 -1
- package/dist/index.mjs +57 -1
- package/dist/types/agent-pipeline-settings.d.ts +20 -0
- package/package.json +1 -1
|
@@ -687,6 +687,11 @@ export declare const pipelineOrchestratorCapability: {
|
|
|
687
687
|
settings: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
688
688
|
}, z.core.$strip>>>;
|
|
689
689
|
maxCameras: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
690
|
+
detectWeight: z.ZodOptional<z.ZodNumber>;
|
|
691
|
+
detect: z.ZodOptional<z.ZodBoolean>;
|
|
692
|
+
decode: z.ZodOptional<z.ZodBoolean>;
|
|
693
|
+
audio: z.ZodOptional<z.ZodBoolean>;
|
|
694
|
+
ingest: z.ZodOptional<z.ZodBoolean>;
|
|
690
695
|
}, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
691
696
|
/** Enumerate every agent's settings (hub + remote runners). */
|
|
692
697
|
readonly listAgentSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
@@ -698,6 +703,11 @@ export declare const pipelineOrchestratorCapability: {
|
|
|
698
703
|
settings: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
699
704
|
}, z.core.$strip>>>;
|
|
700
705
|
maxCameras: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
706
|
+
detectWeight: z.ZodOptional<z.ZodNumber>;
|
|
707
|
+
detect: z.ZodOptional<z.ZodBoolean>;
|
|
708
|
+
decode: z.ZodOptional<z.ZodBoolean>;
|
|
709
|
+
audio: z.ZodOptional<z.ZodBoolean>;
|
|
710
|
+
ingest: z.ZodOptional<z.ZodBoolean>;
|
|
701
711
|
}, z.core.$strip>;
|
|
702
712
|
}, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
|
|
703
713
|
/** Bulk-replace ALL addon configs on one agent. Used by the agent-level PipelineEditor which emits the full map per edit. Merges on top of existing entries — omitted addonIds are left alone. */
|
|
@@ -745,6 +755,36 @@ export declare const pipelineOrchestratorCapability: {
|
|
|
745
755
|
}, z.core.$strip>, z.ZodObject<{
|
|
746
756
|
success: z.ZodLiteral<true>;
|
|
747
757
|
}, z.core.$strip>, "mutation">;
|
|
758
|
+
/**
|
|
759
|
+
* Set a node's detection WEIGHT (relative share for the quota balancer).
|
|
760
|
+
* `null` clears it (back to the implicit weight 1). Unpinned cameras
|
|
761
|
+
* distribute proportionally to weight; `maxCameras` still clamps on top.
|
|
762
|
+
*/
|
|
763
|
+
readonly setAgentDetectWeight: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
764
|
+
agentNodeId: z.ZodString;
|
|
765
|
+
detectWeight: z.ZodNullable<z.ZodNumber>;
|
|
766
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
767
|
+
success: z.ZodLiteral<true>;
|
|
768
|
+
}, z.core.$strip>, "mutation">;
|
|
769
|
+
/**
|
|
770
|
+
* Set one node's placement CAPABILITIES — the per-node record that
|
|
771
|
+
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
772
|
+
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
773
|
+
* Each flag is optional in the patch: omit a flag to leave it unchanged,
|
|
774
|
+
* pass `null` to reset it to the node default (`hub` → capable, every
|
|
775
|
+
* other node → not). Detection/decode/audio eligibility is derived from
|
|
776
|
+
* these flags across the cluster; changing them re-derives the enabled
|
|
777
|
+
* sets and reconciles dispatch immediately.
|
|
778
|
+
*/
|
|
779
|
+
readonly setAgentCapabilities: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
780
|
+
agentNodeId: z.ZodString;
|
|
781
|
+
detect: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
782
|
+
decode: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
783
|
+
audio: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
784
|
+
ingest: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
785
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
786
|
+
success: z.ZodLiteral<true>;
|
|
787
|
+
}, z.core.$strip>, "mutation">;
|
|
748
788
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
749
789
|
readonly getCameraSettings: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
750
790
|
deviceId: z.ZodNumber;
|
|
@@ -9887,6 +9887,22 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
|
|
|
9887
9887
|
};
|
|
9888
9888
|
meta: object;
|
|
9889
9889
|
}>;
|
|
9890
|
+
setAgentDetectWeight: import("@trpc/server").TRPCMutationProcedure<{
|
|
9891
|
+
input: {
|
|
9892
|
+
[x: string]: unknown;
|
|
9893
|
+
agentNodeId: string;
|
|
9894
|
+
detectWeight: number | null;
|
|
9895
|
+
};
|
|
9896
|
+
output: {
|
|
9897
|
+
success: true;
|
|
9898
|
+
};
|
|
9899
|
+
meta: object;
|
|
9900
|
+
}>;
|
|
9901
|
+
setAgentCapabilities: import("@trpc/server").TRPCMutationProcedure<{
|
|
9902
|
+
input: any;
|
|
9903
|
+
output: any;
|
|
9904
|
+
meta: object;
|
|
9905
|
+
}>;
|
|
9890
9906
|
getCameraSettings: import("@trpc/server").TRPCQueryProcedure<{
|
|
9891
9907
|
input: {
|
|
9892
9908
|
[x: string]: unknown;
|
|
@@ -24225,6 +24241,22 @@ export type AppRouter = import("@trpc/server/unstable-core-do-not-import").Route
|
|
|
24225
24241
|
};
|
|
24226
24242
|
meta: object;
|
|
24227
24243
|
}>;
|
|
24244
|
+
setAgentDetectWeight: import("@trpc/server").TRPCMutationProcedure<{
|
|
24245
|
+
input: {
|
|
24246
|
+
[x: string]: unknown;
|
|
24247
|
+
agentNodeId: string;
|
|
24248
|
+
detectWeight: number | null;
|
|
24249
|
+
};
|
|
24250
|
+
output: {
|
|
24251
|
+
success: true;
|
|
24252
|
+
};
|
|
24253
|
+
meta: object;
|
|
24254
|
+
}>;
|
|
24255
|
+
setAgentCapabilities: import("@trpc/server").TRPCMutationProcedure<{
|
|
24256
|
+
input: any;
|
|
24257
|
+
output: any;
|
|
24258
|
+
meta: object;
|
|
24259
|
+
}>;
|
|
24228
24260
|
getCameraSettings: import("@trpc/server").TRPCQueryProcedure<{
|
|
24229
24261
|
input: {
|
|
24230
24262
|
[x: string]: unknown;
|
|
@@ -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:
|
|
9
|
+
* Coverage: 735 method paths across 111 capabilities.
|
|
10
10
|
*/
|
|
11
11
|
import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
|
|
12
12
|
export interface MethodAccessRecord {
|
|
@@ -72,7 +72,7 @@ export interface SystemProxy {
|
|
|
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>, 'listTargetKinds' | 'listTargets' | 'discoverTargets' | 'send' | 'testTarget' | 'upsertTarget' | 'deleteTarget' | 'setTargetEnabled'>;
|
|
74
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'>;
|
|
75
|
+
readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getDecoderAssignments' | 'getAudioNodeLoad' | 'getAgentSettings' | 'listAgentSettings' | 'setAgentAddonDefaults' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentDetectWeight' | 'setAgentCapabilities' | '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'>;
|
package/dist/index.js
CHANGED
|
@@ -11998,6 +11998,8 @@ function createSystemProxy(api) {
|
|
|
11998
11998
|
setAgentAddonDefaults: (input) => dispatch("pipelineOrchestrator", "setAgentAddonDefaults", "mutation", input),
|
|
11999
11999
|
removeAgentSettings: (input) => dispatch("pipelineOrchestrator", "removeAgentSettings", "mutation", input),
|
|
12000
12000
|
setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
|
|
12001
|
+
setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
|
|
12002
|
+
setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
|
|
12001
12003
|
getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
|
|
12002
12004
|
listTemplates: (input) => dispatch("pipelineOrchestrator", "listTemplates", "query", input),
|
|
12003
12005
|
saveTemplate: (input) => dispatch("pipelineOrchestrator", "saveTemplate", "mutation", input),
|
|
@@ -16920,7 +16922,17 @@ var AgentAddonConfigSchema = zod.z.object({
|
|
|
16920
16922
|
});
|
|
16921
16923
|
var AgentPipelineSettingsSchema = zod.z.object({
|
|
16922
16924
|
addonDefaults: zod.z.record(zod.z.string(), AgentAddonConfigSchema).readonly(),
|
|
16923
|
-
maxCameras: zod.z.number().int().nonnegative().nullable().default(null)
|
|
16925
|
+
maxCameras: zod.z.number().int().nonnegative().nullable().default(null),
|
|
16926
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16927
|
+
detectWeight: zod.z.number().positive().optional(),
|
|
16928
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
16929
|
+
detect: zod.z.boolean().optional(),
|
|
16930
|
+
/** Node is eligible to host decoder sessions. */
|
|
16931
|
+
decode: zod.z.boolean().optional(),
|
|
16932
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
16933
|
+
audio: zod.z.boolean().optional(),
|
|
16934
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
16935
|
+
ingest: zod.z.boolean().optional()
|
|
16924
16936
|
});
|
|
16925
16937
|
var CameraPipelineForAgentSchema = zod.z.object({
|
|
16926
16938
|
steps: zod.z.array(PipelineStepInputSchema).readonly(),
|
|
@@ -17362,6 +17374,38 @@ var pipelineOrchestratorCapability = {
|
|
|
17362
17374
|
kind: "mutation",
|
|
17363
17375
|
auth: "admin"
|
|
17364
17376
|
}),
|
|
17377
|
+
/**
|
|
17378
|
+
* Set a node's detection WEIGHT (relative share for the quota balancer).
|
|
17379
|
+
* `null` clears it (back to the implicit weight 1). Unpinned cameras
|
|
17380
|
+
* distribute proportionally to weight; `maxCameras` still clamps on top.
|
|
17381
|
+
*/
|
|
17382
|
+
setAgentDetectWeight: require_sleep.method(zod.z.object({
|
|
17383
|
+
agentNodeId: zod.z.string(),
|
|
17384
|
+
detectWeight: zod.z.number().positive().nullable()
|
|
17385
|
+
}), zod.z.object({ success: zod.z.literal(true) }), {
|
|
17386
|
+
kind: "mutation",
|
|
17387
|
+
auth: "admin"
|
|
17388
|
+
}),
|
|
17389
|
+
/**
|
|
17390
|
+
* Set one node's placement CAPABILITIES — the per-node record that
|
|
17391
|
+
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
17392
|
+
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
17393
|
+
* Each flag is optional in the patch: omit a flag to leave it unchanged,
|
|
17394
|
+
* pass `null` to reset it to the node default (`hub` → capable, every
|
|
17395
|
+
* other node → not). Detection/decode/audio eligibility is derived from
|
|
17396
|
+
* these flags across the cluster; changing them re-derives the enabled
|
|
17397
|
+
* sets and reconciles dispatch immediately.
|
|
17398
|
+
*/
|
|
17399
|
+
setAgentCapabilities: require_sleep.method(zod.z.object({
|
|
17400
|
+
agentNodeId: zod.z.string(),
|
|
17401
|
+
detect: zod.z.boolean().nullable().optional(),
|
|
17402
|
+
decode: zod.z.boolean().nullable().optional(),
|
|
17403
|
+
audio: zod.z.boolean().nullable().optional(),
|
|
17404
|
+
ingest: zod.z.boolean().nullable().optional()
|
|
17405
|
+
}), zod.z.object({ success: zod.z.literal(true) }), {
|
|
17406
|
+
kind: "mutation",
|
|
17407
|
+
auth: "admin"
|
|
17408
|
+
}),
|
|
17365
17409
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
17366
17410
|
getCameraSettings: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
17367
17411
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -25789,6 +25833,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
25789
25833
|
addonId: null,
|
|
25790
25834
|
access: "create"
|
|
25791
25835
|
},
|
|
25836
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
25837
|
+
capName: "pipeline-orchestrator",
|
|
25838
|
+
capScope: "system",
|
|
25839
|
+
addonId: null,
|
|
25840
|
+
access: "create"
|
|
25841
|
+
},
|
|
25842
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
25843
|
+
capName: "pipeline-orchestrator",
|
|
25844
|
+
capScope: "system",
|
|
25845
|
+
addonId: null,
|
|
25846
|
+
access: "create"
|
|
25847
|
+
},
|
|
25792
25848
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
25793
25849
|
capName: "pipeline-orchestrator",
|
|
25794
25850
|
capScope: "system",
|
package/dist/index.mjs
CHANGED
|
@@ -11997,6 +11997,8 @@ function createSystemProxy(api) {
|
|
|
11997
11997
|
setAgentAddonDefaults: (input) => dispatch("pipelineOrchestrator", "setAgentAddonDefaults", "mutation", input),
|
|
11998
11998
|
removeAgentSettings: (input) => dispatch("pipelineOrchestrator", "removeAgentSettings", "mutation", input),
|
|
11999
11999
|
setAgentMaxCameras: (input) => dispatch("pipelineOrchestrator", "setAgentMaxCameras", "mutation", input),
|
|
12000
|
+
setAgentDetectWeight: (input) => dispatch("pipelineOrchestrator", "setAgentDetectWeight", "mutation", input),
|
|
12001
|
+
setAgentCapabilities: (input) => dispatch("pipelineOrchestrator", "setAgentCapabilities", "mutation", input),
|
|
12000
12002
|
getCameraStatuses: (input) => dispatch("pipelineOrchestrator", "getCameraStatuses", "query", input),
|
|
12001
12003
|
listTemplates: (input) => dispatch("pipelineOrchestrator", "listTemplates", "query", input),
|
|
12002
12004
|
saveTemplate: (input) => dispatch("pipelineOrchestrator", "saveTemplate", "mutation", input),
|
|
@@ -16919,7 +16921,17 @@ var AgentAddonConfigSchema = z.object({
|
|
|
16919
16921
|
});
|
|
16920
16922
|
var AgentPipelineSettingsSchema = z.object({
|
|
16921
16923
|
addonDefaults: z.record(z.string(), AgentAddonConfigSchema).readonly(),
|
|
16922
|
-
maxCameras: z.number().int().nonnegative().nullable().default(null)
|
|
16924
|
+
maxCameras: z.number().int().nonnegative().nullable().default(null),
|
|
16925
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
16926
|
+
detectWeight: z.number().positive().optional(),
|
|
16927
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
16928
|
+
detect: z.boolean().optional(),
|
|
16929
|
+
/** Node is eligible to host decoder sessions. */
|
|
16930
|
+
decode: z.boolean().optional(),
|
|
16931
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
16932
|
+
audio: z.boolean().optional(),
|
|
16933
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
16934
|
+
ingest: z.boolean().optional()
|
|
16923
16935
|
});
|
|
16924
16936
|
var CameraPipelineForAgentSchema = z.object({
|
|
16925
16937
|
steps: z.array(PipelineStepInputSchema).readonly(),
|
|
@@ -17361,6 +17373,38 @@ var pipelineOrchestratorCapability = {
|
|
|
17361
17373
|
kind: "mutation",
|
|
17362
17374
|
auth: "admin"
|
|
17363
17375
|
}),
|
|
17376
|
+
/**
|
|
17377
|
+
* Set a node's detection WEIGHT (relative share for the quota balancer).
|
|
17378
|
+
* `null` clears it (back to the implicit weight 1). Unpinned cameras
|
|
17379
|
+
* distribute proportionally to weight; `maxCameras` still clamps on top.
|
|
17380
|
+
*/
|
|
17381
|
+
setAgentDetectWeight: method(z.object({
|
|
17382
|
+
agentNodeId: z.string(),
|
|
17383
|
+
detectWeight: z.number().positive().nullable()
|
|
17384
|
+
}), z.object({ success: z.literal(true) }), {
|
|
17385
|
+
kind: "mutation",
|
|
17386
|
+
auth: "admin"
|
|
17387
|
+
}),
|
|
17388
|
+
/**
|
|
17389
|
+
* Set one node's placement CAPABILITIES — the per-node record that
|
|
17390
|
+
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
17391
|
+
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
17392
|
+
* Each flag is optional in the patch: omit a flag to leave it unchanged,
|
|
17393
|
+
* pass `null` to reset it to the node default (`hub` → capable, every
|
|
17394
|
+
* other node → not). Detection/decode/audio eligibility is derived from
|
|
17395
|
+
* these flags across the cluster; changing them re-derives the enabled
|
|
17396
|
+
* sets and reconciles dispatch immediately.
|
|
17397
|
+
*/
|
|
17398
|
+
setAgentCapabilities: method(z.object({
|
|
17399
|
+
agentNodeId: z.string(),
|
|
17400
|
+
detect: z.boolean().nullable().optional(),
|
|
17401
|
+
decode: z.boolean().nullable().optional(),
|
|
17402
|
+
audio: z.boolean().nullable().optional(),
|
|
17403
|
+
ingest: z.boolean().nullable().optional()
|
|
17404
|
+
}), z.object({ success: z.literal(true) }), {
|
|
17405
|
+
kind: "mutation",
|
|
17406
|
+
auth: "admin"
|
|
17407
|
+
}),
|
|
17364
17408
|
/** Read one camera's settings. Null when never touched (inherits agent defaults fully). */
|
|
17365
17409
|
getCameraSettings: method(z.object({ deviceId: z.number() }), CameraPipelineSettingsSchema.nullable()),
|
|
17366
17410
|
/** Set or clear the 3-state toggle for one (camera, addonId). Pass `enabled: null` to clear and revert to agent default. */
|
|
@@ -25788,6 +25832,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
25788
25832
|
addonId: null,
|
|
25789
25833
|
access: "create"
|
|
25790
25834
|
},
|
|
25835
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
25836
|
+
capName: "pipeline-orchestrator",
|
|
25837
|
+
capScope: "system",
|
|
25838
|
+
addonId: null,
|
|
25839
|
+
access: "create"
|
|
25840
|
+
},
|
|
25841
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
25842
|
+
capName: "pipeline-orchestrator",
|
|
25843
|
+
capScope: "system",
|
|
25844
|
+
addonId: null,
|
|
25845
|
+
access: "create"
|
|
25846
|
+
},
|
|
25791
25847
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
25792
25848
|
capName: "pipeline-orchestrator",
|
|
25793
25849
|
capScope: "system",
|
|
@@ -61,6 +61,26 @@ export interface AgentPipelineSettings {
|
|
|
61
61
|
* without migration.
|
|
62
62
|
*/
|
|
63
63
|
readonly maxCameras?: number | null;
|
|
64
|
+
/**
|
|
65
|
+
* Optional per-node detection WEIGHT (relative share). Unpinned cameras
|
|
66
|
+
* distribute proportionally to weight across detect-capable nodes (e.g.
|
|
67
|
+
* Mac 60 / hub 30 / N100 10). `undefined`/absent = weight 1 (equal share,
|
|
68
|
+
* back-compat: identical to score-only balancing). Ceiling (`maxCameras`)
|
|
69
|
+
* still clamps on top of the weight share.
|
|
70
|
+
*/
|
|
71
|
+
readonly detectWeight?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Placement capabilities (placement-model-design §6) — the per-node record
|
|
74
|
+
* that replaced the four flat orchestrator lists (`enabledNodes`,
|
|
75
|
+
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`). Each
|
|
76
|
+
* flag is optional; an absent flag inherits the node default (`hub` →
|
|
77
|
+
* capable, every other node → not). The orchestrator derives its
|
|
78
|
+
* enabled-node sets from these flags across the cluster.
|
|
79
|
+
*/
|
|
80
|
+
readonly detect?: boolean;
|
|
81
|
+
readonly decode?: boolean;
|
|
82
|
+
readonly audio?: boolean;
|
|
83
|
+
readonly ingest?: boolean;
|
|
64
84
|
}
|
|
65
85
|
/**
|
|
66
86
|
* Per-camera pipeline settings. Sparse by design — a camera that has
|