@camstack/types 1.2.387 → 1.2.388

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 (33) hide show
  1. package/dist/addon.js +24 -14
  2. package/dist/addon.mjs +24 -14
  3. package/dist/capabilities/alarm-panel.cap.d.ts +10 -2
  4. package/dist/capabilities/capability-definition.d.ts +21 -3
  5. package/dist/capabilities/connectivity.cap.d.ts +10 -2
  6. package/dist/capabilities/device-history.cap.d.ts +195 -3
  7. package/dist/capabilities/dishwasher.cap.d.ts +17 -0
  8. package/dist/capabilities/enum-sensor.cap.d.ts +12 -2
  9. package/dist/capabilities/index.d.ts +4 -3
  10. package/dist/capabilities/lock-control.cap.d.ts +9 -2
  11. package/dist/capabilities/log-destination.cap.d.ts +148 -19
  12. package/dist/capabilities/media-player.cap.d.ts +15 -2
  13. package/dist/capabilities/notification-rules.cap.d.ts +213 -13
  14. package/dist/capabilities/stream-params.cap.d.ts +24 -2
  15. package/dist/client.js +75 -6
  16. package/dist/client.mjs +75 -6
  17. package/dist/device/base-device.d.ts +34 -1
  18. package/dist/device/index.d.ts +2 -2
  19. package/dist/generated/addon-api.d.ts +89 -12
  20. package/dist/generated/cap-input-defaults.d.ts +1 -1
  21. package/dist/generated/collection-array-methods.d.ts +2 -2
  22. package/dist/generated/history-catalog.d.ts +1 -1
  23. package/dist/generated/method-access-map.d.ts +1 -1
  24. package/dist/generated/method-device-selectors.d.ts +2 -2
  25. package/dist/generated/system-proxy.d.ts +1 -1
  26. package/dist/index.d.ts +3 -2
  27. package/dist/index.js +584 -53
  28. package/dist/index.mjs +568 -54
  29. package/dist/interfaces/logging.d.ts +16 -1
  30. package/dist/notification/media-image.d.ts +67 -0
  31. package/dist/{sleep-yKL5gfrH.mjs → sleep-BSuCCFjf.mjs} +3 -1
  32. package/dist/{sleep-6sOPE0EV.js → sleep-DKtoyk6X.js} +3 -1
  33. package/package.json +1 -1
package/dist/client.mjs CHANGED
@@ -23037,6 +23037,33 @@ var NcRuleTargetSchema = z.object({
23037
23037
  params: z.record(z.string(), z.unknown()).optional()
23038
23038
  });
23039
23039
  /**
23040
+ * WHAT THE NOTIFICATION'S PICTURE IS (D897) — the ONE media choice of a rule.
23041
+ *
23042
+ * Every mode starts from the same CLEAN source frame of the trigger moment
23043
+ * (keyFrame → sceneFrame → lastSceneFrame, narrowed to the trigger instant and
23044
+ * to the zone that fired the rule) and renders it once at send time:
23045
+ * - `scene-boxes` — the whole scene, the subject outlined thick in the accent
23046
+ * colour and every OTHER track visible at that instant outlined thin, each
23047
+ * labelled with class and confidence ("dog 87%").
23048
+ * - `crop` — the subject cut out of that frame around its box at that instant.
23049
+ * - `clean` — the whole scene with nothing drawn on it.
23050
+ * - `none` — no picture.
23051
+ *
23052
+ * A mode that cannot be honoured (no box at that instant, a photograph with no
23053
+ * tracked subject) ships `clean` and names the reason in the log, per camera.
23054
+ * It replaces the `attach` × `frame` × `zoneCrop` triple, which let one rule
23055
+ * ship a crop on one event and a boxed scene on the next depending on which
23056
+ * stored kind had landed.
23057
+ */
23058
+ var NcMediaImageSchema = z.enum([
23059
+ "scene-boxes",
23060
+ "crop",
23061
+ "clean",
23062
+ "none"
23063
+ ]);
23064
+ /**
23065
+ * @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
23066
+ *
23040
23067
  * Media attachment policy (P1 still-image subset).
23041
23068
  * - `best` — the best AVAILABLE subject image at dispatch time (D-3).
23042
23069
  * - `best-matching` — the media that explains WHY the rule fired: a rule
@@ -23050,6 +23077,8 @@ var NcRuleTargetSchema = z.object({
23050
23077
  * - `none` — no attachment.
23051
23078
  */
