@camstack/types 1.2.173 → 1.2.176

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.
Files changed (38) hide show
  1. package/dist/addon.js +2 -2
  2. package/dist/addon.mjs +2 -2
  3. package/dist/capabilities/battery.cap.d.ts +2 -2
  4. package/dist/capabilities/camera-credentials.cap.d.ts +1 -1
  5. package/dist/capabilities/capability-definition.d.ts +2 -2
  6. package/dist/capabilities/device-manager.cap.d.ts +1 -1
  7. package/dist/capabilities/index.d.ts +2 -2
  8. package/dist/capabilities/notification-rules.cap.d.ts +11 -11
  9. package/dist/capabilities/pipeline-analytics.cap.d.ts +35 -0
  10. package/dist/capabilities/pipeline-runner.cap.d.ts +162 -0
  11. package/dist/capabilities/recording.cap.d.ts +40 -2
  12. package/dist/device/base-device-provider.d.ts +1 -1
  13. package/dist/device/device-runtime-state.d.ts +2 -2
  14. package/dist/device/device.d.ts +1 -1
  15. package/dist/device/source-info.d.ts +1 -1
  16. package/dist/enums/event-category.d.ts +0 -1
  17. package/dist/enums.js +1 -1
  18. package/dist/enums.mjs +1 -1
  19. package/dist/{event-category-BVo6ta6_.js → event-category-BNJ9EE5B.js} +0 -1
  20. package/dist/{event-category-CnLqLOKs.mjs → event-category-DAXzJeTX.mjs} +0 -1
  21. package/dist/generated/addon-api.d.ts +21 -0
  22. package/dist/generated/device-proxy.d.ts +1 -1
  23. package/dist/generated/method-access-map.d.ts +1 -1
  24. package/dist/generated/method-device-selectors.d.ts +2 -2
  25. package/dist/index.js +288 -22
  26. package/dist/index.mjs +285 -23
  27. package/dist/interfaces/addon.d.ts +1 -1
  28. package/dist/interfaces/config-ui.d.ts +1 -1
  29. package/dist/interfaces/context.d.ts +2 -2
  30. package/dist/interfaces/device-provider.d.ts +1 -1
  31. package/dist/interfaces/event-bus.d.ts +1 -1
  32. package/dist/interfaces/pipeline-runner-capability.d.ts +28 -0
  33. package/dist/interfaces/stream-broker.d.ts +7 -7
  34. package/dist/notification/timelapse-rule.d.ts +1 -1
  35. package/dist/{sleep-Bo9cUOXp.js → sleep-CTHjJilA.js} +5 -2
  36. package/dist/{sleep-DMghvp8F.mjs → sleep-ox21Ig4I.mjs} +5 -2
  37. package/dist/types/detection.d.ts +3 -5
  38. package/package.json +1 -1
