@camstack/addon-waste-collections 0.1.12 → 0.1.13
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/waste-collections.addon.js +255 -23
- package/dist/waste-collections.addon.mjs +255 -23
- package/package.json +1 -1
|
@@ -5554,7 +5554,7 @@ var ZodIssueCode = {
|
|
|
5554
5554
|
var ZodFirstPartyTypeKind;
|
|
5555
5555
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5556
5556
|
//#endregion
|
|
5557
|
-
//#region ../types/dist/sleep-
|
|
5557
|
+
//#region ../types/dist/sleep-BSuCCFjf.mjs
|
|
5558
5558
|
/**
|
|
5559
5559
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5560
5560
|
* window to float samples (D455).
|
|
@@ -17245,7 +17245,19 @@ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
|
|
|
17245
17245
|
kind: literal("node"),
|
|
17246
17246
|
nodeId: string().min(1)
|
|
17247
17247
|
})]);
|
|
17248
|
+
/**
|
|
17249
|
+
* `enum` stores a STATE as the ordinal of its value in the series' value list
|
|
17250
|
+
* (`DeviceHistorySeriesInfo.values`, append-only, so an ordinal never changes
|
|
17251
|
+
* meaning); a rollup keeps the time spent in each state (`states`).
|
|
17252
|
+
*/
|
|
17248
17253
|
var DeviceHistoryKindSchema = _enum([
|
|
17254
|
+
"gauge",
|
|
17255
|
+
"counter",
|
|
17256
|
+
"boolean",
|
|
17257
|
+
"enum"
|
|
17258
|
+
]);
|
|
17259
|
+
/** What a PRODUCER may declare. `enum` is cap-only: its value list is the cap field's. */
|
|
17260
|
+
var DeviceHistoryProducerKindSchema = _enum([
|
|
17249
17261
|
"gauge",
|
|
17250
17262
|
"counter",
|
|
17251
17263
|
"boolean"
|
|
@@ -17282,7 +17294,13 @@ var SeriesInfoSchema = object({
|
|
|
17282
17294
|
/** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
|
|
17283
17295
|
unit: string().nullable(),
|
|
17284
17296
|
displayName: string(),
|
|
17285
|
-
source: _enum([
|
|
17297
|
+
source: _enum([
|
|
17298
|
+
"cap",
|
|
17299
|
+
"addon",
|
|
17300
|
+
"derived"
|
|
17301
|
+
]),
|
|
17302
|
+
/** `enum`: the value of each ordinal (index = ordinal); `null` for every other kind. */
|
|
17303
|
+
values: array(string()).readonly().nullable(),
|
|
17286
17304
|
firstTs: number(),
|
|
17287
17305
|
lastTs: number()
|
|
17288
17306
|
});
|
|
@@ -17296,17 +17314,31 @@ var QueryPointSchema = object({
|
|
|
17296
17314
|
twMean: number().nullable(),
|
|
17297
17315
|
min: number(),
|
|
17298
17316
|
max: number(),
|
|
17299
|
-
/** `null` is unknown, never zero (D393). */
|
|
17300
|
-
last: number().nullable()
|
|
17317
|
+
/** `null` is unknown, never zero (D393). For an `enum` series: the ordinal of {@link state}. */
|
|
17318
|
+
last: number().nullable(),
|
|
17319
|
+
/**
|
|
17320
|
+
* The increase over the point: a `counter`'s growth since the previous point
|
|
17321
|
+
* or bucket (a drop is a reset, counted from zero), and for
|
|
17322
|
+
* {@link DEVICE_HISTORY_ENERGY_KEY} the kWh used in the bucket. `null` for
|
|
17323
|
+
* every other kind, and when it cannot be known.
|
|
17324
|
+
*/
|
|
17325
|
+
delta: number().nullable(),
|
|
17326
|
+
/** `enum`: the state in force at the end of the point (the name of `last`); `null` otherwise. */
|
|
17327
|
+
state: string().nullable(),
|
|
17328
|
+
/** `enum` rollup: milliseconds spent in each state inside the bucket; `null` for raw points and other kinds. */
|
|
17329
|
+
states: record(string(), number()).nullable()
|
|
17301
17330
|
});
|
|
17302
17331
|
var QuerySeriesSchema = object({
|
|
17303
17332
|
scope: string(),
|
|
17304
17333
|
/** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
|
|
17305
17334
|
before: object({
|
|
17306
17335
|
t: number(),
|
|
17307
|
-
value: number().nullable()
|
|
17336
|
+
value: number().nullable(),
|
|
17337
|
+
state: string().nullable()
|
|
17308
17338
|
}).nullable(),
|
|
17309
|
-
points: array(QueryPointSchema).readonly()
|
|
17339
|
+
points: array(QueryPointSchema).readonly(),
|
|
17340
|
+
/** A derived key: the stored key its points were computed from; `null` for a stored series. */
|
|
17341
|
+
derivedFrom: string().nullable()
|
|
17310
17342
|
});
|
|
17311
17343
|
/** The window part of a query, shared by the device and node forms. */
|
|
17312
17344
|
var QueryWindowShape = {
|
|
@@ -17322,6 +17354,23 @@ var QueryResultSchema = object({
|
|
|
17322
17354
|
series: array(QuerySeriesSchema).readonly(),
|
|
17323
17355
|
truncated: boolean()
|
|
17324
17356
|
});
|
|
17357
|
+
/** One read of a batch: a device's key or a node's key (exactly one subject). */
|
|
17358
|
+
var QueryManyItemSchema = union([object({
|
|
17359
|
+
deviceId: number().int(),
|
|
17360
|
+
key: string(),
|
|
17361
|
+
scope: string().optional()
|
|
17362
|
+
}), object({
|
|
17363
|
+
forNodeId: string().min(1),
|
|
17364
|
+
key: string(),
|
|
17365
|
+
scope: string().optional()
|
|
17366
|
+
})]);
|
|
17367
|
+
var QueryManyEntrySchema = discriminatedUnion("ok", [object({
|
|
17368
|
+
ok: literal(true),
|
|
17369
|
+
result: QueryResultSchema
|
|
17370
|
+
}), object({
|
|
17371
|
+
ok: literal(false),
|
|
17372
|
+
error: string()
|
|
17373
|
+
})]);
|
|
17325
17374
|
var TierStatusSchema = object({
|
|
17326
17375
|
tier: DeviceHistoryResolutionSchema,
|
|
17327
17376
|
/** `null` until the first background count answered. */
|
|
@@ -17377,16 +17426,22 @@ var DeviceHistoryStatusSchema = object({
|
|
|
17377
17426
|
lastRefreshAt: number().nullable()
|
|
17378
17427
|
})
|
|
17379
17428
|
});
|
|
17380
|
-
method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({
|
|
17429
|
+
method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ forNodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
17381
17430
|
deviceId: number().int(),
|
|
17382
17431
|
...QueryWindowShape
|
|
17383
17432
|
}), QueryResultSchema), method(object({
|
|
17384
|
-
|
|
17433
|
+
forNodeId: string().min(1),
|
|
17385
17434
|
...QueryWindowShape
|
|
17386
17435
|
}), QueryResultSchema, { auth: "admin" }), method(object({
|
|
17436
|
+
items: array(QueryManyItemSchema).min(1).max(24),
|
|
17437
|
+
from: QueryWindowShape.from,
|
|
17438
|
+
to: QueryWindowShape.to,
|
|
17439
|
+
resolution: QueryWindowShape.resolution,
|
|
17440
|
+
maxPoints: QueryWindowShape.maxPoints
|
|
17441
|
+
}), object({ results: array(QueryManyEntrySchema).readonly() }), { auth: "admin" }), method(object({
|
|
17387
17442
|
name: string().regex(/^[a-z0-9-]+$/),
|
|
17388
17443
|
subjectKind: _enum(["device", "node"]),
|
|
17389
|
-
kind:
|
|
17444
|
+
kind: DeviceHistoryProducerKindSchema,
|
|
17390
17445
|
unit: string().optional(),
|
|
17391
17446
|
displayName: string().min(1),
|
|
17392
17447
|
ingest: _enum(["points", "buckets"])
|
|
@@ -40403,14 +40458,106 @@ var LogEntrySchema = object({
|
|
|
40403
40458
|
meta: record(string(), unknown()).optional(),
|
|
40404
40459
|
tags: record(string(), string()).optional()
|
|
40405
40460
|
});
|
|
40406
|
-
|
|
40407
|
-
|
|
40461
|
+
/**
|
|
40462
|
+
* A history READ against one destination (D898).
|
|
40463
|
+
*
|
|
40464
|
+
* Every filter is applied by the PROVIDER, before the limit — a filter the
|
|
40465
|
+
* browser applied after the limit is what made a rare device's lines
|
|
40466
|
+
* unreachable behind a busy one's. `before` / `after` are cursors the provider
|
|
40467
|
+
* minted (opaque to everyone else): a file position for the rotated files, a
|
|
40468
|
+
* nanosecond timestamp for Loki.
|
|
40469
|
+
*
|
|
40470
|
+
* A read is BOUNDED by `budgetMs`: a filter that matches nothing on a 30-day
|
|
40471
|
+
* store answers `done: false` with the cursor it reached and the bytes it
|
|
40472
|
+
* scanned, and the caller decides whether to go on. That is what makes a long
|
|
40473
|
+
* scan show progress and stop when asked — `cancelRead` ends the slice in
|
|
40474
|
+
* flight, and not asking for the next slice ends the scan.
|
|
40475
|
+
*/
|
|
40476
|
+
var LogReadQuerySchema = object({
|
|
40477
|
+
/** Correlates `cancelRead`. Caller-chosen, unique per in-flight read. */
|
|
40478
|
+
requestId: string().min(1).max(64).optional(),
|
|
40479
|
+
/** The device the line is about (`tags.deviceId`, numeric). */
|
|
40480
|
+
deviceId: number().int().optional(),
|
|
40481
|
+
/**
|
|
40482
|
+
* The emitting addon — bare manifest id; `@<version>` / `::<sub>` suffixes
|
|
40483
|
+
* match. Not `addonId`: a cap router reads that name as "which provider".
|
|
40484
|
+
*/
|
|
40485
|
+
fromAddonId: string().min(1).max(200).optional(),
|
|
40486
|
+
/**
|
|
40487
|
+
* The emitting node: matches the agent that emitted the line, the node
|
|
40488
|
+
* itself, or a worker under it (`<agent>/<runner>`) — the `agentId`
|
|
40489
|
+
* semantics of `matchesLogTags`. Not `nodeId`: a cap router reads that
|
|
40490
|
+
* name as "which node's provider".
|
|
40491
|
+
*/
|
|
40492
|
+
fromNodeId: string().min(1).max(200).optional(),
|
|
40493
|
+
/** Any other tag, exact match (AND). */
|
|
40494
|
+
tags: record(string(), union([string(), number()])).optional(),
|
|
40495
|
+
/** Severity FLOOR: this level and above. */
|
|
40408
40496
|
level: LogLevelSchema.optional(),
|
|
40409
|
-
|
|
40410
|
-
|
|
40411
|
-
|
|
40412
|
-
|
|
40413
|
-
|
|
40497
|
+
/** Case-insensitive substring over message, scope, tag values and meta values. */
|
|
40498
|
+
text: string().min(1).max(200).optional(),
|
|
40499
|
+
/** Epoch ms, inclusive. */
|
|
40500
|
+
since: number().optional(),
|
|
40501
|
+
/** Epoch ms, inclusive. */
|
|
40502
|
+
until: number().optional(),
|
|
40503
|
+
/** Older than this cursor (exclusive). Absent with `after` absent ⇒ from the newest. */
|
|
40504
|
+
before: string().min(1).max(1024).optional(),
|
|
40505
|
+
/** Newer than this cursor (exclusive). */
|
|
40506
|
+
after: string().min(1).max(1024).optional(),
|
|
40507
|
+
limit: number().int().min(1).max(1e3).optional(),
|
|
40508
|
+
/** Wall-clock bound of this slice. The provider caps it. */
|
|
40509
|
+
budgetMs: number().int().min(50).max(1e4).optional()
|
|
40510
|
+
});
|
|
40511
|
+
var LogReadResultSchema = object({
|
|
40512
|
+
/** Newest first. */
|
|
40513
|
+
entries: array(object({
|
|
40514
|
+
/** `<bootId>.<seq>` minted by the emitting LogManager — the dedupe key. */
|
|
40515
|
+
id: string().optional(),
|
|
40516
|
+
/** Epoch ms. */
|
|
40517
|
+
timestamp: number(),
|
|
40518
|
+
level: LogLevelSchema,
|
|
40519
|
+
scope: string().optional(),
|
|
40520
|
+
message: string(),
|
|
40521
|
+
tags: record(string(), union([string(), number()])).optional(),
|
|
40522
|
+
meta: record(string(), unknown()).optional()
|
|
40523
|
+
})),
|
|
40524
|
+
/** Pass as `before` for the next older page; null when nothing older exists. */
|
|
40525
|
+
nextBefore: string().nullable(),
|
|
40526
|
+
/** Pass as `after` to read what arrived since; null when unknown. */
|
|
40527
|
+
nextAfter: string().nullable(),
|
|
40528
|
+
/** Bytes this slice read (files) or received (remote). Progress, not a promise. */
|
|
40529
|
+
scannedBytes: number().int().nonnegative(),
|
|
40530
|
+
/**
|
|
40531
|
+
* True when the scan in this direction reached the end of the store.
|
|
40532
|
+
* False with fewer than `limit` entries means the budget ran out first —
|
|
40533
|
+
* call again with `nextBefore` to go on.
|
|
40534
|
+
*/
|
|
40535
|
+
done: boolean(),
|
|
40536
|
+
/** True when `cancelRead` ended this slice early. */
|
|
40537
|
+
cancelled: boolean().optional()
|
|
40538
|
+
});
|
|
40539
|
+
var LogReadCapabilitiesSchema = object({
|
|
40540
|
+
/** False ⇒ this destination only ships lines (console, forwarder, an unconfigured Loki). */
|
|
40541
|
+
readable: boolean(),
|
|
40542
|
+
/** Why not, when `readable` is false — rendered next to the source. */
|
|
40543
|
+
reason: string().nullable(),
|
|
40544
|
+
/** Filters the provider applies itself. A false one is applied by nobody. */
|
|
40545
|
+
filters: object({
|
|
40546
|
+
deviceId: boolean(),
|
|
40547
|
+
addonId: boolean(),
|
|
40548
|
+
nodeId: boolean(),
|
|
40549
|
+
tags: boolean(),
|
|
40550
|
+
level: boolean(),
|
|
40551
|
+
text: boolean(),
|
|
40552
|
+
timeRange: boolean()
|
|
40553
|
+
}),
|
|
40554
|
+
/** How far back the store reaches, when the provider knows (days). */
|
|
40555
|
+
retentionDays: number().nullable()
|
|
40556
|
+
});
|
|
40557
|
+
method(LogEntrySchema, _void(), { kind: "mutation" }), optionalMethod(_void(), LogReadCapabilitiesSchema, { auth: "admin" }), optionalMethod(LogReadQuerySchema, LogReadResultSchema, { auth: "admin" }), optionalMethod(object({ requestId: string().min(1).max(64) }), object({ cancelled: boolean() }), {
|
|
40558
|
+
kind: "mutation",
|
|
40559
|
+
auth: "admin"
|
|
40560
|
+
});
|
|
40414
40561
|
/**
|
|
40415
40562
|
* `login-method` — collection cap through which auth addons contribute
|
|
40416
40563
|
* their pre-auth login surfaces to the login page. This is the SINGLE,
|
|
@@ -42966,6 +43113,33 @@ var NcRuleTargetSchema = object({
|
|
|
42966
43113
|
params: record(string(), unknown()).optional()
|
|
42967
43114
|
});
|
|
42968
43115
|
/**
|
|
43116
|
+
* WHAT THE NOTIFICATION'S PICTURE IS (D897) — the ONE media choice of a rule.
|
|
43117
|
+
*
|
|
43118
|
+
* Every mode starts from the same CLEAN source frame of the trigger moment
|
|
43119
|
+
* (keyFrame → sceneFrame → lastSceneFrame, narrowed to the trigger instant and
|
|
43120
|
+
* to the zone that fired the rule) and renders it once at send time:
|
|
43121
|
+
* - `scene-boxes` — the whole scene, the subject outlined thick in the accent
|
|
43122
|
+
* colour and every OTHER track visible at that instant outlined thin, each
|
|
43123
|
+
* labelled with class and confidence ("dog 87%").
|
|
43124
|
+
* - `crop` — the subject cut out of that frame around its box at that instant.
|
|
43125
|
+
* - `clean` — the whole scene with nothing drawn on it.
|
|
43126
|
+
* - `none` — no picture.
|
|
43127
|
+
*
|
|
43128
|
+
* A mode that cannot be honoured (no box at that instant, a photograph with no
|
|
43129
|
+
* tracked subject) ships `clean` and names the reason in the log, per camera.
|
|
43130
|
+
* It replaces the `attach` × `frame` × `zoneCrop` triple, which let one rule
|
|
43131
|
+
* ship a crop on one event and a boxed scene on the next depending on which
|
|
43132
|
+
* stored kind had landed.
|
|
43133
|
+
*/
|
|
43134
|
+
var NcMediaImageSchema = _enum([
|
|
43135
|
+
"scene-boxes",
|
|
43136
|
+
"crop",
|
|
43137
|
+
"clean",
|
|
43138
|
+
"none"
|
|
43139
|
+
]);
|
|
43140
|
+
/**
|
|
43141
|
+
* @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
|
|
43142
|
+
*
|
|
42969
43143
|
* Media attachment policy (P1 still-image subset).
|
|
42970
43144
|
* - `best` — the best AVAILABLE subject image at dispatch time (D-3).
|
|
42971
43145
|
* - `best-matching` — the media that explains WHY the rule fired: a rule
|
|
@@ -42979,6 +43153,8 @@ var NcRuleTargetSchema = object({
|
|
|
42979
43153
|
* - `none` — no attachment.
|
|
42980
43154
|
*/
|
|
42981
43155
|
/**
|
|
43156
|
+
* @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
|
|
43157
|
+
*
|
|
42982
43158
|
* WHAT THE PICTURE SHOWS — chosen explicitly, because the implicit ladders
|
|
42983
43159
|
* conflate it with the selection strategy and betray the request: asking for
|
|
42984
43160
|
* the clean scene frame on an object-event owner used to start at
|
|
@@ -43007,16 +43183,29 @@ var NcMediaFrameSchema = _enum([
|
|
|
43007
43183
|
*/
|
|
43008
43184
|
var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
|
|
43009
43185
|
var NcMediaPolicySchema = object({
|
|
43186
|
+
/**
|
|
43187
|
+
* The picture — see {@link NcMediaImageSchema}. Absent on a rule nobody has
|
|
43188
|
+
* saved since D897: `normalizeNcMediaPolicy` derives it from the legacy
|
|
43189
|
+
* triple below, at load and at every write, and the store keeps only this.
|
|
43190
|
+
*/
|
|
43191
|
+
image: NcMediaImageSchema.optional(),
|
|
43192
|
+
/**
|
|
43193
|
+
* Draw the zone that FIRED the rule on the picture (`scene-boxes` / `clean`;
|
|
43194
|
+
* a `crop` never shows it). Valid only on a rule whose trigger is a zone —
|
|
43195
|
+
* `conditions.zones` or an occupancy zone — and refused on save otherwise.
|
|
43196
|
+
* Replaces `zoneCrop`.
|
|
43197
|
+
*/
|
|
43198
|
+
showTriggerZone: boolean().optional(),
|
|
43199
|
+
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
43010
43200
|
attach: _enum([
|
|
43011
43201
|
"best",
|
|
43012
43202
|
"best-matching",
|
|
43013
43203
|
"keyFrame",
|
|
43014
43204
|
"none"
|
|
43015
|
-
]).
|
|
43016
|
-
/**
|
|
43205
|
+
]).optional(),
|
|
43206
|
+
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
43017
43207
|
frame: NcMediaFrameSchema.optional(),
|
|
43018
|
-
/**
|
|
43019
|
-
* "show me the ZONE", not the whole scene or the subject crop. */
|
|
43208
|
+
/** @deprecated D897 — folded into `image: 'clean'` + `showTriggerZone` on save. */
|
|
43020
43209
|
zoneCrop: boolean().optional(),
|
|
43021
43210
|
/**
|
|
43022
43211
|
* Also attach a short GIF cut from the stream broker's clip ring around the
|
|
@@ -43188,7 +43377,9 @@ var NcRuleInputSchema = object({
|
|
|
43188
43377
|
* targets.
|
|
43189
43378
|
*/
|
|
43190
43379
|
targetUsers: array(string()).optional(),
|
|
43191
|
-
|
|
43380
|
+
/** Absent = the kind's default picture (`resolveNcMediaImage`): the subject crop for a
|
|
43381
|
+
* detection, the clean scene for a sensor or a sound. Set explicitly on save (D897). */
|
|
43382
|
+
media: NcMediaPolicySchema.default({}),
|
|
43192
43383
|
throttle: NcThrottleSchema.default({
|
|
43193
43384
|
cooldownSec: 60,
|
|
43194
43385
|
scope: "rule-device"
|
|
@@ -44125,13 +44316,37 @@ var NcAlarmModeOpeningsSchema = object({
|
|
|
44125
44316
|
/** Covered devices whose state could not be read (D49): neither open nor closed. */
|
|
44126
44317
|
unknown: array(number().int())
|
|
44127
44318
|
});
|
|
44319
|
+
/**
|
|
44320
|
+
* One alarm INPUT — a (rule, device) pair — the operator bypassed until the
|
|
44321
|
+
* next disarm ("Bypass this input until disarm" on a trigger notification, or
|
|
44322
|
+
* `nc.bypassAlarmInput`). Reported so an armed alarm with a silenced input
|
|
44323
|
+
* never looks fully armed (D62: off must never look like broken).
|
|
44324
|
+
*/
|
|
44325
|
+
var NcAlarmInputBypassViewSchema = object({
|
|
44326
|
+
ruleId: string(),
|
|
44327
|
+
/** The rule's current name (its frozen name when the rule is gone). */
|
|
44328
|
+
ruleName: string(),
|
|
44329
|
+
/** The input: the sensor of the match, else its camera. */
|
|
44330
|
+
deviceId: number().int(),
|
|
44331
|
+
/** The input's current name. */
|
|
44332
|
+
name: string(),
|
|
44333
|
+
/** When it was bypassed (ms epoch). */
|
|
44334
|
+
since: number(),
|
|
44335
|
+
/** Triggers from this input dropped since. */
|
|
44336
|
+
dropped: number().int().min(0)
|
|
44337
|
+
});
|
|
44128
44338
|
var NcAlarmLiveSchema = object({
|
|
44129
44339
|
state: AlarmStateSchema,
|
|
44130
44340
|
/** The mode being armed into (exit delay) or held; null when disarmed. */
|
|
44131
44341
|
targetMode: AlarmArmModeSchema.nullable(),
|
|
44132
44342
|
availableModes: array(AlarmArmModeSchema),
|
|
44133
44343
|
openings: array(NcAlarmModeOpeningsSchema),
|
|
44134
|
-
exclusions: array(NcAlarmExclusionViewSchema)
|
|
44344
|
+
exclusions: array(NcAlarmExclusionViewSchema),
|
|
44345
|
+
/**
|
|
44346
|
+
* Inputs bypassed for the rest of this arm session; cleared on disarm.
|
|
44347
|
+
* Defaulted so an older hub answer still parses (as "none known").
|
|
44348
|
+
*/
|
|
44349
|
+
bypassedInputs: array(NcAlarmInputBypassViewSchema).default([])
|
|
44135
44350
|
});
|
|
44136
44351
|
var NcAlarmConfigSchema = object({
|
|
44137
44352
|
/**
|
|
@@ -65780,7 +65995,19 @@ Object.freeze({
|
|
|
65780
65995
|
addonId: null,
|
|
65781
65996
|
access: "view"
|
|
65782
65997
|
},
|
|
65783
|
-
"logDestination.
|
|
65998
|
+
"logDestination.cancelRead": {
|
|
65999
|
+
capName: "log-destination",
|
|
66000
|
+
capScope: "system",
|
|
66001
|
+
addonId: null,
|
|
66002
|
+
access: "create"
|
|
66003
|
+
},
|
|
66004
|
+
"logDestination.describeRead": {
|
|
66005
|
+
capName: "log-destination",
|
|
66006
|
+
capScope: "system",
|
|
66007
|
+
addonId: null,
|
|
66008
|
+
access: "view"
|
|
66009
|
+
},
|
|
66010
|
+
"logDestination.read": {
|
|
65784
66011
|
capName: "log-destination",
|
|
65785
66012
|
capScope: "system",
|
|
65786
66013
|
addonId: null,
|
|
@@ -71787,6 +72014,11 @@ Object.freeze({
|
|
|
71787
72014
|
form: "single",
|
|
71788
72015
|
optional: false
|
|
71789
72016
|
}],
|
|
72017
|
+
"logDestination.read": [{
|
|
72018
|
+
name: "deviceId",
|
|
72019
|
+
form: "single",
|
|
72020
|
+
optional: true
|
|
72021
|
+
}],
|
|
71790
72022
|
"mediaPlayer.getStatus": [{
|
|
71791
72023
|
name: "deviceId",
|
|
71792
72024
|
form: "single",
|
|
@@ -5550,7 +5550,7 @@ var ZodIssueCode = {
|
|
|
5550
5550
|
var ZodFirstPartyTypeKind;
|
|
5551
5551
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5552
5552
|
//#endregion
|
|
5553
|
-
//#region ../types/dist/sleep-
|
|
5553
|
+
//#region ../types/dist/sleep-BSuCCFjf.mjs
|
|
5554
5554
|
/**
|
|
5555
5555
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5556
5556
|
* window to float samples (D455).
|
|
@@ -17241,7 +17241,19 @@ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
|
|
|
17241
17241
|
kind: literal("node"),
|
|
17242
17242
|
nodeId: string().min(1)
|
|
17243
17243
|
})]);
|
|
17244
|
+
/**
|
|
17245
|
+
* `enum` stores a STATE as the ordinal of its value in the series' value list
|
|
17246
|
+
* (`DeviceHistorySeriesInfo.values`, append-only, so an ordinal never changes
|
|
17247
|
+
* meaning); a rollup keeps the time spent in each state (`states`).
|
|
17248
|
+
*/
|
|
17244
17249
|
var DeviceHistoryKindSchema = _enum([
|
|
17250
|
+
"gauge",
|
|
17251
|
+
"counter",
|
|
17252
|
+
"boolean",
|
|
17253
|
+
"enum"
|
|
17254
|
+
]);
|
|
17255
|
+
/** What a PRODUCER may declare. `enum` is cap-only: its value list is the cap field's. */
|
|
17256
|
+
var DeviceHistoryProducerKindSchema = _enum([
|
|
17245
17257
|
"gauge",
|
|
17246
17258
|
"counter",
|
|
17247
17259
|
"boolean"
|
|
@@ -17278,7 +17290,13 @@ var SeriesInfoSchema = object({
|
|
|
17278
17290
|
/** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
|
|
17279
17291
|
unit: string().nullable(),
|
|
17280
17292
|
displayName: string(),
|
|
17281
|
-
source: _enum([
|
|
17293
|
+
source: _enum([
|
|
17294
|
+
"cap",
|
|
17295
|
+
"addon",
|
|
17296
|
+
"derived"
|
|
17297
|
+
]),
|
|
17298
|
+
/** `enum`: the value of each ordinal (index = ordinal); `null` for every other kind. */
|
|
17299
|
+
values: array(string()).readonly().nullable(),
|
|
17282
17300
|
firstTs: number(),
|
|
17283
17301
|
lastTs: number()
|
|
17284
17302
|
});
|
|
@@ -17292,17 +17310,31 @@ var QueryPointSchema = object({
|
|
|
17292
17310
|
twMean: number().nullable(),
|
|
17293
17311
|
min: number(),
|
|
17294
17312
|
max: number(),
|
|
17295
|
-
/** `null` is unknown, never zero (D393). */
|
|
17296
|
-
last: number().nullable()
|
|
17313
|
+
/** `null` is unknown, never zero (D393). For an `enum` series: the ordinal of {@link state}. */
|
|
17314
|
+
last: number().nullable(),
|
|
17315
|
+
/**
|
|
17316
|
+
* The increase over the point: a `counter`'s growth since the previous point
|
|
17317
|
+
* or bucket (a drop is a reset, counted from zero), and for
|
|
17318
|
+
* {@link DEVICE_HISTORY_ENERGY_KEY} the kWh used in the bucket. `null` for
|
|
17319
|
+
* every other kind, and when it cannot be known.
|
|
17320
|
+
*/
|
|
17321
|
+
delta: number().nullable(),
|
|
17322
|
+
/** `enum`: the state in force at the end of the point (the name of `last`); `null` otherwise. */
|
|
17323
|
+
state: string().nullable(),
|
|
17324
|
+
/** `enum` rollup: milliseconds spent in each state inside the bucket; `null` for raw points and other kinds. */
|
|
17325
|
+
states: record(string(), number()).nullable()
|
|
17297
17326
|
});
|
|
17298
17327
|
var QuerySeriesSchema = object({
|
|
17299
17328
|
scope: string(),
|
|
17300
17329
|
/** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
|
|
17301
17330
|
before: object({
|
|
17302
17331
|
t: number(),
|
|
17303
|
-
value: number().nullable()
|
|
17332
|
+
value: number().nullable(),
|
|
17333
|
+
state: string().nullable()
|
|
17304
17334
|
}).nullable(),
|
|
17305
|
-
points: array(QueryPointSchema).readonly()
|
|
17335
|
+
points: array(QueryPointSchema).readonly(),
|
|
17336
|
+
/** A derived key: the stored key its points were computed from; `null` for a stored series. */
|
|
17337
|
+
derivedFrom: string().nullable()
|
|
17306
17338
|
});
|
|
17307
17339
|
/** The window part of a query, shared by the device and node forms. */
|
|
17308
17340
|
var QueryWindowShape = {
|
|
@@ -17318,6 +17350,23 @@ var QueryResultSchema = object({
|
|
|
17318
17350
|
series: array(QuerySeriesSchema).readonly(),
|
|
17319
17351
|
truncated: boolean()
|
|
17320
17352
|
});
|
|
17353
|
+
/** One read of a batch: a device's key or a node's key (exactly one subject). */
|
|
17354
|
+
var QueryManyItemSchema = union([object({
|
|
17355
|
+
deviceId: number().int(),
|
|
17356
|
+
key: string(),
|
|
17357
|
+
scope: string().optional()
|
|
17358
|
+
}), object({
|
|
17359
|
+
forNodeId: string().min(1),
|
|
17360
|
+
key: string(),
|
|
17361
|
+
scope: string().optional()
|
|
17362
|
+
})]);
|
|
17363
|
+
var QueryManyEntrySchema = discriminatedUnion("ok", [object({
|
|
17364
|
+
ok: literal(true),
|
|
17365
|
+
result: QueryResultSchema
|
|
17366
|
+
}), object({
|
|
17367
|
+
ok: literal(false),
|
|
17368
|
+
error: string()
|
|
17369
|
+
})]);
|
|
17321
17370
|
var TierStatusSchema = object({
|
|
17322
17371
|
tier: DeviceHistoryResolutionSchema,
|
|
17323
17372
|
/** `null` until the first background count answered. */
|
|
@@ -17373,16 +17422,22 @@ var DeviceHistoryStatusSchema = object({
|
|
|
17373
17422
|
lastRefreshAt: number().nullable()
|
|
17374
17423
|
})
|
|
17375
17424
|
});
|
|
17376
|
-
method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({
|
|
17425
|
+
method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ forNodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
17377
17426
|
deviceId: number().int(),
|
|
17378
17427
|
...QueryWindowShape
|
|
17379
17428
|
}), QueryResultSchema), method(object({
|
|
17380
|
-
|
|
17429
|
+
forNodeId: string().min(1),
|
|
17381
17430
|
...QueryWindowShape
|
|
17382
17431
|
}), QueryResultSchema, { auth: "admin" }), method(object({
|
|
17432
|
+
items: array(QueryManyItemSchema).min(1).max(24),
|
|
17433
|
+
from: QueryWindowShape.from,
|
|
17434
|
+
to: QueryWindowShape.to,
|
|
17435
|
+
resolution: QueryWindowShape.resolution,
|
|
17436
|
+
maxPoints: QueryWindowShape.maxPoints
|
|
17437
|
+
}), object({ results: array(QueryManyEntrySchema).readonly() }), { auth: "admin" }), method(object({
|
|
17383
17438
|
name: string().regex(/^[a-z0-9-]+$/),
|
|
17384
17439
|
subjectKind: _enum(["device", "node"]),
|
|
17385
|
-
kind:
|
|
17440
|
+
kind: DeviceHistoryProducerKindSchema,
|
|
17386
17441
|
unit: string().optional(),
|
|
17387
17442
|
displayName: string().min(1),
|
|
17388
17443
|
ingest: _enum(["points", "buckets"])
|
|
@@ -40399,14 +40454,106 @@ var LogEntrySchema = object({
|
|
|
40399
40454
|
meta: record(string(), unknown()).optional(),
|
|
40400
40455
|
tags: record(string(), string()).optional()
|
|
40401
40456
|
});
|
|
40402
|
-
|
|
40403
|
-
|
|
40457
|
+
/**
|
|
40458
|
+
* A history READ against one destination (D898).
|
|
40459
|
+
*
|
|
40460
|
+
* Every filter is applied by the PROVIDER, before the limit — a filter the
|
|
40461
|
+
* browser applied after the limit is what made a rare device's lines
|
|
40462
|
+
* unreachable behind a busy one's. `before` / `after` are cursors the provider
|
|
40463
|
+
* minted (opaque to everyone else): a file position for the rotated files, a
|
|
40464
|
+
* nanosecond timestamp for Loki.
|
|
40465
|
+
*
|
|
40466
|
+
* A read is BOUNDED by `budgetMs`: a filter that matches nothing on a 30-day
|
|
40467
|
+
* store answers `done: false` with the cursor it reached and the bytes it
|
|
40468
|
+
* scanned, and the caller decides whether to go on. That is what makes a long
|
|
40469
|
+
* scan show progress and stop when asked — `cancelRead` ends the slice in
|
|
40470
|
+
* flight, and not asking for the next slice ends the scan.
|
|
40471
|
+
*/
|
|
40472
|
+
var LogReadQuerySchema = object({
|
|
40473
|
+
/** Correlates `cancelRead`. Caller-chosen, unique per in-flight read. */
|
|
40474
|
+
requestId: string().min(1).max(64).optional(),
|
|
40475
|
+
/** The device the line is about (`tags.deviceId`, numeric). */
|
|
40476
|
+
deviceId: number().int().optional(),
|
|
40477
|
+
/**
|
|
40478
|
+
* The emitting addon — bare manifest id; `@<version>` / `::<sub>` suffixes
|
|
40479
|
+
* match. Not `addonId`: a cap router reads that name as "which provider".
|
|
40480
|
+
*/
|
|
40481
|
+
fromAddonId: string().min(1).max(200).optional(),
|
|
40482
|
+
/**
|
|
40483
|
+
* The emitting node: matches the agent that emitted the line, the node
|
|
40484
|
+
* itself, or a worker under it (`<agent>/<runner>`) — the `agentId`
|
|
40485
|
+
* semantics of `matchesLogTags`. Not `nodeId`: a cap router reads that
|
|
40486
|
+
* name as "which node's provider".
|
|
40487
|
+
*/
|
|
40488
|
+
fromNodeId: string().min(1).max(200).optional(),
|
|
40489
|
+
/** Any other tag, exact match (AND). */
|
|
40490
|
+
tags: record(string(), union([string(), number()])).optional(),
|
|
40491
|
+
/** Severity FLOOR: this level and above. */
|
|
40404
40492
|
level: LogLevelSchema.optional(),
|
|
40405
|
-
|
|
40406
|
-
|
|
40407
|
-
|
|
40408
|
-
|
|
40409
|
-
|
|
40493
|
+
/** Case-insensitive substring over message, scope, tag values and meta values. */
|
|
40494
|
+
text: string().min(1).max(200).optional(),
|
|
40495
|
+
/** Epoch ms, inclusive. */
|
|
40496
|
+
since: number().optional(),
|
|
40497
|
+
/** Epoch ms, inclusive. */
|
|
40498
|
+
until: number().optional(),
|
|
40499
|
+
/** Older than this cursor (exclusive). Absent with `after` absent ⇒ from the newest. */
|
|
40500
|
+
before: string().min(1).max(1024).optional(),
|
|
40501
|
+
/** Newer than this cursor (exclusive). */
|
|
40502
|
+
after: string().min(1).max(1024).optional(),
|
|
40503
|
+
limit: number().int().min(1).max(1e3).optional(),
|
|
40504
|
+
/** Wall-clock bound of this slice. The provider caps it. */
|
|
40505
|
+
budgetMs: number().int().min(50).max(1e4).optional()
|
|
40506
|
+
});
|
|
40507
|
+
var LogReadResultSchema = object({
|
|
40508
|
+
/** Newest first. */
|
|
40509
|
+
entries: array(object({
|
|
40510
|
+
/** `<bootId>.<seq>` minted by the emitting LogManager — the dedupe key. */
|
|
40511
|
+
id: string().optional(),
|
|
40512
|
+
/** Epoch ms. */
|
|
40513
|
+
timestamp: number(),
|
|
40514
|
+
level: LogLevelSchema,
|
|
40515
|
+
scope: string().optional(),
|
|
40516
|
+
message: string(),
|
|
40517
|
+
tags: record(string(), union([string(), number()])).optional(),
|
|
40518
|
+
meta: record(string(), unknown()).optional()
|
|
40519
|
+
})),
|
|
40520
|
+
/** Pass as `before` for the next older page; null when nothing older exists. */
|
|
40521
|
+
nextBefore: string().nullable(),
|
|
40522
|
+
/** Pass as `after` to read what arrived since; null when unknown. */
|
|
40523
|
+
nextAfter: string().nullable(),
|
|
40524
|
+
/** Bytes this slice read (files) or received (remote). Progress, not a promise. */
|
|
40525
|
+
scannedBytes: number().int().nonnegative(),
|
|
40526
|
+
/**
|
|
40527
|
+
* True when the scan in this direction reached the end of the store.
|
|
40528
|
+
* False with fewer than `limit` entries means the budget ran out first —
|
|
40529
|
+
* call again with `nextBefore` to go on.
|
|
40530
|
+
*/
|
|
40531
|
+
done: boolean(),
|
|
40532
|
+
/** True when `cancelRead` ended this slice early. */
|
|
40533
|
+
cancelled: boolean().optional()
|
|
40534
|
+
});
|
|
40535
|
+
var LogReadCapabilitiesSchema = object({
|
|
40536
|
+
/** False ⇒ this destination only ships lines (console, forwarder, an unconfigured Loki). */
|
|
40537
|
+
readable: boolean(),
|
|
40538
|
+
/** Why not, when `readable` is false — rendered next to the source. */
|
|
40539
|
+
reason: string().nullable(),
|
|
40540
|
+
/** Filters the provider applies itself. A false one is applied by nobody. */
|
|
40541
|
+
filters: object({
|
|
40542
|
+
deviceId: boolean(),
|
|
40543
|
+
addonId: boolean(),
|
|
40544
|
+
nodeId: boolean(),
|
|
40545
|
+
tags: boolean(),
|
|
40546
|
+
level: boolean(),
|
|
40547
|
+
text: boolean(),
|
|
40548
|
+
timeRange: boolean()
|
|
40549
|
+
}),
|
|
40550
|
+
/** How far back the store reaches, when the provider knows (days). */
|
|
40551
|
+
retentionDays: number().nullable()
|
|
40552
|
+
});
|
|
40553
|
+
method(LogEntrySchema, _void(), { kind: "mutation" }), optionalMethod(_void(), LogReadCapabilitiesSchema, { auth: "admin" }), optionalMethod(LogReadQuerySchema, LogReadResultSchema, { auth: "admin" }), optionalMethod(object({ requestId: string().min(1).max(64) }), object({ cancelled: boolean() }), {
|
|
40554
|
+
kind: "mutation",
|
|
40555
|
+
auth: "admin"
|
|
40556
|
+
});
|
|
40410
40557
|
/**
|
|
40411
40558
|
* `login-method` — collection cap through which auth addons contribute
|
|
40412
40559
|
* their pre-auth login surfaces to the login page. This is the SINGLE,
|
|
@@ -42962,6 +43109,33 @@ var NcRuleTargetSchema = object({
|
|
|
42962
43109
|
params: record(string(), unknown()).optional()
|
|
42963
43110
|
});
|
|
42964
43111
|
/**
|
|
43112
|
+
* WHAT THE NOTIFICATION'S PICTURE IS (D897) — the ONE media choice of a rule.
|
|
43113
|
+
*
|
|
43114
|
+
* Every mode starts from the same CLEAN source frame of the trigger moment
|
|
43115
|
+
* (keyFrame → sceneFrame → lastSceneFrame, narrowed to the trigger instant and
|
|
43116
|
+
* to the zone that fired the rule) and renders it once at send time:
|
|
43117
|
+
* - `scene-boxes` — the whole scene, the subject outlined thick in the accent
|
|
43118
|
+
* colour and every OTHER track visible at that instant outlined thin, each
|
|
43119
|
+
* labelled with class and confidence ("dog 87%").
|
|
43120
|
+
* - `crop` — the subject cut out of that frame around its box at that instant.
|
|
43121
|
+
* - `clean` — the whole scene with nothing drawn on it.
|
|
43122
|
+
* - `none` — no picture.
|
|
43123
|
+
*
|
|
43124
|
+
* A mode that cannot be honoured (no box at that instant, a photograph with no
|
|
43125
|
+
* tracked subject) ships `clean` and names the reason in the log, per camera.
|
|
43126
|
+
* It replaces the `attach` × `frame` × `zoneCrop` triple, which let one rule
|
|
43127
|
+
* ship a crop on one event and a boxed scene on the next depending on which
|
|
43128
|
+
* stored kind had landed.
|
|
43129
|
+
*/
|
|
43130
|
+
var NcMediaImageSchema = _enum([
|
|
43131
|
+
"scene-boxes",
|
|
43132
|
+
"crop",
|
|
43133
|
+
"clean",
|
|
43134
|
+
"none"
|
|
43135
|
+
]);
|
|
43136
|
+
/**
|
|
43137
|
+
* @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
|
|
43138
|
+
*
|
|
42965
43139
|
* Media attachment policy (P1 still-image subset).
|
|
42966
43140
|
* - `best` — the best AVAILABLE subject image at dispatch time (D-3).
|
|
42967
43141
|
* - `best-matching` — the media that explains WHY the rule fired: a rule
|
|
@@ -42975,6 +43149,8 @@ var NcRuleTargetSchema = object({
|
|
|
42975
43149
|
* - `none` — no attachment.
|
|
42976
43150
|
*/
|
|
42977
43151
|
/**
|
|
43152
|
+
* @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
|
|
43153
|
+
*
|
|
42978
43154
|
* WHAT THE PICTURE SHOWS — chosen explicitly, because the implicit ladders
|
|
42979
43155
|
* conflate it with the selection strategy and betray the request: asking for
|
|
42980
43156
|
* the clean scene frame on an object-event owner used to start at
|
|
@@ -43003,16 +43179,29 @@ var NcMediaFrameSchema = _enum([
|
|
|
43003
43179
|
*/
|
|
43004
43180
|
var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
|
|
43005
43181
|
var NcMediaPolicySchema = object({
|
|
43182
|
+
/**
|
|
43183
|
+
* The picture — see {@link NcMediaImageSchema}. Absent on a rule nobody has
|
|
43184
|
+
* saved since D897: `normalizeNcMediaPolicy` derives it from the legacy
|
|
43185
|
+
* triple below, at load and at every write, and the store keeps only this.
|
|
43186
|
+
*/
|
|
43187
|
+
image: NcMediaImageSchema.optional(),
|
|
43188
|
+
/**
|
|
43189
|
+
* Draw the zone that FIRED the rule on the picture (`scene-boxes` / `clean`;
|
|
43190
|
+
* a `crop` never shows it). Valid only on a rule whose trigger is a zone —
|
|
43191
|
+
* `conditions.zones` or an occupancy zone — and refused on save otherwise.
|
|
43192
|
+
* Replaces `zoneCrop`.
|
|
43193
|
+
*/
|
|
43194
|
+
showTriggerZone: boolean().optional(),
|
|
43195
|
+
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
43006
43196
|
attach: _enum([
|
|
43007
43197
|
"best",
|
|
43008
43198
|
"best-matching",
|
|
43009
43199
|
"keyFrame",
|
|
43010
43200
|
"none"
|
|
43011
|
-
]).
|
|
43012
|
-
/**
|
|
43201
|
+
]).optional(),
|
|
43202
|
+
/** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
|
|
43013
43203
|
frame: NcMediaFrameSchema.optional(),
|
|
43014
|
-
/**
|
|
43015
|
-
* "show me the ZONE", not the whole scene or the subject crop. */
|
|
43204
|
+
/** @deprecated D897 — folded into `image: 'clean'` + `showTriggerZone` on save. */
|
|
43016
43205
|
zoneCrop: boolean().optional(),
|
|
43017
43206
|
/**
|
|
43018
43207
|
* Also attach a short GIF cut from the stream broker's clip ring around the
|
|
@@ -43184,7 +43373,9 @@ var NcRuleInputSchema = object({
|
|
|
43184
43373
|
* targets.
|
|
43185
43374
|
*/
|
|
43186
43375
|
targetUsers: array(string()).optional(),
|
|
43187
|
-
|
|
43376
|
+
/** Absent = the kind's default picture (`resolveNcMediaImage`): the subject crop for a
|
|
43377
|
+
* detection, the clean scene for a sensor or a sound. Set explicitly on save (D897). */
|
|
43378
|
+
media: NcMediaPolicySchema.default({}),
|
|
43188
43379
|
throttle: NcThrottleSchema.default({
|
|
43189
43380
|
cooldownSec: 60,
|
|
43190
43381
|
scope: "rule-device"
|
|
@@ -44121,13 +44312,37 @@ var NcAlarmModeOpeningsSchema = object({
|
|
|
44121
44312
|
/** Covered devices whose state could not be read (D49): neither open nor closed. */
|
|
44122
44313
|
unknown: array(number().int())
|
|
44123
44314
|
});
|
|
44315
|
+
/**
|
|
44316
|
+
* One alarm INPUT — a (rule, device) pair — the operator bypassed until the
|
|
44317
|
+
* next disarm ("Bypass this input until disarm" on a trigger notification, or
|
|
44318
|
+
* `nc.bypassAlarmInput`). Reported so an armed alarm with a silenced input
|
|
44319
|
+
* never looks fully armed (D62: off must never look like broken).
|
|
44320
|
+
*/
|
|
44321
|
+
var NcAlarmInputBypassViewSchema = object({
|
|
44322
|
+
ruleId: string(),
|
|
44323
|
+
/** The rule's current name (its frozen name when the rule is gone). */
|
|
44324
|
+
ruleName: string(),
|
|
44325
|
+
/** The input: the sensor of the match, else its camera. */
|
|
44326
|
+
deviceId: number().int(),
|
|
44327
|
+
/** The input's current name. */
|
|
44328
|
+
name: string(),
|
|
44329
|
+
/** When it was bypassed (ms epoch). */
|
|
44330
|
+
since: number(),
|
|
44331
|
+
/** Triggers from this input dropped since. */
|
|
44332
|
+
dropped: number().int().min(0)
|
|
44333
|
+
});
|
|
44124
44334
|
var NcAlarmLiveSchema = object({
|
|
44125
44335
|
state: AlarmStateSchema,
|
|
44126
44336
|
/** The mode being armed into (exit delay) or held; null when disarmed. */
|
|
44127
44337
|
targetMode: AlarmArmModeSchema.nullable(),
|
|
44128
44338
|
availableModes: array(AlarmArmModeSchema),
|
|
44129
44339
|
openings: array(NcAlarmModeOpeningsSchema),
|
|
44130
|
-
exclusions: array(NcAlarmExclusionViewSchema)
|
|
44340
|
+
exclusions: array(NcAlarmExclusionViewSchema),
|
|
44341
|
+
/**
|
|
44342
|
+
* Inputs bypassed for the rest of this arm session; cleared on disarm.
|
|
44343
|
+
* Defaulted so an older hub answer still parses (as "none known").
|
|
44344
|
+
*/
|
|
44345
|
+
bypassedInputs: array(NcAlarmInputBypassViewSchema).default([])
|
|
44131
44346
|
});
|
|
44132
44347
|
var NcAlarmConfigSchema = object({
|
|
44133
44348
|
/**
|
|
@@ -65776,7 +65991,19 @@ Object.freeze({
|
|
|
65776
65991
|
addonId: null,
|
|
65777
65992
|
access: "view"
|
|
65778
65993
|
},
|
|
65779
|
-
"logDestination.
|
|
65994
|
+
"logDestination.cancelRead": {
|
|
65995
|
+
capName: "log-destination",
|
|
65996
|
+
capScope: "system",
|
|
65997
|
+
addonId: null,
|
|
65998
|
+
access: "create"
|
|
65999
|
+
},
|
|
66000
|
+
"logDestination.describeRead": {
|
|
66001
|
+
capName: "log-destination",
|
|
66002
|
+
capScope: "system",
|
|
66003
|
+
addonId: null,
|
|
66004
|
+
access: "view"
|
|
66005
|
+
},
|
|
66006
|
+
"logDestination.read": {
|
|
65780
66007
|
capName: "log-destination",
|
|
65781
66008
|
capScope: "system",
|
|
65782
66009
|
addonId: null,
|
|
@@ -71783,6 +72010,11 @@ Object.freeze({
|
|
|
71783
72010
|
form: "single",
|
|
71784
72011
|
optional: false
|
|
71785
72012
|
}],
|
|
72013
|
+
"logDestination.read": [{
|
|
72014
|
+
name: "deviceId",
|
|
72015
|
+
form: "single",
|
|
72016
|
+
optional: true
|
|
72017
|
+
}],
|
|
71786
72018
|
"mediaPlayer.getStatus": [{
|
|
71787
72019
|
name: "deviceId",
|
|
71788
72020
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-waste-collections",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "Waste collection schedules via the vendored HACS waste_collection_schedule Python core — full source catalog as calendar-source.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|