@camstack/addon-training 0.1.38 → 0.1.40

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 (24) hide show
  1. package/dist/{MotionZonesSettings-D3OhWtEJ.mjs → MotionZonesSettings-DBtAXpEm.mjs} +3 -3
  2. package/dist/{PrivacyMaskSettings-D5a0tK5y.mjs → PrivacyMaskSettings-C3tyM8s9.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-RWeMMIUm.mjs → SceneMonitorEditor-D6Q3z17B.mjs} +3 -3
  4. package/dist/_stub.js +13 -13
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-D_GAsIra.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-CHYHBYUh.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-NCFNuw0Q.mjs +26 -0
  7. package/dist/{dist-CxvYt5PP.js → dist-CJXTMYT2.js} +411 -291
  8. package/dist/{dist-C4t8abQo.mjs → dist-CbTzxq0W.mjs} +411 -291
  9. package/dist/{grid-2x2-BFM3iXou.mjs → grid-2x2-tkDBCRad.mjs} +1 -1
  10. package/dist/{hostInit-CqaQP3BW.mjs → hostInit-GIXFhqMx.mjs} +2 -2
  11. package/dist/index.js +1 -1
  12. package/dist/orchestrator/training.addon.js +1 -1
  13. package/dist/orchestrator/training.addon.mjs +1 -1
  14. package/dist/{player-overlays-BTkYq6-O.mjs → player-overlays-DMLlEwmn.mjs} +1 -1
  15. package/dist/providers/modal/training-modal.addon.js +1 -1
  16. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  17. package/dist/remoteEntry.js +1 -1
  18. package/dist/{responsive-BBw-VKsK.mjs → responsive-C0tM8Z6S.mjs} +1 -1
  19. package/dist/{scene-monitor-copy-DRCqH33h.mjs → scene-monitor-copy-B-6xPmDm.mjs} +1 -1
  20. package/dist/{square-C1cboEBq.mjs → square-D49AvsjC.mjs} +1 -1
  21. package/dist/{trash-2-8N-Lzjyo.mjs → trash-2-BwTJ2h2p.mjs} +1 -1
  22. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-B31_EXdz.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-B3ZFopEz.mjs} +1 -1
  23. package/package.json +1 -1
  24. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DJjJv3yI.mjs +0 -26
