@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/addon.js +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/device-manager.cap.d.ts +17 -16
- package/dist/capabilities/index.d.ts +2 -2
- package/dist/capabilities/pipeline-analytics.cap.d.ts +34 -0
- package/dist/capabilities/videoclips.cap.d.ts +87 -23
- package/dist/generated/addon-api.d.ts +7 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +201 -93
- package/dist/index.mjs +195 -94
- package/dist/interfaces/config-ui.d.ts +1 -1
- package/dist/interfaces/kernel-abstractions.d.ts +0 -14
- package/dist/media/media-owner-key.d.ts +20 -0
- package/dist/{sleep-CopaBJss.mjs → sleep-CaB_hL5g.mjs} +1 -6
- package/dist/{sleep-DImve4HM.js → sleep-Cqxm5OIN.js} +1 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
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
|
|
12943
|
-
* (
|
|
12944
|
-
*
|
|
12945
|
-
* Persists the binding via ctx.settings;
|
|
12946
|
-
* clears the wrapper (falling back to native if one is
|
|
12947
|
-
*
|
|
12948
|
-
*
|
|
12949
|
-
*
|
|
12950
|
-
*
|
|
12951
|
-
* `sourceId`
|
|
12952
|
-
*
|
|
12953
|
-
*
|
|
12954
|
-
*
|
|
12955
|
-
*
|
|
12956
|
-
*
|
|
12957
|
-
*
|
|
12958
|
-
*
|
|
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
|
-
*
|
|
27126
|
-
* log (markers + thumbnails
|
|
27127
|
-
*
|
|
27128
|
-
*
|
|
27129
|
-
* its own catalog
|
|
27130
|
-
*
|
|
27131
|
-
*
|
|
27132
|
-
*
|
|
27133
|
-
*
|
|
27134
|
-
*
|
|
27135
|
-
*
|
|
27136
|
-
*
|
|
27137
|
-
*
|
|
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
|
|
27387
|
-
*
|
|
27388
|
-
*
|
|
27389
|
-
*
|
|
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
|
-
*
|
|
27459
|
-
*
|
|
27460
|
-
*
|
|
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: "
|
|
27545
|
+
tab: "recording",
|
|
27466
27546
|
topTab: true,
|
|
27467
27547
|
label: "Clips",
|
|
27468
|
-
order:
|
|
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
|
-
*
|
|
27478
|
-
*
|
|
27479
|
-
*
|
|
27480
|
-
*
|
|
27481
|
-
*
|
|
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
|
-
|
|
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;
|