@camstack/types 1.1.43 → 1.1.45

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 (41) hide show
  1. package/dist/addon.js +1 -1
  2. package/dist/addon.mjs +1 -1
  3. package/dist/capabilities/advanced-notifier.cap.d.ts +4 -0
  4. package/dist/capabilities/cap-router-predicates.d.ts +60 -0
  5. package/dist/capabilities/capability-definition.d.ts +1 -1
  6. package/dist/capabilities/custom-model-registry.cap.d.ts +24 -0
  7. package/dist/capabilities/index.d.ts +14 -7
  8. package/dist/capabilities/llm-runtime.cap.d.ts +286 -0
  9. package/dist/capabilities/llm-shared.d.ts +104 -0
  10. package/dist/capabilities/llm.cap.d.ts +596 -0
  11. package/dist/capabilities/login-method.cap.d.ts +53 -7
  12. package/dist/capabilities/model-convert.cap.d.ts +13 -0
  13. package/dist/capabilities/model-distributor.cap.d.ts +26 -0
  14. package/dist/capabilities/pipeline-analytics.cap.d.ts +144 -25
  15. package/dist/capabilities/pipeline-executor.cap.d.ts +24 -0
  16. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +16 -0
  17. package/dist/capabilities/plate-gallery.cap.d.ts +114 -0
  18. package/dist/capabilities/platform-probe.cap.d.ts +9 -0
  19. package/dist/capabilities/scene-monitor.cap.d.ts +483 -0
  20. package/dist/capabilities/zone-analytics.cap.d.ts +78 -1
  21. package/dist/enums/event-category.d.ts +41 -0
  22. package/dist/generated/addon-api.d.ts +3135 -933
  23. package/dist/generated/cap-status-types.d.ts +3 -1
  24. package/dist/generated/capability-router-map.d.ts +13 -4
  25. package/dist/generated/device-local-state.d.ts +3 -0
  26. package/dist/generated/device-proxy.d.ts +3 -0
  27. package/dist/generated/method-access-map.d.ts +1 -1
  28. package/dist/generated/provider-kind-map.d.ts +1 -1
  29. package/dist/generated/system-proxy.d.ts +3 -1
  30. package/dist/index.js +1307 -58
  31. package/dist/index.mjs +1272 -59
  32. package/dist/inference/runtime-capabilities.d.ts +1 -1
  33. package/dist/interfaces/addon.d.ts +5 -1
  34. package/dist/interfaces/advanced-notifier.d.ts +2 -0
  35. package/dist/interfaces/event-bus.d.ts +107 -2
  36. package/dist/interfaces/platform.d.ts +17 -0
  37. package/dist/{sleep-DmvEGsRg.js → sleep-BdhADtqT.js} +55 -0
  38. package/dist/{sleep-Baang_XW.mjs → sleep-_sv7WKkq.mjs} +55 -0
  39. package/dist/types/models.d.ts +38 -1
  40. package/dist/types/pipeline-step.d.ts +20 -2
  41. package/package.json +1 -1
