@camstack/addon-pipeline-orchestrator 1.2.637 → 1.2.638

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/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.638] - 2026-10-28
11
+
12
+ ### Changed
13
+
14
+ - Node alerts name the node by its display name and id
15
+
10
16
  ## [1.2.637] - 2026-10-28
11
17
 
12
18
  ### Changed
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.439",
21
+ version: "1.2.440",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_orchestrator_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.439",
39
+ version: "1.2.440",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
package/dist/index.js CHANGED
@@ -106978,6 +106978,11 @@ var VERB = {
106978
106978
  };
106979
106979
  var RebalanceSuggestion = class {
106980
106980
  deps;
106981
+ /** `name (id)` when a name distinct from the id is known, else the id. */
106982
+ async label(nodeId) {
106983
+ const name = await this.deps.nodeName(nodeId);
106984
+ return name === null || name.length === 0 || name === nodeId ? nodeId : `${name} (${nodeId})`;
106985
+ }
106981
106986
  timer = null;
106982
106987
  lastNote = null;
106983
106988
  notUsedRaised = /* @__PURE__ */ new Set();
@@ -107026,7 +107031,7 @@ var RebalanceSuggestion = class {
107026
107031
  return;
107027
107032
  }
107028
107033
  const note = this.lastNote;
107029
- const cause = note === null ? "The cluster changed" : `Node ${note.nodeId} ${VERB[note.kind]}`;
107034
+ const cause = note === null ? "The cluster changed" : `Node ${await this.label(note.nodeId)} ${VERB[note.kind]}`;
107030
107035
  const count = manual.moves.length;
107031
107036
  const now = this.deps.now();
107032
107037
  logger.info("rebalance suggestion: raising the alert", { meta: {
@@ -107070,7 +107075,7 @@ var RebalanceSuggestion = class {
107070
107075
  category: ALERT_CATEGORY,
107071
107076
  severity: "info",
107072
107077
  title: "Node is not used for detection",
107073
- message: `Node ${nodeId} is online but detection is not enabled on it, so no camera will be placed there.`,
107078
+ message: `Node ${await this.label(nodeId)} is online but detection is not enabled on it, so no camera will be placed there.`,
107074
107079
  action: {
107075
107080
  label: "Open node",
107076
107081
  href: `/system/pipeline?view=nodes&node=${encodeURIComponent(nodeId)}`,
@@ -109429,6 +109434,13 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
109429
109434
  }),
109430
109435
  enabledNodes: () => this.topology?.enabledNodes ?? [],
109431
109436
  runnerNodes: () => this.topology?.collectRunnerNodeIds() ?? [],
109437
+ nodeName: async (nodeId) => {
109438
+ try {
109439
+ return (await ctx.api.nodes.directory.query()).nodes.find((n) => n.id === nodeId)?.name ?? null;
109440
+ } catch {
109441
+ return null;
109442
+ }
109443
+ },
109432
109444
  alerts: {
109433
109445
  emit: (alert) => ctx.api.alerts.emit.mutate(alert),
109434
109446
  complete: (alertId) => ctx.api.alerts.update.mutate({
package/dist/index.mjs CHANGED
@@ -106950,6 +106950,11 @@ var VERB = {
106950
106950
  };
106951
106951
  var RebalanceSuggestion = class {
106952
106952
  deps;
106953
+ /** `name (id)` when a name distinct from the id is known, else the id. */
106954
+ async label(nodeId) {
106955
+ const name = await this.deps.nodeName(nodeId);
106956
+ return name === null || name.length === 0 || name === nodeId ? nodeId : `${name} (${nodeId})`;
106957
+ }
106953
106958
  timer = null;
106954
106959
  lastNote = null;
106955
106960
  notUsedRaised = /* @__PURE__ */ new Set();
@@ -106998,7 +107003,7 @@ var RebalanceSuggestion = class {
106998
107003
  return;
106999
107004
  }
107000
107005
  const note = this.lastNote;
107001
- const cause = note === null ? "The cluster changed" : `Node ${note.nodeId} ${VERB[note.kind]}`;
107006
+ const cause = note === null ? "The cluster changed" : `Node ${await this.label(note.nodeId)} ${VERB[note.kind]}`;
107002
107007
  const count = manual.moves.length;
107003
107008
  const now = this.deps.now();
107004
107009
  logger.info("rebalance suggestion: raising the alert", { meta: {
@@ -107042,7 +107047,7 @@ var RebalanceSuggestion = class {
107042
107047
  category: ALERT_CATEGORY,
107043
107048
  severity: "info",
107044
107049
  title: "Node is not used for detection",
107045
- message: `Node ${nodeId} is online but detection is not enabled on it, so no camera will be placed there.`,
107050
+ message: `Node ${await this.label(nodeId)} is online but detection is not enabled on it, so no camera will be placed there.`,
107046
107051
  action: {
107047
107052
  label: "Open node",
107048
107053
  href: `/system/pipeline?view=nodes&node=${encodeURIComponent(nodeId)}`,
@@ -109401,6 +109406,13 @@ var PipelineOrchestratorAddon = class PipelineOrchestratorAddon extends BaseAddo
109401
109406
  }),
109402
109407
  enabledNodes: () => this.topology?.enabledNodes ?? [],
109403
109408
  runnerNodes: () => this.topology?.collectRunnerNodeIds() ?? [],
109409
+ nodeName: async (nodeId) => {
109410
+ try {
109411
+ return (await ctx.api.nodes.directory.query()).nodes.find((n) => n.id === nodeId)?.name ?? null;
109412
+ } catch {
109413
+ return null;
109414
+ }
109415
+ },
109404
109416
  alerts: {
109405
109417
  emit: (alert) => ctx.api.alerts.emit.mutate(alert),
109406
109418
  complete: (alertId) => ctx.api.alerts.update.mutate({
@@ -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-3S_aIDgV.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-Hya6JCSL.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.2.637",
3
+ "version": "1.2.638",
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",