@camstack/addon-post-analysis 1.2.21 → 1.2.23

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.
@@ -7369,14 +7369,7 @@ var RecordingConfigSchema = object({
7369
7369
  * windows only — existing sheets are immutable, and each window's index
7370
7370
  * carries its own tile dims so mixed-preset history renders correctly.
7371
7371
  */
7372
- scrubThumbnails: ScrubThumbnailPresetSchema.optional(),
7373
- /**
7374
- * OPT-IN thumbnail-strip generation for this camera: every keyframe of the
7375
- * low recording saved as a JPEG (the fast-drag scrub depth), a derived
7376
- * cache that eviction reclaims with the footage. Absent/false = no strips
7377
- * are written and scrub reads exact keyframes at every velocity.
7378
- */
7379
- stripsEnabled: boolean().optional()
7372
+ scrubThumbnails: ScrubThumbnailPresetSchema.optional()
7380
7373
  }).strict();
7381
7374
  /**
7382
7375
  * Ops-log — the durable, append-only operations audit shared by the
@@ -7438,7 +7431,7 @@ var OpsLogQueryInputSchema = object({
7438
7431
  /**
7439
7432
  * Entity-relocation job state (storage entity-routing spec, Phase 4).
7440
7433
  *
7441
- * One shape shared by the recorder's `relocateFootage` (segments + strips) and
7434
+ * One shape shared by the recorder's `relocateFootage` (segments) and
7442
7435
  * pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
7443
7436
  * page renders both movers with one component. Jobs are in-RAM (a restart
7444
7437
  * forgets them — re-running is safe by construction: copy-if-absent, delete
@@ -7460,7 +7453,7 @@ var RelocateJobSchema = object({
7460
7453
  toLocationId: string(),
7461
7454
  /** Scoped device, or null = every device. */
7462
7455
  deviceId: number().nullable(),
7463
- /** What the job moves (owner-addon specific: segments/strips or media). */
7456
+ /** What the job moves (owner-addon specific: segments or media). */
7464
7457
  entities: array(string()),
7465
7458
  filesMoved: number().int(),
7466
7459
  bytesMoved: number().int(),
@@ -7474,7 +7467,7 @@ var RelocateFootageInputSchema = object({
7474
7467
  deviceId: number().optional(),
7475
7468
  fromLocationId: string(),
7476
7469
  toLocationId: string(),
7477
- entities: array(_enum(["segments", "strips"])).optional(),
7470
+ entities: array(_enum(["segments"])).optional(),
7478
7471
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7479
7472
  * never allowed to starve live writers. */
7480
7473
  throttleMbps: number().min(1).max(1e3).optional()
@@ -15567,6 +15560,167 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
15567
15560
  kind: "mutation",
15568
15561
  auth: "admin"
15569
15562
  });
