@camstack/addon-pipeline-orchestrator 1.1.20 → 1.1.21
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/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-BM9L-K3j.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-DVzgRExi.mjs} +3 -3
- package/dist/{hostInit-Db9cKu1A.mjs → hostInit-CEqZfaom.mjs} +3 -3
- package/dist/index.js +46 -43
- package/dist/index.mjs +46 -43
- package/dist/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
|
|
|
3
3
|
var e = {
|
|
4
4
|
"@camstack/sdk": {
|
|
5
5
|
name: "@camstack/sdk",
|
|
6
|
-
version: "1.1.
|
|
6
|
+
version: "1.1.15",
|
|
7
7
|
scope: ["default"],
|
|
8
8
|
loaded: !1,
|
|
9
9
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.1.
|
|
21
|
+
version: "1.1.24",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.1.
|
|
36
|
+
version: "1.1.20",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_orchestrator_widgets",
|
|
@@ -36,7 +36,7 @@ async function r() {
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"@camstack/types": {
|
|
39
|
-
version: "1.1.
|
|
39
|
+
version: "1.1.24",
|
|
40
40
|
scope: "default",
|
|
41
41
|
shareConfig: {
|
|
42
42
|
singleton: !0,
|
|
@@ -45,7 +45,7 @@ async function r() {
|
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
"@camstack/sdk": {
|
|
48
|
-
version: "1.1.
|
|
48
|
+
version: "1.1.15",
|
|
49
49
|
scope: "default",
|
|
50
50
|
shareConfig: {
|
|
51
51
|
singleton: !0,
|
|
@@ -99,7 +99,7 @@ async function r() {
|
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
101
|
"@camstack/ui-library": {
|
|
102
|
-
version: "1.1.
|
|
102
|
+
version: "1.1.20",
|
|
103
103
|
scope: "default",
|
|
104
104
|
shareConfig: {
|
|
105
105
|
singleton: !0,
|
package/dist/index.js
CHANGED
|
@@ -15778,7 +15778,10 @@ var AgentLoadSummarySchema = object({
|
|
|
15778
15778
|
online: boolean(),
|
|
15779
15779
|
load: RunnerLocalLoadSchema,
|
|
15780
15780
|
/** Computed score used by the L2 capacity balancer (lower = less loaded). */
|
|
15781
|
-
score: number()
|
|
15781
|
+
score: number(),
|
|
15782
|
+
/** This node's decode hwaccel backend (per-node `probedBestHwaccel`), or null
|
|
15783
|
+
* when not yet probed — for the cluster Pipeline table UI (P0.2). */
|
|
15784
|
+
decodeHwaccel: string().nullable()
|
|
15782
15785
|
});
|
|
15783
15786
|
/**
|
|
15784
15787
|
* Aggregate metrics across the whole detection cluster. Replaces the legacy
|
|
@@ -18489,7 +18492,7 @@ var HardwareEncoderIdSchema = _enum([
|
|
|
18489
18492
|
"libx264",
|
|
18490
18493
|
"libx265"
|
|
18491
18494
|
]);
|
|
18492
|
-
|
|
18495
|
+
object({
|
|
18493
18496
|
encoders: array(object({
|
|
18494
18497
|
encoder: HardwareEncoderIdSchema,
|
|
18495
18498
|
codec: _enum(["H264", "H265"]),
|
|
@@ -18508,15 +18511,7 @@ var HardwareEncodersSchema = object({
|
|
|
18508
18511
|
defaultH265: HardwareEncoderIdSchema,
|
|
18509
18512
|
probedAt: number()
|
|
18510
18513
|
});
|
|
18511
|
-
|
|
18512
|
-
* Decode-side companion to {@link HardwareEncodersSchema}: the `-hwaccel`
|
|
18513
|
-
* methods the configured ffmpeg binary actually supports (parsed from
|
|
18514
|
-
* `ffmpeg -hwaccels`). Used to gate decode-hwaccel attempts so the transcode
|
|
18515
|
-
* egress never spends a spawn on a backend this build cannot offer. Per-stream
|
|
18516
|
-
* decode fragility (e.g. VideoToolbox HEVC) is still handled by the egress's
|
|
18517
|
-
* software fallback — this only filters out wholly-unsupported backends.
|
|
18518
|
-
*/
|
|
18519
|
-
var HardwareDecodeAccelsSchema = object({
|
|
18514
|
+
object({
|
|
18520
18515
|
methods: array(string()).readonly(),
|
|
18521
18516
|
probedAt: number()
|
|
18522
18517
|
});
|
|
@@ -18579,13 +18574,7 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
18579
18574
|
format: ModelFormatSchema,
|
|
18580
18575
|
reason: string()
|
|
18581
18576
|
});
|
|
18582
|
-
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema)
|
|
18583
|
-
kind: "mutation",
|
|
18584
|
-
auth: "admin"
|
|
18585
|
-
}), method(_void(), HardwareDecodeAccelsSchema), method(_void(), HardwareDecodeAccelsSchema, {
|
|
18586
|
-
kind: "mutation",
|
|
18587
|
-
auth: "admin"
|
|
18588
|
-
});
|
|
18577
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema);
|
|
18589
18578
|
var PtzPresetSchema = object({
|
|
18590
18579
|
id: string(),
|
|
18591
18580
|
name: string()
|
|
@@ -22210,30 +22199,6 @@ Object.freeze({
|
|
|
22210
22199
|
addonId: null,
|
|
22211
22200
|
access: "view"
|
|
22212
22201
|
},
|
|
22213
|
-
"platformProbe.getHardwareDecodeAccels": {
|
|
22214
|
-
capName: "platform-probe",
|
|
22215
|
-
capScope: "system",
|
|
22216
|
-
addonId: null,
|
|
22217
|
-
access: "view"
|
|
22218
|
-
},
|
|
22219
|
-
"platformProbe.getHardwareEncoders": {
|
|
22220
|
-
capName: "platform-probe",
|
|
22221
|
-
capScope: "system",
|
|
22222
|
-
addonId: null,
|
|
22223
|
-
access: "view"
|
|
22224
|
-
},
|
|
22225
|
-
"platformProbe.refreshHardwareDecodeAccels": {
|
|
22226
|
-
capName: "platform-probe",
|
|
22227
|
-
capScope: "system",
|
|
22228
|
-
addonId: null,
|
|
22229
|
-
access: "create"
|
|
22230
|
-
},
|
|
22231
|
-
"platformProbe.refreshHardwareEncoders": {
|
|
22232
|
-
capName: "platform-probe",
|
|
22233
|
-
capScope: "system",
|
|
22234
|
-
addonId: null,
|
|
22235
|
-
access: "create"
|
|
22236
|
-
},
|
|
22237
22202
|
"platformProbe.resolveHwAccel": {
|
|
22238
22203
|
capName: "platform-probe",
|
|
22239
22204
|
capScope: "system",
|
|
@@ -25966,6 +25931,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
|
|
|
25966
25931
|
* re-dispatching).
|
|
25967
25932
|
*/
|
|
25968
25933
|
async getAgentLoad() {
|
|
25934
|
+
await this.refreshDecodeHwaccels();
|
|
25969
25935
|
await this.collectAgentLoad();
|
|
25970
25936
|
return [...this.cachedAgentLoad.values()];
|
|
25971
25937
|
}
|
|
@@ -26231,11 +26197,48 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
|
|
|
26231
26197
|
nodeId: load.nodeId,
|
|
26232
26198
|
online: true,
|
|
26233
26199
|
load,
|
|
26234
|
-
score: computeCapacityScore(load)
|
|
26200
|
+
score: computeCapacityScore(load),
|
|
26201
|
+
decodeHwaccel: this.decodeHwaccelByNode.get(load.nodeId) ?? null
|
|
26235
26202
|
});
|
|
26236
26203
|
this.cachedAgentLoad = next;
|
|
26237
26204
|
}
|
|
26238
26205
|
/**
|
|
26206
|
+
* Per-node decode hwaccel cache (`nodeId` → backend), refreshed by
|
|
26207
|
+
* {@link refreshDecodeHwaccels} before a UI-facing {@link getAgentLoad}. Read
|
|
26208
|
+
* from the decoder addon's per-node `probedBestHwaccel@<node>` setting — a
|
|
26209
|
+
* node-LOCAL probe published to a per-node setting — via `addonSettings`,
|
|
26210
|
+
* NEVER the `platform-probe` singleton (whose pin answers with hub hardware).
|
|
26211
|
+
*/
|
|
26212
|
+
decodeHwaccelByNode = /* @__PURE__ */ new Map();
|
|
26213
|
+
/** Refresh {@link decodeHwaccelByNode} for every known runner node. */
|
|
26214
|
+
async refreshDecodeHwaccels() {
|
|
26215
|
+
await Promise.all([...this.knownRunnerNodes].map(async (nodeId) => {
|
|
26216
|
+
const hwaccel = await this.readNodeDecodeHwaccel(nodeId);
|
|
26217
|
+
if (hwaccel !== void 0) this.decodeHwaccelByNode.set(nodeId, hwaccel);
|
|
26218
|
+
}));
|
|
26219
|
+
}
|
|
26220
|
+
/**
|
|
26221
|
+
* Read a node's `probedBestHwaccel` from the decoder-ffmpeg addon's per-node
|
|
26222
|
+
* settings via the hub-routed `addonSettings` cap. Returns `null` when the
|
|
26223
|
+
* value is empty/unset, `undefined` on a read failure (keep the last known).
|
|
26224
|
+
* Mirrors {@link readDetectionPipelineEngine}.
|
|
26225
|
+
*/
|
|
26226
|
+
async readNodeDecodeHwaccel(nodeId) {
|
|
26227
|
+
const api = this.ctx.api;
|
|
26228
|
+
if (!api?.addonSettings) return void 0;
|
|
26229
|
+
try {
|
|
26230
|
+
const schema = await api.addonSettings.getGlobalSettings.query({
|
|
26231
|
+
addonId: "decoder-ffmpeg",
|
|
26232
|
+
nodeId
|
|
26233
|
+
});
|
|
26234
|
+
if (!schema) return void 0;
|
|
26235
|
+
for (const s of schema.sections) for (const f of s.fields) if (f.key === "probedBestHwaccel") return typeof f.value === "string" && f.value.length > 0 ? f.value : null;
|
|
26236
|
+
return null;
|
|
26237
|
+
} catch {
|
|
26238
|
+
return;
|
|
26239
|
+
}
|
|
26240
|
+
}
|
|
26241
|
+
/**
|
|
26239
26242
|
* Per-node `getLocalLoad` budget (ms). A WEDGED runner — transport up
|
|
26240
26243
|
* enough to stay in the service registry, but whose `broker.call` neither
|
|
26241
26244
|
* resolves nor rejects (observed live as
|
package/dist/index.mjs
CHANGED
|
@@ -15774,7 +15774,10 @@ var AgentLoadSummarySchema = object({
|
|
|
15774
15774
|
online: boolean(),
|
|
15775
15775
|
load: RunnerLocalLoadSchema,
|
|
15776
15776
|
/** Computed score used by the L2 capacity balancer (lower = less loaded). */
|
|
15777
|
-
score: number()
|
|
15777
|
+
score: number(),
|
|
15778
|
+
/** This node's decode hwaccel backend (per-node `probedBestHwaccel`), or null
|
|
15779
|
+
* when not yet probed — for the cluster Pipeline table UI (P0.2). */
|
|
15780
|
+
decodeHwaccel: string().nullable()
|
|
15778
15781
|
});
|
|
15779
15782
|
/**
|
|
15780
15783
|
* Aggregate metrics across the whole detection cluster. Replaces the legacy
|
|
@@ -18485,7 +18488,7 @@ var HardwareEncoderIdSchema = _enum([
|
|
|
18485
18488
|
"libx264",
|
|
18486
18489
|
"libx265"
|
|
18487
18490
|
]);
|
|
18488
|
-
|
|
18491
|
+
object({
|
|
18489
18492
|
encoders: array(object({
|
|
18490
18493
|
encoder: HardwareEncoderIdSchema,
|
|
18491
18494
|
codec: _enum(["H264", "H265"]),
|
|
@@ -18504,15 +18507,7 @@ var HardwareEncodersSchema = object({
|
|
|
18504
18507
|
defaultH265: HardwareEncoderIdSchema,
|
|
18505
18508
|
probedAt: number()
|
|
18506
18509
|
});
|
|
18507
|
-
|
|
18508
|
-
* Decode-side companion to {@link HardwareEncodersSchema}: the `-hwaccel`
|
|
18509
|
-
* methods the configured ffmpeg binary actually supports (parsed from
|
|
18510
|
-
* `ffmpeg -hwaccels`). Used to gate decode-hwaccel attempts so the transcode
|
|
18511
|
-
* egress never spends a spawn on a backend this build cannot offer. Per-stream
|
|
18512
|
-
* decode fragility (e.g. VideoToolbox HEVC) is still handled by the egress's
|
|
18513
|
-
* software fallback — this only filters out wholly-unsupported backends.
|
|
18514
|
-
*/
|
|
18515
|
-
var HardwareDecodeAccelsSchema = object({
|
|
18510
|
+
object({
|
|
18516
18511
|
methods: array(string()).readonly(),
|
|
18517
18512
|
probedAt: number()
|
|
18518
18513
|
});
|
|
@@ -18575,13 +18570,7 @@ var ResolvedInferenceConfigSchema = object({
|
|
|
18575
18570
|
format: ModelFormatSchema,
|
|
18576
18571
|
reason: string()
|
|
18577
18572
|
});
|
|
18578
|
-
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema)
|
|
18579
|
-
kind: "mutation",
|
|
18580
|
-
auth: "admin"
|
|
18581
|
-
}), method(_void(), HardwareDecodeAccelsSchema), method(_void(), HardwareDecodeAccelsSchema, {
|
|
18582
|
-
kind: "mutation",
|
|
18583
|
-
auth: "admin"
|
|
18584
|
-
});
|
|
18573
|
+
method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema), method(object({ requirements: array(ModelRequirementSchema).readonly() }), ResolvedInferenceConfigSchema), method(object({ prefer: HwAccelBackendInputSchema }), HwAccelResolutionSchema);
|
|
18585
18574
|
var PtzPresetSchema = object({
|
|
18586
18575
|
id: string(),
|
|
18587
18576
|
name: string()
|
|
@@ -22206,30 +22195,6 @@ Object.freeze({
|
|
|
22206
22195
|
addonId: null,
|
|
22207
22196
|
access: "view"
|
|
22208
22197
|
},
|
|
22209
|
-
"platformProbe.getHardwareDecodeAccels": {
|
|
22210
|
-
capName: "platform-probe",
|
|
22211
|
-
capScope: "system",
|
|
22212
|
-
addonId: null,
|
|
22213
|
-
access: "view"
|
|
22214
|
-
},
|
|
22215
|
-
"platformProbe.getHardwareEncoders": {
|
|
22216
|
-
capName: "platform-probe",
|
|
22217
|
-
capScope: "system",
|
|
22218
|
-
addonId: null,
|
|
22219
|
-
access: "view"
|
|
22220
|
-
},
|
|
22221
|
-
"platformProbe.refreshHardwareDecodeAccels": {
|
|
22222
|
-
capName: "platform-probe",
|
|
22223
|
-
capScope: "system",
|
|
22224
|
-
addonId: null,
|
|
22225
|
-
access: "create"
|
|
22226
|
-
},
|
|
22227
|
-
"platformProbe.refreshHardwareEncoders": {
|
|
22228
|
-
capName: "platform-probe",
|
|
22229
|
-
capScope: "system",
|
|
22230
|
-
addonId: null,
|
|
22231
|
-
access: "create"
|
|
22232
|
-
},
|
|
22233
22198
|
"platformProbe.resolveHwAccel": {
|
|
22234
22199
|
capName: "platform-probe",
|
|
22235
22200
|
capScope: "system",
|
|
@@ -25962,6 +25927,7 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
|
|
|
25962
25927
|
* re-dispatching).
|
|
25963
25928
|
*/
|
|
25964
25929
|
async getAgentLoad() {
|
|
25930
|
+
await this.refreshDecodeHwaccels();
|
|
25965
25931
|
await this.collectAgentLoad();
|
|
25966
25932
|
return [...this.cachedAgentLoad.values()];
|
|
25967
25933
|
}
|
|
@@ -26227,11 +26193,48 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
|
|
|
26227
26193
|
nodeId: load.nodeId,
|
|
26228
26194
|
online: true,
|
|
26229
26195
|
load,
|
|
26230
|
-
score: computeCapacityScore(load)
|
|
26196
|
+
score: computeCapacityScore(load),
|
|
26197
|
+
decodeHwaccel: this.decodeHwaccelByNode.get(load.nodeId) ?? null
|
|
26231
26198
|
});
|
|
26232
26199
|
this.cachedAgentLoad = next;
|
|
26233
26200
|
}
|
|
26234
26201
|
/**
|
|
26202
|
+
* Per-node decode hwaccel cache (`nodeId` → backend), refreshed by
|
|
26203
|
+
* {@link refreshDecodeHwaccels} before a UI-facing {@link getAgentLoad}. Read
|
|
26204
|
+
* from the decoder addon's per-node `probedBestHwaccel@<node>` setting — a
|
|
26205
|
+
* node-LOCAL probe published to a per-node setting — via `addonSettings`,
|
|
26206
|
+
* NEVER the `platform-probe` singleton (whose pin answers with hub hardware).
|
|
26207
|
+
*/
|
|
26208
|
+
decodeHwaccelByNode = /* @__PURE__ */ new Map();
|
|
26209
|
+
/** Refresh {@link decodeHwaccelByNode} for every known runner node. */
|
|
26210
|
+
async refreshDecodeHwaccels() {
|
|
26211
|
+
await Promise.all([...this.knownRunnerNodes].map(async (nodeId) => {
|
|
26212
|
+
const hwaccel = await this.readNodeDecodeHwaccel(nodeId);
|
|
26213
|
+
if (hwaccel !== void 0) this.decodeHwaccelByNode.set(nodeId, hwaccel);
|
|
26214
|
+
}));
|
|
26215
|
+
}
|
|
26216
|
+
/**
|
|
26217
|
+
* Read a node's `probedBestHwaccel` from the decoder-ffmpeg addon's per-node
|
|
26218
|
+
* settings via the hub-routed `addonSettings` cap. Returns `null` when the
|
|
26219
|
+
* value is empty/unset, `undefined` on a read failure (keep the last known).
|
|
26220
|
+
* Mirrors {@link readDetectionPipelineEngine}.
|
|
26221
|
+
*/
|
|
26222
|
+
async readNodeDecodeHwaccel(nodeId) {
|
|
26223
|
+
const api = this.ctx.api;
|
|
26224
|
+
if (!api?.addonSettings) return void 0;
|
|
26225
|
+
try {
|
|
26226
|
+
const schema = await api.addonSettings.getGlobalSettings.query({
|
|
26227
|
+
addonId: "decoder-ffmpeg",
|
|
26228
|
+
nodeId
|
|
26229
|
+
});
|
|
26230
|
+
if (!schema) return void 0;
|
|
26231
|
+
for (const s of schema.sections) for (const f of s.fields) if (f.key === "probedBestHwaccel") return typeof f.value === "string" && f.value.length > 0 ? f.value : null;
|
|
26232
|
+
return null;
|
|
26233
|
+
} catch {
|
|
26234
|
+
return;
|
|
26235
|
+
}
|
|
26236
|
+
}
|
|
26237
|
+
/**
|
|
26235
26238
|
* Per-node `getLocalLoad` budget (ms). A WEDGED runner — transport up
|
|
26236
26239
|
* enough to stay in the service registry, but whose `broker.call` neither
|
|
26237
26240
|
* resolves nor rejects (observed live as
|
package/dist/remoteEntry.js
CHANGED
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-DVzgRExi.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-pipeline-orchestrator",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.21",
|
|
4
4
|
"description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|