@camstack/addon-pipeline 1.2.364 → 1.2.365

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 (35) hide show
  1. package/dist/audio-analyzer/index.js +3 -3
  2. package/dist/audio-analyzer/index.mjs +3 -3
  3. package/dist/{custom-model-catalog-nx2TXAGS.js → custom-model-catalog-C34VqcPo.js} +2 -2
  4. package/dist/{custom-model-catalog-DHFPSu0E.mjs → custom-model-catalog-CtpK3FKL.mjs} +2 -2
  5. package/dist/detection-pipeline/index.js +4 -4
  6. package/dist/detection-pipeline/index.mjs +4 -4
  7. package/dist/{dist-BX9VTm12.mjs → dist-BshC0NZR.mjs} +411 -291
  8. package/dist/{dist-CGOb--t-.js → dist-i4kS_3O7.js} +411 -291
  9. package/dist/{model-catalogs-DHV48cdY.js → model-catalogs-Cy7mZRWh.js} +1 -1
  10. package/dist/{model-catalogs-DNL4ydAg.mjs → model-catalogs-DNx5ATgm.mjs} +1 -1
  11. package/dist/motion-wasm/index.js +1 -1
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/{node-C8bbmV3c.mjs → node-Dqmrb990.mjs} +1 -1
  14. package/dist/{node-UBMRK8SK.js → node-TzgGsCvW.js} +1 -1
  15. package/dist/pipeline-runner/index.js +3 -3
  16. package/dist/pipeline-runner/index.mjs +3 -3
  17. package/dist/{process-memory-1BwIq2Ks.js → process-memory-DLCPFTGC.js} +1 -1
  18. package/dist/{process-memory-BHG2uCeq.mjs → process-memory-DyfrbFY4.mjs} +1 -1
  19. package/dist/recorder/index.js +2 -2
  20. package/dist/recorder/index.mjs +2 -2
  21. package/dist/{segment-demux-js-PkDP-xQg.js → segment-demux-js-C9AYdKkD.js} +1 -1
  22. package/dist/{segment-demux-js-BhnT__dA.mjs → segment-demux-js-COoPqx93.mjs} +1 -1
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-vdmrukBk.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DVgnss_e.mjs} +2 -2
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DWI1BCfa.mjs +26 -0
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BUBmyDde.mjs +26 -0
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-D_DBY5wu.mjs → hostInit-ZvA7Cl_1.mjs} +2 -2
  30. package/dist/stream-broker/index.js +325 -205
  31. package/dist/stream-broker/index.mjs +325 -205
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/package.json +4 -2
  34. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-ScPS8ZWM.mjs +0 -26
  35. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Cq5NPjBX.mjs +0 -26