@@ -230,7 +230,7 @@ export interface IKernelServices {
230
230
  readonly deviceRegistry?: import('../device/device-context.js').IDeviceRegistry;
231
231
  /**
232
232
  * Per-addon scoped device management — create, register, remove, list devices.
233
- * Used by device provider addons (rtsp, onvif, frigate) to manage cameras.
233
+ * Used by device provider addons (rtsp, onvif) to manage cameras.
234
234
  */
235
235
  readonly devices: import('../device/device-context.js').DeviceManagerApi;
236
236
  /**
@@ -86,7 +86,7 @@ export type ConfigField = ConfigTextField | ConfigNumberField | ConfigBooleanFie
86
86
  *
87
87
  * A step's config schema is static, but whether a knob has any effect depends
88
88
  * on WHICH model the step runs: an NMS IoU threshold means nothing to a model
89
- * whose export fuses NMS into the graph (Frigate YOLO-NAS, TFLite SSD), a
89
+ * whose export fuses NMS into the graph (YOLO-NAS, TFLite SSD), a
90
90
  * per-macro confidence slider is moot for a macro the model's labelmap cannot
91
91
  * produce, and a class allow-list must offer the MODEL's labels, not the
92
92
  * catalog's. Computed server-side (`buildSchemaSlots` → the step's model
@@ -5,7 +5,7 @@ import type { ISettingsBackend, IStorageProvider } from './storage.js';
5
5
  * CamstackContext -- injected into every provider, device, and addon.
6
6
  *
7
7
  * Each element receives a context scoped to its identity:
8
- * - logger is pre-scoped: (Frigate)[FrontDoor] for a device, (Frigate) for a provider
8
+ * - logger is pre-scoped: (Reolink)[FrontDoor] for a device, (Reolink) for a provider
9
9
  * - settingsBackend provides structured storage (DB) for config, events, etc.
10
10
  * - storageProvider resolves file paths per location type
11
11
  * - eventBus is shared (system-wide) but the source is pre-filled
@@ -15,7 +15,7 @@ import type { ISettingsBackend, IStorageProvider } from './storage.js';
15
15
  * It never changes even if the element is renamed.
16
16
  */
17
17
  export interface CamstackContext {
18
- /** Immutable progressive ID of this element (e.g., 'provider:frigate-1', 'device:frigate-1/front-door') */
18
+ /** Immutable progressive ID of this element (e.g., 'provider:reolink-1', 'device:reolink-1/front-door') */
19
19
  readonly id: string;
20
20
  /** Pre-scoped logger -- logs automatically include this element's scope chain */
21
21
  readonly logger: IScopedLogger;
@@ -31,7 +31,7 @@ export interface IDeviceProvider {
31
31
  /**
32
32
  * Test/probe a single field value from the device config/settings form.
33
33
  * Called when the user clicks the test button on a 'probe' field.
34
- * The provider implements the actual probing logic (e.g. ffprobe for RTSP URLs, API check for Frigate).
34
+ * The provider implements the actual probing logic (e.g. ffprobe for RTSP URLs, an API check for a hub).
35
35
  */
36
36
  testField?(key: string, value: unknown): Promise<FieldProbeResult>;
37
37
  subscribeLiveEvents(callback: (event: LiveEvent) => void): () => void;
@@ -798,7 +798,7 @@ export interface EventCatalog {
798
798
  };
799
799
  /**
800
800
  * Device online/offline aggregate. Emitted by the device's owning
801
- * provider (rtsp / reolink / onvif / frigate) when the union of its
801
+ * provider (rtsp / reolink / onvif) when the union of its
802
802
  * stream-broker profile health flips. `online` fires when at least
803
803
  * one profile becomes healthy after all were offline; `offline` fires
804
804
  * when the last healthy profile goes stale (no packets for
@@ -252,4 +252,32 @@ export interface IPipelineRunnerProvider {
252
252
  * why the model pin is refused rather than substituted.
253
253
  */
254
254
  runStatelessStep(input: import('../capabilities/pipeline-runner.cap.js').RunStatelessStepInput): Promise<import('../capabilities/pipeline-runner.cap.js').RunStatelessStepResult>;
255
+ /**
256
+ * PARK a frame for a track at the instant the hub judged it relevant
257
+ * (D422). See `pipelineRunnerCapability.parkTrackFrame`
258
+ * (`capabilities/pipeline-runner.cap.ts`) for the contract; a refusal is
259
+ * an answer, never a retry.
260
+ */
261
+ parkTrackFrame(input: {
262
+ readonly deviceId: number;
263
+ readonly trackId: string;
264
+ readonly kind: import('../capabilities/pipeline-runner.cap.js').ParkedFrameKind;
265
+ readonly handle: import('./frame-handle.js').FrameHandle;
266
+ readonly bbox: import('../capabilities/pipeline-runner.cap.js').NativeCropBbox;
267
+ readonly maxWidth?: number;
268
+ readonly timestamp: number;
269
+ }): Promise<import('../capabilities/pipeline-runner.cap.js').ParkTrackFrameResult>;
270
+ /** A parked parcel by `(deviceId, trackId, kind)`; `null` = nothing parked here. */
271
+ getParkedTrackFrame(input: {
272
+ readonly deviceId: number;
273
+ readonly trackId: string;
274
+ readonly kind: import('../capabilities/pipeline-runner.cap.js').ParkedFrameKind;
275
+ }): Promise<import('../capabilities/pipeline-runner.cap.js').ParkedTrackFrame | null>;
276
+ /** Drop every parcel of a closed track. Idempotent. */
277
+ releaseParkedTrackFrames(input: {
278
+ readonly deviceId: number;
279
+ readonly trackId: string;
280
+ }): Promise<{
281
+ released: number;
282
+ }>;
255
283
  }
@@ -47,8 +47,8 @@ export type Unsubscribe = () => void;
47
47
  * path falls back to AnnexB → writeVideoNals.
48
48
  * Reserved — implementation pending.
49
49
  * - `'push'` — push mode. Provider addon delivers AnnexB packets
50
- * via `pushEncodedPacket()` (Reolink Baichuan,
51
- * Frigate event streams, etc.).
50
+ * via `pushEncodedPacket()` (Reolink Baichuan and
51
+ * other event-stream sources).
52
52
  * - `'push-rtp'` — push mode with raw RTP packets. Provider addon
53
53
  * delivers source RTP via `pushVideoRtp()` AND
54
54
  * AnnexB-equivalents via `pushEncodedPacket()` so
@@ -204,7 +204,7 @@ export interface IStreamBroker {
204
204
  * Push an encoded packet into the broker from an external source.
205
205
  *
206
206
  * Used by camera provider addons that deliver media data directly
207
- * (e.g. Reolink Baichuan protocol, Frigate event streams) instead
207
+ * (e.g. the Reolink Baichuan protocol) instead
208
208
  * of exposing an RTSP URL for the broker to pull from.
209
209
  *
210
210
  * The broker fans out the packet to all consumers: pre-buffer, RTSP
@@ -212,8 +212,8 @@ export interface IStreamBroker {
212
212
  */
213
213
  pushEncodedPacket(packet: EncodedPacket): void;
214
214
  /**
215
- * Push-source audio metadata. Push providers (Reolink Baichuan,
216
- * Frigate, etc.) call this BEFORE the first audio EncodedPacket so
215
+ * Push-source audio metadata. Push providers (Reolink Baichuan and
216
+ * the like) call this BEFORE the first audio EncodedPacket so
217
217
  * the broker can wire the audio-codec capability — RTSP sources get
218
218
  * the same data from the SDP audio track. Repeat calls update the
219
219
  * declared codec; calling with `null` retracts (broker tears down
@@ -250,8 +250,8 @@ export interface IStreamBroker {
250
250
  * a packet-level repacketizer that preserves the original RTP header
251
251
  * layout — Chrome's HEVC depacketizer is sensitive to it.
252
252
  *
253
- * Sources that don't have an underlying RTP wire (e.g. Frigate event
254
- * streams that call `pushEncodedPacket`) MAY register zero callbacks
253
+ * Sources that don't have an underlying RTP wire (e.g. event streams
254
+ * that call `pushEncodedPacket`) MAY register zero callbacks
255
255
  * and emit nothing. `attribution` works the same as `onEncodedData`.
256
256
  */
257
257
  onVideoRtp(callback: (rtpData: Buffer) => void, attribution?: BrokerConsumerAttribution): Unsubscribe;
@@ -39,7 +39,7 @@ export declare const TIMELAPSE_DENSE_FLOOR_SEC = 0.1;
39
39
  * Whether the notification's preview is a STILL or a short animation.
40
40
  *
41
41
  * The operator's ask, verbatim: *"inviato come gif o video (come per le altre
42
- * rule)"* — his Scrypted advanced-notifier has a `gifRule`, and a ten-hour
42
+ * rule)"* — the other rules already offer an animated preview, and a ten-hour
43
43
  * night reads better as three seconds of motion than as one frame of it. Both
44
44
  * modes get the SAME treatment (blurred frame, large centred title); `'gif'`
45
45
  * simply applies it to a dozen frames sampled across the render and assembles
@@ -1,4 +1,4 @@
1
- const require_event_category = require("./event-category-BVo6ta6_.js");
1
+ const require_event_category = require("./event-category-BNJ9EE5B.js");
2
2
  let zod = require("zod");
3
3
  //#region src/interfaces/config-ui.ts
4
4
  /** Predefined tabs with standard label, icon, and sort order.
@@ -3808,7 +3808,10 @@ function createDeviceProxy(api, binding, opts) {
3808
3808
  pipelineRunner: {
3809
3809
  detachCamera: (input) => dispatchSystem("pipelineRunner", "detachCamera", "mutation", input),
3810
3810
  getCameraMetrics: (input) => dispatchSystem("pipelineRunner", "getCameraMetrics", "query", input),
3811
- runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input)
3811
+ runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input),
3812
+ parkTrackFrame: (input) => dispatchSystem("pipelineRunner", "parkTrackFrame", "mutation", input),
3813
+ getParkedTrackFrame: (input) => dispatchSystem("pipelineRunner", "getParkedTrackFrame", "query", input),
3814
+ releaseParkedTrackFrames: (input) => dispatchSystem("pipelineRunner", "releaseParkedTrackFrames", "mutation", input)
3812
3815
  },
3813
3816
  plateGallery: {
3814
3817
  listPlates: (input) => dispatchSystem("plateGallery", "listPlates", "query", input),
@@ -1,4 +1,4 @@
1
- import { t as EventCategory } from "./event-category-CnLqLOKs.mjs";
1
+ import { t as EventCategory } from "./event-category-DAXzJeTX.mjs";
2
2
  import { z } from "zod";
3
3
  //#region src/interfaces/config-ui.ts
4
4
  /** Predefined tabs with standard label, icon, and sort order.
@@ -3808,7 +3808,10 @@ function createDeviceProxy(api, binding, opts) {
3808
3808
  pipelineRunner: {
3809
3809
  detachCamera: (input) => dispatchSystem("pipelineRunner", "detachCamera", "mutation", input),
3810
3810
  getCameraMetrics: (input) => dispatchSystem("pipelineRunner", "getCameraMetrics", "query", input),
3811
- runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input)
3811
+ runDetailSubtree: (input) => dispatchSystem("pipelineRunner", "runDetailSubtree", "mutation", input),
3812
+ parkTrackFrame: (input) => dispatchSystem("pipelineRunner", "parkTrackFrame", "mutation", input),
3813
+ getParkedTrackFrame: (input) => dispatchSystem("pipelineRunner", "getParkedTrackFrame", "query", input),
3814
+ releaseParkedTrackFrames: (input) => dispatchSystem("pipelineRunner", "releaseParkedTrackFrames", "mutation", input)
3812
3815
  },
3813
3816
  plateGallery: {
3814
3817
  listPlates: (input) => dispatchSystem("plateGallery", "listPlates", "query", input),
@@ -288,11 +288,9 @@ export interface NativeRecoveryEvidence {
288
288
  * that has moved is not in a later frame, and its absence there is not evidence
289
289
  * it was never here.
290
290
  *
291
- * This is the same discipline Scrypted enforces structurally: its decoded frame
292
- * is invalidated the moment the `for await` body returns
293
- * (`plugins/python-codecs/src/libav.py:105-112`), so every second look — face
294
- * crop, embedding, retained detection image — is taken IN BAND
295
- * (`plugins/objectdetector/src/main.ts:512-520`).
291
+ * The discipline is structural: a decoded frame is invalidated the moment the
292
+ * `for await` body returns, so every second look — face crop, embedding,
293
+ * retained detection image — is taken IN BAND.
296
294
  *
297
295
  * ## What it is NOT
298
296
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.173",
3
+ "version": "1.2.176",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",