@@ -0,0 +1,483 @@
1
+ import { z } from 'zod';
2
+ import { type InferNativeProvider } from './capability-definition.js';
3
+ import { DeviceType } from '../device/device-type.js';
4
+ /**
5
+ * scene-monitor — device-scoped reference-region state cap. An operator marks
6
+ * a rect ROI on a camera frame and names one or more states; the engine
7
+ * (pipeline-analytics, designated post-processing node) reports which state is
8
+ * active on an ongoing basis. Two operator-selectable check modes share every-
9
+ * thing except the comparator: `similarity` (CLIP cosine at the same ROI coords
10
+ * vs condition-tagged references) and `llm` (vision-LLM judgment over the crop).
11
+ *
12
+ * D14 device-config archetype (`deviceConfig.ui.kind:'widget'`) — the framework
13
+ * derives the device-detail contribution; the provider carries NO hand-written
14
+ * settings-contribution methods. `status.kind:'push'` — the engine pushes on
15
+ * every hysteresis flip / availability change; consumers never poll.
16
+ */
17
+ /** Extensible condition tag. Seeded 'day' | 'night'; open by design so more can
18
+ * be added without a wire break (matching falls back to any-condition refs). */
19
+ export declare const SceneConditionSchema: z.ZodString;
20
+ /** One captured reference — condition-tagged, model-version-gated. `embedding`
21
+ * is `number[]` (Float32Array does NOT survive MsgPack/UDS). */
22
+ export declare const SceneReferenceSchema: z.ZodObject<{
23
+ embedding: z.ZodArray<z.ZodNumber>;
24
+ modelId: z.ZodString;
25
+ condition: z.ZodString;
26
+ capturedAt: z.ZodNumber;
27
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>;
29
+ export declare const SceneMonitorStateSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ label: z.ZodString;
32
+ references: z.ZodArray<z.ZodObject<{
33
+ embedding: z.ZodArray<z.ZodNumber>;
34
+ modelId: z.ZodString;
35
+ condition: z.ZodString;
36
+ capturedAt: z.ZodNumber;
37
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>>;
39
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ referenceCount: z.ZodNumber;
41
+ currentlyMatched: z.ZodBoolean;
42
+ }, z.core.$strip>;
43
+ /** Per-mode comparator params in a discriminated union so an `llm` scene never
44
+ * carries similarity knobs and vice-versa. */
45
+ export declare const SceneCheckSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
46
+ mode: z.ZodLiteral<"similarity">;
47
+ threshold: z.ZodNumber;
48
+ hysteresisCount: z.ZodNumber;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ mode: z.ZodLiteral<"llm">;
51
+ prompt: z.ZodString;
52
+ profileId: z.ZodOptional<z.ZodString>;
53
+ hysteresisCount: z.ZodNumber;
54
+ }, z.core.$strip>], "mode">;
55
+ export declare const SceneMonitorSchema: z.ZodObject<{
56
+ id: z.ZodString;
57
+ label: z.ZodString;
58
+ roi: z.ZodObject<{
59
+ kind: z.ZodLiteral<"rect">;
60
+ x: z.ZodNumber;
61
+ y: z.ZodNumber;
62
+ width: z.ZodNumber;
63
+ height: z.ZodNumber;
64
+ }, z.core.$strip>;
65
+ enabled: z.ZodBoolean;
66
+ triggerMode: z.ZodEnum<{
67
+ both: "both";
68
+ "on-motion": "on-motion";
69
+ periodic: "periodic";
70
+ }>;
71
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
72
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
73
+ mode: z.ZodLiteral<"similarity">;
74
+ threshold: z.ZodNumber;
75
+ hysteresisCount: z.ZodNumber;
76
+ }, z.core.$strip>, z.ZodObject<{
77
+ mode: z.ZodLiteral<"llm">;
78
+ prompt: z.ZodString;
79
+ profileId: z.ZodOptional<z.ZodString>;
80
+ hysteresisCount: z.ZodNumber;
81
+ }, z.core.$strip>], "mode">;
82
+ states: z.ZodArray<z.ZodObject<{
83
+ id: z.ZodString;
84
+ label: z.ZodString;
85
+ references: z.ZodArray<z.ZodObject<{
86
+ embedding: z.ZodArray<z.ZodNumber>;
87
+ modelId: z.ZodString;
88
+ condition: z.ZodString;
89
+ capturedAt: z.ZodNumber;
90
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
92
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
93
+ referenceCount: z.ZodNumber;
94
+ currentlyMatched: z.ZodBoolean;
95
+ }, z.core.$strip>>;
96
+ currentStateId: z.ZodNullable<z.ZodString>;
97
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
98
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
99
+ currentCondition: z.ZodNullable<z.ZodString>;
100
+ availability: z.ZodEnum<{
101
+ ok: "ok";
102
+ unavailable: "unavailable";
103
+ }>;
104
+ unavailableReason: z.ZodNullable<z.ZodString>;
105
+ }, z.core.$strip>;
106
+ export declare const SceneMonitorStatusSchema: z.ZodObject<{
107
+ monitors: z.ZodArray<z.ZodObject<{
108
+ id: z.ZodString;
109
+ label: z.ZodString;
110
+ roi: z.ZodObject<{
111
+ kind: z.ZodLiteral<"rect">;
112
+ x: z.ZodNumber;
113
+ y: z.ZodNumber;
114
+ width: z.ZodNumber;
115
+ height: z.ZodNumber;
116
+ }, z.core.$strip>;
117
+ enabled: z.ZodBoolean;
118
+ triggerMode: z.ZodEnum<{
119
+ both: "both";
120
+ "on-motion": "on-motion";
121
+ periodic: "periodic";
122
+ }>;
123
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
124
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
125
+ mode: z.ZodLiteral<"similarity">;
126
+ threshold: z.ZodNumber;
127
+ hysteresisCount: z.ZodNumber;
128
+ }, z.core.$strip>, z.ZodObject<{
129
+ mode: z.ZodLiteral<"llm">;
130
+ prompt: z.ZodString;
131
+ profileId: z.ZodOptional<z.ZodString>;
132
+ hysteresisCount: z.ZodNumber;
133
+ }, z.core.$strip>], "mode">;
134
+ states: z.ZodArray<z.ZodObject<{
135
+ id: z.ZodString;
136
+ label: z.ZodString;
137
+ references: z.ZodArray<z.ZodObject<{
138
+ embedding: z.ZodArray<z.ZodNumber>;
139
+ modelId: z.ZodString;
140
+ condition: z.ZodString;
141
+ capturedAt: z.ZodNumber;
142
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
143
+ }, z.core.$strip>>;
144
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
145
+ referenceCount: z.ZodNumber;
146
+ currentlyMatched: z.ZodBoolean;
147
+ }, z.core.$strip>>;
148
+ currentStateId: z.ZodNullable<z.ZodString>;
149
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
150
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
151
+ currentCondition: z.ZodNullable<z.ZodString>;
152
+ availability: z.ZodEnum<{
153
+ ok: "ok";
154
+ unavailable: "unavailable";
155
+ }>;
156
+ unavailableReason: z.ZodNullable<z.ZodString>;
157
+ }, z.core.$strip>>;
158
+ lastFetchedAt: z.ZodNumber;
159
+ }, z.core.$strip>;
160
+ export type SceneCondition = z.infer<typeof SceneConditionSchema>;
161
+ export type SceneReference = z.infer<typeof SceneReferenceSchema>;
162
+ export type SceneMonitorState = z.infer<typeof SceneMonitorStateSchema>;
163
+ export type SceneCheck = z.infer<typeof SceneCheckSchema>;
164
+ export type SceneMonitor = z.infer<typeof SceneMonitorSchema>;
165
+ export type SceneMonitorStatus = z.infer<typeof SceneMonitorStatusSchema>;
166
+ export declare const sceneMonitorCapability: {
167
+ readonly name: "scene-monitor";
168
+ readonly scope: "device";
169
+ readonly mode: "singleton";
170
+ readonly kind: "wrapper";
171
+ readonly defaultActive: true;
172
+ readonly deviceTypes: readonly [DeviceType.Camera];
173
+ readonly deviceConfig: {
174
+ readonly ui: {
175
+ readonly kind: "widget";
176
+ readonly widgetId: "host/scene-monitor-editor";
177
+ readonly tab: "scenes";
178
+ readonly label: "Scenes";
179
+ };
180
+ };
181
+ readonly methods: {
182
+ readonly listScenes: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
183
+ deviceId: z.ZodNumber;
184
+ }, z.core.$strip>, z.ZodObject<{
185
+ monitors: z.ZodArray<z.ZodObject<{
186
+ id: z.ZodString;
187
+ label: z.ZodString;
188
+ roi: z.ZodObject<{
189
+ kind: z.ZodLiteral<"rect">;
190
+ x: z.ZodNumber;
191
+ y: z.ZodNumber;
192
+ width: z.ZodNumber;
193
+ height: z.ZodNumber;
194
+ }, z.core.$strip>;
195
+ enabled: z.ZodBoolean;
196
+ triggerMode: z.ZodEnum<{
197
+ both: "both";
198
+ "on-motion": "on-motion";
199
+ periodic: "periodic";
200
+ }>;
201
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
202
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
203
+ mode: z.ZodLiteral<"similarity">;
204
+ threshold: z.ZodNumber;
205
+ hysteresisCount: z.ZodNumber;
206
+ }, z.core.$strip>, z.ZodObject<{
207
+ mode: z.ZodLiteral<"llm">;
208
+ prompt: z.ZodString;
209
+ profileId: z.ZodOptional<z.ZodString>;
210
+ hysteresisCount: z.ZodNumber;
211
+ }, z.core.$strip>], "mode">;
212
+ states: z.ZodArray<z.ZodObject<{
213
+ id: z.ZodString;
214
+ label: z.ZodString;
215
+ references: z.ZodArray<z.ZodObject<{
216
+ embedding: z.ZodArray<z.ZodNumber>;
217
+ modelId: z.ZodString;
218
+ condition: z.ZodString;
219
+ capturedAt: z.ZodNumber;
220
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
221
+ }, z.core.$strip>>;
222
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
223
+ referenceCount: z.ZodNumber;
224
+ currentlyMatched: z.ZodBoolean;
225
+ }, z.core.$strip>>;
226
+ currentStateId: z.ZodNullable<z.ZodString>;
227
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
228
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
229
+ currentCondition: z.ZodNullable<z.ZodString>;
230
+ availability: z.ZodEnum<{
231
+ ok: "ok";
232
+ unavailable: "unavailable";
233
+ }>;
234
+ unavailableReason: z.ZodNullable<z.ZodString>;
235
+ }, z.core.$strip>>;
236
+ lastFetchedAt: z.ZodNumber;
237
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
238
+ readonly createScene: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
239
+ deviceId: z.ZodNumber;
240
+ label: z.ZodString;
241
+ roi: z.ZodObject<{
242
+ kind: z.ZodLiteral<"rect">;
243
+ x: z.ZodNumber;
244
+ y: z.ZodNumber;
245
+ width: z.ZodNumber;
246
+ height: z.ZodNumber;
247
+ }, z.core.$strip>;
248
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
249
+ mode: z.ZodLiteral<"similarity">;
250
+ threshold: z.ZodNumber;
251
+ hysteresisCount: z.ZodNumber;
252
+ }, z.core.$strip>, z.ZodObject<{
253
+ mode: z.ZodLiteral<"llm">;
254
+ prompt: z.ZodString;
255
+ profileId: z.ZodOptional<z.ZodString>;
256
+ hysteresisCount: z.ZodNumber;
257
+ }, z.core.$strip>], "mode">;
258
+ triggerMode: z.ZodOptional<z.ZodEnum<{
259
+ both: "both";
260
+ "on-motion": "on-motion";
261
+ periodic: "periodic";
262
+ }>>;
263
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
264
+ }, z.core.$strip>, z.ZodObject<{
265
+ id: z.ZodString;
266
+ label: z.ZodString;
267
+ roi: z.ZodObject<{
268
+ kind: z.ZodLiteral<"rect">;
269
+ x: z.ZodNumber;
270
+ y: z.ZodNumber;
271
+ width: z.ZodNumber;
272
+ height: z.ZodNumber;
273
+ }, z.core.$strip>;
274
+ enabled: z.ZodBoolean;
275
+ triggerMode: z.ZodEnum<{
276
+ both: "both";
277
+ "on-motion": "on-motion";
278
+ periodic: "periodic";
279
+ }>;
280
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
281
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
282
+ mode: z.ZodLiteral<"similarity">;
283
+ threshold: z.ZodNumber;
284
+ hysteresisCount: z.ZodNumber;
285
+ }, z.core.$strip>, z.ZodObject<{
286
+ mode: z.ZodLiteral<"llm">;
287
+ prompt: z.ZodString;
288
+ profileId: z.ZodOptional<z.ZodString>;
289
+ hysteresisCount: z.ZodNumber;
290
+ }, z.core.$strip>], "mode">;
291
+ states: z.ZodArray<z.ZodObject<{
292
+ id: z.ZodString;
293
+ label: z.ZodString;
294
+ references: z.ZodArray<z.ZodObject<{
295
+ embedding: z.ZodArray<z.ZodNumber>;
296
+ modelId: z.ZodString;
297
+ condition: z.ZodString;
298
+ capturedAt: z.ZodNumber;
299
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
300
+ }, z.core.$strip>>;
301
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
302
+ referenceCount: z.ZodNumber;
303
+ currentlyMatched: z.ZodBoolean;
304
+ }, z.core.$strip>>;
305
+ currentStateId: z.ZodNullable<z.ZodString>;
306
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
307
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
308
+ currentCondition: z.ZodNullable<z.ZodString>;
309
+ availability: z.ZodEnum<{
310
+ ok: "ok";
311
+ unavailable: "unavailable";
312
+ }>;
313
+ unavailableReason: z.ZodNullable<z.ZodString>;
314
+ }, z.core.$strip>, "mutation">;
315
+ readonly updateScene: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
316
+ deviceId: z.ZodNumber;
317
+ monitorId: z.ZodString;
318
+ patch: z.ZodObject<{
319
+ label: z.ZodOptional<z.ZodString>;
320
+ roi: z.ZodOptional<z.ZodObject<{
321
+ kind: z.ZodLiteral<"rect">;
322
+ x: z.ZodNumber;
323
+ y: z.ZodNumber;
324
+ width: z.ZodNumber;
325
+ height: z.ZodNumber;
326
+ }, z.core.$strip>>;
327
+ enabled: z.ZodOptional<z.ZodBoolean>;
328
+ triggerMode: z.ZodOptional<z.ZodEnum<{
329
+ both: "both";
330
+ "on-motion": "on-motion";
331
+ periodic: "periodic";
332
+ }>>;
333
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
334
+ check: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
335
+ mode: z.ZodLiteral<"similarity">;
336
+ threshold: z.ZodNumber;
337
+ hysteresisCount: z.ZodNumber;
338
+ }, z.core.$strip>, z.ZodObject<{
339
+ mode: z.ZodLiteral<"llm">;
340
+ prompt: z.ZodString;
341
+ profileId: z.ZodOptional<z.ZodString>;
342
+ hysteresisCount: z.ZodNumber;
343
+ }, z.core.$strip>], "mode">>;
344
+ }, z.core.$strip>;
345
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
346
+ readonly deleteScene: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
347
+ deviceId: z.ZodNumber;
348
+ monitorId: z.ZodString;
349
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
350
+ readonly captureReference: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
351
+ deviceId: z.ZodNumber;
352
+ monitorId: z.ZodString;
353
+ stateId: z.ZodOptional<z.ZodString>;
354
+ label: z.ZodOptional<z.ZodString>;
355
+ condition: z.ZodOptional<z.ZodString>;
356
+ }, z.core.$strip>, z.ZodObject<{
357
+ stateId: z.ZodString;
358
+ referenceCount: z.ZodNumber;
359
+ }, z.core.$strip>, "mutation">;
360
+ readonly deleteReference: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
361
+ deviceId: z.ZodNumber;
362
+ monitorId: z.ZodString;
363
+ stateId: z.ZodString;
364
+ index: z.ZodNumber;
365
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
366
+ readonly recheckNow: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
367
+ deviceId: z.ZodNumber;
368
+ monitorId: z.ZodString;
369
+ }, z.core.$strip>, z.ZodVoid, "mutation">;
370
+ };
371
+ readonly status: {
372
+ readonly schema: z.ZodObject<{
373
+ monitors: z.ZodArray<z.ZodObject<{
374
+ id: z.ZodString;
375
+ label: z.ZodString;
376
+ roi: z.ZodObject<{
377
+ kind: z.ZodLiteral<"rect">;
378
+ x: z.ZodNumber;
379
+ y: z.ZodNumber;
380
+ width: z.ZodNumber;
381
+ height: z.ZodNumber;
382
+ }, z.core.$strip>;
383
+ enabled: z.ZodBoolean;
384
+ triggerMode: z.ZodEnum<{
385
+ both: "both";
386
+ "on-motion": "on-motion";
387
+ periodic: "periodic";
388
+ }>;
389
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
390
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
391
+ mode: z.ZodLiteral<"similarity">;
392
+ threshold: z.ZodNumber;
393
+ hysteresisCount: z.ZodNumber;
394
+ }, z.core.$strip>, z.ZodObject<{
395
+ mode: z.ZodLiteral<"llm">;
396
+ prompt: z.ZodString;
397
+ profileId: z.ZodOptional<z.ZodString>;
398
+ hysteresisCount: z.ZodNumber;
399
+ }, z.core.$strip>], "mode">;
400
+ states: z.ZodArray<z.ZodObject<{
401
+ id: z.ZodString;
402
+ label: z.ZodString;
403
+ references: z.ZodArray<z.ZodObject<{
404
+ embedding: z.ZodArray<z.ZodNumber>;
405
+ modelId: z.ZodString;
406
+ condition: z.ZodString;
407
+ capturedAt: z.ZodNumber;
408
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
409
+ }, z.core.$strip>>;
410
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
411
+ referenceCount: z.ZodNumber;
412
+ currentlyMatched: z.ZodBoolean;
413
+ }, z.core.$strip>>;
414
+ currentStateId: z.ZodNullable<z.ZodString>;
415
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
416
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
417
+ currentCondition: z.ZodNullable<z.ZodString>;
418
+ availability: z.ZodEnum<{
419
+ ok: "ok";
420
+ unavailable: "unavailable";
421
+ }>;
422
+ unavailableReason: z.ZodNullable<z.ZodString>;
423
+ }, z.core.$strip>>;
424
+ lastFetchedAt: z.ZodNumber;
425
+ }, z.core.$strip>;
426
+ readonly kind: "push";
427
+ };
428
+ readonly runtimeState: z.ZodObject<{
429
+ monitors: z.ZodArray<z.ZodObject<{
430
+ id: z.ZodString;
431
+ label: z.ZodString;
432
+ roi: z.ZodObject<{
433
+ kind: z.ZodLiteral<"rect">;
434
+ x: z.ZodNumber;
435
+ y: z.ZodNumber;
436
+ width: z.ZodNumber;
437
+ height: z.ZodNumber;
438
+ }, z.core.$strip>;
439
+ enabled: z.ZodBoolean;
440
+ triggerMode: z.ZodEnum<{
441
+ both: "both";
442
+ "on-motion": "on-motion";
443
+ periodic: "periodic";
444
+ }>;
445
+ checkIntervalSec: z.ZodOptional<z.ZodNumber>;
446
+ check: z.ZodDiscriminatedUnion<[z.ZodObject<{
447
+ mode: z.ZodLiteral<"similarity">;
448
+ threshold: z.ZodNumber;
449
+ hysteresisCount: z.ZodNumber;
450
+ }, z.core.$strip>, z.ZodObject<{
451
+ mode: z.ZodLiteral<"llm">;
452
+ prompt: z.ZodString;
453
+ profileId: z.ZodOptional<z.ZodString>;
454
+ hysteresisCount: z.ZodNumber;
455
+ }, z.core.$strip>], "mode">;
456
+ states: z.ZodArray<z.ZodObject<{
457
+ id: z.ZodString;
458
+ label: z.ZodString;
459
+ references: z.ZodArray<z.ZodObject<{
460
+ embedding: z.ZodArray<z.ZodNumber>;
461
+ modelId: z.ZodString;
462
+ condition: z.ZodString;
463
+ capturedAt: z.ZodNumber;
464
+ thumbnailMediaId: z.ZodOptional<z.ZodString>;
465
+ }, z.core.$strip>>;
466
+ textPrompts: z.ZodOptional<z.ZodArray<z.ZodString>>;
467
+ referenceCount: z.ZodNumber;
468
+ currentlyMatched: z.ZodBoolean;
469
+ }, z.core.$strip>>;
470
+ currentStateId: z.ZodNullable<z.ZodString>;
471
+ lastCheckedAt: z.ZodNullable<z.ZodNumber>;
472
+ lastConfidence: z.ZodNullable<z.ZodNumber>;
473
+ currentCondition: z.ZodNullable<z.ZodString>;
474
+ availability: z.ZodEnum<{
475
+ ok: "ok";
476
+ unavailable: "unavailable";
477
+ }>;
478
+ unavailableReason: z.ZodNullable<z.ZodString>;
479
+ }, z.core.$strip>>;
480
+ lastFetchedAt: z.ZodNumber;
481
+ }, z.core.$strip>;
482
+ };
483
+ export type ISceneMonitorProvider = InferNativeProvider<typeof sceneMonitorCapability>;
@@ -29,6 +29,32 @@ declare const ZoneScopeBreakdownSchema: z.ZodObject<{
29
29
  zoneName: z.ZodString;
30
30
  trackIds: z.ZodReadonly<z.ZodArray<z.ZodString>>;
31
31
  }, z.core.$strip>;
