@camstack/types 1.1.45 → 1.1.46
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 +3 -2
- package/dist/addon.mjs +2 -1
- package/dist/capabilities/webrtc-session.cap.d.ts +7 -0
- package/dist/enums.js +15 -0
- package/dist/enums.mjs +12 -0
- package/dist/event-category-BXd6yeJi.js +547 -0
- package/dist/event-category-CFZs3jI4.mjs +542 -0
- package/dist/index.js +14 -14
- package/dist/index.mjs +12 -12
- package/dist/{sleep-_sv7WKkq.mjs → sleep-Br7r_3fq.mjs} +2 -542
- package/dist/{sleep-BdhADtqT.js → sleep-Vh_bux78.js} +4 -550
- package/package.json +6 -1
package/dist/addon.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-Vh_bux78.js");
|
|
3
|
+
const require_event_category = require("./event-category-BXd6yeJi.js");
|
|
3
4
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
4
5
|
exports.BaseAddon = require_sleep.BaseAddon;
|
|
5
6
|
exports.DATAPLANE_SECRET_HEADER = require_sleep.DATAPLANE_SECRET_HEADER;
|
|
6
7
|
exports.DeviceType = require_sleep.DeviceType;
|
|
7
8
|
exports.DisposerChain = require_sleep.DisposerChain;
|
|
8
|
-
exports.EventCategory =
|
|
9
|
+
exports.EventCategory = require_event_category.EventCategory;
|
|
9
10
|
exports.ReadinessRegistry = require_sleep.ReadinessRegistry;
|
|
10
11
|
exports.ReadinessTimeoutError = require_sleep.ReadinessTimeoutError;
|
|
11
12
|
exports.adminUiCapability = require_sleep.adminUiCapability;
|
package/dist/addon.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { A as parseJsonUnknown, D as asString, I as scopeKey, M as ReadinessRegistry, N as ReadinessTimeoutError, S as DeviceType, T as asJsonObject, a as viewerUiCapability, bt as
|
|
1
|
+
import { A as parseJsonUnknown, D as asString, I as scopeKey, M as ReadinessRegistry, N as ReadinessTimeoutError, S as DeviceType, T as asJsonObject, a as viewerUiCapability, bt as DisposerChain, ct as BaseAddon, ft as emitReadiness, i as deviceOpsCapability, j as DATAPLANE_SECRET_HEADER, lt as normalizeAddonInitResult, m as expandCapMethods, o as adminUiCapability, s as createDeviceProxy, t as sleep } from "./sleep-Br7r_3fq.mjs";
|
|
2
|
+
import { t as EventCategory } from "./event-category-CFZs3jI4.mjs";
|
|
2
3
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
3
4
|
export { BaseAddon, DATAPLANE_SECRET_HEADER, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, ReadinessTimeoutError, adminUiCapability, asJsonObject, asString, createDeviceProxy, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, normalizeAddonInitResult, parseJsonUnknown, scopeKey, sleep, viewerUiCapability };
|
|
@@ -275,6 +275,13 @@ export declare const webrtcSessionCapability: {
|
|
|
275
275
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
276
276
|
extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
277
277
|
}, z.core.$strip>>>;
|
|
278
|
+
hints: z.ZodOptional<z.ZodObject<{
|
|
279
|
+
viewportWidth: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
280
|
+
viewportHeight: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
281
|
+
devicePixelRatio: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
282
|
+
downlinkMbps: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
|
|
283
|
+
prefersTier: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
284
|
+
}, z.core.$strip>>;
|
|
278
285
|
}, z.core.$strip>, z.ZodObject<{
|
|
279
286
|
sessionId: z.ZodString;
|
|
280
287
|
sdpAnswer: z.ZodString;
|
package/dist/enums.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_event_category = require("./event-category-BXd6yeJi.js");
|
|
3
|
+
//#region src/enums/event-source-type.ts
|
|
4
|
+
var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
|
|
5
|
+
EventSourceType["Addon"] = "addon";
|
|
6
|
+
EventSourceType["Core"] = "core";
|
|
7
|
+
EventSourceType["Device"] = "device";
|
|
8
|
+
EventSourceType["Provider"] = "provider";
|
|
9
|
+
EventSourceType["System"] = "system";
|
|
10
|
+
return EventSourceType;
|
|
11
|
+
}({});
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.EventCategory = require_event_category.EventCategory;
|
|
14
|
+
exports.EventSourceType = EventSourceType;
|
|
15
|
+
exports.EventSourceType$1 = EventSourceType;
|
package/dist/enums.mjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as EventCategory } from "./event-category-CFZs3jI4.mjs";
|
|
2
|
+
//#region src/enums/event-source-type.ts
|
|
3
|
+
var EventSourceType = /* @__PURE__ */ function(EventSourceType) {
|
|
4
|
+
EventSourceType["Addon"] = "addon";
|
|
5
|
+
EventSourceType["Core"] = "core";
|
|
6
|
+
EventSourceType["Device"] = "device";
|
|
7
|
+
EventSourceType["Provider"] = "provider";
|
|
8
|
+
EventSourceType["System"] = "system";
|
|
9
|
+
return EventSourceType;
|
|
10
|
+
}({});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { EventCategory, EventSourceType };
|
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
//#region src/enums/event-category.ts
|
|
2
|
+
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
3
|
+
EventCategory["SystemBoot"] = "system.boot";
|
|
4
|
+
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
5
|
+
EventCategory["SystemRestarting"] = "system.restarting";
|
|
6
|
+
/**
|
|
7
|
+
* Fired exactly once after the hub finishes booting following a
|
|
8
|
+
* restart that was triggered by `RestartCoordinator` (today: framework
|
|
9
|
+
* live-update). Payload is the marker that was on disk at boot
|
|
10
|
+
* (`PendingRestartMarkerPayload`); admin UI listens for it to display a
|
|
11
|
+
* success toast describing what changed.
|
|
12
|
+
*
|
|
13
|
+
* Spec: docs/superpowers/specs/2026-05-14-framework-live-update-design.md
|
|
14
|
+
*/
|
|
15
|
+
EventCategory["SystemRestartCompleted"] = "system.restart-completed";
|
|
16
|
+
/**
|
|
17
|
+
* Readiness transition for a capability provider. Every producer emits
|
|
18
|
+
* this event on `onInitialize` completion, `onDestroy`, and
|
|
19
|
+
* `$node.reconnect`; every consumer that needs to gate on a cross-process
|
|
20
|
+
* cap subscribes via the kernel's readiness module (`awaitReady` /
|
|
21
|
+
* `onReadyState`) instead of polling. Payload is
|
|
22
|
+
* `SystemReadyStatePayload` — see event-bus.ts.
|
|
23
|
+
*/
|
|
24
|
+
EventCategory["SystemReadyState"] = "system.ready-state";
|
|
25
|
+
EventCategory["AddonStarted"] = "addon.started";
|
|
26
|
+
EventCategory["AddonStopped"] = "addon.stopped";
|
|
27
|
+
EventCategory["AddonRestarted"] = "addon.restarted";
|
|
28
|
+
EventCategory["AddonUpdated"] = "addon.updated";
|
|
29
|
+
EventCategory["AddonInstalled"] = "addon.installed";
|
|
30
|
+
EventCategory["AddonUninstalled"] = "addon.uninstalled";
|
|
31
|
+
EventCategory["AddonCrashed"] = "addon.crashed";
|
|
32
|
+
EventCategory["AddonError"] = "addon.error";
|
|
33
|
+
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
34
|
+
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
35
|
+
/**
|
|
36
|
+
* Addon failed to load (import or initialize). Emitted by the kernel's
|
|
37
|
+
* AddonHealthMonitor only AFTER the boot grace period ends — failures
|
|
38
|
+
* during the first 5 minutes are silently retried without alerting
|
|
39
|
+
* (slow-starting addons must have time to come up). Post-grace, this
|
|
40
|
+
* event is emitted exactly once per failure-streak; AlertCenter
|
|
41
|
+
* consumes it to create a persistent operator-visible alert.
|
|
42
|
+
*
|
|
43
|
+
* Payload: `{ packageName, addonId?, error: { message, stack }, retryCount, nextRetryAt }`.
|
|
44
|
+
*/
|
|
45
|
+
EventCategory["AddonLoadFailed"] = "addon.load-failed";
|
|
46
|
+
/**
|
|
47
|
+
* Addon recovered from a previous failure. Emitted when an addon
|
|
48
|
+
* transitions from `failed` back to `healthy` (typically via the
|
|
49
|
+
* monitor's auto-retry loop, or after manual `addons.retryLoad`).
|
|
50
|
+
* AlertCenter dismisses the corresponding `AddonLoadFailed` alert
|
|
51
|
+
* on this event.
|
|
52
|
+
*/
|
|
53
|
+
EventCategory["AddonLoadRecovered"] = "addon.load-recovered";
|
|
54
|
+
/**
|
|
55
|
+
* Monitor scheduled the next retry for a failed addon. Transient —
|
|
56
|
+
* surfaced to the UI for live-updating the "next retry in Ns"
|
|
57
|
+
* countdown on the Addons page row, NOT persisted as an alert.
|
|
58
|
+
*/
|
|
59
|
+
EventCategory["AddonRetryScheduled"] = "addon.retry-scheduled";
|
|
60
|
+
/**
|
|
61
|
+
* Monitor is attempting to reload a failed addon NOW. UI uses this
|
|
62
|
+
* to show a spinner during the retry attempt. Same transient nature
|
|
63
|
+
* as AddonRetryScheduled.
|
|
64
|
+
*/
|
|
65
|
+
EventCategory["AddonRetryAttempting"] = "addon.retry-attempting";
|
|
66
|
+
EventCategory["DeviceRegistered"] = "device.registered";
|
|
67
|
+
EventCategory["DeviceUnregistered"] = "device.unregistered";
|
|
68
|
+
EventCategory["DeviceEnabled"] = "device.enabled";
|
|
69
|
+
EventCategory["DeviceDisabled"] = "device.disabled";
|
|
70
|
+
EventCategory["DeviceSettingsUpdated"] = "device.settings-updated";
|
|
71
|
+
/**
|
|
72
|
+
* Emitted when the set of native capability providers bound to a device
|
|
73
|
+
* changes — e.g. an addon registers a new native cap via
|
|
74
|
+
* `DeviceContext.registerNativeCap`, or all native bindings for a device
|
|
75
|
+
* are cleared on removal. Hub consumers re-resolve device-proxy routes
|
|
76
|
+
* when this fires.
|
|
77
|
+
*/
|
|
78
|
+
EventCategory["DeviceBindingsChanged"] = "device.bindings-changed";
|
|
79
|
+
/**
|
|
80
|
+
* Emitted when the operator-organisational meta surface changes
|
|
81
|
+
* (`name` / `location` / `disabled`). Payload: `{deviceId, field,
|
|
82
|
+
* value}`. Live consumers (UI device list, alert center) react
|
|
83
|
+
* without polling. Distinct from `DeviceSettingsUpdated` which
|
|
84
|
+
* fires on hardware-config changes (host/port/credentials/etc).
|
|
85
|
+
*/
|
|
86
|
+
EventCategory["DeviceMetaChanged"] = "device.meta-changed";
|
|
87
|
+
/**
|
|
88
|
+
* Emitted by `BaseDevice.updateSourceInfo()` after a successful patch
|
|
89
|
+
* to the device's upstream-system identity / rendering envelope. The
|
|
90
|
+
* full new SourceInfo travels in the payload so cross-process listeners
|
|
91
|
+
* (UI, export adapters) don't need to re-read the meta blob.
|
|
92
|
+
*
|
|
93
|
+
* Payload: `{deviceId, sourceInfo}`.
|
|
94
|
+
*
|
|
95
|
+
* Distinct from `DeviceMetaChanged` which covers the operator-edited
|
|
96
|
+
* surface (`name` / `location` / `disabled`). The two share the
|
|
97
|
+
* persistence layer (both ride on `device-manager.setMetadata` for
|
|
98
|
+
* SourceInfo, or `setName`/`setLocation`/`setDisabled` for the meta
|
|
99
|
+
* fields) but consumers care about different subsets.
|
|
100
|
+
*/
|
|
101
|
+
EventCategory["DeviceSourceInfoChanged"] = "device.source-info-changed";
|
|
102
|
+
/**
|
|
103
|
+
* Emitted by DeviceStreamWiringService after a successful
|
|
104
|
+
* `stream-broker.registerDeviceStreams` call. Payload includes
|
|
105
|
+
* deviceId — consumers look up the full registered device info via
|
|
106
|
+
* `brokerManager.getRegisteredDevice(deviceId)`.
|
|
107
|
+
*
|
|
108
|
+
* Replaces the legacy `StreamRouterService.onDeviceRegistered` callback.
|
|
109
|
+
*/
|
|
110
|
+
EventCategory["DeviceStreamsRegistered"] = "device.streams-registered";
|
|
111
|
+
/**
|
|
112
|
+
* Device-level "fully provisioned" signal — the EXPORT trigger. Emitted once
|
|
113
|
+
* a device's persisted export-relevant shape (its `DeviceFeature` set) is
|
|
114
|
+
* established or changes, carrying `{deviceId, fingerprint, generation}`.
|
|
115
|
+
* Export adapters (Alexa / HAP) react to THIS instead of the chatty per-cap
|
|
116
|
+
* `DeviceBindingsChanged`, turning a boot's incomplete→complete trickle into
|
|
117
|
+
* one clean delta. `fingerprint` is `canonicalDeviceFingerprint(shape)`.
|
|
118
|
+
*
|
|
119
|
+
* Spec: docs/superpowers/specs/2026-06-01-alexa-hap-export-reconciler-design.md
|
|
120
|
+
*/
|
|
121
|
+
EventCategory["DeviceProvisioned"] = "device.provisioned";
|
|
122
|
+
/**
|
|
123
|
+
* Fires once when a device's initial feature-probe completes successfully
|
|
124
|
+
* (lastProbedAt 0→>0); exported shape is now stable. Telemetry (may be
|
|
125
|
+
* dropped) — consumers MUST also gate on the device record's `probed` flag.
|
|
126
|
+
*/
|
|
127
|
+
EventCategory["DeviceReady"] = "device.ready";
|
|
128
|
+
EventCategory["IntegrationEnabled"] = "integration.enabled";
|
|
129
|
+
EventCategory["IntegrationDisabled"] = "integration.disabled";
|
|
130
|
+
EventCategory["IntegrationDeleted"] = "integration.deleted";
|
|
131
|
+
/** Emitted when a broker connection's status flips (connected /
|
|
132
|
+
* disconnected / error). Carries `{ brokerId, status, error? }`. */
|
|
133
|
+
EventCategory["BrokerStatusChanged"] = "broker.status-changed";
|
|
134
|
+
/** Emitted for every subscription-matched message routed by a
|
|
135
|
+
* broker provider. Carries `{ brokerId, subscriptionId, key, payload }`.
|
|
136
|
+
* Consumers filter by `brokerId` + `subscriptionId` in the handler. */
|
|
137
|
+
EventCategory["BrokerMessage"] = "broker.message";
|
|
138
|
+
EventCategory["ProviderStarted"] = "provider.started";
|
|
139
|
+
EventCategory["ProviderStopped"] = "provider.stopped";
|
|
140
|
+
EventCategory["ProcessCrashed"] = "process.crashed";
|
|
141
|
+
EventCategory["ProcessRestartScheduled"] = "process.restart_scheduled";
|
|
142
|
+
EventCategory["ProcessRestarted"] = "process.restarted";
|
|
143
|
+
EventCategory["RecordingStarted"] = "recording.started";
|
|
144
|
+
EventCategory["RecordingStopped"] = "recording.stopped";
|
|
145
|
+
EventCategory["RecordingError"] = "recording.error";
|
|
146
|
+
EventCategory["RecordingHealthDegraded"] = "recording.health.degraded";
|
|
147
|
+
EventCategory["RecordingStorageCritical"] = "recording.storage.critical";
|
|
148
|
+
EventCategory["RecordingSegmentWritten"] = "recording.segment.written";
|
|
149
|
+
EventCategory["RecordingPolicyFallback"] = "recording.policy.fallback";
|
|
150
|
+
EventCategory["RecordingRetentionCompleted"] = "recording.retention.completed";
|
|
151
|
+
EventCategory["DetectionEvent"] = "detection.event";
|
|
152
|
+
EventCategory["SessionTrackNew"] = "session.track.new";
|
|
153
|
+
EventCategory["SessionTrackExpired"] = "session.track.expired";
|
|
154
|
+
EventCategory["BenchmarkProgress"] = "benchmark.progress";
|
|
155
|
+
EventCategory["PlatformProbePhase"] = "platform-probe.phase";
|
|
156
|
+
EventCategory["PipelineProgress"] = "pipeline.progress";
|
|
157
|
+
/** Per-frame execution trace emitted by the pipeline executor for live observability. */
|
|
158
|
+
EventCategory["PipelineTrace"] = "pipeline.trace";
|
|
159
|
+
/**
|
|
160
|
+
* Raw inference output emitted by `addon-pipeline-runner` after running the
|
|
161
|
+
* detection pipeline on a frame. Carries the `FrameResult` (with
|
|
162
|
+
* `detections[]`, `width`/`height`, timing debug) — never the frame
|
|
163
|
+
* buffer itself. Hub-side consumers (analysis pipeline, class filters,
|
|
164
|
+
* notifications) subscribe to this and re-emit `detection.result` after
|
|
165
|
+
* post-processing.
|
|
166
|
+
*/
|
|
167
|
+
EventCategory["PipelineInferenceResult"] = "pipeline.inference-result";
|
|
168
|
+
/**
|
|
169
|
+
* Camera lifecycle event emitted by `addon-pipeline-orchestrator` when it
|
|
170
|
+
* assigns or unassigns a camera to/from an agent. Carries no frame data;
|
|
171
|
+
* pure observability for UI dashboards and metrics consumers.
|
|
172
|
+
*/
|
|
173
|
+
EventCategory["PipelineCameraAssigned"] = "pipeline.camera-assigned";
|
|
174
|
+
EventCategory["PipelineCameraUnassigned"] = "pipeline.camera-unassigned";
|
|
175
|
+
/**
|
|
176
|
+
* Per-camera pipeline config was mutated by the orchestrator
|
|
177
|
+
* (3-level settings change via `setAgentAddonDefaults` /
|
|
178
|
+
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
179
|
+
* pipeline-scoped `applyDeviceSettingsPatch`). Orchestrator
|
|
180
|
+
* subscribes to its own emission to hot-reload the assigned runner
|
|
181
|
+
* via `attachCamera` so the next frame executes against the new
|
|
182
|
+
* engine/steps without waiting for a rebalance or the next
|
|
183
|
+
* `DeviceStreamsRegistered` cycle.
|
|
184
|
+
*/
|
|
185
|
+
EventCategory["PipelineCameraUpdated"] = "pipeline.camera-updated";
|
|
186
|
+
/**
|
|
187
|
+
* The cluster camera-source OWNER changed (`clusterRoles.ingestNode`).
|
|
188
|
+
* Emitted by addon-pipeline-orchestrator whenever it (re)derives node
|
|
189
|
+
* capabilities — at boot, on agent online/offline, and on an ingest-node
|
|
190
|
+
* flip. Carries the resolved `ownerNodeId`. The stream-broker consumes it to
|
|
191
|
+
* keep its ingest-owner-gate decision current WITHOUT a per-`ensureBroker`
|
|
192
|
+
* cross-process `getIngestOwner` query (push the authority's decision instead
|
|
193
|
+
* of polling it on the hot path). Idempotent state — re-emitted on every
|
|
194
|
+
* topology change, so a dropped event self-heals on the next one (plus the
|
|
195
|
+
* broker's long backstop reconcile query).
|
|
196
|
+
*/
|
|
197
|
+
EventCategory["PipelineIngestOwnerChanged"] = "pipeline.ingest-owner-changed";
|
|
198
|
+
/**
|
|
199
|
+
* Periodic snapshot of per-node pipeline-runner load
|
|
200
|
+
* (`RunnerLocalLoad`). Emitted ~1Hz by every runner so UI dashboards
|
|
201
|
+
* subscribe instead of polling `pipelineRunner.getLocalLoad`.
|
|
202
|
+
* `nodeId` carried in the payload + on `event.source.nodeId`.
|
|
203
|
+
*/
|
|
204
|
+
EventCategory["PipelineRunnerLoadSnapshot"] = "pipeline.runner-load-snapshot";
|
|
205
|
+
/**
|
|
206
|
+
* Periodic snapshot of per-camera pipeline metrics (`CameraMetrics`
|
|
207
|
+
* + `deviceId` + `nodeId`). Emitted ~1Hz by every runner for each
|
|
208
|
+
* attached camera. UI subscribes to drive overlay phase / fps /
|
|
209
|
+
* inference time without polling `getCameraMetrics`.
|
|
210
|
+
*/
|
|
211
|
+
EventCategory["PipelineCameraMetricsSnapshot"] = "pipeline.camera-metrics-snapshot";
|
|
212
|
+
/**
|
|
213
|
+
* Periodic snapshot of stream-broker per-broker statistics (input
|
|
214
|
+
* fps, decoded fps, bitrate, codec). Emitted ~1Hz by every
|
|
215
|
+
* stream-broker process for each active broker so the UI can drive
|
|
216
|
+
* the Stream / Cluster dashboards without polling
|
|
217
|
+
* `streamBroker.listAllProfileSlots` and friends.
|
|
218
|
+
*/
|
|
219
|
+
EventCategory["StreamBrokerMetricsSnapshot"] = "stream-broker.metrics-snapshot";
|
|
220
|
+
/**
|
|
221
|
+
* Cap event fired by `stream-broker` when a profile slot enters
|
|
222
|
+
* "demanded" state — a cam stream has been assigned and at least one
|
|
223
|
+
* consumer (RTSP restream, decoded subscriber, WebRTC session, …) is
|
|
224
|
+
* present. Camera-provider addons (Reolink Baichuan push, …)
|
|
225
|
+
* subscribe to this category to start their underlying transport
|
|
226
|
+
* lazily. Payload: `{ deviceId, camStreamId, profile }`.
|
|
227
|
+
*/
|
|
228
|
+
EventCategory["StreamBrokerOnCamStreamDemand"] = "stream-broker.onCamStreamDemand";
|
|
229
|
+
/**
|
|
230
|
+
* Cap event fired by `stream-broker` when the last consumer leaves a
|
|
231
|
+
* previously-demanded cam stream. Providers tear down their
|
|
232
|
+
* underlying transport on receipt. Payload: `{ deviceId, camStreamId }`.
|
|
233
|
+
*/
|
|
234
|
+
EventCategory["StreamBrokerOnCamStreamIdle"] = "stream-broker.onCamStreamIdle";
|
|
235
|
+
/**
|
|
236
|
+
* Cap event fired by `stream-broker` when a broker fails to dial a
|
|
237
|
+
* managed-loopback source (today: `pull-rfc4571`) and the publisher
|
|
238
|
+
* needs to refresh the cached URL. The lib's TCP server idle-tears-down
|
|
239
|
+
* on its own schedule, so a re-publish with a fresh `host:port` is the
|
|
240
|
+
* only way to keep the broker dialable. Camera providers (Reolink
|
|
241
|
+
* Baichuan native, …) subscribe and respond by re-running their publish
|
|
242
|
+
* pipeline.
|
|
243
|
+
* Payload: `{ deviceId, camStreamId, brokerId }`.
|
|
244
|
+
*/
|
|
245
|
+
EventCategory["StreamBrokerOnRequestStreamSourceRefresh"] = "stream-broker.onRequestStreamSourceRefresh";
|
|
246
|
+
/**
|
|
247
|
+
* A camera provider changed a device's stream parameters (codec /
|
|
248
|
+
* resolution / bitrate / a stream added or removed). A LOW-LATENCY NUDGE
|
|
249
|
+
* for the stream-broker's catalog reconcile: it carries NO authoritative
|
|
250
|
+
* data — the broker re-PULLS that device's `stream-catalog` cap on receipt
|
|
251
|
+
* (the 30s reconcile poll is the backstop if this nudge is dropped). Emitted
|
|
252
|
+
* by providers from `stream-params.setProfile`. Payload: `{ deviceId }`.
|
|
253
|
+
*/
|
|
254
|
+
EventCategory["StreamParamsChanged"] = "stream-params.changed";
|
|
255
|
+
/**
|
|
256
|
+
* Generic per-device runtime-state change. Fired by `device-manager`
|
|
257
|
+
* whenever a persisted slice in any cap's `runtimeState` shape
|
|
258
|
+
* mutates. Payload: `{deviceId, capName, slice}`. Subscribers are
|
|
259
|
+
* the `deviceState` cap router (cross-process listeners) and the
|
|
260
|
+
* deviceProxy reactive bindings (`device.state.<capName>.value`).
|
|
261
|
+
* Cap-specific events (`battery.onStatusChanged`, …) still fire
|
|
262
|
+
* — they're authoritative for callers that want a typed payload
|
|
263
|
+
* without filtering on `capName`.
|
|
264
|
+
*/
|
|
265
|
+
EventCategory["DeviceStateChanged"] = "device.state-changed";
|
|
266
|
+
/**
|
|
267
|
+
* Cap event fired by every device that registers the `battery`
|
|
268
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
269
|
+
* `{ deviceId, status: BatteryStatus }`. Subscribers (alert center,
|
|
270
|
+
* snapshot wrapper, UI) react to charge/sleep transitions without
|
|
271
|
+
* polling `batteryCapability.getStatus`.
|
|
272
|
+
*/
|
|
273
|
+
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
274
|
+
/**
|
|
275
|
+
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
276
|
+
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
277
|
+
* the camera's first dialed-back RTP packet. The stream-broker
|
|
278
|
+
* manager subscribes to flip the per-broker placeholder reason to
|
|
279
|
+
* `'waking'` so viewers see a labelled "WAKING UP" tile instead of
|
|
280
|
+
* the generic `'reconnecting'` frame. Carries `{ deviceId }`. The
|
|
281
|
+
* complementary "wake complete" signal is the existing
|
|
282
|
+
* `BatteryOnStatusChanged { sleeping: false }` event.
|
|
283
|
+
*/
|
|
284
|
+
EventCategory["BatteryOnWakeStarted"] = "battery.onWakeStarted";
|
|
285
|
+
/**
|
|
286
|
+
* Cap event fired by every device that registers the `doorbell`
|
|
287
|
+
* capability. Mirrors `doorbellCapability.events.onPressed`. Carries
|
|
288
|
+
* `{ deviceId, timestamp }`. Operators consuming the UI subscribe
|
|
289
|
+
* here to render transient ring toasts and a "Recent presses" row
|
|
290
|
+
* on the device detail page.
|
|
291
|
+
*/
|
|
292
|
+
EventCategory["DoorbellOnPressed"] = "doorbell.onPressed";
|
|
293
|
+
/**
|
|
294
|
+
* Cap event fired by every device that registers the `event-emitter`
|
|
295
|
+
* capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
|
|
296
|
+
* `{ deviceId, eventType, data, timestamp, seq }` — the device's EXACT
|
|
297
|
+
* declared event verbatim (NO normalization). Subscribers (UI event
|
|
298
|
+
* stream, advanced-notifier rules) react to fired events without
|
|
299
|
+
* holding a cap reference.
|
|
300
|
+
*/
|
|
301
|
+
EventCategory["EventEmitted"] = "event-emitter.event";
|
|
302
|
+
/**
|
|
303
|
+
* Periodic snapshot of the per-node detection-pipeline engine
|
|
304
|
+
* registry (loaded engines, models resident, in-use cameras, idle
|
|
305
|
+
* TTL). Emitted ~0.2Hz (every 5 s) by every detection-pipeline
|
|
306
|
+
* process. The Engines tab subscribes to drive its inventory view
|
|
307
|
+
* without polling `pipelineExecutor.listLoadedEngines`.
|
|
308
|
+
*/
|
|
309
|
+
EventCategory["PipelineEngineMetricsSnapshot"] = "pipeline.engine-metrics-snapshot";
|
|
310
|
+
/**
|
|
311
|
+
* Per-node detection-engine runtime-provisioning transition. Emitted by
|
|
312
|
+
* the detection-pipeline provider on every state change of its lazy
|
|
313
|
+
* engine-provisioning machine (idle → installing → verifying → ready,
|
|
314
|
+
* or → failed with a `nextRetryAt`). Payload is the
|
|
315
|
+
* `EngineProvisioningState` snapshot; `event.source.nodeId` carries the
|
|
316
|
+
* node. The Pipeline page subscribes to drive a live "installing
|
|
317
|
+
* OpenVINO… / ready" indicator per node without polling
|
|
318
|
+
* `pipelineExecutor.getEngineProvisioning`. Telemetry-grade (D8): the UI
|
|
319
|
+
* also reads the cap snapshot on mount / reconnect. Phase 2.
|
|
320
|
+
*/
|
|
321
|
+
EventCategory["PipelineEngineProvisioning"] = "pipeline.engine-provisioning";
|
|
322
|
+
/**
|
|
323
|
+
* Cluster topology snapshot. Carries the same payload returned by
|
|
324
|
+
* `nodes.topology` (every reachable node + addons + processes).
|
|
325
|
+
* Emitted by the hub on any agent / addon lifecycle change
|
|
326
|
+
* (debounced) plus a periodic safety net. Replaces UI polling on
|
|
327
|
+
* `nodes.topology` — admin-ui dashboards subscribe to drive the
|
|
328
|
+
* cluster view directly from the event payload.
|
|
329
|
+
*/
|
|
330
|
+
EventCategory["ClusterTopologySnapshot"] = "cluster.topology-snapshot";
|
|
331
|
+
/**
|
|
332
|
+
* Periodic per-node system metrics snapshot (CPU / memory / GPU /
|
|
333
|
+
* disk / network). Emitted ~0.2 Hz by the metrics-provider addon
|
|
334
|
+
* for each node. Drives the dashboard SystemStatus / ProcessResources
|
|
335
|
+
* widgets without polling `metricsProvider.getCurrent`.
|
|
336
|
+
*/
|
|
337
|
+
EventCategory["MetricsNodeResourcesSnapshot"] = "metrics.node-resources-snapshot";
|
|
338
|
+
/**
|
|
339
|
+
* Periodic per-node process-tree snapshot (camstack-related pids
|
|
340
|
+
* with ghost / managed / root classification). Emitted ~0.2 Hz by
|
|
341
|
+
* the metrics-provider addon. Drives the Cluster → Processes tab
|
|
342
|
+
* without polling `metricsProvider.listNodeProcesses`.
|
|
343
|
+
*/
|
|
344
|
+
EventCategory["MetricsNodeProcessesSnapshot"] = "metrics.node-processes-snapshot";
|
|
345
|
+
/**
|
|
346
|
+
* Capability binding change event emitted by `addon-pipeline-orchestrator`
|
|
347
|
+
* when a user changes which addon implements a cap on a node. Subscribed
|
|
348
|
+
* by every kernel process to update its local `preferredProviderRegistry`
|
|
349
|
+
* so future capability lookups respect the new binding.
|
|
350
|
+
*/
|
|
351
|
+
/**
|
|
352
|
+
* A capability binding was changed for a node — addon X now provides
|
|
353
|
+
* capability `cap` on node `nodeId`. Lives under the generic
|
|
354
|
+
* `capability.*` namespace because capability bindings are a kernel-
|
|
355
|
+
* level concept used by many addons, not strictly pipeline-scoped.
|
|
356
|
+
*/
|
|
357
|
+
EventCategory["CapabilityBindingChanged"] = "capability.binding-changed";
|
|
358
|
+
EventCategory["ModelDownloadProgress"] = "model.download.progress";
|
|
359
|
+
EventCategory["AgentRegistered"] = "agent.registered";
|
|
360
|
+
EventCategory["AgentUnregistered"] = "agent.unregistered";
|
|
361
|
+
EventCategory["AgentOnline"] = "agent.online";
|
|
362
|
+
EventCategory["AgentOffline"] = "agent.offline";
|
|
363
|
+
/** Forked worker process (e.g. hub/pipeline) connected to the broker. */
|
|
364
|
+
EventCategory["WorkerOnline"] = "worker.online";
|
|
365
|
+
/** Forked worker process disconnected from the broker. */
|
|
366
|
+
EventCategory["WorkerOffline"] = "worker.offline";
|
|
367
|
+
EventCategory["AgentTaskDispatched"] = "agent.task.dispatched";
|
|
368
|
+
EventCategory["AgentTaskAssigned"] = "agent.task.assigned";
|
|
369
|
+
EventCategory["AgentTrpcConnected"] = "agent.trpc.connected";
|
|
370
|
+
EventCategory["AgentWsConnected"] = "agent.ws.connected";
|
|
371
|
+
EventCategory["AgentWsDisconnected"] = "agent.ws.disconnected";
|
|
372
|
+
EventCategory["AgentBackupActivated"] = "agent.backup.activated";
|
|
373
|
+
EventCategory["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
|
|
374
|
+
/**
|
|
375
|
+
* Per-agent hwaccel preference changed (user override set, cleared, or
|
|
376
|
+
* re-probed). Observability event — decoders pull the current pref at
|
|
377
|
+
* `createSession`, so running sessions keep their current backend until
|
|
378
|
+
* they rotate naturally (camera add/remove, stream restart). Future
|
|
379
|
+
* work can wire a listener in stream-broker that force-rotates live
|
|
380
|
+
* sessions; for now this event powers logs + admin-UI toast feedback.
|
|
381
|
+
*/
|
|
382
|
+
EventCategory["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
|
|
383
|
+
EventCategory["MotionAnalysis"] = "detection.motion-analysis";
|
|
384
|
+
/** All raw motion zones from CCL before minArea filter — for UI debug overlay. */
|
|
385
|
+
EventCategory["MotionZonesRaw"] = "detection.motion-zones-raw";
|
|
386
|
+
/**
|
|
387
|
+
* Per-camera motion phase transition (`watching ↔ active`) emitted
|
|
388
|
+
* by the runner. Mirrors the `motion.onMotionChanged` cap event
|
|
389
|
+
* surface — payload `MotionOnMotionChangedPayload` carries
|
|
390
|
+
* `{deviceId, detected, timestamp, source, regions?}`. Subscribers
|
|
391
|
+
* include addons that need to react to motion state without
|
|
392
|
+
* polling the runtime-state mirror.
|
|
393
|
+
*/
|
|
394
|
+
EventCategory["MotionOnMotionChanged"] = "motion.on-motion-changed";
|
|
395
|
+
EventCategory["DetectionResult"] = "detection.result";
|
|
396
|
+
EventCategory["DetectionRaw"] = "detection.raw";
|
|
397
|
+
EventCategory["DetectionCameraNative"] = "detection.camera-native";
|
|
398
|
+
/**
|
|
399
|
+
* Canonical per-chunk live audio pipeline output. Payload is
|
|
400
|
+
* `PipelineAudioInferenceResultPayload` carrying a full `AudioResult`
|
|
401
|
+
* (level + detections + debug). Lives on the pipeline.* namespace
|
|
402
|
+
* alongside `pipeline.inference-result` (video) for symmetry.
|
|
403
|
+
*/
|
|
404
|
+
EventCategory["PipelineAudioInferenceResult"] = "pipeline.audio-inference-result";
|
|
405
|
+
EventCategory["DetectionPhaseTransition"] = "detection.phase-transition";
|
|
406
|
+
EventCategory["ProviderMotion"] = "provider.motion";
|
|
407
|
+
EventCategory["ProviderDetection"] = "provider.detection";
|
|
408
|
+
EventCategory["EnrichmentEmbeddingStored"] = "enrichment.embedding.stored";
|
|
409
|
+
EventCategory["EnrichmentSceneStateChanged"] = "enrichment.scene.state-changed";
|
|
410
|
+
EventCategory["EnrichmentActivitySummary"] = "enrichment.activity.summary";
|
|
411
|
+
/**
|
|
412
|
+
* Unified track-lifecycle event: ONE category carrying `phase:
|
|
413
|
+
* 'start' | 'update' | 'end'` with a rich, typed
|
|
414
|
+
* `PipelineAnalyticsTrackLifecyclePayload`. Supersedes the thin
|
|
415
|
+
* `PipelineAnalyticsTrackStarted` / `PipelineAnalyticsTrackEnded`
|
|
416
|
+
* pair — a consumer subscribes once and branches on `phase`.
|
|
417
|
+
*/
|
|
418
|
+
EventCategory["PipelineAnalyticsTrackLifecycle"] = "pipeline-analytics.track-lifecycle";
|
|
419
|
+
/**
|
|
420
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
421
|
+
* (`phase:'start'`). Kept as a soft alias — no known subscribers.
|
|
422
|
+
*/
|
|
423
|
+
EventCategory["PipelineAnalyticsTrackStarted"] = "pipeline-analytics.track-started";
|
|
424
|
+
/**
|
|
425
|
+
* @deprecated Superseded by {@link PipelineAnalyticsTrackLifecycle}
|
|
426
|
+
* (`phase:'end'`). Kept as a soft alias — no known subscribers.
|
|
427
|
+
*/
|
|
428
|
+
EventCategory["PipelineAnalyticsTrackEnded"] = "pipeline-analytics.track-ended";
|
|
429
|
+
EventCategory["PipelineAnalyticsDetectionEvent"] = "pipeline-analytics.detection-event";
|
|
430
|
+
EventCategory["PipelineAnalyticsFrameTracked"] = "pipeline-analytics.frame-tracked";
|
|
431
|
+
/**
|
|
432
|
+
* Fired by `addon-post-analysis` when a parked (stationary) object appears
|
|
433
|
+
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
434
|
+
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
435
|
+
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
436
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
437
|
+
*/
|
|
438
|
+
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
439
|
+
/**
|
|
440
|
+
* Fired by `addon-post-analysis` whenever a gallery face row changes:
|
|
441
|
+
* `kind:'buffered'` a new detected face was persisted, `'assigned'` /
|
|
442
|
+
* `'unassigned'` its identity link changed, `'deleted'` the row was
|
|
443
|
+
* removed. Telemetry semantics (D8): a lost event only delays a refresh,
|
|
444
|
+
* never a correctness issue. Payload `PipelineAnalyticsFaceGalleryChangedPayload`.
|
|
445
|
+
*/
|
|
446
|
+
EventCategory["PipelineAnalyticsFaceGalleryChanged"] = "pipeline-analytics.face-gallery-changed";
|
|
447
|
+
/**
|
|
448
|
+
* Fired by `addon-post-analysis` whenever a gallery plate row changes:
|
|
449
|
+
* `kind:'buffered'` a new read was persisted (`PlateRecognizer.onTrackEnd`),
|
|
450
|
+
* `'assigned'` / `'unassigned'` its vehicle link changed
|
|
451
|
+
* (`PlateGalleryProvider`), `'deleted'` the row was removed. Telemetry
|
|
452
|
+
* semantics (D8): a lost event only delays a refresh, never a correctness
|
|
453
|
+
* issue. Payload `PipelineAnalyticsPlateGalleryChangedPayload`.
|
|
454
|
+
*/
|
|
455
|
+
EventCategory["PipelineAnalyticsPlateGalleryChanged"] = "pipeline-analytics.plate-gallery-changed";
|
|
456
|
+
EventCategory["FrigateLiveEvent"] = "frigate.live-event";
|
|
457
|
+
EventCategory["CameraStreamsProfileSlotsChanged"] = "camera-streams.onProfileSlotsChanged";
|
|
458
|
+
/**
|
|
459
|
+
* Stream-broker health watchdog. Per-broker (deviceId/profile) emission.
|
|
460
|
+
* `stream.offline` fires after STREAM_STALE_TIMEOUT_MS without an encoded
|
|
461
|
+
* packet on an active broker. `stream.online` fires on first packet
|
|
462
|
+
* after a stale gap (or on initial first packet). Payload includes
|
|
463
|
+
* the assigned camStreamId as `profileKey`.
|
|
464
|
+
*/
|
|
465
|
+
EventCategory["StreamOnline"] = "stream.online";
|
|
466
|
+
EventCategory["StreamOffline"] = "stream.offline";
|
|
467
|
+
EventCategory["NetworkTunnelStarted"] = "network.tunnel.started";
|
|
468
|
+
EventCategory["NetworkTunnelStopped"] = "network.tunnel.stopped";
|
|
469
|
+
/** Fired by the `local-network` cap when the host's interface set
|
|
470
|
+
* changes (new IP from DHCP, VPN connect, docker bridge added). */
|
|
471
|
+
EventCategory["LocalNetworkChanged"] = "network.local.changed";
|
|
472
|
+
/**
|
|
473
|
+
* Fired by a `mesh-network` provider (Tailscale, …) when its
|
|
474
|
+
* mesh-reachable host changes (join / leave / MagicDNS or 100.x IP
|
|
475
|
+
* change). Lets `local-network` fold the mesh endpoint into its
|
|
476
|
+
* connection-endpoint list without a cross-package import. Payload
|
|
477
|
+
* carries the preferred host (`host: ''` = no longer reachable),
|
|
478
|
+
* the hub port, and the scheme. Telemetry-grade (D8): consumers
|
|
479
|
+
* pull-reconcile from the provider's `getStatus` on reconnect. */
|
|
480
|
+
EventCategory["MeshNetworkChanged"] = "network.mesh.changed";
|
|
481
|
+
EventCategory["BackupCompleted"] = "backup.completed";
|
|
482
|
+
EventCategory["BackupRestored"] = "backup.restored";
|
|
483
|
+
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
484
|
+
EventCategory["NotificationFailed"] = "notification.failed";
|
|
485
|
+
EventCategory["DeviceUpdated"] = "device.updated";
|
|
486
|
+
/**
|
|
487
|
+
* Transport-level connectivity. Emitted by the device driver when
|
|
488
|
+
* the underlying control socket actually connects / disconnects
|
|
489
|
+
* (Baichuan TCP, ONVIF probe response, RTSP DESCRIBE, …) — NOT for
|
|
490
|
+
* power-state transitions on a battery camera. For battery wake /
|
|
491
|
+
* doze cycles see `DeviceAwake` / `DeviceSleeping`.
|
|
492
|
+
*/
|
|
493
|
+
EventCategory["DeviceOnline"] = "device.online";
|
|
494
|
+
/**
|
|
495
|
+
* Stream-broker watchdog — emitted when no encoded packet has been
|
|
496
|
+
* received for STREAM_STALE_TIMEOUT_MS on an active broker (rtsp or
|
|
497
|
+
* push). Paired with DeviceOnline which fires on first packet after
|
|
498
|
+
* a stale gap. Payload: DeviceStreamHealthPayload.
|
|
499
|
+
*/
|
|
500
|
+
EventCategory["DeviceOffline"] = "device.offline";
|
|
501
|
+
/**
|
|
502
|
+
* Battery cam woke up — physical power-state transition reported
|
|
503
|
+
* by the device firmware. Distinct from `DeviceOnline` so a UI panel
|
|
504
|
+
* watching power state doesn't flap on every UDP socket reconnect.
|
|
505
|
+
*/
|
|
506
|
+
EventCategory["DeviceAwake"] = "device.awake";
|
|
507
|
+
/**
|
|
508
|
+
* Battery cam went to sleep. See `DeviceAwake`.
|
|
509
|
+
*/
|
|
510
|
+
EventCategory["DeviceSleeping"] = "device.sleeping";
|
|
511
|
+
EventCategory["RetentionCleanup"] = "retention.cleanup";
|
|
512
|
+
/**
|
|
513
|
+
* Legacy bulk-update progress snapshot (payload `BulkUpdateState`). No longer
|
|
514
|
+
* emitted — F3 removed the coordinator that produced it; "Update all" now runs
|
|
515
|
+
* as one lifecycle engine job (`AddonsJobProgress`/`AddonsJobLog`). Retained
|
|
516
|
+
* (with `BulkUpdateState`) only to avoid regenerating the event maps; removed
|
|
517
|
+
* in F4 once live bulk progress is re-implemented over the engine events.
|
|
518
|
+
*/
|
|
519
|
+
EventCategory["AddonsBulkUpdateProgress"] = "addons.bulk-update-progress";
|
|
520
|
+
EventCategory["AddonsJobProgress"] = "addons.job-progress";
|
|
521
|
+
EventCategory["AddonsJobLog"] = "addons.job-log";
|
|
522
|
+
/**
|
|
523
|
+
* A container's child visibility toggled (hidden/shown). Emitted by the
|
|
524
|
+
* `accessories` cap when a child device is hidden or revealed.
|
|
525
|
+
* Payload: `{ deviceId, childDeviceId, hidden }`.
|
|
526
|
+
*/
|
|
527
|
+
EventCategory["AccessoriesChildVisibilityChanged"] = "accessories.onChildVisibilityChanged";
|
|
528
|
+
/**
|
|
529
|
+
* A container's child set changed (children added/removed/reordered).
|
|
530
|
+
* Payload: `{ deviceId, childDeviceIds, hiddenChildIds }`.
|
|
531
|
+
*/
|
|
532
|
+
EventCategory["AccessoriesChanged"] = "accessories.onAccessoriesChanged";
|
|
533
|
+
/**
|
|
534
|
+
* Progress update from a running model conversion job.
|
|
535
|
+
* Payload: `{ kind: 'model-convert', phase, sessionId?, pct?, detail? }`.
|
|
536
|
+
* Emitted by `addon-model-studio` on the converting node.
|
|
537
|
+
*/
|
|
538
|
+
EventCategory["ModelConvertProgress"] = "model-convert.progress";
|
|
539
|
+
return EventCategory;
|
|
540
|
+
}({});
|
|
541
|
+
//#endregion
|
|
542
|
+
Object.defineProperty(exports, "EventCategory", {
|
|
543
|
+
enumerable: true,
|
|
544
|
+
get: function() {
|
|
545
|
+
return EventCategory;
|
|
546
|
+
}
|
|
547
|
+
});
|