@camstack/addon-provider-amcrest 0.2.68 → 0.2.70

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
@@ -20719,6 +20719,14 @@ var AgentPipelineSettingsSchema = object({
20719
20719
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20720
20720
  ingest: boolean().optional(),
20721
20721
  /**
20722
+ * This node's decode RAM budget, MB. Wins over the cluster
20723
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20724
+ * own RAM unless the operator moved the cluster value (D365).
20725
+ */
20726
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20727
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20728
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20729
+ /**
20722
20730
  * Operator override for the LAN host a cross-node decoder dials to reach
20723
20731
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20724
20732
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21180,6 +21188,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21180
21188
  }), object({ success: literal(true) }), {
21181
21189
  kind: "mutation",
21182
21190
  auth: "admin"
21191
+ }), method(object({
21192
+ agentNodeId: string(),
21193
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21194
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21195
+ }), object({ success: literal(true) }), {
21196
+ kind: "mutation",
21197
+ auth: "admin"
21183
21198
  }), method(object({
21184
21199
  agentNodeId: string(),
21185
21200
  reachableHost: string().nullable()
@@ -33508,7 +33523,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33508
33523
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33509
33524
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33510
33525
  await this.healSavedConfig(saved, savedDevices);
33511
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33526
+ try {
33527
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33528
+ } catch (err) {
33529
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33530
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33531
+ deviceId: saved.id,
33532
+ stableId: saved.stableId
33533
+ } });
33534
+ }
33512
33535
  restored.add(saved.id);
33513
33536
  };
33514
33537
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37747,6 +37770,12 @@ Object.freeze({
37747
37770
  addonId: null,
37748
37771
  access: "create"
37749
37772
  },
37773
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37774
+ capName: "pipeline-orchestrator",
37775
+ capScope: "system",
37776
+ addonId: null,
37777
+ access: "create"
37778
+ },
37750
37779
  "pipelineOrchestrator.setAgentDetectWeight": {
37751
37780
  capName: "pipeline-orchestrator",
37752
37781
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -20720,6 +20720,14 @@ var AgentPipelineSettingsSchema = object({
20720
20720
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20721
20721
  ingest: boolean().optional(),
20722
20722
  /**
20723
+ * This node's decode RAM budget, MB. Wins over the cluster
20724
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20725
+ * own RAM unless the operator moved the cluster value (D365).
20726
+ */
20727
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20728
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20729
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20730
+ /**
20723
20731
  * Operator override for the LAN host a cross-node decoder dials to reach
20724
20732
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20725
20733
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21181,6 +21189,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21181
21189
  }), object({ success: literal(true) }), {
21182
21190
  kind: "mutation",
21183
21191
  auth: "admin"
21192
+ }), method(object({
21193
+ agentNodeId: string(),
21194
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21195
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21196
+ }), object({ success: literal(true) }), {
21197
+ kind: "mutation",
21198
+ auth: "admin"
21184
21199
  }), method(object({
21185
21200
  agentNodeId: string(),
21186
21201
  reachableHost: string().nullable()
@@ -33509,7 +33524,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33509
33524
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33510
33525
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33511
33526
  await this.healSavedConfig(saved, savedDevices);
33512
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33527
+ try {
33528
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33529
+ } catch (err) {
33530
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33531
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33532
+ deviceId: saved.id,
33533
+ stableId: saved.stableId
33534
+ } });
33535
+ }
33513
33536
  restored.add(saved.id);
33514
33537
  };
33515
33538
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37748,6 +37771,12 @@ Object.freeze({
37748
37771
  addonId: null,
37749
37772
  access: "create"
37750
37773
  },
37774
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37775
+ capName: "pipeline-orchestrator",
37776
+ capScope: "system",
37777
+ addonId: null,
37778
+ access: "create"
37779
+ },
37751
37780
  "pipelineOrchestrator.setAgentDetectWeight": {
37752
37781
  capName: "pipeline-orchestrator",
37753
37782
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.68",
3
+ "version": "0.2.70",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",