32
+ /**
33
+ * A parked ("stationary") object surfaced alongside occupancy — an object that
34
+ * settled and stopped moving. It is NO LONGER a tracked object (the tracker was
35
+ * told to forget it so it stops re-spawning tracks/events), but it IS still
36
+ * physically present, so it keeps counting toward `frame` occupancy and is
37
+ * listed here so the UI can show it in a dedicated "Stationary" section instead
38
+ * of flooding the live event feed.
39
+ */
40
+ declare const StationaryObjectSchema: z.ZodObject<{
41
+ id: z.ZodString;
42
+ className: z.ZodString;
43
+ bbox: z.ZodObject<{
44
+ x: z.ZodNumber;
45
+ y: z.ZodNumber;
46
+ w: z.ZodNumber;
47
+ h: z.ZodNumber;
48
+ }, z.core.$strip>;
49
+ frameWidth: z.ZodNumber;
50
+ frameHeight: z.ZodNumber;
51
+ firstSeenAt: z.ZodNumber;
52
+ becameStationaryAt: z.ZodNumber;
53
+ lastConfirmedAt: z.ZodNumber;
54
+ label: z.ZodOptional<z.ZodString>;
55
+ keyFrameMediaKey: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$strip>;
57
+ export type StationaryObject = z.infer<typeof StationaryObjectSchema>;
32
58
  export declare const CameraOccupancySnapshotSchema: z.ZodObject<{
33
59
  ts: z.ZodNumber;
34
60
  frameWidth: z.ZodNumber;
@@ -48,6 +74,23 @@ export declare const CameraOccupancySnapshotSchema: z.ZodObject<{
48
74
  totalObjects: z.ZodNumber;
49
75
  byClass: z.ZodRecord<z.ZodString, z.ZodNumber>;
50
76
  }, z.core.$strip>;
77
+ stationaryObjects: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
78
+ id: z.ZodString;
79
+ className: z.ZodString;
80
+ bbox: z.ZodObject<{
81
+ x: z.ZodNumber;
82
+ y: z.ZodNumber;
83
+ w: z.ZodNumber;
84
+ h: z.ZodNumber;
85
+ }, z.core.$strip>;
86
+ frameWidth: z.ZodNumber;
87
+ frameHeight: z.ZodNumber;
88
+ firstSeenAt: z.ZodNumber;
89
+ becameStationaryAt: z.ZodNumber;
90
+ lastConfirmedAt: z.ZodNumber;
91
+ label: z.ZodOptional<z.ZodString>;
92
+ keyFrameMediaKey: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>>>;
51
94
  }, z.core.$strip>;
52
95
  export type CameraOccupancySnapshot = z.infer<typeof CameraOccupancySnapshotSchema>;
53
96
  export type ZoneScopeBreakdown = z.infer<typeof ZoneScopeBreakdownSchema>;
@@ -131,6 +174,23 @@ export declare const zoneAnalyticsCapability: {
131
174
  totalObjects: z.ZodNumber;
132
175
  byClass: z.ZodRecord<z.ZodString, z.ZodNumber>;
133
176
  }, z.core.$strip>;
177
+ stationaryObjects: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
178
+ id: z.ZodString;
179
+ className: z.ZodString;
180
+ bbox: z.ZodObject<{
181
+ x: z.ZodNumber;
182
+ y: z.ZodNumber;
183
+ w: z.ZodNumber;
184
+ h: z.ZodNumber;
185
+ }, z.core.$strip>;
186
+ frameWidth: z.ZodNumber;
187
+ frameHeight: z.ZodNumber;
188
+ firstSeenAt: z.ZodNumber;
189
+ becameStationaryAt: z.ZodNumber;
190
+ lastConfirmedAt: z.ZodNumber;
191
+ label: z.ZodOptional<z.ZodString>;
192
+ keyFrameMediaKey: z.ZodOptional<z.ZodString>;
193
+ }, z.core.$strip>>>>;
134
194
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
135
195
  /** Time-series object count inside one zone. `className` optional —
136
196
  * omit to count every class in the zone. */