@@ -13074,6 +13074,329 @@ method(object({
13074
13074
  password: string()
13075
13075
  }), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
13076
13076
  /**
13077
+ * Query filter for settings-store collections.
13078
+ */
13079
+ var QueryFilterSchema = object({
13080
+ where: record(string(), unknown()).optional(),
13081
+ whereIn: record(string(), array(unknown())).optional(),
13082
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
13083
+ /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
13084
+ whereNot: record(string(), unknown()).optional(),
13085
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
13086
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
13087
+ whereNotIn: record(string(), array(unknown())).optional(),
13088
+ orderBy: object({
13089
+ field: string(),
13090
+ direction: _enum(["asc", "desc"])
13091
+ }).optional(),
13092
+ limit: number().optional(),
13093
+ offset: number().optional()
13094
+ });
13095
+ /**
13096
+ * The predicate half of a filter, for BULK MUTATIONS.
13097
+ *
13098
+ * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
13099
+ * meaning for a statement that rewrites a set, and accepting them would invite
13100
+ * a caller to believe `limit` bounds the damage. Every field is optional here
13101
+ * only so the shape stays composable — the implementation REJECTS a filter
13102
+ * that compiles to no predicate, because that is the whole collection.
13103
+ */
13104
+ var MutationFilterSchema = object({
13105
+ where: record(string(), unknown()).optional(),
13106
+ whereIn: record(string(), array(unknown())).optional(),
13107
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
13108
+ whereNot: record(string(), unknown()).optional(),
13109
+ whereNotIn: record(string(), array(unknown())).optional()
13110
+ });
13111
+ /**
13112
+ * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
13113
+ *
13114
+ * `as` names the slot in the result, so the SAME column may be asked twice with
13115
+ * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
13116
+ * a `Record<column, op>` shape could not express.
13117
+ */
13118
+ var AggregateFieldSchema = object({
13119
+ /** Result key. */
13120
+ as: string().min(1),
13121
+ /** Column to aggregate. Must be a real column of a declared collection. */
13122
+ field: string().min(1),
13123
+ op: _enum([
13124
+ "sum",
13125
+ "min",
13126
+ "max"
13127
+ ])
13128
+ });
13129
+ /**
13130
+ * `COUNT(*)` plus one number per requested field.
13131
+ *
13132
+ * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
13133
+ * that really is 0 are different facts, and an accounting caller that renders
13134
+ * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
13135
+ */
13136
+ var AggregateResultSchema = object({
13137
+ count: number().int(),
13138
+ values: record(string(), number().nullable())
13139
+ });
13140
+ /** A single stored record: `{ id, data }`. */
13141
+ var SettingsRecordSchema = object({
13142
+ id: string(),
13143
+ data: record(string(), unknown())
13144
+ });
13145
+ /**
13146
+ * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
13147
+ * optional.
13148
+ *
13149
+ * A separate schema rather than loosening the shared one: every other method
13150
+ * on this cap addresses a row BY its id, and making that field optional
13151
+ * everywhere would turn a forgotten key into a silently generated one on
13152
+ * `update` and `delete` as well.
13153
+ */
13154
+ var BulkRecordSchema = object({
13155
+ id: string().optional(),
13156
+ data: record(string(), unknown())
13157
+ });
13158
+ /**
13159
+ * The database FILES one `sqlite-settings` engine process owns (D851).
13160
+ * Closed on purpose: a file is a thing the engine opens, backs up and gives a
13161
+ * serving thread, so a new one is a code change, never a string a caller
13162
+ * invents. `settings` is `camstack.db` and the default for every collection
13163
+ * that names no file.
13164
+ */
13165
+ var DataStoreDatabaseSchema = _enum([
13166
+ "settings",
13167
+ "events",
13168
+ "history"
13169
+ ]);
13170
+ DataStoreDatabaseSchema.options;
13171
+ /**
13172
+ * One write inside a {@link settingsStoreCapability.methods.transact} call.
13173
+ * The three that a "replace this set, bump that revision" write needs, plus
13174
+ * the batched upsert a rollup writer needs.
13175
+ */
13176
+ var TransactOpSchema = discriminatedUnion("op", [
13177
+ object({
13178
+ op: literal("deleteWhere"),
13179
+ collection: string(),
13180
+ filter: MutationFilterSchema
13181
+ }),
13182
+ object({
13183
+ op: literal("insertMany"),
13184
+ collection: string(),
13185
+ records: array(BulkRecordSchema).readonly()
13186
+ }),
13187
+ object({
13188
+ op: literal("update"),
13189
+ collection: string(),
13190
+ id: string(),
13191
+ data: record(string(), unknown())
13192
+ }),
13193
+ object({
13194
+ op: literal("upsertMany"),
13195
+ collection: string(),
13196
+ conflict: array(string()).readonly(),
13197
+ records: array(BulkRecordSchema).readonly()
13198
+ })
13199
+ ]);
13200
+ /**
13201
+ * The precondition of a transaction: the row `key` of `collection` must hold
13202
+ * `equals` in `column`, read INSIDE the transaction.
13203
+ */
13204
+ var TransactGuardSchema = object({
13205
+ collection: string(),
13206
+ key: string(),
13207
+ column: string(),
13208
+ equals: unknown()
13209
+ });
13210
+ /**
13211
+ * Column declaration for a structured (SQL-backed) collection.
13212
+ *
13213
+ * Logical types — the backend translates each to the matching SQLite
13214
+ * storage class and handles per-type marshaling:
13215
+ * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
13216
+ * - `JSON` — TEXT under the hood; serialised on write, parsed on read
13217
+ * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
13218
+ */
13219
+ var CollectionColumnSchema = object({
13220
+ name: string(),
13221
+ type: _enum([
13222
+ "TEXT",
13223
+ "INTEGER",
13224
+ "REAL",
13225
+ "JSON",
13226
+ "BOOLEAN"
13227
+ ]),
13228
+ primaryKey: boolean().optional(),
13229
+ notNull: boolean().optional(),
13230
+ unique: boolean().optional(),
13231
+ /**
13232
+ * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
13233
+ * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
13234
+ * collection surface simply cannot express their existing tables — which is
13235
+ * why they were still on the uncapped `table*` API.
13236
+ */
13237
+ defaultValue: union([
13238
+ string(),
13239
+ number(),
13240
+ boolean()
13241
+ ]).optional()
13242
+ });
13243
+ var CollectionIndexSchema = object({
13244
+ name: string(),
13245
+ columns: array(string()).readonly(),
13246
+ unique: boolean().optional()
13247
+ });
13248
+ /**
13249
+ * The input of `declareCollection` — ONE schema for the door and for the
13250
+ * engine behind it, so the two surfaces cannot drift (the dispatcher forwards
13251
+ * the payload untouched).
13252
+ *
13253
+ * - `database` — the file the collection lives in (D851). Absent means
13254
+ * `settings`. A declaration naming a file other than the one the table is
13255
+ * already in is REFUSED by the engine, never moved.
13256
+ * - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
13257
+ * as `primaryKey: true` on that column. A composite-keyed collection has no
13258
+ * `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
13259
+ * with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
13260
+ * address one row by id are refused.
13261
+ * - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
13262
+ */
13263
+ var DeclareCollectionInputSchema = object({
13264
+ namespace: string().optional(),
13265
+ collection: string(),
13266
+ columns: array(CollectionColumnSchema).readonly(),
13267
+ indexes: array(CollectionIndexSchema).readonly().optional(),
13268
+ database: DataStoreDatabaseSchema.optional(),
13269
+ primaryKey: array(string()).readonly().optional(),
13270
+ withoutRowid: boolean().optional()
13271
+ });
13272
+ method(object({
13273
+ namespace: string().optional(),
13274
+ collection: string(),
13275
+ key: string()
13276
+ }), unknown(), { auth: "admin" }), method(object({
13277
+ namespace: string().optional(),
13278
+ collection: string(),
13279
+ key: string(),
13280
+ value: unknown()
13281
+ }), _void(), {
13282
+ kind: "mutation",
13283
+ auth: "admin"
13284
+ }), method(object({
13285
+ namespace: string().optional(),
13286
+ collection: string(),
13287
+ filter: QueryFilterSchema.optional(),
13288
+ columns: array(string()).readonly().optional()
13289
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
13290
+ namespace: string().optional(),
13291
+ collection: string(),
13292
+ /** Declared columns identifying the slot; must be covered by a UNIQUE
13293
+ * index on the collection. Never empty. */
13294
+ conflict: array(string()).readonly(),
13295
+ record: BulkRecordSchema
13296
+ }), object({
13297
+ /** The id the row HAS: assigned by SQLite on an insert, or the existing
13298
+ * row's own id on an update. */
13299
+ id: union([string(), number()]) }), {
13300
+ kind: "mutation",
13301
+ auth: "admin"
13302
+ }), method(object({
13303
+ namespace: string().optional(),
13304
+ collection: string(),
13305
+ conflict: array(string()).readonly(),
13306
+ records: array(BulkRecordSchema).readonly()
13307
+ }), object({ upserted: number().int() }), {
13308
+ kind: "mutation",
13309
+ auth: "admin"
13310
+ }), method(object({
13311
+ namespace: string().optional(),
13312
+ collection: string(),
13313
+ record: object({
13314
+ id: string().optional(),
13315
+ data: record(string(), unknown())
13316
+ })
13317
+ }), object({
13318
+ /**
13319
+ * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
13320
+ * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
13321
+ * primary key — which is the only place an auto key is knowable.
13322
+ */
13323
+ id: union([string(), number()]) }), {
13324
+ kind: "mutation",
13325
+ auth: "admin"
13326
+ }), method(object({
13327
+ namespace: string().optional(),
13328
+ collection: string(),
13329
+ records: array(BulkRecordSchema).readonly()
13330
+ }), object({ inserted: number().int() }), {
13331
+ kind: "mutation",
13332
+ auth: "admin"
13333
+ }), method(object({
13334
+ namespace: string().optional(),
13335
+ guard: TransactGuardSchema.optional(),
13336
+ ops: array(TransactOpSchema).readonly()
13337
+ }), object({
13338
+ applied: boolean(),
13339
+ current: unknown().optional()
13340
+ }), {
13341
+ kind: "mutation",
13342
+ auth: "admin"
13343
+ }), method(object({
13344
+ namespace: string().optional(),
13345
+ collection: string(),
13346
+ id: string(),
13347
+ data: record(string(), unknown())
13348
+ }), _void(), {
13349
+ kind: "mutation",
13350
+ auth: "admin"
13351
+ }), method(object({
13352
+ namespace: string().optional(),
13353
+ collection: string(),
13354
+ key: string()
13355
+ }), _void(), {
13356
+ kind: "mutation",
13357
+ auth: "admin"
13358
+ }), method(object({
13359
+ namespace: string().optional(),
13360
+ collection: string(),
13361
+ filter: MutationFilterSchema
13362
+ }), object({ deleted: number().int() }), {
13363
+ kind: "mutation",
13364
+ auth: "admin"
13365
+ }), method(object({
13366
+ namespace: string().optional(),
13367
+ collection: string(),
13368
+ filter: MutationFilterSchema,
13369
+ data: record(string(), unknown())
13370
+ }), object({ updated: number().int() }), {
13371
+ kind: "mutation",
13372
+ auth: "admin"
13373
+ }), method(object({
13374
+ namespace: string().optional(),
13375
+ collection: string(),
13376
+ filter: QueryFilterSchema.optional()
13377
+ }), number(), { auth: "admin" }), method(object({
13378
+ namespace: string().optional(),
13379
+ collection: string(),
13380
+ fields: array(AggregateFieldSchema).readonly(),
13381
+ filter: QueryFilterSchema.optional()
13382
+ }), AggregateResultSchema, { auth: "admin" }), method(object({
13383
+ namespace: string().optional(),
13384
+ collection: string(),
13385
+ field: string(),
13386
+ bucketSize: number().int().positive(),
13387
+ origin: number().int(),
13388
+ filter: QueryFilterSchema.optional()
13389
+ }), array(object({
13390
+ bucket: number().int(),
13391
+ count: number().int()
13392
+ })).readonly(), { auth: "admin" }), method(object({
13393
+ namespace: string().optional(),
13394
+ collection: string()
13395
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
13396
+ kind: "mutation",
13397
+ auth: "admin"
13398
+ });
13399
+ /**
13077
13400
  * How long one snapshot may take end to end: the pinned copy of the whole
13078
13401
  * database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
13079
13402
  * disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
@@ -13086,7 +13409,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
13086
13409
  * database has no sidecars and is just as owned). Paths are absolute on the
13087
13410
  * owner's host.
13088
13411
  */
13089
- var DatabaseSnapshotTargetsSchema = object({ databases: array(object({ livePath: string() })) });
13412
+ var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
13413
+ /** Which owned file this is — the handle `writeSnapshot` takes. */
13414
+ databaseId: DataStoreDatabaseSchema,
13415
+ livePath: string()
13416
+ })) });
13090
13417
  /** One b-tree table of the snapshot and the rows it holds. */
