@camstack/addon-osd-manager 0.1.230 → 0.1.232

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.
Files changed (18) hide show
  1. package/dist/{MotionZonesSettings-BoZX0EA6.mjs → MotionZonesSettings-BUfAeCb9.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-CxHO2qra.mjs → PrivacyMaskSettings-DCiVENI7.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-CAsOsf89.mjs → SceneMonitorEditor-QJK6lsVI.mjs} +3 -3
  4. package/dist/_stub.js +11 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-Dn07Z4W0.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CAOir0cS.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bt5Kr9Ny.mjs +26 -0
  7. package/dist/{hostInit-CveEAn98.mjs → hostInit-Dbvn6lvK.mjs} +2 -2
  8. package/dist/index.js +414 -291
  9. package/dist/index.mjs +414 -291
  10. package/dist/{player-overlays-Doc1cX7w.mjs → player-overlays-WTItux9g.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-BYfbQ41D.mjs → responsive-DyNResGR.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-Cc65RL6B.mjs → scene-monitor-copy-BkDgwFUj.mjs} +1 -1
  14. package/dist/{square-JbfO0HcN.mjs → square-BPjWB7wb.mjs} +1 -1
  15. package/dist/{trash-2-CdL__eUm.mjs → trash-2-CMwOL-8u.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-DWWv2Jrw.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-59JaRQ1j.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Dqo2wINy.mjs +0 -26
package/dist/index.mjs CHANGED
@@ -13022,6 +13022,329 @@ method(object({
13022
13022
  password: string()
13023
13023
  }), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
13024
13024
  /**
13025
+ * Query filter for settings-store collections.
13026
+ */
13027
+ var QueryFilterSchema = object({
13028
+ where: record(string(), unknown()).optional(),
13029
+ whereIn: record(string(), array(unknown())).optional(),
13030
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
13031
+ /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
13032
+ whereNot: record(string(), unknown()).optional(),
13033
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
13034
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
13035
+ whereNotIn: record(string(), array(unknown())).optional(),
13036
+ orderBy: object({
13037
+ field: string(),
13038
+ direction: _enum(["asc", "desc"])
13039
+ }).optional(),
13040
+ limit: number().optional(),
13041
+ offset: number().optional()
13042
+ });
13043
+ /**
13044
+ * The predicate half of a filter, for BULK MUTATIONS.
13045
+ *
13046
+ * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
13047
+ * meaning for a statement that rewrites a set, and accepting them would invite
13048
+ * a caller to believe `limit` bounds the damage. Every field is optional here
13049
+ * only so the shape stays composable — the implementation REJECTS a filter
13050
+ * that compiles to no predicate, because that is the whole collection.
13051
+ */
13052
+ var MutationFilterSchema = object({
13053
+ where: record(string(), unknown()).optional(),
13054
+ whereIn: record(string(), array(unknown())).optional(),
13055
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
13056
+ whereNot: record(string(), unknown()).optional(),
13057
+ whereNotIn: record(string(), array(unknown())).optional()
13058
+ });
13059
+ /**
13060
+ * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
13061
+ *
13062
+ * `as` names the slot in the result, so the SAME column may be asked twice with
13063
+ * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
13064
+ * a `Record<column, op>` shape could not express.
13065
+ */
13066
+ var AggregateFieldSchema = object({
13067
+ /** Result key. */
13068
+ as: string().min(1),
13069
+ /** Column to aggregate. Must be a real column of a declared collection. */
13070
+ field: string().min(1),
13071
+ op: _enum([
13072
+ "sum",
13073
+ "min",
13074
+ "max"
13075
+ ])
13076
+ });
13077
+ /**
13078
+ * `COUNT(*)` plus one number per requested field.
13079
+ *
13080
+ * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
13081
+ * that really is 0 are different facts, and an accounting caller that renders
13082
+ * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
13083
+ */
13084
+ var AggregateResultSchema = object({
13085
+ count: number().int(),
13086
+ values: record(string(), number().nullable())
13087
+ });
13088
+ /** A single stored record: `{ id, data }`. */
13089
+ var SettingsRecordSchema = object({
13090
+ id: string(),
13091
+ data: record(string(), unknown())
13092
+ });
13093
+ /**
13094
+ * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
13095
+ * optional.
13096
+ *
13097
+ * A separate schema rather than loosening the shared one: every other method
13098
+ * on this cap addresses a row BY its id, and making that field optional
13099
+ * everywhere would turn a forgotten key into a silently generated one on
13100
+ * `update` and `delete` as well.
13101
+ */
13102
+ var BulkRecordSchema = object({
13103
+ id: string().optional(),
13104
+ data: record(string(), unknown())
13105
+ });
13106
+ /**
13107
+ * The database FILES one `sqlite-settings` engine process owns (D851).
13108
+ * Closed on purpose: a file is a thing the engine opens, backs up and gives a
13109
+ * serving thread, so a new one is a code change, never a string a caller
13110
+ * invents. `settings` is `camstack.db` and the default for every collection
13111
+ * that names no file.
13112
+ */
13113
+ var DataStoreDatabaseSchema = _enum([
13114
+ "settings",
13115
+ "events",
13116
+ "history"
13117
+ ]);
13118
+ DataStoreDatabaseSchema.options;
13119
+ /**
13120
+ * One write inside a {@link settingsStoreCapability.methods.transact} call.
13121
+ * The three that a "replace this set, bump that revision" write needs, plus
13122
+ * the batched upsert a rollup writer needs.
13123
+ */
13124
+ var TransactOpSchema = discriminatedUnion("op", [
13125
+ object({
13126
+ op: literal("deleteWhere"),
13127
+ collection: string(),
13128
+ filter: MutationFilterSchema
13129
+ }),
13130
+ object({
13131
+ op: literal("insertMany"),
13132
+ collection: string(),
13133
+ records: array(BulkRecordSchema).readonly()
13134
+ }),
13135
+ object({
13136
+ op: literal("update"),
13137
+ collection: string(),
13138
+ id: string(),
13139
+ data: record(string(), unknown())
13140
+ }),
13141
+ object({
13142
+ op: literal("upsertMany"),
13143
+ collection: string(),
13144
+ conflict: array(string()).readonly(),
13145
+ records: array(BulkRecordSchema).readonly()
13146
+ })
13147
+ ]);
13148
+ /**
13149
+ * The precondition of a transaction: the row `key` of `collection` must hold
13150
+ * `equals` in `column`, read INSIDE the transaction.
13151
+ */
13152
+ var TransactGuardSchema = object({
13153
+ collection: string(),
13154
+ key: string(),
13155
+ column: string(),
13156
+ equals: unknown()
13157
+ });
13158
+ /**
13159
+ * Column declaration for a structured (SQL-backed) collection.
13160
+ *
13161
+ * Logical types — the backend translates each to the matching SQLite
13162
+ * storage class and handles per-type marshaling:
13163
+ * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
13164
+ * - `JSON` — TEXT under the hood; serialised on write, parsed on read
13165
+ * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
13166
+ */
13167
+ var CollectionColumnSchema = object({
13168
+ name: string(),
13169
+ type: _enum([
13170
+ "TEXT",
13171
+ "INTEGER",
13172
+ "REAL",
13173
+ "JSON",
13174
+ "BOOLEAN"
13175
+ ]),
13176
+ primaryKey: boolean().optional(),
13177
+ notNull: boolean().optional(),
13178
+ unique: boolean().optional(),
13179
+ /**
13180
+ * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
13181
+ * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
13182
+ * collection surface simply cannot express their existing tables — which is
13183
+ * why they were still on the uncapped `table*` API.
13184
+ */
13185
+ defaultValue: union([
13186
+ string(),
13187
+ number(),
13188
+ boolean()
13189
+ ]).optional()
13190
+ });
13191
+ var CollectionIndexSchema = object({
13192
+ name: string(),
13193
+ columns: array(string()).readonly(),
13194
+ unique: boolean().optional()
13195
+ });
13196
+ /**
13197
+ * The input of `declareCollection` — ONE schema for the door and for the
13198
+ * engine behind it, so the two surfaces cannot drift (the dispatcher forwards
13199
+ * the payload untouched).
13200
+ *
13201
+ * - `database` — the file the collection lives in (D851). Absent means
13202
+ * `settings`. A declaration naming a file other than the one the table is
13203
+ * already in is REFUSED by the engine, never moved.
13204
+ * - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
13205
+ * as `primaryKey: true` on that column. A composite-keyed collection has no
13206
+ * `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
13207
+ * with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
13208
+ * address one row by id are refused.
13209
+ * - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
13210
+ */
13211
+ var DeclareCollectionInputSchema = object({
13212
+ namespace: string().optional(),
13213
+ collection: string(),
13214
+ columns: array(CollectionColumnSchema).readonly(),
13215
+ indexes: array(CollectionIndexSchema).readonly().optional(),
13216
+ database: DataStoreDatabaseSchema.optional(),
13217
+ primaryKey: array(string()).readonly().optional(),
13218
+ withoutRowid: boolean().optional()
13219
+ });
13220
+ method(object({
13221
+ namespace: string().optional(),
13222
+ collection: string(),
13223
+ key: string()
13224
+ }), unknown(), { auth: "admin" }), method(object({
13225
+ namespace: string().optional(),
13226
+ collection: string(),
13227
+ key: string(),
13228
+ value: unknown()
13229
+ }), _void(), {
13230
+ kind: "mutation",
13231
+ auth: "admin"
13232
+ }), method(object({
13233
+ namespace: string().optional(),
13234
+ collection: string(),
13235
+ filter: QueryFilterSchema.optional(),
13236
+ columns: array(string()).readonly().optional()
13237
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
13238
+ namespace: string().optional(),
13239
+ collection: string(),
13240
+ /** Declared columns identifying the slot; must be covered by a UNIQUE
13241
+ * index on the collection. Never empty. */
13242
+ conflict: array(string()).readonly(),
13243
+ record: BulkRecordSchema
13244
+ }), object({
13245
+ /** The id the row HAS: assigned by SQLite on an insert, or the existing
13246
+ * row's own id on an update. */
13247
+ id: union([string(), number()]) }), {
13248
+ kind: "mutation",
13249
+ auth: "admin"
13250
+ }), method(object({
13251
+ namespace: string().optional(),
13252
+ collection: string(),
13253
+ conflict: array(string()).readonly(),
13254
+ records: array(BulkRecordSchema).readonly()
13255
+ }), object({ upserted: number().int() }), {
13256
+ kind: "mutation",
13257
+ auth: "admin"
13258
+ }), method(object({
13259
+ namespace: string().optional(),
13260
+ collection: string(),
13261
+ record: object({
13262
+ id: string().optional(),
13263
+ data: record(string(), unknown())
13264
+ })
13265
+ }), object({
13266
+ /**
13267
+ * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
13268
+ * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
13269
+ * primary key — which is the only place an auto key is knowable.
13270
+ */
13271
+ id: union([string(), number()]) }), {
13272
+ kind: "mutation",
13273
+ auth: "admin"
13274
+ }), method(object({
13275
+ namespace: string().optional(),
13276
+ collection: string(),
13277
+ records: array(BulkRecordSchema).readonly()
13278
+ }), object({ inserted: number().int() }), {
13279
+ kind: "mutation",
13280
+ auth: "admin"
13281
+ }), method(object({
13282
+ namespace: string().optional(),
13283
+ guard: TransactGuardSchema.optional(),
13284
+ ops: array(TransactOpSchema).readonly()
13285
+ }), object({
13286
+ applied: boolean(),
13287
+ current: unknown().optional()
13288
+ }), {
13289
+ kind: "mutation",
13290
+ auth: "admin"
13291
+ }), method(object({
13292
+ namespace: string().optional(),
13293
+ collection: string(),
13294
+ id: string(),
13295
+ data: record(string(), unknown())
13296
+ }), _void(), {
13297
+ kind: "mutation",
13298
+ auth: "admin"
13299
+ }), method(object({
13300
+ namespace: string().optional(),
13301
+ collection: string(),
13302
+ key: string()
13303
+ }), _void(), {
13304
+ kind: "mutation",
13305
+ auth: "admin"
13306
+ }), method(object({
13307
+ namespace: string().optional(),
13308
+ collection: string(),
13309
+ filter: MutationFilterSchema
13310
+ }), object({ deleted: number().int() }), {
13311
+ kind: "mutation",
13312
+ auth: "admin"
13313
+ }), method(object({
13314
+ namespace: string().optional(),
13315
+ collection: string(),
13316
+ filter: MutationFilterSchema,
13317
+ data: record(string(), unknown())
13318
+ }), object({ updated: number().int() }), {
13319
+ kind: "mutation",
13320
+ auth: "admin"
13321
+ }), method(object({
13322
+ namespace: string().optional(),
13323
+ collection: string(),
13324
+ filter: QueryFilterSchema.optional()
13325
+ }), number(), { auth: "admin" }), method(object({
13326
+ namespace: string().optional(),
13327
+ collection: string(),
13328
+ fields: array(AggregateFieldSchema).readonly(),
13329
+ filter: QueryFilterSchema.optional()
13330
+ }), AggregateResultSchema, { auth: "admin" }), method(object({
13331
+ namespace: string().optional(),
13332
+ collection: string(),
13333
+ field: string(),
13334
+ bucketSize: number().int().positive(),
13335
+ origin: number().int(),
13336
+ filter: QueryFilterSchema.optional()
13337
+ }), array(object({
13338
+ bucket: number().int(),
13339
+ count: number().int()
13340
+ })).readonly(), { auth: "admin" }), method(object({
13341
+ namespace: string().optional(),
13342
+ collection: string()
13343
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
13344
+ kind: "mutation",
13345
+ auth: "admin"
13346
+ });
13347
+ /**
13025
13348
  * How long one snapshot may take end to end: the pinned copy of the whole
13026
13349
  * database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
13027
13350
  * disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
@@ -13034,7 +13357,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
13034
13357
  * database has no sidecars and is just as owned). Paths are absolute on the
13035
13358
  * owner's host.
13036
13359
  */
13037
- var DatabaseSnapshotTargetsSchema = object({ databases: array(object({ livePath: string() })) });
13360
+ var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
13361
+ /** Which owned file this is — the handle `writeSnapshot` takes. */
13362
+ databaseId: DataStoreDatabaseSchema,
13363
+ livePath: string()
13364
+ })) });
13038
13365
  /** One b-tree table of the snapshot and the rows it holds. */
