@camstack/types 1.2.235 → 1.2.237

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-CsgPITp-.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,25 +27164,34 @@ 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
27167
+ * substituted for another, and none of them privileged by name. One source,
27168
+ * `analytics`, is registered by the RECORDER — the addon that owns the
27169
+ * footage, D560 — and composes the analytics event log (markers + thumbnails,
27170
+ * read over `ctx.api`) with the recorder's own `getPlaybackManifest`: a clip
27127
27171
  * is a time-WINDOW over existing footage, never a separate file. A camera that
27128
27172
  * exposes NATIVE onboard clips (Reolink SD card, a hub's storage, HKSV) adds
27129
- * its own catalog ALONGSIDE that one.
27173
+ * its own catalog ALONGSIDE that one. (`defaultActive` above is the CAP's
27174
+ * auto-bind to cameras, not a ranking among these sources — there is none.)
27130
27175
  *
27131
27176
  * The mount stays per-device (`resolveCapMount` → `device-scoped`), and a
27132
27177
  * device's SOURCES are its BINDINGS: `deviceManager.getBindings(deviceId)` is
27133
27178
  * what says a provider serves this camera, never the set of addons that
27134
27179
  * happen to have registered the capability somewhere in the cluster. That is
27135
27180
  * what stopped one addon appearing three times on 592 — as the device's
27136
- * native provider, as the hub-local registration and as
27137
- * `pipeline-analytics@little-unraid` (D554 amended 2026-09-20).
27138
- *
27139
- * `listClips` is asked of ONE provider at a time
27140
- * ({@link videoclipsCapability.methods.listClips} `provider`), defaulting to
27141
- * the bound one, which is CamStack on every camera today. It is NOT a union
27142
- * over everything a camera has: *"l'utilizzatore è uno solo"*.
27181
+ * native provider, as the hub-local registration and as an
27182
+ * `<addonId>@<nodeId>` one (D554 amended 2026-09-20).
27183
+ *
27184
+ * `listClips` is asked of ONE provider at a time, and NAMING it is REQUIRED
27185
+ * ({@link videoclipsCapability.methods.listClips} `provider`, D554 amended). It is not
27186
+ * a union over everything a camera has: *"l'utilizzatore è uno solo"*. There
27187
+ * is no default, because a collection cap's binding set is DERIVED and PLURAL
27188
+ * (D554 amended, `getBindings` step 0) — "the bound one" does not exist to
27189
+ * resolve to, and the one thing that could take its place is a second
27190
+ * authority naming a provider per camera, which D554 decision 3 rejected.
27191
+ * The pick is a SURFACE's to make, from the {@link ClipSourceSchema} rows it
27192
+ * already holds, and it says which one it made (D569 § 1–3).
27193
+ * {@link videoclipsCapability.methods.listSources} is the method that fans out
27194
+ * — one row per source, by construction.
27143
27195
  * {@link videoclipsCapability.methods.getClipPlayback} dispatches by the
27144
27196
  * source namespace inside the clip id, which is why ids are self-contained.
27145
27197
  *
@@ -27155,6 +27207,47 @@ var vectorStoreCapability = {
27155
27207
  var MAX_CLIP_EVENT_IDS = 24;
27156
27208
  /** Cap on {@link ClipSchema.labels} — the ribbon row has space for ~3 words. */
27157
27209
  var MAX_CLIP_LABELS = 3;
27210
+ /**
27211
+ * Every reason a still-mint route may refuse, as a TOKEN — never prose.
27212
+ *
27213
+ * The route also sends the prose (`x-camstack-reason`), because a firmware's
27214
+ * own words are the only thing that explains a `camera-refused`. But the token
27215
+ * is what a surface may key a table on, and the code and the prose are
27216
+ * separate headers precisely because they had been the same one: the route
27217
+ * sent `queue-full: 16 thumbnail mints already waiting for host …` and the
27218
+ * surface's table was keyed by `queue-full`, so every refusal on this fleet
27219
+ * rendered as `Refused: <prose>`.
27220
+ */
27221
+ var ClipStillRefusalCodeSchema = zod.z.enum([
27222
+ "queue-full",
27223
+ "camera-backoff",
27224
+ "sleeping",
27225
+ "camera-refused",
27226
+ "no-keyframe",
27227
+ "no-catalog-row",
27228
+ "unsupported",
27229
+ "unknown-device",
27230
+ "uid-missing"
27231
+ ]);
27232
+ /**
27233
+ * Whether a refusal is "not yet" or "never" — decided by the BRANCH that
27234
+ * refused and carried on the wire, never inferred by the client from the code.
27235
+ *
27236
+ * `deferred` means the work is queued or the host is resting: the surface
27237
+ * shows LOADING and comes back, under a bound. `final` means no retry can
27238
+ * change the answer: the surface shows the reason and stops.
27239
+ *
27240
+ * A response that carries no disposition is read as `final`, which is exactly
27241
+ * how every build before this one behaved — an old provider under a new
27242
+ * surface keeps the old, safe behaviour rather than gaining a retry loop.
27243
+ */
27244
+ var ClipStillDispositionSchema = zod.z.enum(["deferred", "final"]);
27245
+ /** The camera's / provider's own words. Kept verbatim, never parsed. */
27246
+ var CLIP_STILL_REASON_HEADER = "x-camstack-reason";
27247
+ /** One {@link ClipStillRefusalCodeSchema} token, alone. */
27248
+ var CLIP_STILL_REASON_CODE_HEADER = "x-camstack-reason-code";
27249
+ /** One {@link ClipStillDispositionSchema} token, alone. */
27250
+ var CLIP_STILL_DISPOSITION_HEADER = "x-camstack-disposition";
27158
27251
  var ClipSchema = zod.z.object({
27159
27252
  /** Opaque, provider-namespaced id. The default provider encodes the time
27160
27253
  * window so `getClipPlayback` is self-contained (no event re-query). */
@@ -27305,7 +27398,25 @@ var ClipSchema = zod.z.object({
27305
27398
  */
27306
27399
  playable: zod.z.boolean().optional(),
27307
27400
  /** Why {@link playable} is false, verbatim (`no-file-for-window`). */
27308
- unplayableReason: zod.z.string().optional()
27401
+ unplayableReason: zod.z.string().optional(),
27402
+ /**
27403
+ * This clip is STILL BEING WRITTEN, so {@link ClipSchema.timeRange}`.endMs`
27404
+ * is not its end.
27405
+ *
27406
+ * Absent — the common case — means the row is closed and its `endMs` is the
27407
+ * end of the recording. Present and `true` means the source told us the file
27408
+ * has no end yet, and the `endMs` we carry is whatever the camera's index
27409
+ * entry happened to hold: on a Reolink E1 Outdoor PoE (592, measured
27410
+ * 2026-09-20) the newest file `…_192927_000000_…_0.mp4` reported an `endTime`
27411
+ * of 19:29:56 and STILL reported it eight minutes later, while the file went
27412
+ * on growing. A surface that drew 29 s there was lying about a clip that
27413
+ * plays for minutes, on the one row the operator looks at first.
27414
+ *
27415
+ * `endMs` is deliberately still a number: it is the best bound anything has
27416
+ * for a mint window or a byte fetch, and every consumer already requires it.
27417
+ * This flag says what it is WORTH, and a duration is not drawn from it.
27418
+ */
27419
+ inProgress: zod.z.boolean().optional()
27309
27420
  });
27310
27421
  var ClipPlaybackSchema = zod.z.object({
27311
27422
  /**
@@ -27388,59 +27499,17 @@ var ClipSourceSchema = zod.z.object({
27388
27499
  * alternative — a `native:reolink:* → provider-reolink` table inside the
27389
27500
  * widget — is a second authority on provider identity living in the one
27390
27501
  * package with no business knowing it, wrong the day a third source appears
27391
- * (D557). One addon may serve SEVERAL sources: `addon-provider-reolink`
27392
- * answers a hub child with both `native:reolink:onboard` and
27393
- * `native:reolink:hub`, which is why the per-device switch is keyed by
27394
- * SOURCE and not by this (D555).
27502
+ * (D557). One addon may serve SEVERAL sources, which is why the per-device
27503
+ * switch is keyed by SOURCE and not by this (D555) — `addon-provider-reolink`
27504
+ * served a hub child two of them until the two views were measured to be one
27505
+ * store read twice (D555) and then read ONE way (D565).
27395
27506
  *
27396
27507
  * Optional for version skew only. The collection dispatcher stamps it from
27397
27508
  * the registry, so a row that travelled through the fan-out carries the
27398
27509
  * authoritative id whatever the provider filled in.
27399
27510
  */
27400
27511
  addonId: zod.z.string().optional(),
27401
- /**
27402
- * Which API this source resolved to FOR THIS CAMERA, when it has a choice.
27403
- *
27404
- * A source may cover one store through more than one surface — the Reolink
27405
- * provider reads a hub child through the parent's event log and a standalone
27406
- * through its own file list, because that is what each camera answers. The
27407
- * CHOICE is the provider's, made from what the camera is, and is never a row
27408
- * the operator has to understand; but it is REPORTED, because a source that
27409
- * silently reads a different API on two cameras and then behaves differently
27410
- * is the thing nobody can debug later. Absent when the source has only one
27411
- * way to read its store.
27412
- */
27413
- via: zod.z.string().optional(),
27414
- availability: ClipSourceAvailabilitySchema,
27415
- /**
27416
- * The operator switched this source OFF for this camera.
27417
- *
27418
- * Deliberately NOT a member of {@link ClipSourceAvailabilitySchema}'s
27419
- * vocabulary. That enum models what the source CAN do — a sleeping camera, an
27420
- * unmounted card, an index that disagrees with its own calendar — and a
27421
- * switched-off source could answer perfectly well; the operator decided it
27422
- * should not. Folding the choice in is how `disabled` and `broken` stop being
27423
- * distinguishable, which is the D62 rule this repo has already paid for twice:
27424
- * an off switch is REPORTED off (`CameraStatus.switchedOff`, the same word),
27425
- * and disabled must never look like broken. It is also what lets every
27426
- * exhaustive consumer of the availability enum keep compiling.
27427
- *
27428
- * A switched-off source contributes NO clips (`listClips` never calls it) and
27429
- * its row carries no `catalogAsOf`: nothing confirms a catalog it is not
27430
- * allowed to serve, and a frozen age that can only grow draws a stalling
27431
- * source rather than an off switch.
27432
- *
27433
- * The row survives BECAUSE it is the control the operator switches the source
27434
- * back on from — D554 decision 4's rule ("a source that cannot answer
27435
- * produces a ROW, not an absence") applied to the one case D556 carved out of
27436
- * it, and D557's own kept property ("a source is never hidden, only its
27437
- * rows"). Absent means on.
27438
- *
27439
- * A provider never sets this — like {@link ClipSourceSchema.addonId} it is
27440
- * stamped by the collection dispatcher, which holds the registry's projection
27441
- * of the persisted authority (D556) and is the only place that knows it.
27442
- */
27443
- switchedOff: zod.z.boolean().optional()
27512
+ availability: ClipSourceAvailabilitySchema
27444
27513
  });
27445
27514
  var videoclipsCapability = {
27446
27515
  name: "videoclips",
@@ -27494,22 +27563,40 @@ var videoclipsCapability = {
27494
27563
  limit: zod.z.number().int().positive().optional(),
27495
27564
  /**
27496
27565
  * WHICH provider to ask — the `addonId` a {@link ClipSourceSchema} row
27497
- * carries, never a source id and never a list.
27566
+ * carries, never a source id and never a list. **Required** (D554 amended).
27567
+ *
27568
+ * A provider the device is not bound to is refused by name rather than
27569
+ * answered by another one (D552's `rejectUnresolvedAddonPin` rule).
27570
+ *
27571
+ * It was optional, documented as "absent means the device's BOUND
27572
+ * provider, which is CamStack on every camera". No code implemented
27573
+ * that. Measured on the live hub 2026-09-20 — device 592, bound to
27574
+ * `recorder` AND `provider-reolink` — a bare call with `limit: 3`
27575
+ * answered SIX rows, three from each source, merged newest-first:
27576
+ * `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
27577
+ * so absence bought the union this method exists not to be, and
27578
+ * `limit` meant `limit × sources`.
27498
27579
  *
27499
- * Absent means the device's BOUND provider, which is CamStack on every
27500
- * camera today because that is what `deviceManager.getBindings`
27501
- * answers with. A provider the device is not bound to is refused by
27502
- * name rather than answered by another one (D552's
27503
- * `rejectUnresolvedAddonPin` rule).
27580
+ * There is nothing to restore the default to. `getBindings` answers a
27581
+ * collection cap with a DERIVED, PLURAL set (D554 amended, step 0);
27582
+ * `setWrapperActive` — the singleton authority that could name one —
27583
+ * throws for a collection cap by design. Naming CamStack here instead
27584
+ * would privilege one addon by id inside a surface whose premise is
27585
+ * that sources are peers, and would be wrong on the first camera with
27586
+ * no recorder binding. So absence is REFUSED, in the schema, where the
27587
+ * generated types make it unomittable rather than merely discouraged.
27588
+ *
27589
+ * The default belongs to the SURFACE, which has the `listSources` rows
27590
+ * and can say which one it picked (D569 § 1–3; the viewer already
27591
+ * always sends this).
27504
27592
  *
27505
27593
  * It replaced `sources?: string[]`, a VIEW filter over source ids that
27506
27594
  * assumed the answer was a fan-out over everything a camera has. The
27507
- * operator settled otherwise on 2026-09-20 — *"il get videoclips
27508
- * prendere un provider opzionale, di default va su camstack"*,
27509
- * *"l'utilizzatore è uno solo"* — so the list is asked of one provider
27510
- * at a time and there is nothing to filter out of it.
27595
+ * operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
27596
+ * solo"* — so the list is asked of one provider at a time and there is
27597
+ * nothing to filter out of it.
27511
27598
  */
27512
- provider: zod.z.string().optional()
27599
+ provider: zod.z.string().min(1)
27513
27600
  }), zod.z.array(ClipSchema).readonly(), {
27514
27601
  kind: "query",
27515
27602
  auth: "protected"
@@ -48432,6 +48519,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
48432
48519
  addonId: null,
48433
48520
  access: "view"
48434
48521
  },
48522
+ "pipelineAnalytics.ownersWithMedia": {
48523
+ capName: "pipeline-analytics",
48524
+ capScope: "device",
48525
+ addonId: null,
48526
+ access: "view"
48527
+ },
48435
48528
  "pipelineAnalytics.pauseForStorageMigration": {
48436
48529
  capName: "pipeline-analytics",
48437
48530
  capScope: "device",
@@ -52605,6 +52698,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
52605
52698
  form: "single",
52606
52699
  optional: false
52607
52700
  }],
52701
+ "pipelineAnalytics.ownersWithMedia": [{
52702
+ name: "deviceId",
52703
+ form: "single",
52704
+ optional: false
52705
+ }],
52608
52706
  "pipelineAnalytics.proposeRetrainAnnotations": [{
52609
52707
  name: "deviceId",
52610
52708
  form: "single",
@@ -58927,6 +59025,9 @@ exports.CAP_NAMES_WITH_STATUS = CAP_NAMES_WITH_STATUS;
58927
59025
  exports.CAP_NODE_PIN_CONTEXT_KEY = require_sleep.CAP_NODE_PIN_CONTEXT_KEY;
58928
59026
  exports.CAP_PROVIDER_KIND_MAP = CAP_PROVIDER_KIND_MAP;
58929
59027
  exports.CLASS_MAP_MACRO_TARGETS = CLASS_MAP_MACRO_TARGETS;
59028
+ exports.CLIP_STILL_DISPOSITION_HEADER = CLIP_STILL_DISPOSITION_HEADER;
59029
+ exports.CLIP_STILL_REASON_CODE_HEADER = CLIP_STILL_REASON_CODE_HEADER;
59030
+ exports.CLIP_STILL_REASON_HEADER = CLIP_STILL_REASON_HEADER;
58930
59031
  exports.CLUSTER_MODEL_SCOPED_STEPS = CLUSTER_MODEL_SCOPED_STEPS;
58931
59032
  exports.CLUSTER_MODEL_SECTION_ID = CLUSTER_MODEL_SECTION_ID;
58932
59033
  exports.CLUSTER_STEP_SETTING_FIELDS = CLUSTER_STEP_SETTING_FIELDS;
@@ -58981,6 +59082,8 @@ exports.ClipPlaybackSchema = ClipPlaybackSchema;
58981
59082
  exports.ClipSchema = ClipSchema;
58982
59083
  exports.ClipSourceAvailabilitySchema = ClipSourceAvailabilitySchema;
58983
59084
  exports.ClipSourceSchema = ClipSourceSchema;
59085
+ exports.ClipStillDispositionSchema = ClipStillDispositionSchema;
59086
+ exports.ClipStillRefusalCodeSchema = ClipStillRefusalCodeSchema;
58984
59087
  exports.ClusterAddonNodeDeploymentSchema = ClusterAddonNodeDeploymentSchema;
58985
59088
  exports.ClusterAddonStatusEntrySchema = ClusterAddonStatusEntrySchema;
58986
59089
  exports.CollectionColumnSchema = CollectionColumnSchema;
@@ -59304,6 +59407,7 @@ exports.MAX_REASONS_PER_KEY = MAX_REASONS_PER_KEY;
59304
59407
  exports.MAX_SENSOR_TRIGGER_DEVICES = MAX_SENSOR_TRIGGER_DEVICES;
59305
59408
  exports.MAX_TRACK_DEBUG_NOTE_LEN = MAX_TRACK_DEBUG_NOTE_LEN;
59306
59409
  exports.MEDIA_OWNER_TYPES = MEDIA_OWNER_TYPES;
59410
+ exports.MEDIA_PRESENCE_OWNER_KINDS = MEDIA_PRESENCE_OWNER_KINDS;
59307
59411
  exports.METHOD_ACCESS_MAP = METHOD_ACCESS_MAP;
59308
59412
  exports.METHOD_DEVICE_SELECTORS = METHOD_DEVICE_SELECTORS;
59309
59413
  exports.MODEL_FORMATS = MODEL_FORMATS;
@@ -59330,6 +59434,7 @@ exports.MediaFileSchema = MediaFileSchema;
59330
59434
  exports.MediaPlayerRepeatSchema = MediaPlayerRepeatSchema;
59331
59435
  exports.MediaPlayerStateSchema = MediaPlayerStateSchema;
59332
59436
  exports.MediaPlayerStatusSchema = MediaPlayerStatusSchema;
59437
+ exports.MediaPresenceOwnerKindSchema = MediaPresenceOwnerKindSchema;
59333
59438
  exports.MediaRelocateModeSchema = MediaRelocateModeSchema;
59334
59439
  exports.MeshPeerSchema = MeshPeerSchema;
59335
59440
  exports.MeshStatusSchema = MeshStatusSchema;