@camstack/types 1.2.234 → 1.2.236

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-DImve4HM.js");
2
+ const require_sleep = require("./sleep-Cqxm5OIN.js");
3
3
  const require_event_category = require("./event-category-BVfsrBYA.js");
4
4
  const require_canonical_hash = require("./canonical-hash-CSE4ioRi.js");
5
5
  const require_enums = require("./enums.js");
@@ -146,6 +146,20 @@ var EVENT_OWNER_TYPES = [
146
146
  * nothing failing until a caller asked.
147
147
  */
148
148
  var EventOwnerTypeSchema = zod.z.enum(EVENT_OWNER_TYPES);
149
+ /**
150
+ * The owner kinds a media-PRESENCE probe may ask about: the three event tables
151
+ * plus `track`.
152
+ *
153
+ * `videoclips` resolves a clip's still the way `resolveDefaultEventMedia` does
154
+ * — the event's OWN media when it has any, else its owning TRACK's — so the
155
+ * probe needs exactly this union and no more of {@link MediaOwnerType}. Built
156
+ * FROM {@link EVENT_OWNER_TYPES} so a fourth event table reaches the probe the
157
+ * day it is declared, rather than being accepted by one side and refused by the
158
+ * other.
159
+ */
160
+ var MEDIA_PRESENCE_OWNER_KINDS = [...EVENT_OWNER_TYPES, "track"];
161
+ /** The same list as a Zod enum, for the cap input that carries it. */
162
+ var MediaPresenceOwnerKindSchema = zod.z.enum(MEDIA_PRESENCE_OWNER_KINDS);
149
163
  var EVENT_OWNER_TYPE_SET = new Set(EVENT_OWNER_TYPES);
150
164
  /** True when this key's owner is one of the three event tables. */
151
165
  function isEventOwnerType(ownerType) {
@@ -12939,30 +12953,30 @@ var deviceManagerCapability = {
12939
12953
  */
12940
12954
  getAllBindings: require_sleep.method(zod.z.object({}), zod.z.array(DeviceBindingsForDeviceSchema)),
12941
12955
  /**
12942
- * Activate (or deactivate) a wrapper addon — or ONE of its sources — for a
12943
- * (device, cap) pair.
12944
- *
12945
- * Persists the binding via ctx.settings; `active: false` on a SINGLETON cap
12946
- * clears the wrapper (falling back to native if one is registered). On a
12947
- * COLLECTION cap it adds to the per-device DENY set instead, and the
12948
- * wrapper binding is left exactly as it was — a cap with several sources
12949
- * has no "which one" for `getBindings` to answer (D556).
12950
- *
12951
- * `sourceId` is what makes the switch match its label. One addon can serve
12952
- * several of a device's sources (`addon-provider-reolink` answers a hub
12953
- * child with `native:reolink:onboard` AND `native:reolink:hub`), so a
12954
- * toggle keyed by addon would turn off both while saying it turned off one
12955
- * — the D62 defect with the polarity reversed (D557). Naming the source
12956
- * denies exactly that source. OMITTING it keeps the cap-wide meaning
12957
- * D556 shipped: every source this addon serves for this device, which is
12958
- * also how a deny entry persisted before the re-key is still read.
12956
+ * Activate (or deactivate) a wrapper addon for a (device, cap) pair — the
12957
+ * per-camera function switch's ONE authority (D62).
12958
+ *
12959
+ * SINGLETON capabilities only. Persists the binding via ctx.settings;
12960
+ * `active: false` clears the wrapper (falling back to native if one is
12961
+ * registered) by persisting the explicit `{ wrapperAddonId: null }` marker,
12962
+ * which is what stops `getBindings` re-binding a `defaultActive` wrapper.
12963
+ *
12964
+ * **A COLLECTION capability is REFUSED by name.** It briefly took a
12965
+ * `sourceId` and wrote a per-device DENY set, so one of an addon's several
12966
+ * sources could be switched off without switching off the rest (D556, then
12967
+ * D555's re-key by source). The operator removed the whole idea the same
12968
+ * day: *"tutti i providers funzionano sempre, non serve
12969
+ * disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
12970
+ * collection cap's providers are a DERIVED set — every addon that provides
12971
+ * the cap for this device type, computed on every read and persisted
12972
+ * nowhere — so there is nothing here to activate, and a verb that accepted
12973
+ * the call could only write a field the enumeration does not read. That is
12974
+ * the D62 shape, and this repo has shipped it four times.
12959
12975
  */
12960
12976
  setWrapperActive: require_sleep.method(zod.z.object({
12961
12977
  deviceId: zod.z.number(),
12962
12978
  capName: zod.z.string(),
12963
12979
  wrapperAddonId: zod.z.string(),
12964
- /** The `ClipSource.source` id to toggle. Absent = all of the addon's. */
12965
- sourceId: zod.z.string().optional(),
12966
12980
  active: zod.z.boolean()
12967
12981
  }), zod.z.void(), {
12968
12982
  kind: "mutation",
@@ -22683,6 +22697,35 @@ var pipelineAnalyticsCapability = {
22683
22697
  deviceId: zod.z.number()
22684
22698
  }), zod.z.array(MediaFileInfoSchema).readonly()),
22685
22699
  /**
22700
+ * Which of `ownerIds` hold at least ONE media row — an INDEX read, never a
22701
+ * blob read, and the LICENCE `videoclips` needs to publish a `thumbnail`.
22702
+ *
22703
+ * The event-media URL is stamped from a template for every event in the
22704
+ * system, so "the plane is up" was being served as "there are bytes": 64 of
22705
+ * one camera's 179 clips pointed at a 404 (device 3836, 2026-08-17). This
22706
+ * is the question that turns the stamp into a claim.
22707
+ *
22708
+ * It is on the WIRE because the clip source is registered by the addon that
22709
+ * owns the FOOTAGE, not by this one (D560) — the probe used to be an
22710
+ * in-process `MediaStore` read. One call per OWNER KIND, never one per
22711
+ * owner: that N+1 is what `MediaStore.ownersWithMedia` was written to
22712
+ * prevent, and crossing a process boundary makes it worse, not better.
22713
+ * `ownerIds` is bounded at the same 5 000 the annotation fetch is bounded
22714
+ * at, so one pathological camera-day cannot mint an unbounded request.
22715
+ *
22716
+ * THROWS rather than answering partially. A probe that quietly
22717
+ * under-reports reads as "these owners have nothing" and the caller drops
22718
+ * thumbnails that exist — the opposite failure to the one above, and
22719
+ * equally invisible.
22720
+ *
22721
+ * `deviceId` is the authorization subject, exactly as on `getEventMedia`.
22722
+ */
22723
+ ownersWithMedia: require_sleep.method(zod.z.object({
22724
+ deviceId: zod.z.number(),
22725
+ ownerKind: MediaPresenceOwnerKindSchema,
22726
+ ownerIds: zod.z.array(zod.z.string()).max(5e3)
22727
+ }), zod.z.array(zod.z.string()).readonly()),
22728
+ /**
22686
22729
  * Search object events by text query using CLIP cosine similarity.
22687
22730
  * Encodes `text` via the `embedding-encoder` cap, queries the
22688
22731
  * `ObjectEmbeddingStore` with optional prefilters, ranks all matching
@@ -27121,20 +27164,26 @@ var vectorStoreCapability = {
27121
27164
  *
27122
27165
  * A device-scoped wrapper COLLECTION (D549 decision 2, D554): every provider a
27123
27166
  * camera has is a SOURCE, and they are listed beside each other — never one
27124
- * substituted for another. The DEFAULT provider (registered by
27125
- * `addon-post-analysis`, `defaultActive: true`) composes the analytics event
27126
- * log (markers + thumbnails) with the recorder's `getPlaybackManifest` — a clip
27127
- * is a time-WINDOW over existing footage, never a separate file. A camera that
27128
- * exposes NATIVE onboard clips (Reolink SD card, a hub's storage, HKSV) adds
27129
- * its own catalog ALONGSIDE that one.
27130
- *
27131
- * The mount stays per-device (`resolveCapMount` → `device-scoped`): the fan-out
27132
- * is over the DEVICE's sources, resolved from the registry's per-device
27133
- * collection, never over every provider in the cluster. `listClips` is the
27134
- * union of those sources, in newest-first order, with NO dedup and no
27135
- * best-source pick — a clip held in two storages appears twice, once per
27136
- * source, and every row's {@link ClipSchema.source} says which. That is the
27137
- * operator's decision, stated so it is not "fixed" later.
27167
+ * substituted for another. The DEFAULT provider (`analytics`, registered by
27168
+ * the RECORDER — the addon that owns the footage, D560 — `defaultActive: true`)
27169
+ * composes the analytics event log (markers + thumbnails, read over `ctx.api`)
27170
+ * with the recorder's own `getPlaybackManifest` — a clip is a time-WINDOW over
27171
+ * existing footage, never a separate file. A camera that exposes NATIVE onboard
27172
+ * clips (Reolink SD card, a hub's storage, HKSV) adds its own catalog
27173
+ * ALONGSIDE that one.
27174
+ *
27175
+ * The mount stays per-device (`resolveCapMount` → `device-scoped`), and a
27176
+ * device's SOURCES are its BINDINGS: `deviceManager.getBindings(deviceId)` is
27177
+ * what says a provider serves this camera, never the set of addons that
27178
+ * happen to have registered the capability somewhere in the cluster. That is
27179
+ * what stopped one addon appearing three times on 592 — as the device's
27180
+ * native provider, as the hub-local registration and as an
27181
+ * `<addonId>@<nodeId>` one (D554 amended 2026-09-20).
27182
+ *
27183
+ * `listClips` is asked of ONE provider at a time
27184
+ * ({@link videoclipsCapability.methods.listClips} `provider`), defaulting to
27185
+ * the bound one, which is CamStack on every camera today. It is NOT a union
27186
+ * over everything a camera has: *"l'utilizzatore è uno solo"*.
27138
27187
  * {@link videoclipsCapability.methods.getClipPlayback} dispatches by the
27139
27188
  * source namespace inside the clip id, which is why ids are self-contained.
27140
27189
  *
@@ -27150,6 +27199,47 @@ var vectorStoreCapability = {
27150
27199
  var MAX_CLIP_EVENT_IDS = 24;
27151
27200
  /** Cap on {@link ClipSchema.labels} — the ribbon row has space for ~3 words. */
27152
27201
  var MAX_CLIP_LABELS = 3;
27202
+ /**
27203
+ * Every reason a still-mint route may refuse, as a TOKEN — never prose.
27204
+ *
27205
+ * The route also sends the prose (`x-camstack-reason`), because a firmware's
27206
+ * own words are the only thing that explains a `camera-refused`. But the token
27207
+ * is what a surface may key a table on, and the code and the prose are
27208
+ * separate headers precisely because they had been the same one: the route
27209
+ * sent `queue-full: 16 thumbnail mints already waiting for host …` and the
27210
+ * surface's table was keyed by `queue-full`, so every refusal on this fleet
27211
+ * rendered as `Refused: <prose>`.
27212
+ */
27213
+ var ClipStillRefusalCodeSchema = zod.z.enum([
27214
+ "queue-full",
27215
+ "camera-backoff",
27216
+ "sleeping",
27217
+ "camera-refused",
27218
+ "no-keyframe",
27219
+ "no-catalog-row",
27220
+ "unsupported",
27221
+ "unknown-device",
27222
+ "uid-missing"
27223
+ ]);
27224
+ /**
27225
+ * Whether a refusal is "not yet" or "never" — decided by the BRANCH that
27226
+ * refused and carried on the wire, never inferred by the client from the code.
27227
+ *
27228
+ * `deferred` means the work is queued or the host is resting: the surface
27229
+ * shows LOADING and comes back, under a bound. `final` means no retry can
27230
+ * change the answer: the surface shows the reason and stops.
27231
+ *
27232
+ * A response that carries no disposition is read as `final`, which is exactly
27233
+ * how every build before this one behaved — an old provider under a new
27234
+ * surface keeps the old, safe behaviour rather than gaining a retry loop.
27235
+ */
27236
+ var ClipStillDispositionSchema = zod.z.enum(["deferred", "final"]);
27237
+ /** The camera's / provider's own words. Kept verbatim, never parsed. */
27238
+ var CLIP_STILL_REASON_HEADER = "x-camstack-reason";
27239
+ /** One {@link ClipStillRefusalCodeSchema} token, alone. */
27240
+ var CLIP_STILL_REASON_CODE_HEADER = "x-camstack-reason-code";
27241
+ /** One {@link ClipStillDispositionSchema} token, alone. */
27242
+ var CLIP_STILL_DISPOSITION_HEADER = "x-camstack-disposition";
27153
27243
  var ClipSchema = zod.z.object({
27154
27244
  /** Opaque, provider-namespaced id. The default provider encodes the time
27155
27245
  * window so `getClipPlayback` is self-contained (no event re-query). */
@@ -27300,7 +27390,25 @@ var ClipSchema = zod.z.object({
27300
27390
  */
27301
27391
  playable: zod.z.boolean().optional(),
27302
27392
  /** Why {@link playable} is false, verbatim (`no-file-for-window`). */
27303
- unplayableReason: zod.z.string().optional()
27393
+ unplayableReason: zod.z.string().optional(),
27394
+ /**
27395
+ * This clip is STILL BEING WRITTEN, so {@link ClipSchema.timeRange}`.endMs`
27396
+ * is not its end.
27397
+ *
27398
+ * Absent — the common case — means the row is closed and its `endMs` is the
27399
+ * end of the recording. Present and `true` means the source told us the file
27400
+ * has no end yet, and the `endMs` we carry is whatever the camera's index
27401
+ * entry happened to hold: on a Reolink E1 Outdoor PoE (592, measured
27402
+ * 2026-09-20) the newest file `…_192927_000000_…_0.mp4` reported an `endTime`
27403
+ * of 19:29:56 and STILL reported it eight minutes later, while the file went
27404
+ * on growing. A surface that drew 29 s there was lying about a clip that
27405
+ * plays for minutes, on the one row the operator looks at first.
27406
+ *
27407
+ * `endMs` is deliberately still a number: it is the best bound anything has
27408
+ * for a mint window or a byte fetch, and every consumer already requires it.
27409
+ * This flag says what it is WORTH, and a duration is not drawn from it.
27410
+ */
27411
+ inProgress: zod.z.boolean().optional()
27304
27412
  });
27305
27413
  var ClipPlaybackSchema = zod.z.object({
27306
27414
  /**
@@ -27383,59 +27491,17 @@ var ClipSourceSchema = zod.z.object({
27383
27491
  * alternative — a `native:reolink:* → provider-reolink` table inside the
27384
27492
  * widget — is a second authority on provider identity living in the one
27385
27493
  * package with no business knowing it, wrong the day a third source appears
27386
- * (D557). One addon may serve SEVERAL sources: `addon-provider-reolink`
27387
- * answers a hub child with both `native:reolink:onboard` and
27388
- * `native:reolink:hub`, which is why the per-device switch is keyed by
27389
- * SOURCE and not by this (D555).
27494
+ * (D557). One addon may serve SEVERAL sources, which is why the per-device
27495
+ * switch is keyed by SOURCE and not by this (D555) — `addon-provider-reolink`
27496
+ * served a hub child two of them until the two views were measured to be one
27497
+ * store read twice (D555) and then read ONE way (D565).
27390
27498
  *
27391
27499
  * Optional for version skew only. The collection dispatcher stamps it from
27392
27500
  * the registry, so a row that travelled through the fan-out carries the
27393
27501
  * authoritative id whatever the provider filled in.
27394
27502
  */
27395
27503
  addonId: zod.z.string().optional(),
27396
- /**
27397
- * Which API this source resolved to FOR THIS CAMERA, when it has a choice.
27398
- *
27399
- * A source may cover one store through more than one surface — the Reolink
27400
- * provider reads a hub child through the parent's event log and a standalone
27401
- * through its own file list, because that is what each camera answers. The
27402
- * CHOICE is the provider's, made from what the camera is, and is never a row
27403
- * the operator has to understand; but it is REPORTED, because a source that
27404
- * silently reads a different API on two cameras and then behaves differently
27405
- * is the thing nobody can debug later. Absent when the source has only one
27406
- * way to read its store.
27407
- */
27408
- via: zod.z.string().optional(),
27409
- availability: ClipSourceAvailabilitySchema,
27410
- /**
27411
- * The operator switched this source OFF for this camera.
27412
- *
27413
- * Deliberately NOT a member of {@link ClipSourceAvailabilitySchema}'s
27414
- * vocabulary. That enum models what the source CAN do — a sleeping camera, an
27415
- * unmounted card, an index that disagrees with its own calendar — and a
27416
- * switched-off source could answer perfectly well; the operator decided it
27417
- * should not. Folding the choice in is how `disabled` and `broken` stop being
27418
- * distinguishable, which is the D62 rule this repo has already paid for twice:
27419
- * an off switch is REPORTED off (`CameraStatus.switchedOff`, the same word),
27420
- * and disabled must never look like broken. It is also what lets every
27421
- * exhaustive consumer of the availability enum keep compiling.
27422
- *
27423
- * A switched-off source contributes NO clips (`listClips` never calls it) and
27424
- * its row carries no `catalogAsOf`: nothing confirms a catalog it is not
27425
- * allowed to serve, and a frozen age that can only grow draws a stalling
27426
- * source rather than an off switch.
27427
- *
27428
- * The row survives BECAUSE it is the control the operator switches the source
27429
- * back on from — D554 decision 4's rule ("a source that cannot answer
27430
- * produces a ROW, not an absence") applied to the one case D556 carved out of
27431
- * it, and D557's own kept property ("a source is never hidden, only its
27432
- * rows"). Absent means on.
27433
- *
27434
- * A provider never sets this — like {@link ClipSourceSchema.addonId} it is
27435
- * stamped by the collection dispatcher, which holds the registry's projection
27436
- * of the persisted authority (D556) and is the only place that knows it.
27437
- */
27438
- switchedOff: zod.z.boolean().optional()
27504
+ availability: ClipSourceAvailabilitySchema
27439
27505
  });
27440
27506
  var videoclipsCapability = {
27441
27507
  name: "videoclips",
@@ -27455,17 +27521,31 @@ var videoclipsCapability = {
27455
27521
  * `device-config-widget-wrapped-binding.spec.ts` pins that a `kind:'wrapped'`
27456
27522
  * binding entry derives the same section a native one does.
27457
27523
  *
27458
- * `topTab` because the browser owns the whole pane (a day's clips, a source
27459
- * list and a player), exactly as `ptz` does; the widget itself is
27460
- * `host/clips-browser` in ui-library's `HOST_WIDGETS`.
27524
+ * **It is a SECTION of the Recording tab, at the end of it — not a tab of
27525
+ * its own.** It shipped as a `clips` top-tab and the operator rejected the
27526
+ * placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
27527
+ * necessario, una nuova sezione alla fine per le clips"*. The Recording tab
27528
+ * already holds the recorder's panel, the schedule bands and the unified
27529
+ * retention policy; footage the camera itself holds is the same question,
27530
+ * asked of a different store. `order: 100` puts it after all of them with
27531
+ * room left in front. The `clips` entry in `WELL_KNOWN_TABS` went with it —
27532
+ * a well-known id nobody declares is an invitation to mint the tab again.
27533
+ *
27534
+ * `topTab` stays: the browser owns a pane (a day's tiles, a source list and
27535
+ * a player) and the Config tab's inner bar has no room for one. The widget
27536
+ * itself is `host/clips-browser` in ui-library's `HOST_WIDGETS`, and because
27537
+ * the admin Recordings page renders every `location:'top-tab'` +
27538
+ * `tab:'recording'` section behind its camera picker
27539
+ * (`CameraRecordingSettingsSection`), this declaration lands the section on
27540
+ * BOTH surfaces with no second wiring.
27461
27541
  */
27462
27542
  deviceConfig: { ui: {
27463
27543
  kind: "widget",
27464
27544
  widgetId: "host/clips-browser",
27465
- tab: "clips",
27545
+ tab: "recording",
27466
27546
  topTab: true,
27467
27547
  label: "Clips",
27468
- order: 0
27548
+ order: 100
27469
27549
  } },
27470
27550
  methods: {
27471
27551
  listClips: require_sleep.method(zod.z.object({
@@ -27474,13 +27554,23 @@ var videoclipsCapability = {
27474
27554
  until: zod.z.number(),
27475
27555
  limit: zod.z.number().int().positive().optional(),
27476
27556
  /**
27477
- * View filter over {@link ClipSourceSchema.source} values — the
27478
- * picker's selection, forwarded so a provider need not list what
27479
- * nobody is looking at. ABSENT means every source this camera has,
27480
- * which is the honest default for a surface whose whole point is that
27481
- * nothing is hidden (D554 3). A provider with one source ignores it.
27557
+ * WHICH provider to ask — the `addonId` a {@link ClipSourceSchema} row
27558
+ * carries, never a source id and never a list.
27559
+ *
27560
+ * Absent means the device's BOUND provider, which is CamStack on every
27561
+ * camera today because that is what `deviceManager.getBindings`
27562
+ * answers with. A provider the device is not bound to is refused by
27563
+ * name rather than answered by another one (D552's
27564
+ * `rejectUnresolvedAddonPin` rule).
27565
+ *
27566
+ * It replaced `sources?: string[]`, a VIEW filter over source ids that
27567
+ * assumed the answer was a fan-out over everything a camera has. The
27568
+ * operator settled otherwise on 2026-09-20 — *"il get videoclips
27569
+ * prendere un provider opzionale, di default va su camstack"*,
27570
+ * *"l'utilizzatore è uno solo"* — so the list is asked of one provider
27571
+ * at a time and there is nothing to filter out of it.
27482
27572
  */
27483
- sources: zod.z.array(zod.z.string()).optional()
27573
+ provider: zod.z.string().optional()
27484
27574
  }), zod.z.array(ClipSchema).readonly(), {
27485
27575
  kind: "query",
27486
27576
  auth: "protected"
@@ -48403,6 +48493,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
48403
48493
  addonId: null,
48404
48494
  access: "view"
48405
48495
  },
48496
+ "pipelineAnalytics.ownersWithMedia": {
48497
+ capName: "pipeline-analytics",
48498
+ capScope: "device",
48499
+ addonId: null,
48500
+ access: "view"
48501
+ },
48406
48502
  "pipelineAnalytics.pauseForStorageMigration": {
48407
48503
  capName: "pipeline-analytics",
48408
48504
  capScope: "device",
@@ -52576,6 +52672,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
52576
52672
  form: "single",
52577
52673
  optional: false
52578
52674
  }],
52675
+ "pipelineAnalytics.ownersWithMedia": [{
52676
+ name: "deviceId",
52677
+ form: "single",
52678
+ optional: false
52679
+ }],
52579
52680
  "pipelineAnalytics.proposeRetrainAnnotations": [{
52580
52681
  name: "deviceId",
52581
52682
  form: "single",
@@ -58898,6 +58999,9 @@ exports.CAP_NAMES_WITH_STATUS = CAP_NAMES_WITH_STATUS;
58898
58999
  exports.CAP_NODE_PIN_CONTEXT_KEY = require_sleep.CAP_NODE_PIN_CONTEXT_KEY;
58899
59000
  exports.CAP_PROVIDER_KIND_MAP = CAP_PROVIDER_KIND_MAP;
58900
59001
  exports.CLASS_MAP_MACRO_TARGETS = CLASS_MAP_MACRO_TARGETS;
59002
+ exports.CLIP_STILL_DISPOSITION_HEADER = CLIP_STILL_DISPOSITION_HEADER;
59003
+ exports.CLIP_STILL_REASON_CODE_HEADER = CLIP_STILL_REASON_CODE_HEADER;
59004
+ exports.CLIP_STILL_REASON_HEADER = CLIP_STILL_REASON_HEADER;
58901
59005
  exports.CLUSTER_MODEL_SCOPED_STEPS = CLUSTER_MODEL_SCOPED_STEPS;
58902
59006
  exports.CLUSTER_MODEL_SECTION_ID = CLUSTER_MODEL_SECTION_ID;
58903
59007
  exports.CLUSTER_STEP_SETTING_FIELDS = CLUSTER_STEP_SETTING_FIELDS;
@@ -58952,6 +59056,8 @@ exports.ClipPlaybackSchema = ClipPlaybackSchema;
58952
59056
  exports.ClipSchema = ClipSchema;
58953
59057
  exports.ClipSourceAvailabilitySchema = ClipSourceAvailabilitySchema;
58954
59058
  exports.ClipSourceSchema = ClipSourceSchema;
59059
+ exports.ClipStillDispositionSchema = ClipStillDispositionSchema;
59060
+ exports.ClipStillRefusalCodeSchema = ClipStillRefusalCodeSchema;
58955
59061
  exports.ClusterAddonNodeDeploymentSchema = ClusterAddonNodeDeploymentSchema;
58956
59062
  exports.ClusterAddonStatusEntrySchema = ClusterAddonStatusEntrySchema;
58957
59063
  exports.CollectionColumnSchema = CollectionColumnSchema;
@@ -59275,6 +59381,7 @@ exports.MAX_REASONS_PER_KEY = MAX_REASONS_PER_KEY;
59275
59381
  exports.MAX_SENSOR_TRIGGER_DEVICES = MAX_SENSOR_TRIGGER_DEVICES;
59276
59382
  exports.MAX_TRACK_DEBUG_NOTE_LEN = MAX_TRACK_DEBUG_NOTE_LEN;
59277
59383
  exports.MEDIA_OWNER_TYPES = MEDIA_OWNER_TYPES;
59384
+ exports.MEDIA_PRESENCE_OWNER_KINDS = MEDIA_PRESENCE_OWNER_KINDS;
59278
59385
  exports.METHOD_ACCESS_MAP = METHOD_ACCESS_MAP;
59279
59386
  exports.METHOD_DEVICE_SELECTORS = METHOD_DEVICE_SELECTORS;
59280
59387
  exports.MODEL_FORMATS = MODEL_FORMATS;
@@ -59301,6 +59408,7 @@ exports.MediaFileSchema = MediaFileSchema;
59301
59408
  exports.MediaPlayerRepeatSchema = MediaPlayerRepeatSchema;
59302
59409
  exports.MediaPlayerStateSchema = MediaPlayerStateSchema;
59303
59410
  exports.MediaPlayerStatusSchema = MediaPlayerStatusSchema;
59411
+ exports.MediaPresenceOwnerKindSchema = MediaPresenceOwnerKindSchema;
59304
59412
  exports.MediaRelocateModeSchema = MediaRelocateModeSchema;
59305
59413
  exports.MeshPeerSchema = MeshPeerSchema;
59306
59414
  exports.MeshStatusSchema = MeshStatusSchema;