@camstack/system 1.2.366 → 1.2.368
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/addon-runner.js +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/addon-utils.js +1 -1
- package/dist/addon-utils.mjs +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{child-cap-dispatch-tHbRfy_7.mjs → child-cap-dispatch-By0P9X06.mjs} +1 -1
- package/dist/{child-cap-dispatch-D9uoEW2A.js → child-cap-dispatch-DkcTndAr.js} +1 -1
- package/dist/{composition-sources-GjJ1QxMC.mjs → composition-sources-BVYblwYM.mjs} +1 -1
- package/dist/{composition-sources-AHfMboGi.js → composition-sources-DN0mqx1x.js} +1 -1
- package/dist/{dist-BUfYKaXx.mjs → dist-CuTBQnSA.mjs} +242 -40
- package/dist/{dist-ub3muPSW.js → dist-DyUq7law.js} +242 -40
- package/dist/{event-loop-stall-monitor-CPI1xIcd.mjs → event-loop-stall-monitor-Byx9cQSz.mjs} +1 -1
- package/dist/{event-loop-stall-monitor-j0DRBkuI.js → event-loop-stall-monitor-CBRY-GRZ.js} +1 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/dist/{retired-settings-keys-DNCxYHe1.js → retired-settings-keys-B8VN8tp5.js} +1 -1
- package/dist/{retired-settings-keys-Du41eTrH.mjs → retired-settings-keys-S9AKHO4X.mjs} +1 -1
- package/package.json +1 -1
|
@@ -26294,7 +26294,7 @@ var pipelineExecutorCapability = {
|
|
|
26294
26294
|
auth: "admin"
|
|
26295
26295
|
}),
|
|
26296
26296
|
/**
|
|
26297
|
-
*
|
|
26297
|
+
* Auto tune (D745): the MODEL-BOUND thresholds (`bindsToModel` keys of
|
|
26298
26298
|
* the object-detection root, and their binding keys) stored in THIS node's
|
|
26299
26299
|
* per-camera detector settings — and, unless `dryRun`, remove them so the
|
|
26300
26300
|
* running model's own defaults apply. Every other key of a camera's store
|
|
@@ -26666,7 +26666,143 @@ var pipelineExecutorCapability = {
|
|
|
26666
26666
|
}
|
|
26667
26667
|
};
|
|
26668
26668
|
/**
|
|
26669
|
-
*
|
|
26669
|
+
* Wire shapes of the Load balancing surface (D748): the session placement
|
|
26670
|
+
* policy, the atomic share write, the observed placement statistics, the
|
|
26671
|
+
* hardware share suggestion and the stale device pins.
|
|
26672
|
+
*/
|
|
26673
|
+
/**
|
|
26674
|
+
* How a new detection session picks its node and device.
|
|
26675
|
+
* - `least-loaded` — the historical rule: lowest `attached / weight`, a
|
|
26676
|
+
* constant node order at a tie (D37). An idle node always ties at 0, so a
|
|
26677
|
+
* weight only bites once a node already holds a session.
|
|
26678
|
+
* - `share` — the share of PARALLEL sessions is held to the weights, and a
|
|
26679
|
+
* full or drowning node yields to a free one (D748).
|
|
26680
|
+
*/
|
|
26681
|
+
var SessionPlacementPolicySchema = z.enum(["least-loaded", "share"]);
|
|
26682
|
+
var LoadBalancingSharesInputSchema = z.object({
|
|
26683
|
+
/** nodeId → share (> 0). A node left out keeps its weight. */
|
|
26684
|
+
nodes: z.record(z.string(), z.number().positive()).default({}),
|
|
26685
|
+
/** nodeId → deviceKey → share (> 0). A device left out keeps its weight. */
|
|
26686
|
+
devices: z.record(z.string(), z.record(z.string(), z.number().positive())).default({})
|
|
26687
|
+
});
|
|
26688
|
+
var PlacementStatsInputSchema = z.object({
|
|
26689
|
+
/** Window the observed shares are averaged over (default 1 h, max 24 h). */
|
|
26690
|
+
windowMs: z.number().int().min(6e4).max(1440 * 60 * 1e3).default(3600 * 1e3) });
|
|
26691
|
+
var PlacementDeviceStatsSchema = z.object({
|
|
26692
|
+
deviceKey: z.string(),
|
|
26693
|
+
/** Sessions running on this device now. */
|
|
26694
|
+
sessionsNow: z.number(),
|
|
26695
|
+
/** Sessions started on this device inside the window. */
|
|
26696
|
+
sessionsStarted: z.number(),
|
|
26697
|
+
/** Time-weighted share of the node's parallel sessions over the window (0–1); null = no session ran. */
|
|
26698
|
+
observedShare: z.number().nullable()
|
|
26699
|
+
});
|
|
26700
|
+
var PlacementNodeStatsSchema = z.object({
|
|
26701
|
+
nodeId: z.string(),
|
|
26702
|
+
sessionsNow: z.number(),
|
|
26703
|
+
sessionsStarted: z.number(),
|
|
26704
|
+
/** Time-weighted share of the cluster's parallel sessions over the window (0–1); null = none ran. */
|
|
26705
|
+
observedShare: z.number().nullable(),
|
|
26706
|
+
/** Most sessions this node ran at once inside the window. */
|
|
26707
|
+
peakSessions: z.number(),
|
|
26708
|
+
/** Sessions a share election handed elsewhere because this node was full or drowning. */
|
|
26709
|
+
yieldsAway: z.number(),
|
|
26710
|
+
devices: z.array(PlacementDeviceStatsSchema).readonly()
|
|
26711
|
+
});
|
|
26712
|
+
/** A camera's device pin that the session path cannot honour. */
|
|
26713
|
+
var StaleDevicePinSchema = z.object({
|
|
26714
|
+
deviceId: z.number(),
|
|
26715
|
+
deviceKey: z.string(),
|
|
26716
|
+
/** `disabled` — the key exists on some node but is not enabled anywhere; `absent` — no node has it. */
|
|
26717
|
+
reason: z.enum(["disabled", "absent"])
|
|
26718
|
+
});
|
|
26719
|
+
var PlacementStatsSchema = z.object({
|
|
26720
|
+
policy: SessionPlacementPolicySchema,
|
|
26721
|
+
windowMs: z.number(),
|
|
26722
|
+
/** How much of the window was actually observed (the hub keeps it in memory). */
|
|
26723
|
+
observedForMs: z.number(),
|
|
26724
|
+
sessionsNow: z.number(),
|
|
26725
|
+
/** Most parallel sessions across the cluster inside the window. */
|
|
26726
|
+
clusterPeakSessions: z.number(),
|
|
26727
|
+
nodes: z.array(PlacementNodeStatsSchema).readonly(),
|
|
26728
|
+
stalePins: z.array(StaleDevicePinSchema).readonly()
|
|
26729
|
+
});
|
|
26730
|
+
var SuggestSharesInputSchema = z.object({ headroom: z.number().min(.3).max(.5).default(.4) });
|
|
26731
|
+
var SuggestedDeviceShareSchema = z.object({
|
|
26732
|
+
deviceKey: z.string(),
|
|
26733
|
+
/** Share of the node (0–100, rounded). */
|
|
26734
|
+
share: z.number(),
|
|
26735
|
+
modelId: z.string().nullable(),
|
|
26736
|
+
/** Inferences per second at that model, from the measured table. */
|
|
26737
|
+
fps: z.number().nullable(),
|
|
26738
|
+
measured: z.boolean(),
|
|
26739
|
+
/** Advisory session cap: ⌊fps × (1 − headroom) / camera fps⌋. Never enforced. */
|
|
26740
|
+
suggestedMaxSessions: z.number().nullable()
|
|
26741
|
+
});
|
|
26742
|
+
var SuggestedNodeShareSchema = z.object({
|
|
26743
|
+
nodeId: z.string(),
|
|
26744
|
+
/** Share of the cluster (0–100, rounded); null = node skipped (offline, unknown hardware). */
|
|
26745
|
+
share: z.number().nullable(),
|
|
26746
|
+
/** Parallel sessions the node sustains at the suggested models with the headroom kept free. */
|
|
26747
|
+
capacitySessions: z.number(),
|
|
26748
|
+
devices: z.array(SuggestedDeviceShareSchema).readonly(),
|
|
26749
|
+
skippedReason: z.string().nullable()
|
|
26750
|
+
});
|
|
26751
|
+
var SuggestSharesResultSchema = z.object({
|
|
26752
|
+
headroom: z.number(),
|
|
26753
|
+
/** Camera detection rate the capacity is counted in (the fastest camera's fps). */
|
|
26754
|
+
cameraFps: z.number(),
|
|
26755
|
+
/** How many share → model → capacity rounds ran before the shares stopped moving (≤ 3). */
|
|
26756
|
+
iterations: z.number(),
|
|
26757
|
+
nodes: z.array(SuggestedNodeShareSchema).readonly()
|
|
26758
|
+
});
|
|
26759
|
+
/**
|
|
26760
|
+
* Where the node and device shares come from (D750).
|
|
26761
|
+
* - `auto` — computed by the system from the cluster's measured capacity at
|
|
26762
|
+
* the Auto tune models, and recomputed whenever a node or device joins,
|
|
26763
|
+
* leaves, is switched on or off, or changes model.
|
|
26764
|
+
* - `manual` — the operator's stored sliders. A node or device that cannot
|
|
26765
|
+
* take sessions gives its share to the others in proportion; the stored
|
|
26766
|
+
* values are never rewritten for that.
|
|
26767
|
+
*/
|
|
26768
|
+
var ShareSourceSchema = z.enum(["auto", "manual"]);
|
|
26769
|
+
var SetShareSourceInputSchema = z.object({ source: ShareSourceSchema });
|
|
26770
|
+
z.object({
|
|
26771
|
+
nodes: z.record(z.string(), z.number()),
|
|
26772
|
+
devices: z.record(z.string(), z.record(z.string(), z.number()))
|
|
26773
|
+
});
|
|
26774
|
+
var EffectiveDeviceShareSchema = z.object({
|
|
26775
|
+
deviceKey: z.string(),
|
|
26776
|
+
/** Can take sessions now (enabled, available, can run the root). */
|
|
26777
|
+
eligible: z.boolean(),
|
|
26778
|
+
/** The share the source assigns, as a percentage of the node's devices. */
|
|
26779
|
+
configuredPct: z.number(),
|
|
26780
|
+
/** The share actually used, after an ineligible device's share went to the others. */
|
|
26781
|
+
effectivePct: z.number()
|
|
26782
|
+
});
|
|
26783
|
+
var EffectiveNodeShareSchema = z.object({
|
|
26784
|
+
nodeId: z.string(),
|
|
26785
|
+
eligible: z.boolean(),
|
|
26786
|
+
configuredPct: z.number(),
|
|
26787
|
+
effectivePct: z.number(),
|
|
26788
|
+
devices: z.array(EffectiveDeviceShareSchema).readonly()
|
|
26789
|
+
});
|
|
26790
|
+
var EffectiveSharesSchema = z.object({
|
|
26791
|
+
source: ShareSourceSchema,
|
|
26792
|
+
policy: SessionPlacementPolicySchema,
|
|
26793
|
+
/** `auto` with no computed answer yet: the stored sliders are used meanwhile. */
|
|
26794
|
+
autoPending: z.boolean(),
|
|
26795
|
+
/** When the automatic shares were last computed (ms epoch); null = never. */
|
|
26796
|
+
computedAt: z.number().nullable(),
|
|
26797
|
+
/** What made the system recompute them last. */
|
|
26798
|
+
trigger: z.string().nullable(),
|
|
26799
|
+
nodes: z.array(EffectiveNodeShareSchema).readonly(),
|
|
26800
|
+
/** The relative weights the election reads (before eligibility). */
|
|
26801
|
+
nodeWeights: z.record(z.string(), z.number()),
|
|
26802
|
+
deviceWeights: z.record(z.string(), z.record(z.string(), z.number()))
|
|
26803
|
+
});
|
|
26804
|
+
/**
|
|
26805
|
+
* The wire shapes of the Auto tune plan and apply (D745), used by the
|
|
26670
26806
|
* `pipeline-orchestrator` cap. The recommender's own types
|
|
26671
26807
|
* (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
|
|
26672
26808
|
* schemas are what crosses the cap boundary.
|
|
@@ -26742,7 +26878,9 @@ var DeviceDemandSchema = z.object({
|
|
|
26742
26878
|
"estimate",
|
|
26743
26879
|
"none"
|
|
26744
26880
|
]),
|
|
26745
|
-
observedForMs: z.number().nullable()
|
|
26881
|
+
observedForMs: z.number().nullable(),
|
|
26882
|
+
/** How on-motion sessions were charged: per-device observation, or split by share (D748). */
|
|
26883
|
+
placement: SessionPlacementPolicySchema
|
|
26746
26884
|
});
|
|
26747
26885
|
var DeviceModelChoiceSchema = z.object({
|
|
26748
26886
|
modelId: z.string(),
|
|
@@ -26799,7 +26937,7 @@ var DetectorStoreClearSchema = z.object({
|
|
|
26799
26937
|
deviceId: z.number(),
|
|
26800
26938
|
keys: z.array(z.string()).readonly()
|
|
26801
26939
|
});
|
|
26802
|
-
var
|
|
26940
|
+
var AutoTuneWarningSchema = z.discriminatedUnion("kind", [
|
|
26803
26941
|
z.object({
|
|
26804
26942
|
kind: z.literal("detector-store-cluster-wide"),
|
|
26805
26943
|
skippedNodes: z.array(z.string()).readonly()
|
|
@@ -26814,26 +26952,36 @@ var BestSettingsWarningSchema = z.discriminatedUnion("kind", [
|
|
|
26814
26952
|
deviceKey: z.string()
|
|
26815
26953
|
})
|
|
26816
26954
|
]);
|
|
26817
|
-
var
|
|
26818
|
-
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
26819
|
-
headroom: z.number().min(.3).max(.5).default(.4)
|
|
26820
|
-
|
|
26955
|
+
var AutoTuneOptionsSchema = z.object({
|
|
26956
|
+
/** Share of each accelerator's throughput kept free (0.3–0.5). */
|
|
26957
|
+
headroom: z.number().min(.3).max(.5).default(.4),
|
|
26958
|
+
/**
|
|
26959
|
+
* What-if shares (D748): plan as if these node/device shares were stored
|
|
26960
|
+
* and the policy were `share`. Absent = the stored shares under the stored
|
|
26961
|
+
* policy. A what-if plan is for display; apply always re-plans from what
|
|
26962
|
+
* is stored.
|
|
26963
|
+
*/
|
|
26964
|
+
shares: LoadBalancingSharesInputSchema.optional()
|
|
26965
|
+
});
|
|
26966
|
+
var AutoTunePlanSchema = z.object({
|
|
26821
26967
|
/** Hash of everything the apply will write — the apply refuses a different one. */
|
|
26822
26968
|
planHash: z.string(),
|
|
26823
26969
|
family: z.literal("yolov9"),
|
|
26824
26970
|
headroom: z.number(),
|
|
26971
|
+
/** Planned under what-if shares (D748): for display — apply refuses it as stale. */
|
|
26972
|
+
whatIf: z.boolean(),
|
|
26825
26973
|
generatedAt: z.number(),
|
|
26826
26974
|
nodes: z.array(NodeRecommendationSchema).readonly(),
|
|
26827
26975
|
nodeChanges: z.array(NodeDeviceChangeSchema).readonly(),
|
|
26828
26976
|
cameraClears: z.array(CameraOverrideClearSchema).readonly(),
|
|
26829
26977
|
detectorStoreClears: z.array(DetectorStoreClearSchema).readonly(),
|
|
26830
|
-
warnings: z.array(
|
|
26978
|
+
warnings: z.array(AutoTuneWarningSchema).readonly()
|
|
26831
26979
|
});
|
|
26832
|
-
var
|
|
26980
|
+
var AutoTuneApplyInputSchema = z.object({
|
|
26833
26981
|
planHash: z.string(),
|
|
26834
26982
|
headroom: z.number().min(.3).max(.5).default(.4)
|
|
26835
26983
|
});
|
|
26836
|
-
var
|
|
26984
|
+
var AutoTunePhaseResultSchema = z.object({
|
|
26837
26985
|
phase: z.enum([
|
|
26838
26986
|
"download",
|
|
26839
26987
|
"camera-overrides",
|
|
@@ -26844,19 +26992,19 @@ var BestSettingsPhaseResultSchema = z.object({
|
|
|
26844
26992
|
ok: z.boolean(),
|
|
26845
26993
|
detail: z.string()
|
|
26846
26994
|
});
|
|
26847
|
-
var
|
|
26995
|
+
var AutoTuneApplyResultSchema = z.discriminatedUnion("kind", [
|
|
26848
26996
|
z.object({
|
|
26849
26997
|
kind: z.literal("applied"),
|
|
26850
26998
|
planHash: z.string(),
|
|
26851
|
-
phases: z.array(
|
|
26999
|
+
phases: z.array(AutoTunePhaseResultSchema).readonly()
|
|
26852
27000
|
}),
|
|
26853
27001
|
z.object({
|
|
26854
27002
|
kind: z.literal("aborted"),
|
|
26855
|
-
phases: z.array(
|
|
27003
|
+
phases: z.array(AutoTunePhaseResultSchema).readonly()
|
|
26856
27004
|
}),
|
|
26857
27005
|
z.object({
|
|
26858
27006
|
kind: z.literal("stale"),
|
|
26859
|
-
plan:
|
|
27007
|
+
plan: AutoTunePlanSchema
|
|
26860
27008
|
}),
|
|
26861
27009
|
z.object({
|
|
26862
27010
|
kind: z.literal("refused"),
|
|
@@ -28275,7 +28423,6 @@ var CameraStepOverridePatchSchema = z.object({
|
|
|
28275
28423
|
settings: z.record(z.string(), z.unknown()).readonly().optional()
|
|
28276
28424
|
});
|
|
28277
28425
|
var CameraPipelineSettingsSchema = z.object({
|
|
28278
|
-
pinnedAgentNodeId: z.string().optional(),
|
|
28279
28426
|
stepToggles: z.record(z.string(), z.boolean()).optional(),
|
|
28280
28427
|
stepOverridesByDevice: z.record(z.string(), z.record(z.string(), z.record(z.string(), CameraStepOverridePatchSchema))).optional(),
|
|
28281
28428
|
pipelineByAgent: z.record(z.string(), CameraPipelineForAgentSchema).optional()
|
|
@@ -28953,18 +29100,6 @@ var pipelineOrchestratorCapability = {
|
|
|
28953
29100
|
auth: "admin"
|
|
28954
29101
|
}),
|
|
28955
29102
|
/**
|
|
28956
|
-
* Set a node's detection WEIGHT (relative share for the quota balancer).
|
|
28957
|
-
* `null` clears it (back to the implicit weight 1). Unpinned cameras
|
|
28958
|
-
* distribute proportionally to weight; `maxCameras` still clamps on top.
|
|
28959
|
-
*/
|
|
28960
|
-
setAgentDetectWeight: method(z.object({
|
|
28961
|
-
agentNodeId: z.string(),
|
|
28962
|
-
detectWeight: z.number().positive().nullable()
|
|
28963
|
-
}), z.object({ success: z.literal(true) }), {
|
|
28964
|
-
kind: "mutation",
|
|
28965
|
-
auth: "admin"
|
|
28966
|
-
}),
|
|
28967
|
-
/**
|
|
28968
29103
|
* Set one node's placement CAPABILITIES — the per-node record that
|
|
28969
29104
|
* replaced the four flat orchestrator lists (`enabledNodes`,
|
|
28970
29105
|
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`).
|
|
@@ -29084,7 +29219,7 @@ var pipelineOrchestratorCapability = {
|
|
|
29084
29219
|
auth: "admin"
|
|
29085
29220
|
}),
|
|
29086
29221
|
/**
|
|
29087
|
-
*
|
|
29222
|
+
* Auto tune (D745) — DRY RUN. Recommends ONE detector family (YOLOv9)
|
|
29088
29223
|
* for the whole cluster from each node's static hardware class, the
|
|
29089
29224
|
* measured latency table and the detection demand, and lists every write
|
|
29090
29225
|
* the apply would make: the node model pins set, the enrichment pins and
|
|
@@ -29093,14 +29228,57 @@ var pipelineOrchestratorCapability = {
|
|
|
29093
29228
|
* enablement, device enablement, pins, recording, notifications, zones and
|
|
29094
29229
|
* rules are never part of it. `planHash` names exactly this diff.
|
|
29095
29230
|
*/
|
|
29096
|
-
|
|
29231
|
+
planAutoTune: method(AutoTuneOptionsSchema, AutoTunePlanSchema, { auth: "admin" }),
|
|
29097
29232
|
/**
|
|
29098
|
-
*
|
|
29233
|
+
* Auto tune (D745) — APPLY the plan the operator confirmed. Recomputes
|
|
29099
29234
|
* the plan and refuses (`stale`, with the fresh plan) when its hash is not
|
|
29100
29235
|
* `planHash`, so what is written is exactly the confirmed diff. Offline
|
|
29101
29236
|
* nodes are skipped; there is no undo.
|
|
29102
29237
|
*/
|
|
29103
|
-
|
|
29238
|
+
applyAutoTune: method(AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, {
|
|
29239
|
+
kind: "mutation",
|
|
29240
|
+
auth: "admin"
|
|
29241
|
+
}),
|
|
29242
|
+
/**
|
|
29243
|
+
* Load balancing (D748) — write node shares (`detectWeight`) and per-node
|
|
29244
|
+
* device shares (inference-device `weight`) in ONE atomic read-modify-write
|
|
29245
|
+
* of the agent settings — the only writer of node shares (the per-node
|
|
29246
|
+
* `setAgentDetectWeight` it replaced raced its siblings, one RMW each).
|
|
29247
|
+
* A node or device left out keeps its weight. Never changes the
|
|
29248
|
+
* `sessionPlacement` policy.
|
|
29249
|
+
*/
|
|
29250
|
+
setLoadBalancingShares: method(LoadBalancingSharesInputSchema, z.object({ success: z.literal(true) }), {
|
|
29251
|
+
kind: "mutation",
|
|
29252
|
+
auth: "admin"
|
|
29253
|
+
}),
|
|
29254
|
+
/**
|
|
29255
|
+
* Load balancing (D748) — what placement actually did: per node and
|
|
29256
|
+
* device, sessions now, sessions started and the time-weighted share of
|
|
29257
|
+
* PARALLEL sessions over `windowMs`; the cluster's parallel peak; yields
|
|
29258
|
+
* a share election made; and every device pin the session path cannot
|
|
29259
|
+
* honour. In memory on the hub — a restart starts a new window.
|
|
29260
|
+
*/
|
|
29261
|
+
getPlacementStats: method(PlacementStatsInputSchema, PlacementStatsSchema, { auth: "admin" }),
|
|
29262
|
+
/**
|
|
29263
|
+
* Load balancing (D748) — shares proportional to each node's measured
|
|
29264
|
+
* capacity at the models Auto tune would pick, iterated (≤ 3 rounds)
|
|
29265
|
+
* until the shares stop moving; per device, an ADVISORY session cap.
|
|
29266
|
+
* Writes nothing.
|
|
29267
|
+
*/
|
|
29268
|
+
suggestShares: method(SuggestSharesInputSchema, SuggestSharesResultSchema, { auth: "admin" }),
|
|
29269
|
+
/**
|
|
29270
|
+
* Load balancing (D750) — the shares placement reads now: the source
|
|
29271
|
+
* (automatic capacity shares or the operator's sliders), each node's and
|
|
29272
|
+
* device's configured share, and the effective share after a node or
|
|
29273
|
+
* device that cannot take sessions gave its share to the others.
|
|
29274
|
+
*/
|
|
29275
|
+
getEffectiveShares: method(z.void(), EffectiveSharesSchema, { auth: "admin" }),
|
|
29276
|
+
/**
|
|
29277
|
+
* Load balancing (D750) — switch between automatic and manual shares.
|
|
29278
|
+
* Going manual seeds the sliders with the current automatic shares (one
|
|
29279
|
+
* atomic write), so nothing jumps; going automatic recomputes at once.
|
|
29280
|
+
*/
|
|
29281
|
+
setShareSource: method(SetShareSourceInputSchema, z.object({ success: z.literal(true) }), {
|
|
29104
29282
|
kind: "mutation",
|
|
29105
29283
|
auth: "admin"
|
|
29106
29284
|
}),
|
|
@@ -52286,7 +52464,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52286
52464
|
addonId: null,
|
|
52287
52465
|
access: "view"
|
|
52288
52466
|
},
|
|
52289
|
-
"pipelineOrchestrator.
|
|
52467
|
+
"pipelineOrchestrator.applyAutoTune": {
|
|
52290
52468
|
capName: "pipeline-orchestrator",
|
|
52291
52469
|
capScope: "system",
|
|
52292
52470
|
addonId: null,
|
|
@@ -52406,6 +52584,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52406
52584
|
addonId: null,
|
|
52407
52585
|
access: "view"
|
|
52408
52586
|
},
|
|
52587
|
+
"pipelineOrchestrator.getEffectiveShares": {
|
|
52588
|
+
capName: "pipeline-orchestrator",
|
|
52589
|
+
capScope: "system",
|
|
52590
|
+
addonId: null,
|
|
52591
|
+
access: "view"
|
|
52592
|
+
},
|
|
52409
52593
|
"pipelineOrchestrator.getGlobalMetrics": {
|
|
52410
52594
|
capName: "pipeline-orchestrator",
|
|
52411
52595
|
capScope: "system",
|
|
@@ -52442,6 +52626,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52442
52626
|
addonId: null,
|
|
52443
52627
|
access: "view"
|
|
52444
52628
|
},
|
|
52629
|
+
"pipelineOrchestrator.getPlacementStats": {
|
|
52630
|
+
capName: "pipeline-orchestrator",
|
|
52631
|
+
capScope: "system",
|
|
52632
|
+
addonId: null,
|
|
52633
|
+
access: "view"
|
|
52634
|
+
},
|
|
52445
52635
|
"pipelineOrchestrator.getReconcileFromDiskStatus": {
|
|
52446
52636
|
capName: "pipeline-orchestrator",
|
|
52447
52637
|
capScope: "system",
|
|
@@ -52466,7 +52656,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52466
52656
|
addonId: null,
|
|
52467
52657
|
access: "create"
|
|
52468
52658
|
},
|
|
52469
|
-
"pipelineOrchestrator.
|
|
52659
|
+
"pipelineOrchestrator.planAutoTune": {
|
|
52470
52660
|
capName: "pipeline-orchestrator",
|
|
52471
52661
|
capScope: "system",
|
|
52472
52662
|
addonId: null,
|
|
@@ -52532,12 +52722,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52532
52722
|
addonId: null,
|
|
52533
52723
|
access: "create"
|
|
52534
52724
|
},
|
|
52535
|
-
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
52536
|
-
capName: "pipeline-orchestrator",
|
|
52537
|
-
capScope: "system",
|
|
52538
|
-
addonId: null,
|
|
52539
|
-
access: "create"
|
|
52540
|
-
},
|
|
52541
52725
|
"pipelineOrchestrator.setAgentInferenceDevices": {
|
|
52542
52726
|
capName: "pipeline-orchestrator",
|
|
52543
52727
|
capScope: "system",
|
|
@@ -52592,12 +52776,30 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
52592
52776
|
addonId: null,
|
|
52593
52777
|
access: "create"
|
|
52594
52778
|
},
|
|
52779
|
+
"pipelineOrchestrator.setLoadBalancingShares": {
|
|
52780
|
+
capName: "pipeline-orchestrator",
|
|
52781
|
+
capScope: "system",
|
|
52782
|
+
addonId: null,
|
|
52783
|
+
access: "create"
|
|
52784
|
+
},
|
|
52595
52785
|
"pipelineOrchestrator.setPipelineDevicePin": {
|
|
52596
52786
|
capName: "pipeline-orchestrator",
|
|
52597
52787
|
capScope: "system",
|
|
52598
52788
|
addonId: null,
|
|
52599
52789
|
access: "create"
|
|
52600
52790
|
},
|
|
52791
|
+
"pipelineOrchestrator.setShareSource": {
|
|
52792
|
+
capName: "pipeline-orchestrator",
|
|
52793
|
+
capScope: "system",
|
|
52794
|
+
addonId: null,
|
|
52795
|
+
access: "create"
|
|
52796
|
+
},
|
|
52797
|
+
"pipelineOrchestrator.suggestShares": {
|
|
52798
|
+
capName: "pipeline-orchestrator",
|
|
52799
|
+
capScope: "system",
|
|
52800
|
+
addonId: null,
|
|
52801
|
+
access: "view"
|
|
52802
|
+
},
|
|
52601
52803
|
"pipelineOrchestrator.unassignAudio": {
|
|
52602
52804
|
capName: "pipeline-orchestrator",
|
|
52603
52805
|
capScope: "system",
|