13091
13418
  var DatabaseSnapshotTableSchema = object({
13092
13419
  name: string(),
@@ -13119,6 +13446,10 @@ var DatabaseSnapshotResultSchema = object({
13119
13446
  /** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
13120
13447
  takenAt: number()
13121
13448
  });
13449
+ /** A snapshot the owner wrote, with the file it belongs to. */
13450
+ var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
13451
+ /** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
13452
+ var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
13122
13453
  /**
13123
13454
  * A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
13124
13455
  * the same facts, with both paths relative to the archive root (the node's
@@ -13128,9 +13459,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
13128
13459
  /** Archive-relative path of the live database the archive does NOT carry. */
13129
13460
  livePath: string(),
13130
13461
  /** Archive-relative path of the verified copy it carries in its place. */
13131
- snapshotPath: string()
13462
+ snapshotPath: string(),
13463
+ /** Absent on an archive made before several files were owned: that was `settings`. */
13464
+ databaseId: DataStoreDatabaseSchema.optional()
13132
13465
  });
13133
- method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(object({}), DatabaseSnapshotResultSchema, {
13466
+ method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
13134
13467
  kind: "mutation",
13135
13468
  auth: "admin",
13136
13469
  timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
@@ -13251,7 +13584,12 @@ var BackupArchiveEntrySchema = object({
13251
13584
  /** Top-level locations included in the archive (db, addons, tls, …). */
13252
13585
  locations: array(string()).readonly(),
13253
13586
  /** Present when the archive is encrypted; restore then needs that key. */
13254
- encryption: BackupArchiveEncryptionSchema.optional()
13587
+ encryption: BackupArchiveEncryptionSchema.optional(),
13588
+ /**
13589
+ * The databases the run asked to carry (its retention class). Absent on an
13590
+ * archive made before several files were owned: that was `['settings']`.
13591
+ */
13592
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
13255
13593
  });
13256
13594
  var BackupEntrySchema = object({
13257
13595
  id: string(),
@@ -13285,7 +13623,12 @@ var ArchiveManifestSchema = object({
13285
13623
  * Live SQLite databases this archive carries as their OWNER's verified
13286
13624
  * snapshot instead of as files (D693). Absent on archives made before.
13287
13625
  */
13288
- sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
13626
+ sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
13627
+ /**
13628
+ * Owned database files the run did NOT carry (not selected): left out of the
13629
+ * tar and the entry list alike. Absent when every owned file was carried.
13630
+ */
13631
+ omittedDatabases: array(DataStoreDatabaseSchema).optional()
13289
13632
  });
13290
13633
  var LocationStatSchema = object({
13291
13634
  name: string(),
@@ -13407,6 +13750,12 @@ var BackupScheduleSchema = object({
13407
13750
  /** Optional subset of source locations to include; omitted = all. */
13408
13751
  dataSources: array(string()).readonly().optional(),
13409
13752
  /**
13753
+ * Which database files this schedule carries. Absent = `['settings']`
13754
+ * (an unstated ask is the minimum, D382). Events and history run weekly,
13755
+ * settings nightly (D852).
13756
+ */
13757
+ databases: array(DataStoreDatabaseSchema).readonly().optional(),
13758
+ /**
13410
13759
  * ms-epoch of the last tick that FIRED this schedule. Stamped before the
13411
13760
  * archive runs (it is the dedupe anchor), so it says "attempted", never
13412
13761
  * "succeeded" — a run refused by every destination stamps it too.
@@ -13430,7 +13779,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
13430
13779
  * retention). Omitted = each destination's own policy
13431
13780
  * retention (manual runs).
13432
13781
  */
13433
- retentionCount: number().int().min(1).max(1e3).optional()
13782
+ retentionCount: number().int().min(1).max(1e3).optional(),
13783
+ /** Database files to carry; omitted = `['settings']`. */
13784
+ databases: array(DataStoreDatabaseSchema).optional()
13434
13785
  }).optional(), BackupTriggerResultSchema, {
13435
13786
  kind: "mutation",
13436
13787
  auth: "admin"
@@ -13505,14 +13856,18 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
13505
13856
  ok: boolean(),
13506
13857
  error: string().optional(),
13507
13858
  nextRuns: array(number()).readonly()
13508
- })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
13859
+ })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(_void(), object({
13860
+ answered: boolean(),
13861
+ databases: array(DataStoreDatabaseSchema).readonly()
13862
+ }), { auth: "admin" }), method(object({
13509
13863
  id: string().optional(),
13510
13864
  label: string(),
13511
13865
  cron: string(),
13512
13866
  enabled: boolean(),
13513
13867
  locationIds: array(string()).readonly(),
13514
13868
  retentionCount: number().int().min(1).max(1e3),
13515
- dataSources: array(string()).readonly().optional()
13869
+ dataSources: array(string()).readonly().optional(),
13870
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
13516
13871
  }), BackupScheduleSchema, {
13517
13872
  kind: "mutation",
13518
13873
  auth: "admin"
@@ -15179,282 +15534,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
15179
15534
  timeoutMs: 30 * 6e4
15180
15535
  });
15181
15536
  /**
15182
- * Query filter for settings-store collections.
15183
- */
15184
- var QueryFilterSchema = object({
15185
- where: record(string(), unknown()).optional(),
15186
- whereIn: record(string(), array(unknown())).optional(),
15187
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15188
- /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
15189
- whereNot: record(string(), unknown()).optional(),
15190
- /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
15191
- * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
15192
- whereNotIn: record(string(), array(unknown())).optional(),
15193
- orderBy: object({
15194
- field: string(),
15195
- direction: _enum(["asc", "desc"])
15196
- }).optional(),
15197
- limit: number().optional(),
15198
- offset: number().optional()
15199
- });
15200
- /**
15201
- * The predicate half of a filter, for BULK MUTATIONS.
15202
- *
15203
- * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
15204
- * meaning for a statement that rewrites a set, and accepting them would invite
15205
- * a caller to believe `limit` bounds the damage. Every field is optional here
15206
- * only so the shape stays composable — the implementation REJECTS a filter
15207
- * that compiles to no predicate, because that is the whole collection.
15208
- */
15209
- var MutationFilterSchema = object({
15210
- where: record(string(), unknown()).optional(),
15211
- whereIn: record(string(), array(unknown())).optional(),
15212
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15213
- whereNot: record(string(), unknown()).optional(),
15214
- whereNotIn: record(string(), array(unknown())).optional()
15215
- });
15216
- /**
15217
- * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
15218
- *
15219
- * `as` names the slot in the result, so the SAME column may be asked twice with
15220
- * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
15221
- * a `Record<column, op>` shape could not express.
15222
- */
15223
- var AggregateFieldSchema = object({
15224
- /** Result key. */
15225
- as: string().min(1),
15226
- /** Column to aggregate. Must be a real column of a declared collection. */
15227
- field: string().min(1),
15228
- op: _enum([
15229
- "sum",
15230
- "min",
15231
- "max"
15232
- ])
15233
- });
15234
- /**
15235
- * `COUNT(*)` plus one number per requested field.
15236
- *
15237
- * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
15238
- * that really is 0 are different facts, and an accounting caller that renders
15239
- * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
15240
- */
15241
- var AggregateResultSchema = object({
15242
- count: number().int(),
15243
- values: record(string(), number().nullable())
15244
- });
15245
- /** A single stored record: `{ id, data }`. */
15246
- var SettingsRecordSchema = object({
15247
- id: string(),
15248
- data: record(string(), unknown())
15249
- });
15250
- /**
15251
- * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
15252
- * optional.
15253
- *
15254
- * A separate schema rather than loosening the shared one: every other method
15255
- * on this cap addresses a row BY its id, and making that field optional
15256
- * everywhere would turn a forgotten key into a silently generated one on
15257
- * `update` and `delete` as well.
15258
- */
15259
- var BulkRecordSchema = object({
15260
- id: string().optional(),
15261
- data: record(string(), unknown())
15262
- });
15263
- /**
15264
- * One write inside a {@link settingsStoreCapability.methods.transact} call.
15265
- * Only the three that a "replace this set, bump that revision" write needs.
15266
- */
15267
- var TransactOpSchema = discriminatedUnion("op", [
15268
- object({
15269
- op: literal("deleteWhere"),
15270
- collection: string(),
15271
- filter: MutationFilterSchema
15272
- }),
15273
- object({
15274
- op: literal("insertMany"),
15275
- collection: string(),
15276
- records: array(BulkRecordSchema).readonly()
15277
- }),
15278
- object({
15279
- op: literal("update"),
15280
- collection: string(),
15281
- id: string(),
15282
- data: record(string(), unknown())
15283
- })
15284
- ]);
15285
- /**
15286
- * The precondition of a transaction: the row `key` of `collection` must hold
15287
- * `equals` in `column`, read INSIDE the transaction.
15288
- */
15289
- var TransactGuardSchema = object({
15290
- collection: string(),
15291
- key: string(),
15292
- column: string(),
15293
- equals: unknown()
15294
- });
15295
- /**
15296
- * Column declaration for a structured (SQL-backed) collection.
15297
- *
15298
- * Logical types — the backend translates each to the matching SQLite
15299
- * storage class and handles per-type marshaling:
15300
- * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
15301
- * - `JSON` — TEXT under the hood; serialised on write, parsed on read
15302
- * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
15303
- */
15304
- var CollectionColumnSchema = object({
15305
- name: string(),
15306
- type: _enum([
15307
- "TEXT",
15308
- "INTEGER",
15309
- "REAL",
15310
- "JSON",
15311
- "BOOLEAN"
15312
- ]),
15313
- primaryKey: boolean().optional(),
15314
- notNull: boolean().optional(),
15315
- unique: boolean().optional(),
15316
- /**
15317
- * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
15318
- * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
15319
- * collection surface simply cannot express their existing tables — which is
15320
- * why they were still on the uncapped `table*` API.
15321
- */
15322
- defaultValue: union([
15323
- string(),
15324
- number(),
15325
- boolean()
15326
- ]).optional()
15327
- });
15328
- var CollectionIndexSchema = object({
15329
- name: string(),
15330
- columns: array(string()).readonly(),
15331
- unique: boolean().optional()
15332
- });
15333
- method(object({
15334
- namespace: string().optional(),
15335
- collection: string(),
15336
- key: string()
15337
- }), unknown(), { auth: "admin" }), method(object({
15338
- namespace: string().optional(),
15339
- collection: string(),
15340
- key: string(),
15341
- value: unknown()
15342
- }), _void(), {
15343
- kind: "mutation",
15344
- auth: "admin"
15345
- }), method(object({
15346
- namespace: string().optional(),
15347
- collection: string(),
15348
- filter: QueryFilterSchema.optional(),
15349
- columns: array(string()).readonly().optional()
15350
- }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
15351
- namespace: string().optional(),
15352
- collection: string(),
15353
- /** Declared columns identifying the slot; must be covered by a UNIQUE
15354
- * index on the collection. Never empty. */
15355
- conflict: array(string()).readonly(),
15356
- record: BulkRecordSchema
15357
- }), object({
15358
- /** The id the row HAS: assigned by SQLite on an insert, or the existing
15359
- * row's own id on an update. */
15360
- id: union([string(), number()]) }), {
15361
- kind: "mutation",
15362
- auth: "admin"
15363
- }), method(object({
15364
- namespace: string().optional(),
15365
- collection: string(),
15366
- record: object({
15367
- id: string().optional(),
15368
- data: record(string(), unknown())
15369
- })
15370
- }), object({
15371
- /**
15372
- * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
15373
- * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
15374
- * primary key — which is the only place an auto key is knowable.
15375
- */
15376
- id: union([string(), number()]) }), {
15377
- kind: "mutation",
15378
- auth: "admin"
15379
- }), method(object({
15380
- namespace: string().optional(),
15381
- collection: string(),
15382
- records: array(BulkRecordSchema).readonly()
15383
- }), object({ inserted: number().int() }), {
15384
- kind: "mutation",
15385
- auth: "admin"
15386
- }), method(object({
15387
- namespace: string().optional(),
15388
- guard: TransactGuardSchema.optional(),
15389
- ops: array(TransactOpSchema).readonly()
15390
- }), object({
15391
- applied: boolean(),
15392
- current: unknown().optional()
15393
- }), {
15394
- kind: "mutation",
15395
- auth: "admin"
15396
- }), method(object({
15397
- namespace: string().optional(),
15398
- collection: string(),
15399
- id: string(),
15400
- data: record(string(), unknown())
15401
- }), _void(), {
15402
- kind: "mutation",
15403
- auth: "admin"
15404
- }), method(object({
15405
- namespace: string().optional(),
15406
- collection: string(),
15407
- key: string()
15408
- }), _void(), {
15409
- kind: "mutation",
15410
- auth: "admin"
15411
- }), method(object({
15412
- namespace: string().optional(),
15413
- collection: string(),
15414
- filter: MutationFilterSchema
15415
- }), object({ deleted: number().int() }), {
15416
- kind: "mutation",
15417
- auth: "admin"
15418
- }), method(object({
15419
- namespace: string().optional(),
15420
- collection: string(),
15421
- filter: MutationFilterSchema,
15422
- data: record(string(), unknown())
15423
- }), object({ updated: number().int() }), {
15424
- kind: "mutation",
15425
- auth: "admin"
15426
- }), method(object({
15427
- namespace: string().optional(),
15428
- collection: string(),
15429
- filter: QueryFilterSchema.optional()
15430
- }), number(), { auth: "admin" }), method(object({
15431
- namespace: string().optional(),
15432
- collection: string(),
15433
- fields: array(AggregateFieldSchema).readonly(),
15434
- filter: QueryFilterSchema.optional()
15435
- }), AggregateResultSchema, { auth: "admin" }), method(object({
15436
- namespace: string().optional(),
15437
- collection: string(),
15438
- field: string(),
15439
- bucketSize: number().int().positive(),
15440
- origin: number().int(),
15441
- filter: QueryFilterSchema.optional()
15442
- }), array(object({
15443
- bucket: number().int(),
15444
- count: number().int()
15445
- })).readonly(), { auth: "admin" }), method(object({
15446
- namespace: string().optional(),
15447
- collection: string()
15448
- }), boolean(), { auth: "admin" }), method(object({
15449
- namespace: string().optional(),
15450
- collection: string(),
15451
- columns: array(CollectionColumnSchema).readonly(),
15452
- indexes: array(CollectionIndexSchema).readonly().optional()
15453
- }), _void(), {
15454
- kind: "mutation",
15455
- auth: "admin"
15456
- });
15457
- /**
15458
15537
  * What one engine says about itself. The orchestrator uses `kind` to pick
15459
15538
  * a registrant for a collection; `engineId` is what a log line names when
15460
15539
  * a call is routed or refused.
@@ -15534,6 +15613,14 @@ id: union([string(), number()]) }), {
15534
15613
  }), object({ id: union([string(), number()]) }), {
15535
15614
  kind: "mutation",
15536
15615
  auth: "admin"
15616
+ }), method(object({
15617
+ namespace: string().optional(),
15618
+ collection: string(),
15619
+ conflict: array(string()).readonly(),
15620
+ records: array(BulkRecordSchema).readonly()
15621
+ }), object({ upserted: number().int() }), {
15622
+ kind: "mutation",
15623
+ auth: "admin"
15537
15624
  }), method(object({
15538
15625
  namespace: string().optional(),
15539
15626
  collection: string(),
@@ -15603,12 +15690,7 @@ id: union([string(), number()]) }), {
15603
15690
  })).readonly(), { auth: "admin" }), method(object({
15604
15691
  namespace: string().optional(),
15605
15692
  collection: string()
15606
- }), boolean(), { auth: "admin" }), method(object({
15607
- namespace: string().optional(),
15608
- collection: string(),
15609
- columns: array(CollectionColumnSchema).readonly(),
15610
- indexes: array(CollectionIndexSchema).readonly().optional()
15611
- }), _void(), {
15693
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
15612
15694
  kind: "mutation",
15613
15695
  auth: "admin"
15614
15696
  });
@@ -31874,6 +31956,18 @@ var CalendarInfoSchema = object({
31874
31956
  source: CalendarSourceKindSchema,
31875
31957
  enabled: boolean()
31876
31958
  });
31959
+ /**
31960
+ * Time contract of {@link CalendarEvent}.
31961
+ *
31962
+ * - Timed event: `startMs` / `endMs` are real instants; `endMs` is exclusive.
31963
+ * - All-day event (`allDay: true`): the event is a run of calendar DATES, not
31964
+ * instants. `startMs` is UTC midnight of the first date and `endMs` is UTC
31965
+ * midnight of the day AFTER the last date (RFC 5545 exclusive DTEND), so a
31966
+ * one-day event spans exactly 24 h. Every provider produces that and no
31967
+ * consumer may read the instants in a local timezone: use
31968
+ * {@link calendarEventLocalSpan}. Reading UTC midnight as local time put an
31969
+ * all-day event on the following day for any viewer ahead of UTC.
31970
+ */
31877
31971
  var CalendarEventSchema = object({
31878
31972
  id: string().min(1),
31879
31973
  calendarId: string().min(1),
@@ -34016,7 +34110,15 @@ var HubAddressBookSchema = object({
34016
34110
  publicEndpoint: HubAddressRoleResolutionSchema
34017
34111
  }),
34018
34112
  /** The `hub=` an app link carries (D709), or null. */
34019
- appLinkHub: string().nullable()
34113
+ appLinkHub: string().nullable(),
34114
+ /**
34115
+ * Every origin a browser can really reach this hub at, in the scheme each
34116
+ * listener serves: `https://<lan>:<httpsPort>`, and `http://<lan>:<httpPort>`
34117
+ * while LAN HTTP is on, plus the public and custom addresses. Distinct from
34118
+ * `rows`, which show `http://` only while LAN HTTP is on. Never loopback,
34119
+ * never the app link. Absent on a hub older than D794's amendment.
34120
+ */
34121
+ listenerOrigins: array(string()).readonly().optional()
34020
34122
  });
34021
34123
  var AllowedAddressesSchema = object({
34022
34124
  /**
@@ -40975,6 +41077,12 @@ Object.freeze({
40975
41077
  addonId: null,
40976
41078
  access: "view"
40977
41079
  },
41080
+ "backup.listAvailableDatabases": {
41081
+ capName: "backup",
41082
+ capScope: "system",
41083
+ addonId: null,
41084
+ access: "view"
41085
+ },
40978
41086
  "backup.listDestinations": {
40979
41087
  capName: "backup",
40980
41088
  capScope: "system",
@@ -41695,6 +41803,12 @@ Object.freeze({
41695
41803
  addonId: null,
41696
41804
  access: "create"
41697
41805
  },
41806
+ "dataStoreProvider.upsertMany": {
41807
+ capName: "data-store-provider",
41808
+ capScope: "system",
41809
+ addonId: null,
41810
+ access: "create"
41811
+ },
41698
41812
  "dayNight.getOptions": {
41699
41813
  capName: "day-night",
41700
41814
  capScope: "device",
@@ -46543,6 +46657,12 @@ Object.freeze({
46543
46657
  addonId: null,
46544
46658
  access: "create"
46545
46659
  },
46660
+ "settingsStore.upsertMany": {
46661
+ capName: "settings-store",
46662
+ capScope: "system",
46663
+ addonId: null,
46664
+ access: "create"
46665
+ },
46546
46666
  "smoke.getStatus": {
46547
46667
  capName: "smoke",
46548
46668
  capScope: "device",