@camstack/addon-pipeline 1.2.290 → 1.2.292
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/audio-analyzer/index.js +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/{default-detection-model-B64MIW2h.mjs → default-detection-model-DcTy-nJl.mjs} +1 -1
- package/dist/{default-detection-model-CN_Iu8NF.js → default-detection-model-jjdmKKr3.js} +1 -1
- package/dist/detection-pipeline/index.js +4 -4
- package/dist/detection-pipeline/index.mjs +4 -4
- package/dist/{dist-C4JqXCw-.mjs → dist-Bn6BQW8q.mjs} +487 -60
- package/dist/{dist-BIlnUdBn.js → dist-D7FonEUB.js} +487 -60
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-C-WfKJ6b.mjs → node-BN0Na3HN.mjs} +1 -1
- package/dist/{node-CVlJhqng.js → node-D3C1krEi.js} +1 -1
- package/dist/pipeline-runner/index.js +3 -3
- package/dist/pipeline-runner/index.mjs +3 -3
- package/dist/{process-memory-CJKKFNar.mjs → process-memory-CeZ8ms80.mjs} +1 -1
- package/dist/{process-memory-ZUucMC8Z.js → process-memory-DI4jrCtX.js} +1 -1
- package/dist/recorder/index.js +8 -2
- package/dist/recorder/index.mjs +8 -2
- package/dist/{segment-demux-js-4OAHyQ3t.mjs → segment-demux-js-CNPzlcyO.mjs} +1 -1
- package/dist/{segment-demux-js-D0mqN4RC.js → segment-demux-js-COooJ-t0.js} +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-r5TULO-I.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BfrONGaR.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-pSFdAaR0.mjs +26 -0
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DhImOdbA.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-DPdwl8-T.mjs → hostInit-0k0JYZnk.mjs} +2 -2
- package/dist/stream-broker/index.js +1056 -92
- package/dist/stream-broker/index.mjs +1056 -92
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D7VLO8g1.mjs +0 -26
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-UqRrHdtw.mjs +0 -26
|
@@ -5360,7 +5360,7 @@ var ZodIssueCode = {
|
|
|
5360
5360
|
var ZodFirstPartyTypeKind;
|
|
5361
5361
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5362
5362
|
//#endregion
|
|
5363
|
-
//#region ../types/dist/sleep-
|
|
5363
|
+
//#region ../types/dist/sleep-D_4W7xuQ.mjs
|
|
5364
5364
|
/**
|
|
5365
5365
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5366
5366
|
* window to float samples (D455).
|
|
@@ -7534,11 +7534,17 @@ var RawStateResultSchema = object({
|
|
|
7534
7534
|
method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(object({ deviceId: number() }), array(ConfigEntrySchema$1)), method(object({
|
|
7535
7535
|
deviceId: number(),
|
|
7536
7536
|
values: record(string(), unknown())
|
|
7537
|
-
}), _void(), {
|
|
7537
|
+
}), _void(), {
|
|
7538
|
+
kind: "mutation",
|
|
7539
|
+
auth: "admin"
|
|
7540
|
+
}), method(object({
|
|
7538
7541
|
deviceId: number(),
|
|
7539
7542
|
action: string().min(1),
|
|
7540
7543
|
input: unknown()
|
|
7541
|
-
}), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), {
|
|
7544
|
+
}), unknown(), { kind: "mutation" }), method(object({ deviceId: number() }), _void(), {
|
|
7545
|
+
kind: "mutation",
|
|
7546
|
+
auth: "admin"
|
|
7547
|
+
}), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
|
|
7542
7548
|
/**
|
|
7543
7549
|
* The ONE retry schedule for work that can fail simply because the node was
|
|
7544
7550
|
* still booting.
|
|
@@ -13608,7 +13614,7 @@ method(ListInputSchema, array(BrokerInfoSchema$1)), method(GetInputSchema, Broke
|
|
|
13608
13614
|
}), method(UnsubscribeInputSchema, _void(), {
|
|
13609
13615
|
kind: "mutation",
|
|
13610
13616
|
auth: "admin"
|
|
13611
|
-
}), method(GetStateInputSchema, unknown().nullable()), method(_void(), RegistryStatusSchema);
|
|
13617
|
+
}), method(GetStateInputSchema, unknown().nullable(), { auth: "admin" }), method(_void(), RegistryStatusSchema);
|
|
13612
13618
|
DeviceType.Camera;
|
|
13613
13619
|
/** Stream delivery format. (Relocated from the retired `streaming-engine` cap.) */
|
|
13614
13620
|
var StreamFormatSchema = _enum([
|
|
@@ -15043,17 +15049,20 @@ method(object({
|
|
|
15043
15049
|
namespace: string().optional(),
|
|
15044
15050
|
collection: string(),
|
|
15045
15051
|
key: string()
|
|
15046
|
-
}), unknown()), method(object({
|
|
15052
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
15047
15053
|
namespace: string().optional(),
|
|
15048
15054
|
collection: string(),
|
|
15049
15055
|
key: string(),
|
|
15050
15056
|
value: unknown()
|
|
15051
|
-
}), _void(), {
|
|
15057
|
+
}), _void(), {
|
|
15058
|
+
kind: "mutation",
|
|
15059
|
+
auth: "admin"
|
|
15060
|
+
}), method(object({
|
|
15052
15061
|
namespace: string().optional(),
|
|
15053
15062
|
collection: string(),
|
|
15054
15063
|
filter: QueryFilterSchema.optional(),
|
|
15055
15064
|
columns: array(string()).readonly().optional()
|
|
15056
|
-
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
15065
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
15057
15066
|
namespace: string().optional(),
|
|
15058
15067
|
collection: string(),
|
|
15059
15068
|
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
@@ -15063,7 +15072,10 @@ method(object({
|
|
|
15063
15072
|
}), object({
|
|
15064
15073
|
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
15065
15074
|
* row's own id on an update. */
|
|
15066
|
-
id: union([string(), number()]) }), {
|
|
15075
|
+
id: union([string(), number()]) }), {
|
|
15076
|
+
kind: "mutation",
|
|
15077
|
+
auth: "admin"
|
|
15078
|
+
}), method(object({
|
|
15067
15079
|
namespace: string().optional(),
|
|
15068
15080
|
collection: string(),
|
|
15069
15081
|
record: object({
|
|
@@ -15076,38 +15088,56 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
|
15076
15088
|
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
15077
15089
|
* primary key — which is the only place an auto key is knowable.
|
|
15078
15090
|
*/
|
|
15079
|
-
id: union([string(), number()]) }), {
|
|
15091
|
+
id: union([string(), number()]) }), {
|
|
15092
|
+
kind: "mutation",
|
|
15093
|
+
auth: "admin"
|
|
15094
|
+
}), method(object({
|
|
15080
15095
|
namespace: string().optional(),
|
|
15081
15096
|
collection: string(),
|
|
15082
15097
|
records: array(BulkRecordSchema).readonly()
|
|
15083
|
-
}), object({ inserted: number().int() }), {
|
|
15098
|
+
}), object({ inserted: number().int() }), {
|
|
15099
|
+
kind: "mutation",
|
|
15100
|
+
auth: "admin"
|
|
15101
|
+
}), method(object({
|
|
15084
15102
|
namespace: string().optional(),
|
|
15085
15103
|
collection: string(),
|
|
15086
15104
|
id: string(),
|
|
15087
15105
|
data: record(string(), unknown())
|
|
15088
|
-
}), _void(), {
|
|
15106
|
+
}), _void(), {
|
|
15107
|
+
kind: "mutation",
|
|
15108
|
+
auth: "admin"
|
|
15109
|
+
}), method(object({
|
|
15089
15110
|
namespace: string().optional(),
|
|
15090
15111
|
collection: string(),
|
|
15091
15112
|
key: string()
|
|
15092
|
-
}), _void(), {
|
|
15113
|
+
}), _void(), {
|
|
15114
|
+
kind: "mutation",
|
|
15115
|
+
auth: "admin"
|
|
15116
|
+
}), method(object({
|
|
15093
15117
|
namespace: string().optional(),
|
|
15094
15118
|
collection: string(),
|
|
15095
15119
|
filter: MutationFilterSchema
|
|
15096
|
-
}), object({ deleted: number().int() }), {
|
|
15120
|
+
}), object({ deleted: number().int() }), {
|
|
15121
|
+
kind: "mutation",
|
|
15122
|
+
auth: "admin"
|
|
15123
|
+
}), method(object({
|
|
15097
15124
|
namespace: string().optional(),
|
|
15098
15125
|
collection: string(),
|
|
15099
15126
|
filter: MutationFilterSchema,
|
|
15100
15127
|
data: record(string(), unknown())
|
|
15101
|
-
}), object({ updated: number().int() }), {
|
|
15128
|
+
}), object({ updated: number().int() }), {
|
|
15129
|
+
kind: "mutation",
|
|
15130
|
+
auth: "admin"
|
|
15131
|
+
}), method(object({
|
|
15102
15132
|
namespace: string().optional(),
|
|
15103
15133
|
collection: string(),
|
|
15104
15134
|
filter: QueryFilterSchema.optional()
|
|
15105
|
-
}), number()), method(object({
|
|
15135
|
+
}), number(), { auth: "admin" }), method(object({
|
|
15106
15136
|
namespace: string().optional(),
|
|
15107
15137
|
collection: string(),
|
|
15108
15138
|
fields: array(AggregateFieldSchema).readonly(),
|
|
15109
15139
|
filter: QueryFilterSchema.optional()
|
|
15110
|
-
}), AggregateResultSchema), method(object({
|
|
15140
|
+
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
15111
15141
|
namespace: string().optional(),
|
|
15112
15142
|
collection: string(),
|
|
15113
15143
|
field: string(),
|
|
@@ -15117,15 +15147,18 @@ id: union([string(), number()]) }), { kind: "mutation" }), method(object({
|
|
|
15117
15147
|
}), array(object({
|
|
15118
15148
|
bucket: number().int(),
|
|
15119
15149
|
count: number().int()
|
|
15120
|
-
})).readonly()), method(object({
|
|
15150
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
15121
15151
|
namespace: string().optional(),
|
|
15122
15152
|
collection: string()
|
|
15123
|
-
}), boolean()), method(object({
|
|
15153
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
15124
15154
|
namespace: string().optional(),
|
|
15125
15155
|
collection: string(),
|
|
15126
15156
|
columns: array(CollectionColumnSchema).readonly(),
|
|
15127
15157
|
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15128
|
-
}), _void(), {
|
|
15158
|
+
}), _void(), {
|
|
15159
|
+
kind: "mutation",
|
|
15160
|
+
auth: "admin"
|
|
15161
|
+
});
|
|
15129
15162
|
/**
|
|
15130
15163
|
* What one engine says about itself. The orchestrator uses `kind` to pick
|
|
15131
15164
|
* a registrant for a collection; `engineId` is what a log line names when
|
|
@@ -15840,7 +15873,13 @@ var ExposeInputSchema = object({
|
|
|
15840
15873
|
capabilities: array(string()).optional()
|
|
15841
15874
|
});
|
|
15842
15875
|
var UnexposeInputSchema = object({ deviceId: string() });
|
|
15843
|
-
method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
|
|
15876
|
+
method(_void(), DeviceExportStatusSchema), method(_void(), array(DeviceKindSchema)), method(_void(), array(ExposedDeviceSchema)), method(ExposeInputSchema, _void(), {
|
|
15877
|
+
kind: "mutation",
|
|
15878
|
+
auth: "admin"
|
|
15879
|
+
}), method(UnexposeInputSchema, _void(), {
|
|
15880
|
+
kind: "mutation",
|
|
15881
|
+
auth: "admin"
|
|
15882
|
+
});
|
|
15844
15883
|
/** Wire/storage schema for one icon id. */
|
|
15845
15884
|
var LocationIconIdSchema = _enum([
|
|
15846
15885
|
"map-pin",
|
|
@@ -16344,7 +16383,10 @@ method(object({
|
|
|
16344
16383
|
kind: "mutation",
|
|
16345
16384
|
auth: "admin",
|
|
16346
16385
|
timeoutMs: 12 * 6e4
|
|
16347
|
-
}), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), {
|
|
16386
|
+
}), method(DeviceRegisterPayloadSchema, _void(), { kind: "mutation" }), method(DeviceRemovePayloadSchema, _void(), { kind: "mutation" }), method(DevicePersistConfigPayloadSchema, _void(), {
|
|
16387
|
+
kind: "mutation",
|
|
16388
|
+
auth: "admin"
|
|
16389
|
+
}), method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }), method(object({ deviceId: number() }), record(string(), unknown()), { auth: "admin" }), method(object({ deviceId: number() }), DeviceMetaSchema.nullable()), method(object({
|
|
16348
16390
|
deviceId: number(),
|
|
16349
16391
|
name: string()
|
|
16350
16392
|
}), _void(), {
|
|
@@ -16549,7 +16591,7 @@ method(object({
|
|
|
16549
16591
|
}), method(object({ deviceId: number() }), array(StreamProbeResultSchema), {
|
|
16550
16592
|
kind: "mutation",
|
|
16551
16593
|
auth: "admin"
|
|
16552
|
-
}), method(object({ deviceId: number() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({
|
|
16594
|
+
}), method(object({ deviceId: number() }), DeviceBindingsForDeviceSchema), method(object({ deviceIds: array(number()) }), array(DeviceBindingsForDeviceSchema)), method(object({}), array(DeviceBindingsForDeviceSchema)), method(object({ capNames: array(string().min(1)).min(1).max(16) }), array(number())), method(object({
|
|
16553
16595
|
deviceId: number(),
|
|
16554
16596
|
capName: string(),
|
|
16555
16597
|
wrapperAddonId: string(),
|
|
@@ -18167,7 +18209,22 @@ var StatusSchema = object({
|
|
|
18167
18209
|
brokerCount: number(),
|
|
18168
18210
|
embeddedRunning: boolean()
|
|
18169
18211
|
});
|
|
18170
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema
|
|
18212
|
+
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
18213
|
+
kind: "mutation",
|
|
18214
|
+
auth: "admin"
|
|
18215
|
+
}), method(IdInputSchema, _void(), {
|
|
18216
|
+
kind: "mutation",
|
|
18217
|
+
auth: "admin"
|
|
18218
|
+
}), method(IdInputSchema, TestResultSchema$1, {
|
|
18219
|
+
kind: "mutation",
|
|
18220
|
+
auth: "admin"
|
|
18221
|
+
}), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, {
|
|
18222
|
+
kind: "mutation",
|
|
18223
|
+
auth: "admin"
|
|
18224
|
+
}), method(IdInputSchema, _void(), {
|
|
18225
|
+
kind: "mutation",
|
|
18226
|
+
auth: "admin"
|
|
18227
|
+
}), method(_void(), StatusSchema);
|
|
18171
18228
|
var NetworkEndpointSchema = object({
|
|
18172
18229
|
url: string(),
|
|
18173
18230
|
hostname: string(),
|
|
@@ -18462,6 +18519,18 @@ var TargetKindSchema = object({
|
|
|
18462
18519
|
*/
|
|
18463
18520
|
iconMediaType: string().optional(),
|
|
18464
18521
|
configSchema: ConfigSchemaPassthrough,
|
|
18522
|
+
/**
|
|
18523
|
+
* The config keys that decide WHERE this kind's secrets are sent (server,
|
|
18524
|
+
* base URL, instance, chat, recipient). A save that changes any of them
|
|
18525
|
+
* while leaving a secret redacted is refused by the provider (D634), so an
|
|
18526
|
+
* editor uses this to ask for the secret on exactly those edits instead of
|
|
18527
|
+
* on every edit.
|
|
18528
|
+
*
|
|
18529
|
+
* Optional: absent from a provider that holds no secret (the Home Assistant
|
|
18530
|
+
* kinds) and from a provider older than this field — an editor that finds
|
|
18531
|
+
* it absent must assume ANY edit may need the secret.
|
|
18532
|
+
*/
|
|
18533
|
+
destinationKeys: array(string()).optional(),
|
|
18465
18534
|
supportsDiscovery: boolean(),
|
|
18466
18535
|
caps: TargetKindCapsSchema
|
|
18467
18536
|
});
|
|
@@ -18500,19 +18569,34 @@ var SendResultSchema = object({
|
|
|
18500
18569
|
});
|
|
18501
18570
|
/** Same shape as SendResult — kept as a distinct name for the test panel. */
|
|
18502
18571
|
var TestResultSchema = SendResultSchema;
|
|
18503
|
-
method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema)), method(object({
|
|
18572
|
+
method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({
|
|
18504
18573
|
kind: string(),
|
|
18505
18574
|
config: record(string(), unknown()).optional()
|
|
18506
|
-
}), array(DiscoveredTargetSchema)), method(object({
|
|
18575
|
+
}), array(DiscoveredTargetSchema), { auth: "admin" }), method(object({
|
|
18507
18576
|
targetId: string(),
|
|
18508
18577
|
notification: NotificationSchema
|
|
18509
|
-
}), SendResultSchema, {
|
|
18578
|
+
}), SendResultSchema, {
|
|
18579
|
+
kind: "mutation",
|
|
18580
|
+
auth: "admin"
|
|
18581
|
+
}), method(object({
|
|
18510
18582
|
targetId: string(),
|
|
18511
18583
|
sample: NotificationSchema.optional()
|
|
18512
|
-
}), TestResultSchema, {
|
|
18584
|
+
}), TestResultSchema, {
|
|
18585
|
+
kind: "mutation",
|
|
18586
|
+
auth: "admin"
|
|
18587
|
+
}), method(object({ target: TargetSchema }), TargetSchema, {
|
|
18588
|
+
kind: "mutation",
|
|
18589
|
+
auth: "admin"
|
|
18590
|
+
}), method(object({ targetId: string() }), _void(), {
|
|
18591
|
+
kind: "mutation",
|
|
18592
|
+
auth: "admin"
|
|
18593
|
+
}), method(object({
|
|
18513
18594
|
targetId: string(),
|
|
18514
18595
|
enabled: boolean()
|
|
18515
|
-
}), _void(), {
|
|
18596
|
+
}), _void(), {
|
|
18597
|
+
kind: "mutation",
|
|
18598
|
+
auth: "admin"
|
|
18599
|
+
});
|
|
18516
18600
|
var COCO_80_LABELS = [
|
|
18517
18601
|
{
|
|
18518
18602
|
id: "person",
|
|
@@ -19359,6 +19443,7 @@ sub("presence", "sensor", "sensor", "#22c55e", "presence", "Presence");
|
|
|
19359
19443
|
sub("enum-sensor", "sensor", "sensor", TAXONOMY_COLORS.sensor, "generic", "Sensor state");
|
|
19360
19444
|
sub("device-event", "sensor", "sensor", "#10b981", "button", "Device event");
|
|
19361
19445
|
sub("lock", "control", "control", "#0ea5e9", "lock", "Lock");
|
|
19446
|
+
sub("cover", "control", "control", "#0ea5e9", "door", "Cover");
|
|
19362
19447
|
sub("switch", "control", "control", TAXONOMY_COLORS.control, "switch", "Switch");
|
|
19363
19448
|
sub("siren", "control", "control", "#dc2626", "siren", "Siren");
|
|
19364
19449
|
sub("button", "control", "control", "#10b981", "button", "Button");
|
|
@@ -19639,6 +19724,10 @@ var NcSystemEventKindSchema = _enum([
|
|
|
19639
19724
|
"alarm-disarmed",
|
|
19640
19725
|
"alarm-arming",
|
|
19641
19726
|
"alarm-arm-refused",
|
|
19727
|
+
"alarm-pending",
|
|
19728
|
+
"alarm-rearmed",
|
|
19729
|
+
"alarm-sensor-bypass",
|
|
19730
|
+
"alarm-check-failed",
|
|
19642
19731
|
"addon-updated",
|
|
19643
19732
|
"server-updated",
|
|
19644
19733
|
"export-completed",
|
|
@@ -19676,6 +19765,19 @@ var NcSystemEventConditionSchema = object({
|
|
|
19676
19765
|
* does not carry) matches no `deviceTypes` list.
|
|
19677
19766
|
*/
|
|
19678
19767
|
deviceTypes: array(string().min(1)).min(1).optional(),
|
|
19768
|
+
/**
|
|
19769
|
+
* Devices this rule NEVER speaks about, whatever else matched. Scoped to the
|
|
19770
|
+
* same kind family as `deviceIds` (`systemEventFilterApplies(kind,
|
|
19771
|
+
* 'deviceIds')`) and applied AFTER it: include first, then exclude. A
|
|
19772
|
+
* consumable subject (`consumable:<id>:<key>`) is excluded by its device id.
|
|
19773
|
+
*
|
|
19774
|
+
* It never fails closed: a subject that carries no device id is not in the
|
|
19775
|
+
* list, so it is not excluded. "Every battery except the one thermometer that
|
|
19776
|
+
* reads 0 % forever" is the question this answers — expressed as an include
|
|
19777
|
+
* list it would have to name every other battery device, and every device
|
|
19778
|
+
* adopted later would be silently left out (D636).
|
|
19779
|
+
*/
|
|
19780
|
+
excludeDeviceIds: array(number().int()).min(1).optional(),
|
|
19679
19781
|
nodeIds: array(string().min(1)).min(1).optional(),
|
|
19680
19782
|
packageNames: array(string().min(1)).min(1).optional()
|
|
19681
19783
|
});
|
|
@@ -20234,6 +20336,19 @@ var NcMediaFrameSchema = _enum([
|
|
|
20234
20336
|
"full",
|
|
20235
20337
|
"boxed"
|
|
20236
20338
|
]);
|
|
20339
|
+
/**
|
|
20340
|
+
* How a SENSOR notification shows the cameras that link the sensor.
|
|
20341
|
+
*
|
|
20342
|
+
* `mosaic` — one image composed of every linked camera's photograph, taken at
|
|
20343
|
+
* the trigger. `each` — one image per camera where the target takes several
|
|
20344
|
+
* attachments; a target that takes one keeps the first camera's (the degrade
|
|
20345
|
+
* engine drops the rest by order). Either way ONE notification per event.
|
|
20346
|
+
* Absent = `mosaic`, applied by the Notification Center and deliberately NOT
|
|
20347
|
+
* a Zod default (see NcRulePatchSchema: a default materialises on every
|
|
20348
|
+
* partial patch). Meaningless for a rule whose subject is not a sensor, and a
|
|
20349
|
+
* sensor linked to one camera ships that camera's plain snapshot either way.
|
|
20350
|
+
*/
|
|
20351
|
+
var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
|
|
20237
20352
|
var NcMediaPolicySchema = object({
|
|
20238
20353
|
attach: _enum([
|
|
20239
20354
|
"best",
|
|
@@ -20279,7 +20394,9 @@ var NcMediaPolicySchema = object({
|
|
|
20279
20394
|
* A profile that is not assigned falls back to the cheapest, and the render
|
|
20280
20395
|
* reports which one actually ran.
|
|
20281
20396
|
*/
|
|
20282
|
-
profile: CamProfileSchema.optional()
|
|
20397
|
+
profile: CamProfileSchema.optional(),
|
|
20398
|
+
/** See {@link NcLinkedCameraModeSchema}. */
|
|
20399
|
+
linkedCameras: NcLinkedCameraModeSchema.optional()
|
|
20283
20400
|
});
|
|
20284
20401
|
/**
|
|
20285
20402
|
* Cooldown GRANULARITY over the subject's class — how much a fired
|
|
@@ -20399,7 +20516,7 @@ var NcRuleInputSchema = object({
|
|
|
20399
20516
|
cooldownSec: 60,
|
|
20400
20517
|
scope: "rule-device"
|
|
20401
20518
|
}),
|
|
20402
|
-
/** `{{var}}`
|
|
20519
|
+
/** `{{var}}` title/body. The variables are declared in `NC_TEMPLATE_VARS` (@camstack/types) and depend on the rule kind — see `templateVarsFor`. */
|
|
20403
20520
|
template: object({
|
|
20404
20521
|
title: string().max(500).optional(),
|
|
20405
20522
|
body: string().max(2e3).optional()
|
|
@@ -20579,6 +20696,22 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
20579
20696
|
throttle: NcThrottleSchema.optional(),
|
|
20580
20697
|
priority: number().int().min(1).max(5).optional()
|
|
20581
20698
|
});
|
|
20699
|
+
var NcRuleClearableKeySchema = _enum([
|
|
20700
|
+
"template",
|
|
20701
|
+
"schedule",
|
|
20702
|
+
"targetUsers",
|
|
20703
|
+
"snoozeOptions",
|
|
20704
|
+
"snoozeAllowGlobal",
|
|
20705
|
+
"waitForEnhancement",
|
|
20706
|
+
"actions",
|
|
20707
|
+
"confirm",
|
|
20708
|
+
"groupIdleSec"
|
|
20709
|
+
]);
|
|
20710
|
+
var NcRuleUpdateInputSchema = object({
|
|
20711
|
+
ruleId: string(),
|
|
20712
|
+
patch: NcRulePatchSchema,
|
|
20713
|
+
clear: array(NcRuleClearableKeySchema).optional()
|
|
20714
|
+
});
|
|
20582
20715
|
/** A persisted rule. */
|
|
20583
20716
|
var NcRuleSchema = NcRuleInputSchema.extend({
|
|
20584
20717
|
id: string(),
|
|
@@ -20610,6 +20743,85 @@ var NcTestResultSchema = object({
|
|
|
20610
20743
|
className: string().optional(),
|
|
20611
20744
|
label: string().optional()
|
|
20612
20745
|
});
|
|
20746
|
+
/** The five rule kinds, as data. `NcRuleKind` in `notification/rule-kinds.ts`
|
|
20747
|
+
* is the same union; the template-vars spec pins the two together. */
|
|
20748
|
+
var NcRuleKindSchema = _enum([
|
|
20749
|
+
"detection",
|
|
20750
|
+
"sensor",
|
|
20751
|
+
"occupancy",
|
|
20752
|
+
"sound",
|
|
20753
|
+
"system"
|
|
20754
|
+
]);
|
|
20755
|
+
/** Which producer renders a template: an ordinary rule, a timelapse, a digest. */
|
|
20756
|
+
var NcTemplateFamilySchema = _enum([
|
|
20757
|
+
"rule",
|
|
20758
|
+
"timelapse",
|
|
20759
|
+
"summary"
|
|
20760
|
+
]);
|
|
20761
|
+
/** Which text field of that producer. `previewText` is the timelapse frame
|
|
20762
|
+
* caption, `captionText` the digest mosaic caption — both see fewer vars. */
|
|
20763
|
+
var NcTemplateFieldSchema = _enum([
|
|
20764
|
+
"title",
|
|
20765
|
+
"body",
|
|
20766
|
+
"previewText",
|
|
20767
|
+
"captionText"
|
|
20768
|
+
]);
|
|
20769
|
+
var NcTemplateVarGroupSchema = _enum([
|
|
20770
|
+
"subject",
|
|
20771
|
+
"place",
|
|
20772
|
+
"time",
|
|
20773
|
+
"rule",
|
|
20774
|
+
"occupancy",
|
|
20775
|
+
"sound",
|
|
20776
|
+
"sensor",
|
|
20777
|
+
"system",
|
|
20778
|
+
"digest",
|
|
20779
|
+
"ai"
|
|
20780
|
+
]);
|
|
20781
|
+
/**
|
|
20782
|
+
* ONE `{{var}}` a notification template may name.
|
|
20783
|
+
*
|
|
20784
|
+
* `families` / `fields` / `kinds` / `deliveries` / `systemEventKinds` say WHERE
|
|
20785
|
+
* it has a value; absent = no restriction on that axis. `systemEventKinds` is
|
|
20786
|
+
* read only for a `system` rule. `dynamic` declares a FAMILY of names
|
|
20787
|
+
* (`count_<class>`): the descriptor's `name` is the example member.
|
|
20788
|
+
*/
|
|
20789
|
+
var NcTemplateVarDescriptorSchema = object({
|
|
20790
|
+
name: string().regex(/^\w+$/),
|
|
20791
|
+
label: string(),
|
|
20792
|
+
description: string().optional(),
|
|
20793
|
+
example: string(),
|
|
20794
|
+
group: NcTemplateVarGroupSchema,
|
|
20795
|
+
families: array(NcTemplateFamilySchema).min(1),
|
|
20796
|
+
fields: array(NcTemplateFieldSchema).optional(),
|
|
20797
|
+
kinds: array(NcRuleKindSchema).optional(),
|
|
20798
|
+
deliveries: array(NcDeliverySchema).optional(),
|
|
20799
|
+
systemEventKinds: array(NcSystemEventKindSchema).optional(),
|
|
20800
|
+
dynamic: object({
|
|
20801
|
+
prefix: literal("count_"),
|
|
20802
|
+
from: literal("classes")
|
|
20803
|
+
}).optional()
|
|
20804
|
+
});
|
|
20805
|
+
/** Input to `previewTemplate` — the editor's own context, plus the draft text. */
|
|
20806
|
+
var NcTemplatePreviewInputSchema = object({
|
|
20807
|
+
context: object({
|
|
20808
|
+
family: NcTemplateFamilySchema,
|
|
20809
|
+
field: NcTemplateFieldSchema,
|
|
20810
|
+
kind: NcRuleKindSchema.optional(),
|
|
20811
|
+
delivery: NcDeliverySchema.optional(),
|
|
20812
|
+
systemEventKinds: array(NcSystemEventKindSchema).optional()
|
|
20813
|
+
}),
|
|
20814
|
+
template: object({
|
|
20815
|
+
title: string().max(500).optional(),
|
|
20816
|
+
body: string().max(2e3).optional()
|
|
20817
|
+
})
|
|
20818
|
+
});
|
|
20819
|
+
var NcTemplatePreviewSchema = object({
|
|
20820
|
+
title: string().nullable(),
|
|
20821
|
+
body: string().nullable(),
|
|
20822
|
+
/** Names the template uses that this context never fills — they render empty. */
|
|
20823
|
+
unknown: array(string())
|
|
20824
|
+
});
|
|
20613
20825
|
var NcConditionDescriptorSchema = object({
|
|
20614
20826
|
/** Field id inside `NcConditions` (or `'schedule'` for the rule-level group). */
|
|
20615
20827
|
id: string(),
|
|
@@ -20875,8 +21087,17 @@ object({
|
|
|
20875
21087
|
lastAt: number()
|
|
20876
21088
|
});
|
|
20877
21089
|
/**
|
|
20878
|
-
* The
|
|
20879
|
-
*
|
|
21090
|
+
* The per-mode lists, at most one per mode. Two lists for one mode have no
|
|
21091
|
+
* meaning a reader could agree on (union? the last one?), so they are refused
|
|
21092
|
+
* at the boundary rather than interpreted.
|
|
21093
|
+
*/
|
|
21094
|
+
var NcAlarmNonBlockingListSchema = array(object({
|
|
21095
|
+
mode: AlarmArmModeSchema,
|
|
21096
|
+
deviceIds: array(number().int()).max(200)
|
|
21097
|
+
})).max(8).refine((lists) => new Set(lists.map((l) => l.mode)).size === lists.length, { message: "nonBlocking: at most one list per arm mode" });
|
|
21098
|
+
/**
|
|
21099
|
+
* The three durations the panel's state machine runs on, who hears about its
|
|
21100
|
+
* transitions, and which openings each mode tolerates.
|
|
20880
21101
|
*
|
|
20881
21102
|
* They live on the NOTIFICATION-RULES cap, not on `alarm-panel`, on purpose:
|
|
20882
21103
|
* `alarm-panel` is `deviceNative` and its other provider mirrors somebody
|
|
@@ -20895,21 +21116,39 @@ var NcAlarmSettingsSchema = object({
|
|
|
20895
21116
|
* existed, and therefore what an untouched install keeps doing.
|
|
20896
21117
|
*/
|
|
20897
21118
|
triggeredDurationSec: number().int().min(0).max(3600),
|
|
20898
|
-
/** Send a notification when a mode takes effect. */
|
|
20899
|
-
announceArm: boolean(),
|
|
20900
21119
|
/**
|
|
20901
|
-
*
|
|
21120
|
+
* Deprecated by D630 — every transition is announced. Parsed, never read;
|
|
21121
|
+
* remove after one release. Optional so an older admin's patch (which still
|
|
21122
|
+
* sends it) parses rather than failing the whole save.
|
|
21123
|
+
*/
|
|
21124
|
+
announceArm: boolean().optional(),
|
|
21125
|
+
/**
|
|
21126
|
+
* Target ids from `notification-output`: every alarm transition goes here.
|
|
20902
21127
|
*
|
|
20903
|
-
* Explicit rather than "everyone": an
|
|
21128
|
+
* Explicit rather than "everyone": an alarm announcement is a household
|
|
20904
21129
|
* message, and broadcasting it to every configured endpoint (including a
|
|
20905
21130
|
* webhook wired to something else) is not a default anybody would choose.
|
|
20906
|
-
* Empty
|
|
20907
|
-
*
|
|
21131
|
+
* Empty sends nothing, and the server logs that — silence must be
|
|
21132
|
+
* attributable.
|
|
21133
|
+
*/
|
|
21134
|
+
announceTargets: array(string().min(1)).max(16),
|
|
21135
|
+
/**
|
|
21136
|
+
* Per arm mode, the covered devices whose being OPEN does not refuse the
|
|
21137
|
+
* arm (a window left ajar for the cat under `home`, say). At most one entry
|
|
21138
|
+
* per mode is meaningful. Defaulted to `[]` so a blob stored before D630
|
|
21139
|
+
* parses as "every opening blocks" — the behaviour it was written under.
|
|
20908
21140
|
*/
|
|
20909
|
-
|
|
21141
|
+
nonBlocking: NcAlarmNonBlockingListSchema.default([])
|
|
20910
21142
|
});
|
|
20911
|
-
/**
|
|
20912
|
-
|
|
21143
|
+
/**
|
|
21144
|
+
* Every field optional — a tab edits one control at a time.
|
|
21145
|
+
*
|
|
21146
|
+
* `nonBlocking` is re-declared WITHOUT its default: `.partial()` does not
|
|
21147
|
+
* remove an inner `.default()`, so a patch that never named the field would
|
|
21148
|
+
* parse to `nonBlocking: []` and wipe every mode's list on an unrelated edit
|
|
21149
|
+
* (the same trap {@link NcRulePatchSchema} documents).
|
|
21150
|
+
*/
|
|
21151
|
+
var NcAlarmSettingsPatchSchema = NcAlarmSettingsSchema.extend({ nonBlocking: NcAlarmNonBlockingListSchema }).partial();
|
|
20913
21152
|
/**
|
|
20914
21153
|
* What one arm mode actually arms, DERIVED from the enabled rules gated on it.
|
|
20915
21154
|
* Never authored, never stored — see `alarm-mode-coverage.ts` for why a stored
|
|
@@ -20954,6 +21193,36 @@ var NcAlarmModeCoverageSchema = object({
|
|
|
20954
21193
|
*/
|
|
20955
21194
|
skippedDevices: array(NcAlarmSkippedDeviceSchema).default([])
|
|
20956
21195
|
});
|
|
21196
|
+
/** One covered device that reads open, and whether that refuses the arm. */
|
|
21197
|
+
var NcAlarmOpeningSchema = object({
|
|
21198
|
+
deviceId: number().int(),
|
|
21199
|
+
name: string(),
|
|
21200
|
+
/** The device's state word as read (`open`, `unlocked`, …). */
|
|
21201
|
+
state: string(),
|
|
21202
|
+
/** False when the mode's non-blocking list names this device. */
|
|
21203
|
+
blocking: boolean()
|
|
21204
|
+
});
|
|
21205
|
+
/** A device the panel is currently ignoring, and which side of it it is on. */
|
|
21206
|
+
var NcAlarmExclusionViewSchema = object({
|
|
21207
|
+
deviceId: number().int(),
|
|
21208
|
+
name: string(),
|
|
21209
|
+
phase: _enum(["open", "closed"])
|
|
21210
|
+
});
|
|
21211
|
+
/** One mode's openings: devices read open, plus those whose state is unknown. */
|
|
21212
|
+
var NcAlarmModeOpeningsSchema = object({
|
|
21213
|
+
mode: AlarmArmModeSchema,
|
|
21214
|
+
devices: array(NcAlarmOpeningSchema),
|
|
21215
|
+
/** Covered devices whose state could not be read (D49): neither open nor closed. */
|
|
21216
|
+
unknown: array(number().int())
|
|
21217
|
+
});
|
|
21218
|
+
var NcAlarmLiveSchema = object({
|
|
21219
|
+
state: AlarmStateSchema,
|
|
21220
|
+
/** The mode being armed into (exit delay) or held; null when disarmed. */
|
|
21221
|
+
targetMode: AlarmArmModeSchema.nullable(),
|
|
21222
|
+
availableModes: array(AlarmArmModeSchema),
|
|
21223
|
+
openings: array(NcAlarmModeOpeningsSchema),
|
|
21224
|
+
exclusions: array(NcAlarmExclusionViewSchema)
|
|
21225
|
+
});
|
|
20957
21226
|
var NcAlarmConfigSchema = object({
|
|
20958
21227
|
/**
|
|
20959
21228
|
* The panel's device id, or null when this install has no panel (the ensure
|
|
@@ -20963,7 +21232,13 @@ var NcAlarmConfigSchema = object({
|
|
|
20963
21232
|
*/
|
|
20964
21233
|
deviceId: number().int().nullable(),
|
|
20965
21234
|
settings: NcAlarmSettingsSchema,
|
|
20966
|
-
coverage: array(NcAlarmModeCoverageSchema)
|
|
21235
|
+
coverage: array(NcAlarmModeCoverageSchema),
|
|
21236
|
+
/**
|
|
21237
|
+
* The panel as it is NOW — state, what each mode would find open, what is
|
|
21238
|
+
* excluded. Optional: a panel-less hub answers without it, and a client
|
|
21239
|
+
* must not read its absence as "nothing is open".
|
|
21240
|
+
*/
|
|
21241
|
+
live: NcAlarmLiveSchema.optional()
|
|
20967
21242
|
});
|
|
20968
21243
|
/**
|
|
20969
21244
|
* ONE rule's demand on ONE camera's clip ring.
|
|
@@ -21011,10 +21286,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
21011
21286
|
kind: "mutation",
|
|
21012
21287
|
auth: "admin",
|
|
21013
21288
|
caller: "required"
|
|
21014
|
-
}), method(object({
|
|
21015
|
-
ruleId: string(),
|
|
21016
|
-
patch: NcRulePatchSchema
|
|
21017
|
-
}), object({ rule: NcRuleSchema }), {
|
|
21289
|
+
}), method(NcRuleUpdateInputSchema, object({ rule: NcRuleSchema }), {
|
|
21018
21290
|
kind: "mutation",
|
|
21019
21291
|
auth: "admin",
|
|
21020
21292
|
caller: "required"
|
|
@@ -21042,7 +21314,10 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
21042
21314
|
}), method(object({}), object({
|
|
21043
21315
|
catalog: array(NcConditionDescriptorSchema),
|
|
21044
21316
|
taxonomy: NcTaxonomySchema.optional()
|
|
21045
|
-
})), method(object({
|
|
21317
|
+
})), method(object({}), object({ vars: array(NcTemplateVarDescriptorSchema) })), method(NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, {
|
|
21318
|
+
kind: "mutation",
|
|
21319
|
+
access: "view"
|
|
21320
|
+
}), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
21046
21321
|
kind: "mutation",
|
|
21047
21322
|
caller: "required"
|
|
21048
21323
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -25851,6 +26126,7 @@ var CAP_TO_KIND = {
|
|
|
25851
26126
|
"enum-sensor": "enum-sensor",
|
|
25852
26127
|
"event-emitter": "device-event",
|
|
25853
26128
|
"lock-control": "lock",
|
|
26129
|
+
cover: "cover",
|
|
25854
26130
|
switch: "switch",
|
|
25855
26131
|
button: "button",
|
|
25856
26132
|
doorbell: "doorbell"
|
|
@@ -26411,41 +26687,65 @@ var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object(
|
|
|
26411
26687
|
method(object({
|
|
26412
26688
|
location: StorageLocationRefSchema,
|
|
26413
26689
|
relativePath: string()
|
|
26414
|
-
}), string()), method(object({
|
|
26690
|
+
}), string(), { auth: "admin" }), method(object({
|
|
26415
26691
|
location: StorageLocationRefSchema,
|
|
26416
26692
|
relativePath: string(),
|
|
26417
26693
|
data: _instanceof(Uint8Array)
|
|
26418
|
-
}), _void(), {
|
|
26694
|
+
}), _void(), {
|
|
26695
|
+
kind: "mutation",
|
|
26696
|
+
auth: "admin"
|
|
26697
|
+
}), method(object({
|
|
26419
26698
|
location: StorageLocationRefSchema,
|
|
26420
26699
|
relativePath: string()
|
|
26421
|
-
}), _instanceof(Uint8Array)), method(object({
|
|
26700
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({
|
|
26422
26701
|
location: StorageLocationRefSchema,
|
|
26423
26702
|
relativePath: string()
|
|
26424
|
-
}), boolean()), method(object({
|
|
26703
|
+
}), boolean(), { auth: "admin" }), method(object({
|
|
26425
26704
|
location: StorageLocationRefSchema,
|
|
26426
26705
|
prefix: string().optional()
|
|
26427
|
-
}), array(string()).readonly()), method(object({
|
|
26706
|
+
}), array(string()).readonly(), { auth: "admin" }), method(object({
|
|
26428
26707
|
location: StorageLocationRefSchema,
|
|
26429
26708
|
relativePath: string()
|
|
26430
|
-
}), _void(), {
|
|
26709
|
+
}), _void(), {
|
|
26710
|
+
kind: "mutation",
|
|
26711
|
+
auth: "admin"
|
|
26712
|
+
}), method(object({ location: StorageLocationRefSchema }), number().nullable()), method(object({
|
|
26431
26713
|
location: StorageLocationRefSchema,
|
|
26432
26714
|
relativePath: string(),
|
|
26433
26715
|
sizeBytes: number().optional()
|
|
26434
|
-
}), object({ uploadId: string() }), {
|
|
26716
|
+
}), object({ uploadId: string() }), {
|
|
26717
|
+
kind: "mutation",
|
|
26718
|
+
auth: "admin"
|
|
26719
|
+
}), method(object({
|
|
26435
26720
|
uploadId: string(),
|
|
26436
26721
|
offset: number(),
|
|
26437
26722
|
data: _instanceof(Uint8Array)
|
|
26438
|
-
}), _void(), {
|
|
26723
|
+
}), _void(), {
|
|
26724
|
+
kind: "mutation",
|
|
26725
|
+
auth: "admin"
|
|
26726
|
+
}), method(object({ uploadId: string() }), _void(), {
|
|
26727
|
+
kind: "mutation",
|
|
26728
|
+
auth: "admin"
|
|
26729
|
+
}), method(object({ uploadId: string() }), _void(), {
|
|
26730
|
+
kind: "mutation",
|
|
26731
|
+
auth: "admin"
|
|
26732
|
+
}), method(object({
|
|
26439
26733
|
location: StorageLocationRefSchema,
|
|
26440
26734
|
relativePath: string()
|
|
26441
26735
|
}), object({
|
|
26442
26736
|
downloadId: string(),
|
|
26443
26737
|
sizeBytes: number()
|
|
26444
|
-
}), {
|
|
26738
|
+
}), {
|
|
26739
|
+
kind: "mutation",
|
|
26740
|
+
auth: "admin"
|
|
26741
|
+
}), method(object({
|
|
26445
26742
|
downloadId: string(),
|
|
26446
26743
|
offset: number(),
|
|
26447
26744
|
length: number()
|
|
26448
|
-
}), _instanceof(Uint8Array)
|
|
26745
|
+
}), _instanceof(Uint8Array), { auth: "admin" }), method(object({ downloadId: string() }), _void(), {
|
|
26746
|
+
kind: "mutation",
|
|
26747
|
+
auth: "admin"
|
|
26748
|
+
}), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(StorageLocationSchema.omit({
|
|
26449
26749
|
createdAt: true,
|
|
26450
26750
|
updatedAt: true
|
|
26451
26751
|
}), StorageLocationSchema, {
|
|
@@ -28317,7 +28617,67 @@ var WebrtcLadderDecisionSchema = object({
|
|
|
28317
28617
|
serverSending: boolean().nullable(),
|
|
28318
28618
|
/** Epoch ms. The overlay prints its age; a decision from 40 minutes ago
|
|
28319
28619
|
* must not read like one from this second. */
|
|
28320
|
-
at: number()
|
|
28620
|
+
at: number(),
|
|
28621
|
+
/** The broker's own cause when it is finer than `cause` can carry, e.g.
|
|
28622
|
+
* `trial-revert` (reported as `stall`/`loss` for older consumers). Optional:
|
|
28623
|
+
* an older server strips it instead of rejecting the answer. */
|
|
28624
|
+
causeDetail: string().optional()
|
|
28625
|
+
});
|
|
28626
|
+
var WebrtcClimbHoldSchema = object({
|
|
28627
|
+
/** `stall-building` — the client receives ≪ what is sent; `delivery` — the
|
|
28628
|
+
* current rung is not landing whole; `no-evidence` — no receiver feedback;
|
|
28629
|
+
* `warming` — healthy, accumulating the streak; `cooldown` — too soon after
|
|
28630
|
+
* a change; `capacity` — a MEASURED probe below the next rung's bar;
|
|
28631
|
+
* `try-unclean` — no capacity evidence, and the path is not clean enough to
|
|
28632
|
+
* try; `try-backoff` — a try reverted, waiting out its backoff; `trial` —
|
|
28633
|
+
* this rung IS a try, reverting if it does not land; `suspended` —
|
|
28634
|
+
* recorded playback on the track. */
|
|
28635
|
+
code: string(),
|
|
28636
|
+
/** The rung a climb would go to. */
|
|
28637
|
+
nextTier: CamProfileSchema,
|
|
28638
|
+
/** Bytes received ÷ bytes sent over the delivery window (≥ one GOP). */
|
|
28639
|
+
deliveryRatio: number().nullable(),
|
|
28640
|
+
deliveryWindowMs: number().nullable(),
|
|
28641
|
+
/** The ratio a climb requires. */
|
|
28642
|
+
climbDeliveryRatio: number(),
|
|
28643
|
+
/** The receiver's bandwidth estimate (REMB), kbps. Capped by what is sent. */
|
|
28644
|
+
capacityKbps: number().nullable(),
|
|
28645
|
+
/** The viewer's downlink probe for this session, kbps. */
|
|
28646
|
+
probeKbps: number().nullable(),
|
|
28647
|
+
/** The next rung's measured bitrate, kbps. */
|
|
28648
|
+
nextTierKbps: number().nullable(),
|
|
28649
|
+
capacityMargin: number(),
|
|
28650
|
+
/** The capacity a climb to `nextTier` needs, kbps (bitrate × margin, or the
|
|
28651
|
+
* client ladder threshold when the rung has measured nothing). */
|
|
28652
|
+
neededKbps: number().nullable(),
|
|
28653
|
+
/** For `try-unclean`: which clean-path condition failed (a `WebrtcTryBlocker`,
|
|
28654
|
+
* carried as a string for the same reason as `code`). */
|
|
28655
|
+
tryBlockedBy: string().nullable(),
|
|
28656
|
+
/** The delivery ratio and the loss ratio a try requires / must stay under.
|
|
28657
|
+
* Optional, like every field added to this schema after it first shipped:
|
|
28658
|
+
* the router validates output, so a REQUIRED new field makes a newer server
|
|
28659
|
+
* reject an older broker's whole answer (review m1). */
|
|
28660
|
+
tryDeliveryRatio: number().optional(),
|
|
28661
|
+
tryMaxLossRatio: number().optional(),
|
|
28662
|
+
/** For `try-backoff`: time until the next try, ms. */
|
|
28663
|
+
retryInMs: number().nullable(),
|
|
28664
|
+
/** The last try that reverted in this viewer session. */
|
|
28665
|
+
lastRevert: object({
|
|
28666
|
+
tier: CamProfileSchema,
|
|
28667
|
+
deliveryRatio: number().nullable(),
|
|
28668
|
+
stalled: boolean(),
|
|
28669
|
+
at: number()
|
|
28670
|
+
}).nullable(),
|
|
28671
|
+
/** For `trial`: how long this rung has been on trial, and for how long it must hold. */
|
|
28672
|
+
trialForMs: number().nullable(),
|
|
28673
|
+
trialMs: number().nullable(),
|
|
28674
|
+
healthyForMs: number().nullable(),
|
|
28675
|
+
requiredHealthyMs: number().nullable(),
|
|
28676
|
+
/** Epoch ms this hold's code began. */
|
|
28677
|
+
since: number(),
|
|
28678
|
+
/** The same one-line account the broker logs, e.g.
|
|
28679
|
+
* `held: delivery 0.97 over 4.0s ok, REMB 480 kbps < mid 1800 kbps × 1.2`. */
|
|
28680
|
+
summary: string()
|
|
28321
28681
|
});
|
|
28322
28682
|
/** Per-tier count of MEASURED downgrades this viewer session has suffered. */
|
|
28323
28683
|
var WebrtcTierFailureSchema = object({
|
|
@@ -28381,7 +28741,12 @@ var WebrtcSessionDebugSchema = object({
|
|
|
28381
28741
|
tierFailures: array(WebrtcTierFailureSchema),
|
|
28382
28742
|
/** Successful promotions in this viewer session (drives the progressive
|
|
28383
28743
|
* healthy timer). Null when no ladder is running. */
|
|
28384
|
-
upgradeCount: number().nullable()
|
|
28744
|
+
upgradeCount: number().nullable(),
|
|
28745
|
+
/** Why the ladder is not climbing right now. Null when no ladder runs, it
|
|
28746
|
+
* is at the top rung, or it just moved. Optional because this output is
|
|
28747
|
+
* validated by the router: a server carrying this schema must still accept
|
|
28748
|
+
* the answer of a stream-broker deployed before the field existed. */
|
|
28749
|
+
climbHold: WebrtcClimbHoldSchema.nullable().optional()
|
|
28385
28750
|
});
|
|
28386
28751
|
/**
|
|
28387
28752
|
* WebRTC session — device-scoped facade over the system `webrtc` cap.
|
|
@@ -32262,6 +32627,11 @@ var ClientNetworkStatsSchema = object({
|
|
|
32262
32627
|
jitterMs: number(),
|
|
32263
32628
|
estimatedBandwidthKbps: number(),
|
|
32264
32629
|
packetLossPercent: number().min(0).max(100),
|
|
32630
|
+
/** The viewer's latest `/adaptive-probe` reading, Mbps — whatever it read
|
|
32631
|
+
* (D635 I4). Absent when it never probed or the probe failed (unknown). */
|
|
32632
|
+
downlinkMbps: number().optional(),
|
|
32633
|
+
/** Age of that reading when this report was sent, ms. */
|
|
32634
|
+
downlinkAgeMs: number().optional(),
|
|
32265
32635
|
lastUpdated: number()
|
|
32266
32636
|
});
|
|
32267
32637
|
var DeviceNetworkStatsSchema = object({
|
|
@@ -32274,7 +32644,11 @@ method(object({ deviceId: number() }), DeviceNetworkStatsSchema.nullable()), met
|
|
|
32274
32644
|
rttMs: number().min(0).max(6e4),
|
|
32275
32645
|
jitterMs: number().min(0).max(1e4),
|
|
32276
32646
|
estimatedBandwidthKbps: number().min(0).max(1e6),
|
|
32277
|
-
packetLossPercent: number().min(0).max(100)
|
|
32647
|
+
packetLossPercent: number().min(0).max(100),
|
|
32648
|
+
/** Latest downlink probe, Mbps, whatever it read; absent = never / failed. */
|
|
32649
|
+
downlinkMbps: number().min(0).max(1e5).optional(),
|
|
32650
|
+
/** Age of that probe when this report is sent, ms. */
|
|
32651
|
+
downlinkAgeMs: number().min(0).max(864e5).optional()
|
|
32278
32652
|
}), _void(), { kind: "mutation" });
|
|
32279
32653
|
/**
|
|
32280
32654
|
* nodes — system-scoped singleton capability for cluster topology
|
|
@@ -40535,6 +40909,12 @@ Object.freeze({
|
|
|
40535
40909
|
addonId: null,
|
|
40536
40910
|
access: "view"
|
|
40537
40911
|
},
|
|
40912
|
+
"deviceManager.listDeviceIdsByCaps": {
|
|
40913
|
+
capName: "device-manager",
|
|
40914
|
+
capScope: "system",
|
|
40915
|
+
addonId: null,
|
|
40916
|
+
access: "view"
|
|
40917
|
+
},
|
|
40538
40918
|
"deviceManager.listLocationDescriptions": {
|
|
40539
40919
|
capName: "device-manager",
|
|
40540
40920
|
capScope: "system",
|
|
@@ -42341,6 +42721,12 @@ Object.freeze({
|
|
|
42341
42721
|
addonId: null,
|
|
42342
42722
|
access: "view"
|
|
42343
42723
|
},
|
|
42724
|
+
"notificationRules.getTemplateCatalog": {
|
|
42725
|
+
capName: "notification-rules",
|
|
42726
|
+
capScope: "system",
|
|
42727
|
+
addonId: null,
|
|
42728
|
+
access: "view"
|
|
42729
|
+
},
|
|
42344
42730
|
"notificationRules.listDeviceMutes": {
|
|
42345
42731
|
capName: "notification-rules",
|
|
42346
42732
|
capScope: "system",
|
|
@@ -42359,6 +42745,12 @@ Object.freeze({
|
|
|
42359
42745
|
addonId: null,
|
|
42360
42746
|
access: "view"
|
|
42361
42747
|
},
|
|
42748
|
+
"notificationRules.previewTemplate": {
|
|
42749
|
+
capName: "notification-rules",
|
|
42750
|
+
capScope: "system",
|
|
42751
|
+
addonId: null,
|
|
42752
|
+
access: "view"
|
|
42753
|
+
},
|
|
42362
42754
|
"notificationRules.resolveArtifactUrl": {
|
|
42363
42755
|
capName: "notification-rules",
|
|
42364
42756
|
capScope: "system",
|
|
@@ -47976,6 +48368,41 @@ var NC_AUDIO_DEFAULTS = {
|
|
|
47976
48368
|
};
|
|
47977
48369
|
new Set(["devices", "classes"]);
|
|
47978
48370
|
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
48371
|
+
var RULE_BODY_ONLY = ["body"];
|
|
48372
|
+
var RULE_TEXT = ["title", "body"];
|
|
48373
|
+
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
48374
|
+
var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
|
|
48375
|
+
var UPDATES = [
|
|
48376
|
+
"addon-update-available",
|
|
48377
|
+
"server-update-available",
|
|
48378
|
+
"wrapper-update-available"
|
|
48379
|
+
];
|
|
48380
|
+
var PACKAGE_UPDATES = ["addon-update-available", "server-update-available"];
|
|
48381
|
+
var ALARM = [
|
|
48382
|
+
"alarm-triggered",
|
|
48383
|
+
"alarm-armed",
|
|
48384
|
+
"alarm-disarmed",
|
|
48385
|
+
"alarm-arming",
|
|
48386
|
+
"alarm-arm-refused",
|
|
48387
|
+
"alarm-pending",
|
|
48388
|
+
"alarm-rearmed",
|
|
48389
|
+
"alarm-sensor-bypass",
|
|
48390
|
+
"alarm-check-failed"
|
|
48391
|
+
];
|
|
48392
|
+
var COMBINED_ALARM = ["alarm-triggered"];
|
|
48393
|
+
var DEVICE_EVENTS = [
|
|
48394
|
+
"device-online",
|
|
48395
|
+
"device-offline",
|
|
48396
|
+
"device-disabled",
|
|
48397
|
+
"device-enabled",
|
|
48398
|
+
...BATTERY,
|
|
48399
|
+
...CONSUMABLE,
|
|
48400
|
+
"stream-online",
|
|
48401
|
+
"stream-offline",
|
|
48402
|
+
"detection-blind",
|
|
48403
|
+
...ALARM
|
|
48404
|
+
];
|
|
48405
|
+
[...DEVICE_EVENTS], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_BODY_ONLY], [...RULE_TEXT], [...RULE_TEXT], [...DEVICE_EVENTS], [...RULE_TEXT], [...DEVICE_EVENTS], [...RULE_TEXT], [...BATTERY, ...CONSUMABLE], [...RULE_TEXT], [...CONSUMABLE], [...RULE_TEXT], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT];
|
|
47979
48406
|
/**
|
|
47980
48407
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
47981
48408
|
*
|