@camstack/addon-provider-velux 0.2.66 → 0.2.68

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
@@ -20724,6 +20724,14 @@ var AgentPipelineSettingsSchema = object({
20724
20724
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20725
20725
  ingest: boolean().optional(),
20726
20726
  /**
20727
+ * This node's decode RAM budget, MB. Wins over the cluster
20728
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20729
+ * own RAM unless the operator moved the cluster value (D365).
20730
+ */
20731
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20732
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20733
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20734
+ /**
20727
20735
  * Operator override for the LAN host a cross-node decoder dials to reach
20728
20736
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20729
20737
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21185,6 +21193,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21185
21193
  }), object({ success: literal(true) }), {
21186
21194
  kind: "mutation",
21187
21195
  auth: "admin"
21196
+ }), method(object({
21197
+ agentNodeId: string(),
21198
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21199
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21200
+ }), object({ success: literal(true) }), {
21201
+ kind: "mutation",
21202
+ auth: "admin"
21188
21203
  }), method(object({
21189
21204
  agentNodeId: string(),
21190
21205
  reachableHost: string().nullable()
@@ -33103,7 +33118,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33103
33118
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33104
33119
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33105
33120
  await this.healSavedConfig(saved, savedDevices);
33106
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33121
+ try {
33122
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33123
+ } catch (err) {
33124
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33125
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33126
+ deviceId: saved.id,
33127
+ stableId: saved.stableId
33128
+ } });
33129
+ }
33107
33130
  restored.add(saved.id);
33108
33131
  };
33109
33132
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37136,6 +37159,12 @@ Object.freeze({
37136
37159
  addonId: null,
37137
37160
  access: "create"
37138
37161
  },
37162
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37163
+ capName: "pipeline-orchestrator",
37164
+ capScope: "system",
37165
+ addonId: null,
37166
+ access: "create"
37167
+ },
37139
37168
  "pipelineOrchestrator.setAgentDetectWeight": {
37140
37169
  capName: "pipeline-orchestrator",
37141
37170
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -20723,6 +20723,14 @@ var AgentPipelineSettingsSchema = object({
20723
20723
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20724
20724
  ingest: boolean().optional(),
20725
20725
  /**
20726
+ * This node's decode RAM budget, MB. Wins over the cluster
20727
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20728
+ * own RAM unless the operator moved the cluster value (D365).
20729
+ */
20730
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20731
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20732
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20733
+ /**
20726
20734
  * Operator override for the LAN host a cross-node decoder dials to reach
20727
20735
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20728
20736
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21184,6 +21192,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21184
21192
  }), object({ success: literal(true) }), {
21185
21193
  kind: "mutation",
21186
21194
  auth: "admin"
21195
+ }), method(object({
21196
+ agentNodeId: string(),
21197
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21198
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21199
+ }), object({ success: literal(true) }), {
21200
+ kind: "mutation",
21201
+ auth: "admin"
21187
21202
  }), method(object({
21188
21203
  agentNodeId: string(),
21189
21204
  reachableHost: string().nullable()
@@ -33102,7 +33117,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33102
33117
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33103
33118
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33104
33119
  await this.healSavedConfig(saved, savedDevices);
33105
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33120
+ try {
33121
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33122
+ } catch (err) {
33123
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33124
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33125
+ deviceId: saved.id,
33126
+ stableId: saved.stableId
33127
+ } });
33128
+ }
33106
33129
  restored.add(saved.id);
33107
33130
  };
33108
33131
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37135,6 +37158,12 @@ Object.freeze({
37135
37158
  addonId: null,
37136
37159
  access: "create"
37137
37160
  },
37161
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37162
+ capName: "pipeline-orchestrator",
37163
+ capScope: "system",
37164
+ addonId: null,
37165
+ access: "create"
37166
+ },
37138
37167
  "pipelineOrchestrator.setAgentDetectWeight": {
37139
37168
  capName: "pipeline-orchestrator",
37140
37169
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-velux",
3
- "version": "0.2.66",
3
+ "version": "0.2.68",
4
4
  "description": "Velux KLF-200 device-provider addon for CamStack — local-gateway window + shutter covers (positional, no tilt)",
5
5
  "keywords": [
6
6
  "camstack",