23052
23079
  /**
23080
+ * @deprecated Read only by `normalizeNcMediaPolicy` (D897) — see {@link NcMediaImageSchema}.
23081
+ *
23053
23082
  * WHAT THE PICTURE SHOWS — chosen explicitly, because the implicit ladders
23054
23083
  * conflate it with the selection strategy and betray the request: asking for
23055
23084
  * the clean scene frame on an object-event owner used to start at
@@ -23078,16 +23107,29 @@ var NcMediaFrameSchema = z.enum([
23078
23107
  */
23079
23108
  var NcLinkedCameraModeSchema = z.enum(["mosaic", "each"]);
23080
23109
  var NcMediaPolicySchema = z.object({
23110
+ /**
23111
+ * The picture — see {@link NcMediaImageSchema}. Absent on a rule nobody has
23112
+ * saved since D897: `normalizeNcMediaPolicy` derives it from the legacy
23113
+ * triple below, at load and at every write, and the store keeps only this.
23114
+ */
23115
+ image: NcMediaImageSchema.optional(),
23116
+ /**
23117
+ * Draw the zone that FIRED the rule on the picture (`scene-boxes` / `clean`;
23118
+ * a `crop` never shows it). Valid only on a rule whose trigger is a zone —
23119
+ * `conditions.zones` or an occupancy zone — and refused on save otherwise.
23120
+ * Replaces `zoneCrop`.
23121
+ */
23122
+ showTriggerZone: z.boolean().optional(),
23123
+ /** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
23081
23124
  attach: z.enum([
23082
23125
  "best",
23083
23126
  "best-matching",
23084
23127
  "keyFrame",
23085
23128
  "none"
23086
- ]).default("best"),
23087
- /** What the still shows. Absent = `cropped` (the historical `best` shape). */
23129
+ ]).optional(),
23130
+ /** @deprecated D897 — accepted from an editor that predates `image`, folded into it on save. */
23088
23131
  frame: NcMediaFrameSchema.optional(),
23089
- /** Crop the attached still to the rule's condition-zone bbox (padded) —
23090
- * "show me the ZONE", not the whole scene or the subject crop. */
23132
+ /** @deprecated D897 — folded into `image: 'clean'` + `showTriggerZone` on save. */
23091
23133
  zoneCrop: z.boolean().optional(),
23092
23134
  /**
23093
23135
  * Also attach a short GIF cut from the stream broker's clip ring around the
@@ -23272,7 +23314,9 @@ var NcRuleInputSchema = z.object({
23272
23314
  * targets.
23273
23315
  */
23274
23316
  targetUsers: z.array(z.string()).optional(),
