@camstack/addon-provider-unifi 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()
@@ -33120,7 +33135,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33120
33135
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33121
33136
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33122
33137
  await this.healSavedConfig(saved, savedDevices);
33123
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33138
+ try {
33139
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33140
+ } catch (err) {
33141
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33142
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33143
+ deviceId: saved.id,
33144
+ stableId: saved.stableId
33145
+ } });
33146
+ }
33124
33147
  restored.add(saved.id);
33125
33148
  };
33126
33149
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37153,6 +37176,12 @@ Object.freeze({
37153
37176
  addonId: null,
37154
37177
  access: "create"
37155
37178
  },
37179
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37180
+ capName: "pipeline-orchestrator",
37181
+ capScope: "system",
37182
+ addonId: null,
37183
+ access: "create"
37184
+ },
37156
37185
  "pipelineOrchestrator.setAgentDetectWeight": {
37157
37186
  capName: "pipeline-orchestrator",
37158
37187
  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()
@@ -33119,7 +33134,15 @@ var BaseDeviceProvider = class extends BaseAddon {
33119
33134
  if (!Class) throw new Error(`no device class registered for type "${saved.type}"`);
33120
33135
  if (saved.parentDeviceId !== null && !restored.has(saved.parentDeviceId)) throw new Error(`parent device ${saved.parentDeviceId} not restored`);
33121
33136
  await this.healSavedConfig(saved, savedDevices);
33122
- await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33137
+ try {
33138
+ await this.ctx.kernel.devices.create(saved.stableId, Class, {}, saved.parentDeviceId);
33139
+ } catch (err) {
33140
+ if (!(await this.ctx.kernel.devices.getAll()).some((device) => device.stableId === saved.stableId)) throw err;
33141
+ this.ctx.logger.debug("Restore row came to life during its own dial — kept", { tags: {
33142
+ deviceId: saved.id,
33143
+ stableId: saved.stableId
33144
+ } });
33145
+ }
33123
33146
  restored.add(saved.id);
33124
33147
  };
33125
33148
  const topLevel = savedDevices.filter((saved) => saved.parentDeviceId === null);
@@ -37152,6 +37175,12 @@ Object.freeze({
37152
37175
  addonId: null,
37153
37176
  access: "create"
37154
37177
  },
37178
+ "pipelineOrchestrator.setAgentDecodeLimits": {
37179
+ capName: "pipeline-orchestrator",
37180
+ capScope: "system",
37181
+ addonId: null,
37182
+ access: "create"
37183
+ },
37155
37184
  "pipelineOrchestrator.setAgentDetectWeight": {
37156
37185
  capName: "pipeline-orchestrator",
37157
37186
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-unifi",
3
- "version": "0.2.66",
3
+ "version": "0.2.68",
4
4
  "description": "UniFi Network controller device-provider addon for CamStack — local-controller infra switches/APs (as containers) + network-client presence. NO cameras/Protect.",
5
5
  "keywords": [
6
6
  "camstack",