@@ -15624,6 +15624,329 @@ method(object({
15624
15624
  password: string()
15625
15625
  }), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
15626
15626
  /**
15627
+ * Query filter for settings-store collections.
15628
+ */
15629
+ var QueryFilterSchema = object({
15630
+ where: record(string(), unknown()).optional(),
15631
+ whereIn: record(string(), array(unknown())).optional(),
15632
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15633
+ /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
15634
+ whereNot: record(string(), unknown()).optional(),
15635
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
15636
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
15637
+ whereNotIn: record(string(), array(unknown())).optional(),
15638
+ orderBy: object({
15639
+ field: string(),
15640
+ direction: _enum(["asc", "desc"])
15641
+ }).optional(),
15642
+ limit: number().optional(),
15643
+ offset: number().optional()
15644
+ });
15645
+ /**
15646
+ * The predicate half of a filter, for BULK MUTATIONS.
15647
+ *
15648
+ * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
15649
+ * meaning for a statement that rewrites a set, and accepting them would invite
15650
+ * a caller to believe `limit` bounds the damage. Every field is optional here
15651
+ * only so the shape stays composable — the implementation REJECTS a filter
15652
+ * that compiles to no predicate, because that is the whole collection.
15653
+ */
15654
+ var MutationFilterSchema = object({
15655
+ where: record(string(), unknown()).optional(),
15656
+ whereIn: record(string(), array(unknown())).optional(),
15657
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15658
+ whereNot: record(string(), unknown()).optional(),
15659
+ whereNotIn: record(string(), array(unknown())).optional()
15660
+ });
15661
+ /**
15662
+ * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
15663
+ *
15664
+ * `as` names the slot in the result, so the SAME column may be asked twice with
15665
+ * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
15666
+ * a `Record<column, op>` shape could not express.
15667
+ */
15668
+ var AggregateFieldSchema = object({
15669
+ /** Result key. */
15670
+ as: string().min(1),
15671
+ /** Column to aggregate. Must be a real column of a declared collection. */
15672
+ field: string().min(1),
15673
+ op: _enum([
15674
+ "sum",
15675
+ "min",
15676
+ "max"
15677
+ ])
15678
+ });
15679
+ /**
15680
+ * `COUNT(*)` plus one number per requested field.
15681
+ *
15682
+ * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
15683
+ * that really is 0 are different facts, and an accounting caller that renders
15684
+ * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
15685
+ */
15686
+ var AggregateResultSchema = object({
15687
+ count: number().int(),
15688
+ values: record(string(), number().nullable())
15689
+ });
15690
+ /** A single stored record: `{ id, data }`. */
15691
+ var SettingsRecordSchema = object({
15692
+ id: string(),
15693
+ data: record(string(), unknown())
15694
+ });
15695
+ /**
15696
+ * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
15697
+ * optional.
15698
+ *
15699
+ * A separate schema rather than loosening the shared one: every other method
15700
+ * on this cap addresses a row BY its id, and making that field optional
15701
+ * everywhere would turn a forgotten key into a silently generated one on
15702
+ * `update` and `delete` as well.
15703
+ */
15704
+ var BulkRecordSchema = object({
15705
+ id: string().optional(),
15706
+ data: record(string(), unknown())
15707
+ });
15708
+ /**
15709
+ * The database FILES one `sqlite-settings` engine process owns (D851).
15710
+ * Closed on purpose: a file is a thing the engine opens, backs up and gives a
15711
+ * serving thread, so a new one is a code change, never a string a caller
15712
+ * invents. `settings` is `camstack.db` and the default for every collection
15713
+ * that names no file.
15714
+ */
15715
+ var DataStoreDatabaseSchema = _enum([
15716
+ "settings",
15717
+ "events",
15718
+ "history"
15719
+ ]);
15720
+ DataStoreDatabaseSchema.options;
15721
+ /**
15722
+ * One write inside a {@link settingsStoreCapability.methods.transact} call.
15723
+ * The three that a "replace this set, bump that revision" write needs, plus
15724
+ * the batched upsert a rollup writer needs.
15725
+ */
15726
+ var TransactOpSchema = discriminatedUnion("op", [
15727
+ object({
15728
+ op: literal("deleteWhere"),
15729
+ collection: string(),
15730
+ filter: MutationFilterSchema
15731
+ }),
15732
+ object({
15733
+ op: literal("insertMany"),
15734
+ collection: string(),
15735
+ records: array(BulkRecordSchema).readonly()
15736
+ }),
15737
+ object({
15738
+ op: literal("update"),
15739
+ collection: string(),
15740
+ id: string(),
15741
+ data: record(string(), unknown())
15742
+ }),
15743
+ object({
15744
+ op: literal("upsertMany"),
15745
+ collection: string(),
15746
+ conflict: array(string()).readonly(),
15747
+ records: array(BulkRecordSchema).readonly()
15748
+ })
15749
+ ]);
15750
+ /**
15751
+ * The precondition of a transaction: the row `key` of `collection` must hold
15752
+ * `equals` in `column`, read INSIDE the transaction.
15753
+ */
15754
+ var TransactGuardSchema = object({
15755
+ collection: string(),
15756
+ key: string(),
15757
+ column: string(),
15758
+ equals: unknown()
15759
+ });
15760
+ /**
15761
+ * Column declaration for a structured (SQL-backed) collection.
15762
+ *
15763
+ * Logical types — the backend translates each to the matching SQLite
15764
+ * storage class and handles per-type marshaling:
15765
+ * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
15766
+ * - `JSON` — TEXT under the hood; serialised on write, parsed on read
15767
+ * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
15768
+ */
15769
+ var CollectionColumnSchema = object({
15770
+ name: string(),
15771
+ type: _enum([
15772
+ "TEXT",
15773
+ "INTEGER",
15774
+ "REAL",
15775
+ "JSON",
15776
+ "BOOLEAN"
15777
+ ]),
15778
+ primaryKey: boolean().optional(),
15779
+ notNull: boolean().optional(),
15780
+ unique: boolean().optional(),
15781
+ /**
15782
+ * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
15783
+ * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
15784
+ * collection surface simply cannot express their existing tables — which is
15785
+ * why they were still on the uncapped `table*` API.
15786
+ */
15787
+ defaultValue: union([
15788
+ string(),
15789
+ number(),
15790
+ boolean()
15791
+ ]).optional()
15792
+ });
15793
+ var CollectionIndexSchema = object({
15794
+ name: string(),
15795
+ columns: array(string()).readonly(),
15796
+ unique: boolean().optional()
15797
+ });
15798
+ /**
15799
+ * The input of `declareCollection` — ONE schema for the door and for the
15800
+ * engine behind it, so the two surfaces cannot drift (the dispatcher forwards
15801
+ * the payload untouched).
15802
+ *
15803
+ * - `database` — the file the collection lives in (D851). Absent means
15804
+ * `settings`. A declaration naming a file other than the one the table is
15805
+ * already in is REFUSED by the engine, never moved.
15806
+ * - `primaryKey` — a COMPOSITE key, as column names. A single name is the same
15807
+ * as `primaryKey: true` on that column. A composite-keyed collection has no
15808
+ * `id`: it is written with `insertMany` / `upsertMany` / `transact` and read
15809
+ * with `query` / `count` / `aggregate` / `deleteWhere`; the calls that
15810
+ * address one row by id are refused.
15811
+ * - `withoutRowid` — emit `WITHOUT ROWID`. Requires a primary key.
15812
+ */
15813
+ var DeclareCollectionInputSchema = object({
15814
+ namespace: string().optional(),
15815
+ collection: string(),
15816
+ columns: array(CollectionColumnSchema).readonly(),
15817
+ indexes: array(CollectionIndexSchema).readonly().optional(),
15818
+ database: DataStoreDatabaseSchema.optional(),
15819
+ primaryKey: array(string()).readonly().optional(),
15820
+ withoutRowid: boolean().optional()
15821
+ });
15822
+ method(object({
15823
+ namespace: string().optional(),
15824
+ collection: string(),
15825
+ key: string()
15826
+ }), unknown(), { auth: "admin" }), method(object({
15827
+ namespace: string().optional(),
15828
+ collection: string(),
15829
+ key: string(),
15830
+ value: unknown()
15831
+ }), _void(), {
15832
+ kind: "mutation",
15833
+ auth: "admin"
15834
+ }), method(object({
15835
+ namespace: string().optional(),
15836
+ collection: string(),
15837
+ filter: QueryFilterSchema.optional(),
15838
+ columns: array(string()).readonly().optional()
15839
+ }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
15840
+ namespace: string().optional(),
15841
+ collection: string(),
15842
+ /** Declared columns identifying the slot; must be covered by a UNIQUE
15843
+ * index on the collection. Never empty. */
15844
+ conflict: array(string()).readonly(),
15845
+ record: BulkRecordSchema
15846
+ }), object({
15847
+ /** The id the row HAS: assigned by SQLite on an insert, or the existing
15848
+ * row's own id on an update. */
15849
+ id: union([string(), number()]) }), {
15850
+ kind: "mutation",
15851
+ auth: "admin"
15852
+ }), method(object({
15853
+ namespace: string().optional(),
15854
+ collection: string(),
15855
+ conflict: array(string()).readonly(),
15856
+ records: array(BulkRecordSchema).readonly()
15857
+ }), object({ upserted: number().int() }), {
15858
+ kind: "mutation",
15859
+ auth: "admin"
15860
+ }), method(object({
15861
+ namespace: string().optional(),
15862
+ collection: string(),
15863
+ record: object({
15864
+ id: string().optional(),
15865
+ data: record(string(), unknown())
15866
+ })
15867
+ }), object({
15868
+ /**
15869
+ * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
15870
+ * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
15871
+ * primary key — which is the only place an auto key is knowable.
15872
+ */
15873
+ id: union([string(), number()]) }), {
15874
+ kind: "mutation",
15875
+ auth: "admin"
15876
+ }), method(object({
15877
+ namespace: string().optional(),
15878
+ collection: string(),
15879
+ records: array(BulkRecordSchema).readonly()
15880
+ }), object({ inserted: number().int() }), {
15881
+ kind: "mutation",
15882
+ auth: "admin"
15883
+ }), method(object({
15884
+ namespace: string().optional(),
15885
+ guard: TransactGuardSchema.optional(),
15886
+ ops: array(TransactOpSchema).readonly()
15887
+ }), object({
15888
+ applied: boolean(),
15889
+ current: unknown().optional()
15890
+ }), {
15891
+ kind: "mutation",
15892
+ auth: "admin"
15893
+ }), method(object({
15894
+ namespace: string().optional(),
15895
+ collection: string(),
15896
+ id: string(),
15897
+ data: record(string(), unknown())
15898
+ }), _void(), {
15899
+ kind: "mutation",
15900
+ auth: "admin"
15901
+ }), method(object({
15902
+ namespace: string().optional(),
15903
+ collection: string(),
15904
+ key: string()
15905
+ }), _void(), {
15906
+ kind: "mutation",
15907
+ auth: "admin"
15908
+ }), method(object({
15909
+ namespace: string().optional(),
15910
+ collection: string(),
15911
+ filter: MutationFilterSchema
15912
+ }), object({ deleted: number().int() }), {
15913
+ kind: "mutation",
15914
+ auth: "admin"
15915
+ }), method(object({
15916
+ namespace: string().optional(),
15917
+ collection: string(),
15918
+ filter: MutationFilterSchema,
15919
+ data: record(string(), unknown())
15920
+ }), object({ updated: number().int() }), {
15921
+ kind: "mutation",
15922
+ auth: "admin"
15923
+ }), method(object({
15924
+ namespace: string().optional(),
15925
+ collection: string(),
15926
+ filter: QueryFilterSchema.optional()
15927
+ }), number(), { auth: "admin" }), method(object({
15928
+ namespace: string().optional(),
15929
+ collection: string(),
15930
+ fields: array(AggregateFieldSchema).readonly(),
15931
+ filter: QueryFilterSchema.optional()
15932
+ }), AggregateResultSchema, { auth: "admin" }), method(object({
15933
+ namespace: string().optional(),
15934
+ collection: string(),
15935
+ field: string(),
15936
+ bucketSize: number().int().positive(),
15937
+ origin: number().int(),
15938
+ filter: QueryFilterSchema.optional()
15939
+ }), array(object({
15940
+ bucket: number().int(),
15941
+ count: number().int()
15942
+ })).readonly(), { auth: "admin" }), method(object({
15943
+ namespace: string().optional(),
15944
+ collection: string()
15945
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
15946
+ kind: "mutation",
15947
+ auth: "admin"
15948
+ });
15949
+ /**
15627
15950
  * How long one snapshot may take end to end: the pinned copy of the whole
15628
15951
  * database plus `PRAGMA integrity_check` over the copy, on the hub's slowest
15629
15952
  * disk. ~800 MB at a pessimistic 10 MB/s is under 3 minutes; the bound is
@@ -15636,7 +15959,11 @@ var DATABASE_SNAPSHOT_TIMEOUT_MS = 30 * 6e4;
15636
15959
  * database has no sidecars and is just as owned). Paths are absolute on the
15637
15960
  * owner's host.
15638
15961
  */
15639
- var DatabaseSnapshotTargetsSchema = object({ databases: array(object({ livePath: string() })) });
15962
+ var DatabaseSnapshotTargetsSchema = object({ databases: array(object({
15963
+ /** Which owned file this is — the handle `writeSnapshot` takes. */
15964
+ databaseId: DataStoreDatabaseSchema,
15965
+ livePath: string()
15966
+ })) });
15640
15967
  /** One b-tree table of the snapshot and the rows it holds. */
15641
15968
  var DatabaseSnapshotTableSchema = object({
15642
15969
  name: string(),
@@ -15669,6 +15996,10 @@ var DatabaseSnapshotResultSchema = object({
15669
15996
  /** When the pinned read transaction began (ms epoch) — the snapshot's instant. */
15670
15997
  takenAt: number()
15671
15998
  });
15999
+ /** A snapshot the owner wrote, with the file it belongs to. */
16000
+ var DatabaseSnapshotWrittenSchema = DatabaseSnapshotResultSchema.extend({ databaseId: DataStoreDatabaseSchema });
16001
+ /** Which database `writeSnapshot` copies. Required: an unstated ask is not guessed. */
16002
+ var DatabaseSnapshotRequestSchema = object({ databaseId: DataStoreDatabaseSchema });
15672
16003
  /**
15673
16004
  * A snapshot as an ARCHIVE records it (`ArchiveManifest.sqliteSnapshots`):
15674
16005
  * the same facts, with both paths relative to the archive root (the node's
@@ -15678,9 +16009,11 @@ var ArchiveSqliteSnapshotSchema = DatabaseSnapshotResultSchema.extend({
15678
16009
  /** Archive-relative path of the live database the archive does NOT carry. */
15679
16010
  livePath: string(),
15680
16011
  /** Archive-relative path of the verified copy it carries in its place. */
15681
- snapshotPath: string()
16012
+ snapshotPath: string(),
16013
+ /** Absent on an archive made before several files were owned: that was `settings`. */
16014
+ databaseId: DataStoreDatabaseSchema.optional()
15682
16015
  });
15683
- method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(object({}), DatabaseSnapshotResultSchema, {
16016
+ method(object({}), DatabaseSnapshotTargetsSchema, { auth: "admin" }), method(DatabaseSnapshotRequestSchema, DatabaseSnapshotWrittenSchema, {
15684
16017
  kind: "mutation",
15685
16018
  auth: "admin",
15686
16019
  timeoutMs: DATABASE_SNAPSHOT_TIMEOUT_MS
@@ -15801,7 +16134,12 @@ var BackupArchiveEntrySchema = object({
15801
16134
  /** Top-level locations included in the archive (db, addons, tls, …). */
15802
16135
  locations: array(string()).readonly(),
15803
16136
  /** Present when the archive is encrypted; restore then needs that key. */
15804
- encryption: BackupArchiveEncryptionSchema.optional()
16137
+ encryption: BackupArchiveEncryptionSchema.optional(),
16138
+ /**
16139
+ * The databases the run asked to carry (its retention class). Absent on an
16140
+ * archive made before several files were owned: that was `['settings']`.
16141
+ */
16142
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
15805
16143
  });
15806
16144
  var BackupEntrySchema = object({
15807
16145
  id: string(),
@@ -15835,7 +16173,12 @@ var ArchiveManifestSchema = object({
15835
16173
  * Live SQLite databases this archive carries as their OWNER's verified
15836
16174
  * snapshot instead of as files (D693). Absent on archives made before.
15837
16175
  */
15838
- sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional()
16176
+ sqliteSnapshots: array(ArchiveSqliteSnapshotSchema).optional(),
16177
+ /**
16178
+ * Owned database files the run did NOT carry (not selected): left out of the
16179
+ * tar and the entry list alike. Absent when every owned file was carried.
16180
+ */
16181
+ omittedDatabases: array(DataStoreDatabaseSchema).optional()
15839
16182
  });
15840
16183
  var LocationStatSchema = object({
15841
16184
  name: string(),
@@ -15957,6 +16300,12 @@ var BackupScheduleSchema = object({
15957
16300
  /** Optional subset of source locations to include; omitted = all. */
15958
16301
  dataSources: array(string()).readonly().optional(),
15959
16302
  /**
16303
+ * Which database files this schedule carries. Absent = `['settings']`
16304
+ * (an unstated ask is the minimum, D382). Events and history run weekly,
16305
+ * settings nightly (D852).
16306
+ */
16307
+ databases: array(DataStoreDatabaseSchema).readonly().optional(),
16308
+ /**
15960
16309
  * ms-epoch of the last tick that FIRED this schedule. Stamped before the
15961
16310
  * archive runs (it is the dedupe anchor), so it says "attempted", never
15962
16311
  * "succeeded" — a run refused by every destination stamps it too.
@@ -15980,7 +16329,9 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
15980
16329
  * retention). Omitted = each destination's own policy
15981
16330
  * retention (manual runs).
15982
16331
  */
15983
- retentionCount: number().int().min(1).max(1e3).optional()
16332
+ retentionCount: number().int().min(1).max(1e3).optional(),
16333
+ /** Database files to carry; omitted = `['settings']`. */
16334
+ databases: array(DataStoreDatabaseSchema).optional()
15984
16335
  }).optional(), BackupTriggerResultSchema, {
15985
16336
  kind: "mutation",
15986
16337
  auth: "admin"
@@ -16055,14 +16406,18 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
16055
16406
  ok: boolean(),
16056
16407
  error: string().optional(),
16057
16408
  nextRuns: array(number()).readonly()
16058
- })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(object({
16409
+ })), method(_void(), array(BackupScheduleSchema).readonly(), { auth: "admin" }), method(_void(), object({
16410
+ answered: boolean(),
16411
+ databases: array(DataStoreDatabaseSchema).readonly()
16412
+ }), { auth: "admin" }), method(object({
16059
16413
  id: string().optional(),
16060
16414
  label: string(),
16061
16415
  cron: string(),
16062
16416
  enabled: boolean(),
16063
16417
  locationIds: array(string()).readonly(),
16064
16418
  retentionCount: number().int().min(1).max(1e3),
16065
- dataSources: array(string()).readonly().optional()
16419
+ dataSources: array(string()).readonly().optional(),
16420
+ databases: array(DataStoreDatabaseSchema).readonly().optional()
16066
16421
  }), BackupScheduleSchema, {
16067
16422
  kind: "mutation",
16068
16423
  auth: "admin"
@@ -18079,282 +18434,6 @@ method(_void(), array(CustomModelDescriptorSchema).readonly(), { auth: "admin" }
18079
18434
  timeoutMs: 30 * 6e4
18080
18435
  });
18081
18436
  /**
18082
- * Query filter for settings-store collections.
18083
- */
18084
- var QueryFilterSchema = object({
18085
- where: record(string(), unknown()).optional(),
18086
- whereIn: record(string(), array(unknown())).optional(),
18087
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
18088
- /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
18089
- whereNot: record(string(), unknown()).optional(),
18090
- /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
18091
- * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
18092
- whereNotIn: record(string(), array(unknown())).optional(),
18093
- orderBy: object({
18094
- field: string(),
18095
- direction: _enum(["asc", "desc"])
18096
- }).optional(),
18097
- limit: number().optional(),
18098
- offset: number().optional()
18099
- });
18100
- /**
18101
- * The predicate half of a filter, for BULK MUTATIONS.
18102
- *
18103
- * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
18104
- * meaning for a statement that rewrites a set, and accepting them would invite
18105
- * a caller to believe `limit` bounds the damage. Every field is optional here
18106
- * only so the shape stays composable — the implementation REJECTS a filter
18107
- * that compiles to no predicate, because that is the whole collection.
18108
- */
18109
- var MutationFilterSchema = object({
18110
- where: record(string(), unknown()).optional(),
18111
- whereIn: record(string(), array(unknown())).optional(),
18112
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
18113
- whereNot: record(string(), unknown()).optional(),
18114
- whereNotIn: record(string(), array(unknown())).optional()
18115
- });
18116
- /**
18117
- * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
18118
- *
18119
- * `as` names the slot in the result, so the SAME column may be asked twice with
18120
- * two operations (`MIN(startMs)` and `MAX(startMs)` in one round trip) — which
18121
- * a `Record<column, op>` shape could not express.
18122
- */
18123
- var AggregateFieldSchema = object({
18124
- /** Result key. */
18125
- as: string().min(1),
18126
- /** Column to aggregate. Must be a real column of a declared collection. */
18127
- field: string().min(1),
18128
- op: _enum([
18129
- "sum",
18130
- "min",
18131
- "max"
18132
- ])
18133
- });
18134
- /**
18135
- * `COUNT(*)` plus one number per requested field.
18136
- *
18137
- * `null` means NO ROW MATCHED, never zero: a `SUM` over an empty set and a sum
18138
- * that really is 0 are different facts, and an accounting caller that renders
18139
- * "0 bytes, oldest = 0" for "nothing here" reports a lie about a disk.
18140
- */
18141
- var AggregateResultSchema = object({
18142
- count: number().int(),
18143
- values: record(string(), number().nullable())
18144
- });
18145
- /** A single stored record: `{ id, data }`. */
18146
- var SettingsRecordSchema = object({
18147
- id: string(),
18148
- data: record(string(), unknown())
18149
- });
18150
- /**
18151
- * One record of a BULK insert — {@link SettingsRecordSchema} with the id made
18152
- * optional.
18153
- *
18154
- * A separate schema rather than loosening the shared one: every other method
18155
- * on this cap addresses a row BY its id, and making that field optional
18156
- * everywhere would turn a forgotten key into a silently generated one on
18157
- * `update` and `delete` as well.
18158
- */
18159
- var BulkRecordSchema = object({
18160
- id: string().optional(),
18161
- data: record(string(), unknown())
18162
- });
18163
- /**
18164
- * One write inside a {@link settingsStoreCapability.methods.transact} call.
18165
- * Only the three that a "replace this set, bump that revision" write needs.
18166
- */
18167
- var TransactOpSchema = discriminatedUnion("op", [
18168
- object({
18169
- op: literal("deleteWhere"),
18170
- collection: string(),
18171
- filter: MutationFilterSchema
18172
- }),
18173
- object({
18174
- op: literal("insertMany"),
18175
- collection: string(),
18176
- records: array(BulkRecordSchema).readonly()
18177
- }),
18178
- object({
18179
- op: literal("update"),
18180
- collection: string(),
18181
- id: string(),
18182
- data: record(string(), unknown())
18183
- })
18184
- ]);
18185
- /**
18186
- * The precondition of a transaction: the row `key` of `collection` must hold
18187
- * `equals` in `column`, read INSIDE the transaction.
18188
- */
18189
- var TransactGuardSchema = object({
18190
- collection: string(),
18191
- key: string(),
18192
- column: string(),
18193
- equals: unknown()
18194
- });
18195
- /**
18196
- * Column declaration for a structured (SQL-backed) collection.
18197
- *
18198
- * Logical types — the backend translates each to the matching SQLite
18199
- * storage class and handles per-type marshaling:
18200
- * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
18201
- * - `JSON` — TEXT under the hood; serialised on write, parsed on read
18202
- * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
18203
- */
18204
- var CollectionColumnSchema = object({
18205
- name: string(),
18206
- type: _enum([
18207
- "TEXT",
18208
- "INTEGER",
18209
- "REAL",
18210
- "JSON",
18211
- "BOOLEAN"
18212
- ]),
18213
- primaryKey: boolean().optional(),
18214
- notNull: boolean().optional(),
18215
- unique: boolean().optional(),
18216
- /**
18217
- * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
18218
- * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
18219
- * collection surface simply cannot express their existing tables — which is
18220
- * why they were still on the uncapped `table*` API.
18221
- */
18222
- defaultValue: union([
18223
- string(),
18224
- number(),
18225
- boolean()
18226
- ]).optional()
18227
- });
18228
- var CollectionIndexSchema = object({
18229
- name: string(),
18230
- columns: array(string()).readonly(),
18231
- unique: boolean().optional()
18232
- });
18233
- method(object({
18234
- namespace: string().optional(),
18235
- collection: string(),
18236
- key: string()
18237
- }), unknown(), { auth: "admin" }), method(object({
18238
- namespace: string().optional(),
18239
- collection: string(),
18240
- key: string(),
18241
- value: unknown()
18242
- }), _void(), {
18243
- kind: "mutation",
18244
- auth: "admin"
18245
- }), method(object({
18246
- namespace: string().optional(),
18247
- collection: string(),
18248
- filter: QueryFilterSchema.optional(),
18249
- columns: array(string()).readonly().optional()
18250
- }), array(SettingsRecordSchema).readonly(), { auth: "admin" }), method(object({
18251
- namespace: string().optional(),
18252
- collection: string(),
18253
- /** Declared columns identifying the slot; must be covered by a UNIQUE
18254
- * index on the collection. Never empty. */
18255
- conflict: array(string()).readonly(),
18256
- record: BulkRecordSchema
18257
- }), object({
18258
- /** The id the row HAS: assigned by SQLite on an insert, or the existing
18259
- * row's own id on an update. */
18260
- id: union([string(), number()]) }), {
18261
- kind: "mutation",
18262
- auth: "admin"
18263
- }), method(object({
18264
- namespace: string().optional(),
18265
- collection: string(),
18266
- record: object({
18267
- id: string().optional(),
18268
- data: record(string(), unknown())
18269
- })
18270
- }), object({
18271
- /**
18272
- * The id the row ACTUALLY got (D473): the one supplied, the UUID minted
18273
- * for an absent one, or the ROWID SQLite assigned on an `INTEGER`
18274
- * primary key — which is the only place an auto key is knowable.
18275
- */
18276
- id: union([string(), number()]) }), {
18277
- kind: "mutation",
18278
- auth: "admin"
18279
- }), method(object({
18280
- namespace: string().optional(),
18281
- collection: string(),
18282
- records: array(BulkRecordSchema).readonly()
18283
- }), object({ inserted: number().int() }), {
18284
- kind: "mutation",
18285
- auth: "admin"
18286
- }), method(object({
18287
- namespace: string().optional(),
18288
- guard: TransactGuardSchema.optional(),
18289
- ops: array(TransactOpSchema).readonly()
18290
- }), object({
18291
- applied: boolean(),
18292
- current: unknown().optional()
18293
- }), {
18294
- kind: "mutation",
18295
- auth: "admin"
18296
- }), method(object({
18297
- namespace: string().optional(),
18298
- collection: string(),
18299
- id: string(),
18300
- data: record(string(), unknown())
18301
- }), _void(), {
18302
- kind: "mutation",
18303
- auth: "admin"
18304
- }), method(object({
18305
- namespace: string().optional(),
18306
- collection: string(),
18307
- key: string()
18308
- }), _void(), {
18309
- kind: "mutation",
18310
- auth: "admin"
18311
- }), method(object({
18312
- namespace: string().optional(),
18313
- collection: string(),
18314
- filter: MutationFilterSchema
18315
- }), object({ deleted: number().int() }), {
18316
- kind: "mutation",
18317
- auth: "admin"
18318
- }), method(object({
18319
- namespace: string().optional(),
18320
- collection: string(),
18321
- filter: MutationFilterSchema,
18322
- data: record(string(), unknown())
18323
- }), object({ updated: number().int() }), {
18324
- kind: "mutation",
18325
- auth: "admin"
18326
- }), method(object({
18327
- namespace: string().optional(),
18328
- collection: string(),
18329
- filter: QueryFilterSchema.optional()
18330
- }), number(), { auth: "admin" }), method(object({
18331
- namespace: string().optional(),
18332
- collection: string(),
18333
- fields: array(AggregateFieldSchema).readonly(),
18334
- filter: QueryFilterSchema.optional()
18335
- }), AggregateResultSchema, { auth: "admin" }), method(object({
18336
- namespace: string().optional(),
18337
- collection: string(),
18338
- field: string(),
18339
- bucketSize: number().int().positive(),
18340
- origin: number().int(),
18341
- filter: QueryFilterSchema.optional()
18342
- }), array(object({
18343
- bucket: number().int(),
18344
- count: number().int()
18345
- })).readonly(), { auth: "admin" }), method(object({
18346
- namespace: string().optional(),
18347
- collection: string()
18348
- }), boolean(), { auth: "admin" }), method(object({
18349
- namespace: string().optional(),
18350
- collection: string(),
18351
- columns: array(CollectionColumnSchema).readonly(),
18352
- indexes: array(CollectionIndexSchema).readonly().optional()
18353
- }), _void(), {
18354
- kind: "mutation",
18355
- auth: "admin"
18356
- });
18357
- /**
18358
18437
  * What one engine says about itself. The orchestrator uses `kind` to pick
18359
18438
  * a registrant for a collection; `engineId` is what a log line names when
18360
18439
  * a call is routed or refused.
@@ -18434,6 +18513,14 @@ id: union([string(), number()]) }), {
18434
18513
  }), object({ id: union([string(), number()]) }), {
18435
18514
  kind: "mutation",
18436
18515
  auth: "admin"
18516
+ }), method(object({
18517
+ namespace: string().optional(),
18518
+ collection: string(),
18519
+ conflict: array(string()).readonly(),
18520
+ records: array(BulkRecordSchema).readonly()
18521
+ }), object({ upserted: number().int() }), {
18522
+ kind: "mutation",
18523
+ auth: "admin"
18437
18524
  }), method(object({
18438
18525
  namespace: string().optional(),
18439
18526
  collection: string(),
@@ -18503,12 +18590,7 @@ id: union([string(), number()]) }), {
18503
18590
  })).readonly(), { auth: "admin" }), method(object({
18504
18591
  namespace: string().optional(),
18505
18592
  collection: string()
18506
- }), boolean(), { auth: "admin" }), method(object({
18507
- namespace: string().optional(),
18508
- collection: string(),
18509
- columns: array(CollectionColumnSchema).readonly(),
18510
- indexes: array(CollectionIndexSchema).readonly().optional()
18511
- }), _void(), {
18593
+ }), boolean(), { auth: "admin" }), method(DeclareCollectionInputSchema, _void(), {
18512
18594
  kind: "mutation",
18513
18595
  auth: "admin"
18514
18596
  });
@@ -36153,6 +36235,18 @@ var CalendarInfoSchema = object({
36153
36235
  source: CalendarSourceKindSchema,
36154
36236
  enabled: boolean()
36155
36237
  });
36238
+ /**
36239
+ * Time contract of {@link CalendarEvent}.
36240
+ *
36241
+ * - Timed event: `startMs` / `endMs` are real instants; `endMs` is exclusive.
36242
+ * - All-day event (`allDay: true`): the event is a run of calendar DATES, not
36243
+ * instants. `startMs` is UTC midnight of the first date and `endMs` is UTC
36244
+ * midnight of the day AFTER the last date (RFC 5545 exclusive DTEND), so a
36245
+ * one-day event spans exactly 24 h. Every provider produces that and no
36246
+ * consumer may read the instants in a local timezone: use
36247
+ * {@link calendarEventLocalSpan}. Reading UTC midnight as local time put an
36248
+ * all-day event on the following day for any viewer ahead of UTC.
36249
+ */
36156
36250
  var CalendarEventSchema = object({
36157
36251
  id: string().min(1),
36158
36252
  calendarId: string().min(1),
@@ -38295,7 +38389,15 @@ var HubAddressBookSchema = object({
38295
38389
  publicEndpoint: HubAddressRoleResolutionSchema
38296
38390
  }),
38297
38391
  /** The `hub=` an app link carries (D709), or null. */
38298
- appLinkHub: string().nullable()
38392
+ appLinkHub: string().nullable(),
38393
+ /**
38394
+ * Every origin a browser can really reach this hub at, in the scheme each
38395
+ * listener serves: `https://<lan>:<httpsPort>`, and `http://<lan>:<httpPort>`
38396
+ * while LAN HTTP is on, plus the public and custom addresses. Distinct from
38397
+ * `rows`, which show `http://` only while LAN HTTP is on. Never loopback,
38398
+ * never the app link. Absent on a hub older than D794's amendment.
38399
+ */
38400
+ listenerOrigins: array(string()).readonly().optional()
38299
38401
  });
38300
38402
  var AllowedAddressesSchema = object({
38301
38403
  /**
@@ -45692,6 +45794,12 @@ Object.freeze({
45692
45794
  addonId: null,
45693
45795
  access: "view"
45694
45796
  },
45797
+ "backup.listAvailableDatabases": {
45798
+ capName: "backup",
45799
+ capScope: "system",
45800
+ addonId: null,
45801
+ access: "view"
45802
+ },
45695
45803
  "backup.listDestinations": {
45696
45804
  capName: "backup",
45697
45805
  capScope: "system",
@@ -46412,6 +46520,12 @@ Object.freeze({
46412
46520
  addonId: null,
46413
46521
  access: "create"
46414
46522
  },
46523
+ "dataStoreProvider.upsertMany": {
46524
+ capName: "data-store-provider",
46525
+ capScope: "system",
46526
+ addonId: null,
46527
+ access: "create"
46528
+ },
46415
46529
  "dayNight.getOptions": {
46416
46530
  capName: "day-night",
46417
46531
  capScope: "device",
@@ -51260,6 +51374,12 @@ Object.freeze({
51260
51374
  addonId: null,
51261
51375
  access: "create"
51262
51376
  },
51377
+ "settingsStore.upsertMany": {
51378
+ capName: "settings-store",
51379
+ capScope: "system",
51380
+ addonId: null,
51381
+ access: "create"
51382
+ },
51263
51383
  "smoke.getStatus": {
51264
51384
  capName: "smoke",
51265
51385
  capScope: "device",