23275
- media: NcMediaPolicySchema.default({ attach: "best" }),
23317
+ /** Absent = the kind's default picture (`resolveNcMediaImage`): the subject crop for a
23318
+ * detection, the clean scene for a sensor or a sound. Set explicitly on save (D897). */
23319
+ media: NcMediaPolicySchema.default({}),
23276
23320
  throttle: NcThrottleSchema.default({
23277
23321
  cooldownSec: 60,
23278
23322
  scope: "rule-device"
@@ -24232,13 +24276,37 @@ var NcAlarmModeOpeningsSchema = z.object({
24232
24276
  /** Covered devices whose state could not be read (D49): neither open nor closed. */
24233
24277
  unknown: z.array(z.number().int())
24234
24278
  });
24279
+ /**
24280
+ * One alarm INPUT — a (rule, device) pair — the operator bypassed until the
24281
+ * next disarm ("Bypass this input until disarm" on a trigger notification, or
24282
+ * `nc.bypassAlarmInput`). Reported so an armed alarm with a silenced input
24283
+ * never looks fully armed (D62: off must never look like broken).
24284
+ */
24285
+ var NcAlarmInputBypassViewSchema = z.object({
24286
+ ruleId: z.string(),
24287
+ /** The rule's current name (its frozen name when the rule is gone). */
24288
+ ruleName: z.string(),
24289
+ /** The input: the sensor of the match, else its camera. */
24290
+ deviceId: z.number().int(),
24291
+ /** The input's current name. */
24292
+ name: z.string(),
24293
+ /** When it was bypassed (ms epoch). */
24294
+ since: z.number(),
24295
+ /** Triggers from this input dropped since. */
24296
+ dropped: z.number().int().min(0)
24297
+ });
24235
24298
  var NcAlarmLiveSchema = z.object({
24236
24299
  state: AlarmStateSchema,
24237
24300
  /** The mode being armed into (exit delay) or held; null when disarmed. */
24238
24301
  targetMode: AlarmArmModeSchema.nullable(),
24239
24302
  availableModes: z.array(AlarmArmModeSchema),
24240
24303
  openings: z.array(NcAlarmModeOpeningsSchema),
24241
- exclusions: z.array(NcAlarmExclusionViewSchema)
24304
+ exclusions: z.array(NcAlarmExclusionViewSchema),
24305
+ /**
24306
+ * Inputs bypassed for the rest of this arm session; cleared on disarm.
24307
+ * Defaulted so an older hub answer still parses (as "none known").
24308
+ */
24309
+ bypassedInputs: z.array(NcAlarmInputBypassViewSchema).default([])
24242
24310
  });
24243
24311
  var NcAlarmConfigSchema = z.object({
24244
24312
  /**
@@ -27735,6 +27803,7 @@ function createSystemProxy(api) {
27735
27803
  deviceHistory: {
27736
27804
  listNodeSeries: (input) => dispatch("deviceHistory", "listNodeSeries", "query", input),
27737
27805
  queryNode: (input) => dispatch("deviceHistory", "queryNode", "query", input),
27806
+ queryMany: (input) => dispatch("deviceHistory", "queryMany", "query", input),
27738
27807
  declareSeries: (input) => dispatch("deviceHistory", "declareSeries", "mutation", input),
27739
27808
  record: (input) => dispatch("deviceHistory", "record", "mutation", input),
27740
27809
  recordBuckets: (input) => dispatch("deviceHistory", "recordBuckets", "mutation", input),
@@ -294,9 +294,18 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
294
294
  * Drivers can use the `getProbeFlags()` helper to read the flag bag
295
295
  * with a typed cast.
296
296
  *
297
+ * Answer what you KNOW. A plain array is read as the complete list only
298
+ * while this device is `online` and probed; return
299
+ * `accessoryChildrenUnknown(reason)` whenever you cannot know the list right
300
+ * now (no credentials, parent not connected, a failed or partial read) —
301
+ * the kernel then deletes nothing. Return `accessoryChildrenComplete(list)`
302
+ * to say "connected, and this is the complete list" explicitly. A shrink is
303
+ * deleted only after a second agreeing complete read on a later probe (D49;
304
+ * `packages/system/src/kernel/moleculer/accessory-prune-gate.ts`).
305
+ *
297
306
  * Default: no children.
298
307
  */
299
- getAccessoryChildren(): readonly AccessoryChildSpec[];
308
+ getAccessoryChildren(): AccessoryChildrenAnswer;
300
309
  /**
301
310
  * Read the current feature-probe flag bag with a typed cast. Helper
302
311
  * for `getAccessoryChildren()` and `features` getters that derive
@@ -311,6 +320,30 @@ export declare abstract class BaseDevice<T extends z.ZodObject<z.core.$ZodLooseS
311
320
  */
312
321
  protected hasProbed(): boolean;
313
322
  }
323
+ /** "I cannot know my accessory children right now" — the kernel prunes nothing. */
324
+ export interface AccessoryChildrenUnknown {
325
+ readonly kind: 'unknown';
326
+ /** Why, for the log line (`no credentials`, `cloud not connected`, …). */
327
+ readonly reason: string;
328
+ /**
329
+ * Children known to exist even so (e.g. the core device of a cloud
330
+ * container): they are spawned, never used as the list to prune against.
331
+ */
332
+ readonly known?: readonly AccessoryChildSpec[];
333
+ }
334
+ /** "Connected, and this is the COMPLETE list" — the only answer a prune may follow. */
335
+ export interface AccessoryChildrenComplete {
336
+ readonly kind: 'complete';
337
+ readonly children: readonly AccessoryChildSpec[];
338
+ }
339
+ export type AccessoryChildrenRead = AccessoryChildrenComplete | AccessoryChildrenUnknown;
340
+ /**
341
+ * What `getAccessoryChildren()` may answer: a typed read, or a plain list
342
+ * (complete only while the parent is online and probed).
343
+ */
344
+ export type AccessoryChildrenAnswer = readonly AccessoryChildSpec[] | AccessoryChildrenRead;
345
+ export declare function accessoryChildrenUnknown(reason: string, known?: readonly AccessoryChildSpec[]): AccessoryChildrenUnknown;
346
+ export declare function accessoryChildrenComplete(children: readonly AccessoryChildSpec[]): AccessoryChildrenComplete;
314
347
  /**
315
348
  * Specification for one accessory child a parent device wants the
316
349
  * kernel to auto-spawn. Returned from `BaseDevice.getAccessoryChildren()`.
@@ -1,6 +1,6 @@
1
1
  export { ACCESSORY_LABEL, AccessoryKind, type AccessoryKindValue, accessoryStableId, } from './accessory.js';
2
- export type { AccessoryChildSpec } from './base-device.js';
3
- export { BaseDevice } from './base-device.js';
2
+ export type { AccessoryChildrenAnswer, AccessoryChildrenComplete, AccessoryChildrenRead, AccessoryChildrenUnknown, AccessoryChildSpec, } from './base-device.js';
3
+ export { accessoryChildrenComplete, accessoryChildrenUnknown, BaseDevice } from './base-device.js';
4
4
  export type { DeviceRestoreReport, DeviceSummary, DiscoveryCandidate, FieldProbeResult, ProviderStatus, } from './base-device-provider.js';
5
5
  export { BaseDeviceProvider, toDeviceSummary } from './base-device-provider.js';
6
6
  export type { DeviceRestoreRetrySchedulerOptions, InitialRestoreFailure, PermanentRestoreFailure, PermanentRestoreFailureHandler, RestoreAttemptFn, } from './device-restore-retry.js';
@@ -2400,6 +2400,13 @@ export type AppRouter = TrpcCoreRouter<{
2400
2400
  output: z.infer<typeof deviceHistoryCapability.methods.queryNode.output>;
2401
2401
  meta: object;
2402
2402
  }>;
2403
+ queryMany: TRPCQueryProcedure<{
2404
+ input: {
2405
+ [x: string]: unknown;
2406
+ } & z.input<typeof deviceHistoryCapability.methods.queryMany.input>;
2407
+ output: z.infer<typeof deviceHistoryCapability.methods.queryMany.output>;
2408
+ meta: object;
2409
+ }>;
2403
2410
  declareSeries: TRPCMutationProcedure<{
2404
2411
  input: {
2405
2412
  [x: string]: unknown;
@@ -11508,6 +11515,7 @@ export type AppRouter = TrpcCoreRouter<{
11508
11515
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
11509
11516
  query: import("@trpc/server").TRPCQueryProcedure<{
11510
11517
  input: {
11518
+ source?: string | undefined;
11511
11519
  level?: "error" | "debug" | "info" | "warn" | undefined;
11512
11520
  since?: number | undefined;
11513
11521
  until?: number | undefined;
@@ -11525,14 +11533,47 @@ export type AppRouter = TrpcCoreRouter<{
11525
11533
  sessionId?: string | undefined;
11526
11534
  requestId?: string | undefined;
11527
11535
  } | undefined;
11536
+ text?: string | undefined;
11537
+ before?: string | undefined;
11538
+ after?: string | undefined;
11539
+ budgetMs?: number | undefined;
11540
+ };
11541
+ output: {
11542
+ entries: {
11543
+ timestamp: string;
11544
+ level: string;
11545
+ message: string;
11546
+ id?: string | undefined;
11547
+ scope?: string | undefined;
11548
+ tags?: Record<string, string | undefined> | undefined;
11549
+ meta?: Record<string, unknown> | undefined;
11550
+ }[];
11551
+ nextBefore: string | null;
11552
+ nextAfter: string | null;
11553
+ scannedBytes: number;
11554
+ done: boolean;
11555
+ source: string;
11556
+ cancelled?: boolean | undefined;
11528
11557
  };
11558
+ meta: object;
11559
+ }>;
11560
+ sources: import("@trpc/server").TRPCQueryProcedure<{
11561
+ input: void;
11529
11562
  output: {
11530
- timestamp: string;
11531
- level: string;
11532
- message: string;
11533
- scope?: string | undefined;
11534
- tags?: Record<string, string | undefined> | undefined;
11535
- meta?: Record<string, unknown> | undefined;
11563
+ addonId: string;
11564
+ readable: boolean;
11565
+ reason: string | null;
11566
+ isDefault: boolean;
11567
+ retentionDays: number | null;
11568
+ filters: {
11569
+ deviceId: boolean;
11570
+ addonId: boolean;
11571
+ nodeId: boolean;
11572
+ tags: boolean;
11573
+ level: boolean;
11574
+ text: boolean;
11575
+ timeRange: boolean;
11576
+ };
11536
11577
  }[];
11537
11578
  meta: object;
11538
11579
  }>;
@@ -11576,6 +11617,7 @@ export type AppRouter = TrpcCoreRouter<{
11576
11617
  sessionId?: string | undefined;
11577
11618
  requestId?: string | undefined;
11578
11619
  } | undefined;
11620
+ text?: string | undefined;
11579
11621
  };
11580
11622
  output: AsyncIterable<unknown, any, any>;
11581
11623
  meta: object;
@@ -11583,6 +11625,7 @@ export type AppRouter = TrpcCoreRouter<{
11583
11625
  }>> & import("@trpc/server").TRPCDecorateCreateRouterOptions<{
11584
11626
  query: import("@trpc/server").TRPCQueryProcedure<{
11585
11627
  input: {
11628
+ source?: string | undefined;
11586
11629
  level?: "error" | "debug" | "info" | "warn" | undefined;
11587
11630
  since?: number | undefined;
11588
11631
  until?: number | undefined;
@@ -11600,14 +11643,47 @@ export type AppRouter = TrpcCoreRouter<{
11600
11643
  sessionId?: string | undefined;
11601
11644
  requestId?: string | undefined;
11602
11645
  } | undefined;
11646
+ text?: string | undefined;
11647
+ before?: string | undefined;
11648
+ after?: string | undefined;
11649
+ budgetMs?: number | undefined;
11650
+ };
11651
+ output: {
11652
+ entries: {
11653
+ timestamp: string;
11654
+ level: string;
11655
+ message: string;
11656
+ id?: string | undefined;
11657
+ scope?: string | undefined;
11658
+ tags?: Record<string, string | undefined> | undefined;
11659
+ meta?: Record<string, unknown> | undefined;
11660
+ }[];
11661
+ nextBefore: string | null;
11662
+ nextAfter: string | null;
11663
+ scannedBytes: number;
11664
+ done: boolean;
11665
+ source: string;
11666
+ cancelled?: boolean | undefined;
11603
11667
  };
11668
+ meta: object;
11669
+ }>;
11670
+ sources: import("@trpc/server").TRPCQueryProcedure<{
11671
+ input: void;
11604
11672
  output: {
11605
- timestamp: string;
11606
- level: string;
11607
- message: string;
11608
- scope?: string | undefined;
11609
- tags?: Record<string, string | undefined> | undefined;
11610
- meta?: Record<string, unknown> | undefined;
11673
+ addonId: string;
11674
+ readable: boolean;
11675
+ reason: string | null;
11676
+ isDefault: boolean;
11677
+ retentionDays: number | null;
11678
+ filters: {
11679
+ deviceId: boolean;
11680
+ addonId: boolean;
11681
+ nodeId: boolean;
11682
+ tags: boolean;
11683
+ level: boolean;
11684
+ text: boolean;
11685
+ timeRange: boolean;
11686
+ };
11611
11687
  }[];
11612
11688
  meta: object;
11613
11689
  }>;
@@ -11651,6 +11727,7 @@ export type AppRouter = TrpcCoreRouter<{
11651
11727
  sessionId?: string | undefined;
11652
11728
  requestId?: string | undefined;
11653
11729
  } | undefined;
11730
+ text?: string | undefined;
11654
11731
  };
11655
11732
  output: AsyncIterable<unknown, any, any>;
11656
11733
  meta: object;
@@ -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: 29 caps, 71 methods with defaults.
14
+ * Coverage: 29 caps, 72 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
  /**
@@ -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: 27 collection caps, 45 array methods.
11
+ * Coverage: 26 collection caps, 44 array methods.
12
12
  */
13
13
  export declare const COLLECTION_ARRAY_METHODS: Readonly<Record<string, readonly string[]>>;
14
14
  /**
@@ -21,7 +21,7 @@ export declare function isCollectionArrayMethodName(capName: string, method: str
21
21
  * Per capability, the methods declared `optionalMethod` — the ones whose
22
22
  * ABSENCE on a provider is a fact about that provider, not a bug.
23
23
  *
24
- * Coverage: 1 caps, 4 methods.
24
+ * Coverage: 2 caps, 7 methods.
25
25
  */
26
26
  export declare const PROVIDER_OPTIONAL_METHODS: Readonly<Record<string, readonly string[]>>;
27
27
  /**
@@ -1,7 +1,7 @@
1
1
  import type { CapabilityHistoryField } from '../capabilities/capability-definition.js';
2
2
  /**
3
3
  * Cap history catalog, projected from every `*.cap.ts` `history` block.
4
- * 34 caps with series (62 series), 37 caps answered `'none'`.
4
+ * 40 caps with series (77 series), 31 caps answered `'none'`.
5
5
  * Field keys are `runtimeState` paths (`a.b` into fixed objects only).
6
6
  */
7
7
  export declare const HISTORY_CATALOG: Readonly<Record<string, Readonly<Record<string, CapabilityHistoryField>>>>;
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1382 method paths across 179 capabilities.
9
+ * Coverage: 1384 method paths across 179 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -6,8 +6,8 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 550 methods carry a device reference, of which
10
- * 179 are on SYSTEM-scope caps.
9
+ * Coverage: 551 methods carry a device reference, of which
10
+ * 180 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
13
13
  * a numeric device field (targets[].deviceId) are all mapped; the matcher
@@ -78,7 +78,7 @@ export interface SystemProxy {
78
78
  readonly deviceAdoption: Pick<InferProvider<typeof deviceAdoptionCapability>, 'listCandidateFilters' | 'listCandidates' | 'getCandidate' | 'refresh' | 'adopt' | 'release' | 'resync'>;
79
79
  readonly deviceCredentials: Pick<InferProvider<typeof deviceCredentialsCapability>, 'listDeviceCredentials' | 'startEnrollment' | 'revokeDeviceCredential' | 'getDeviceCertificateSettings' | 'setDeviceCertificateSettings' | 'deleteDeviceCredential' | 'getDeviceCaStatus' | 'renameDeviceCredential'>;
80
80
  readonly deviceExport: Pick<InferProvider<typeof deviceExportCapability>, 'getStatus' | 'listSupportedDeviceKinds' | 'listExposedDevices' | 'exposeDevice' | 'unexposeDevice'>;
81
- readonly deviceHistory: Pick<InferProvider<typeof deviceHistoryCapability>, 'listNodeSeries' | 'queryNode' | 'declareSeries' | 'record' | 'recordBuckets' | 'getStatus'>;
81
+ readonly deviceHistory: Pick<InferProvider<typeof deviceHistoryCapability>, 'listNodeSeries' | 'queryNode' | 'queryMany' | 'declareSeries' | 'record' | 'recordBuckets' | 'getStatus'>;
82
82
  readonly deviceManager: Pick<InferProvider<typeof deviceManagerCapability>, 'allocateDeviceId' | 'migrateDevice' | 'registerDevice' | 'removeDevice' | 'persistConfig' | 'getRoleDisplayDefaults' | 'setRoleDisplayDefaults' | 'listLocations' | 'addLocation' | 'removeLocation' | 'renameLocation' | 'listLocationIcons' | 'setLocationIcon' | 'listLocationDescriptions' | 'setLocationDescription' | 'listSiteZones' | 'setSiteZone' | 'removeSiteZone' | 'renameSiteZone' | 'setLocationZone' | 'listPersistedByAddon' | 'listAll' | 'getChildren' | 'getChildrenBatch' | 'getLinkedDevicesBatch' | 'listDeletedSince' | 'cleanupDeletedDevicesData' | 'removeByIntegration' | 'getBindingsBatch' | 'getAllBindings' | 'listDeviceIdsByCaps' | 'listWrappersForCap' | 'listBindableCapsForDeviceType' | 'discoverDevices' | 'adoptDevice' | 'getCreationSchema' | 'createDevice' | 'testCreationField' | 'adoptionListCandidateFilters' | 'adoptionListCandidates' | 'adoptionRefresh' | 'adoptionAdopt' | 'adoptionRelease' | 'adoptionStartJob' | 'adoptionListJobs' | 'adoptionCancelJob' | 'adoptionResync' | 'discoveryProviders' | 'discoverAllProviders' | 'discoverProvider' | 'providerCreationType' | 'providerDiscoveryParamsSchema' | 'getDeviceStatusAggregateBatch'>;
83
83
  readonly deviceProvider: Pick<InferProvider<typeof deviceProviderCapability>, 'start' | 'stop' | 'getStatus' | 'getDevices' | 'reloadDevice' | 'supportsDiscovery' | 'discoverDevices' | 'getDiscoveryParamsSchema' | 'getManualCreationType' | 'adoptDiscoveredDevice' | 'supportsManualCreation' | 'getChildCreationSchema' | 'createDevice' | 'testCreationField'>;
84
84
  readonly deviceState: Pick<InferProvider<typeof deviceStateCapability>, 'getAllSnapshots' | 'listClaims'>;
package/dist/index.d.ts CHANGED
@@ -175,8 +175,8 @@ export { DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, evaluateSensorEdge, evaluateSensor
175
175
  export * from './constants.js';
176
176
  export type { AccessoryKindValue } from './device/accessory.js';
177
177
  export { ACCESSORY_LABEL, AccessoryKind, accessoryStableId, } from './device/accessory.js';
178
- export type { AccessoryChildSpec } from './device/base-device.js';
179
- export { BaseDevice } from './device/base-device.js';
178
+ export type { AccessoryChildrenAnswer, AccessoryChildrenComplete, AccessoryChildrenRead, AccessoryChildrenUnknown, AccessoryChildSpec, } from './device/base-device.js';
179
+ export { accessoryChildrenComplete, accessoryChildrenUnknown, BaseDevice, } from './device/base-device.js';
180
180
  export type { DeviceRestoreReport, DeviceSummary, DiscoveryCandidate, FieldProbeResult, } from './device/base-device-provider.js';
181
181
  export { BaseDeviceProvider, toDeviceSummary } from './device/base-device-provider.js';
182
182
  export type { BatteryPresence, BatteryPresenceInput } from './device/battery-presence.js';
@@ -261,6 +261,7 @@ export { isAudioClassName, isBaseConditionKey, knownValues, NC_BASE_CONDITION_KE
261
261
  export { type PreparedAction, type PreparedAttachment, type PreparedNotification, prepareNotification, type ResolvedLevel, } from './notification/degrade-engine.js';
262
262
  export { htmlToText, markdownToHtmlLite, markdownToText, type NotificationFormat as NotificationBodyFormat, resolveFormat, textToHtml, transcodeBody, } from './notification/format-transcode.js';
263
263
  export { conditionExclusionReason, conditionVisibleForKind, defaultDeliveryForSection, droppedConditionsForKind, isAudioRule, isOccupancyRule, isSystemDelivery, isSystemRuleKind, kindsForDiscriminator, NC_AUDIO_SEED, NC_CAMERA_SCOPE_CAP_NAME, NC_OCCUPANCY_DEFAULTS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_SECTIONS, NC_SYSTEM_DELIVERY, NC_SYSTEM_RULE_KINDS, type NcDroppedCondition, type NcKindVisibilitySubject, type NcRuleEditorSection, type NcRuleEditorSectionKey, type NcRuleKind, type NcRuleKindSpec, type NcRuleOwningSectionKey, type NcRuleSection, type NcRuleSectionKey, type NcRuleConditionsSubject, type NcRuleSectionSubject, type NcRuleSeed, parseRuleSection, ruleDeviceCompatCapNames, ruleDeviceCompatCapQueries, ruleEditorSectionsForKind, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, systemFamilyOfKind, systemRuleKindOf, } from './notification/rule-kinds.js';
264
+ export { imageModesForKind, legacyImageMode, NC_MEDIA_IMAGE_MODES, type NcMediaRuleSubject, ncMediaPolicyError, normalizeNcMediaPolicy, resolveNcMediaImage, ruleTriggerZoneIds, } from './notification/media-image.js';
264
265
  export { isScheduleActive } from './notification/schedule.js';
265
266
  export { isAlarmControllableCap, NC_ALARM_CONTROLLABLE_CAPS, NC_ALARM_OPENING_EVENT_KINDS, NC_SENSOR_TRANSITION_NEVER_FIRES_WARNING, type NcAlarmControllableCap, type NcAlarmMembershipSubject, type NcAlarmOpeningEventKind, ruleAutoTriggersAlarm, ruleBelongsToAlarm, ruleGatedOnArmedState, sensorTransitionNeverFires, } from './notification/alarm-membership.js';
266
267
  export { alarmDeviceBlocksArming, alarmDeviceSecureOnArm, type AlarmDeviceBlocksInput, type AlarmDeviceSecureOnArmInput, type NcAlarmSecureActuation, secureActuationFor, } from './notification/alarm-controllable.js';