15563
+ /**
15564
+ * Query filter for settings-store collections.
15565
+ */
15566
+ var QueryFilterSchema = object({
15567
+ where: record(string(), unknown()).optional(),
15568
+ whereIn: record(string(), array(unknown())).optional(),
15569
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
15570
+ orderBy: object({
15571
+ field: string(),
15572
+ direction: _enum(["asc", "desc"])
15573
+ }).optional(),
15574
+ limit: number().optional(),
15575
+ offset: number().optional()
15576
+ });
15577
+ /** A single stored record: `{ id, data }`. */
15578
+ var SettingsRecordSchema = object({
15579
+ id: string(),
15580
+ data: record(string(), unknown())
15581
+ });
15582
+ /**
15583
+ * Column declaration for a structured (SQL-backed) collection.
15584
+ *
15585
+ * Logical types — the backend translates each to the matching SQLite
15586
+ * storage class and handles per-type marshaling:
15587
+ * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
15588
+ * - `JSON` — TEXT under the hood; serialised on write, parsed on read
15589
+ * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
15590
+ */
15591
+ var CollectionColumnSchema = object({
15592
+ name: string(),
15593
+ type: _enum([
15594
+ "TEXT",
15595
+ "INTEGER",
15596
+ "REAL",
15597
+ "JSON",
15598
+ "BOOLEAN"
15599
+ ]),
15600
+ primaryKey: boolean().optional(),
15601
+ notNull: boolean().optional(),
15602
+ unique: boolean().optional()
15603
+ });
15604
+ var CollectionIndexSchema = object({
15605
+ name: string(),
15606
+ columns: array(string()).readonly(),
15607
+ unique: boolean().optional()
15608
+ });
15609
+ method(object({
15610
+ namespace: string().optional(),
15611
+ collection: string(),
15612
+ key: string()
15613
+ }), unknown()), method(object({
15614
+ namespace: string().optional(),
15615
+ collection: string(),
15616
+ key: string(),
15617
+ value: unknown()
15618
+ }), _void(), { kind: "mutation" }), method(object({
15619
+ namespace: string().optional(),
15620
+ collection: string(),
15621
+ filter: QueryFilterSchema.optional()
15622
+ }), array(SettingsRecordSchema).readonly()), method(object({
15623
+ namespace: string().optional(),
15624
+ collection: string(),
15625
+ record: SettingsRecordSchema
15626
+ }), _void(), { kind: "mutation" }), method(object({
15627
+ namespace: string().optional(),
15628
+ collection: string(),
15629
+ id: string(),
15630
+ data: record(string(), unknown())
15631
+ }), _void(), { kind: "mutation" }), method(object({
15632
+ namespace: string().optional(),
15633
+ collection: string(),
15634
+ key: string()
15635
+ }), _void(), { kind: "mutation" }), method(object({
15636
+ namespace: string().optional(),
15637
+ collection: string(),
15638
+ filter: QueryFilterSchema.optional()
15639
+ }), number()), method(object({
15640
+ namespace: string().optional(),
15641
+ collection: string(),
15642
+ field: string(),
15643
+ bucketSize: number().int().positive(),
15644
+ origin: number().int(),
15645
+ filter: QueryFilterSchema.optional()
15646
+ }), array(object({
15647
+ bucket: number().int(),
15648
+ count: number().int()
15649
+ })).readonly()), method(object({
15650
+ namespace: string().optional(),
15651
+ collection: string()
15652
+ }), boolean()), method(object({
15653
+ namespace: string().optional(),
15654
+ collection: string(),
15655
+ columns: array(CollectionColumnSchema).readonly(),
15656
+ indexes: array(CollectionIndexSchema).readonly().optional()
15657
+ }), _void(), { kind: "mutation" });
15658
+ /**
15659
+ * What one engine says about itself. The orchestrator uses `kind` to pick
15660
+ * a registrant for a collection; `engineId` is what a log line names when
15661
+ * a call is routed or refused.
15662
+ */
15663
+ var EngineInfoSchema = object({
15664
+ engineId: string(),
15665
+ /**
15666
+ * `relational` — rows, columns, indexes, the surface `settings-store`
15667
+ * has always described. `vector` — an embedding store answering
15668
+ * similarity queries. A registrant declares exactly one; an engine that
15669
+ * does both registers twice, because "both" would make the routing
15670
+ * decision ambiguous at exactly the point it must not be.
15671
+ */
15672
+ kind: _enum(["relational", "vector"]),
15673
+ displayName: string()
15674
+ });
15675
+ method(_void(), EngineInfoSchema), method(object({
15676
+ namespace: string().optional(),
15677
+ collection: string(),
15678
+ key: string()
15679
+ }), unknown()), method(object({
15680
+ namespace: string().optional(),
15681
+ collection: string(),
15682
+ key: string(),
15683
+ value: unknown()
15684
+ }), _void(), { kind: "mutation" }), method(object({
15685
+ namespace: string().optional(),
15686
+ collection: string(),
15687
+ filter: QueryFilterSchema.optional()
15688
+ }), array(SettingsRecordSchema).readonly()), method(object({
15689
+ namespace: string().optional(),
15690
+ collection: string(),
15691
+ record: SettingsRecordSchema
15692
+ }), _void(), { kind: "mutation" }), method(object({
15693
+ namespace: string().optional(),
15694
+ collection: string(),
15695
+ id: string(),
15696
+ data: record(string(), unknown())
15697
+ }), _void(), { kind: "mutation" }), method(object({
15698
+ namespace: string().optional(),
15699
+ collection: string(),
15700
+ key: string()
15701
+ }), _void(), { kind: "mutation" }), method(object({
15702
+ namespace: string().optional(),
15703
+ collection: string(),
15704
+ filter: QueryFilterSchema.optional()
15705
+ }), number()), method(object({
15706
+ namespace: string().optional(),
15707
+ collection: string(),
15708
+ field: string(),
15709
+ bucketSize: number().int().positive(),
15710
+ origin: number().int(),
15711
+ filter: QueryFilterSchema.optional()
15712
+ }), array(object({
15713
+ bucket: number().int(),
15714
+ count: number().int()
15715
+ })).readonly()), method(object({
15716
+ namespace: string().optional(),
15717
+ collection: string()
15718
+ }), boolean()), method(object({
15719
+ namespace: string().optional(),
15720
+ collection: string(),
15721
+ columns: array(CollectionColumnSchema).readonly(),
15722
+ indexes: array(CollectionIndexSchema).readonly().optional()
15723
+ }), _void(), { kind: "mutation" });
15570
15724
  DeviceType.Camera;
