@camstack/addon-provider-wyze 0.2.70 → 0.2.72

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
@@ -20773,6 +20773,14 @@ var AgentPipelineSettingsSchema = object({
20773
20773
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20774
20774
  ingest: boolean().optional(),
20775
20775
  /**
20776
+ * This node's decode RAM budget, MB. Wins over the cluster
20777
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20778
+ * own RAM unless the operator moved the cluster value (D365).
20779
+ */
20780
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20781
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20782
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20783
+ /**
20776
20784
  * Operator override for the LAN host a cross-node decoder dials to reach
20777
20785
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20778
20786
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21234,6 +21242,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21234
21242
  }), object({ success: literal(true) }), {
21235
21243
  kind: "mutation",
21236
21244
  auth: "admin"
21245
+ }), method(object({
21246
+ agentNodeId: string(),
21247
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21248
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21249
+ }), object({ success: literal(true) }), {
21250
+ kind: "mutation",
21251
+ auth: "admin"
21237
21252
  }), method(object({
21238
21253
  agentNodeId: string(),
21239
21254
  reachableHost: string().nullable()
@@ -33264,7 +33279,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33264
33279
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33265
33280
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33266
33281
  await this.healSavedConfig(saved, savedDevices);
33267
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33282
+ try {
33283
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33284
+ } catch (err) {
33285
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33286
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33287
+ deviceId: saved.id,
33288
+ stableId: saved.stableId
33289
+ } });
33290
+ }
33268
33291
  restored.add(saved.id);
33269
33292
  };
33270
33293
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37297,6 +37320,12 @@ Object.freeze({
37297
37320
  addonId: null,
37298
37321
  access: "create"
37299
37322
  },
37323
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37324
+ capName: "pipeline-orchestrator",
37325
+ capScope: "system",
37326
+ addonId: null,
37327
+ access: "create"
37328
+ },
37300
37329
  "pipelineOrchestrator.setAgentDetectWeight": {
37301
37330
  capName: "pipeline-orchestrator",
37302
37331
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -20752,6 +20752,14 @@ var AgentPipelineSettingsSchema = object({
20752
20752
  /** Node is eligible to be the ingest / source-owner (serve the restream). */
20753
20753
  ingest: boolean().optional(),
20754
20754
  /**
20755
+ * This node's decode RAM budget, MB. Wins over the cluster
20756
+ * `nodeDecodeBudgetMb`; absent, the runner derives a share of the node's
20757
+ * own RAM unless the operator moved the cluster value (D365).
20758
+ */
20759
+ decodeBudgetMb: number().int().min(1024).max(65536).optional(),
20760
+ /** This node's live decode-worker cap. Wins over the cluster `maxLiveDecodeWorkers`. */
20761
+ maxLiveDecodeWorkers: number().int().min(1).max(32).optional(),
20762
+ /**
20755
20763
  * Operator override for the LAN host a cross-node decoder dials to reach
20756
20764
  * THIS node's restream (Cluster UI). Absent → auto-detect: a remote runner
20757
20765
  * falls back to its `CAMSTACK_HUB_URL`-derived host (the Moleculer address
@@ -21213,6 +21221,13 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
21213
21221
  }), object({ success: literal(true) }), {
21214
21222
  kind: "mutation",
21215
21223
  auth: "admin"
21224
+ }), method(object({
21225
+ agentNodeId: string(),
21226
+ decodeBudgetMb: number().int().min(1024).max(65536).nullable().optional(),
21227
+ maxLiveDecodeWorkers: number().int().min(1).max(32).nullable().optional()
21228
+ }), object({ success: literal(true) }), {
21229
+ kind: "mutation",
21230
+ auth: "admin"
21216
21231
  }), method(object({
21217
21232
  agentNodeId: string(),
21218
21233
  reachableHost: string().nullable()
@@ -33243,7 +33258,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33243
33258
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33244
33259
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33245
33260
  await this.healSavedConfig(saved, savedDevices);
33246
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33261
+ try {
33262
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33263
+ } catch (err) {
33264
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33265
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33266
+ deviceId: saved.id,
33267
+ stableId: saved.stableId
33268
+ } });
33269
+ }
33247
33270
  restored.add(saved.id);
33248
33271
  };
33249
33272
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37276,6 +37299,12 @@ Object.freeze({
37276
37299
  addonId: null,
37277
37300
  access: "create"
37278
37301
  },
37302
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37303
+ capName: "pipeline-orchestrator",
37304
+ capScope: "system",
37305
+ addonId: null,
37306
+ access: "create"
37307
+ },
37279
37308
  "pipelineOrchestrator.setAgentDetectWeight": {
37280
37309
  capName: "pipeline-orchestrator",
37281
37310
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.70",
3
+ "version": "0.2.72",
4
4
  "description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
5
5
  "keywords": [
6
6
  "camstack",