13039
13366
  var DatabaseSnapshotTableSchema = object({
13040
13367
  name: string(),
@@ -13067,6 +13394,10 @@ var DatabaseSnapshotResultSchema = object({
13067
13394
  /** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
13068
13395
  takenAt: number()
13069
13396
  });
13397
+ /** A snapshot the owner wrote, with the file it belongs to. */
13398
+ var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
13399
+ /** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
13400
+ var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
13070
13401
  /**
13071
13402
  * A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
13072
13403
  * the same facts, with both paths relative to the archive root (the node's
@@ -13076,9 +13407,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
13076
13407
  /** Archive-relative path of the live database the archive does NOT carry. */
13077
13408
  livePath: string(),
13078
13409
  /** Archive-relative path of the verified copy it carries in its place. */
13079
- snapshotPath: string()
13410
+ snapshotPath: string(),
13411
+ /** Absent on an archive made before several files were owned: that was `settings`. */
13412
+ databaseId: DataStoreDatabaseSchema.optional()
13080
13413
  });
13081
- method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(object({}), DatabaseSnapshotResultSchema, {
13414
+ method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
13082
13415
  kind: "mutation",
13083
13416
  auth: "admin",
13084
13417
  timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
@@ -13199,7 +13532,12 @@ var BackupArchiveEntrySchema = object({
13199
13532
  /** Top-level locations included in the archive (db, addons, tls, …). */
13200
13533
  locations: array(string()).readonly(),
13201
13534
  /** Present when the archive is encrypted; restore then needs that key. */
13202
- encryption: BackupArchiveEncryptionSchema.optional()
13535
+ encryption: BackupArchiveEncryptionSchema.optional(),
13536
+ /**
13537
+ * The databases the run asked to carry (its retention class). Absent on an
13538
+ * archive made before several files were owned: that was `['settings']`.
13539
+ */
13540
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
13203
13541
  });
13204
13542
  var BackupEntrySchema = object({
13205
13543
  id: string(),
@@ -13233,7 +13571,12 @@ var ArchiveManifestSchema = object({
13233
13571
  * Live SQLite databases this archive carries as their OWNER's verified
13234
13572
  * snapshot instead of as files (D693). Absent on archives made before.
13235
13573
  */
13236
- sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
13574
+ sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
13575
+ /**
13576
+ * Owned database files the run did NOT carry (not selected): left out of the
13577
+ * tar and the entry list alike. Absent when every owned file was carried.
13578
+ */
13579
+ omittedDatabases: array(DataStoreDatabaseSchema).optional()
13237
13580
  });
13238
13581
  var LocationStatSchema = object({
13239
13582
  name: string(),
@@ -13355,6 +13698,12 @@ var BackupScheduleSchema = object({
13355
13698
  /** Optional subset of source locations to include; omitted = all. */
13356
13699
  dataSources: array(string()).readonly().optional(),
13357
13700
  /**
13701
+ * Which database files this schedule carries. Absent = `['settings']`
13702
+ * (an unstated ask is the minimum, D382). Events and history run weekly,
13703
+ * settings nightly (D852).
13704
+ */
13705
+ databases: array(DataStoreDatabaseSchema).readonly().optional(),
13706
+ /**
13358
13707
  * ms-epoch of the last tick that FIRED this schedule. Stamped before the
13359
13708
  * archive runs (it is the dedupe anchor), so it says "attempted", never
13360
13709
  * "succeeded" — a run refused by every destination stamps it too.
@@ -13378,7 +13727,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
13378
13727
  * retention). Omitted = each destination's own policy
13379
13728
  * retention (manual runs).
13380
13729
  */
13381
- retentionCount: number().int().min(1).max(1e3).optional()
13730
+ retentionCount: number().int().min(1).max(1e3).optional(),
13731
+ /** Database files to carry; omitted = `['settings']`. */
13732
+ databases: array(DataStoreDatabaseSchema).optional()
13382
13733
  }).optional(), BackupTriggerResultSchema, {
13383
13734
  kind: "mutation",
13384
13735
  auth: "admin"
@@ -13453,14 +13804,18 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
13453
13804
  ok: boolean(),
13454
13805
  error: string().optional(),
13455
13806
  nextRuns: array(number()).readonly()
13456
- })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
13807
+ })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(_void(), object({
13808
+ answered: boolean(),
13809
+ databases: array(DataStoreDatabaseSchema).readonly()
13810
+ }), { auth: "admin" }), method(object({
13457
13811
  id: string().optional(),
13458
13812
  label: string(),
13459
13813
  cron: string(),
13460
13814
  enabled: boolean(),
13461
13815
  locationIds: array(string()).readonly(),
13462
13816
  retentionCount: number().int().min(1).max(1e3),
13463
- dataSources: array(string()).readonly().optional()
13817
+ dataSources: array(string()).readonly().optional(),
13818
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
13464
13819
  }), BackupScheduleSchema, {
13465
13820
  kind: "mutation",
13466
13821
  auth: "admin"
@@ -15127,282 +15482,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
15127
15482
  timeoutMs: 30 * 6e4
15128
15483
  });
15129
15484
  /**
15130
- * Query filter for settings-store collections.
15131
- */
15132
- var QueryFilterSchema = object({
15133
- where: record(string(), unknown()).optional(),
15134
- whereIn: record(string(), array(unknown())).optional(),
15135
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15136
- /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
15137
- whereNot: record(string(), unknown()).optional(),
15138
- /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
15139
- * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
15140
- whereNotIn: record(string(), array(unknown())).optional(),
15141
- orderBy: object({
15142
- field: string(),
15143
- direction: _enum(["asc", "desc"])
15144
- }).optional(),
15145
- limit: number().optional(),
15146
- offset: number().optional()
15147
- });
15148
- /**
15149
- * The predicate half of a filter, for BULK MUTATIONS.
15150
- *
15151
- * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
15152
- * meaning for a statement that rewrites a set, and accepting them would invite
15153
- * a caller to believe `limit` bounds the damage. Every field is optional here
15154
- * only so the shape stays composable — the implementation REJECTS a filter
15155
- * that compiles to no predicate, because that is the whole collection.
15156
- */
15157
- var MutationFilterSchema = object({
15158
- where: record(string(), unknown()).optional(),
15159
- whereIn: record(string(), array(unknown())).optional(),
15160
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15161
- whereNot: record(string(), unknown()).optional(),
15162
- whereNotIn: record(string(), array(unknown())).optional()
15163
- });
15164
- /**
15165
- * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
15166
- *
15167
- * `as` names the slot in the result, so the SAME column may be asked twice with
15168
- * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
15169
- * a `Record<column, op>` shape could not express.
15170
- */
15171
- var AggregateFieldSchema = object({
15172
- /** Result key. */
15173
- as: string().min(1),
15174
- /** Column to aggregate. Must be a real column of a declared collection. */
15175
- field: string().min(1),
15176
- op: _enum([
15177
- "sum",
15178
- "min",
15179
- "max"
15180
- ])
15181
- });
15182
- /**
15183
- * `COUNT(*)` plus one number per requested field.
15184
- *
15185
- * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
15186
- * that really is 0 are different facts, and an accounting caller that renders
15187
- * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
15188
- */
15189
- var AggregateResultSchema = object({
15190
- count: number().int(),
15191
- values: record(string(), number().nullable())
15192
- });
15193
- /** A single stored record: `{ id, data }`. */
15194
- var SettingsRecordSchema = object({
15195
- id: string(),
15196
- data: record(string(), unknown())
15197
- });
15198
- /**
15199
- * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
15200
- * optional.
15201
- *
15202
- * A separate schema rather than loosening the shared one: every other method
15203
- * on this cap addresses a row BY its id, and making that field optional
15204
- * everywhere would turn a forgotten key into a silently generated one on
15205
- * `update` and `delete` as well.
15206
- */
15207
- var BulkRecordSchema = object({
15208
- id: string().optional(),
15209
- data: record(string(), unknown())
15210
- });
15211
- /**
15212
- * One write inside a {@link settingsStoreCapability.methods.transact} call.
15213
- * Only the three that a "replace this set, bump that revision" write needs.
15214
- */
15215
- var TransactOpSchema = discriminatedUnion("op", [
15216
- object({
15217
- op: literal("deleteWhere"),
15218
- collection: string(),
15219
- filter: MutationFilterSchema
15220
- }),
15221
- object({
15222
- op: literal("insertMany"),
15223
- collection: string(),
15224
- records: array(BulkRecordSchema).readonly()
15225
- }),
15226
- object({
15227
- op: literal("update"),
15228
- collection: string(),
15229
- id: string(),
15230
- data: record(string(), unknown())
15231
- })
15232
- ]);
15233
- /**
15234
- * The precondition of a transaction: the row `key` of `collection` must hold
15235
- * `equals` in `column`, read INSIDE the transaction.
15236
- */
15237
- var TransactGuardSchema = object({
15238
- collection: string(),
15239
- key: string(),
15240
- column: string(),
15241
- equals: unknown()
15242
- });
15243
- /**
15244
- * Column declaration for a structured (SQL-backed) collection.
15245
- *
15246
- * Logical types — the backend translates each to the matching SQLite
15247
- * storage class and handles per-type marshaling:
15248
- * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
15249
- * - `JSON` — TEXT under the hood; serialised on write, parsed on read
15250
- * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
15251
- */
15252
- var CollectionColumnSchema = object({
15253
- name: string(),
15254
- type: _enum([
15255
- "TEXT",
15256
- "INTEGER",
15257
- "REAL",
15258
- "JSON",
15259
- "BOOLEAN"
15260
- ]),
15261
- primaryKey: boolean().optional(),
15262
- notNull: boolean().optional(),
15263
- unique: boolean().optional(),
15264
- /**
15265
- * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
15266
- * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
15267
- * collection surface simply cannot express their existing tables — which is
15268
- * why they were still on the uncapped `table*` API.
15269
- */
15270
- defaultValue: union([
15271
- string(),
15272
- number(),
15273
- boolean()
15274
- ]).optional()
15275
- });
15276
- var CollectionIndexSchema = object({
15277
- name: string(),
15278
- columns: array(string()).readonly(),
15279
- unique: boolean().optional()
15280
- });
15281
- method(object({
15282
- namespace: string().optional(),
15283
- collection: string(),
15284
- key: string()
15285
- }), unknown(), { auth: "admin" }), method(object({
15286
- namespace: string().optional(),
15287
- collection: string(),
15288
- key: string(),
15289
- value: unknown()
15290
- }), _void(), {
15291
- kind: "mutation",
15292
- auth: "admin"
15293
- }), method(object({
15294
- namespace: string().optional(),
15295
- collection: string(),
15296
- filter: QueryFilterSchema.optional(),
15297
- columns: array(string()).readonly().optional()
15298
- }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
15299
- namespace: string().optional(),
15300
- collection: string(),
15301
- /** Declared columns identifying the slot; must be covered by a UNIQUE
15302
- * index on the collection. Never empty. */
15303
- conflict: array(string()).readonly(),
15304
- record: BulkRecordSchema
15305
- }), object({
15306
- /** The id the row HAS: assigned by SQLite on an insert, or the existing
15307
- * row's own id on an update. */
15308
- id: union([string(), number()]) }), {
15309
- kind: "mutation",
15310
- auth: "admin"
15311
- }), method(object({
15312
- namespace: string().optional(),
15313
- collection: string(),
15314
- record: object({
15315
- id: string().optional(),
15316
- data: record(string(), unknown())
15317
- })
15318
- }), object({
15319
- /**
15320
- * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
15321
- * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
15322
- * primary key — which is the only place an auto key is knowable.
15323
- */
15324
- id: union([string(), number()]) }), {
15325
- kind: "mutation",
15326
- auth: "admin"
15327
- }), method(object({
15328
- namespace: string().optional(),
15329
- collection: string(),
15330
- records: array(BulkRecordSchema).readonly()
15331
- }), object({ inserted: number().int() }), {
15332
- kind: "mutation",
15333
- auth: "admin"
15334
- }), method(object({
15335
- namespace: string().optional(),
15336
- guard: TransactGuardSchema.optional(),
15337
- ops: array(TransactOpSchema).readonly()
15338
- }), object({
15339
- applied: boolean(),
15340
- current: unknown().optional()
15341
- }), {
15342
- kind: "mutation",
15343
- auth: "admin"
15344
- }), method(object({
15345
- namespace: string().optional(),
15346
- collection: string(),
15347
- id: string(),
15348
- data: record(string(), unknown())
15349
- }), _void(), {
15350
- kind: "mutation",
15351
- auth: "admin"
15352
- }), method(object({
15353
- namespace: string().optional(),
15354
- collection: string(),
15355
- key: string()
15356
- }), _void(), {
15357
- kind: "mutation",
15358
- auth: "admin"
15359
- }), method(object({
15360
- namespace: string().optional(),
15361
- collection: string(),
15362
- filter: MutationFilterSchema
15363
- }), object({ deleted: number().int() }), {
15364
- kind: "mutation",
15365
- auth: "admin"
15366
- }), method(object({
15367
- namespace: string().optional(),
15368
- collection: string(),
15369
- filter: MutationFilterSchema,
15370
- data: record(string(), unknown())
15371
- }), object({ updated: number().int() }), {
15372
- kind: "mutation",
15373
- auth: "admin"
15374
- }), method(object({
15375
- namespace: string().optional(),
15376
- collection: string(),
15377
- filter: QueryFilterSchema.optional()
15378
- }), number(), { auth: "admin" }), method(object({
15379
- namespace: string().optional(),
15380
- collection: string(),
15381
- fields: array(AggregateFieldSchema).readonly(),
15382
- filter: QueryFilterSchema.optional()
15383
- }), AggregateResultSchema, { auth: "admin" }), method(object({
15384
- namespace: string().optional(),
15385
- collection: string(),
15386
- field: string(),
15387
- bucketSize: number().int().positive(),
15388
- origin: number().int(),
15389
- filter: QueryFilterSchema.optional()
15390
- }), array(object({
15391
- bucket: number().int(),
15392
- count: number().int()
15393
- })).readonly(), { auth: "admin" }), method(object({
15394
- namespace: string().optional(),
15395
- collection: string()
15396
- }), boolean(), { auth: "admin" }), method(object({
15397
- namespace: string().optional(),
15398
- collection: string(),
15399
- columns: array(CollectionColumnSchema).readonly(),
15400
- indexes: array(CollectionIndexSchema).readonly().optional()
15401
- }), _void(), {
15402
- kind: "mutation",
15403
- auth: "admin"
15404
- });
15405
- /**
15406
15485
  * What one engine says about itself. The orchestrator uses `kind` to pick
15407
15486
  * a registrant for a collection; `engineId` is what a log line names when
15408
15487
  * a call is routed or refused.
@@ -15482,6 +15561,14 @@ id: union([string(), number()]) }), {
15482
15561
  }), object({ id: union([string(), number()]) }), {
15483
15562
  kind: "mutation",
15484
15563
  auth: "admin"
15564
+ }), method(object({
15565
+ namespace: string().optional(),
15566
+ collection: string(),
15567
+ conflict: array(string()).readonly(),
15568
+ records: array(BulkRecordSchema).readonly()
15569
+ }), object({ upserted: number().int() }), {
15570
+ kind: "mutation",
15571
+ auth: "admin"
15485
15572
  }), method(object({
15486
15573
  namespace: string().optional(),
15487
15574
  collection: string(),
@@ -15551,12 +15638,7 @@ id: union([string(), number()]) }), {
15551
15638
  })).readonly(), { auth: "admin" }), method(object({
15552
15639
  namespace: string().optional(),
15553
15640
  collection: string()
15554
- }), boolean(), { auth: "admin" }), method(object({
15555
- namespace: string().optional(),
15556
- collection: string(),
15557
- columns: array(CollectionColumnSchema).readonly(),
15558
- indexes: array(CollectionIndexSchema).readonly().optional()
15559
- }), _void(), {
15641
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
15560
15642
  kind: "mutation",
15561
15643
  auth: "admin"
15562
15644
  });
@@ -24563,6 +24645,9 @@ var RetrainFrameReviewSchema = object({
24563
24645
  /** The baseline was re-derived, not snapshotted (a pre-origin row). */
24564
24646
  approximate: boolean(),
24565
24647
  origin: RetrainOriginSchema.optional(),
24648
+ /** The class / label the box carries NOW (a removed box: its origin's). Absent on an older hub. */
24649
+ macroClass: RetrainMacroClassSchema.optional(),
24650
+ label: string().optional(),
24566
24651
  iou: number().optional()
24567
24652
  })).readonly(),
24568
24653
  summary: object({
@@ -32432,6 +32517,18 @@ var CalendarInfoSchema = object({
32432
32517
  source: CalendarSourceKindSchema,
32433
32518
  enabled: boolean()
32434
32519
  });
32520
+ /**
32521
+ * Time contract of {@link CalendarEvent}.
32522
+ *
32523
+ * - Timed event: `startMs` / `endMs` are real instants; `endMs` is exclusive.
32524
+ * - All-day event (`allDay: true`): the event is a run of calendar DATES, not
32525
+ * instants. `startMs` is UTC midnight of the first date and `endMs` is UTC
32526
+ * midnight of the day AFTER the last date (RFC 5545 exclusive DTEND), so a
32527
+ * one-day event spans exactly 24 h. Every provider produces that and no
32528
+ * consumer may read the instants in a local timezone: use
32529
+ * {@link calendarEventLocalSpan}. Reading UTC midnight as local time put an
32530
+ * all-day event on the following day for any viewer ahead of UTC.
32531
+ */
32435
32532
  var CalendarEventSchema = object({
32436
32533
  id: string().min(1),
32437
32534
  calendarId: string().min(1),
@@ -34574,7 +34671,15 @@ var HubAddressBookSchema = object({
34574
34671
  publicEndpoint: HubAddressRoleResolutionSchema
34575
34672
  }),
34576
34673
  /** The `hub=` an app link carries (D709), or null. */
34577
- appLinkHub: string().nullable()
34674
+ appLinkHub: string().nullable(),
34675
+ /**
34676
+ * Every origin a browser can really reach this hub at, in the scheme each
34677
+ * listener serves: `https://<lan>:<httpsPort>`, and `http://<lan>:<httpPort>`
34678
+ * while LAN HTTP is on, plus the public and custom addresses. Distinct from
34679
+ * `rows`, which show `http://` only while LAN HTTP is on. Never loopback,
34680
+ * never the app link. Absent on a hub older than D794's amendment.
34681
+ */
34682
+ listenerOrigins: array(string()).readonly().optional()
34578
34683
  });
34579
34684
  var AllowedAddressesSchema = object({
34580
34685
  /**
@@ -41811,6 +41916,12 @@ Object.freeze({
41811
41916
  addonId: null,
41812
41917
  access: "view"
41813
41918
  },
41919
+ "backup.listAvailableDatabases": {
41920
+ capName: "backup",
41921
+ capScope: "system",
41922
+ addonId: null,
41923
+ access: "view"
41924
+ },
41814
41925
  "backup.listDestinations": {
41815
41926
  capName: "backup",
41816
41927
  capScope: "system",
@@ -42531,6 +42642,12 @@ Object.freeze({
42531
42642
  addonId: null,
42532
42643
  access: "create"
42533
42644
  },
42645
+ "dataStoreProvider.upsertMany": {
42646
+ capName: "data-store-provider",
42647
+ capScope: "system",
42648
+ addonId: null,
42649
+ access: "create"
42650
+ },
42534
42651
  "dayNight.getOptions": {
42535
42652
  capName: "day-night",
42536
42653
  capScope: "device",
@@ -47379,6 +47496,12 @@ Object.freeze({
47379
47496
  addonId: null,
47380
47497
  access: "create"
47381
47498
  },
47499
+ "settingsStore.upsertMany": {
47500
+ capName: "settings-store",
47501
+ capScope: "system",
47502
+ addonId: null,
47503
+ access: "create"
47504
+ },
47382
47505
  "smoke.getStatus": {
47383
47506
  capName: "smoke",
47384
47507
  capScope: "device",