@camstack/addon-provider-dreo 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
@@ -20777,6 +20777,14 @@ var AgentPipelineSettingsSchema = object({
20777
20777
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20778
20778
  ingest: boolean().optional(),
20779
20779
  /**
20780
+ * This node's decode RAM budget, MB. Wins over the cluster
20781
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20782
+ * own RAM unless the operator moved the cluster value (D365).
20783
+ */
20784
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20785
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20786
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20787
+ /**
20780
20788
  * Operator override for the LAN host a cross-node decoder dials to reach
20781
20789
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20782
20790
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21238,6 +21246,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21238
21246
  }), object({ success: literal(true) }), {
21239
21247
  kind: "mutation",
21240
21248
  auth: "admin"
21249
+ }), method(object({
21250
+ agentNodeId: string(),
21251
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21252
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21253
+ }), object({ success: literal(true) }), {
21254
+ kind: "mutation",
21255
+ auth: "admin"
21241
21256
  }), method(object({
21242
21257
  agentNodeId: string(),
21243
21258
  reachableHost: string().nullable()
@@ -33164,7 +33179,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33164
33179
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33165
33180
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33166
33181
  await this.healSavedConfig(saved, savedDevices);
33167
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33182
+ try {
33183
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33184
+ } catch (err) {
33185
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33186
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33187
+ deviceId: saved.id,
33188
+ stableId: saved.stableId
33189
+ } });
33190
+ }
33168
33191
  restored.add(saved.id);
33169
33192
  };
33170
33193
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37197,6 +37220,12 @@ Object.freeze({
37197
37220
  addonId: null,
37198
37221
  access: "create"
37199
37222
  },
37223
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37224
+ capName: "pipeline-orchestrator",
37225
+ capScope: "system",
37226
+ addonId: null,
37227
+ access: "create"
37228
+ },
37200
37229
  "pipelineOrchestrator.setAgentDetectWeight": {
37201
37230
  capName: "pipeline-orchestrator",
37202
37231
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -20778,6 +20778,14 @@ var AgentPipelineSettingsSchema = object({
20778
20778
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20779
20779
  ingest: boolean().optional(),
20780
20780
  /**
20781
+ * This node's decode RAM budget, MB. Wins over the cluster
20782
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20783
+ * own RAM unless the operator moved the cluster value (D365).
20784
+ */
20785
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20786
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20787
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20788
+ /**
20781
20789
  * Operator override for the LAN host a cross-node decoder dials to reach
20782
20790
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20783
20791
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21239,6 +21247,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21239
21247
  }), object({ success: literal(true) }), {
21240
21248
  kind: "mutation",
21241
21249
  auth: "admin"
21250
+ }), method(object({
21251
+ agentNodeId: string(),
21252
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21253
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21254
+ }), object({ success: literal(true) }), {
21255
+ kind: "mutation",
21256
+ auth: "admin"
21242
21257
  }), method(object({
21243
21258
  agentNodeId: string(),
21244
21259
  reachableHost: string().nullable()
@@ -33165,7 +33180,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33165
33180
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33166
33181
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33167
33182
  await this.healSavedConfig(saved, savedDevices);
33168
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33183
+ try {
33184
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33185
+ } catch (err) {
33186
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33187
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33188
+ deviceId: saved.id,
33189
+ stableId: saved.stableId
33190
+ } });
33191
+ }
33169
33192
  restored.add(saved.id);
33170
33193
  };
33171
33194
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37198,6 +37221,12 @@ Object.freeze({
37198
37221
  addonId: null,
37199
37222
  access: "create"
37200
37223
  },
37224
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37225
+ capName: "pipeline-orchestrator",
37226
+ capScope: "system",
37227
+ addonId: null,
37228
+ access: "create"
37229
+ },
37201
37230
  "pipelineOrchestrator.setAgentDetectWeight": {
37202
37231
  capName: "pipeline-orchestrator",
37203
37232
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-dreo",
3
- "version": "0.2.66",
3
+ "version": "0.2.68",
4
4
  "description": "Dreo smart-device (fan / air-circulator / purifier / heater / humidifier) device-provider addon for CamStack — wraps the @apocaliss92/nodedreo Dreo cloud client (REST + WebSocket)",
5
5
  "keywords": [
6
6
  "camstack",