@camstack/addon-provider-onvif 1.2.65 → 1.2.67

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.js CHANGED
@@ -20436,6 +20436,14 @@ var AgentPipelineSettingsSchema = object({
20436
20436
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20437
20437
  ingest: boolean().optional(),
20438
20438
  /**
20439
+ * This node's decode RAM budget, MB. Wins over the cluster
20440
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20441
+ * own RAM unless the operator moved the cluster value (D365).
20442
+ */
20443
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20444
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20445
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20446
+ /**
20439
20447
  * Operator override for the LAN host a cross-node decoder dials to reach
20440
20448
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20441
20449
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -20897,6 +20905,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
20897
20905
  }), object({ success: literal(true) }), {
20898
20906
  kind: "mutation",
20899
20907
  auth: "admin"
20908
+ }), method(object({
20909
+ agentNodeId: string(),
20910
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
20911
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
20912
+ }), object({ success: literal(true) }), {
20913
+ kind: "mutation",
20914
+ auth: "admin"
20900
20915
  }), method(object({
20901
20916
  agentNodeId: string(),
20902
20917
  reachableHost: string().nullable()
@@ -29891,7 +29906,15 @@ var BaseDeviceProvider = class extends BaseAddon {
29891
29906
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
29892
29907
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
29893
29908
  await this.healSavedConfig(saved, savedDevices);
29894
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
29909
+ try {
29910
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
29911
+ } catch (err) {
29912
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
29913
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
29914
+ deviceId: saved.id,
29915
+ stableId: saved.stableId
29916
+ } });
29917
+ }
29895
29918
  restored.add(saved.id);
29896
29919
  };
29897
29920
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -33990,6 +34013,12 @@ Object.freeze({
33990
34013
  addonId: null,
33991
34014
  access: "create"
33992
34015
  },
34016
+ "pipelineOrchestrator.setAgentDecodeLimits": {
34017
+ capName: "pipeline-orchestrator",
34018
+ capScope: "system",
34019
+ addonId: null,
34020
+ access: "create"
34021
+ },
33993
34022
  "pipelineOrchestrator.setAgentDetectWeight": {
33994
34023
  capName: "pipeline-orchestrator",
33995
34024
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -20437,6 +20437,14 @@ var AgentPipelineSettingsSchema = object({
20437
20437
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20438
20438
  ingest: boolean().optional(),
20439
20439
  /**
20440
+ * This node's decode RAM budget, MB. Wins over the cluster
20441
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20442
+ * own RAM unless the operator moved the cluster value (D365).
20443
+ */
20444
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20445
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20446
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20447
+ /**
20440
20448
  * Operator override for the LAN host a cross-node decoder dials to reach
20441
20449
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20442
20450
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -20898,6 +20906,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
20898
20906
  }), object({ success: literal(true) }), {
20899
20907
  kind: "mutation",
20900
20908
  auth: "admin"
20909
+ }), method(object({
20910
+ agentNodeId: string(),
20911
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
20912
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
20913
+ }), object({ success: literal(true) }), {
20914
+ kind: "mutation",
20915
+ auth: "admin"
20901
20916
  }), method(object({
20902
20917
  agentNodeId: string(),
20903
20918
  reachableHost: string().nullable()
@@ -29892,7 +29907,15 @@ var BaseDeviceProvider = class extends BaseAddon {
29892
29907
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
29893
29908
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
29894
29909
  await this.healSavedConfig(saved, savedDevices);
29895
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
29910
+ try {
29911
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
29912
+ } catch (err) {
29913
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
29914
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
29915
+ deviceId: saved.id,
29916
+ stableId: saved.stableId
29917
+ } });
29918
+ }
29896
29919
  restored.add(saved.id);
29897
29920
  };
29898
29921
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -33991,6 +34014,12 @@ Object.freeze({
33991
34014
  addonId: null,
33992
34015
  access: "create"
33993
34016
  },
34017
+ "pipelineOrchestrator.setAgentDecodeLimits": {
34018
+ capName: "pipeline-orchestrator",
34019
+ capScope: "system",
34020
+ addonId: null,
34021
+ access: "create"
34022
+ },
33994
34023
  "pipelineOrchestrator.setAgentDetectWeight": {
33995
34024
  capName: "pipeline-orchestrator",
33996
34025
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.65",
3
+ "version": "1.2.67",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",