15571
15725
  /**
15572
15726
  * `device-adoption` — generic discovery + adoption surface,
@@ -19002,6 +19156,28 @@ var ServerUpdateStateSchema = _enum([
19002
19156
  "pending-restart",
19003
19157
  "awaiting-confirmation"
19004
19158
  ]);
19159
+ var ImageContractSchema = object({
19160
+ state: _enum([
19161
+ "in-sync",
19162
+ "behind-patch",
19163
+ "behind-series",
19164
+ "ahead",
19165
+ "unknown"
19166
+ ]),
19167
+ /** The baked seed closure version — the image/app-bundle fingerprint. */
19168
+ seedVersion: string().nullable(),
19169
+ /** Best-known version the deployment contract delivers today. */
19170
+ contractVersion: string().nullable(),
19171
+ /**
19172
+ * Where `contractVersion` came from: a real registry check (`registry`), or
19173
+ * the node's own running version (`running` — a node can never run code
19174
+ * newer than the newest release, so `seed < running` proves image staleness
19175
+ * even before any registry check has run).
19176
+ */
19177
+ contractSource: _enum(["registry", "running"]).nullable(),
19178
+ /** One operator-grade sentence: this node runs image X; the contract says Y. */
19179
+ message: string()
19180
+ });
19005
19181
  var ServerRollbackInfoSchema = object({
19006
19182
  /** The version that failed (or was manually rolled back). */
19007
19183
  fromVersion: string(),
@@ -19038,7 +19214,12 @@ var ServerPackageStatusSchema = object({
19038
19214
  * versions are being IGNORED. Surfaced as a warning in the UI.
19039
19215
  */
19040
19216
  stateFileCorrupt: boolean(),
19041
- lastCheckedAtMs: number().nullable()
19217
+ lastCheckedAtMs: number().nullable(),
19218
+ /**
19219
+ * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
19220
+ * version skew: an older provider's payload simply omits it.
19221
+ */
19222
+ imageContract: ImageContractSchema.optional()
19042
19223
  });
19043
19224
  var ServerUpdateCheckResultSchema = object({
19044
19225
  packageName: string(),
@@ -19073,101 +19254,6 @@ version: string().optional() }), ServerUpdateActionResultSchema, {
19073
19254
  auth: "admin"
19074
19255
  });
19075
19256
  /**
19076
- * Query filter for settings-store collections.
19077
- */
19078
- var QueryFilterSchema = object({
19079
- where: record(string(), unknown()).optional(),
19080
- whereIn: record(string(), array(unknown())).optional(),
19081
- whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
19082
- orderBy: object({
19083
- field: string(),
19084
- direction: _enum(["asc", "desc"])
19085
- }).optional(),
19086
- limit: number().optional(),
19087
- offset: number().optional()
19088
- });
19089
- /** A single stored record: `{ id, data }`. */
19090
- var SettingsRecordSchema = object({
19091
- id: string(),
19092
- data: record(string(), unknown())
19093
- });
19094
- /**
19095
- * Column declaration for a structured (SQL-backed) collection.
19096
- *
19097
- * Logical types — the backend translates each to the matching SQLite
19098
- * storage class and handles per-type marshaling:
19099
- * - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
19100
- * - `JSON` — TEXT under the hood; serialised on write, parsed on read
19101
- * - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
19102
- */
19103
- var CollectionColumnSchema = object({
19104
- name: string(),
19105
- type: _enum([
19106
- "TEXT",
19107
- "INTEGER",
19108
- "REAL",
19109
- "JSON",
19110
- "BOOLEAN"
19111
- ]),
19112
- primaryKey: boolean().optional(),
19113
- notNull: boolean().optional(),
19114
- unique: boolean().optional()
19115
- });
19116
- var CollectionIndexSchema = object({
19117
- name: string(),
19118
- columns: array(string()).readonly(),
19119
- unique: boolean().optional()
19120
- });
19121
- method(object({
19122
- namespace: string().optional(),
19123
- collection: string(),
19124
- key: string()
19125
- }), unknown()), method(object({
19126
- namespace: string().optional(),
19127
- collection: string(),
19128
- key: string(),
19129
- value: unknown()
19130
- }), _void(), { kind: "mutation" }), method(object({
19131
- namespace: string().optional(),
19132
- collection: string(),
19133
- filter: QueryFilterSchema.optional()
19134
- }), array(SettingsRecordSchema).readonly()), method(object({
19135
- namespace: string().optional(),
19136
- collection: string(),
19137
- record: SettingsRecordSchema
19138
- }), _void(), { kind: "mutation" }), method(object({
19139
- namespace: string().optional(),
19140
- collection: string(),
19141
- id: string(),
19142
- data: record(string(), unknown())
19143
- }), _void(), { kind: "mutation" }), method(object({
19144
- namespace: string().optional(),
19145
- collection: string(),
19146
- key: string()
19147
- }), _void(), { kind: "mutation" }), method(object({
19148
- namespace: string().optional(),
19149
- collection: string(),
19150
- filter: QueryFilterSchema.optional()
19151
- }), number()), method(object({
19152
- namespace: string().optional(),
19153
- collection: string(),
19154
- field: string(),
19155
- bucketSize: number().int().positive(),
19156
- origin: number().int(),
19157
- filter: QueryFilterSchema.optional()
19158
- }), array(object({
19159
- bucket: number().int(),
19160
- count: number().int()
19161
- })).readonly()), method(object({
19162
- namespace: string().optional(),
19163
- collection: string()
19164
- }), boolean()), method(object({
19165
- namespace: string().optional(),
19166
- collection: string(),
19167
- columns: array(CollectionColumnSchema).readonly(),
19168
- indexes: array(CollectionIndexSchema).readonly().optional()
19169
- }), _void(), { kind: "mutation" });
19170
- /**
19171
19257
  * `smtp-provider` — pluggable email delivery surface.
19172
19258
  *
19173
19259
  * Collection cap: a deployment may install multiple SMTP relays (e.g.
@@ -23136,6 +23222,72 @@ Object.freeze({
23136
23222
  addonId: null,
23137
23223
  access: "view"
23138
23224
  },
23225
+ "dataStoreProvider.count": {
23226
+ capName: "data-store-provider",
23227
+ capScope: "system",
23228
+ addonId: null,
23229
+ access: "view"
23230
+ },
23231
+ "dataStoreProvider.declareCollection": {
23232
+ capName: "data-store-provider",
23233
+ capScope: "system",
23234
+ addonId: null,
23235
+ access: "create"
23236
+ },
23237
+ "dataStoreProvider.delete": {
23238
+ capName: "data-store-provider",
23239
+ capScope: "system",
23240
+ addonId: null,
23241
+ access: "delete"
23242
+ },
23243
+ "dataStoreProvider.get": {
23244
+ capName: "data-store-provider",
23245
+ capScope: "system",
23246
+ addonId: null,
23247
+ access: "view"
23248
+ },
23249
+ "dataStoreProvider.getEngineInfo": {
23250
+ capName: "data-store-provider",
23251
+ capScope: "system",
23252
+ addonId: null,
23253
+ access: "view"
23254
+ },
23255
+ "dataStoreProvider.histogram": {
23256
+ capName: "data-store-provider",
23257
+ capScope: "system",
23258
+ addonId: null,
23259
+ access: "view"
23260
+ },
23261
+ "dataStoreProvider.insert": {
23262
+ capName: "data-store-provider",
23263
+ capScope: "system",
23264
+ addonId: null,
23265
+ access: "create"
23266
+ },
23267
+ "dataStoreProvider.isEmpty": {
23268
+ capName: "data-store-provider",
23269
+ capScope: "system",
23270
+ addonId: null,
23271
+ access: "view"
23272
+ },
23273
+ "dataStoreProvider.query": {
23274
+ capName: "data-store-provider",
23275
+ capScope: "system",
23276
+ addonId: null,
23277
+ access: "view"
23278
+ },
23279
+ "dataStoreProvider.set": {
23280
+ capName: "data-store-provider",
23281
+ capScope: "system",
23282
+ addonId: null,
23283
+ access: "create"
23284
+ },
23285
+ "dataStoreProvider.update": {
23286
+ capName: "data-store-provider",
23287
+ capScope: "system",
23288
+ addonId: null,
23289
+ access: "create"
23290
+ },
23139
23291
  "dayNight.getOptions": {
23140
23292
  capName: "day-night",
23141
23293
  capScope: "device",