@camstack/addon-provider-homeassistant 1.2.167 → 1.2.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +66 -9
- package/dist/addon.mjs +66 -9
- package/dist/{dist-DvW5q9f8.js → dist-C6CIOXDB.js} +706 -266
- package/dist/{dist-BY4jiu_O.mjs → dist-DgmndKq0.mjs} +706 -266
- package/dist/ha-export/ha-export.addon.js +29 -1
- package/dist/ha-export/ha-export.addon.mjs +6 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../types/dist/event-category-
|
|
1
|
+
//#region ../types/dist/event-category-C4hVnRo8.mjs
|
|
2
2
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
3
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4
4
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -217,7 +217,17 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
217
217
|
EventCategory["RecordingStopped"] = "recording.stopped";
|
|
218
218
|
EventCategory["RecordingError"] = "recording.error";
|
|
219
219
|
EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
|
|
220
|
+
/** Recording enabled but no segment finalized for the NC stall window. */
|
|
221
|
+
EventCategory["RecordingHealthStalled"] = "recording.health.stalled";
|
|
222
|
+
/** Recovery from {@link RecordingHealthStalled}. */
|
|
223
|
+
EventCategory["RecordingHealthOk"] = "recording.health.ok";
|
|
220
224
|
EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
|
|
225
|
+
/** Free space on a storage location crossed the warn bar. */
|
|
226
|
+
EventCategory["StorageLocationLow"] = "storage.location.low";
|
|
227
|
+
/** Free space at/under the critical bar, or capacity probe failed (`null`). */
|
|
228
|
+
EventCategory["StorageLocationCritical"] = "storage.location.critical";
|
|
229
|
+
/** Recovery from low/critical on a storage location. */
|
|
230
|
+
EventCategory["StorageLocationOk"] = "storage.location.ok";
|
|
221
231
|
EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
|
|
222
232
|
EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
|
|
223
233
|
EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
|
|
@@ -5376,7 +5386,7 @@ var ZodIssueCode = {
|
|
|
5376
5386
|
var ZodFirstPartyTypeKind;
|
|
5377
5387
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5378
5388
|
//#endregion
|
|
5379
|
-
//#region ../types/dist/sleep-
|
|
5389
|
+
//#region ../types/dist/sleep-BBF1iXUi.mjs
|
|
5380
5390
|
/**
|
|
5381
5391
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5382
5392
|
* window to float samples (D455).
|
|
@@ -7978,6 +7988,21 @@ var ProfileRtspEntrySchema = object({
|
|
|
7978
7988
|
resolution: CamStreamResolutionSchema.optional()
|
|
7979
7989
|
});
|
|
7980
7990
|
/**
|
|
7991
|
+
* The model weight formats a catalog entry can ship. Schema-free on purpose:
|
|
7992
|
+
* `types/models.ts` builds Zod schemas from it, but a runner-closure consumer
|
|
7993
|
+
* (the model downloader in `@camstack/system`) needs only the list and must
|
|
7994
|
+
* reach it through `@camstack/types/addon` without building the cap schema
|
|
7995
|
+
* graph (D28).
|
|
7996
|
+
*/
|
|
7997
|
+
var MODEL_FORMATS = [
|
|
7998
|
+
"onnx",
|
|
7999
|
+
"coreml",
|
|
8000
|
+
"openvino",
|
|
8001
|
+
"tflite",
|
|
8002
|
+
"pt",
|
|
8003
|
+
"gguf"
|
|
8004
|
+
];
|
|
8005
|
+
/**
|
|
7981
8006
|
* Per-call node pinning for `ctx.api` capability calls.
|
|
7982
8007
|
*
|
|
7983
8008
|
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
@@ -8586,7 +8611,7 @@ function errMsg(err) {
|
|
|
8586
8611
|
return String(err);
|
|
8587
8612
|
}
|
|
8588
8613
|
//#endregion
|
|
8589
|
-
//#region ../types/dist/composition-
|
|
8614
|
+
//#region ../types/dist/composition-C-WpVYTX.mjs
|
|
8590
8615
|
/**
|
|
8591
8616
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8592
8617
|
*
|
|
@@ -8638,7 +8663,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
|
|
|
8638
8663
|
function portable(target) {
|
|
8639
8664
|
return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
|
|
8640
8665
|
}
|
|
8641
|
-
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64")
|
|
8666
|
+
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
|
|
8642
8667
|
/**
|
|
8643
8668
|
* THE table "which boolean of this device type counts as HIGH", and the
|
|
8644
8669
|
* pure evaluator of its EDGE.
|
|
@@ -10357,6 +10382,15 @@ discriminatedUnion("type", [
|
|
|
10357
10382
|
message: string()
|
|
10358
10383
|
})
|
|
10359
10384
|
]);
|
|
10385
|
+
/** Every status, in the order a summary lists them. */
|
|
10386
|
+
var RETRAIN_REVIEW_STATUSES = [
|
|
10387
|
+
"unchanged",
|
|
10388
|
+
"adjusted",
|
|
10389
|
+
"reclassified",
|
|
10390
|
+
"added",
|
|
10391
|
+
"removed",
|
|
10392
|
+
"model-error"
|
|
10393
|
+
];
|
|
10360
10394
|
/**
|
|
10361
10395
|
* What the gate decided about a birth, from the CALLER's point of view.
|
|
10362
10396
|
*
|
|
@@ -11974,14 +12008,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
|
|
|
11974
12008
|
...CROP_SUPPLY_STEP_IDS,
|
|
11975
12009
|
...MASK_SUPPLY_STEP_IDS
|
|
11976
12010
|
];
|
|
11977
|
-
var MODEL_FORMATS = [
|
|
11978
|
-
"onnx",
|
|
11979
|
-
"coreml",
|
|
11980
|
-
"openvino",
|
|
11981
|
-
"tflite",
|
|
11982
|
-
"pt",
|
|
11983
|
-
"gguf"
|
|
11984
|
-
];
|
|
11985
12011
|
/**
|
|
11986
12012
|
* Multi-file format payload.
|
|
11987
12013
|
*
|
|
@@ -13278,6 +13304,329 @@ method(object({
|
|
|
13278
13304
|
password: string()
|
|
13279
13305
|
}), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
|
|
13280
13306
|
/**
|
|
13307
|
+
* Query filter for settings-store collections.
|
|
13308
|
+
*/
|
|
13309
|
+
var QueryFilterSchema = object({
|
|
13310
|
+
where: record(string(), unknown()).optional(),
|
|
13311
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
13312
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
13313
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
13314
|
+
whereNot: record(string(), unknown()).optional(),
|
|
13315
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
13316
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
13317
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
13318
|
+
orderBy: object({
|
|
13319
|
+
field: string(),
|
|
13320
|
+
direction: _enum(["asc", "desc"])
|
|
13321
|
+
}).optional(),
|
|
13322
|
+
limit: number().optional(),
|
|
13323
|
+
offset: number().optional()
|
|
13324
|
+
});
|
|
13325
|
+
/**
|
|
13326
|
+
* The predicate half of a filter, for BULK MUTATIONS.
|
|
13327
|
+
*
|
|
13328
|
+
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
13329
|
+
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
13330
|
+
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
13331
|
+
* only so the shape stays composable — the implementation REJECTS a filter
|
|
13332
|
+
* that compiles to no predicate, because that is the whole collection.
|
|
13333
|
+
*/
|
|
13334
|
+
var MutationFilterSchema = object({
|
|
13335
|
+
where: record(string(), unknown()).optional(),
|
|
13336
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
13337
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
13338
|
+
whereNot: record(string(), unknown()).optional(),
|
|
13339
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
13340
|
+
});
|
|
13341
|
+
/**
|
|
13342
|
+
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
13343
|
+
*
|
|
13344
|
+
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
13345
|
+
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
13346
|
+
* a `Record<column, op>` shape could not express.
|
|
13347
|
+
*/
|
|
13348
|
+
var AggregateFieldSchema = object({
|
|
13349
|
+
/** Result key. */
|
|
13350
|
+
as: string().min(1),
|
|
13351
|
+
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
13352
|
+
field: string().min(1),
|
|
13353
|
+
op: _enum([
|
|
13354
|
+
"sum",
|
|
13355
|
+
"min",
|
|
13356
|
+
"max"
|
|
13357
|
+
])
|
|
13358
|
+
});
|
|
13359
|
+
/**
|
|
13360
|
+
* `COUNT(*)` plus one number per requested field.
|
|
13361
|
+
*
|
|
13362
|
+
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
13363
|
+
* that really is 0 are different facts, and an accounting caller that renders
|
|
13364
|
+
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
13365
|
+
*/
|
|
13366
|
+
var AggregateResultSchema = object({
|
|
13367
|
+
count: number().int(),
|
|
13368
|
+
values: record(string(), number().nullable())
|
|
13369
|
+
});
|
|
13370
|
+
/** A single stored record: `{ id, data }`. */
|
|
13371
|
+
var SettingsRecordSchema = object({
|
|
13372
|
+
id: string(),
|
|
13373
|
+
data: record(string(), unknown())
|
|
13374
|
+
});
|
|
13375
|
+
/**
|
|
13376
|
+
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
13377
|
+
* optional.
|
|
13378
|
+
*
|
|
13379
|
+
* A separate schema rather than loosening the shared one: every other method
|
|
13380
|
+
* on this cap addresses a row BY its id, and making that field optional
|
|
13381
|
+
* everywhere would turn a forgotten key into a silently generated one on
|
|
13382
|
+
* `update` and `delete` as well.
|
|
13383
|
+
*/
|
|
13384
|
+
var BulkRecordSchema = object({
|
|
13385
|
+
id: string().optional(),
|
|
13386
|
+
data: record(string(), unknown())
|
|
13387
|
+
});
|
|
13388
|
+
/**
|
|
13389
|
+
* The database FILES one `sqlite-settings` engine process owns (D851).
|
|
13390
|
+
* Closed on purpose: a file is a thing the engine opens, backs up and gives a
|
|
13391
|
+
* serving thread, so a new one is a code change, never a string a caller
|
|
13392
|
+
* invents. `settings` is `camstack.db` and the default for every collection
|
|
13393
|
+
* that names no file.
|
|
13394
|
+
*/
|
|
13395
|
+
var DataStoreDatabaseSchema = _enum([
|
|
13396
|
+
"settings",
|
|
13397
|
+
"events",
|
|
13398
|
+
"history"
|
|
13399
|
+
]);
|
|
13400
|
+
DataStoreDatabaseSchema.options;
|
|
13401
|
+
/**
|
|
13402
|
+
* One write inside a {@link settingsStoreCapability.methods.transact} call.
|
|
13403
|
+
* The three that a "replace this set, bump that revision" write needs, plus
|
|
13404
|
+
* the batched upsert a rollup writer needs.
|
|
13405
|
+
*/
|
|
13406
|
+
var TransactOpSchema = discriminatedUnion("op", [
|
|
13407
|
+
object({
|
|
13408
|
+
op: literal("deleteWhere"),
|
|
13409
|
+
collection: string(),
|
|
13410
|
+
filter: MutationFilterSchema
|
|
13411
|
+
}),
|
|
13412
|
+
object({
|
|
13413
|
+
op: literal("insertMany"),
|
|
13414
|
+
collection: string(),
|
|
13415
|
+
records: array(BulkRecordSchema).readonly()
|
|
13416
|
+
}),
|
|
13417
|
+
object({
|
|
13418
|
+
op: literal("update"),
|
|
13419
|
+
collection: string(),
|
|
13420
|
+
id: string(),
|
|
13421
|
+
data: record(string(), unknown())
|
|
13422
|
+
}),
|
|
13423
|
+
object({
|
|
13424
|
+
op: literal("upsertMany"),
|
|
13425
|
+
collection: string(),
|
|
13426
|
+
conflict: array(string()).readonly(),
|
|
13427
|
+
records: array(BulkRecordSchema).readonly()
|
|
13428
|
+
})
|
|
13429
|
+
]);
|
|
13430
|
+
/**
|
|
13431
|
+
* The precondition of a transaction: the row `key` of `collection` must hold
|
|
13432
|
+
* `equals` in `column`, read INSIDE the transaction.
|
|
13433
|
+
*/
|
|
13434
|
+
var TransactGuardSchema = object({
|
|
13435
|
+
collection: string(),
|
|
13436
|
+
key: string(),
|
|
13437
|
+
column: string(),
|
|
13438
|
+
equals: unknown()
|
|
13439
|
+
});
|
|
13440
|
+
/**
|
|
13441
|
+
* Column declaration for a structured (SQL-backed) collection.
|
|
13442
|
+
*
|
|
13443
|
+
* Logical types — the backend translates each to the matching SQLite
|
|
13444
|
+
* storage class and handles per-type marshaling:
|
|
13445
|
+
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
13446
|
+
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
13447
|
+
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
13448
|
+
*/
|
|
13449
|
+
var CollectionColumnSchema = object({
|
|
13450
|
+
name: string(),
|
|
13451
|
+
type: _enum([
|
|
13452
|
+
"TEXT",
|
|
13453
|
+
"INTEGER",
|
|
13454
|
+
"REAL",
|
|
13455
|
+
"JSON",
|
|
13456
|
+
"BOOLEAN"
|
|
13457
|
+
]),
|
|
13458
|
+
primaryKey: boolean().optional(),
|
|
13459
|
+
notNull: boolean().optional(),
|
|
13460
|
+
unique: boolean().optional(),
|
|
13461
|
+
/**
|
|
13462
|
+
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
13463
|
+
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
13464
|
+
* collection surface simply cannot express their existing tables — which is
|
|
13465
|
+
* why they were still on the uncapped `table*` API.
|
|
13466
|
+
*/
|
|
13467
|
+
defaultValue: union([
|
|
13468
|
+
string(),
|
|
13469
|
+
number(),
|
|
13470
|
+
boolean()
|
|
13471
|
+
]).optional()
|
|
13472
|
+
});
|
|
13473
|
+
var CollectionIndexSchema = object({
|
|
13474
|
+
name: string(),
|
|
13475
|
+
columns: array(string()).readonly(),
|
|
13476
|
+
unique: boolean().optional()
|
|
13477
|
+
});
|
|
13478
|
+
/**
|
|
13479
|
+
* The input of `declareCollection` — ONE schema for the door and for the
|
|
13480
|
+
* engine behind it, so the two surfaces cannot drift (the dispatcher forwards
|
|
13481
|
+
* the payload untouched).
|
|
13482
|
+
*
|
|
13483
|
+
* - `database` — the file the collection lives in (D851). Absent means
|
|
13484
|
+
* `settings`. A declaration naming a file other than the one the table is
|
|
13485
|
+
* already in is REFUSED by the engine, never moved.
|
|
13486
|
+
* - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
|
|
13487
|
+
* as `primaryKey: true` on that column. A composite-keyed collection has no
|
|
13488
|
+
* `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
|
|
13489
|
+
* with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
|
|
13490
|
+
* address one row by id are refused.
|
|
13491
|
+
* - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
|
|
13492
|
+
*/
|
|
13493
|
+
var DeclareCollectionInputSchema = object({
|
|
13494
|
+
namespace: string().optional(),
|
|
13495
|
+
collection: string(),
|
|
13496
|
+
columns: array(CollectionColumnSchema).readonly(),
|
|
13497
|
+
indexes: array(CollectionIndexSchema).readonly().optional(),
|
|
13498
|
+
database: DataStoreDatabaseSchema.optional(),
|
|
13499
|
+
primaryKey: array(string()).readonly().optional(),
|
|
13500
|
+
withoutRowid: boolean().optional()
|
|
13501
|
+
});
|
|
13502
|
+
method(object({
|
|
13503
|
+
namespace: string().optional(),
|
|
13504
|
+
collection: string(),
|
|
13505
|
+
key: string()
|
|
13506
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
13507
|
+
namespace: string().optional(),
|
|
13508
|
+
collection: string(),
|
|
13509
|
+
key: string(),
|
|
13510
|
+
value: unknown()
|
|
13511
|
+
}), _void(), {
|
|
13512
|
+
kind: "mutation",
|
|
13513
|
+
auth: "admin"
|
|
13514
|
+
}), method(object({
|
|
13515
|
+
namespace: string().optional(),
|
|
13516
|
+
collection: string(),
|
|
13517
|
+
filter: QueryFilterSchema.optional(),
|
|
13518
|
+
columns: array(string()).readonly().optional()
|
|
13519
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
13520
|
+
namespace: string().optional(),
|
|
13521
|
+
collection: string(),
|
|
13522
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
13523
|
+
* index on the collection. Never empty. */
|
|
13524
|
+
conflict: array(string()).readonly(),
|
|
13525
|
+
record: BulkRecordSchema
|
|
13526
|
+
}), object({
|
|
13527
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
13528
|
+
* row's own id on an update. */
|
|
13529
|
+
id: union([string(), number()]) }), {
|
|
13530
|
+
kind: "mutation",
|
|
13531
|
+
auth: "admin"
|
|
13532
|
+
}), method(object({
|
|
13533
|
+
namespace: string().optional(),
|
|
13534
|
+
collection: string(),
|
|
13535
|
+
conflict: array(string()).readonly(),
|
|
13536
|
+
records: array(BulkRecordSchema).readonly()
|
|
13537
|
+
}), object({ upserted: number().int() }), {
|
|
13538
|
+
kind: "mutation",
|
|
13539
|
+
auth: "admin"
|
|
13540
|
+
}), method(object({
|
|
13541
|
+
namespace: string().optional(),
|
|
13542
|
+
collection: string(),
|
|
13543
|
+
record: object({
|
|
13544
|
+
id: string().optional(),
|
|
13545
|
+
data: record(string(), unknown())
|
|
13546
|
+
})
|
|
13547
|
+
}), object({
|
|
13548
|
+
/**
|
|
13549
|
+
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
13550
|
+
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
13551
|
+
* primary key — which is the only place an auto key is knowable.
|
|
13552
|
+
*/
|
|
13553
|
+
id: union([string(), number()]) }), {
|
|
13554
|
+
kind: "mutation",
|
|
13555
|
+
auth: "admin"
|
|
13556
|
+
}), method(object({
|
|
13557
|
+
namespace: string().optional(),
|
|
13558
|
+
collection: string(),
|
|
13559
|
+
records: array(BulkRecordSchema).readonly()
|
|
13560
|
+
}), object({ inserted: number().int() }), {
|
|
13561
|
+
kind: "mutation",
|
|
13562
|
+
auth: "admin"
|
|
13563
|
+
}), method(object({
|
|
13564
|
+
namespace: string().optional(),
|
|
13565
|
+
guard: TransactGuardSchema.optional(),
|
|
13566
|
+
ops: array(TransactOpSchema).readonly()
|
|
13567
|
+
}), object({
|
|
13568
|
+
applied: boolean(),
|
|
13569
|
+
current: unknown().optional()
|
|
13570
|
+
}), {
|
|
13571
|
+
kind: "mutation",
|
|
13572
|
+
auth: "admin"
|
|
13573
|
+
}), method(object({
|
|
13574
|
+
namespace: string().optional(),
|
|
13575
|
+
collection: string(),
|
|
13576
|
+
id: string(),
|
|
13577
|
+
data: record(string(), unknown())
|
|
13578
|
+
}), _void(), {
|
|
13579
|
+
kind: "mutation",
|
|
13580
|
+
auth: "admin"
|
|
13581
|
+
}), method(object({
|
|
13582
|
+
namespace: string().optional(),
|
|
13583
|
+
collection: string(),
|
|
13584
|
+
key: string()
|
|
13585
|
+
}), _void(), {
|
|
13586
|
+
kind: "mutation",
|
|
13587
|
+
auth: "admin"
|
|
13588
|
+
}), method(object({
|
|
13589
|
+
namespace: string().optional(),
|
|
13590
|
+
collection: string(),
|
|
13591
|
+
filter: MutationFilterSchema
|
|
13592
|
+
}), object({ deleted: number().int() }), {
|
|
13593
|
+
kind: "mutation",
|
|
13594
|
+
auth: "admin"
|
|
13595
|
+
}), method(object({
|
|
13596
|
+
namespace: string().optional(),
|
|
13597
|
+
collection: string(),
|
|
13598
|
+
filter: MutationFilterSchema,
|
|
13599
|
+
data: record(string(), unknown())
|
|
13600
|
+
}), object({ updated: number().int() }), {
|
|
13601
|
+
kind: "mutation",
|
|
13602
|
+
auth: "admin"
|
|
13603
|
+
}), method(object({
|
|
13604
|
+
namespace: string().optional(),
|
|
13605
|
+
collection: string(),
|
|
13606
|
+
filter: QueryFilterSchema.optional()
|
|
13607
|
+
}), number(), { auth: "admin" }), method(object({
|
|
13608
|
+
namespace: string().optional(),
|
|
13609
|
+
collection: string(),
|
|
13610
|
+
fields: array(AggregateFieldSchema).readonly(),
|
|
13611
|
+
filter: QueryFilterSchema.optional()
|
|
13612
|
+
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
13613
|
+
namespace: string().optional(),
|
|
13614
|
+
collection: string(),
|
|
13615
|
+
field: string(),
|
|
13616
|
+
bucketSize: number().int().positive(),
|
|
13617
|
+
origin: number().int(),
|
|
13618
|
+
filter: QueryFilterSchema.optional()
|
|
13619
|
+
}), array(object({
|
|
13620
|
+
bucket: number().int(),
|
|
13621
|
+
count: number().int()
|
|
13622
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
13623
|
+
namespace: string().optional(),
|
|
13624
|
+
collection: string()
|
|
13625
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
13626
|
+
kind: "mutation",
|
|
13627
|
+
auth: "admin"
|
|
13628
|
+
});
|
|
13629
|
+
/**
|
|
13281
13630
|
* How long one snapshot may take end to end: the pinned copy of the whole
|
|
13282
13631
|
* database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
|
|
13283
13632
|
* disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
|
|
@@ -13290,7 +13639,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
|
|
|
13290
13639
|
* database has no sidecars and is just as owned). Paths are absolute on the
|
|
13291
13640
|
* owner's host.
|
|
13292
13641
|
*/
|
|
13293
|
-
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
13642
|
+
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
13643
|
+
/** Which owned file this is — the handle `writeSnapshot` takes. */
|
|
13644
|
+
databaseId: DataStoreDatabaseSchema,
|
|
13645
|
+
livePath: string()
|
|
13646
|
+
})) });
|
|
13294
13647
|
/** One b-tree table of the snapshot and the rows it holds. */
|
|
13295
13648
|
var DatabaseSnapshotTableSchema = object({
|
|
13296
13649
|
name: string(),
|
|
@@ -13323,6 +13676,10 @@ var DatabaseSnapshotResultSchema = object({
|
|
|
13323
13676
|
/** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
|
|
13324
13677
|
takenAt: number()
|
|
13325
13678
|
});
|
|
13679
|
+
/** A snapshot the owner wrote, with the file it belongs to. */
|
|
13680
|
+
var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
|
|
13681
|
+
/** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
|
|
13682
|
+
var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
|
|
13326
13683
|
/**
|
|
13327
13684
|
* A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
|
|
13328
13685
|
* the same facts, with both paths relative to the archive root (the node's
|
|
@@ -13332,9 +13689,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
|
|
|
13332
13689
|
/** Archive-relative path of the live database the archive does NOT carry. */
|
|
13333
13690
|
livePath: string(),
|
|
13334
13691
|
/** Archive-relative path of the verified copy it carries in its place. */
|
|
13335
|
-
snapshotPath: string()
|
|
13692
|
+
snapshotPath: string(),
|
|
13693
|
+
/** Absent on an archive made before several files were owned: that was `settings`. */
|
|
13694
|
+
databaseId: DataStoreDatabaseSchema.optional()
|
|
13336
13695
|
});
|
|
13337
|
-
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(
|
|
13696
|
+
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
|
|
13338
13697
|
kind: "mutation",
|
|
13339
13698
|
auth: "admin",
|
|
13340
13699
|
timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
|
|
@@ -13455,7 +13814,12 @@ var BackupArchiveEntrySchema = object({
|
|
|
13455
13814
|
/** Top-level locations included in the archive (db, addons, tls, …). */
|
|
13456
13815
|
locations: array(string()).readonly(),
|
|
13457
13816
|
/** Present when the archive is encrypted; restore then needs that key. */
|
|
13458
|
-
encryption: BackupArchiveEncryptionSchema.optional()
|
|
13817
|
+
encryption: BackupArchiveEncryptionSchema.optional(),
|
|
13818
|
+
/**
|
|
13819
|
+
* The databases the run asked to carry (its retention class). Absent on an
|
|
13820
|
+
* archive made before several files were owned: that was `['settings']`.
|
|
13821
|
+
*/
|
|
13822
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
13459
13823
|
});
|
|
13460
13824
|
var BackupEntrySchema = object({
|
|
13461
13825
|
id: string(),
|
|
@@ -13489,7 +13853,12 @@ var ArchiveManifestSchema = object({
|
|
|
13489
13853
|
* Live SQLite databases this archive carries as their OWNER's verified
|
|
13490
13854
|
* snapshot instead of as files (D693). Absent on archives made before.
|
|
13491
13855
|
*/
|
|
13492
|
-
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
|
|
13856
|
+
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
|
|
13857
|
+
/**
|
|
13858
|
+
* Owned database files the run did NOT carry (not selected): left out of the
|
|
13859
|
+
* tar and the entry list alike. Absent when every owned file was carried.
|
|
13860
|
+
*/
|
|
13861
|
+
omittedDatabases: array(DataStoreDatabaseSchema).optional()
|
|
13493
13862
|
});
|
|
13494
13863
|
var LocationStatSchema = object({
|
|
13495
13864
|
name: string(),
|
|
@@ -13611,6 +13980,12 @@ var BackupScheduleSchema = object({
|
|
|
13611
13980
|
/** Optional subset of source locations to include; omitted = all. */
|
|
13612
13981
|
dataSources: array(string()).readonly().optional(),
|
|
13613
13982
|
/**
|
|
13983
|
+
* Which database files this schedule carries. Absent = `['settings']`
|
|
13984
|
+
* (an unstated ask is the minimum, D382). Events and history run weekly,
|
|
13985
|
+
* settings nightly (D852).
|
|
13986
|
+
*/
|
|
13987
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional(),
|
|
13988
|
+
/**
|
|
13614
13989
|
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
13615
13990
|
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
13616
13991
|
* "succeeded" — a run refused by every destination stamps it too.
|
|
@@ -13634,7 +14009,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
13634
14009
|
* retention). Omitted = each destination's own policy
|
|
13635
14010
|
* retention (manual runs).
|
|
13636
14011
|
*/
|
|
13637
|
-
retentionCount: number().int().min(1).max(1e3).optional()
|
|
14012
|
+
retentionCount: number().int().min(1).max(1e3).optional(),
|
|
14013
|
+
/** Database files to carry; omitted = `['settings']`. */
|
|
14014
|
+
databases: array(DataStoreDatabaseSchema).optional()
|
|
13638
14015
|
}).optional(), BackupTriggerResultSchema, {
|
|
13639
14016
|
kind: "mutation",
|
|
13640
14017
|
auth: "admin"
|
|
@@ -13709,14 +14086,18 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
13709
14086
|
ok: boolean(),
|
|
13710
14087
|
error: string().optional(),
|
|
13711
14088
|
nextRuns: array(number()).readonly()
|
|
13712
|
-
})), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
|
|
14089
|
+
})), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(_void(), object({
|
|
14090
|
+
answered: boolean(),
|
|
14091
|
+
databases: array(DataStoreDatabaseSchema).readonly()
|
|
14092
|
+
}), { auth: "admin" }), method(object({
|
|
13713
14093
|
id: string().optional(),
|
|
13714
14094
|
label: string(),
|
|
13715
14095
|
cron: string(),
|
|
13716
14096
|
enabled: boolean(),
|
|
13717
14097
|
locationIds: array(string()).readonly(),
|
|
13718
14098
|
retentionCount: number().int().min(1).max(1e3),
|
|
13719
|
-
dataSources: array(string()).readonly().optional()
|
|
14099
|
+
dataSources: array(string()).readonly().optional(),
|
|
14100
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
13720
14101
|
}), BackupScheduleSchema, {
|
|
13721
14102
|
kind: "mutation",
|
|
13722
14103
|
auth: "admin"
|
|
@@ -13824,7 +14205,14 @@ var BrokerProviderInfoSchema = object({
|
|
|
13824
14205
|
/** Broker kinds this provider can create, with a display label. */
|
|
13825
14206
|
kinds: array(object({
|
|
13826
14207
|
kind: string(),
|
|
13827
|
-
label: string()
|
|
14208
|
+
label: string(),
|
|
14209
|
+
/**
|
|
14210
|
+
* Relative hub path to start an interactive account link (OAuth popup).
|
|
14211
|
+
* May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
|
|
14212
|
+
*/
|
|
14213
|
+
interactiveConnectPath: string().min(1).optional(),
|
|
14214
|
+
/** Relative hub path to disconnect the linked account (same popup pattern). */
|
|
14215
|
+
interactiveDisconnectPath: string().min(1).optional()
|
|
13828
14216
|
}))
|
|
13829
14217
|
});
|
|
13830
14218
|
var ListInputSchema = object({
|
|
@@ -14189,6 +14577,16 @@ var BrokerClientsSchema = object({
|
|
|
14189
14577
|
/** Total encoded + raw-RTP callback subscriber count (sum of `encoded[].length`). */
|
|
14190
14578
|
encodedSubscribers: number()
|
|
14191
14579
|
});
|
|
14580
|
+
/**
|
|
14581
|
+
* How many people are watching one camera LIVE right now — see
|
|
14582
|
+
* `getLiveViewerCounts`. A camera with nobody watching is absent from the list
|
|
14583
|
+
* (so `viewers` is always at least 1): the listing carries the cameras that
|
|
14584
|
+
* have viewers, never a row of zeros.
|
|
14585
|
+
*/
|
|
14586
|
+
var LiveViewerCountSchema = object({
|
|
14587
|
+
deviceId: number().int().nonnegative(),
|
|
14588
|
+
viewers: number().int().positive()
|
|
14589
|
+
});
|
|
14192
14590
|
_enum([
|
|
14193
14591
|
"reconnecting",
|
|
14194
14592
|
"sleeping",
|
|
@@ -14549,7 +14947,7 @@ method(object({
|
|
|
14549
14947
|
}), {
|
|
14550
14948
|
kind: "mutation",
|
|
14551
14949
|
auth: "admin"
|
|
14552
|
-
}), method(object({ brokerId: string() }), BrokerClientsSchema), method(object({
|
|
14950
|
+
}), method(object({ brokerId: string() }), BrokerClientsSchema), method(_void(), array(LiveViewerCountSchema).readonly()), method(object({
|
|
14553
14951
|
brokerId: string(),
|
|
14554
14952
|
channel: _enum(["rtsp", "audio"]),
|
|
14555
14953
|
handle: string()
|
|
@@ -15517,240 +15915,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
|
|
|
15517
15915
|
timeoutMs: 30 * 6e4
|
|
15518
15916
|
});
|
|
15519
15917
|
/**
|
|
15520
|
-
* Query filter for settings-store collections.
|
|
15521
|
-
*/
|
|
15522
|
-
var QueryFilterSchema = object({
|
|
15523
|
-
where: record(string(), unknown()).optional(),
|
|
15524
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
15525
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
15526
|
-
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
15527
|
-
whereNot: record(string(), unknown()).optional(),
|
|
15528
|
-
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
15529
|
-
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
15530
|
-
whereNotIn: record(string(), array(unknown())).optional(),
|
|
15531
|
-
orderBy: object({
|
|
15532
|
-
field: string(),
|
|
15533
|
-
direction: _enum(["asc", "desc"])
|
|
15534
|
-
}).optional(),
|
|
15535
|
-
limit: number().optional(),
|
|
15536
|
-
offset: number().optional()
|
|
15537
|
-
});
|
|
15538
|
-
/**
|
|
15539
|
-
* The predicate half of a filter, for BULK MUTATIONS.
|
|
15540
|
-
*
|
|
15541
|
-
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
15542
|
-
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
15543
|
-
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
15544
|
-
* only so the shape stays composable — the implementation REJECTS a filter
|
|
15545
|
-
* that compiles to no predicate, because that is the whole collection.
|
|
15546
|
-
*/
|
|
15547
|
-
var MutationFilterSchema = object({
|
|
15548
|
-
where: record(string(), unknown()).optional(),
|
|
15549
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
15550
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
15551
|
-
whereNot: record(string(), unknown()).optional(),
|
|
15552
|
-
whereNotIn: record(string(), array(unknown())).optional()
|
|
15553
|
-
});
|
|
15554
|
-
/**
|
|
15555
|
-
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
15556
|
-
*
|
|
15557
|
-
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
15558
|
-
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
15559
|
-
* a `Record<column, op>` shape could not express.
|
|
15560
|
-
*/
|
|
15561
|
-
var AggregateFieldSchema = object({
|
|
15562
|
-
/** Result key. */
|
|
15563
|
-
as: string().min(1),
|
|
15564
|
-
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
15565
|
-
field: string().min(1),
|
|
15566
|
-
op: _enum([
|
|
15567
|
-
"sum",
|
|
15568
|
-
"min",
|
|
15569
|
-
"max"
|
|
15570
|
-
])
|
|
15571
|
-
});
|
|
15572
|
-
/**
|
|
15573
|
-
* `COUNT(*)` plus one number per requested field.
|
|
15574
|
-
*
|
|
15575
|
-
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
15576
|
-
* that really is 0 are different facts, and an accounting caller that renders
|
|
15577
|
-
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
15578
|
-
*/
|
|
15579
|
-
var AggregateResultSchema = object({
|
|
15580
|
-
count: number().int(),
|
|
15581
|
-
values: record(string(), number().nullable())
|
|
15582
|
-
});
|
|
15583
|
-
/** A single stored record: `{ id, data }`. */
|
|
15584
|
-
var SettingsRecordSchema = object({
|
|
15585
|
-
id: string(),
|
|
15586
|
-
data: record(string(), unknown())
|
|
15587
|
-
});
|
|
15588
|
-
/**
|
|
15589
|
-
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
15590
|
-
* optional.
|
|
15591
|
-
*
|
|
15592
|
-
* A separate schema rather than loosening the shared one: every other method
|
|
15593
|
-
* on this cap addresses a row BY its id, and making that field optional
|
|
15594
|
-
* everywhere would turn a forgotten key into a silently generated one on
|
|
15595
|
-
* `update` and `delete` as well.
|
|
15596
|
-
*/
|
|
15597
|
-
var BulkRecordSchema = object({
|
|
15598
|
-
id: string().optional(),
|
|
15599
|
-
data: record(string(), unknown())
|
|
15600
|
-
});
|
|
15601
|
-
/**
|
|
15602
|
-
* Column declaration for a structured (SQL-backed) collection.
|
|
15603
|
-
*
|
|
15604
|
-
* Logical types — the backend translates each to the matching SQLite
|
|
15605
|
-
* storage class and handles per-type marshaling:
|
|
15606
|
-
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
15607
|
-
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
15608
|
-
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
15609
|
-
*/
|
|
15610
|
-
var CollectionColumnSchema = object({
|
|
15611
|
-
name: string(),
|
|
15612
|
-
type: _enum([
|
|
15613
|
-
"TEXT",
|
|
15614
|
-
"INTEGER",
|
|
15615
|
-
"REAL",
|
|
15616
|
-
"JSON",
|
|
15617
|
-
"BOOLEAN"
|
|
15618
|
-
]),
|
|
15619
|
-
primaryKey: boolean().optional(),
|
|
15620
|
-
notNull: boolean().optional(),
|
|
15621
|
-
unique: boolean().optional(),
|
|
15622
|
-
/**
|
|
15623
|
-
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
15624
|
-
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
15625
|
-
* collection surface simply cannot express their existing tables — which is
|
|
15626
|
-
* why they were still on the uncapped `table*` API.
|
|
15627
|
-
*/
|
|
15628
|
-
defaultValue: union([
|
|
15629
|
-
string(),
|
|
15630
|
-
number(),
|
|
15631
|
-
boolean()
|
|
15632
|
-
]).optional()
|
|
15633
|
-
});
|
|
15634
|
-
var CollectionIndexSchema = object({
|
|
15635
|
-
name: string(),
|
|
15636
|
-
columns: array(string()).readonly(),
|
|
15637
|
-
unique: boolean().optional()
|
|
15638
|
-
});
|
|
15639
|
-
method(object({
|
|
15640
|
-
namespace: string().optional(),
|
|
15641
|
-
collection: string(),
|
|
15642
|
-
key: string()
|
|
15643
|
-
}), unknown(), { auth: "admin" }), method(object({
|
|
15644
|
-
namespace: string().optional(),
|
|
15645
|
-
collection: string(),
|
|
15646
|
-
key: string(),
|
|
15647
|
-
value: unknown()
|
|
15648
|
-
}), _void(), {
|
|
15649
|
-
kind: "mutation",
|
|
15650
|
-
auth: "admin"
|
|
15651
|
-
}), method(object({
|
|
15652
|
-
namespace: string().optional(),
|
|
15653
|
-
collection: string(),
|
|
15654
|
-
filter: QueryFilterSchema.optional(),
|
|
15655
|
-
columns: array(string()).readonly().optional()
|
|
15656
|
-
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
15657
|
-
namespace: string().optional(),
|
|
15658
|
-
collection: string(),
|
|
15659
|
-
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
15660
|
-
* index on the collection. Never empty. */
|
|
15661
|
-
conflict: array(string()).readonly(),
|
|
15662
|
-
record: BulkRecordSchema
|
|
15663
|
-
}), object({
|
|
15664
|
-
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
15665
|
-
* row's own id on an update. */
|
|
15666
|
-
id: union([string(), number()]) }), {
|
|
15667
|
-
kind: "mutation",
|
|
15668
|
-
auth: "admin"
|
|
15669
|
-
}), method(object({
|
|
15670
|
-
namespace: string().optional(),
|
|
15671
|
-
collection: string(),
|
|
15672
|
-
record: object({
|
|
15673
|
-
id: string().optional(),
|
|
15674
|
-
data: record(string(), unknown())
|
|
15675
|
-
})
|
|
15676
|
-
}), object({
|
|
15677
|
-
/**
|
|
15678
|
-
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
15679
|
-
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
15680
|
-
* primary key — which is the only place an auto key is knowable.
|
|
15681
|
-
*/
|
|
15682
|
-
id: union([string(), number()]) }), {
|
|
15683
|
-
kind: "mutation",
|
|
15684
|
-
auth: "admin"
|
|
15685
|
-
}), method(object({
|
|
15686
|
-
namespace: string().optional(),
|
|
15687
|
-
collection: string(),
|
|
15688
|
-
records: array(BulkRecordSchema).readonly()
|
|
15689
|
-
}), object({ inserted: number().int() }), {
|
|
15690
|
-
kind: "mutation",
|
|
15691
|
-
auth: "admin"
|
|
15692
|
-
}), method(object({
|
|
15693
|
-
namespace: string().optional(),
|
|
15694
|
-
collection: string(),
|
|
15695
|
-
id: string(),
|
|
15696
|
-
data: record(string(), unknown())
|
|
15697
|
-
}), _void(), {
|
|
15698
|
-
kind: "mutation",
|
|
15699
|
-
auth: "admin"
|
|
15700
|
-
}), method(object({
|
|
15701
|
-
namespace: string().optional(),
|
|
15702
|
-
collection: string(),
|
|
15703
|
-
key: string()
|
|
15704
|
-
}), _void(), {
|
|
15705
|
-
kind: "mutation",
|
|
15706
|
-
auth: "admin"
|
|
15707
|
-
}), method(object({
|
|
15708
|
-
namespace: string().optional(),
|
|
15709
|
-
collection: string(),
|
|
15710
|
-
filter: MutationFilterSchema
|
|
15711
|
-
}), object({ deleted: number().int() }), {
|
|
15712
|
-
kind: "mutation",
|
|
15713
|
-
auth: "admin"
|
|
15714
|
-
}), method(object({
|
|
15715
|
-
namespace: string().optional(),
|
|
15716
|
-
collection: string(),
|
|
15717
|
-
filter: MutationFilterSchema,
|
|
15718
|
-
data: record(string(), unknown())
|
|
15719
|
-
}), object({ updated: number().int() }), {
|
|
15720
|
-
kind: "mutation",
|
|
15721
|
-
auth: "admin"
|
|
15722
|
-
}), method(object({
|
|
15723
|
-
namespace: string().optional(),
|
|
15724
|
-
collection: string(),
|
|
15725
|
-
filter: QueryFilterSchema.optional()
|
|
15726
|
-
}), number(), { auth: "admin" }), method(object({
|
|
15727
|
-
namespace: string().optional(),
|
|
15728
|
-
collection: string(),
|
|
15729
|
-
fields: array(AggregateFieldSchema).readonly(),
|
|
15730
|
-
filter: QueryFilterSchema.optional()
|
|
15731
|
-
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
15732
|
-
namespace: string().optional(),
|
|
15733
|
-
collection: string(),
|
|
15734
|
-
field: string(),
|
|
15735
|
-
bucketSize: number().int().positive(),
|
|
15736
|
-
origin: number().int(),
|
|
15737
|
-
filter: QueryFilterSchema.optional()
|
|
15738
|
-
}), array(object({
|
|
15739
|
-
bucket: number().int(),
|
|
15740
|
-
count: number().int()
|
|
15741
|
-
})).readonly(), { auth: "admin" }), method(object({
|
|
15742
|
-
namespace: string().optional(),
|
|
15743
|
-
collection: string()
|
|
15744
|
-
}), boolean(), { auth: "admin" }), method(object({
|
|
15745
|
-
namespace: string().optional(),
|
|
15746
|
-
collection: string(),
|
|
15747
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
15748
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15749
|
-
}), _void(), {
|
|
15750
|
-
kind: "mutation",
|
|
15751
|
-
auth: "admin"
|
|
15752
|
-
});
|
|
15753
|
-
/**
|
|
15754
15918
|
* What one engine says about itself. The orchestrator uses `kind` to pick
|
|
15755
15919
|
* a registrant for a collection; `engineId` is what a log line names when
|
|
15756
15920
|
* a call is routed or refused.
|
|
@@ -15830,6 +15994,14 @@ id: union([string(), number()]) }), {
|
|
|
15830
15994
|
}), object({ id: union([string(), number()]) }), {
|
|
15831
15995
|
kind: "mutation",
|
|
15832
15996
|
auth: "admin"
|
|
15997
|
+
}), method(object({
|
|
15998
|
+
namespace: string().optional(),
|
|
15999
|
+
collection: string(),
|
|
16000
|
+
conflict: array(string()).readonly(),
|
|
16001
|
+
records: array(BulkRecordSchema).readonly()
|
|
16002
|
+
}), object({ upserted: number().int() }), {
|
|
16003
|
+
kind: "mutation",
|
|
16004
|
+
auth: "admin"
|
|
15833
16005
|
}), method(object({
|
|
15834
16006
|
namespace: string().optional(),
|
|
15835
16007
|
collection: string(),
|
|
@@ -15837,6 +16009,16 @@ id: union([string(), number()]) }), {
|
|
|
15837
16009
|
}), object({ inserted: number().int() }), {
|
|
15838
16010
|
kind: "mutation",
|
|
15839
16011
|
auth: "admin"
|
|
16012
|
+
}), method(object({
|
|
16013
|
+
namespace: string().optional(),
|
|
16014
|
+
guard: TransactGuardSchema.optional(),
|
|
16015
|
+
ops: array(TransactOpSchema).readonly()
|
|
16016
|
+
}), object({
|
|
16017
|
+
applied: boolean(),
|
|
16018
|
+
current: unknown().optional()
|
|
16019
|
+
}), {
|
|
16020
|
+
kind: "mutation",
|
|
16021
|
+
auth: "admin"
|
|
15840
16022
|
}), method(object({
|
|
15841
16023
|
namespace: string().optional(),
|
|
15842
16024
|
collection: string(),
|
|
@@ -15889,12 +16071,7 @@ id: union([string(), number()]) }), {
|
|
|
15889
16071
|
})).readonly(), { auth: "admin" }), method(object({
|
|
15890
16072
|
namespace: string().optional(),
|
|
15891
16073
|
collection: string()
|
|
15892
|
-
}), boolean(), { auth: "admin" }), method(
|
|
15893
|
-
namespace: string().optional(),
|
|
15894
|
-
collection: string(),
|
|
15895
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
15896
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15897
|
-
}), _void(), {
|
|
16074
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
15898
16075
|
kind: "mutation",
|
|
15899
16076
|
auth: "admin"
|
|
15900
16077
|
});
|
|
@@ -21070,6 +21247,12 @@ var NcSystemEventKindSchema = _enum([
|
|
|
21070
21247
|
"node-updating",
|
|
21071
21248
|
"node-inference-unavailable",
|
|
21072
21249
|
"detection-blind",
|
|
21250
|
+
"recording-stalled",
|
|
21251
|
+
"recording-healthy",
|
|
21252
|
+
"recording-degraded",
|
|
21253
|
+
"storage-location-low",
|
|
21254
|
+
"storage-location-critical",
|
|
21255
|
+
"storage-location-ok",
|
|
21073
21256
|
"addon-crash-loop",
|
|
21074
21257
|
"addon-update-available",
|
|
21075
21258
|
"server-update-available",
|
|
@@ -24741,6 +24924,58 @@ var RetrainBboxSchema = object({
|
|
|
24741
24924
|
h: number()
|
|
24742
24925
|
});
|
|
24743
24926
|
/**
|
|
24927
|
+
* What a box LOOKED LIKE when it was offered, snapshotted at the moment the
|
|
24928
|
+
* operator accepted it. The saved row keeps only the final rectangle; this is
|
|
24929
|
+
* the other half of the pair, and the pair is what says whether the operator
|
|
24930
|
+
* accepted, nudged, relabelled or replaced a proposal (`retrain-review.ts`).
|
|
24931
|
+
*
|
|
24932
|
+
* `ref` names the proposal inside its frame: `pipeline:<trackId>` for a box the
|
|
24933
|
+
* live pipeline drew, `assist:<n>` for the n-th box of a detector or LLM run,
|
|
24934
|
+
* and anything unique for an operator-drawn box (`operator:<n>`). Re-derived
|
|
24935
|
+
* pipeline boxes carry the same ref every time, which is what lets a dismissal
|
|
24936
|
+
* stay dismissed.
|
|
24937
|
+
*/
|
|
24938
|
+
var RetrainOriginSchema = object({
|
|
24939
|
+
source: RetrainAnnotationSourceSchema,
|
|
24940
|
+
ref: string().min(1),
|
|
24941
|
+
bbox: RetrainBboxSchema,
|
|
24942
|
+
macroClass: RetrainMacroClassSchema,
|
|
24943
|
+
label: string().optional(),
|
|
24944
|
+
score: number().optional(),
|
|
24945
|
+
modelId: string().optional()
|
|
24946
|
+
});
|
|
24947
|
+
/**
|
|
24948
|
+
* A proposal the operator deleted. Durable on the frame, so a deleted pipeline
|
|
24949
|
+
* box does not come back as a draft every time the frame is reopened, and so
|
|
24950
|
+
* the deletion itself is a recorded fact rather than an absence.
|
|
24951
|
+
*/
|
|
24952
|
+
var RetrainDismissedSchema = object({
|
|
24953
|
+
ref: string().min(1),
|
|
24954
|
+
snapshot: RetrainOriginSchema
|
|
24955
|
+
});
|
|
24956
|
+
/** What the operator did with a proposal (see `retrain-review.ts`). */
|
|
24957
|
+
var RetrainReviewStatusSchema = _enum(RETRAIN_REVIEW_STATUSES);
|
|
24958
|
+
var RetrainFrameReviewSchema = object({
|
|
24959
|
+
boxes: array(object({
|
|
24960
|
+
ref: string(),
|
|
24961
|
+
savedId: string().optional(),
|
|
24962
|
+
status: RetrainReviewStatusSchema,
|
|
24963
|
+
/** The baseline was re-derived, not snapshotted (a pre-origin row). */
|
|
24964
|
+
approximate: boolean(),
|
|
24965
|
+
origin: RetrainOriginSchema.optional(),
|
|
24966
|
+
/** The class / label the box carries NOW (a removed box: its origin's). Absent on an older hub. */
|
|
24967
|
+
macroClass: RetrainMacroClassSchema.optional(),
|
|
24968
|
+
label: string().optional(),
|
|
24969
|
+
iou: number().optional()
|
|
24970
|
+
})).readonly(),
|
|
24971
|
+
summary: object({
|
|
24972
|
+
counts: record(RetrainReviewStatusSchema, number().int()),
|
|
24973
|
+
total: number().int(),
|
|
24974
|
+
changed: number().int(),
|
|
24975
|
+
approximate: boolean()
|
|
24976
|
+
})
|
|
24977
|
+
});
|
|
24978
|
+
/**
|
|
24744
24979
|
* One annotated subject.
|
|
24745
24980
|
*
|
|
24746
24981
|
* `bbox` is normalised against the full frame, ALWAYS. The per-model shapes
|
|
@@ -24764,6 +24999,9 @@ var RetrainAnnotationSchema = object({
|
|
|
24764
24999
|
/** Which model proposed this box — or, on a `model_error`, drew the phantom. */
|
|
24765
25000
|
assistModelId: string().optional(),
|
|
24766
25001
|
assistScore: number().optional(),
|
|
25002
|
+
/** The proposal this box started from, snapshotted at accept time. `null` on
|
|
25003
|
+
* a row saved before origins existed; absent on a draft nobody snapshotted. */
|
|
25004
|
+
origin: RetrainOriginSchema.nullable().optional(),
|
|
24767
25005
|
exportedInBatch: string().optional(),
|
|
24768
25006
|
createdAt: number()
|
|
24769
25007
|
});
|
|
@@ -24856,7 +25094,19 @@ var RetrainFrameSchema = object({
|
|
|
24856
25094
|
* empty when nothing the track store holds can be placed on it. */
|
|
24857
25095
|
pipelineBoxes: array(RetrainPipelineBoxSchema).readonly().optional(),
|
|
24858
25096
|
/** The named collections this frame belongs to. Present on list answers. */
|
|
24859
|
-
collectionIds: array(string()).readonly().optional()
|
|
25097
|
+
collectionIds: array(string()).readonly().optional(),
|
|
25098
|
+
/** Bumped by every annotation save. A save that names a stale
|
|
25099
|
+
* `expectedRevision` is refused, so two surfaces cannot overwrite each other. */
|
|
25100
|
+
revision: number().int().optional(),
|
|
25101
|
+
/** Proposals the operator deleted — never re-seeded as drafts. */
|
|
25102
|
+
dismissed: array(RetrainDismissedSchema).readonly().optional(),
|
|
25103
|
+
/** What the operator did with the proposals, computed by the server. */
|
|
25104
|
+
review: RetrainFrameReviewSchema.optional(),
|
|
25105
|
+
/** The frame's pixels over the admin data plane (full size). Fetch with the
|
|
25106
|
+
* admin bearer token; relative to the hub root. */
|
|
25107
|
+
imageUrl: string().optional(),
|
|
25108
|
+
/** The same, as a ~480 px thumbnail for grids. */
|
|
25109
|
+
thumbnailUrl: string().optional()
|
|
24860
25110
|
});
|
|
24861
25111
|
/** Why a copy-on-select could not be honoured — named, never a silent skip. */
|
|
24862
25112
|
var RetrainCopyRefusalSchema = _enum([
|
|
@@ -25935,10 +26185,33 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25935
26185
|
/** The frame's track, when it has one — checked against the frame. */
|
|
25936
26186
|
trackId: string().optional(),
|
|
25937
26187
|
frameId: string(),
|
|
25938
|
-
annotations: array(RetrainAnnotationDraftSchema)
|
|
26188
|
+
annotations: array(RetrainAnnotationDraftSchema),
|
|
26189
|
+
/** The frame's `revision` the caller saw. A different current revision
|
|
26190
|
+
* refuses the save with a `retrain-revision-conflict` error
|
|
26191
|
+
* (`parseRetrainRevisionConflict`). Absent ⇒ last write wins. */
|
|
26192
|
+
expectedRevision: number().int().optional(),
|
|
26193
|
+
/** The proposals the operator deleted. Absent ⇒ keep the frame's
|
|
26194
|
+
* current set; present ⇒ replace it (an empty array un-dismisses). */
|
|
26195
|
+
dismissed: array(RetrainDismissedSchema).optional()
|
|
25939
26196
|
}), array(RetrainAnnotationSchema).readonly(), {
|
|
25940
26197
|
kind: "mutation",
|
|
25941
26198
|
auth: "admin"
|
|
26199
|
+
}), method(object({
|
|
26200
|
+
deviceId: number(),
|
|
26201
|
+
trackId: string().optional(),
|
|
26202
|
+
frameId: string(),
|
|
26203
|
+
expectedRevision: number().int().optional(),
|
|
26204
|
+
origins: array(object({
|
|
26205
|
+
annotationId: string(),
|
|
26206
|
+
origin: RetrainOriginSchema
|
|
26207
|
+
})).min(1).max(500)
|
|
26208
|
+
}), object({
|
|
26209
|
+
updated: number().int(),
|
|
26210
|
+
skipped: number().int(),
|
|
26211
|
+
revision: number().int()
|
|
26212
|
+
}), {
|
|
26213
|
+
kind: "mutation",
|
|
26214
|
+
auth: "admin"
|
|
25942
26215
|
}), method(object({
|
|
25943
26216
|
deviceId: number(),
|
|
25944
26217
|
trackId: string()
|
|
@@ -28594,6 +28867,12 @@ var CameraStepOverridePatchSchema = object({
|
|
|
28594
28867
|
settings: record(string(), unknown()).readonly().optional()
|
|
28595
28868
|
});
|
|
28596
28869
|
var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
|
|
28870
|
+
/** The three root-detector choices a camera has (D507: at most one root). */
|
|
28871
|
+
var CameraDetectionSourceSchema = _enum([
|
|
28872
|
+
"pipeline",
|
|
28873
|
+
"onboard",
|
|
28874
|
+
"none"
|
|
28875
|
+
]);
|
|
28597
28876
|
var CameraPipelineSettingsSchema = object({
|
|
28598
28877
|
stepToggles: record(string(), boolean()).optional(),
|
|
28599
28878
|
stepSettings: CameraStepSettingsSchema.optional(),
|
|
@@ -29171,6 +29450,26 @@ method(object({
|
|
|
29171
29450
|
}), object({ success: literal(true) }), {
|
|
29172
29451
|
kind: "mutation",
|
|
29173
29452
|
auth: "admin"
|
|
29453
|
+
}), method(object({ deviceId: number() }), object({
|
|
29454
|
+
source: CameraDetectionSourceSchema,
|
|
29455
|
+
explicit: boolean(),
|
|
29456
|
+
onboard: object({
|
|
29457
|
+
/** The camera has an onboard detector this system can read. */
|
|
29458
|
+
available: boolean(),
|
|
29459
|
+
/** What its detections carry — a camera with no box cannot be a root step. */
|
|
29460
|
+
geometry: _enum([
|
|
29461
|
+
"boxed",
|
|
29462
|
+
"while-streaming",
|
|
29463
|
+
"flag-only",
|
|
29464
|
+
"unknown"
|
|
29465
|
+
])
|
|
29466
|
+
})
|
|
29467
|
+
})), method(object({
|
|
29468
|
+
deviceId: number(),
|
|
29469
|
+
source: CameraDetectionSourceSchema
|
|
29470
|
+
}), object({ success: literal(true) }), {
|
|
29471
|
+
kind: "mutation",
|
|
29472
|
+
auth: "admin"
|
|
29174
29473
|
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
29175
29474
|
deviceId: number(),
|
|
29176
29475
|
agentNodeId: string(),
|
|
@@ -32735,6 +33034,17 @@ var BatteryStatusSchema = object({
|
|
|
32735
33034
|
*/
|
|
32736
33035
|
lastContactAt: number().optional(),
|
|
32737
33036
|
/**
|
|
33037
|
+
* Ms epoch of the last COMPLETE scheduled refresh — every fact the provider
|
|
33038
|
+
* holds for the device (level, charging, link, device info, state slices) and
|
|
33039
|
+
* its cached snapshot, read together. Absent = never since this slice was
|
|
33040
|
+
* born. Unlike `lastUpdated` (any write, even a push of one field) this is
|
|
33041
|
+
* the staleness an operator can trust: the provider owns the device fact and
|
|
33042
|
+
* so owns the window on its age (D224, D847). Not a clock in the
|
|
33043
|
+
* runtime-state-durability sense: it moves once per window and must survive
|
|
33044
|
+
* a restart, or every restart would owe the camera a wake.
|
|
33045
|
+
*/
|
|
33046
|
+
lastFullRefreshAt: number().optional(),
|
|
33047
|
+
/**
|
|
32738
33048
|
* True when the source is a BINARY low-battery indicator (HA
|
|
32739
33049
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
32740
33050
|
* charge level — `percentage` is then a coarse stand-in (100 = normal,
|
|
@@ -32973,6 +33283,18 @@ var CalendarInfoSchema = object({
|
|
|
32973
33283
|
source: CalendarSourceKindSchema,
|
|
32974
33284
|
enabled: boolean()
|
|
32975
33285
|
});
|
|
33286
|
+
/**
|
|
33287
|
+
* Time contract of {@link CalendarEvent}.
|
|
33288
|
+
*
|
|
33289
|
+
* - Timed event: `startMs` / `endMs` are real instants; `endMs` is exclusive.
|
|
33290
|
+
* - All-day event (`allDay: true`): the event is a run of calendar DATES, not
|
|
33291
|
+
* instants. `startMs` is UTC midnight of the first date and `endMs` is UTC
|
|
33292
|
+
* midnight of the day AFTER the last date (RFC 5545 exclusive DTEND), so a
|
|
33293
|
+
* one-day event spans exactly 24 h. Every provider produces that and no
|
|
33294
|
+
* consumer may read the instants in a local timezone: use
|
|
33295
|
+
* {@link calendarEventLocalSpan}. Reading UTC midnight as local time put an
|
|
33296
|
+
* all-day event on the following day for any viewer ahead of UTC.
|
|
33297
|
+
*/
|
|
32976
33298
|
var CalendarEventSchema = object({
|
|
32977
33299
|
id: string().min(1),
|
|
32978
33300
|
calendarId: string().min(1),
|
|
@@ -35971,7 +36293,15 @@ var HubAddressBookSchema = object({
|
|
|
35971
36293
|
publicEndpoint: HubAddressRoleResolutionSchema
|
|
35972
36294
|
}),
|
|
35973
36295
|
/** The `hub=` an app link carries (D709), or null. */
|
|
35974
|
-
appLinkHub: string().nullable()
|
|
36296
|
+
appLinkHub: string().nullable(),
|
|
36297
|
+
/**
|
|
36298
|
+
* Every origin a browser can really reach this hub at, in the scheme each
|
|
36299
|
+
* listener serves: `https://<lan>:<httpsPort>`, and `http://<lan>:<httpPort>`
|
|
36300
|
+
* while LAN HTTP is on, plus the public and custom addresses. Distinct from
|
|
36301
|
+
* `rows`, which show `http://` only while LAN HTTP is on. Never loopback,
|
|
36302
|
+
* never the app link. Absent on a hub older than D794's amendment.
|
|
36303
|
+
*/
|
|
36304
|
+
listenerOrigins: array(string()).readonly().optional()
|
|
35975
36305
|
});
|
|
35976
36306
|
var AllowedAddressesSchema = object({
|
|
35977
36307
|
/**
|
|
@@ -37360,7 +37690,14 @@ var TopologyNodeSchema = object({
|
|
|
37360
37690
|
* completed a mutual-TLS handshake, `clear` otherwise. Absent for the hub,
|
|
37361
37691
|
* for offline rows and when the hub cannot tell.
|
|
37362
37692
|
*/
|
|
37363
|
-
meshTransport: _enum(["tls", "clear"]).optional()
|
|
37693
|
+
meshTransport: _enum(["tls", "clear"]).optional(),
|
|
37694
|
+
/**
|
|
37695
|
+
* Whether the hub holds this online AGENT's capability registration (its
|
|
37696
|
+
* `registerNode` manifest). `false` = online in the mesh but not ready: the
|
|
37697
|
+
* hub dropped the registration on a disconnect only it saw and the agent has
|
|
37698
|
+
* not re-sent it. Absent for the hub and offline rows.
|
|
37699
|
+
*/
|
|
37700
|
+
capabilitiesRegistered: boolean().optional()
|
|
37364
37701
|
});
|
|
37365
37702
|
var CapUsageEdgeSchema = object({
|
|
37366
37703
|
callerAddonId: string(),
|
|
@@ -45832,6 +46169,12 @@ Object.freeze({
|
|
|
45832
46169
|
addonId: null,
|
|
45833
46170
|
access: "view"
|
|
45834
46171
|
},
|
|
46172
|
+
"backup.listAvailableDatabases": {
|
|
46173
|
+
capName: "backup",
|
|
46174
|
+
capScope: "system",
|
|
46175
|
+
addonId: null,
|
|
46176
|
+
access: "view"
|
|
46177
|
+
},
|
|
45835
46178
|
"backup.listDestinations": {
|
|
45836
46179
|
capName: "backup",
|
|
45837
46180
|
capScope: "system",
|
|
@@ -46528,6 +46871,12 @@ Object.freeze({
|
|
|
46528
46871
|
addonId: null,
|
|
46529
46872
|
access: "create"
|
|
46530
46873
|
},
|
|
46874
|
+
"dataStoreProvider.transact": {
|
|
46875
|
+
capName: "data-store-provider",
|
|
46876
|
+
capScope: "system",
|
|
46877
|
+
addonId: null,
|
|
46878
|
+
access: "create"
|
|
46879
|
+
},
|
|
46531
46880
|
"dataStoreProvider.update": {
|
|
46532
46881
|
capName: "data-store-provider",
|
|
46533
46882
|
capScope: "system",
|
|
@@ -46546,6 +46895,12 @@ Object.freeze({
|
|
|
46546
46895
|
addonId: null,
|
|
46547
46896
|
access: "create"
|
|
46548
46897
|
},
|
|
46898
|
+
"dataStoreProvider.upsertMany": {
|
|
46899
|
+
capName: "data-store-provider",
|
|
46900
|
+
capScope: "system",
|
|
46901
|
+
addonId: null,
|
|
46902
|
+
access: "create"
|
|
46903
|
+
},
|
|
46549
46904
|
"dayNight.getOptions": {
|
|
46550
46905
|
capName: "day-night",
|
|
46551
46906
|
capScope: "device",
|
|
@@ -49372,6 +49727,12 @@ Object.freeze({
|
|
|
49372
49727
|
addonId: null,
|
|
49373
49728
|
access: "create"
|
|
49374
49729
|
},
|
|
49730
|
+
"pipelineAnalytics.backfillRetrainOrigins": {
|
|
49731
|
+
capName: "pipeline-analytics",
|
|
49732
|
+
capScope: "device",
|
|
49733
|
+
addonId: null,
|
|
49734
|
+
access: "create"
|
|
49735
|
+
},
|
|
49375
49736
|
"pipelineAnalytics.cancelRelocateMedia": {
|
|
49376
49737
|
capName: "pipeline-analytics",
|
|
49377
49738
|
capScope: "device",
|
|
@@ -50152,6 +50513,12 @@ Object.freeze({
|
|
|
50152
50513
|
addonId: null,
|
|
50153
50514
|
access: "view"
|
|
50154
50515
|
},
|
|
50516
|
+
"pipelineOrchestrator.getCameraDetectionSource": {
|
|
50517
|
+
capName: "pipeline-orchestrator",
|
|
50518
|
+
capScope: "system",
|
|
50519
|
+
addonId: null,
|
|
50520
|
+
access: "view"
|
|
50521
|
+
},
|
|
50155
50522
|
"pipelineOrchestrator.getCameraMetrics": {
|
|
50156
50523
|
capName: "pipeline-orchestrator",
|
|
50157
50524
|
capScope: "system",
|
|
@@ -50380,6 +50747,12 @@ Object.freeze({
|
|
|
50380
50747
|
addonId: null,
|
|
50381
50748
|
access: "create"
|
|
50382
50749
|
},
|
|
50750
|
+
"pipelineOrchestrator.setCameraDetectionSource": {
|
|
50751
|
+
capName: "pipeline-orchestrator",
|
|
50752
|
+
capScope: "system",
|
|
50753
|
+
addonId: null,
|
|
50754
|
+
access: "create"
|
|
50755
|
+
},
|
|
50383
50756
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
50384
50757
|
capName: "pipeline-orchestrator",
|
|
50385
50758
|
capScope: "system",
|
|
@@ -51352,6 +51725,12 @@ Object.freeze({
|
|
|
51352
51725
|
addonId: null,
|
|
51353
51726
|
access: "create"
|
|
51354
51727
|
},
|
|
51728
|
+
"settingsStore.transact": {
|
|
51729
|
+
capName: "settings-store",
|
|
51730
|
+
capScope: "system",
|
|
51731
|
+
addonId: null,
|
|
51732
|
+
access: "create"
|
|
51733
|
+
},
|
|
51355
51734
|
"settingsStore.update": {
|
|
51356
51735
|
capName: "settings-store",
|
|
51357
51736
|
capScope: "system",
|
|
@@ -51370,6 +51749,12 @@ Object.freeze({
|
|
|
51370
51749
|
addonId: null,
|
|
51371
51750
|
access: "create"
|
|
51372
51751
|
},
|
|
51752
|
+
"settingsStore.upsertMany": {
|
|
51753
|
+
capName: "settings-store",
|
|
51754
|
+
capScope: "system",
|
|
51755
|
+
addonId: null,
|
|
51756
|
+
access: "create"
|
|
51757
|
+
},
|
|
51373
51758
|
"smoke.getStatus": {
|
|
51374
51759
|
capName: "smoke",
|
|
51375
51760
|
capScope: "device",
|
|
@@ -51832,6 +52217,12 @@ Object.freeze({
|
|
|
51832
52217
|
addonId: null,
|
|
51833
52218
|
access: "view"
|
|
51834
52219
|
},
|
|
52220
|
+
"streamBroker.getLiveViewerCounts": {
|
|
52221
|
+
capName: "stream-broker",
|
|
52222
|
+
capScope: "system",
|
|
52223
|
+
addonId: null,
|
|
52224
|
+
access: "view"
|
|
52225
|
+
},
|
|
51835
52226
|
"streamBroker.getPreBufferInfo": {
|
|
51836
52227
|
capName: "stream-broker",
|
|
51837
52228
|
capScope: "system",
|
|
@@ -55672,6 +56063,11 @@ Object.freeze({
|
|
|
55672
56063
|
form: "single",
|
|
55673
56064
|
optional: false
|
|
55674
56065
|
}],
|
|
56066
|
+
"pipelineAnalytics.backfillRetrainOrigins": [{
|
|
56067
|
+
name: "deviceId",
|
|
56068
|
+
form: "single",
|
|
56069
|
+
optional: false
|
|
56070
|
+
}],
|
|
55675
56071
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
55676
56072
|
name: "deviceId",
|
|
55677
56073
|
form: "single",
|
|
@@ -55977,6 +56373,11 @@ Object.freeze({
|
|
|
55977
56373
|
form: "single",
|
|
55978
56374
|
optional: false
|
|
55979
56375
|
}],
|
|
56376
|
+
"pipelineOrchestrator.getCameraDetectionSource": [{
|
|
56377
|
+
name: "deviceId",
|
|
56378
|
+
form: "single",
|
|
56379
|
+
optional: false
|
|
56380
|
+
}],
|
|
55980
56381
|
"pipelineOrchestrator.getCameraMetrics": [{
|
|
55981
56382
|
name: "deviceId",
|
|
55982
56383
|
form: "single",
|
|
@@ -56037,6 +56438,11 @@ Object.freeze({
|
|
|
56037
56438
|
form: "single",
|
|
56038
56439
|
optional: false
|
|
56039
56440
|
}],
|
|
56441
|
+
"pipelineOrchestrator.setCameraDetectionSource": [{
|
|
56442
|
+
name: "deviceId",
|
|
56443
|
+
form: "single",
|
|
56444
|
+
optional: false
|
|
56445
|
+
}],
|
|
56040
56446
|
"pipelineOrchestrator.setCameraPipelineForAgent": [{
|
|
56041
56447
|
name: "deviceId",
|
|
56042
56448
|
form: "single",
|
|
@@ -57273,6 +57679,9 @@ new Map(Object.entries({
|
|
|
57273
57679
|
"stream-online": "device-events",
|
|
57274
57680
|
"stream-offline": "device-events",
|
|
57275
57681
|
"detection-blind": "device-events",
|
|
57682
|
+
"recording-stalled": "device-events",
|
|
57683
|
+
"recording-healthy": "device-events",
|
|
57684
|
+
"recording-degraded": "device-events",
|
|
57276
57685
|
"node-online": "system",
|
|
57277
57686
|
"node-offline": "system",
|
|
57278
57687
|
"node-restarting": "system",
|
|
@@ -57286,6 +57695,9 @@ new Map(Object.entries({
|
|
|
57286
57695
|
"wrapper-update-available": "system",
|
|
57287
57696
|
"backup-completed": "system",
|
|
57288
57697
|
"export-completed": "system",
|
|
57698
|
+
"storage-location-low": "system",
|
|
57699
|
+
"storage-location-critical": "system",
|
|
57700
|
+
"storage-location-ok": "system",
|
|
57289
57701
|
"alarm-triggered": "alarm",
|
|
57290
57702
|
"alarm-armed": "alarm",
|
|
57291
57703
|
"alarm-disarmed": "alarm",
|
|
@@ -57347,6 +57759,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57347
57759
|
label: "Detecting nothing",
|
|
57348
57760
|
kinds: ["detection-blind"]
|
|
57349
57761
|
},
|
|
57762
|
+
{
|
|
57763
|
+
id: "recording",
|
|
57764
|
+
family: "device-events",
|
|
57765
|
+
label: "Recording",
|
|
57766
|
+
kinds: [
|
|
57767
|
+
"recording-stalled",
|
|
57768
|
+
"recording-healthy",
|
|
57769
|
+
"recording-degraded"
|
|
57770
|
+
]
|
|
57771
|
+
},
|
|
57350
57772
|
{
|
|
57351
57773
|
id: "nodes",
|
|
57352
57774
|
family: "system",
|
|
@@ -57387,6 +57809,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
57387
57809
|
label: "Backups & exports",
|
|
57388
57810
|
kinds: ["backup-completed", "export-completed"]
|
|
57389
57811
|
},
|
|
57812
|
+
{
|
|
57813
|
+
id: "storage",
|
|
57814
|
+
family: "system",
|
|
57815
|
+
label: "Storage locations",
|
|
57816
|
+
kinds: [
|
|
57817
|
+
"storage-location-low",
|
|
57818
|
+
"storage-location-critical",
|
|
57819
|
+
"storage-location-ok"
|
|
57820
|
+
]
|
|
57821
|
+
},
|
|
57390
57822
|
{
|
|
57391
57823
|
id: "alarm",
|
|
57392
57824
|
family: "alarm",
|
|
@@ -57469,6 +57901,9 @@ var DEVICE_EVENTS = [
|
|
|
57469
57901
|
"stream-online",
|
|
57470
57902
|
"stream-offline",
|
|
57471
57903
|
"detection-blind",
|
|
57904
|
+
"recording-stalled",
|
|
57905
|
+
"recording-healthy",
|
|
57906
|
+
"recording-degraded",
|
|
57472
57907
|
...ALARM
|
|
57473
57908
|
];
|
|
57474
57909
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -57636,6 +58071,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
57636
58071
|
[...RULE_TEXT],
|
|
57637
58072
|
[...RULE_TEXT],
|
|
57638
58073
|
[...RULE_TEXT],
|
|
58074
|
+
[...RULE_TEXT],
|
|
58075
|
+
[...RULE_TEXT],
|
|
58076
|
+
[...RULE_TEXT],
|
|
58077
|
+
[...RULE_TEXT],
|
|
58078
|
+
[...RULE_TEXT],
|
|
57639
58079
|
([...RULE_TEXT], [...UPDATES]),
|
|
57640
58080
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
57641
58081
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|