@camstack/types 1.2.259 → 1.2.261
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/base-addon.d.ts +9 -1
- package/dist/addon.js +15 -7
- package/dist/addon.mjs +15 -7
- package/dist/capabilities/camera-streams.cap.d.ts +5 -5
- package/dist/capabilities/capability-definition.d.ts +9 -0
- package/dist/capabilities/custom-model-registry.cap.d.ts +18 -12
- package/dist/capabilities/decoder.cap.d.ts +12 -12
- package/dist/capabilities/device-extension.cap.d.ts +370 -0
- package/dist/capabilities/device-manager.cap.d.ts +45 -5
- package/dist/capabilities/doorbell.cap.d.ts +41 -0
- package/dist/capabilities/embedding-encoder.cap.d.ts +175 -0
- package/dist/capabilities/index.d.ts +17 -14
- package/dist/capabilities/llm-runtime.cap.d.ts +4 -4
- package/dist/capabilities/llm-shared.d.ts +6 -6
- package/dist/capabilities/llm.cap.d.ts +6 -6
- package/dist/capabilities/load-contribution.cap.d.ts +2 -2
- package/dist/capabilities/model-convert.cap.d.ts +9 -6
- package/dist/capabilities/model-distributor.cap.d.ts +18 -12
- package/dist/capabilities/motion-detection.cap.d.ts +4 -4
- package/dist/capabilities/notification-rules.cap.d.ts +603 -31
- package/dist/capabilities/osd-manager.cap.d.ts +7 -7
- package/dist/capabilities/pipeline-analytics.cap.d.ts +130 -129
- package/dist/capabilities/pipeline-executor.cap.d.ts +78 -120
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +78 -65
- package/dist/capabilities/pipeline-runner.cap.d.ts +30 -6
- package/dist/capabilities/platform-probe.cap.d.ts +4 -13
- package/dist/capabilities/recording-export.cap.d.ts +7 -7
- package/dist/capabilities/schemas/detection-shared.d.ts +4 -4
- package/dist/capabilities/schemas/streaming-shared.d.ts +8 -8
- package/dist/capabilities/stream-broker.cap.d.ts +9 -9
- package/dist/capabilities/system.cap.d.ts +2 -2
- package/dist/capabilities/vacuum-control.cap.d.ts +13 -13
- package/dist/capabilities/vector-store.cap.d.ts +14 -0
- package/dist/capabilities/videoclips.cap.d.ts +5 -5
- package/dist/capabilities/webrtc-session.cap.d.ts +2 -2
- package/dist/device-extension/index.d.ts +3 -0
- package/dist/device-extension/slot-descriptor.d.ts +62 -0
- package/dist/device-extension/slot-provider.d.ts +68 -0
- package/dist/generated/addon-api.d.ts +59 -9
- package/dist/generated/cap-input-defaults.d.ts +1 -1
- package/dist/generated/capability-router-map.d.ts +5 -2
- package/dist/generated/collection-array-methods.d.ts +1 -1
- package/dist/generated/device-proxy.d.ts +7 -7
- package/dist/generated/device-scoped-caps.d.ts +1 -1
- package/dist/generated/extension-slots.d.ts +39 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +4 -2
- package/dist/index.d.ts +8 -3
- package/dist/index.js +3125 -1792
- package/dist/index.mjs +3049 -1788
- package/dist/interfaces/addon.d.ts +41 -0
- package/dist/interfaces/event-bus.d.ts +11 -1
- package/dist/interfaces/pipeline-executor-capability.d.ts +15 -6
- package/dist/interfaces/platform.d.ts +2 -2
- package/dist/interfaces/stream-broker.d.ts +2 -2
- package/dist/node.d.ts +1 -0
- package/dist/node.js +73 -7
- package/dist/node.mjs +73 -8
- package/dist/notification/system-event-summary.d.ts +83 -0
- package/dist/notification/template-vars.d.ts +15 -0
- package/dist/pipeline/cluster-model-scope.d.ts +59 -3
- package/dist/{sleep-DU7mu4wb.mjs → sleep-BXv0ZcRa.mjs} +49 -33
- package/dist/{sleep-DtomDrRW.js → sleep-QxyLiUId.js} +54 -32
- package/dist/storage/atomic-write.d.ts +25 -0
- package/dist/types/clip-model.d.ts +64 -0
- package/dist/types/detection.d.ts +9 -0
- package/dist/types/models.d.ts +18 -19
- package/dist/types/pipeline-step.d.ts +9 -1
- package/dist/types/pipeline.d.ts +2 -1
- package/dist/utils/background-run-registry.d.ts +69 -0
- package/dist/utils/runtime-mapping.d.ts +9 -54
- package/package.json +1 -1
|
@@ -490,8 +490,8 @@ declare const LoggingSettingsPatchSchema: z.ZodObject<{
|
|
|
490
490
|
declare const ReportedLoadContributionSchema: z.ZodObject<{
|
|
491
491
|
role: z.ZodEnum<{
|
|
492
492
|
recording: "recording";
|
|
493
|
-
streaming: "streaming";
|
|
494
493
|
detection: "detection";
|
|
494
|
+
streaming: "streaming";
|
|
495
495
|
decode: "decode";
|
|
496
496
|
transcode: "transcode";
|
|
497
497
|
}>;
|
|
@@ -811,8 +811,8 @@ export declare const systemCapability: {
|
|
|
811
811
|
readonly getLoadContributions: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodReadonly<z.ZodArray<z.ZodObject<{
|
|
812
812
|
role: z.ZodEnum<{
|
|
813
813
|
recording: "recording";
|
|
814
|
-
streaming: "streaming";
|
|
815
814
|
detection: "detection";
|
|
815
|
+
streaming: "streaming";
|
|
816
816
|
decode: "decode";
|
|
817
817
|
transcode: "transcode";
|
|
818
818
|
}>;
|
|
@@ -46,9 +46,9 @@ export type VacuumState = z.infer<typeof VacuumStateSchema>;
|
|
|
46
46
|
export declare const TankStatusSchema: z.ZodObject<{
|
|
47
47
|
level: z.ZodNullable<z.ZodNumber>;
|
|
48
48
|
status: z.ZodNullable<z.ZodEnum<{
|
|
49
|
+
full: "full";
|
|
49
50
|
low: "low";
|
|
50
51
|
ok: "ok";
|
|
51
|
-
full: "full";
|
|
52
52
|
}>>;
|
|
53
53
|
}, z.core.$strip>;
|
|
54
54
|
export type TankStatus = z.infer<typeof TankStatusSchema>;
|
|
@@ -68,33 +68,33 @@ export declare const VacuumControlStatusSchema: z.ZodObject<{
|
|
|
68
68
|
cleanWater: z.ZodNullable<z.ZodObject<{
|
|
69
69
|
level: z.ZodNullable<z.ZodNumber>;
|
|
70
70
|
status: z.ZodNullable<z.ZodEnum<{
|
|
71
|
+
full: "full";
|
|
71
72
|
low: "low";
|
|
72
73
|
ok: "ok";
|
|
73
|
-
full: "full";
|
|
74
74
|
}>>;
|
|
75
75
|
}, z.core.$strip>>;
|
|
76
76
|
dirtyWater: z.ZodNullable<z.ZodObject<{
|
|
77
77
|
level: z.ZodNullable<z.ZodNumber>;
|
|
78
78
|
status: z.ZodNullable<z.ZodEnum<{
|
|
79
|
+
full: "full";
|
|
79
80
|
low: "low";
|
|
80
81
|
ok: "ok";
|
|
81
|
-
full: "full";
|
|
82
82
|
}>>;
|
|
83
83
|
}, z.core.$strip>>;
|
|
84
84
|
detergent: z.ZodNullable<z.ZodObject<{
|
|
85
85
|
level: z.ZodNullable<z.ZodNumber>;
|
|
86
86
|
status: z.ZodNullable<z.ZodEnum<{
|
|
87
|
+
full: "full";
|
|
87
88
|
low: "low";
|
|
88
89
|
ok: "ok";
|
|
89
|
-
full: "full";
|
|
90
90
|
}>>;
|
|
91
91
|
}, z.core.$strip>>;
|
|
92
92
|
dustBin: z.ZodNullable<z.ZodObject<{
|
|
93
93
|
level: z.ZodNullable<z.ZodNumber>;
|
|
94
94
|
status: z.ZodNullable<z.ZodEnum<{
|
|
95
|
+
full: "full";
|
|
95
96
|
low: "low";
|
|
96
97
|
ok: "ok";
|
|
97
|
-
full: "full";
|
|
98
98
|
}>>;
|
|
99
99
|
}, z.core.$strip>>;
|
|
100
100
|
progressPercent: z.ZodNullable<z.ZodNumber>;
|
|
@@ -147,33 +147,33 @@ export declare const vacuumControlCapability: {
|
|
|
147
147
|
cleanWater: z.ZodNullable<z.ZodObject<{
|
|
148
148
|
level: z.ZodNullable<z.ZodNumber>;
|
|
149
149
|
status: z.ZodNullable<z.ZodEnum<{
|
|
150
|
+
full: "full";
|
|
150
151
|
low: "low";
|
|
151
152
|
ok: "ok";
|
|
152
|
-
full: "full";
|
|
153
153
|
}>>;
|
|
154
154
|
}, z.core.$strip>>;
|
|
155
155
|
dirtyWater: z.ZodNullable<z.ZodObject<{
|
|
156
156
|
level: z.ZodNullable<z.ZodNumber>;
|
|
157
157
|
status: z.ZodNullable<z.ZodEnum<{
|
|
158
|
+
full: "full";
|
|
158
159
|
low: "low";
|
|
159
160
|
ok: "ok";
|
|
160
|
-
full: "full";
|
|
161
161
|
}>>;
|
|
162
162
|
}, z.core.$strip>>;
|
|
163
163
|
detergent: z.ZodNullable<z.ZodObject<{
|
|
164
164
|
level: z.ZodNullable<z.ZodNumber>;
|
|
165
165
|
status: z.ZodNullable<z.ZodEnum<{
|
|
166
|
+
full: "full";
|
|
166
167
|
low: "low";
|
|
167
168
|
ok: "ok";
|
|
168
|
-
full: "full";
|
|
169
169
|
}>>;
|
|
170
170
|
}, z.core.$strip>>;
|
|
171
171
|
dustBin: z.ZodNullable<z.ZodObject<{
|
|
172
172
|
level: z.ZodNullable<z.ZodNumber>;
|
|
173
173
|
status: z.ZodNullable<z.ZodEnum<{
|
|
174
|
+
full: "full";
|
|
174
175
|
low: "low";
|
|
175
176
|
ok: "ok";
|
|
176
|
-
full: "full";
|
|
177
177
|
}>>;
|
|
178
178
|
}, z.core.$strip>>;
|
|
179
179
|
progressPercent: z.ZodNullable<z.ZodNumber>;
|
|
@@ -203,33 +203,33 @@ export declare const vacuumControlCapability: {
|
|
|
203
203
|
cleanWater: z.ZodNullable<z.ZodObject<{
|
|
204
204
|
level: z.ZodNullable<z.ZodNumber>;
|
|
205
205
|
status: z.ZodNullable<z.ZodEnum<{
|
|
206
|
+
full: "full";
|
|
206
207
|
low: "low";
|
|
207
208
|
ok: "ok";
|
|
208
|
-
full: "full";
|
|
209
209
|
}>>;
|
|
210
210
|
}, z.core.$strip>>;
|
|
211
211
|
dirtyWater: z.ZodNullable<z.ZodObject<{
|
|
212
212
|
level: z.ZodNullable<z.ZodNumber>;
|
|
213
213
|
status: z.ZodNullable<z.ZodEnum<{
|
|
214
|
+
full: "full";
|
|
214
215
|
low: "low";
|
|
215
216
|
ok: "ok";
|
|
216
|
-
full: "full";
|
|
217
217
|
}>>;
|
|
218
218
|
}, z.core.$strip>>;
|
|
219
219
|
detergent: z.ZodNullable<z.ZodObject<{
|
|
220
220
|
level: z.ZodNullable<z.ZodNumber>;
|
|
221
221
|
status: z.ZodNullable<z.ZodEnum<{
|
|
222
|
+
full: "full";
|
|
222
223
|
low: "low";
|
|
223
224
|
ok: "ok";
|
|
224
|
-
full: "full";
|
|
225
225
|
}>>;
|
|
226
226
|
}, z.core.$strip>>;
|
|
227
227
|
dustBin: z.ZodNullable<z.ZodObject<{
|
|
228
228
|
level: z.ZodNullable<z.ZodNumber>;
|
|
229
229
|
status: z.ZodNullable<z.ZodEnum<{
|
|
230
|
+
full: "full";
|
|
230
231
|
low: "low";
|
|
231
232
|
ok: "ok";
|
|
232
|
-
full: "full";
|
|
233
233
|
}>>;
|
|
234
234
|
}, z.core.$strip>>;
|
|
235
235
|
progressPercent: z.ZodNullable<z.ZodNumber>;
|
|
@@ -232,6 +232,20 @@ export declare const VectorScanResultSchema: z.ZodObject<{
|
|
|
232
232
|
}, z.core.$strip>>;
|
|
233
233
|
nextCursor: z.ZodNullable<z.ZodNumber>;
|
|
234
234
|
}, z.core.$strip>;
|
|
235
|
+
/**
|
|
236
|
+
* The ONE error code for "this index exists at another dimension; refusing to
|
|
237
|
+
* redeclare it" (D649). It rides in the MESSAGE — an Error's own properties do
|
|
238
|
+
* not survive the UDS/tRPC hop, its message does — and both sides go through
|
|
239
|
+
* the helpers below, never a copied phrase: a consumer that must tell "this
|
|
240
|
+
* index can never hold my vectors" from "the provider is unreachable" (a
|
|
241
|
+
* delete counts the first as nothing-to-delete and the second as still
|
|
242
|
+
* present) otherwise breaks silently the day the wording changes.
|
|
243
|
+
*/
|
|
244
|
+
export declare const VECTOR_INDEX_DIM_CONFLICT = "vector-index-dim-conflict";
|
|
245
|
+
/** The provider's refusal, carrying {@link VECTOR_INDEX_DIM_CONFLICT}. */
|
|
246
|
+
export declare function vectorIndexDimConflictError(index: string, declaredDim: number, requestedDim: number): Error;
|
|
247
|
+
/** True when `err` (possibly re-wrapped by a transport) is that refusal. */
|
|
248
|
+
export declare function isVectorIndexDimConflict(err: unknown): boolean;
|
|
235
249
|
export declare const VectorStatsInputSchema: z.ZodObject<{
|
|
236
250
|
index: z.ZodString;
|
|
237
251
|
}, z.core.$strip>;
|
|
@@ -61,6 +61,7 @@ export declare const MAX_CLIP_LABELS = 3;
|
|
|
61
61
|
* rendered as `Refused: <prose>`.
|
|
62
62
|
*/
|
|
63
63
|
export declare const ClipStillRefusalCodeSchema: z.ZodEnum<{
|
|
64
|
+
"unknown-device": "unknown-device";
|
|
64
65
|
sleeping: "sleeping";
|
|
65
66
|
unsupported: "unsupported";
|
|
66
67
|
"camera-refused": "camera-refused";
|
|
@@ -69,7 +70,6 @@ export declare const ClipStillRefusalCodeSchema: z.ZodEnum<{
|
|
|
69
70
|
"camera-backoff": "camera-backoff";
|
|
70
71
|
"decode-failed": "decode-failed";
|
|
71
72
|
"no-catalog-row": "no-catalog-row";
|
|
72
|
-
"unknown-device": "unknown-device";
|
|
73
73
|
"uid-missing": "uid-missing";
|
|
74
74
|
}>;
|
|
75
75
|
export type ClipStillRefusalCode = z.infer<typeof ClipStillRefusalCodeSchema>;
|
|
@@ -348,8 +348,8 @@ export type ClipBytesOffer = z.infer<typeof ClipBytesOfferSchema>;
|
|
|
348
348
|
* negotiates — and `none` is a stream asked for, or served, without sound.
|
|
349
349
|
*/
|
|
350
350
|
export declare const ClipStreamAudioSchema: z.ZodEnum<{
|
|
351
|
-
pcmu: "pcmu";
|
|
352
351
|
none: "none";
|
|
352
|
+
pcmu: "pcmu";
|
|
353
353
|
opus: "opus";
|
|
354
354
|
}>;
|
|
355
355
|
export type ClipStreamAudio = z.infer<typeof ClipStreamAudioSchema>;
|
|
@@ -382,8 +382,8 @@ export declare const ClipStreamDialSchema: z.ZodObject<{
|
|
|
382
382
|
low: "low";
|
|
383
383
|
}>;
|
|
384
384
|
servedAudio: z.ZodEnum<{
|
|
385
|
-
pcmu: "pcmu";
|
|
386
385
|
none: "none";
|
|
386
|
+
pcmu: "pcmu";
|
|
387
387
|
opus: "opus";
|
|
388
388
|
}>;
|
|
389
389
|
audioReason: z.ZodOptional<z.ZodEnum<{
|
|
@@ -857,8 +857,8 @@ export declare const videoclipsCapability: {
|
|
|
857
857
|
low: "low";
|
|
858
858
|
}>>;
|
|
859
859
|
audio: z.ZodOptional<z.ZodEnum<{
|
|
860
|
-
pcmu: "pcmu";
|
|
861
860
|
none: "none";
|
|
861
|
+
pcmu: "pcmu";
|
|
862
862
|
opus: "opus";
|
|
863
863
|
}>>;
|
|
864
864
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -871,8 +871,8 @@ export declare const videoclipsCapability: {
|
|
|
871
871
|
low: "low";
|
|
872
872
|
}>;
|
|
873
873
|
servedAudio: z.ZodEnum<{
|
|
874
|
-
pcmu: "pcmu";
|
|
875
874
|
none: "none";
|
|
875
|
+
pcmu: "pcmu";
|
|
876
876
|
opus: "opus";
|
|
877
877
|
}>;
|
|
878
878
|
audioReason: z.ZodOptional<z.ZodEnum<{
|
|
@@ -181,8 +181,8 @@ export declare const WebrtcSessionDebugSchema: z.ZodObject<{
|
|
|
181
181
|
camStreamId: z.ZodNullable<z.ZodString>;
|
|
182
182
|
sourceKind: z.ZodEnum<{
|
|
183
183
|
unknown: "unknown";
|
|
184
|
-
derived: "derived";
|
|
185
184
|
native: "native";
|
|
185
|
+
derived: "derived";
|
|
186
186
|
}>;
|
|
187
187
|
adaptive: z.ZodBoolean;
|
|
188
188
|
servedTier: z.ZodNullable<z.ZodEnum<{
|
|
@@ -586,8 +586,8 @@ export declare const webrtcSessionCapability: {
|
|
|
586
586
|
camStreamId: z.ZodNullable<z.ZodString>;
|
|
587
587
|
sourceKind: z.ZodEnum<{
|
|
588
588
|
unknown: "unknown";
|
|
589
|
-
derived: "derived";
|
|
590
589
|
native: "native";
|
|
590
|
+
derived: "derived";
|
|
591
591
|
}>;
|
|
592
592
|
adaptive: z.ZodBoolean;
|
|
593
593
|
servedTier: z.ZodNullable<z.ZodEnum<{
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { ExtensionSlotCardinality, ExtensionSlotDescriptor, ExtensionSlotShape, } from './slot-descriptor.js';
|
|
2
|
+
export { createDeviceExtensionProvider, defineExtensionSlotProvider, extensionSlotRef, type DeviceExtensionProviderOptions, type ExtensionSlotImpl, type ExtensionSlotListing, type ExtensionSlotProvider, type ExtensionSlotValueOf, } from './slot-provider.js';
|
|
3
|
+
export { EXTENSION_HOST_DEVICE_TYPES, EXTENSION_SLOT_IDS, EXTENSION_SLOTS, ExtensionSlotIdSchema, ExtensionSlotValueSchema, type ExtensionSlotEntry, type ExtensionSlotId, type ExtensionSlotValue, } from '../generated/extension-slots.js';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An EXTENSION SLOT — one way a device can be extended by OTHER devices,
|
|
3
|
+
* declared by the capability that already owns the function (D648).
|
|
4
|
+
*
|
|
5
|
+
* A slot is metadata, and behavioural metadata lives in the owning `*.cap.ts`
|
|
6
|
+
* (D4): `device-manager.cap.ts` declares `linked-devices`, `doorbell.cap.ts`
|
|
7
|
+
* declares `doorbell-source`. `npm run codegen` folds every declaration into
|
|
8
|
+
* `generated/extension-slots.ts` (the id enum, the table and the discriminated
|
|
9
|
+
* union of slot values), and `device-extension` is the device-scoped
|
|
10
|
+
* collection contract that lists and writes them. The contract persists
|
|
11
|
+
* NOTHING: each slot is served by the addon that owns its store (D62).
|
|
12
|
+
*
|
|
13
|
+
* Two shapes:
|
|
14
|
+
*
|
|
15
|
+
* - `association` — the host LISTS other devices (a camera's linked devices,
|
|
16
|
+
* its doorbell trigger sources). Removing every source is "off"; there is
|
|
17
|
+
* no separate switch.
|
|
18
|
+
* - `graft` — the host GAINS a whole capability (`projects`), registered
|
|
19
|
+
* natively by the host's own provider from sources it owns. Declared here
|
|
20
|
+
* so the contract has room for it; the first graft (HA consumables) is
|
|
21
|
+
* slice 2, and a graft carries its own `enabled` switch.
|
|
22
|
+
*/
|
|
23
|
+
import type { z } from 'zod';
|
|
24
|
+
import type { DeviceType } from '../device/device-type.js';
|
|
25
|
+
/** How a slot extends its host. See the module docblock. */
|
|
26
|
+
export type ExtensionSlotShape = 'association' | 'graft';
|
|
27
|
+
/** How many sources a slot takes. */
|
|
28
|
+
export type ExtensionSlotCardinality = 'one' | 'many';
|
|
29
|
+
/**
|
|
30
|
+
* One slot, as declared in its owning `*.cap.ts`.
|
|
31
|
+
*
|
|
32
|
+
* `value` is the slot's EDITABLE value — what `setSlot` takes and `listSlots`
|
|
33
|
+
* returns. It must be a Zod OBJECT that does not itself carry a `slot` key:
|
|
34
|
+
* codegen extends it with `slot: z.literal(<id>)` to build the discriminated
|
|
35
|
+
* union, and it must be a NAMED EXPORT of the declaring cap file (codegen
|
|
36
|
+
* imports it by name so the generated module never imports the caps barrel).
|
|
37
|
+
*/
|
|
38
|
+
export interface ExtensionSlotDescriptor<TValue extends z.ZodObject = z.ZodObject> {
|
|
39
|
+
/** Kebab id, unique across every cap. Becomes a member of `ExtensionSlotId`. */
|
|
40
|
+
readonly id: string;
|
|
41
|
+
/** Operator-facing name of the slot ("Linked devices"). */
|
|
42
|
+
readonly label: string;
|
|
43
|
+
/** One sentence saying what a source of this slot DOES to the host. */
|
|
44
|
+
readonly description: string;
|
|
45
|
+
readonly shape: ExtensionSlotShape;
|
|
46
|
+
/**
|
|
47
|
+
* Host device types the slot is offered on. Absent = the declaring cap's
|
|
48
|
+
* `deviceTypes`; a slot on a cap that declares none (a `system` cap such as
|
|
49
|
+
* `device-manager`) MUST state it (guarded).
|
|
50
|
+
*/
|
|
51
|
+
readonly hostDeviceTypes?: readonly DeviceType[];
|
|
52
|
+
/**
|
|
53
|
+
* Source filter for the picker, tested against a candidate's capabilities
|
|
54
|
+
* (D12: its bindings, never the global cap list). `'any'` = no cap filter.
|
|
55
|
+
*/
|
|
56
|
+
readonly sourceCaps: readonly string[] | 'any';
|
|
57
|
+
readonly cardinality: ExtensionSlotCardinality;
|
|
58
|
+
/** graft only — MUST equal the declaring cap's `name` (guarded). */
|
|
59
|
+
readonly projects?: string;
|
|
60
|
+
/** The slot's editable value. See the interface docblock. */
|
|
61
|
+
readonly value: TValue;
|
|
62
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The owner's side of `device-extension` (D648): `defineExtensionSlotProvider`
|
|
3
|
+
* binds ONE slot id to the functions that read and write the owner's existing
|
|
4
|
+
* store, and `createDeviceExtensionProvider` turns an owner's slots into the
|
|
5
|
+
* cap provider it registers.
|
|
6
|
+
*
|
|
7
|
+
* The id is typed on the GENERATED `ExtensionSlotId`, so a typo does not
|
|
8
|
+
* compile, and the literal `defineExtensionSlotProvider('<id>'` is what
|
|
9
|
+
* `scripts/check-extension-slots.ts` counts to prove every declared slot has
|
|
10
|
+
* exactly one owner.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here persists. An owner's `set` goes through the same function its
|
|
13
|
+
* pre-existing surface uses; this module only routes, checks the host type and
|
|
14
|
+
* logs the write.
|
|
15
|
+
*/
|
|
16
|
+
import type { IScopedLogger } from '../interfaces/logging.js';
|
|
17
|
+
import { type ExtensionCandidate, type ExtensionSetResult, type ExtensionSlotActivation, type ExtensionSlotSource, type IDeviceExtensionProvider } from '../capabilities/device-extension.cap.js';
|
|
18
|
+
import { type ExtensionSlotId, type ExtensionSlotValue } from '../generated/extension-slots.js';
|
|
19
|
+
/** The value shape of ONE slot, picked out of the generated union. */
|
|
20
|
+
export type ExtensionSlotValueOf<Id extends ExtensionSlotId> = Extract<ExtensionSlotValue, {
|
|
21
|
+
readonly slot: Id;
|
|
22
|
+
}>;
|
|
23
|
+
/** What an owner reads for one host: everything of the row but the routing. */
|
|
24
|
+
export interface ExtensionSlotListing<Id extends ExtensionSlotId> {
|
|
25
|
+
/** The store written (D62), `<addon>:<key>`. */
|
|
26
|
+
readonly authority: string;
|
|
27
|
+
/** graft: its switch; association: null. */
|
|
28
|
+
readonly enabled: boolean | null;
|
|
29
|
+
readonly activation: ExtensionSlotActivation | null;
|
|
30
|
+
readonly value: ExtensionSlotValueOf<Id>;
|
|
31
|
+
readonly sources: readonly ExtensionSlotSource[];
|
|
32
|
+
}
|
|
33
|
+
/** The three functions an owner implements for one slot. */
|
|
34
|
+
export interface ExtensionSlotImpl<Id extends ExtensionSlotId> {
|
|
35
|
+
/** The slot as the owner's store holds it, or null when this host is not the owner's. */
|
|
36
|
+
list(deviceId: number): Promise<ExtensionSlotListing<Id> | null>;
|
|
37
|
+
/** Write through the owner's EXISTING path. Refuse by name before persisting. */
|
|
38
|
+
set(deviceId: number, value: ExtensionSlotValueOf<Id>): Promise<ExtensionSetResult>;
|
|
39
|
+
/** Devices the editor may offer, suggestions pre-marked and never saved. */
|
|
40
|
+
candidates(deviceId: number): Promise<readonly ExtensionCandidate[]>;
|
|
41
|
+
}
|
|
42
|
+
/** A slot bound to its owner, with the id erased so owners can hold a list. */
|
|
43
|
+
export interface ExtensionSlotProvider {
|
|
44
|
+
readonly slot: ExtensionSlotId;
|
|
45
|
+
list(deviceId: number): Promise<ExtensionSlotListing<ExtensionSlotId> | null>;
|
|
46
|
+
set(deviceId: number, value: ExtensionSlotValue): Promise<ExtensionSetResult>;
|
|
47
|
+
candidates(deviceId: number): Promise<readonly ExtensionCandidate[]>;
|
|
48
|
+
}
|
|
49
|
+
/** Bind slot `slot` to its owner's functions. See the module docblock. */
|
|
50
|
+
export declare function defineExtensionSlotProvider<Id extends ExtensionSlotId>(slot: Id, impl: ExtensionSlotImpl<Id>): ExtensionSlotProvider;
|
|
51
|
+
/** `<source>:<slotId>`. */
|
|
52
|
+
export declare function extensionSlotRef(source: string, slot: ExtensionSlotId): string;
|
|
53
|
+
export interface DeviceExtensionProviderOptions {
|
|
54
|
+
/** The routing prefix of every `slotRef` this owner serves. */
|
|
55
|
+
readonly source: string;
|
|
56
|
+
readonly label: string;
|
|
57
|
+
readonly slots: readonly ExtensionSlotProvider[];
|
|
58
|
+
/**
|
|
59
|
+
* The host's device type, answered LOCALLY by the owner (R6: a provider
|
|
60
|
+
* answers `[]` for a host it does not serve without a fleet round trip), or
|
|
61
|
+
* null when the owner does not know the device. A THROW is not "unknown":
|
|
62
|
+
* it propagates, and the dispatcher turns it into an `unreachable` row.
|
|
63
|
+
*/
|
|
64
|
+
readonly hostTypeOf: (deviceId: number) => Promise<string | null>;
|
|
65
|
+
readonly logger: IScopedLogger;
|
|
66
|
+
}
|
|
67
|
+
/** Build the `device-extension` provider one owner registers. */
|
|
68
|
+
export declare function createDeviceExtensionProvider(options: DeviceExtensionProviderOptions): IDeviceExtensionProvider;
|
|
@@ -40,6 +40,7 @@ import type { deviceAdminLinkCapability } from '../capabilities/device-admin-lin
|
|
|
40
40
|
import type { deviceAdoptionCapability } from '../capabilities/device-adoption.cap.js';
|
|
41
41
|
import type { deviceDiscoveryCapability } from '../capabilities/device-discovery.cap.js';
|
|
42
42
|
import type { deviceExportCapability } from '../capabilities/device-export.cap.js';
|
|
43
|
+
import type { deviceExtensionCapability } from '../capabilities/device-extension.cap.js';
|
|
43
44
|
import type { deviceManagerCapability } from '../capabilities/device-manager.cap.js';
|
|
44
45
|
import type { deviceOpsCapability } from '../capabilities/device-ops.cap.js';
|
|
45
46
|
import type { deviceProviderCapability } from '../capabilities/device-provider.cap.js';
|
|
@@ -2104,6 +2105,41 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
2104
2105
|
meta: object;
|
|
2105
2106
|
}>;
|
|
2106
2107
|
}>>;
|
|
2108
|
+
deviceExtension: TRPCBuiltRouter<{
|
|
2109
|
+
ctx: TrpcContext;
|
|
2110
|
+
meta: object;
|
|
2111
|
+
errorShape: AugmentedErrorShape;
|
|
2112
|
+
transformer: true;
|
|
2113
|
+
}, TRPCDecorateCreateRouterOptions<{
|
|
2114
|
+
listSources: TRPCQueryProcedure<{
|
|
2115
|
+
input: {
|
|
2116
|
+
[x: string]: unknown;
|
|
2117
|
+
} & z.input<typeof deviceExtensionCapability.methods.listSources.input>;
|
|
2118
|
+
output: z.infer<typeof deviceExtensionCapability.methods.listSources.output>;
|
|
2119
|
+
meta: object;
|
|
2120
|
+
}>;
|
|
2121
|
+
listSlots: TRPCQueryProcedure<{
|
|
2122
|
+
input: {
|
|
2123
|
+
[x: string]: unknown;
|
|
2124
|
+
} & z.input<typeof deviceExtensionCapability.methods.listSlots.input>;
|
|
2125
|
+
output: z.infer<typeof deviceExtensionCapability.methods.listSlots.output>;
|
|
2126
|
+
meta: object;
|
|
2127
|
+
}>;
|
|
2128
|
+
listCandidates: TRPCQueryProcedure<{
|
|
2129
|
+
input: {
|
|
2130
|
+
[x: string]: unknown;
|
|
2131
|
+
} & z.input<typeof deviceExtensionCapability.methods.listCandidates.input>;
|
|
2132
|
+
output: z.infer<typeof deviceExtensionCapability.methods.listCandidates.output>;
|
|
2133
|
+
meta: object;
|
|
2134
|
+
}>;
|
|
2135
|
+
setSlot: TRPCMutationProcedure<{
|
|
2136
|
+
input: {
|
|
2137
|
+
[x: string]: unknown;
|
|
2138
|
+
} & z.input<typeof deviceExtensionCapability.methods.setSlot.input>;
|
|
2139
|
+
output: z.infer<typeof deviceExtensionCapability.methods.setSlot.output>;
|
|
2140
|
+
meta: object;
|
|
2141
|
+
}>;
|
|
2142
|
+
}>>;
|
|
2107
2143
|
deviceManager: TRPCBuiltRouter<{
|
|
2108
2144
|
ctx: TrpcContext;
|
|
2109
2145
|
meta: object;
|
|
@@ -3032,6 +3068,13 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
3032
3068
|
output: z.infer<typeof embeddingEncoderCapability.methods.getInfo.output>;
|
|
3033
3069
|
meta: object;
|
|
3034
3070
|
}>;
|
|
3071
|
+
resetFailedModels: TRPCMutationProcedure<{
|
|
3072
|
+
input: {
|
|
3073
|
+
[x: string]: unknown;
|
|
3074
|
+
} & z.input<typeof embeddingEncoderCapability.methods.resetFailedModels.input>;
|
|
3075
|
+
output: z.infer<typeof embeddingEncoderCapability.methods.resetFailedModels.output>;
|
|
3076
|
+
meta: object;
|
|
3077
|
+
}>;
|
|
3035
3078
|
}>>;
|
|
3036
3079
|
enumSensor: TRPCBuiltRouter<{
|
|
3037
3080
|
ctx: TrpcContext;
|
|
@@ -4903,6 +4946,13 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
4903
4946
|
output: z.infer<typeof notificationRulesCapability.methods.testRule.output>;
|
|
4904
4947
|
meta: object;
|
|
4905
4948
|
}>;
|
|
4949
|
+
previewStateSummary: TRPCMutationProcedure<{
|
|
4950
|
+
input: {
|
|
4951
|
+
[x: string]: unknown;
|
|
4952
|
+
} & z.input<typeof notificationRulesCapability.methods.previewStateSummary.input>;
|
|
4953
|
+
output: z.infer<typeof notificationRulesCapability.methods.previewStateSummary.output>;
|
|
4954
|
+
meta: object;
|
|
4955
|
+
}>;
|
|
4906
4956
|
getConditionCatalog: TRPCQueryProcedure<{
|
|
4907
4957
|
input: {
|
|
4908
4958
|
[x: string]: unknown;
|
|
@@ -5604,13 +5654,6 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
5604
5654
|
output: z.infer<typeof pipelineAnalyticsCapability.methods.proposeRetrainAnnotations.output>;
|
|
5605
5655
|
meta: object;
|
|
5606
5656
|
}>;
|
|
5607
|
-
runReplayFrameProcessor: TRPCMutationProcedure<{
|
|
5608
|
-
input: {
|
|
5609
|
-
[x: string]: unknown;
|
|
5610
|
-
} & z.input<typeof pipelineAnalyticsCapability.methods.runReplayFrameProcessor.input>;
|
|
5611
|
-
output: z.infer<typeof pipelineAnalyticsCapability.methods.runReplayFrameProcessor.output>;
|
|
5612
|
-
meta: object;
|
|
5613
|
-
}>;
|
|
5614
5657
|
listRetrainAnnotations: TRPCQueryProcedure<{
|
|
5615
5658
|
input: {
|
|
5616
5659
|
[x: string]: unknown;
|
|
@@ -5907,8 +5950,8 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
5907
5950
|
}>;
|
|
5908
5951
|
getEffectiveTuning: TRPCQueryProcedure<{
|
|
5909
5952
|
input: {
|
|
5910
|
-
|
|
5911
|
-
}
|
|
5953
|
+
[x: string]: unknown;
|
|
5954
|
+
} & z.input<typeof pipelineExecutorCapability.methods.getEffectiveTuning.input>;
|
|
5912
5955
|
output: z.infer<typeof pipelineExecutorCapability.methods.getEffectiveTuning.output>;
|
|
5913
5956
|
meta: object;
|
|
5914
5957
|
}>;
|
|
@@ -6080,6 +6123,13 @@ export type AppRouter = TrpcCoreRouter<{
|
|
|
6080
6123
|
output: z.infer<typeof pipelineOrchestratorCapability.methods.getAgentLoad.output>;
|
|
6081
6124
|
meta: object;
|
|
6082
6125
|
}>;
|
|
6126
|
+
getClusterModelChoice: TRPCQueryProcedure<{
|
|
6127
|
+
input: {
|
|
6128
|
+
[x: string]: unknown;
|
|
6129
|
+
} & z.input<typeof pipelineOrchestratorCapability.methods.getClusterModelChoice.input>;
|
|
6130
|
+
output: z.infer<typeof pipelineOrchestratorCapability.methods.getClusterModelChoice.output>;
|
|
6131
|
+
meta: object;
|
|
6132
|
+
}>;
|
|
6083
6133
|
getGlobalMetrics: TRPCQueryProcedure<{
|
|
6084
6134
|
input: {
|
|
6085
6135
|
nodeId?: string | undefined;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Plain data, zero Zod: a forked runner must not import the schema barrel
|
|
12
12
|
* (~144MB RSS per runner — D28).
|
|
13
13
|
*
|
|
14
|
-
* Coverage: 24 caps,
|
|
14
|
+
* Coverage: 24 caps, 59 methods with defaults.
|
|
15
15
|
*/
|
|
16
16
|
export declare const CAP_INPUT_DEFAULTS: Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, unknown>>>>>>;
|
|
17
17
|
/**
|
|
@@ -46,6 +46,7 @@ export { deviceAdminLinkCapability } from '../capabilities/device-admin-link.cap
|
|
|
46
46
|
export { deviceAdoptionCapability } from '../capabilities/device-adoption.cap.js';
|
|
47
47
|
export { deviceDiscoveryCapability } from '../capabilities/device-discovery.cap.js';
|
|
48
48
|
export { deviceExportCapability } from '../capabilities/device-export.cap.js';
|
|
49
|
+
export { deviceExtensionCapability } from '../capabilities/device-extension.cap.js';
|
|
49
50
|
export { deviceManagerCapability } from '../capabilities/device-manager.cap.js';
|
|
50
51
|
export { deviceOpsCapability } from '../capabilities/device-ops.cap.js';
|
|
51
52
|
export { deviceProviderCapability } from '../capabilities/device-provider.cap.js';
|
|
@@ -207,6 +208,7 @@ export declare const CAPABILITY_NAMES: {
|
|
|
207
208
|
readonly deviceAdoption: "device-adoption";
|
|
208
209
|
readonly deviceDiscovery: "device-discovery";
|
|
209
210
|
readonly deviceExport: "device-export";
|
|
211
|
+
readonly deviceExtension: "device-extension";
|
|
210
212
|
readonly deviceManager: "device-manager";
|
|
211
213
|
readonly deviceOps: "device-ops";
|
|
212
214
|
readonly deviceProvider: "device-provider";
|
|
@@ -381,6 +383,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
381
383
|
readonly deviceAdoption: TRouter;
|
|
382
384
|
readonly deviceDiscovery: TRouter;
|
|
383
385
|
readonly deviceExport: TRouter;
|
|
386
|
+
readonly deviceExtension: TRouter;
|
|
384
387
|
readonly deviceManager: TRouter;
|
|
385
388
|
readonly deviceOps: TRouter;
|
|
386
389
|
readonly deviceProvider: TRouter;
|
|
@@ -498,8 +501,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
|
|
|
498
501
|
export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-grid-layout", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "core-blocks", "cover", "day-night", "decoder", "detection-pipeline", "device-admin-link", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "navigation", "network-link", "network-quality", "nodes", "notification-rules", "notifier", "numeric-sensor", "osd", "osd-manager", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording-archive", "recording-export", "recording-onboard", "recording-signal", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "storage-migration", "stream-broker", "stream-catalog", "stream-params", "stream-signals", "switch", "system", "tamper", "temperature-sensor", "terminal-session", "toast", "update", "user-management", "vacuum-control", "valve", "vector-store", "vibration", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
|
|
499
502
|
/** Union of singleton capability names (literal string union). */
|
|
500
503
|
export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
|
|
501
|
-
/** Capability names whose mode is `collection` (
|
|
502
|
-
export declare const COLLECTION_CAPABILITY_NAMES: readonly ["addon-pages-source", "addon-routes", "addon-widgets-source", "auth-provider", "broker", "connection-test", "custom-model-registry", "data-store-provider", "device-export", "device-provider", "embedding-encoder", "failure-contribution", "llm", "load-contribution", "log-channels", "log-destination", "login-method", "mesh-network", "mqtt-broker", "network-access", "notification-output", "oauth-integration", "recording", "smtp-provider", "storage-evictable", "storage-occupancy", "storage-provider", "turn-provider", "user-passkeys", "videoclips"];
|
|
504
|
+
/** Capability names whose mode is `collection` (31 caps). */
|
|
505
|
+
export declare const COLLECTION_CAPABILITY_NAMES: readonly ["addon-pages-source", "addon-routes", "addon-widgets-source", "auth-provider", "broker", "connection-test", "custom-model-registry", "data-store-provider", "device-export", "device-extension", "device-provider", "embedding-encoder", "failure-contribution", "llm", "load-contribution", "log-channels", "log-destination", "login-method", "mesh-network", "mqtt-broker", "network-access", "notification-output", "oauth-integration", "recording", "smtp-provider", "storage-evictable", "storage-occupancy", "storage-provider", "turn-provider", "user-passkeys", "videoclips"];
|
|
503
506
|
/** Union of collection capability names (literal string union). */
|
|
504
507
|
export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
|
|
505
508
|
/** Capability mode lookup at runtime — mirrors the `.cap.ts` definitions. */
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
|
|
9
9
|
* forked runner. See docs/decisions/adr-0028.md.
|
|
10
10
|
*
|
|
11
|
-
* Coverage:
|
|
11
|
+
* Coverage: 24 collection caps, 39 array methods.
|
|
12
12
|
*/
|
|
13
13
|
export declare const COLLECTION_ARRAY_METHODS: Readonly<Record<string, readonly string[]>>;
|
|
14
14
|
/**
|
|
@@ -15,6 +15,7 @@ import type { brightnessCapability } from '../capabilities/brightness.cap.js';
|
|
|
15
15
|
import type { buttonCapability } from '../capabilities/button.cap.js';
|
|
16
16
|
import type { cameraCredentialsCapability } from '../capabilities/camera-credentials.cap.js';
|
|
17
17
|
import type { cameraGridLayoutCapability } from '../capabilities/camera-grid-layout.cap.js';
|
|
18
|
+
import type { cameraPipelineConfigCapability } from '../capabilities/camera-pipeline-config.cap.js';
|
|
18
19
|
import type { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
|
|
19
20
|
import type { carbonMonoxideCapability } from '../capabilities/carbon-monoxide.cap.js';
|
|
20
21
|
import type { climateControlCapability } from '../capabilities/climate-control.cap.js';
|
|
@@ -28,6 +29,7 @@ import type { dayNightCapability } from '../capabilities/day-night.cap.js';
|
|
|
28
29
|
import type { detectionPipelineCapability } from '../capabilities/detection-pipeline.cap.js';
|
|
29
30
|
import type { deviceAdminLinkCapability } from '../capabilities/device-admin-link.cap.js';
|
|
30
31
|
import type { deviceDiscoveryCapability } from '../capabilities/device-discovery.cap.js';
|
|
32
|
+
import type { deviceExtensionCapability } from '../capabilities/device-extension.cap.js';
|
|
31
33
|
import type { deviceOpsCapability } from '../capabilities/device-ops.cap.js';
|
|
32
34
|
import type { deviceStatusCapability } from '../capabilities/device-status.cap.js';
|
|
33
35
|
import type { doorbellCapability } from '../capabilities/doorbell.cap.js';
|
|
@@ -52,7 +54,6 @@ import type { motionZonesCapability } from '../capabilities/motion-zones.cap.js'
|
|
|
52
54
|
import type { nativeObjectDetectionCapability } from '../capabilities/native-object-detection.cap.js';
|
|
53
55
|
import type { navigationCapability } from '../capabilities/navigation.cap.js';
|
|
54
56
|
import type { networkLinkCapability } from '../capabilities/network-link.cap.js';
|
|
55
|
-
import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
|
|
56
57
|
import type { notifierCapability } from '../capabilities/notifier.cap.js';
|
|
57
58
|
import type { numericSensorCapability } from '../capabilities/numeric-sensor.cap.js';
|
|
58
59
|
import type { osdCapability } from '../capabilities/osd.cap.js';
|
|
@@ -91,14 +92,13 @@ import type { zoneRulesCapability } from '../capabilities/zone-rules.cap.js';
|
|
|
91
92
|
import type { zonesCapability } from '../capabilities/zones.cap.js';
|
|
92
93
|
import type { addonSettingsCapability } from '../capabilities/addon-settings.cap.js';
|
|
93
94
|
import type { audioAnalyzerCapability } from '../capabilities/audio-analyzer.cap.js';
|
|
94
|
-
import type { cameraPipelineConfigCapability } from '../capabilities/camera-pipeline-config.cap.js';
|
|
95
95
|
import type { deviceAdoptionCapability } from '../capabilities/device-adoption.cap.js';
|
|
96
96
|
import type { deviceExportCapability } from '../capabilities/device-export.cap.js';
|
|
97
97
|
import type { deviceManagerCapability } from '../capabilities/device-manager.cap.js';
|
|
98
|
-
import type { deviceProviderCapability } from '../capabilities/device-provider.cap.js';
|
|
99
98
|
import type { deviceStateCapability } from '../capabilities/device-state.cap.js';
|
|
100
99
|
import type { faceGalleryCapability } from '../capabilities/face-gallery.cap.js';
|
|
101
100
|
import type { networkQualityCapability } from '../capabilities/network-quality.cap.js';
|
|
101
|
+
import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
|
|
102
102
|
import type { osdManagerCapability } from '../capabilities/osd-manager.cap.js';
|
|
103
103
|
import type { pipelineExecutorCapability } from '../capabilities/pipeline-executor.cap.js';
|
|
104
104
|
import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-orchestrator.cap.js';
|
|
@@ -214,6 +214,7 @@ export interface DeviceProxy {
|
|
|
214
214
|
readonly button?: InferDeviceProxyCap<typeof buttonCapability>;
|
|
215
215
|
readonly cameraCredentials?: InferDeviceProxyCap<typeof cameraCredentialsCapability>;
|
|
216
216
|
readonly cameraGridLayout?: InferDeviceProxyCap<typeof cameraGridLayoutCapability>;
|
|
217
|
+
readonly cameraPipelineConfig?: InferDeviceProxyCap<typeof cameraPipelineConfigCapability>;
|
|
217
218
|
readonly cameraStreams?: InferDeviceProxyCap<typeof cameraStreamsCapability>;
|
|
218
219
|
readonly carbonMonoxide?: InferDeviceProxyCap<typeof carbonMonoxideCapability>;
|
|
219
220
|
readonly climateControl?: InferDeviceProxyCap<typeof climateControlCapability>;
|
|
@@ -227,6 +228,7 @@ export interface DeviceProxy {
|
|
|
227
228
|
readonly detectionPipeline?: InferDeviceProxyCap<typeof detectionPipelineCapability>;
|
|
228
229
|
readonly deviceAdminLink?: InferDeviceProxyCap<typeof deviceAdminLinkCapability>;
|
|
229
230
|
readonly deviceDiscovery?: InferDeviceProxyCap<typeof deviceDiscoveryCapability>;
|
|
231
|
+
readonly deviceExtension?: InferDeviceProxyCap<typeof deviceExtensionCapability>;
|
|
230
232
|
readonly deviceOps?: InferDeviceProxyCap<typeof deviceOpsCapability>;
|
|
231
233
|
readonly deviceStatus?: InferDeviceProxyCap<typeof deviceStatusCapability>;
|
|
232
234
|
readonly doorbell?: InferDeviceProxyCap<typeof doorbellCapability>;
|
|
@@ -251,7 +253,6 @@ export interface DeviceProxy {
|
|
|
251
253
|
readonly nativeObjectDetection?: InferDeviceProxyCap<typeof nativeObjectDetectionCapability>;
|
|
252
254
|
readonly navigation?: InferDeviceProxyCap<typeof navigationCapability>;
|
|
253
255
|
readonly networkLink?: InferDeviceProxyCap<typeof networkLinkCapability>;
|
|
254
|
-
readonly notificationRules?: InferDeviceProxyCap<typeof notificationRulesCapability>;
|
|
255
256
|
readonly notifier?: InferDeviceProxyCap<typeof notifierCapability>;
|
|
256
257
|
readonly numericSensor?: InferDeviceProxyCap<typeof numericSensorCapability>;
|
|
257
258
|
readonly osd?: InferDeviceProxyCap<typeof osdCapability>;
|
|
@@ -290,17 +291,16 @@ export interface DeviceProxy {
|
|
|
290
291
|
readonly zones?: InferDeviceProxyCap<typeof zonesCapability>;
|
|
291
292
|
readonly addonSettings: Pick<InferDeviceProxyCap<typeof addonSettingsCapability>, 'getDeviceSettings' | 'updateDeviceSettings'>;
|
|
292
293
|
readonly audioAnalyzer: Pick<InferDeviceProxyCap<typeof audioAnalyzerCapability>, 'detachDevice'>;
|
|
293
|
-
readonly cameraPipelineConfig: Pick<InferDeviceProxyCap<typeof cameraPipelineConfigCapability>, 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
|
|
294
294
|
readonly deviceAdoption: Pick<InferDeviceProxyCap<typeof deviceAdoptionCapability>, 'getStatus'>;
|
|
295
295
|
readonly deviceExport: Pick<InferDeviceProxyCap<typeof deviceExportCapability>, 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
|
|
296
296
|
readonly deviceManager: Pick<InferDeviceProxyCap<typeof deviceManagerCapability>, 'loadConfig' | 'loadRuntimeState' | 'loadMeta' | 'setName' | 'setLocation' | 'setType' | 'setIntegrationId' | 'setLinkDeviceId' | 'setPrimaryChildEntityId' | 'setChildLayout' | 'setDisplay' | 'getWireableFields' | 'setRole' | 'applyInitialMeta' | 'setMetadata' | 'setDisabled' | 'getDevice' | 'getLinkedDevices' | 'getStreamSources' | 'getConfigSchema' | 'getSettingsSchema' | 'updateConfig' | 'enable' | 'disable' | 'remove' | 'getStreamProfileMap' | 'setStreamProfileMap' | 'probeStreams' | 'getBindings' | 'setWrapperActive' | 'getDeviceSettingsAggregate' | 'getDeviceLiveInfoAggregate' | 'getDeviceAggregate' | 'runDeviceAction' | 'updateDeviceField' | 'updateDeviceFieldsBatch' | 'testField' | 'getDeviceStatusAggregate' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
|
|
297
|
-
readonly deviceProvider: Pick<InferDeviceProxyCap<typeof deviceProviderCapability>, 'reloadDevice'>;
|
|
298
297
|
readonly deviceState: Pick<InferDeviceProxyCap<typeof deviceStateCapability>, 'getSnapshot' | 'getCapSlice' | 'setCapSlice'>;
|
|
299
298
|
readonly faceGallery: Pick<InferDeviceProxyCap<typeof faceGalleryCapability>, 'listRecentFaces' | 'getFaceByTrack'>;
|
|
300
299
|
readonly networkQuality: Pick<InferDeviceProxyCap<typeof networkQualityCapability>, 'getDeviceStats' | 'reportClientStats'>;
|
|
300
|
+
readonly notificationRules: Pick<InferDeviceProxyCap<typeof notificationRulesCapability>, 'setDeviceMuted'>;
|
|
301
301
|
readonly osdManager: Pick<InferDeviceProxyCap<typeof osdManagerCapability>, 'getDeviceOsd' | 'getSourceCatalog' | 'setSlotBinding' | 'clearSlotBinding' | 'previewSlot' | 'renderDevice'>;
|
|
302
302
|
readonly pipelineExecutor: Pick<InferDeviceProxyCap<typeof pipelineExecutorCapability>, 'runPipeline' | 'runPipelineBatch'>;
|
|
303
|
-
readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'setPipelineDevicePin' | 'getPipelineDevicePin' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | '
|
|
303
|
+
readonly pipelineOrchestrator: Pick<InferDeviceProxyCap<typeof pipelineOrchestratorCapability>, 'assignPipeline' | 'unassignPipeline' | 'setPipelineDevicePin' | 'getPipelineDevicePin' | 'getPipelineAssignment' | 'getCameraMetrics' | 'assignAudio' | 'unassignAudio' | 'getAudioAssignment' | 'getCameraSettings' | 'setCameraStepToggle' | 'getCameraStepOverrides' | 'setCameraStepOverride' | 'setCameraPipelineForAgent' | 'resolvePipeline' | 'getCameraSwitches' | 'setCameraSwitch' | 'getCameraStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
|
|
304
304
|
readonly pipelineRunner: Pick<InferDeviceProxyCap<typeof pipelineRunnerCapability>, 'detachCamera' | 'getCameraMetrics' | 'requestOccupancyBurst' | 'runDetailSubtree' | 'parkTrackFrame' | 'getParkedTrackFrame' | 'releaseParkedTrackFrames'>;
|
|
305
305
|
readonly plateGallery: Pick<InferDeviceProxyCap<typeof plateGalleryCapability>, 'listPlates' | 'getPlateByTrack'>;
|
|
306
306
|
readonly recordingArchive: Pick<InferDeviceProxyCap<typeof recordingArchiveCapability>, 'getDeviceConfig' | 'locateSegment' | 'readSegmentBytes' | 'readGopBytes' | 'readWindowBytes' | 'setDeviceConfig' | 'rescanStorage' | 'pruneFootage' | 'deleteFootprint' | 'renderGif' | 'renderClip' | 'getStatus' | 'getDeviceSettingsContribution' | 'getDeviceLiveContribution' | 'applyDeviceSettingsPatch'>;
|