@camstack/addon-provider-hikvision 1.1.7 → 1.1.8
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 +113 -25
- package/dist/addon.mjs +113 -25
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -10268,15 +10268,18 @@ var humiditySensorCapability = {
|
|
|
10268
10268
|
runtimeState: HumiditySensorStatusSchema
|
|
10269
10269
|
};
|
|
10270
10270
|
/**
|
|
10271
|
-
* Image display cap. Models
|
|
10272
|
-
*
|
|
10273
|
-
*
|
|
10274
|
-
* Read-only: there are no setters. The provider resolves
|
|
10275
|
-
*
|
|
10276
|
-
*
|
|
10277
|
-
*
|
|
10278
|
-
*
|
|
10279
|
-
*
|
|
10271
|
+
* Image display cap. Models a single still image exposed by an integration —
|
|
10272
|
+
* a snapshot, a chart, a generated picture, or a robot's cleaning-map render.
|
|
10273
|
+
*
|
|
10274
|
+
* Read-only: there are no setters. The provider resolves whatever upstream
|
|
10275
|
+
* source it has into an ABSOLUTE URL the browser loads directly:
|
|
10276
|
+
* - HA `image.*` entities → the `entity_picture` signed-token path
|
|
10277
|
+
* (token stays in the query string, so no auth header is needed);
|
|
10278
|
+
* - a Dreame/robot map → the cloud/OSS map-image URL (or an addon
|
|
10279
|
+
* data-plane URL serving the rendered map bytes), exposed as its own
|
|
10280
|
+
* Image child device grouped under the robot's container.
|
|
10281
|
+
* The slice carries that URL plus the upstream last-updated timestamp; the
|
|
10282
|
+
* image changes when the source's last-updated marker changes.
|
|
10280
10283
|
*/
|
|
10281
10284
|
var ImageStatusSchema = object({
|
|
10282
10285
|
/** Absolute signed URL the browser loads directly. Null when the
|
|
@@ -10302,18 +10305,47 @@ var imageCapability = {
|
|
|
10302
10305
|
*/
|
|
10303
10306
|
runtimeState: ImageStatusSchema
|
|
10304
10307
|
};
|
|
10308
|
+
/**
|
|
10309
|
+
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
10310
|
+
* with a mowing lifecycle plus a dock action.
|
|
10311
|
+
*
|
|
10312
|
+
* Activity follows HA's canonical lawn-mower lifecycle: `idle` /
|
|
10313
|
+
* `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
|
|
10314
|
+
* nullable — some mowers don't report a battery percentage.
|
|
10315
|
+
*
|
|
10316
|
+
* `startMowing` begins a mowing run, `pause` halts it in place, and
|
|
10317
|
+
* `dock` sends the mower back to its charging station.
|
|
10318
|
+
*/
|
|
10319
|
+
var LawnMowerActivitySchema = _enum([
|
|
10320
|
+
"idle",
|
|
10321
|
+
"mowing",
|
|
10322
|
+
"paused",
|
|
10323
|
+
"docked",
|
|
10324
|
+
"error"
|
|
10325
|
+
]);
|
|
10326
|
+
/** Severity of the current device/error code — info (status), warning, error. */
|
|
10327
|
+
var DeviceCodeSeveritySchema = _enum([
|
|
10328
|
+
"info",
|
|
10329
|
+
"warning",
|
|
10330
|
+
"error"
|
|
10331
|
+
]);
|
|
10305
10332
|
var LawnMowerControlStatusSchema = object({
|
|
10306
10333
|
/** Lifecycle activity of the mower. */
|
|
10307
|
-
activity:
|
|
10308
|
-
"idle",
|
|
10309
|
-
"mowing",
|
|
10310
|
-
"paused",
|
|
10311
|
-
"docked",
|
|
10312
|
-
"error"
|
|
10313
|
-
]),
|
|
10334
|
+
activity: LawnMowerActivitySchema,
|
|
10314
10335
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
10315
10336
|
* reading. */
|
|
10316
10337
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
10338
|
+
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
10339
|
+
* task is active / progress is unavailable. */
|
|
10340
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
10341
|
+
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
10342
|
+
* or null when unknown. */
|
|
10343
|
+
currentCode: number().nullable(),
|
|
10344
|
+
/** Human label for {@link currentCode}, or null when undecodable. */
|
|
10345
|
+
currentCodeLabel: string().nullable(),
|
|
10346
|
+
/** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
|
|
10347
|
+
* attention; `info` is normal status. */
|
|
10348
|
+
severity: DeviceCodeSeveritySchema,
|
|
10317
10349
|
/** Ms epoch when the slice was last updated. */
|
|
10318
10350
|
lastChangedAt: number()
|
|
10319
10351
|
});
|
|
@@ -12539,6 +12571,7 @@ var VacuumStateSchema = _enum([
|
|
|
12539
12571
|
"paused",
|
|
12540
12572
|
"returning",
|
|
12541
12573
|
"docked",
|
|
12574
|
+
"drying",
|
|
12542
12575
|
"error"
|
|
12543
12576
|
]);
|
|
12544
12577
|
/**
|
|
@@ -12577,6 +12610,12 @@ var VacuumControlStatusSchema = object({
|
|
|
12577
12610
|
detergent: TankStatusSchema.nullable(),
|
|
12578
12611
|
/** Dust bin. Null when the hardware has no dust bin. */
|
|
12579
12612
|
dustBin: TankStatusSchema.nullable(),
|
|
12613
|
+
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
12614
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
12615
|
+
/** Current error code (0 / null = no error). */
|
|
12616
|
+
errorCode: number().nullable(),
|
|
12617
|
+
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
12618
|
+
errorLabel: string().nullable(),
|
|
12580
12619
|
/** Ms epoch when the slice was last updated. */
|
|
12581
12620
|
lastChangedAt: number()
|
|
12582
12621
|
});
|
|
@@ -13543,9 +13582,29 @@ var BaseDevice = class {
|
|
|
13543
13582
|
* is open (Reolink writes `hasPtz/hasIntercom`, Hikvision writes
|
|
13544
13583
|
* `hasSupplementalLight/hasAlarmIo`, etc).
|
|
13545
13584
|
*
|
|
13546
|
-
* Default:
|
|
13585
|
+
* Default: nothing to probe → mark the device PROBED (set `lastProbedAt`) so
|
|
13586
|
+
* the kernel treats it as ready immediately. A device that derives its shape
|
|
13587
|
+
* from a spec (a container, or an accessory sensor) rather than from a
|
|
13588
|
+
* hardware probe has no probe to "complete"; without stamping `lastProbedAt`
|
|
13589
|
+
* it would look perpetually un-probed — logging "Initial probe did not
|
|
13590
|
+
* complete" on every boot and spinning a pointless retry chain. Drivers that
|
|
13591
|
+
* DO probe override this and write their own `feature-probe` slice (including
|
|
13592
|
+
* `lastProbedAt`) once their probe actually succeeds.
|
|
13547
13593
|
*/
|
|
13548
|
-
async onProbe() {
|
|
13594
|
+
async onProbe() {
|
|
13595
|
+
const base = this.runtimeState.getCapState("feature-probe") ?? {
|
|
13596
|
+
flags: {},
|
|
13597
|
+
deviceType: null,
|
|
13598
|
+
model: null,
|
|
13599
|
+
channelCount: null,
|
|
13600
|
+
lastProbedAt: 0,
|
|
13601
|
+
lastFetchedAt: 0
|
|
13602
|
+
};
|
|
13603
|
+
this.runtimeState.setCapState("feature-probe", {
|
|
13604
|
+
...base,
|
|
13605
|
+
lastProbedAt: Date.now()
|
|
13606
|
+
});
|
|
13607
|
+
}
|
|
13549
13608
|
/**
|
|
13550
13609
|
* Phase 5 — fired after the device + its accessories are registered.
|
|
13551
13610
|
* Drivers publish streams to the broker, kick off background tasks,
|
|
@@ -15019,17 +15078,32 @@ var ReleaseInputSchema = object({
|
|
|
15019
15078
|
* the parent cascades into every accessory. */
|
|
15020
15079
|
camDeviceId: number().int().nonnegative()
|
|
15021
15080
|
});
|
|
15022
|
-
var ResyncInputSchema = object({
|
|
15023
|
-
/** Parent CamStack device id of an adopted device. The provider resolves its
|
|
15024
|
-
* source (integration/broker + native id) and re-aligns the device's
|
|
15025
|
-
* structural spec (type/role/capabilities/units) with the live mapping,
|
|
15026
|
-
* rebuilding any child whose class changed while preserving operator edits. */
|
|
15027
|
-
camDeviceId: number().int().nonnegative()
|
|
15081
|
+
var ResyncInputSchema = object({
|
|
15082
|
+
/** Parent CamStack device id of an adopted device. The provider resolves its
|
|
15083
|
+
* source (integration/broker + native id) and re-aligns the device's
|
|
15084
|
+
* structural spec (type/role/capabilities/units) with the live mapping,
|
|
15085
|
+
* rebuilding any child whose class changed while preserving operator edits. */
|
|
15086
|
+
camDeviceId: number().int().nonnegative(),
|
|
15087
|
+
/** "Resync from zero" (#19). When true, the kernel PURGES every accessory
|
|
15088
|
+
* child of `camDeviceId` BEFORE the provider re-derives the device, so the
|
|
15089
|
+
* children are rebuilt fresh from source — correct names, coords, and units —
|
|
15090
|
+
* instead of being preserved by the incremental reconcile. Use to recover from
|
|
15091
|
+
* legacy generic/placeholder names that the normal name-precedence keeps frozen
|
|
15092
|
+
* (the operator's explicit reset). Push-driven integrations (no-op resync)
|
|
15093
|
+
* rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
|
|
15094
|
+
* Operator edits on the PARENT (its name, layout, primary-child pick) survive —
|
|
15095
|
+
* only the children are torn down. Omitted/false ⇒ the normal incremental
|
|
15096
|
+
* re-sync that preserves children. */
|
|
15097
|
+
resetToSource: boolean().optional()
|
|
15098
|
+
});
|
|
15028
15099
|
var ResyncResultSchema = object({
|
|
15029
15100
|
/** True when the persisted spec actually changed (children may have been rebuilt). */
|
|
15030
15101
|
changed: boolean(),
|
|
15031
15102
|
/** Number of child devices rebuilt into a new class by this re-sync. */
|
|
15032
|
-
rebuiltChildren: number().int().nonnegative()
|
|
15103
|
+
rebuiltChildren: number().int().nonnegative(),
|
|
15104
|
+
/** Number of accessory children torn down by a `resetToSource` purge before the
|
|
15105
|
+
* provider re-derived the device. 0/absent for a normal incremental re-sync. */
|
|
15106
|
+
removedChildren: number().int().nonnegative().optional()
|
|
15033
15107
|
});
|
|
15034
15108
|
method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }), method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }), method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }), method(object({ integrationId: string() }), AdoptionStatusSchema, {
|
|
15035
15109
|
kind: "mutation",
|
|
@@ -16728,6 +16802,11 @@ var DeviceMetaSchema = object({
|
|
|
16728
16802
|
addonId: string(),
|
|
16729
16803
|
type: string(),
|
|
16730
16804
|
name: string(),
|
|
16805
|
+
/** True once an operator explicitly renamed the device via `setName`. Drives
|
|
16806
|
+
* reconcile name-precedence (preserve operator name vs adopt fresh provider
|
|
16807
|
+
* name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
|
|
16808
|
+
* `DeviceMeta.userNamed`. */
|
|
16809
|
+
userNamed: boolean().optional(),
|
|
16731
16810
|
location: string().nullable(),
|
|
16732
16811
|
disabled: boolean(),
|
|
16733
16812
|
parentDeviceId: number().nullable(),
|
|
@@ -17038,6 +17117,9 @@ method(object({
|
|
|
17038
17117
|
}), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
|
|
17039
17118
|
kind: "mutation",
|
|
17040
17119
|
auth: "admin"
|
|
17120
|
+
}), method(ResyncInputSchema, ResyncResultSchema, {
|
|
17121
|
+
kind: "mutation",
|
|
17122
|
+
auth: "admin"
|
|
17041
17123
|
}), method(object({
|
|
17042
17124
|
deviceId: number(),
|
|
17043
17125
|
key: string(),
|
|
@@ -21218,6 +21300,12 @@ Object.freeze({
|
|
|
21218
21300
|
addonId: null,
|
|
21219
21301
|
access: "create"
|
|
21220
21302
|
},
|
|
21303
|
+
"deviceManager.adoptionResync": {
|
|
21304
|
+
capName: "device-manager",
|
|
21305
|
+
capScope: "system",
|
|
21306
|
+
addonId: null,
|
|
21307
|
+
access: "create"
|
|
21308
|
+
},
|
|
21221
21309
|
"deviceManager.allocateDeviceId": {
|
|
21222
21310
|
capName: "device-manager",
|
|
21223
21311
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -10267,15 +10267,18 @@ var humiditySensorCapability = {
|
|
|
10267
10267
|
runtimeState: HumiditySensorStatusSchema
|
|
10268
10268
|
};
|
|
10269
10269
|
/**
|
|
10270
|
-
* Image display cap. Models
|
|
10271
|
-
*
|
|
10272
|
-
*
|
|
10273
|
-
* Read-only: there are no setters. The provider resolves
|
|
10274
|
-
*
|
|
10275
|
-
*
|
|
10276
|
-
*
|
|
10277
|
-
*
|
|
10278
|
-
*
|
|
10270
|
+
* Image display cap. Models a single still image exposed by an integration —
|
|
10271
|
+
* a snapshot, a chart, a generated picture, or a robot's cleaning-map render.
|
|
10272
|
+
*
|
|
10273
|
+
* Read-only: there are no setters. The provider resolves whatever upstream
|
|
10274
|
+
* source it has into an ABSOLUTE URL the browser loads directly:
|
|
10275
|
+
* - HA `image.*` entities → the `entity_picture` signed-token path
|
|
10276
|
+
* (token stays in the query string, so no auth header is needed);
|
|
10277
|
+
* - a Dreame/robot map → the cloud/OSS map-image URL (or an addon
|
|
10278
|
+
* data-plane URL serving the rendered map bytes), exposed as its own
|
|
10279
|
+
* Image child device grouped under the robot's container.
|
|
10280
|
+
* The slice carries that URL plus the upstream last-updated timestamp; the
|
|
10281
|
+
* image changes when the source's last-updated marker changes.
|
|
10279
10282
|
*/
|
|
10280
10283
|
var ImageStatusSchema = object({
|
|
10281
10284
|
/** Absolute signed URL the browser loads directly. Null when the
|
|
@@ -10301,18 +10304,47 @@ var imageCapability = {
|
|
|
10301
10304
|
*/
|
|
10302
10305
|
runtimeState: ImageStatusSchema
|
|
10303
10306
|
};
|
|
10307
|
+
/**
|
|
10308
|
+
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
10309
|
+
* with a mowing lifecycle plus a dock action.
|
|
10310
|
+
*
|
|
10311
|
+
* Activity follows HA's canonical lawn-mower lifecycle: `idle` /
|
|
10312
|
+
* `mowing` / `paused` / `docked` / `error`. `batteryLevel` (0..100) is
|
|
10313
|
+
* nullable — some mowers don't report a battery percentage.
|
|
10314
|
+
*
|
|
10315
|
+
* `startMowing` begins a mowing run, `pause` halts it in place, and
|
|
10316
|
+
* `dock` sends the mower back to its charging station.
|
|
10317
|
+
*/
|
|
10318
|
+
var LawnMowerActivitySchema = _enum([
|
|
10319
|
+
"idle",
|
|
10320
|
+
"mowing",
|
|
10321
|
+
"paused",
|
|
10322
|
+
"docked",
|
|
10323
|
+
"error"
|
|
10324
|
+
]);
|
|
10325
|
+
/** Severity of the current device/error code — info (status), warning, error. */
|
|
10326
|
+
var DeviceCodeSeveritySchema = _enum([
|
|
10327
|
+
"info",
|
|
10328
|
+
"warning",
|
|
10329
|
+
"error"
|
|
10330
|
+
]);
|
|
10304
10331
|
var LawnMowerControlStatusSchema = object({
|
|
10305
10332
|
/** Lifecycle activity of the mower. */
|
|
10306
|
-
activity:
|
|
10307
|
-
"idle",
|
|
10308
|
-
"mowing",
|
|
10309
|
-
"paused",
|
|
10310
|
-
"docked",
|
|
10311
|
-
"error"
|
|
10312
|
-
]),
|
|
10333
|
+
activity: LawnMowerActivitySchema,
|
|
10313
10334
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
10314
10335
|
* reading. */
|
|
10315
10336
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
10337
|
+
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
10338
|
+
* task is active / progress is unavailable. */
|
|
10339
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
10340
|
+
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
10341
|
+
* or null when unknown. */
|
|
10342
|
+
currentCode: number().nullable(),
|
|
10343
|
+
/** Human label for {@link currentCode}, or null when undecodable. */
|
|
10344
|
+
currentCodeLabel: string().nullable(),
|
|
10345
|
+
/** Severity of {@link currentCode}. `error` (and often `warning`) warrants UI
|
|
10346
|
+
* attention; `info` is normal status. */
|
|
10347
|
+
severity: DeviceCodeSeveritySchema,
|
|
10316
10348
|
/** Ms epoch when the slice was last updated. */
|
|
10317
10349
|
lastChangedAt: number()
|
|
10318
10350
|
});
|
|
@@ -12538,6 +12570,7 @@ var VacuumStateSchema = _enum([
|
|
|
12538
12570
|
"paused",
|
|
12539
12571
|
"returning",
|
|
12540
12572
|
"docked",
|
|
12573
|
+
"drying",
|
|
12541
12574
|
"error"
|
|
12542
12575
|
]);
|
|
12543
12576
|
/**
|
|
@@ -12576,6 +12609,12 @@ var VacuumControlStatusSchema = object({
|
|
|
12576
12609
|
detergent: TankStatusSchema.nullable(),
|
|
12577
12610
|
/** Dust bin. Null when the hardware has no dust bin. */
|
|
12578
12611
|
dustBin: TankStatusSchema.nullable(),
|
|
12612
|
+
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
12613
|
+
progressPercent: number().min(0).max(100).nullable(),
|
|
12614
|
+
/** Current error code (0 / null = no error). */
|
|
12615
|
+
errorCode: number().nullable(),
|
|
12616
|
+
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
12617
|
+
errorLabel: string().nullable(),
|
|
12579
12618
|
/** Ms epoch when the slice was last updated. */
|
|
12580
12619
|
lastChangedAt: number()
|
|
12581
12620
|
});
|
|
@@ -13542,9 +13581,29 @@ var BaseDevice = class {
|
|
|
13542
13581
|
* is open (Reolink writes `hasPtz/hasIntercom`, Hikvision writes
|
|
13543
13582
|
* `hasSupplementalLight/hasAlarmIo`, etc).
|
|
13544
13583
|
*
|
|
13545
|
-
* Default:
|
|
13584
|
+
* Default: nothing to probe → mark the device PROBED (set `lastProbedAt`) so
|
|
13585
|
+
* the kernel treats it as ready immediately. A device that derives its shape
|
|
13586
|
+
* from a spec (a container, or an accessory sensor) rather than from a
|
|
13587
|
+
* hardware probe has no probe to "complete"; without stamping `lastProbedAt`
|
|
13588
|
+
* it would look perpetually un-probed — logging "Initial probe did not
|
|
13589
|
+
* complete" on every boot and spinning a pointless retry chain. Drivers that
|
|
13590
|
+
* DO probe override this and write their own `feature-probe` slice (including
|
|
13591
|
+
* `lastProbedAt`) once their probe actually succeeds.
|
|
13546
13592
|
*/
|
|
13547
|
-
async onProbe() {
|
|
13593
|
+
async onProbe() {
|
|
13594
|
+
const base = this.runtimeState.getCapState("feature-probe") ?? {
|
|
13595
|
+
flags: {},
|
|
13596
|
+
deviceType: null,
|
|
13597
|
+
model: null,
|
|
13598
|
+
channelCount: null,
|
|
13599
|
+
lastProbedAt: 0,
|
|
13600
|
+
lastFetchedAt: 0
|
|
13601
|
+
};
|
|
13602
|
+
this.runtimeState.setCapState("feature-probe", {
|
|
13603
|
+
...base,
|
|
13604
|
+
lastProbedAt: Date.now()
|
|
13605
|
+
});
|
|
13606
|
+
}
|
|
13548
13607
|
/**
|
|
13549
13608
|
* Phase 5 — fired after the device + its accessories are registered.
|
|
13550
13609
|
* Drivers publish streams to the broker, kick off background tasks,
|
|
@@ -15018,17 +15077,32 @@ var ReleaseInputSchema = object({
|
|
|
15018
15077
|
* the parent cascades into every accessory. */
|
|
15019
15078
|
camDeviceId: number().int().nonnegative()
|
|
15020
15079
|
});
|
|
15021
|
-
var ResyncInputSchema = object({
|
|
15022
|
-
/** Parent CamStack device id of an adopted device. The provider resolves its
|
|
15023
|
-
* source (integration/broker + native id) and re-aligns the device's
|
|
15024
|
-
* structural spec (type/role/capabilities/units) with the live mapping,
|
|
15025
|
-
* rebuilding any child whose class changed while preserving operator edits. */
|
|
15026
|
-
camDeviceId: number().int().nonnegative()
|
|
15080
|
+
var ResyncInputSchema = object({
|
|
15081
|
+
/** Parent CamStack device id of an adopted device. The provider resolves its
|
|
15082
|
+
* source (integration/broker + native id) and re-aligns the device's
|
|
15083
|
+
* structural spec (type/role/capabilities/units) with the live mapping,
|
|
15084
|
+
* rebuilding any child whose class changed while preserving operator edits. */
|
|
15085
|
+
camDeviceId: number().int().nonnegative(),
|
|
15086
|
+
/** "Resync from zero" (#19). When true, the kernel PURGES every accessory
|
|
15087
|
+
* child of `camDeviceId` BEFORE the provider re-derives the device, so the
|
|
15088
|
+
* children are rebuilt fresh from source — correct names, coords, and units —
|
|
15089
|
+
* instead of being preserved by the incremental reconcile. Use to recover from
|
|
15090
|
+
* legacy generic/placeholder names that the normal name-precedence keeps frozen
|
|
15091
|
+
* (the operator's explicit reset). Push-driven integrations (no-op resync)
|
|
15092
|
+
* rebuild on their next snapshot; pull/command integrations rebuild in `resync`.
|
|
15093
|
+
* Operator edits on the PARENT (its name, layout, primary-child pick) survive —
|
|
15094
|
+
* only the children are torn down. Omitted/false ⇒ the normal incremental
|
|
15095
|
+
* re-sync that preserves children. */
|
|
15096
|
+
resetToSource: boolean().optional()
|
|
15097
|
+
});
|
|
15027
15098
|
var ResyncResultSchema = object({
|
|
15028
15099
|
/** True when the persisted spec actually changed (children may have been rebuilt). */
|
|
15029
15100
|
changed: boolean(),
|
|
15030
15101
|
/** Number of child devices rebuilt into a new class by this re-sync. */
|
|
15031
|
-
rebuiltChildren: number().int().nonnegative()
|
|
15102
|
+
rebuiltChildren: number().int().nonnegative(),
|
|
15103
|
+
/** Number of accessory children torn down by a `resetToSource` purge before the
|
|
15104
|
+
* provider re-derived the device. 0/absent for a normal incremental re-sync. */
|
|
15105
|
+
removedChildren: number().int().nonnegative().optional()
|
|
15032
15106
|
});
|
|
15033
15107
|
method(object({ integrationId: string() }), object({ filters: array(AdoptionFilterSchema) }), { auth: "admin" }), method(ListCandidatesInputSchema, ListCandidatesOutputSchema, { auth: "admin" }), method(GetCandidateInputSchema, DiscoveredChildDeviceSchema.nullable(), { auth: "admin" }), method(object({ integrationId: string() }), AdoptionStatusSchema, {
|
|
15034
15108
|
kind: "mutation",
|
|
@@ -16727,6 +16801,11 @@ var DeviceMetaSchema = object({
|
|
|
16727
16801
|
addonId: string(),
|
|
16728
16802
|
type: string(),
|
|
16729
16803
|
name: string(),
|
|
16804
|
+
/** True once an operator explicitly renamed the device via `setName`. Drives
|
|
16805
|
+
* reconcile name-precedence (preserve operator name vs adopt fresh provider
|
|
16806
|
+
* name). Absent ⇒ treated as user-named (PRESERVE) for legacy rows. See
|
|
16807
|
+
* `DeviceMeta.userNamed`. */
|
|
16808
|
+
userNamed: boolean().optional(),
|
|
16730
16809
|
location: string().nullable(),
|
|
16731
16810
|
disabled: boolean(),
|
|
16732
16811
|
parentDeviceId: number().nullable(),
|
|
@@ -17037,6 +17116,9 @@ method(object({
|
|
|
17037
17116
|
}), method(ReleaseInputSchema.extend({ addonId: string() }), _void(), {
|
|
17038
17117
|
kind: "mutation",
|
|
17039
17118
|
auth: "admin"
|
|
17119
|
+
}), method(ResyncInputSchema, ResyncResultSchema, {
|
|
17120
|
+
kind: "mutation",
|
|
17121
|
+
auth: "admin"
|
|
17040
17122
|
}), method(object({
|
|
17041
17123
|
deviceId: number(),
|
|
17042
17124
|
key: string(),
|
|
@@ -21217,6 +21299,12 @@ Object.freeze({
|
|
|
21217
21299
|
addonId: null,
|
|
21218
21300
|
access: "create"
|
|
21219
21301
|
},
|
|
21302
|
+
"deviceManager.adoptionResync": {
|
|
21303
|
+
capName: "device-manager",
|
|
21304
|
+
capScope: "system",
|
|
21305
|
+
addonId: null,
|
|
21306
|
+
access: "create"
|
|
21307
|
+
},
|
|
21220
21308
|
"deviceManager.allocateDeviceId": {
|
|
21221
21309
|
capName: "device-manager",
|
|
21222
21310
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-hikvision",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.8",
|
|
4
4
|
"description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|