@camstack/addon-auth 1.2.140 → 1.2.142
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/{dist-BOK-Ox5c.mjs → dist-BocnK3UX.mjs} +706 -266
- package/dist/{dist-CiG_dP05.js → dist-D6yj-7NH.js} +706 -266
- package/dist/oidc/auth-oidc.addon.js +9 -3
- package/dist/oidc/auth-oidc.addon.mjs +9 -3
- package/dist/webauthn/_stub.js +1 -1
- package/dist/webauthn/{_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-D1X8nA5T.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-AuwB-9pm.mjs} +2 -2
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-my0BLW_B.mjs +26 -0
- package/dist/webauthn/auth-webauthn.addon.js +1 -1
- package/dist/webauthn/auth-webauthn.addon.mjs +1 -1
- package/dist/webauthn/{hostInit-CpAAx41z.mjs → hostInit-DcecJ6QY.mjs} +2 -2
- package/dist/webauthn/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-D5ZLhXzm.mjs +0 -26
|
@@ -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).
|
|
@@ -7977,6 +7987,21 @@ var ProfileRtspEntrySchema = object({
|
|
|
7977
7987
|
codec: string().optional(),
|
|
7978
7988
|
resolution: CamStreamResolutionSchema.optional()
|
|
7979
7989
|
});
|
|
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
|
+
];
|
|
7980
8005
|
object({
|
|
7981
8006
|
field: string().min(1),
|
|
7982
8007
|
on: literal("advance")
|
|
@@ -8460,7 +8485,7 @@ function errMsg(err) {
|
|
|
8460
8485
|
return String(err);
|
|
8461
8486
|
}
|
|
8462
8487
|
//#endregion
|
|
8463
|
-
//#region ../types/dist/composition-
|
|
8488
|
+
//#region ../types/dist/composition-C-WpVYTX.mjs
|
|
8464
8489
|
/**
|
|
8465
8490
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8466
8491
|
*
|
|
@@ -8512,7 +8537,7 @@ var BASE = `https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${FFM
|
|
|
8512
8537
|
function portable(target) {
|
|
8513
8538
|
return `${BASE}/jellyfin-ffmpeg_${FFMPEG_RELEASE}_portable_${target}-gpl.tar.xz`;
|
|
8514
8539
|
}
|
|
8515
|
-
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64")
|
|
8540
|
+
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64"), `${BASE}${FFMPEG_RELEASE}`;
|
|
8516
8541
|
/**
|
|
8517
8542
|
* THE table "which boolean of this device type counts as HIGH", and the
|
|
8518
8543
|
* pure evaluator of its EDGE.
|
|
@@ -10204,6 +10229,15 @@ discriminatedUnion("type", [
|
|
|
10204
10229
|
message: string()
|
|
10205
10230
|
})
|
|
10206
10231
|
]);
|
|
10232
|
+
/** Every status, in the order a summary lists them. */
|
|
10233
|
+
var RETRAIN_REVIEW_STATUSES = [
|
|
10234
|
+
"unchanged",
|
|
10235
|
+
"adjusted",
|
|
10236
|
+
"reclassified",
|
|
10237
|
+
"added",
|
|
10238
|
+
"removed",
|
|
10239
|
+
"model-error"
|
|
10240
|
+
];
|
|
10207
10241
|
/**
|
|
10208
10242
|
* What the gate decided about a birth, from the CALLER's point of view.
|
|
10209
10243
|
*
|
|
@@ -11821,14 +11855,6 @@ var MASK_SUPPLY_STEP_IDS = ["segmentation"];
|
|
|
11821
11855
|
...CROP_SUPPLY_STEP_IDS,
|
|
11822
11856
|
...MASK_SUPPLY_STEP_IDS
|
|
11823
11857
|
];
|
|
11824
|
-
var MODEL_FORMATS = [
|
|
11825
|
-
"onnx",
|
|
11826
|
-
"coreml",
|
|
11827
|
-
"openvino",
|
|
11828
|
-
"tflite",
|
|
11829
|
-
"pt",
|
|
11830
|
-
"gguf"
|
|
11831
|
-
];
|
|
11832
11858
|
/**
|
|
11833
11859
|
* Multi-file format payload.
|
|
11834
11860
|
*
|
|
@@ -13171,6 +13197,329 @@ var authProviderCapability = {
|
|
|
13171
13197
|
mount: { kind: "skip" }
|
|
13172
13198
|
};
|
|
13173
13199
|
/**
|
|
13200
|
+
* Query filter for settings-store collections.
|
|
13201
|
+
*/
|
|
13202
|
+
var QueryFilterSchema = object({
|
|
13203
|
+
where: record(string(), unknown()).optional(),
|
|
13204
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
13205
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
13206
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
13207
|
+
whereNot: record(string(), unknown()).optional(),
|
|
13208
|
+
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
13209
|
+
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
13210
|
+
whereNotIn: record(string(), array(unknown())).optional(),
|
|
13211
|
+
orderBy: object({
|
|
13212
|
+
field: string(),
|
|
13213
|
+
direction: _enum(["asc", "desc"])
|
|
13214
|
+
}).optional(),
|
|
13215
|
+
limit: number().optional(),
|
|
13216
|
+
offset: number().optional()
|
|
13217
|
+
});
|
|
13218
|
+
/**
|
|
13219
|
+
* The predicate half of a filter, for BULK MUTATIONS.
|
|
13220
|
+
*
|
|
13221
|
+
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
13222
|
+
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
13223
|
+
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
13224
|
+
* only so the shape stays composable — the implementation REJECTS a filter
|
|
13225
|
+
* that compiles to no predicate, because that is the whole collection.
|
|
13226
|
+
*/
|
|
13227
|
+
var MutationFilterSchema = object({
|
|
13228
|
+
where: record(string(), unknown()).optional(),
|
|
13229
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
13230
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
13231
|
+
whereNot: record(string(), unknown()).optional(),
|
|
13232
|
+
whereNotIn: record(string(), array(unknown())).optional()
|
|
13233
|
+
});
|
|
13234
|
+
/**
|
|
13235
|
+
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
13236
|
+
*
|
|
13237
|
+
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
13238
|
+
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
13239
|
+
* a `Record<column, op>` shape could not express.
|
|
13240
|
+
*/
|
|
13241
|
+
var AggregateFieldSchema = object({
|
|
13242
|
+
/** Result key. */
|
|
13243
|
+
as: string().min(1),
|
|
13244
|
+
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
13245
|
+
field: string().min(1),
|
|
13246
|
+
op: _enum([
|
|
13247
|
+
"sum",
|
|
13248
|
+
"min",
|
|
13249
|
+
"max"
|
|
13250
|
+
])
|
|
13251
|
+
});
|
|
13252
|
+
/**
|
|
13253
|
+
* `COUNT(*)` plus one number per requested field.
|
|
13254
|
+
*
|
|
13255
|
+
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
13256
|
+
* that really is 0 are different facts, and an accounting caller that renders
|
|
13257
|
+
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
13258
|
+
*/
|
|
13259
|
+
var AggregateResultSchema = object({
|
|
13260
|
+
count: number().int(),
|
|
13261
|
+
values: record(string(), number().nullable())
|
|
13262
|
+
});
|
|
13263
|
+
/** A single stored record: `{ id, data }`. */
|
|
13264
|
+
var SettingsRecordSchema = object({
|
|
13265
|
+
id: string(),
|
|
13266
|
+
data: record(string(), unknown())
|
|
13267
|
+
});
|
|
13268
|
+
/**
|
|
13269
|
+
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
13270
|
+
* optional.
|
|
13271
|
+
*
|
|
13272
|
+
* A separate schema rather than loosening the shared one: every other method
|
|
13273
|
+
* on this cap addresses a row BY its id, and making that field optional
|
|
13274
|
+
* everywhere would turn a forgotten key into a silently generated one on
|
|
13275
|
+
* `update` and `delete` as well.
|
|
13276
|
+
*/
|
|
13277
|
+
var BulkRecordSchema = object({
|
|
13278
|
+
id: string().optional(),
|
|
13279
|
+
data: record(string(), unknown())
|
|
13280
|
+
});
|
|
13281
|
+
/**
|
|
13282
|
+
* The database FILES one `sqlite-settings` engine process owns (D851).
|
|
13283
|
+
* Closed on purpose: a file is a thing the engine opens, backs up and gives a
|
|
13284
|
+
* serving thread, so a new one is a code change, never a string a caller
|
|
13285
|
+
* invents. `settings` is `camstack.db` and the default for every collection
|
|
13286
|
+
* that names no file.
|
|
13287
|
+
*/
|
|
13288
|
+
var DataStoreDatabaseSchema = _enum([
|
|
13289
|
+
"settings",
|
|
13290
|
+
"events",
|
|
13291
|
+
"history"
|
|
13292
|
+
]);
|
|
13293
|
+
DataStoreDatabaseSchema.options;
|
|
13294
|
+
/**
|
|
13295
|
+
* One write inside a {@link settingsStoreCapability.methods.transact} call.
|
|
13296
|
+
* The three that a "replace this set, bump that revision" write needs, plus
|
|
13297
|
+
* the batched upsert a rollup writer needs.
|
|
13298
|
+
*/
|
|
13299
|
+
var TransactOpSchema = discriminatedUnion("op", [
|
|
13300
|
+
object({
|
|
13301
|
+
op: literal("deleteWhere"),
|
|
13302
|
+
collection: string(),
|
|
13303
|
+
filter: MutationFilterSchema
|
|
13304
|
+
}),
|
|
13305
|
+
object({
|
|
13306
|
+
op: literal("insertMany"),
|
|
13307
|
+
collection: string(),
|
|
13308
|
+
records: array(BulkRecordSchema).readonly()
|
|
13309
|
+
}),
|
|
13310
|
+
object({
|
|
13311
|
+
op: literal("update"),
|
|
13312
|
+
collection: string(),
|
|
13313
|
+
id: string(),
|
|
13314
|
+
data: record(string(), unknown())
|
|
13315
|
+
}),
|
|
13316
|
+
object({
|
|
13317
|
+
op: literal("upsertMany"),
|
|
13318
|
+
collection: string(),
|
|
13319
|
+
conflict: array(string()).readonly(),
|
|
13320
|
+
records: array(BulkRecordSchema).readonly()
|
|
13321
|
+
})
|
|
13322
|
+
]);
|
|
13323
|
+
/**
|
|
13324
|
+
* The precondition of a transaction: the row `key` of `collection` must hold
|
|
13325
|
+
* `equals` in `column`, read INSIDE the transaction.
|
|
13326
|
+
*/
|
|
13327
|
+
var TransactGuardSchema = object({
|
|
13328
|
+
collection: string(),
|
|
13329
|
+
key: string(),
|
|
13330
|
+
column: string(),
|
|
13331
|
+
equals: unknown()
|
|
13332
|
+
});
|
|
13333
|
+
/**
|
|
13334
|
+
* Column declaration for a structured (SQL-backed) collection.
|
|
13335
|
+
*
|
|
13336
|
+
* Logical types — the backend translates each to the matching SQLite
|
|
13337
|
+
* storage class and handles per-type marshaling:
|
|
13338
|
+
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
13339
|
+
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
13340
|
+
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
13341
|
+
*/
|
|
13342
|
+
var CollectionColumnSchema = object({
|
|
13343
|
+
name: string(),
|
|
13344
|
+
type: _enum([
|
|
13345
|
+
"TEXT",
|
|
13346
|
+
"INTEGER",
|
|
13347
|
+
"REAL",
|
|
13348
|
+
"JSON",
|
|
13349
|
+
"BOOLEAN"
|
|
13350
|
+
]),
|
|
13351
|
+
primaryKey: boolean().optional(),
|
|
13352
|
+
notNull: boolean().optional(),
|
|
13353
|
+
unique: boolean().optional(),
|
|
13354
|
+
/**
|
|
13355
|
+
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
13356
|
+
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
13357
|
+
* collection surface simply cannot express their existing tables — which is
|
|
13358
|
+
* why they were still on the uncapped `table*` API.
|
|
13359
|
+
*/
|
|
13360
|
+
defaultValue: union([
|
|
13361
|
+
string(),
|
|
13362
|
+
number(),
|
|
13363
|
+
boolean()
|
|
13364
|
+
]).optional()
|
|
13365
|
+
});
|
|
13366
|
+
var CollectionIndexSchema = object({
|
|
13367
|
+
name: string(),
|
|
13368
|
+
columns: array(string()).readonly(),
|
|
13369
|
+
unique: boolean().optional()
|
|
13370
|
+
});
|
|
13371
|
+
/**
|
|
13372
|
+
* The input of `declareCollection` — ONE schema for the door and for the
|
|
13373
|
+
* engine behind it, so the two surfaces cannot drift (the dispatcher forwards
|
|
13374
|
+
* the payload untouched).
|
|
13375
|
+
*
|
|
13376
|
+
* - `database` — the file the collection lives in (D851). Absent means
|
|
13377
|
+
* `settings`. A declaration naming a file other than the one the table is
|
|
13378
|
+
* already in is REFUSED by the engine, never moved.
|
|
13379
|
+
* - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
|
|
13380
|
+
* as `primaryKey: true` on that column. A composite-keyed collection has no
|
|
13381
|
+
* `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
|
|
13382
|
+
* with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
|
|
13383
|
+
* address one row by id are refused.
|
|
13384
|
+
* - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
|
|
13385
|
+
*/
|
|
13386
|
+
var DeclareCollectionInputSchema = object({
|
|
13387
|
+
namespace: string().optional(),
|
|
13388
|
+
collection: string(),
|
|
13389
|
+
columns: array(CollectionColumnSchema).readonly(),
|
|
13390
|
+
indexes: array(CollectionIndexSchema).readonly().optional(),
|
|
13391
|
+
database: DataStoreDatabaseSchema.optional(),
|
|
13392
|
+
primaryKey: array(string()).readonly().optional(),
|
|
13393
|
+
withoutRowid: boolean().optional()
|
|
13394
|
+
});
|
|
13395
|
+
method(object({
|
|
13396
|
+
namespace: string().optional(),
|
|
13397
|
+
collection: string(),
|
|
13398
|
+
key: string()
|
|
13399
|
+
}), unknown(), { auth: "admin" }), method(object({
|
|
13400
|
+
namespace: string().optional(),
|
|
13401
|
+
collection: string(),
|
|
13402
|
+
key: string(),
|
|
13403
|
+
value: unknown()
|
|
13404
|
+
}), _void(), {
|
|
13405
|
+
kind: "mutation",
|
|
13406
|
+
auth: "admin"
|
|
13407
|
+
}), method(object({
|
|
13408
|
+
namespace: string().optional(),
|
|
13409
|
+
collection: string(),
|
|
13410
|
+
filter: QueryFilterSchema.optional(),
|
|
13411
|
+
columns: array(string()).readonly().optional()
|
|
13412
|
+
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
13413
|
+
namespace: string().optional(),
|
|
13414
|
+
collection: string(),
|
|
13415
|
+
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
13416
|
+
* index on the collection. Never empty. */
|
|
13417
|
+
conflict: array(string()).readonly(),
|
|
13418
|
+
record: BulkRecordSchema
|
|
13419
|
+
}), object({
|
|
13420
|
+
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
13421
|
+
* row's own id on an update. */
|
|
13422
|
+
id: union([string(), number()]) }), {
|
|
13423
|
+
kind: "mutation",
|
|
13424
|
+
auth: "admin"
|
|
13425
|
+
}), method(object({
|
|
13426
|
+
namespace: string().optional(),
|
|
13427
|
+
collection: string(),
|
|
13428
|
+
conflict: array(string()).readonly(),
|
|
13429
|
+
records: array(BulkRecordSchema).readonly()
|
|
13430
|
+
}), object({ upserted: number().int() }), {
|
|
13431
|
+
kind: "mutation",
|
|
13432
|
+
auth: "admin"
|
|
13433
|
+
}), method(object({
|
|
13434
|
+
namespace: string().optional(),
|
|
13435
|
+
collection: string(),
|
|
13436
|
+
record: object({
|
|
13437
|
+
id: string().optional(),
|
|
13438
|
+
data: record(string(), unknown())
|
|
13439
|
+
})
|
|
13440
|
+
}), object({
|
|
13441
|
+
/**
|
|
13442
|
+
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
13443
|
+
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
13444
|
+
* primary key — which is the only place an auto key is knowable.
|
|
13445
|
+
*/
|
|
13446
|
+
id: union([string(), number()]) }), {
|
|
13447
|
+
kind: "mutation",
|
|
13448
|
+
auth: "admin"
|
|
13449
|
+
}), method(object({
|
|
13450
|
+
namespace: string().optional(),
|
|
13451
|
+
collection: string(),
|
|
13452
|
+
records: array(BulkRecordSchema).readonly()
|
|
13453
|
+
}), object({ inserted: number().int() }), {
|
|
13454
|
+
kind: "mutation",
|
|
13455
|
+
auth: "admin"
|
|
13456
|
+
}), method(object({
|
|
13457
|
+
namespace: string().optional(),
|
|
13458
|
+
guard: TransactGuardSchema.optional(),
|
|
13459
|
+
ops: array(TransactOpSchema).readonly()
|
|
13460
|
+
}), object({
|
|
13461
|
+
applied: boolean(),
|
|
13462
|
+
current: unknown().optional()
|
|
13463
|
+
}), {
|
|
13464
|
+
kind: "mutation",
|
|
13465
|
+
auth: "admin"
|
|
13466
|
+
}), method(object({
|
|
13467
|
+
namespace: string().optional(),
|
|
13468
|
+
collection: string(),
|
|
13469
|
+
id: string(),
|
|
13470
|
+
data: record(string(), unknown())
|
|
13471
|
+
}), _void(), {
|
|
13472
|
+
kind: "mutation",
|
|
13473
|
+
auth: "admin"
|
|
13474
|
+
}), method(object({
|
|
13475
|
+
namespace: string().optional(),
|
|
13476
|
+
collection: string(),
|
|
13477
|
+
key: string()
|
|
13478
|
+
}), _void(), {
|
|
13479
|
+
kind: "mutation",
|
|
13480
|
+
auth: "admin"
|
|
13481
|
+
}), method(object({
|
|
13482
|
+
namespace: string().optional(),
|
|
13483
|
+
collection: string(),
|
|
13484
|
+
filter: MutationFilterSchema
|
|
13485
|
+
}), object({ deleted: number().int() }), {
|
|
13486
|
+
kind: "mutation",
|
|
13487
|
+
auth: "admin"
|
|
13488
|
+
}), method(object({
|
|
13489
|
+
namespace: string().optional(),
|
|
13490
|
+
collection: string(),
|
|
13491
|
+
filter: MutationFilterSchema,
|
|
13492
|
+
data: record(string(), unknown())
|
|
13493
|
+
}), object({ updated: number().int() }), {
|
|
13494
|
+
kind: "mutation",
|
|
13495
|
+
auth: "admin"
|
|
13496
|
+
}), method(object({
|
|
13497
|
+
namespace: string().optional(),
|
|
13498
|
+
collection: string(),
|
|
13499
|
+
filter: QueryFilterSchema.optional()
|
|
13500
|
+
}), number(), { auth: "admin" }), method(object({
|
|
13501
|
+
namespace: string().optional(),
|
|
13502
|
+
collection: string(),
|
|
13503
|
+
fields: array(AggregateFieldSchema).readonly(),
|
|
13504
|
+
filter: QueryFilterSchema.optional()
|
|
13505
|
+
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
13506
|
+
namespace: string().optional(),
|
|
13507
|
+
collection: string(),
|
|
13508
|
+
field: string(),
|
|
13509
|
+
bucketSize: number().int().positive(),
|
|
13510
|
+
origin: number().int(),
|
|
13511
|
+
filter: QueryFilterSchema.optional()
|
|
13512
|
+
}), array(object({
|
|
13513
|
+
bucket: number().int(),
|
|
13514
|
+
count: number().int()
|
|
13515
|
+
})).readonly(), { auth: "admin" }), method(object({
|
|
13516
|
+
namespace: string().optional(),
|
|
13517
|
+
collection: string()
|
|
13518
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
13519
|
+
kind: "mutation",
|
|
13520
|
+
auth: "admin"
|
|
13521
|
+
});
|
|
13522
|
+
/**
|
|
13174
13523
|
* How long one snapshot may take end to end: the pinned copy of the whole
|
|
13175
13524
|
* database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
|
|
13176
13525
|
* disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
|
|
@@ -13183,7 +13532,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
|
|
|
13183
13532
|
* database has no sidecars and is just as owned). Paths are absolute on the
|
|
13184
13533
|
* owner's host.
|
|
13185
13534
|
*/
|
|
13186
|
-
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
13535
|
+
var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
|
|
13536
|
+
/** Which owned file this is — the handle `writeSnapshot` takes. */
|
|
13537
|
+
databaseId: DataStoreDatabaseSchema,
|
|
13538
|
+
livePath: string()
|
|
13539
|
+
})) });
|
|
13187
13540
|
/** One b-tree table of the snapshot and the rows it holds. */
|
|
13188
13541
|
var DatabaseSnapshotTableSchema = object({
|
|
13189
13542
|
name: string(),
|
|
@@ -13216,6 +13569,10 @@ var DatabaseSnapshotResultSchema = object({
|
|
|
13216
13569
|
/** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
|
|
13217
13570
|
takenAt: number()
|
|
13218
13571
|
});
|
|
13572
|
+
/** A snapshot the owner wrote, with the file it belongs to. */
|
|
13573
|
+
var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
|
|
13574
|
+
/** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
|
|
13575
|
+
var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
|
|
13219
13576
|
/**
|
|
13220
13577
|
* A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
|
|
13221
13578
|
* the same facts, with both paths relative to the archive root (the node's
|
|
@@ -13225,9 +13582,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
|
|
|
13225
13582
|
/** Archive-relative path of the live database the archive does NOT carry. */
|
|
13226
13583
|
livePath: string(),
|
|
13227
13584
|
/** Archive-relative path of the verified copy it carries in its place. */
|
|
13228
|
-
snapshotPath: string()
|
|
13585
|
+
snapshotPath: string(),
|
|
13586
|
+
/** Absent on an archive made before several files were owned: that was `settings`. */
|
|
13587
|
+
databaseId: DataStoreDatabaseSchema.optional()
|
|
13229
13588
|
});
|
|
13230
|
-
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(
|
|
13589
|
+
method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
|
|
13231
13590
|
kind: "mutation",
|
|
13232
13591
|
auth: "admin",
|
|
13233
13592
|
timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
|
|
@@ -13348,7 +13707,12 @@ var BackupArchiveEntrySchema = object({
|
|
|
13348
13707
|
/** Top-level locations included in the archive (db, addons, tls, …). */
|
|
13349
13708
|
locations: array(string()).readonly(),
|
|
13350
13709
|
/** Present when the archive is encrypted; restore then needs that key. */
|
|
13351
|
-
encryption: BackupArchiveEncryptionSchema.optional()
|
|
13710
|
+
encryption: BackupArchiveEncryptionSchema.optional(),
|
|
13711
|
+
/**
|
|
13712
|
+
* The databases the run asked to carry (its retention class). Absent on an
|
|
13713
|
+
* archive made before several files were owned: that was `['settings']`.
|
|
13714
|
+
*/
|
|
13715
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
13352
13716
|
});
|
|
13353
13717
|
var BackupEntrySchema = object({
|
|
13354
13718
|
id: string(),
|
|
@@ -13382,7 +13746,12 @@ var ArchiveManifestSchema = object({
|
|
|
13382
13746
|
* Live SQLite databases this archive carries as their OWNER's verified
|
|
13383
13747
|
* snapshot instead of as files (D693). Absent on archives made before.
|
|
13384
13748
|
*/
|
|
13385
|
-
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
|
|
13749
|
+
sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
|
|
13750
|
+
/**
|
|
13751
|
+
* Owned database files the run did NOT carry (not selected): left out of the
|
|
13752
|
+
* tar and the entry list alike. Absent when every owned file was carried.
|
|
13753
|
+
*/
|
|
13754
|
+
omittedDatabases: array(DataStoreDatabaseSchema).optional()
|
|
13386
13755
|
});
|
|
13387
13756
|
var LocationStatSchema = object({
|
|
13388
13757
|
name: string(),
|
|
@@ -13504,6 +13873,12 @@ var BackupScheduleSchema = object({
|
|
|
13504
13873
|
/** Optional subset of source locations to include; omitted = all. */
|
|
13505
13874
|
dataSources: array(string()).readonly().optional(),
|
|
13506
13875
|
/**
|
|
13876
|
+
* Which database files this schedule carries. Absent = `['settings']`
|
|
13877
|
+
* (an unstated ask is the minimum, D382). Events and history run weekly,
|
|
13878
|
+
* settings nightly (D852).
|
|
13879
|
+
*/
|
|
13880
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional(),
|
|
13881
|
+
/**
|
|
13507
13882
|
* ms-epoch of the last tick that FIRED this schedule. Stamped before the
|
|
13508
13883
|
* archive runs (it is the dedupe anchor), so it says "attempted", never
|
|
13509
13884
|
* "succeeded" — a run refused by every destination stamps it too.
|
|
@@ -13527,7 +13902,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
13527
13902
|
* retention). Omitted = each destination's own policy
|
|
13528
13903
|
* retention (manual runs).
|
|
13529
13904
|
*/
|
|
13530
|
-
retentionCount: number().int().min(1).max(1e3).optional()
|
|
13905
|
+
retentionCount: number().int().min(1).max(1e3).optional(),
|
|
13906
|
+
/** Database files to carry; omitted = `['settings']`. */
|
|
13907
|
+
databases: array(DataStoreDatabaseSchema).optional()
|
|
13531
13908
|
}).optional(), BackupTriggerResultSchema, {
|
|
13532
13909
|
kind: "mutation",
|
|
13533
13910
|
auth: "admin"
|
|
@@ -13602,14 +13979,18 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
13602
13979
|
ok: boolean(),
|
|
13603
13980
|
error: string().optional(),
|
|
13604
13981
|
nextRuns: array(number()).readonly()
|
|
13605
|
-
})), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
|
|
13982
|
+
})), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(_void(), object({
|
|
13983
|
+
answered: boolean(),
|
|
13984
|
+
databases: array(DataStoreDatabaseSchema).readonly()
|
|
13985
|
+
}), { auth: "admin" }), method(object({
|
|
13606
13986
|
id: string().optional(),
|
|
13607
13987
|
label: string(),
|
|
13608
13988
|
cron: string(),
|
|
13609
13989
|
enabled: boolean(),
|
|
13610
13990
|
locationIds: array(string()).readonly(),
|
|
13611
13991
|
retentionCount: number().int().min(1).max(1e3),
|
|
13612
|
-
dataSources: array(string()).readonly().optional()
|
|
13992
|
+
dataSources: array(string()).readonly().optional(),
|
|
13993
|
+
databases: array(DataStoreDatabaseSchema).readonly().optional()
|
|
13613
13994
|
}), BackupScheduleSchema, {
|
|
13614
13995
|
kind: "mutation",
|
|
13615
13996
|
auth: "admin"
|
|
@@ -13717,7 +14098,14 @@ var BrokerProviderInfoSchema = object({
|
|
|
13717
14098
|
/** Broker kinds this provider can create, with a display label. */
|
|
13718
14099
|
kinds: array(object({
|
|
13719
14100
|
kind: string(),
|
|
13720
|
-
label: string()
|
|
14101
|
+
label: string(),
|
|
14102
|
+
/**
|
|
14103
|
+
* Relative hub path to start an interactive account link (OAuth popup).
|
|
14104
|
+
* May include `{{brokerId}}`; admin-ui substitutes and appends `?popup=1`.
|
|
14105
|
+
*/
|
|
14106
|
+
interactiveConnectPath: string().min(1).optional(),
|
|
14107
|
+
/** Relative hub path to disconnect the linked account (same popup pattern). */
|
|
14108
|
+
interactiveDisconnectPath: string().min(1).optional()
|
|
13721
14109
|
}))
|
|
13722
14110
|
});
|
|
13723
14111
|
var ListInputSchema = object({
|
|
@@ -14033,6 +14421,16 @@ var BrokerClientsSchema = object({
|
|
|
14033
14421
|
/** Total encoded + raw-RTP callback subscriber count (sum of `encoded[].length`). */
|
|
14034
14422
|
encodedSubscribers: number()
|
|
14035
14423
|
});
|
|
14424
|
+
/**
|
|
14425
|
+
* How many people are watching one camera LIVE right now — see
|
|
14426
|
+
* `getLiveViewerCounts`. A camera with nobody watching is absent from the list
|
|
14427
|
+
* (so `viewers` is always at least 1): the listing carries the cameras that
|
|
14428
|
+
* have viewers, never a row of zeros.
|
|
14429
|
+
*/
|
|
14430
|
+
var LiveViewerCountSchema = object({
|
|
14431
|
+
deviceId: number().int().nonnegative(),
|
|
14432
|
+
viewers: number().int().positive()
|
|
14433
|
+
});
|
|
14036
14434
|
_enum([
|
|
14037
14435
|
"reconnecting",
|
|
14038
14436
|
"sleeping",
|
|
@@ -14393,7 +14791,7 @@ method(object({
|
|
|
14393
14791
|
}), {
|
|
14394
14792
|
kind: "mutation",
|
|
14395
14793
|
auth: "admin"
|
|
14396
|
-
}), method(object({ brokerId: string() }), BrokerClientsSchema), method(object({
|
|
14794
|
+
}), method(object({ brokerId: string() }), BrokerClientsSchema), method(_void(), array(LiveViewerCountSchema).readonly()), method(object({
|
|
14397
14795
|
brokerId: string(),
|
|
14398
14796
|
channel: _enum(["rtsp", "audio"]),
|
|
14399
14797
|
handle: string()
|
|
@@ -15259,240 +15657,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
|
|
|
15259
15657
|
timeoutMs: 30 * 6e4
|
|
15260
15658
|
});
|
|
15261
15659
|
/**
|
|
15262
|
-
* Query filter for settings-store collections.
|
|
15263
|
-
*/
|
|
15264
|
-
var QueryFilterSchema = object({
|
|
15265
|
-
where: record(string(), unknown()).optional(),
|
|
15266
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
15267
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
15268
|
-
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
15269
|
-
whereNot: record(string(), unknown()).optional(),
|
|
15270
|
-
/** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
|
|
15271
|
-
* empty list excludes nothing. See `QueryFilter.whereNotIn`. */
|
|
15272
|
-
whereNotIn: record(string(), array(unknown())).optional(),
|
|
15273
|
-
orderBy: object({
|
|
15274
|
-
field: string(),
|
|
15275
|
-
direction: _enum(["asc", "desc"])
|
|
15276
|
-
}).optional(),
|
|
15277
|
-
limit: number().optional(),
|
|
15278
|
-
offset: number().optional()
|
|
15279
|
-
});
|
|
15280
|
-
/**
|
|
15281
|
-
* The predicate half of a filter, for BULK MUTATIONS.
|
|
15282
|
-
*
|
|
15283
|
-
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
15284
|
-
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
15285
|
-
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
15286
|
-
* only so the shape stays composable — the implementation REJECTS a filter
|
|
15287
|
-
* that compiles to no predicate, because that is the whole collection.
|
|
15288
|
-
*/
|
|
15289
|
-
var MutationFilterSchema = object({
|
|
15290
|
-
where: record(string(), unknown()).optional(),
|
|
15291
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
15292
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
15293
|
-
whereNot: record(string(), unknown()).optional(),
|
|
15294
|
-
whereNotIn: record(string(), array(unknown())).optional()
|
|
15295
|
-
});
|
|
15296
|
-
/**
|
|
15297
|
-
* One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
|
|
15298
|
-
*
|
|
15299
|
-
* `as` names the slot in the result, so the SAME column may be asked twice with
|
|
15300
|
-
* two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
|
|
15301
|
-
* a `Record<column, op>` shape could not express.
|
|
15302
|
-
*/
|
|
15303
|
-
var AggregateFieldSchema = object({
|
|
15304
|
-
/** Result key. */
|
|
15305
|
-
as: string().min(1),
|
|
15306
|
-
/** Column to aggregate. Must be a real column of a declared collection. */
|
|
15307
|
-
field: string().min(1),
|
|
15308
|
-
op: _enum([
|
|
15309
|
-
"sum",
|
|
15310
|
-
"min",
|
|
15311
|
-
"max"
|
|
15312
|
-
])
|
|
15313
|
-
});
|
|
15314
|
-
/**
|
|
15315
|
-
* `COUNT(*)` plus one number per requested field.
|
|
15316
|
-
*
|
|
15317
|
-
* `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
|
|
15318
|
-
* that really is 0 are different facts, and an accounting caller that renders
|
|
15319
|
-
* "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
|
|
15320
|
-
*/
|
|
15321
|
-
var AggregateResultSchema = object({
|
|
15322
|
-
count: number().int(),
|
|
15323
|
-
values: record(string(), number().nullable())
|
|
15324
|
-
});
|
|
15325
|
-
/** A single stored record: `{ id, data }`. */
|
|
15326
|
-
var SettingsRecordSchema = object({
|
|
15327
|
-
id: string(),
|
|
15328
|
-
data: record(string(), unknown())
|
|
15329
|
-
});
|
|
15330
|
-
/**
|
|
15331
|
-
* One record of a BULK insert — {@link SettingsRecordSchema} with the id made
|
|
15332
|
-
* optional.
|
|
15333
|
-
*
|
|
15334
|
-
* A separate schema rather than loosening the shared one: every other method
|
|
15335
|
-
* on this cap addresses a row BY its id, and making that field optional
|
|
15336
|
-
* everywhere would turn a forgotten key into a silently generated one on
|
|
15337
|
-
* `update` and `delete` as well.
|
|
15338
|
-
*/
|
|
15339
|
-
var BulkRecordSchema = object({
|
|
15340
|
-
id: string().optional(),
|
|
15341
|
-
data: record(string(), unknown())
|
|
15342
|
-
});
|
|
15343
|
-
/**
|
|
15344
|
-
* Column declaration for a structured (SQL-backed) collection.
|
|
15345
|
-
*
|
|
15346
|
-
* Logical types — the backend translates each to the matching SQLite
|
|
15347
|
-
* storage class and handles per-type marshaling:
|
|
15348
|
-
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
15349
|
-
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
15350
|
-
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
15351
|
-
*/
|
|
15352
|
-
var CollectionColumnSchema = object({
|
|
15353
|
-
name: string(),
|
|
15354
|
-
type: _enum([
|
|
15355
|
-
"TEXT",
|
|
15356
|
-
"INTEGER",
|
|
15357
|
-
"REAL",
|
|
15358
|
-
"JSON",
|
|
15359
|
-
"BOOLEAN"
|
|
15360
|
-
]),
|
|
15361
|
-
primaryKey: boolean().optional(),
|
|
15362
|
-
notNull: boolean().optional(),
|
|
15363
|
-
unique: boolean().optional(),
|
|
15364
|
-
/**
|
|
15365
|
-
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
15366
|
-
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
15367
|
-
* collection surface simply cannot express their existing tables — which is
|
|
15368
|
-
* why they were still on the uncapped `table*` API.
|
|
15369
|
-
*/
|
|
15370
|
-
defaultValue: union([
|
|
15371
|
-
string(),
|
|
15372
|
-
number(),
|
|
15373
|
-
boolean()
|
|
15374
|
-
]).optional()
|
|
15375
|
-
});
|
|
15376
|
-
var CollectionIndexSchema = object({
|
|
15377
|
-
name: string(),
|
|
15378
|
-
columns: array(string()).readonly(),
|
|
15379
|
-
unique: boolean().optional()
|
|
15380
|
-
});
|
|
15381
|
-
method(object({
|
|
15382
|
-
namespace: string().optional(),
|
|
15383
|
-
collection: string(),
|
|
15384
|
-
key: string()
|
|
15385
|
-
}), unknown(), { auth: "admin" }), method(object({
|
|
15386
|
-
namespace: string().optional(),
|
|
15387
|
-
collection: string(),
|
|
15388
|
-
key: string(),
|
|
15389
|
-
value: unknown()
|
|
15390
|
-
}), _void(), {
|
|
15391
|
-
kind: "mutation",
|
|
15392
|
-
auth: "admin"
|
|
15393
|
-
}), method(object({
|
|
15394
|
-
namespace: string().optional(),
|
|
15395
|
-
collection: string(),
|
|
15396
|
-
filter: QueryFilterSchema.optional(),
|
|
15397
|
-
columns: array(string()).readonly().optional()
|
|
15398
|
-
}), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
|
|
15399
|
-
namespace: string().optional(),
|
|
15400
|
-
collection: string(),
|
|
15401
|
-
/** Declared columns identifying the slot; must be covered by a UNIQUE
|
|
15402
|
-
* index on the collection. Never empty. */
|
|
15403
|
-
conflict: array(string()).readonly(),
|
|
15404
|
-
record: BulkRecordSchema
|
|
15405
|
-
}), object({
|
|
15406
|
-
/** The id the row HAS: assigned by SQLite on an insert, or the existing
|
|
15407
|
-
* row's own id on an update. */
|
|
15408
|
-
id: union([string(), number()]) }), {
|
|
15409
|
-
kind: "mutation",
|
|
15410
|
-
auth: "admin"
|
|
15411
|
-
}), method(object({
|
|
15412
|
-
namespace: string().optional(),
|
|
15413
|
-
collection: string(),
|
|
15414
|
-
record: object({
|
|
15415
|
-
id: string().optional(),
|
|
15416
|
-
data: record(string(), unknown())
|
|
15417
|
-
})
|
|
15418
|
-
}), object({
|
|
15419
|
-
/**
|
|
15420
|
-
* The id the row ACTUALLY got (D473): the one supplied, the UUID minted
|
|
15421
|
-
* for an absent one, or the ROWID SQLite assigned on an `INTEGER`
|
|
15422
|
-
* primary key — which is the only place an auto key is knowable.
|
|
15423
|
-
*/
|
|
15424
|
-
id: union([string(), number()]) }), {
|
|
15425
|
-
kind: "mutation",
|
|
15426
|
-
auth: "admin"
|
|
15427
|
-
}), method(object({
|
|
15428
|
-
namespace: string().optional(),
|
|
15429
|
-
collection: string(),
|
|
15430
|
-
records: array(BulkRecordSchema).readonly()
|
|
15431
|
-
}), object({ inserted: number().int() }), {
|
|
15432
|
-
kind: "mutation",
|
|
15433
|
-
auth: "admin"
|
|
15434
|
-
}), method(object({
|
|
15435
|
-
namespace: string().optional(),
|
|
15436
|
-
collection: string(),
|
|
15437
|
-
id: string(),
|
|
15438
|
-
data: record(string(), unknown())
|
|
15439
|
-
}), _void(), {
|
|
15440
|
-
kind: "mutation",
|
|
15441
|
-
auth: "admin"
|
|
15442
|
-
}), method(object({
|
|
15443
|
-
namespace: string().optional(),
|
|
15444
|
-
collection: string(),
|
|
15445
|
-
key: string()
|
|
15446
|
-
}), _void(), {
|
|
15447
|
-
kind: "mutation",
|
|
15448
|
-
auth: "admin"
|
|
15449
|
-
}), method(object({
|
|
15450
|
-
namespace: string().optional(),
|
|
15451
|
-
collection: string(),
|
|
15452
|
-
filter: MutationFilterSchema
|
|
15453
|
-
}), object({ deleted: number().int() }), {
|
|
15454
|
-
kind: "mutation",
|
|
15455
|
-
auth: "admin"
|
|
15456
|
-
}), method(object({
|
|
15457
|
-
namespace: string().optional(),
|
|
15458
|
-
collection: string(),
|
|
15459
|
-
filter: MutationFilterSchema,
|
|
15460
|
-
data: record(string(), unknown())
|
|
15461
|
-
}), object({ updated: number().int() }), {
|
|
15462
|
-
kind: "mutation",
|
|
15463
|
-
auth: "admin"
|
|
15464
|
-
}), method(object({
|
|
15465
|
-
namespace: string().optional(),
|
|
15466
|
-
collection: string(),
|
|
15467
|
-
filter: QueryFilterSchema.optional()
|
|
15468
|
-
}), number(), { auth: "admin" }), method(object({
|
|
15469
|
-
namespace: string().optional(),
|
|
15470
|
-
collection: string(),
|
|
15471
|
-
fields: array(AggregateFieldSchema).readonly(),
|
|
15472
|
-
filter: QueryFilterSchema.optional()
|
|
15473
|
-
}), AggregateResultSchema, { auth: "admin" }), method(object({
|
|
15474
|
-
namespace: string().optional(),
|
|
15475
|
-
collection: string(),
|
|
15476
|
-
field: string(),
|
|
15477
|
-
bucketSize: number().int().positive(),
|
|
15478
|
-
origin: number().int(),
|
|
15479
|
-
filter: QueryFilterSchema.optional()
|
|
15480
|
-
}), array(object({
|
|
15481
|
-
bucket: number().int(),
|
|
15482
|
-
count: number().int()
|
|
15483
|
-
})).readonly(), { auth: "admin" }), method(object({
|
|
15484
|
-
namespace: string().optional(),
|
|
15485
|
-
collection: string()
|
|
15486
|
-
}), boolean(), { auth: "admin" }), method(object({
|
|
15487
|
-
namespace: string().optional(),
|
|
15488
|
-
collection: string(),
|
|
15489
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
15490
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15491
|
-
}), _void(), {
|
|
15492
|
-
kind: "mutation",
|
|
15493
|
-
auth: "admin"
|
|
15494
|
-
});
|
|
15495
|
-
/**
|
|
15496
15660
|
* What one engine says about itself. The orchestrator uses `kind` to pick
|
|
15497
15661
|
* a registrant for a collection; `engineId` is what a log line names when
|
|
15498
15662
|
* a call is routed or refused.
|
|
@@ -15572,6 +15736,14 @@ id: union([string(), number()]) }), {
|
|
|
15572
15736
|
}), object({ id: union([string(), number()]) }), {
|
|
15573
15737
|
kind: "mutation",
|
|
15574
15738
|
auth: "admin"
|
|
15739
|
+
}), method(object({
|
|
15740
|
+
namespace: string().optional(),
|
|
15741
|
+
collection: string(),
|
|
15742
|
+
conflict: array(string()).readonly(),
|
|
15743
|
+
records: array(BulkRecordSchema).readonly()
|
|
15744
|
+
}), object({ upserted: number().int() }), {
|
|
15745
|
+
kind: "mutation",
|
|
15746
|
+
auth: "admin"
|
|
15575
15747
|
}), method(object({
|
|
15576
15748
|
namespace: string().optional(),
|
|
15577
15749
|
collection: string(),
|
|
@@ -15579,6 +15751,16 @@ id: union([string(), number()]) }), {
|
|
|
15579
15751
|
}), object({ inserted: number().int() }), {
|
|
15580
15752
|
kind: "mutation",
|
|
15581
15753
|
auth: "admin"
|
|
15754
|
+
}), method(object({
|
|
15755
|
+
namespace: string().optional(),
|
|
15756
|
+
guard: TransactGuardSchema.optional(),
|
|
15757
|
+
ops: array(TransactOpSchema).readonly()
|
|
15758
|
+
}), object({
|
|
15759
|
+
applied: boolean(),
|
|
15760
|
+
current: unknown().optional()
|
|
15761
|
+
}), {
|
|
15762
|
+
kind: "mutation",
|
|
15763
|
+
auth: "admin"
|
|
15582
15764
|
}), method(object({
|
|
15583
15765
|
namespace: string().optional(),
|
|
15584
15766
|
collection: string(),
|
|
@@ -15631,12 +15813,7 @@ id: union([string(), number()]) }), {
|
|
|
15631
15813
|
})).readonly(), { auth: "admin" }), method(object({
|
|
15632
15814
|
namespace: string().optional(),
|
|
15633
15815
|
collection: string()
|
|
15634
|
-
}), boolean(), { auth: "admin" }), method(
|
|
15635
|
-
namespace: string().optional(),
|
|
15636
|
-
collection: string(),
|
|
15637
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
15638
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15639
|
-
}), _void(), {
|
|
15816
|
+
}), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
|
|
15640
15817
|
kind: "mutation",
|
|
15641
15818
|
auth: "admin"
|
|
15642
15819
|
});
|
|
@@ -20338,6 +20515,12 @@ var NcSystemEventKindSchema = _enum([
|
|
|
20338
20515
|
"node-updating",
|
|
20339
20516
|
"node-inference-unavailable",
|
|
20340
20517
|
"detection-blind",
|
|
20518
|
+
"recording-stalled",
|
|
20519
|
+
"recording-healthy",
|
|
20520
|
+
"recording-degraded",
|
|
20521
|
+
"storage-location-low",
|
|
20522
|
+
"storage-location-critical",
|
|
20523
|
+
"storage-location-ok",
|
|
20341
20524
|
"addon-crash-loop",
|
|
20342
20525
|
"addon-update-available",
|
|
20343
20526
|
"server-update-available",
|
|
@@ -24009,6 +24192,58 @@ var RetrainBboxSchema = object({
|
|
|
24009
24192
|
h: number()
|
|
24010
24193
|
});
|
|
24011
24194
|
/**
|
|
24195
|
+
* What a box LOOKED LIKE when it was offered, snapshotted at the moment the
|
|
24196
|
+
* operator accepted it. The saved row keeps only the final rectangle; this is
|
|
24197
|
+
* the other half of the pair, and the pair is what says whether the operator
|
|
24198
|
+
* accepted, nudged, relabelled or replaced a proposal (`retrain-review.ts`).
|
|
24199
|
+
*
|
|
24200
|
+
* `ref` names the proposal inside its frame: `pipeline:<trackId>` for a box the
|
|
24201
|
+
* live pipeline drew, `assist:<n>` for the n-th box of a detector or LLM run,
|
|
24202
|
+
* and anything unique for an operator-drawn box (`operator:<n>`). Re-derived
|
|
24203
|
+
* pipeline boxes carry the same ref every time, which is what lets a dismissal
|
|
24204
|
+
* stay dismissed.
|
|
24205
|
+
*/
|
|
24206
|
+
var RetrainOriginSchema = object({
|
|
24207
|
+
source: RetrainAnnotationSourceSchema,
|
|
24208
|
+
ref: string().min(1),
|
|
24209
|
+
bbox: RetrainBboxSchema,
|
|
24210
|
+
macroClass: RetrainMacroClassSchema,
|
|
24211
|
+
label: string().optional(),
|
|
24212
|
+
score: number().optional(),
|
|
24213
|
+
modelId: string().optional()
|
|
24214
|
+
});
|
|
24215
|
+
/**
|
|
24216
|
+
* A proposal the operator deleted. Durable on the frame, so a deleted pipeline
|
|
24217
|
+
* box does not come back as a draft every time the frame is reopened, and so
|
|
24218
|
+
* the deletion itself is a recorded fact rather than an absence.
|
|
24219
|
+
*/
|
|
24220
|
+
var RetrainDismissedSchema = object({
|
|
24221
|
+
ref: string().min(1),
|
|
24222
|
+
snapshot: RetrainOriginSchema
|
|
24223
|
+
});
|
|
24224
|
+
/** What the operator did with a proposal (see `retrain-review.ts`). */
|
|
24225
|
+
var RetrainReviewStatusSchema = _enum(RETRAIN_REVIEW_STATUSES);
|
|
24226
|
+
var RetrainFrameReviewSchema = object({
|
|
24227
|
+
boxes: array(object({
|
|
24228
|
+
ref: string(),
|
|
24229
|
+
savedId: string().optional(),
|
|
24230
|
+
status: RetrainReviewStatusSchema,
|
|
24231
|
+
/** The baseline was re-derived, not snapshotted (a pre-origin row). */
|
|
24232
|
+
approximate: boolean(),
|
|
24233
|
+
origin: RetrainOriginSchema.optional(),
|
|
24234
|
+
/** The class / label the box carries NOW (a removed box: its origin's). Absent on an older hub. */
|
|
24235
|
+
macroClass: RetrainMacroClassSchema.optional(),
|
|
24236
|
+
label: string().optional(),
|
|
24237
|
+
iou: number().optional()
|
|
24238
|
+
})).readonly(),
|
|
24239
|
+
summary: object({
|
|
24240
|
+
counts: record(RetrainReviewStatusSchema, number().int()),
|
|
24241
|
+
total: number().int(),
|
|
24242
|
+
changed: number().int(),
|
|
24243
|
+
approximate: boolean()
|
|
24244
|
+
})
|
|
24245
|
+
});
|
|
24246
|
+
/**
|
|
24012
24247
|
* One annotated subject.
|
|
24013
24248
|
*
|
|
24014
24249
|
* `bbox` is normalised against the full frame, ALWAYS. The per-model shapes
|
|
@@ -24032,6 +24267,9 @@ var RetrainAnnotationSchema = object({
|
|
|
24032
24267
|
/** Which model proposed this box — or, on a `model_error`, drew the phantom. */
|
|
24033
24268
|
assistModelId: string().optional(),
|
|
24034
24269
|
assistScore: number().optional(),
|
|
24270
|
+
/** The proposal this box started from, snapshotted at accept time. `null` on
|
|
24271
|
+
* a row saved before origins existed; absent on a draft nobody snapshotted. */
|
|
24272
|
+
origin: RetrainOriginSchema.nullable().optional(),
|
|
24035
24273
|
exportedInBatch: string().optional(),
|
|
24036
24274
|
createdAt: number()
|
|
24037
24275
|
});
|
|
@@ -24124,7 +24362,19 @@ var RetrainFrameSchema = object({
|
|
|
24124
24362
|
* empty when nothing the track store holds can be placed on it. */
|
|
24125
24363
|
pipelineBoxes: array(RetrainPipelineBoxSchema).readonly().optional(),
|
|
24126
24364
|
/** The named collections this frame belongs to. Present on list answers. */
|
|
24127
|
-
collectionIds: array(string()).readonly().optional()
|
|
24365
|
+
collectionIds: array(string()).readonly().optional(),
|
|
24366
|
+
/** Bumped by every annotation save. A save that names a stale
|
|
24367
|
+
* `expectedRevision` is refused, so two surfaces cannot overwrite each other. */
|
|
24368
|
+
revision: number().int().optional(),
|
|
24369
|
+
/** Proposals the operator deleted — never re-seeded as drafts. */
|
|
24370
|
+
dismissed: array(RetrainDismissedSchema).readonly().optional(),
|
|
24371
|
+
/** What the operator did with the proposals, computed by the server. */
|
|
24372
|
+
review: RetrainFrameReviewSchema.optional(),
|
|
24373
|
+
/** The frame's pixels over the admin data plane (full size). Fetch with the
|
|
24374
|
+
* admin bearer token; relative to the hub root. */
|
|
24375
|
+
imageUrl: string().optional(),
|
|
24376
|
+
/** The same, as a ~480 px thumbnail for grids. */
|
|
24377
|
+
thumbnailUrl: string().optional()
|
|
24128
24378
|
});
|
|
24129
24379
|
/** Why a copy-on-select could not be honoured — named, never a silent skip. */
|
|
24130
24380
|
var RetrainCopyRefusalSchema = _enum([
|
|
@@ -25203,10 +25453,33 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
25203
25453
|
/** The frame's track, when it has one — checked against the frame. */
|
|
25204
25454
|
trackId: string().optional(),
|
|
25205
25455
|
frameId: string(),
|
|
25206
|
-
annotations: array(RetrainAnnotationDraftSchema)
|
|
25456
|
+
annotations: array(RetrainAnnotationDraftSchema),
|
|
25457
|
+
/** The frame's `revision` the caller saw. A different current revision
|
|
25458
|
+
* refuses the save with a `retrain-revision-conflict` error
|
|
25459
|
+
* (`parseRetrainRevisionConflict`). Absent ⇒ last write wins. */
|
|
25460
|
+
expectedRevision: number().int().optional(),
|
|
25461
|
+
/** The proposals the operator deleted. Absent ⇒ keep the frame's
|
|
25462
|
+
* current set; present ⇒ replace it (an empty array un-dismisses). */
|
|
25463
|
+
dismissed: array(RetrainDismissedSchema).optional()
|
|
25207
25464
|
}), array(RetrainAnnotationSchema).readonly(), {
|
|
25208
25465
|
kind: "mutation",
|
|
25209
25466
|
auth: "admin"
|
|
25467
|
+
}), method(object({
|
|
25468
|
+
deviceId: number(),
|
|
25469
|
+
trackId: string().optional(),
|
|
25470
|
+
frameId: string(),
|
|
25471
|
+
expectedRevision: number().int().optional(),
|
|
25472
|
+
origins: array(object({
|
|
25473
|
+
annotationId: string(),
|
|
25474
|
+
origin: RetrainOriginSchema
|
|
25475
|
+
})).min(1).max(500)
|
|
25476
|
+
}), object({
|
|
25477
|
+
updated: number().int(),
|
|
25478
|
+
skipped: number().int(),
|
|
25479
|
+
revision: number().int()
|
|
25480
|
+
}), {
|
|
25481
|
+
kind: "mutation",
|
|
25482
|
+
auth: "admin"
|
|
25210
25483
|
}), method(object({
|
|
25211
25484
|
deviceId: number(),
|
|
25212
25485
|
trackId: string()
|
|
@@ -27822,6 +28095,12 @@ var CameraStepOverridePatchSchema = object({
|
|
|
27822
28095
|
settings: record(string(), unknown()).readonly().optional()
|
|
27823
28096
|
});
|
|
27824
28097
|
var CameraStepSettingsSchema = record(string(), record(string(), unknown()).readonly());
|
|
28098
|
+
/** The three root-detector choices a camera has (D507: at most one root). */
|
|
28099
|
+
var CameraDetectionSourceSchema = _enum([
|
|
28100
|
+
"pipeline",
|
|
28101
|
+
"onboard",
|
|
28102
|
+
"none"
|
|
28103
|
+
]);
|
|
27825
28104
|
var CameraPipelineSettingsSchema = object({
|
|
27826
28105
|
stepToggles: record(string(), boolean()).optional(),
|
|
27827
28106
|
stepSettings: CameraStepSettingsSchema.optional(),
|
|
@@ -28399,6 +28678,26 @@ method(object({
|
|
|
28399
28678
|
}), object({ success: literal(true) }), {
|
|
28400
28679
|
kind: "mutation",
|
|
28401
28680
|
auth: "admin"
|
|
28681
|
+
}), method(object({ deviceId: number() }), object({
|
|
28682
|
+
source: CameraDetectionSourceSchema,
|
|
28683
|
+
explicit: boolean(),
|
|
28684
|
+
onboard: object({
|
|
28685
|
+
/** The camera has an onboard detector this system can read. */
|
|
28686
|
+
available: boolean(),
|
|
28687
|
+
/** What its detections carry — a camera with no box cannot be a root step. */
|
|
28688
|
+
geometry: _enum([
|
|
28689
|
+
"boxed",
|
|
28690
|
+
"while-streaming",
|
|
28691
|
+
"flag-only",
|
|
28692
|
+
"unknown"
|
|
28693
|
+
])
|
|
28694
|
+
})
|
|
28695
|
+
})), method(object({
|
|
28696
|
+
deviceId: number(),
|
|
28697
|
+
source: CameraDetectionSourceSchema
|
|
28698
|
+
}), object({ success: literal(true) }), {
|
|
28699
|
+
kind: "mutation",
|
|
28700
|
+
auth: "admin"
|
|
28402
28701
|
}), method(object({ deviceId: number() }), record(string(), record(string(), record(string(), CameraStepOverridePatchSchema))).nullable()), method(object({
|
|
28403
28702
|
deviceId: number(),
|
|
28404
28703
|
agentNodeId: string(),
|
|
@@ -31765,6 +32064,17 @@ var BatteryStatusSchema = object({
|
|
|
31765
32064
|
*/
|
|
31766
32065
|
lastContactAt: number().optional(),
|
|
31767
32066
|
/**
|
|
32067
|
+
* Ms epoch of the last COMPLETE scheduled refresh — every fact the provider
|
|
32068
|
+
* holds for the device (level, charging, link, device info, state slices) and
|
|
32069
|
+
* its cached snapshot, read together. Absent = never since this slice was
|
|
32070
|
+
* born. Unlike `lastUpdated` (any write, even a push of one field) this is
|
|
32071
|
+
* the staleness an operator can trust: the provider owns the device fact and
|
|
32072
|
+
* so owns the window on its age (D224, D847). Not a clock in the
|
|
32073
|
+
* runtime-state-durability sense: it moves once per window and must survive
|
|
32074
|
+
* a restart, or every restart would owe the camera a wake.
|
|
32075
|
+
*/
|
|
32076
|
+
lastFullRefreshAt: number().optional(),
|
|
32077
|
+
/**
|
|
31768
32078
|
* True when the source is a BINARY low-battery indicator (HA
|
|
31769
32079
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
31770
32080
|
* charge level — `percentage` is then a coarse stand-in (100 = normal,
|
|
@@ -31828,6 +32138,18 @@ var CalendarInfoSchema = object({
|
|
|
31828
32138
|
source: CalendarSourceKindSchema,
|
|
31829
32139
|
enabled: boolean()
|
|
31830
32140
|
});
|
|
32141
|
+
/**
|
|
32142
|
+
* Time contract of {@link CalendarEvent}.
|
|
32143
|
+
*
|
|
32144
|
+
* - Timed event: `startMs` / `endMs` are real instants; `endMs` is exclusive.
|
|
32145
|
+
* - All-day event (`allDay: true`): the event is a run of calendar DATES, not
|
|
32146
|
+
* instants. `startMs` is UTC midnight of the first date and `endMs` is UTC
|
|
32147
|
+
* midnight of the day AFTER the last date (RFC 5545 exclusive DTEND), so a
|
|
32148
|
+
* one-day event spans exactly 24 h. Every provider produces that and no
|
|
32149
|
+
* consumer may read the instants in a local timezone: use
|
|
32150
|
+
* {@link calendarEventLocalSpan}. Reading UTC midnight as local time put an
|
|
32151
|
+
* all-day event on the following day for any viewer ahead of UTC.
|
|
32152
|
+
*/
|
|
31831
32153
|
var CalendarEventSchema = object({
|
|
31832
32154
|
id: string().min(1),
|
|
31833
32155
|
calendarId: string().min(1),
|
|
@@ -33970,7 +34292,15 @@ var HubAddressBookSchema = object({
|
|
|
33970
34292
|
publicEndpoint: HubAddressRoleResolutionSchema
|
|
33971
34293
|
}),
|
|
33972
34294
|
/** The `hub=` an app link carries (D709), or null. */
|
|
33973
|
-
appLinkHub: string().nullable()
|
|
34295
|
+
appLinkHub: string().nullable(),
|
|
34296
|
+
/**
|
|
34297
|
+
* Every origin a browser can really reach this hub at, in the scheme each
|
|
34298
|
+
* listener serves: `https://<lan>:<httpsPort>`, and `http://<lan>:<httpPort>`
|
|
34299
|
+
* while LAN HTTP is on, plus the public and custom addresses. Distinct from
|
|
34300
|
+
* `rows`, which show `http://` only while LAN HTTP is on. Never loopback,
|
|
34301
|
+
* never the app link. Absent on a hub older than D794's amendment.
|
|
34302
|
+
*/
|
|
34303
|
+
listenerOrigins: array(string()).readonly().optional()
|
|
33974
34304
|
});
|
|
33975
34305
|
var AllowedAddressesSchema = object({
|
|
33976
34306
|
/**
|
|
@@ -34980,7 +35310,14 @@ var TopologyNodeSchema = object({
|
|
|
34980
35310
|
* completed a mutual-TLS handshake, `clear` otherwise. Absent for the hub,
|
|
34981
35311
|
* for offline rows and when the hub cannot tell.
|
|
34982
35312
|
*/
|
|
34983
|
-
meshTransport: _enum(["tls", "clear"]).optional()
|
|
35313
|
+
meshTransport: _enum(["tls", "clear"]).optional(),
|
|
35314
|
+
/**
|
|
35315
|
+
* Whether the hub holds this online AGENT's capability registration (its
|
|
35316
|
+
* `registerNode` manifest). `false` = online in the mesh but not ready: the
|
|
35317
|
+
* hub dropped the registration on a disconnect only it saw and the agent has
|
|
35318
|
+
* not re-sent it. Absent for the hub and offline rows.
|
|
35319
|
+
*/
|
|
35320
|
+
capabilitiesRegistered: boolean().optional()
|
|
34984
35321
|
});
|
|
34985
35322
|
var CapUsageEdgeSchema = object({
|
|
34986
35323
|
callerAddonId: string(),
|
|
@@ -40822,6 +41159,12 @@ Object.freeze({
|
|
|
40822
41159
|
addonId: null,
|
|
40823
41160
|
access: "view"
|
|
40824
41161
|
},
|
|
41162
|
+
"backup.listAvailableDatabases": {
|
|
41163
|
+
capName: "backup",
|
|
41164
|
+
capScope: "system",
|
|
41165
|
+
addonId: null,
|
|
41166
|
+
access: "view"
|
|
41167
|
+
},
|
|
40825
41168
|
"backup.listDestinations": {
|
|
40826
41169
|
capName: "backup",
|
|
40827
41170
|
capScope: "system",
|
|
@@ -41518,6 +41861,12 @@ Object.freeze({
|
|
|
41518
41861
|
addonId: null,
|
|
41519
41862
|
access: "create"
|
|
41520
41863
|
},
|
|
41864
|
+
"dataStoreProvider.transact": {
|
|
41865
|
+
capName: "data-store-provider",
|
|
41866
|
+
capScope: "system",
|
|
41867
|
+
addonId: null,
|
|
41868
|
+
access: "create"
|
|
41869
|
+
},
|
|
41521
41870
|
"dataStoreProvider.update": {
|
|
41522
41871
|
capName: "data-store-provider",
|
|
41523
41872
|
capScope: "system",
|
|
@@ -41536,6 +41885,12 @@ Object.freeze({
|
|
|
41536
41885
|
addonId: null,
|
|
41537
41886
|
access: "create"
|
|
41538
41887
|
},
|
|
41888
|
+
"dataStoreProvider.upsertMany": {
|
|
41889
|
+
capName: "data-store-provider",
|
|
41890
|
+
capScope: "system",
|
|
41891
|
+
addonId: null,
|
|
41892
|
+
access: "create"
|
|
41893
|
+
},
|
|
41539
41894
|
"dayNight.getOptions": {
|
|
41540
41895
|
capName: "day-night",
|
|
41541
41896
|
capScope: "device",
|
|
@@ -44362,6 +44717,12 @@ Object.freeze({
|
|
|
44362
44717
|
addonId: null,
|
|
44363
44718
|
access: "create"
|
|
44364
44719
|
},
|
|
44720
|
+
"pipelineAnalytics.backfillRetrainOrigins": {
|
|
44721
|
+
capName: "pipeline-analytics",
|
|
44722
|
+
capScope: "device",
|
|
44723
|
+
addonId: null,
|
|
44724
|
+
access: "create"
|
|
44725
|
+
},
|
|
44365
44726
|
"pipelineAnalytics.cancelRelocateMedia": {
|
|
44366
44727
|
capName: "pipeline-analytics",
|
|
44367
44728
|
capScope: "device",
|
|
@@ -45142,6 +45503,12 @@ Object.freeze({
|
|
|
45142
45503
|
addonId: null,
|
|
45143
45504
|
access: "view"
|
|
45144
45505
|
},
|
|
45506
|
+
"pipelineOrchestrator.getCameraDetectionSource": {
|
|
45507
|
+
capName: "pipeline-orchestrator",
|
|
45508
|
+
capScope: "system",
|
|
45509
|
+
addonId: null,
|
|
45510
|
+
access: "view"
|
|
45511
|
+
},
|
|
45145
45512
|
"pipelineOrchestrator.getCameraMetrics": {
|
|
45146
45513
|
capName: "pipeline-orchestrator",
|
|
45147
45514
|
capScope: "system",
|
|
@@ -45370,6 +45737,12 @@ Object.freeze({
|
|
|
45370
45737
|
addonId: null,
|
|
45371
45738
|
access: "create"
|
|
45372
45739
|
},
|
|
45740
|
+
"pipelineOrchestrator.setCameraDetectionSource": {
|
|
45741
|
+
capName: "pipeline-orchestrator",
|
|
45742
|
+
capScope: "system",
|
|
45743
|
+
addonId: null,
|
|
45744
|
+
access: "create"
|
|
45745
|
+
},
|
|
45373
45746
|
"pipelineOrchestrator.setCameraPipelineForAgent": {
|
|
45374
45747
|
capName: "pipeline-orchestrator",
|
|
45375
45748
|
capScope: "system",
|
|
@@ -46342,6 +46715,12 @@ Object.freeze({
|
|
|
46342
46715
|
addonId: null,
|
|
46343
46716
|
access: "create"
|
|
46344
46717
|
},
|
|
46718
|
+
"settingsStore.transact": {
|
|
46719
|
+
capName: "settings-store",
|
|
46720
|
+
capScope: "system",
|
|
46721
|
+
addonId: null,
|
|
46722
|
+
access: "create"
|
|
46723
|
+
},
|
|
46345
46724
|
"settingsStore.update": {
|
|
46346
46725
|
capName: "settings-store",
|
|
46347
46726
|
capScope: "system",
|
|
@@ -46360,6 +46739,12 @@ Object.freeze({
|
|
|
46360
46739
|
addonId: null,
|
|
46361
46740
|
access: "create"
|
|
46362
46741
|
},
|
|
46742
|
+
"settingsStore.upsertMany": {
|
|
46743
|
+
capName: "settings-store",
|
|
46744
|
+
capScope: "system",
|
|
46745
|
+
addonId: null,
|
|
46746
|
+
access: "create"
|
|
46747
|
+
},
|
|
46363
46748
|
"smoke.getStatus": {
|
|
46364
46749
|
capName: "smoke",
|
|
46365
46750
|
capScope: "device",
|
|
@@ -46822,6 +47207,12 @@ Object.freeze({
|
|
|
46822
47207
|
addonId: null,
|
|
46823
47208
|
access: "view"
|
|
46824
47209
|
},
|
|
47210
|
+
"streamBroker.getLiveViewerCounts": {
|
|
47211
|
+
capName: "stream-broker",
|
|
47212
|
+
capScope: "system",
|
|
47213
|
+
addonId: null,
|
|
47214
|
+
access: "view"
|
|
47215
|
+
},
|
|
46825
47216
|
"streamBroker.getPreBufferInfo": {
|
|
46826
47217
|
capName: "stream-broker",
|
|
46827
47218
|
capScope: "system",
|
|
@@ -50666,6 +51057,11 @@ Object.freeze({
|
|
|
50666
51057
|
form: "single",
|
|
50667
51058
|
optional: false
|
|
50668
51059
|
}],
|
|
51060
|
+
"pipelineAnalytics.backfillRetrainOrigins": [{
|
|
51061
|
+
name: "deviceId",
|
|
51062
|
+
form: "single",
|
|
51063
|
+
optional: false
|
|
51064
|
+
}],
|
|
50669
51065
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
50670
51066
|
name: "deviceId",
|
|
50671
51067
|
form: "single",
|
|
@@ -50971,6 +51367,11 @@ Object.freeze({
|
|
|
50971
51367
|
form: "single",
|
|
50972
51368
|
optional: false
|
|
50973
51369
|
}],
|
|
51370
|
+
"pipelineOrchestrator.getCameraDetectionSource": [{
|
|
51371
|
+
name: "deviceId",
|
|
51372
|
+
form: "single",
|
|
51373
|
+
optional: false
|
|
51374
|
+
}],
|
|
50974
51375
|
"pipelineOrchestrator.getCameraMetrics": [{
|
|
50975
51376
|
name: "deviceId",
|
|
50976
51377
|
form: "single",
|
|
@@ -51031,6 +51432,11 @@ Object.freeze({
|
|
|
51031
51432
|
form: "single",
|
|
51032
51433
|
optional: false
|
|
51033
51434
|
}],
|
|
51435
|
+
"pipelineOrchestrator.setCameraDetectionSource": [{
|
|
51436
|
+
name: "deviceId",
|
|
51437
|
+
form: "single",
|
|
51438
|
+
optional: false
|
|
51439
|
+
}],
|
|
51034
51440
|
"pipelineOrchestrator.setCameraPipelineForAgent": [{
|
|
51035
51441
|
name: "deviceId",
|
|
51036
51442
|
form: "single",
|
|
@@ -52060,6 +52466,9 @@ new Map(Object.entries({
|
|
|
52060
52466
|
"stream-online": "device-events",
|
|
52061
52467
|
"stream-offline": "device-events",
|
|
52062
52468
|
"detection-blind": "device-events",
|
|
52469
|
+
"recording-stalled": "device-events",
|
|
52470
|
+
"recording-healthy": "device-events",
|
|
52471
|
+
"recording-degraded": "device-events",
|
|
52063
52472
|
"node-online": "system",
|
|
52064
52473
|
"node-offline": "system",
|
|
52065
52474
|
"node-restarting": "system",
|
|
@@ -52073,6 +52482,9 @@ new Map(Object.entries({
|
|
|
52073
52482
|
"wrapper-update-available": "system",
|
|
52074
52483
|
"backup-completed": "system",
|
|
52075
52484
|
"export-completed": "system",
|
|
52485
|
+
"storage-location-low": "system",
|
|
52486
|
+
"storage-location-critical": "system",
|
|
52487
|
+
"storage-location-ok": "system",
|
|
52076
52488
|
"alarm-triggered": "alarm",
|
|
52077
52489
|
"alarm-armed": "alarm",
|
|
52078
52490
|
"alarm-disarmed": "alarm",
|
|
@@ -52134,6 +52546,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
52134
52546
|
label: "Detecting nothing",
|
|
52135
52547
|
kinds: ["detection-blind"]
|
|
52136
52548
|
},
|
|
52549
|
+
{
|
|
52550
|
+
id: "recording",
|
|
52551
|
+
family: "device-events",
|
|
52552
|
+
label: "Recording",
|
|
52553
|
+
kinds: [
|
|
52554
|
+
"recording-stalled",
|
|
52555
|
+
"recording-healthy",
|
|
52556
|
+
"recording-degraded"
|
|
52557
|
+
]
|
|
52558
|
+
},
|
|
52137
52559
|
{
|
|
52138
52560
|
id: "nodes",
|
|
52139
52561
|
family: "system",
|
|
@@ -52174,6 +52596,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
52174
52596
|
label: "Backups & exports",
|
|
52175
52597
|
kinds: ["backup-completed", "export-completed"]
|
|
52176
52598
|
},
|
|
52599
|
+
{
|
|
52600
|
+
id: "storage",
|
|
52601
|
+
family: "system",
|
|
52602
|
+
label: "Storage locations",
|
|
52603
|
+
kinds: [
|
|
52604
|
+
"storage-location-low",
|
|
52605
|
+
"storage-location-critical",
|
|
52606
|
+
"storage-location-ok"
|
|
52607
|
+
]
|
|
52608
|
+
},
|
|
52177
52609
|
{
|
|
52178
52610
|
id: "alarm",
|
|
52179
52611
|
family: "alarm",
|
|
@@ -52256,6 +52688,9 @@ var DEVICE_EVENTS = [
|
|
|
52256
52688
|
"stream-online",
|
|
52257
52689
|
"stream-offline",
|
|
52258
52690
|
"detection-blind",
|
|
52691
|
+
"recording-stalled",
|
|
52692
|
+
"recording-healthy",
|
|
52693
|
+
"recording-degraded",
|
|
52259
52694
|
...ALARM
|
|
52260
52695
|
];
|
|
52261
52696
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -52423,6 +52858,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
52423
52858
|
[...RULE_TEXT],
|
|
52424
52859
|
[...RULE_TEXT],
|
|
52425
52860
|
[...RULE_TEXT],
|
|
52861
|
+
[...RULE_TEXT],
|
|
52862
|
+
[...RULE_TEXT],
|
|
52863
|
+
[...RULE_TEXT],
|
|
52864
|
+
[...RULE_TEXT],
|
|
52865
|
+
[...RULE_TEXT],
|
|
52426
52866
|
([...RULE_TEXT], [...UPDATES]),
|
|
52427
52867
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|
|
52428
52868
|
([...RULE_TEXT], [...PACKAGE_UPDATES]),
|