@@ -206,7 +266,24 @@ export declare const zoneAnalyticsCapability: {
206
266
  totalObjects: z.ZodNumber;
207
267
  byClass: z.ZodRecord<z.ZodString, z.ZodNumber>;
208
268
  }, z.core.$strip>;
269
+ stationaryObjects: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
270
+ id: z.ZodString;
271
+ className: z.ZodString;
272
+ bbox: z.ZodObject<{
273
+ x: z.ZodNumber;
274
+ y: z.ZodNumber;
275
+ w: z.ZodNumber;
276
+ h: z.ZodNumber;
277
+ }, z.core.$strip>;
278
+ frameWidth: z.ZodNumber;
279
+ frameHeight: z.ZodNumber;
280
+ firstSeenAt: z.ZodNumber;
281
+ becameStationaryAt: z.ZodNumber;
282
+ lastConfirmedAt: z.ZodNumber;
283
+ label: z.ZodOptional<z.ZodString>;
284
+ keyFrameMediaKey: z.ZodOptional<z.ZodString>;
285
+ }, z.core.$strip>>>>;
209
286
  }, z.core.$strip>;
210
287
  };
211
288
  export type IZoneAnalyticsProvider = InferProvider<typeof zoneAnalyticsCapability>;
212
- export { CameraOccupancySnapshotSchema as _CameraOccupancySnapshotSchema, HistoryResolutionEnum, HistoryPointSchema, HistoryRangeSchema, ZoneScopeBreakdownSchema, PerScopeBreakdownSchema, };
289
+ export { CameraOccupancySnapshotSchema as _CameraOccupancySnapshotSchema, StationaryObjectSchema, HistoryResolutionEnum, HistoryPointSchema, HistoryRangeSchema, ZoneScopeBreakdownSchema, PerScopeBreakdownSchema, };
@@ -407,10 +407,51 @@ export declare enum EventCategory {
407
407
  EnrichmentEmbeddingStored = "enrichment.embedding.stored",
408
408
  EnrichmentSceneStateChanged = "enrichment.scene.state-changed",
409
409
  EnrichmentActivitySummary = "enrichment.activity.summary",
410
+ /**
411
+ * Unified track-lifecycle event: ONE category carrying `phase:
412
+ * 'start' | 'update' | 'end'` with a rich, typed
413
+ * `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
414
+ * `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
415
+ * pair — a consumer subscribes once and branches on `phase`.
416
+ */
417
+ PipelineAnalyticsTrackLifecycle = "pipeline-analytics.track-lifecycle",
418
+ /**
419
+ * @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
420
+ * (`phase:'start'`). Kept as a soft alias — no known subscribers.
421
+ */
410
422
  PipelineAnalyticsTrackStarted = "pipeline-analytics.track-started",
423
+ /**
424
+ * @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
425
+ * (`phase:'end'`). Kept as a soft alias — no known subscribers.
426
+ */
411
427
  PipelineAnalyticsTrackEnded = "pipeline-analytics.track-ended",
412
428
  PipelineAnalyticsDetectionEvent = "pipeline-analytics.detection-event",
413
429
  PipelineAnalyticsFrameTracked = "pipeline-analytics.frame-tracked",
430
+ /**
431
+ * Fired by `addon-post-analysis` when a parked (stationary) object appears
432
+ * (a track was promoted to a stationary-registry entry) or departs (the
433
+ * object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
434
+ * the dedicated "Stationary" section — never the live event feed. Payload:
435
+ * `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
436
+ */
437
+ PipelineAnalyticsStationaryChanged = "pipeline-analytics.stationary-changed",
438
+ /**
439
+ * Fired by `addon-post-analysis` whenever a gallery face row changes:
440
+ * `kind:'buffered'` a new detected face was persisted, `'assigned'` /
441
+ * `'unassigned'` its identity link changed, `'deleted'` the row was
442
+ * removed. Telemetry semantics (D8): a lost event only delays a refresh,
443
+ * never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
444
+ */
445
+ PipelineAnalyticsFaceGalleryChanged = "pipeline-analytics.face-gallery-changed",
446
+ /**
447
+ * Fired by `addon-post-analysis` whenever a gallery plate row changes:
448
+ * `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
449
+ * `'assigned'` / `'unassigned'` its vehicle link changed
450
+ * (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
451
+ * semantics (D8): a lost event only delays a refresh, never a correctness
452
+ * issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
453
+ */
454
+ PipelineAnalyticsPlateGalleryChanged = "pipeline-analytics.plate-gallery-changed",
414
455
  FrigateLiveEvent = "frigate.live-event",
415
456
  CameraStreamsProfileSlotsChanged = "camera-streams.onProfileSlotsChanged",
416
457
  /**