@camstack/system 1.1.50 → 1.1.52
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-runner.js +2 -2
- package/dist/addon-runner.mjs +2 -2
- package/dist/addon-utils.js +1 -1
- package/dist/addon-utils.mjs +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/device-manager/device-linked-devices.d.ts +47 -0
- package/dist/builtins/device-manager/device-manager.addon.js +1840 -1712
- package/dist/builtins/device-manager/device-manager.addon.mjs +1840 -1712
- package/dist/builtins/doorbell/index.d.ts +2 -0
- package/dist/builtins/doorbell/index.js +8 -0
- package/dist/builtins/doorbell/index.mjs +2 -0
- package/dist/builtins/doorbell/trigger-engine.d.ts +69 -0
- package/dist/builtins/doorbell/virtual-doorbell.addon.d.ts +87 -0
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +489 -0
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +483 -0
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +2 -2
- package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +162 -12
- package/dist/builtins/snapshot/index.mjs +162 -12
- package/dist/builtins/snapshot/snapshot-media-handler.d.ts +38 -0
- package/dist/builtins/snapshot/snapshot.addon.d.ts +26 -0
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +4 -4
- package/dist/builtins/system-config/system-config.addon.mjs +4 -4
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-CC3E-_3h.mjs → dist-B_PSvr-m.mjs} +237 -13
- package/dist/{dist-CQYo6Zp8.js → dist-BduBhv6N.js} +242 -12
- package/dist/http/file-data-plane.d.ts +8 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +35 -23
- package/dist/index.mjs +35 -24
- package/dist/kernel/addon-installer.d.ts +8 -0
- package/dist/kernel/deps/manifest-native-deps.d.ts +1 -1
- package/dist/kernel/deps/npm-command.d.ts +38 -0
- package/dist/{manifest-python-deps-DqATCsK0.mjs → manifest-python-deps-CIyvuHAB.mjs} +268 -124
- package/dist/{manifest-python-deps-Wy8dNJpr.js → manifest-python-deps-CPAMH5gV.js} +279 -123
- package/dist/{model-download-service-C-IHWnXx.mjs → model-download-service-Cp9f4dk6.mjs} +1 -1
- package/dist/{model-download-service-D-Umz4-L.js → model-download-service-hf0ookyy.js} +1 -1
- package/package.json +13 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
//#region ../types/dist/
|
|
2
|
+
//#region ../types/dist/event-category-H4AVePnn.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -149,6 +149,9 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
149
149
|
EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
|
|
150
150
|
EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
|
|
151
151
|
EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
|
|
152
|
+
/** Runner-sampled scrub thumbnail (~1/5 s/camera). Telemetry (D8): a lost
|
|
153
|
+
* thumb is a scrub gap the recorder's keyframe backfill covers. */
|
|
154
|
+
EventCategory["RecordingThumbSampled"] = "recording.thumb-sampled";
|
|
152
155
|
EventCategory["DetectionEvent"] = "detection.event";
|
|
153
156
|
EventCategory["SessionTrackNew"] = "session.track.new";
|
|
154
157
|
EventCategory["SessionTrackExpired"] = "session.track.expired";
|
|
@@ -6903,10 +6906,23 @@ var deviceDiscoveryCapability = {
|
|
|
6903
6906
|
}
|
|
6904
6907
|
};
|
|
6905
6908
|
/**
|
|
6906
|
-
* Doorbell button cap.
|
|
6907
|
-
*
|
|
6908
|
-
*
|
|
6909
|
-
*
|
|
6909
|
+
* Doorbell button cap. Two kinds of providers coexist behind this cap
|
|
6910
|
+
* name (same pattern as `snapshot`):
|
|
6911
|
+
*
|
|
6912
|
+
* - **Native** providers: registered per-device by device-driver
|
|
6913
|
+
* addons via `ctx.registerNativeCap` — either on a
|
|
6914
|
+
* `DeviceType.Button` accessory with `role: DeviceRole.Doorbell`,
|
|
6915
|
+
* or directly on the camera (Reolink registers at camera level).
|
|
6916
|
+
* Emits an `onPressed` event every time the firmware pushes a
|
|
6917
|
+
* ring; status tracks the last press and a pressCount since start
|
|
6918
|
+
* (diagnostic).
|
|
6919
|
+
*
|
|
6920
|
+
* - **Wrapper** provider: the `virtual-doorbell` system builtin
|
|
6921
|
+
* (`@camstack/system/builtins/doorbell`). Turns ANY binary-ish
|
|
6922
|
+
* device (contact / switch / event-emitter …) into a doorbell for
|
|
6923
|
+
* a camera. `defaultActive: false` — the operator explicitly binds
|
|
6924
|
+
* it per camera in the device-bindings UI, then picks the source
|
|
6925
|
+
* device + trigger in the per-device settings.
|
|
6910
6926
|
*
|
|
6911
6927
|
* The DeviceEventPropagator re-emits `onPressed` on the camera parent
|
|
6912
6928
|
* — subscribers listening at the camera level receive ring events
|
|
@@ -6927,7 +6943,10 @@ var doorbellCapability = {
|
|
|
6927
6943
|
scope: "device",
|
|
6928
6944
|
deviceNative: true,
|
|
6929
6945
|
mode: "singleton",
|
|
6930
|
-
|
|
6946
|
+
kind: "wrapper",
|
|
6947
|
+
defaultActive: false,
|
|
6948
|
+
deviceTypes: [DeviceType.Button, DeviceType.Camera],
|
|
6949
|
+
exposesDeviceSettings: true,
|
|
6931
6950
|
methods: {},
|
|
6932
6951
|
events: {
|
|
6933
6952
|
/**
|
|
@@ -13565,6 +13584,14 @@ var ConfigEntrySchema = z.object({
|
|
|
13565
13584
|
value: z.unknown(),
|
|
13566
13585
|
description: z.string().optional()
|
|
13567
13586
|
});
|
|
13587
|
+
var DeviceLinkModeSchema = z.enum(["auto", "manual"]);
|
|
13588
|
+
/** One resolved linked device — the compact projection consumers need. */
|
|
13589
|
+
var LinkedDeviceSchema = z.object({
|
|
13590
|
+
deviceId: z.number(),
|
|
13591
|
+
name: z.string(),
|
|
13592
|
+
location: z.string().nullable(),
|
|
13593
|
+
features: z.array(z.string())
|
|
13594
|
+
});
|
|
13568
13595
|
var SavedDeviceRowSchema = z.object({
|
|
13569
13596
|
/** Numeric id reserved at allocateDeviceId time. */
|
|
13570
13597
|
id: z.number(),
|
|
@@ -13672,6 +13699,7 @@ var deviceManagerCapability = {
|
|
|
13672
13699
|
name: "device-manager",
|
|
13673
13700
|
scope: "system",
|
|
13674
13701
|
mode: "singleton",
|
|
13702
|
+
exposesDeviceSettings: true,
|
|
13675
13703
|
methods: {
|
|
13676
13704
|
/** Reserve (or re-resolve) a progressive numeric id for `(addonId, stableId)`.
|
|
13677
13705
|
* Idempotent: returns the existing id if one is already persisted for the
|
|
@@ -13922,6 +13950,19 @@ var deviceManagerCapability = {
|
|
|
13922
13950
|
getDevice: method(z.object({ deviceId: z.number() }), DeviceInfoSchema.nullable()),
|
|
13923
13951
|
/** List children of a parent device (by parent numeric id). */
|
|
13924
13952
|
getChildren: method(z.object({ parentDeviceId: z.number() }), z.array(DeviceInfoSchema)),
|
|
13953
|
+
/**
|
|
13954
|
+
* Resolve the devices LINKED to a camera — the single policy authority
|
|
13955
|
+
* both consumers call (viewer devices panel + pipeline-analytics event
|
|
13956
|
+
* kinds/ingest). Device-tree children are ALWAYS included; mode 'auto'
|
|
13957
|
+
* (default) adds every device sharing the camera's non-null `location`,
|
|
13958
|
+
* mode 'manual' adds the persisted manual list instead. Excludes the
|
|
13959
|
+
* camera itself; deduped. Configuration is standard per-device settings
|
|
13960
|
+
* (see the module docblock) — there are no bespoke link mutations.
|
|
13961
|
+
*/
|
|
13962
|
+
getLinkedDevices: method(z.object({ deviceId: z.number() }), z.object({
|
|
13963
|
+
mode: DeviceLinkModeSchema,
|
|
13964
|
+
devices: z.array(LinkedDeviceSchema)
|
|
13965
|
+
})),
|
|
13925
13966
|
/** Get stream sources for a camera device. */
|
|
13926
13967
|
getStreamSources: method(z.object({ deviceId: z.number() }), z.array(StreamSourceEntrySchema$1)),
|
|
13927
13968
|
/** Get config entries (key + value + description) for a device. */
|
|
@@ -15640,6 +15681,61 @@ var EventKindSchema = z.enum([
|
|
|
15640
15681
|
"object",
|
|
15641
15682
|
"audio"
|
|
15642
15683
|
]);
|
|
15684
|
+
/**
|
|
15685
|
+
* Spatial filter for `listTracks` — the rect + polygon variants of the shared
|
|
15686
|
+
* MaskShape vocabulary (see `mask-shape.ts`). Coordinates are NORMALIZED 0..1
|
|
15687
|
+
* of the camera frame (top-left origin), matching the drawing-plane editor.
|
|
15688
|
+
*/
|
|
15689
|
+
var TrackZoneFilterSchema = z.discriminatedUnion("kind", [MaskRectShapeSchema, MaskPolygonShapeSchema]);
|
|
15690
|
+
/** Closed icon vocabulary so clients render a known glyph per kind. */
|
|
15691
|
+
var EventKindIconSchema = z.enum([
|
|
15692
|
+
"motion",
|
|
15693
|
+
"audio",
|
|
15694
|
+
"person",
|
|
15695
|
+
"vehicle",
|
|
15696
|
+
"animal",
|
|
15697
|
+
"door",
|
|
15698
|
+
"pir",
|
|
15699
|
+
"smoke",
|
|
15700
|
+
"water",
|
|
15701
|
+
"button",
|
|
15702
|
+
"generic"
|
|
15703
|
+
]);
|
|
15704
|
+
var EventKindCategorySchema = z.enum([
|
|
15705
|
+
"motion",
|
|
15706
|
+
"audio",
|
|
15707
|
+
"detection",
|
|
15708
|
+
"sensor",
|
|
15709
|
+
"custom"
|
|
15710
|
+
]);
|
|
15711
|
+
var EventKindDescriptorSchema = z.object({
|
|
15712
|
+
/** Stable kind id (e.g. 'motion', 'person', 'contact'). */
|
|
15713
|
+
kind: z.string(),
|
|
15714
|
+
label: z.string(),
|
|
15715
|
+
/** Hex color for timeline/legend rendering. */
|
|
15716
|
+
color: z.string(),
|
|
15717
|
+
icon: EventKindIconSchema,
|
|
15718
|
+
category: EventKindCategorySchema,
|
|
15719
|
+
/** Which cap + device contributes this kind. For built-ins the camera
|
|
15720
|
+
* itself; for sensor kinds the LINKED source device. */
|
|
15721
|
+
source: z.object({
|
|
15722
|
+
capName: z.string(),
|
|
15723
|
+
deviceId: z.number()
|
|
15724
|
+
})
|
|
15725
|
+
});
|
|
15726
|
+
var SensorEventSchema = z.object({
|
|
15727
|
+
id: z.string(),
|
|
15728
|
+
/** The CAMERA the event is attributed to (a sensor linked to N cameras
|
|
15729
|
+
* yields N rows, one per camera). */
|
|
15730
|
+
deviceId: z.number(),
|
|
15731
|
+
/** The linked sensor device whose state changed. */
|
|
15732
|
+
sourceDeviceId: z.number(),
|
|
15733
|
+
/** Event kind id — matches an `EventKindDescriptor.kind`. */
|
|
15734
|
+
kind: z.string(),
|
|
15735
|
+
/** Snapshot of the sensor cap's runtime-state slice at the change. */
|
|
15736
|
+
value: z.record(z.string(), z.unknown()).nullable(),
|
|
15737
|
+
timestamp: z.number()
|
|
15738
|
+
});
|
|
15643
15739
|
var TrackPositionSchema = z.object({
|
|
15644
15740
|
x: z.number(),
|
|
15645
15741
|
y: z.number(),
|
|
@@ -15653,6 +15749,30 @@ var TrackSnapshotSchema = z.object({
|
|
|
15653
15749
|
mediaKey: z.string()
|
|
15654
15750
|
});
|
|
15655
15751
|
/**
|
|
15752
|
+
* Normalized 0..1 trajectory envelope (min/max over every position bbox,
|
|
15753
|
+
* divided by the track's detection-frame dims), computed at persist time.
|
|
15754
|
+
* Absent when the frame dims were unknown when the track was persisted
|
|
15755
|
+
* (legacy rows / dims-less sources) and on active (in-RAM) tracks.
|
|
15756
|
+
*/
|
|
15757
|
+
var TrackEnvelopeSchema = z.object({
|
|
15758
|
+
minX: z.number(),
|
|
15759
|
+
minY: z.number(),
|
|
15760
|
+
maxX: z.number(),
|
|
15761
|
+
maxY: z.number()
|
|
15762
|
+
});
|
|
15763
|
+
/**
|
|
15764
|
+
* Row projection for track list queries. `full` (default) returns the
|
|
15765
|
+
* complete Track including the frame-rate `positions[]` history and the
|
|
15766
|
+
* `snapshots[]` references — megabytes across a page of tracks. `slim`
|
|
15767
|
+
* keeps every scalar the list surfaces actually render (ids, class(es),
|
|
15768
|
+
* label / audioLabels / importance enrichment, firstSeen/lastSeen, state,
|
|
15769
|
+
* zonesVisited, bestEventId, envelope) and returns `positions` /
|
|
15770
|
+
* `snapshots` as EMPTY arrays — detail views re-fetch the full row via
|
|
15771
|
+
* `getTrack`. Mirrors the event-store `projection` convention
|
|
15772
|
+
* (`getObjectEvents` et al.).
|
|
15773
|
+
*/
|
|
15774
|
+
var TrackProjectionSchema = z.enum(["full", "slim"]);
|
|
15775
|
+
/**
|
|
15656
15776
|
* One audio-classification label heard on the track's camera while the
|
|
15657
15777
|
* track was alive, aggregated per label. An "episode" is one persisted
|
|
15658
15778
|
* audio event (the confident-classification path: score ≥ the device's
|
|
@@ -15703,7 +15823,11 @@ var TrackSchema = z.object({
|
|
|
15703
15823
|
/** Audio-classification labels heard on the camera during the track's
|
|
15704
15824
|
* life (score ≥ device `classificationMinScore`), aggregated per label.
|
|
15705
15825
|
* Absent on legacy rows / tracks with no confident audio. */
|
|
15706
|
-
audioLabels: z.array(TrackAudioLabelSchema).readonly().optional()
|
|
15826
|
+
audioLabels: z.array(TrackAudioLabelSchema).readonly().optional(),
|
|
15827
|
+
/** Normalized 0..1 trajectory envelope (see {@link TrackEnvelopeSchema}).
|
|
15828
|
+
* Populated from the persisted envelope columns on historical reads;
|
|
15829
|
+
* absent on legacy rows, dims-less tracks and active (in-RAM) tracks. */
|
|
15830
|
+
envelope: TrackEnvelopeSchema.optional()
|
|
15707
15831
|
});
|
|
15708
15832
|
var BaseEventFields = {
|
|
15709
15833
|
id: z.string(),
|
|
@@ -15813,11 +15937,13 @@ var MediaFileSchema = z.object({
|
|
|
15813
15937
|
sizeBytes: z.number(),
|
|
15814
15938
|
timestamp: z.number()
|
|
15815
15939
|
});
|
|
15940
|
+
var DEFAULT_EVENT_QUERY_LIMIT = 1e3;
|
|
15941
|
+
var MAX_EVENT_QUERY_LIMIT = 5e3;
|
|
15816
15942
|
var DeviceEventQueryInput = z.object({
|
|
15817
15943
|
deviceId: z.number(),
|
|
15818
15944
|
since: z.number().optional(),
|
|
15819
15945
|
until: z.number().optional(),
|
|
15820
|
-
limit: z.number().int().min(1).max(
|
|
15946
|
+
limit: z.number().int().min(1).max(MAX_EVENT_QUERY_LIMIT).default(DEFAULT_EVENT_QUERY_LIMIT),
|
|
15821
15947
|
/** `slim` drops heavy JSON fields (regions/bbox/zones) and carries an
|
|
15822
15948
|
* optional `mediaUrl` (populated by B5). `full` (default) keeps today's
|
|
15823
15949
|
* exact behaviour. Callers may omit this field — the store defaults to
|
|
@@ -15825,6 +15951,27 @@ var DeviceEventQueryInput = z.object({
|
|
|
15825
15951
|
projection: z.enum(["full", "slim"]).optional()
|
|
15826
15952
|
});
|
|
15827
15953
|
var ObjectEventQueryInput = DeviceEventQueryInput.extend({ classFilter: z.string().optional() });
|
|
15954
|
+
var RecentTracksQueryInput = z.object({
|
|
15955
|
+
/** Devices to merge. An empty array yields `{ tracks: [], nextCursor: null }`. */
|
|
15956
|
+
deviceIds: z.array(z.number()),
|
|
15957
|
+
/** Window lower bound on `lastSeen` (inclusive). */
|
|
15958
|
+
since: z.number().optional(),
|
|
15959
|
+
/** Window upper bound on `lastSeen` (inclusive). */
|
|
15960
|
+
until: z.number().optional(),
|
|
15961
|
+
/** Page size. Default 200, max 1000. */
|
|
15962
|
+
limit: z.number().int().min(1).max(1e3).default(200),
|
|
15963
|
+
/** Opaque continuation cursor from a previous page's `nextCursor`.
|
|
15964
|
+
* Encodes the (lastSeen, trackId) sort position — treat as opaque. */
|
|
15965
|
+
cursor: z.string().optional(),
|
|
15966
|
+
/** See {@link TrackProjectionSchema}. Default `full`. */
|
|
15967
|
+
projection: TrackProjectionSchema.optional()
|
|
15968
|
+
});
|
|
15969
|
+
var RecentTracksPageSchema = z.object({
|
|
15970
|
+
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
15971
|
+
tracks: z.array(TrackSchema).readonly(),
|
|
15972
|
+
/** Cursor for the next page, or null when this page is the last. */
|
|
15973
|
+
nextCursor: z.string().nullable()
|
|
15974
|
+
});
|
|
15828
15975
|
var KeyEventQueryInput = z.object({
|
|
15829
15976
|
deviceId: z.number(),
|
|
15830
15977
|
/** Window lower bound (track firstSeen ≥ since). */
|
|
@@ -15921,8 +16068,27 @@ var pipelineAnalyticsCapability = {
|
|
|
15921
16068
|
deviceId: z.number(),
|
|
15922
16069
|
since: z.number().optional(),
|
|
15923
16070
|
until: z.number().optional(),
|
|
15924
|
-
limit: z.number().optional()
|
|
16071
|
+
limit: z.number().optional(),
|
|
16072
|
+
/** Spatial filter — only tracks whose trajectory intersects the zone
|
|
16073
|
+
* (normalized 0..1 rect or polygon). SQL-prefiltered on the persisted
|
|
16074
|
+
* envelope columns, then precisely tested per position. Tracks with
|
|
16075
|
+
* an unknown envelope (no frame dims at persist time) always match. */
|
|
16076
|
+
zone: TrackZoneFilterSchema.optional(),
|
|
16077
|
+
/** See {@link TrackProjectionSchema}. Default `full` (backward
|
|
16078
|
+
* compatible — omitting the field keeps today's exact behaviour). */
|
|
16079
|
+
projection: TrackProjectionSchema.optional()
|
|
15925
16080
|
}), z.array(TrackSchema).readonly()),
|
|
16081
|
+
/**
|
|
16082
|
+
* Batched cluster-wide track listing — ONE call for the events page /
|
|
16083
|
+
* reel first paint instead of a per-camera `listTracks` fan-out. Merges
|
|
16084
|
+
* the persisted completed tracks of every requested device, sorted by
|
|
16085
|
+
* `lastSeen` DESC with a stable (lastSeen, trackId) cursor. Per-device
|
|
16086
|
+
* indexed pages (`idx_tracks_device_lastSeen`) are k-way merged
|
|
16087
|
+
* provider-side; `projection: 'slim'` drops the heavy `positions[]` /
|
|
16088
|
+
* `snapshots[]` JSON (returned as empty arrays). Active in-RAM tracks
|
|
16089
|
+
* are not included (same contract as `listTracks`).
|
|
16090
|
+
*/
|
|
16091
|
+
listRecentTracks: method(RecentTracksQueryInput, RecentTracksPageSchema),
|
|
15926
16092
|
clearTracks: method(z.object({ deviceId: z.number() }), z.void(), {
|
|
15927
16093
|
kind: "mutation",
|
|
15928
16094
|
auth: "admin"
|
|
@@ -15931,6 +16097,26 @@ var pipelineAnalyticsCapability = {
|
|
|
15931
16097
|
getObjectEvents: method(ObjectEventQueryInput, z.array(ObjectEventSchema).readonly()),
|
|
15932
16098
|
getAudioEvents: method(DeviceEventQueryInput, z.array(AudioEventSchema).readonly()),
|
|
15933
16099
|
/**
|
|
16100
|
+
* Every event kind the device can produce: built-ins (motion + audio),
|
|
16101
|
+
* detection classes actually observed for the device (from the track
|
|
16102
|
+
* history), and sensor kinds contributed by LINKED devices (resolved via
|
|
16103
|
+
* `device-manager.getLinkedDevices`, mapped through `EVENT_KIND_BY_CAP`).
|
|
16104
|
+
*/
|
|
16105
|
+
listEventKinds: method(z.object({ deviceId: z.number() }), z.array(EventKindDescriptorSchema).readonly()),
|
|
16106
|
+
/**
|
|
16107
|
+
* Sensor-event history for a camera: state changes of LINKED sensor
|
|
16108
|
+
* devices, attributed to the camera at ingest time (one row per linked
|
|
16109
|
+
* camera). Mirrors `getAudioEvents` query semantics; `kinds` narrows to
|
|
16110
|
+
* a kind subset.
|
|
16111
|
+
*/
|
|
16112
|
+
getSensorEvents: method(z.object({
|
|
16113
|
+
deviceId: z.number(),
|
|
16114
|
+
since: z.number().optional(),
|
|
16115
|
+
until: z.number().optional(),
|
|
16116
|
+
kinds: z.array(z.string()).optional(),
|
|
16117
|
+
limit: z.number().int().min(1).max(MAX_EVENT_QUERY_LIMIT).default(DEFAULT_EVENT_QUERY_LIMIT)
|
|
16118
|
+
}), z.array(SensorEventSchema).readonly()),
|
|
16119
|
+
/**
|
|
15934
16120
|
* Importance-ranked highlights for a device+window. Queries completed
|
|
15935
16121
|
* tracks by (deviceId, firstSeen ∈ [since,until]), scores each (or reuses
|
|
15936
16122
|
* the persisted score), filters by minImportance/classFilter, orders by
|
|
@@ -17952,7 +18138,15 @@ var webrtcSessionCapability = {
|
|
|
17952
18138
|
*/
|
|
17953
18139
|
disableIpv6: z.boolean().optional(),
|
|
17954
18140
|
/** Subscriber attribution. See `createSession` for the contract. */
|
|
17955
|
-
consumerAttribution: BrokerConsumerAttributionSchema.optional()
|
|
18141
|
+
consumerAttribution: BrokerConsumerAttributionSchema.optional(),
|
|
18142
|
+
/**
|
|
18143
|
+
* Client-side stream hints (viewport, downlink) — same contract as
|
|
18144
|
+
* `createSession.hints`. Client-offer viewers (the RN viewer's
|
|
18145
|
+
* `WebrtcLiveSession`) negotiate via `handleOffer`, so without this
|
|
18146
|
+
* field their hints were silently stripped by the schema and the
|
|
18147
|
+
* adaptive ladder started blind on the client's display size.
|
|
18148
|
+
*/
|
|
18149
|
+
hints: webrtcClientHintsSchema.optional()
|
|
17956
18150
|
}), z.object({
|
|
17957
18151
|
sessionId: z.string(),
|
|
17958
18152
|
sdpAnswer: z.string()
|
|
@@ -20537,7 +20731,12 @@ var RecordingStorageUsageSchema = z.object({
|
|
|
20537
20731
|
/**
|
|
20538
20732
|
* Result of locating footage at a wall-clock instant for one device/profile.
|
|
20539
20733
|
* `segment` carries the covering segment's window; `gap` reports the forward
|
|
20540
|
-
* nearest covered edge (`null` past the end of footage / when none exists)
|
|
20734
|
+
* nearest covered edge (`null` past the end of footage / when none exists)
|
|
20735
|
+
* and the backward covered edge `prevEndMs` (exclusive end of the nearest
|
|
20736
|
+
* footage behind the epoch; `null` when none — optional so older providers
|
|
20737
|
+
* that omit it stay valid). `prevEndMs` lets a backward frame-step hop the
|
|
20738
|
+
* small inter-segment cracks (durMs under-covers the span to the next
|
|
20739
|
+
* startMs by ~11-17 ms) instead of no-opping at a segment head.
|
|
20541
20740
|
*/
|
|
20542
20741
|
var LocateSegmentResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
20543
20742
|
kind: z.literal("segment"),
|
|
@@ -20546,7 +20745,8 @@ var LocateSegmentResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
|
20546
20745
|
bytes: z.number()
|
|
20547
20746
|
}), z.object({
|
|
20548
20747
|
kind: z.literal("gap"),
|
|
20549
|
-
nearestEdgeMs: z.number().nullable()
|
|
20748
|
+
nearestEdgeMs: z.number().nullable(),
|
|
20749
|
+
prevEndMs: z.number().nullable().optional()
|
|
20550
20750
|
})]);
|
|
20551
20751
|
/** Raw bytes of one finalized footage segment (read off disk on the recording node). */
|
|
20552
20752
|
var ReadSegmentBytesResultSchema = z.object({ data: z.instanceof(Uint8Array) });
|
|
@@ -22709,6 +22909,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
22709
22909
|
addonId: null,
|
|
22710
22910
|
access: "view"
|
|
22711
22911
|
},
|
|
22912
|
+
"deviceManager.getLinkedDevices": {
|
|
22913
|
+
capName: "device-manager",
|
|
22914
|
+
capScope: "system",
|
|
22915
|
+
addonId: null,
|
|
22916
|
+
access: "view"
|
|
22917
|
+
},
|
|
22712
22918
|
"deviceManager.getRoleDisplayDefaults": {
|
|
22713
22919
|
capName: "device-manager",
|
|
22714
22920
|
capScope: "system",
|
|
@@ -24263,6 +24469,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
24263
24469
|
addonId: null,
|
|
24264
24470
|
access: "view"
|
|
24265
24471
|
},
|
|
24472
|
+
"pipelineAnalytics.getSensorEvents": {
|
|
24473
|
+
capName: "pipeline-analytics",
|
|
24474
|
+
capScope: "device",
|
|
24475
|
+
addonId: null,
|
|
24476
|
+
access: "view"
|
|
24477
|
+
},
|
|
24266
24478
|
"pipelineAnalytics.getTrack": {
|
|
24267
24479
|
capName: "pipeline-analytics",
|
|
24268
24480
|
capScope: "device",
|
|
@@ -24275,6 +24487,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
24275
24487
|
addonId: null,
|
|
24276
24488
|
access: "view"
|
|
24277
24489
|
},
|
|
24490
|
+
"pipelineAnalytics.listEventKinds": {
|
|
24491
|
+
capName: "pipeline-analytics",
|
|
24492
|
+
capScope: "device",
|
|
24493
|
+
addonId: null,
|
|
24494
|
+
access: "view"
|
|
24495
|
+
},
|
|
24496
|
+
"pipelineAnalytics.listRecentTracks": {
|
|
24497
|
+
capName: "pipeline-analytics",
|
|
24498
|
+
capScope: "device",
|
|
24499
|
+
addonId: null,
|
|
24500
|
+
access: "view"
|
|
24501
|
+
},
|
|
24278
24502
|
"pipelineAnalytics.listTracks": {
|
|
24279
24503
|
capName: "pipeline-analytics",
|
|
24280
24504
|
capScope: "device",
|
|
@@ -26318,4 +26542,4 @@ function scoreRuntimes(hw) {
|
|
|
26318
26542
|
};
|
|
26319
26543
|
}
|
|
26320
26544
|
//#endregion
|
|
26321
|
-
export {
|
|
26545
|
+
export { streamQualityLabel as $, isArrayOutputSchema as A, nodePin as B, doorbellCapability as C, parseJsonObject as Ct, extractNestedAddonId as D, scopeKey as Dt, evaluateLinkExpression as E, resolveCapMount as Et, lifecycleJobSchema as F, procedureAuthKey as G, objectInputDeclaresAddonId as H, localNetworkCapability as I, setByPath as J, readNodePin as K, logDestinationCapability as L, isObjectInput as M, isVoidInput as N, filesystemBrowseCapability as O, sleep as Ot, kebabToCamel as P, storageProviderCapability as Q, looseSchema as R, deviceStatusCapability as S, isDeviceConfigCap as St, enumerateSchemaFields as T, readinessKey as Tt, parseStreamParamsFormPatch as U, normalizeUnit as V, platformProbeCapability as W, snapshotCapability as X, settingsStoreCapability as Y, storageCapability as Z, authProviderCapability as _, createEvent as _t, DeviceStatusSchema as a, DATAPLANE_SECRET_HEADER as at, deviceManagerCapability as b, expandCapMethods as bt, STREAM_PROFILE_META as c, DeviceFeature as ct, UserRecordSchema as d, ReadinessRegistry as dt, toExpressionValue as et, addonPagesCapability as f, ReadinessTimeoutError as ft, applyTransform as g, asString as gt, alertsCapability as h, asNumber as ht, CAP_NAMES_WITH_STATUS as i, BaseAddon as it, isCollectionArrayMethod as j, getByPath as k, EventCategory as kt, ScopedTokenSchema as l, DeviceRole as lt, addonWidgetsCapability as m, asJsonObject as mt, AlertSchema as n, validateExpressionSource as nt, METHOD_ACCESS_MAP as o, DEVICE_SETTINGS_CONTRIBUTION_METHODS as ot, addonSettingsCapability as p, WELL_KNOWN_TAB_MAP as pt, scoreRuntimes as q, ApiKeyRecordSchema as r, errMsg as rt, RUNTIME_DEFAULTS as s, DEVICE_STATUS_METHOD as st, ALL_CAPABILITY_DEFINITIONS as t, userManagementCapability as tt, StorageLocationTypeSchema as u, DeviceType as ut, backupCapability as v, emitDownForOwnedCaps as vt, enumerateItemArrayFields as w, parseJsonUnknown as wt, deviceStateCapability as x, hydrateSchema as xt, buildStreamParamsConfigSchema as y, emitReadiness as yt, metricsProviderCapability as z };
|