@camstack/types 1.2.450 → 1.2.452

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 (55) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/addon/base-addon.d.ts +27 -0
  3. package/dist/addon.js +9 -4
  4. package/dist/addon.mjs +9 -4
  5. package/dist/automation/condition-eval.d.ts +20 -5
  6. package/dist/automation/detection-subject.d.ts +154 -0
  7. package/dist/automation/detection-trigger.d.ts +16 -6
  8. package/dist/automation/index.d.ts +10 -4
  9. package/dist/automation/legacy-recipe.d.ts +130 -0
  10. package/dist/automation/normalize-units.d.ts +4 -3
  11. package/dist/automation/recipe.d.ts +286 -142
  12. package/dist/automation/stationary-trigger.d.ts +4 -4
  13. package/dist/automation/step-runner.d.ts +3 -1
  14. package/dist/automation/trace.d.ts +51 -6
  15. package/dist/automation/when.d.ts +295 -0
  16. package/dist/capabilities/actions.cap.d.ts +10 -0
  17. package/dist/capabilities/addon-settings.cap.d.ts +18 -0
  18. package/dist/capabilities/broker.cap.d.ts +8 -0
  19. package/dist/capabilities/core-blocks.cap.d.ts +2546 -51
  20. package/dist/capabilities/device-discovery.cap.d.ts +2 -0
  21. package/dist/capabilities/device-manager.cap.d.ts +16 -1
  22. package/dist/capabilities/device-provider.cap.d.ts +165 -0
  23. package/dist/capabilities/index.d.ts +3 -3
  24. package/dist/capabilities/integrations.cap.d.ts +1 -0
  25. package/dist/capabilities/keychain.cap.d.ts +12 -0
  26. package/dist/capabilities/local-network.cap.d.ts +198 -0
  27. package/dist/capabilities/reboot.cap.d.ts +1 -1
  28. package/dist/capabilities/storage-admin.cap.d.ts +155 -0
  29. package/dist/client.js +21 -1
  30. package/dist/client.mjs +21 -1
  31. package/dist/{composition-kSuOifuG.mjs → composition-C7WdThmP.mjs} +1 -1
  32. package/dist/{composition-CO6Sak-s.js → composition-tP-vAKqU.js} +1 -1
  33. package/dist/device/base-device-provider.d.ts +17 -0
  34. package/dist/device/device-type.d.ts +7 -1
  35. package/dist/{err-msg-DWXWc0Di.mjs → err-msg-BD5buxvT.mjs} +6 -0
  36. package/dist/{err-msg-EJhsFHqa.js → err-msg-DkPZXb-g.js} +6 -0
  37. package/dist/generated/addon-api.d.ts +84 -0
  38. package/dist/generated/collection-array-methods.d.ts +1 -1
  39. package/dist/generated/customize-catalog.d.ts +1 -1
  40. package/dist/generated/method-access-map.d.ts +1 -1
  41. package/dist/generated/system-proxy.d.ts +5 -3
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.js +1992 -713
  44. package/dist/index.mjs +1957 -710
  45. package/dist/interfaces/addon.d.ts +16 -0
  46. package/dist/interfaces/config-ui-secrets.d.ts +5 -3
  47. package/dist/node.js +2 -2
  48. package/dist/node.mjs +2 -2
  49. package/dist/{sleep-BSPhInRm.js → sleep-CewR0zRz.js} +125 -6
  50. package/dist/{sleep-63gM_1JR.mjs → sleep-CeyhrcOk.mjs} +125 -6
  51. package/dist/vendor-login-proxy/cookie-jar.d.ts +30 -0
  52. package/dist/vendor-login-proxy/index.d.ts +1 -0
  53. package/dist/vendor-login-proxy/login-proxy.d.ts +6 -0
  54. package/dist/vendor-login-proxy/url-rewrite.d.ts +9 -2
  55. package/package.json +1 -1
@@ -23,6 +23,7 @@ export declare const StorageKindSchema: z.ZodObject<{
23
23
  dropped: "dropped";
24
24
  orphaned: "orphaned";
25
25
  }>;
26
+ declaredThisBoot: z.ZodBoolean;
26
27
  rows: z.ZodNullable<z.ZodNumber>;
27
28
  bytesEstimate: z.ZodNullable<z.ZodNumber>;
28
29
  writeTrigger: z.ZodString;
@@ -100,6 +101,68 @@ export declare const StorageKindSchema: z.ZodObject<{
100
101
  }, z.core.$strict>;
101
102
  }, z.core.$strip>;
102
103
  export type StorageKind = z.infer<typeof StorageKindSchema>;
104
+ /** Why an addon's data is suspected of being left behind. */
105
+ export declare const StaleVerdictSchema: z.ZodEnum<{
106
+ orphaned: "orphaned";
107
+ stale: "stale";
108
+ unknown: "unknown";
109
+ }>;
110
+ export type StaleVerdict = z.infer<typeof StaleVerdictSchema>;
111
+ /** A record kind nobody declared since its owner started, or whose owner is gone. */
112
+ export declare const StaleKindFindingSchema: z.ZodObject<{
113
+ owner: z.ZodString;
114
+ kind: z.ZodString;
115
+ verdict: z.ZodEnum<{
116
+ orphaned: "orphaned";
117
+ unknown: "unknown";
118
+ }>;
119
+ reason: z.ZodString;
120
+ rows: z.ZodNullable<z.ZodNumber>;
121
+ protected: z.ZodBoolean;
122
+ }, z.core.$strip>;
123
+ export type StaleKindFinding = z.infer<typeof StaleKindFindingSchema>;
124
+ /** A stored global-settings key the running addon no longer declares. */
125
+ export declare const StaleSettingsKeyFindingSchema: z.ZodObject<{
126
+ addonId: z.ZodString;
127
+ key: z.ZodString;
128
+ secretRefs: z.ZodArray<z.ZodString>;
129
+ }, z.core.$strip>;
130
+ export type StaleSettingsKeyFinding = z.infer<typeof StaleSettingsKeyFindingSchema>;
131
+ /** An addon the audit could not judge, with the reason. Never reported as stale. */
132
+ export declare const StaleUnknownSchema: z.ZodObject<{
133
+ subject: z.ZodString;
134
+ reason: z.ZodString;
135
+ }, z.core.$strip>;
136
+ export declare const StaleDataReportSchema: z.ZodObject<{
137
+ scannedAt: z.ZodNullable<z.ZodNumber>;
138
+ scanning: z.ZodBoolean;
139
+ trigger: z.ZodNullable<z.ZodEnum<{
140
+ boot: "boot";
141
+ interval: "interval";
142
+ manual: "manual";
143
+ }>>;
144
+ kinds: z.ZodArray<z.ZodObject<{
145
+ owner: z.ZodString;
146
+ kind: z.ZodString;
147
+ verdict: z.ZodEnum<{
148
+ orphaned: "orphaned";
149
+ unknown: "unknown";
150
+ }>;
151
+ reason: z.ZodString;
152
+ rows: z.ZodNullable<z.ZodNumber>;
153
+ protected: z.ZodBoolean;
154
+ }, z.core.$strip>>;
155
+ settingsKeys: z.ZodArray<z.ZodObject<{
156
+ addonId: z.ZodString;
157
+ key: z.ZodString;
158
+ secretRefs: z.ZodArray<z.ZodString>;
159
+ }, z.core.$strip>>;
160
+ unknown: z.ZodArray<z.ZodObject<{
161
+ subject: z.ZodString;
162
+ reason: z.ZodString;
163
+ }, z.core.$strip>>;
164
+ }, z.core.$strip>;
165
+ export type StaleDataReport = z.infer<typeof StaleDataReportSchema>;
103
166
  /**
104
167
  * storage-admin - the operator's maintenance reach into the databases: list
105
168
  * their tables and record kinds, read a kind for diagnosis. Read-only: a table
@@ -151,6 +214,7 @@ export declare const storageAdminCapability: {
151
214
  dropped: "dropped";
152
215
  orphaned: "orphaned";
153
216
  }>;
217
+ declaredThisBoot: z.ZodBoolean;
154
218
  rows: z.ZodNullable<z.ZodNumber>;
155
219
  bytesEstimate: z.ZodNullable<z.ZodNumber>;
156
220
  writeTrigger: z.ZodString;
@@ -265,6 +329,97 @@ export declare const storageAdminCapability: {
265
329
  }, z.core.$strip>>;
266
330
  nextCursor: z.ZodNullable<z.ZodString>;
267
331
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
332
+ /**
333
+ * The last stale-data scan (read-only detection): record kinds left behind
334
+ * and settings keys no running addon declares. Held in memory; a scan runs
335
+ * at hub boot, every 24 h and on `scanStaleData`.
336
+ */
337
+ readonly staleDataReport: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
338
+ scannedAt: z.ZodNullable<z.ZodNumber>;
339
+ scanning: z.ZodBoolean;
340
+ trigger: z.ZodNullable<z.ZodEnum<{
341
+ boot: "boot";
342
+ interval: "interval";
343
+ manual: "manual";
344
+ }>>;
345
+ kinds: z.ZodArray<z.ZodObject<{
346
+ owner: z.ZodString;
347
+ kind: z.ZodString;
348
+ verdict: z.ZodEnum<{
349
+ orphaned: "orphaned";
350
+ unknown: "unknown";
351
+ }>;
352
+ reason: z.ZodString;
353
+ rows: z.ZodNullable<z.ZodNumber>;
354
+ protected: z.ZodBoolean;
355
+ }, z.core.$strip>>;
356
+ settingsKeys: z.ZodArray<z.ZodObject<{
357
+ addonId: z.ZodString;
358
+ key: z.ZodString;
359
+ secretRefs: z.ZodArray<z.ZodString>;
360
+ }, z.core.$strip>>;
361
+ unknown: z.ZodArray<z.ZodObject<{
362
+ subject: z.ZodString;
363
+ reason: z.ZodString;
364
+ }, z.core.$strip>>;
365
+ }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
366
+ /** Scan now. Detection only: it logs findings (owner and key, never values) and changes nothing. */
367
+ readonly scanStaleData: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
368
+ scannedAt: z.ZodNullable<z.ZodNumber>;
369
+ scanning: z.ZodBoolean;
370
+ trigger: z.ZodNullable<z.ZodEnum<{
371
+ boot: "boot";
372
+ interval: "interval";
373
+ manual: "manual";
374
+ }>>;
375
+ kinds: z.ZodArray<z.ZodObject<{
376
+ owner: z.ZodString;
377
+ kind: z.ZodString;
378
+ verdict: z.ZodEnum<{
379
+ orphaned: "orphaned";
380
+ unknown: "unknown";
381
+ }>;
382
+ reason: z.ZodString;
383
+ rows: z.ZodNullable<z.ZodNumber>;
384
+ protected: z.ZodBoolean;
385
+ }, z.core.$strip>>;
386
+ settingsKeys: z.ZodArray<z.ZodObject<{
387
+ addonId: z.ZodString;
388
+ key: z.ZodString;
389
+ secretRefs: z.ZodArray<z.ZodString>;
390
+ }, z.core.$strip>>;
391
+ unknown: z.ZodArray<z.ZodObject<{
392
+ subject: z.ZodString;
393
+ reason: z.ZodString;
394
+ }, z.core.$strip>>;
395
+ }, z.core.$strip>, "mutation">;
396
+ /**
397
+ * Drop an ORPHANED kind: its rows, their keychain values, then mark it
398
+ * dropped. The verdict is re-checked at call time; anything not still
399
+ * orphaned (or a protected owner) is refused.
400
+ */
401
+ readonly dropOrphanedKind: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
402
+ owner: z.ZodString;
403
+ kind: z.ZodString;
404
+ }, z.core.$strip>, z.ZodObject<{
405
+ deleted: z.ZodNumber;
406
+ secretsReleased: z.ZodNumber;
407
+ }, z.core.$strip>, "mutation"> & {
408
+ readonly caller: 'required';
409
+ };
410
+ /**
411
+ * Unset one stale settings key on a running addon (an owner-side write that
412
+ * also clears the keychain values the key held). Re-checked at call time.
413
+ */
414
+ readonly unsetStaleSettingsKey: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
415
+ addonId: z.ZodString;
416
+ key: z.ZodString;
417
+ }, z.core.$strip>, z.ZodObject<{
418
+ removed: z.ZodBoolean;
419
+ secretsCleared: z.ZodNumber;
420
+ }, z.core.$strip>, "mutation"> & {
421
+ readonly caller: 'required';
422
+ };
268
423
  };
269
424
  };
270
425
  export type IStorageAdminProvider = InferProvider<typeof storageAdminCapability>;
package/dist/client.js CHANGED
@@ -711,6 +711,12 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
711
711
  DeviceType["Washer"] = "washer";
712
712
  /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
713
713
  DeviceType["Dryer"] = "dryer";
714
+ /** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
715
+ * other radio-to-IP bridges). It carries the box's own facts (firmware,
716
+ * address, connection state) and the actions the box really supports
717
+ * (`reboot`, `device-admin-link`). Products are NOT its children — they are
718
+ * adopted beside it — and its connection settings stay on the integration. */
719
+ DeviceType["Gateway"] = "gateway";
714
720
  return DeviceType;
715
721
  }({});
716
722
  zod.z.enum(["new-session", "step-up"]);
@@ -28381,7 +28387,9 @@ function createSystemProxy(api) {
28381
28387
  addonSettings: {
28382
28388
  getGlobalSettings: (input) => dispatch("addonSettings", "getGlobalSettings", "query", input),
28383
28389
  updateGlobalSettings: (input) => dispatch("addonSettings", "updateGlobalSettings", "mutation", input),
28384
- getIntegrationSettings: (input) => dispatch("addonSettings", "getIntegrationSettings", "query", input)
28390
+ getIntegrationSettings: (input) => dispatch("addonSettings", "getIntegrationSettings", "query", input),
28391
+ getDeclaredSettingsKeys: (input) => dispatch("addonSettings", "getDeclaredSettingsKeys", "query", input),
28392
+ unsetStoredSettingsKeys: (input) => dispatch("addonSettings", "unsetStoredSettingsKeys", "mutation", input)
28385
28393
  },
28386
28394
  addonWidgets: { listWidgets: (input) => dispatch("addonWidgets", "listWidgets", "query", input) },
28387
28395
  alerts: {
@@ -28596,6 +28604,8 @@ function createSystemProxy(api) {
28596
28604
  reloadDevice: (input) => dispatch("deviceProvider", "reloadDevice", "mutation", input),
28597
28605
  supportsDiscovery: (input) => dispatch("deviceProvider", "supportsDiscovery", "query", input),
28598
28606
  discoverDevices: (input) => dispatch("deviceProvider", "discoverDevices", "mutation", input),
28607
+ getDiscoveryModes: (input) => dispatch("deviceProvider", "getDiscoveryModes", "query", input),
28608
+ classifyDiscoveryHits: (input) => dispatch("deviceProvider", "classifyDiscoveryHits", "mutation", input),
28599
28609
  getDiscoveryParamsSchema: (input) => dispatch("deviceProvider", "getDiscoveryParamsSchema", "query", input),
28600
28610
  getManualCreationType: (input) => dispatch("deviceProvider", "getManualCreationType", "query", input),
28601
28611
  adoptDiscoveredDevice: (input) => dispatch("deviceProvider", "adoptDiscoveredDevice", "mutation", input),
@@ -28701,6 +28711,9 @@ function createSystemProxy(api) {
28701
28711
  uploadCertificate: (input) => dispatch("localNetwork", "uploadCertificate", "mutation", input),
28702
28712
  downloadCa: (input) => dispatch("localNetwork", "downloadCa", "query", input),
28703
28713
  useStoredUploadedCertificate: (input) => dispatch("localNetwork", "useStoredUploadedCertificate", "mutation", input),
28714
+ scanNetwork: (input) => dispatch("localNetwork", "scanNetwork", "mutation", input),
28715
+ getScanSubnets: (input) => dispatch("localNetwork", "getScanSubnets", "query", input),
28716
+ setScanSubnets: (input) => dispatch("localNetwork", "setScanSubnets", "mutation", input),
28704
28717
  revertToGeneratedCertificate: (input) => dispatch("localNetwork", "revertToGeneratedCertificate", "mutation", input)
28705
28718
  },
28706
28719
  meshNetwork: {
@@ -28923,6 +28936,13 @@ function createSystemProxy(api) {
28923
28936
  assignPlates: (input) => dispatch("plateGallery", "assignPlates", "mutation", input),
28924
28937
  unassignPlates: (input) => dispatch("plateGallery", "unassignPlates", "mutation", input)
28925
28938
  },
28939
+ platformProbe: {
28940
+ getCapabilities: (input) => dispatch("platformProbe", "getCapabilities", "query", input),
28941
+ getHardware: (input) => dispatch("platformProbe", "getHardware", "query", input),
28942
+ resolveInferenceConfig: (input) => dispatch("platformProbe", "resolveInferenceConfig", "query", input),
28943
+ resolveHwAccel: (input) => dispatch("platformProbe", "resolveHwAccel", "query", input),
28944
+ rescanAccelerators: (input) => dispatch("platformProbe", "rescanAccelerators", "mutation", input)
28945
+ },
28926
28946
  recordEntries: {
28927
28947
  listEntryKinds: (input) => dispatch("recordEntries", "listEntryKinds", "query", input),
28928
28948
  listEntries: (input) => dispatch("recordEntries", "listEntries", "query", input),
package/dist/client.mjs CHANGED
@@ -710,6 +710,12 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
710
710
  DeviceType["Washer"] = "washer";
711
711
  /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
712
712
  DeviceType["Dryer"] = "dryer";
713
+ /** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
714
+ * other radio-to-IP bridges). It carries the box's own facts (firmware,
715
+ * address, connection state) and the actions the box really supports
716
+ * (`reboot`, `device-admin-link`). Products are NOT its children — they are
717
+ * adopted beside it — and its connection settings stay on the integration. */
718
+ DeviceType["Gateway"] = "gateway";
713
719
  return DeviceType;
714
720
  }({});
715
721
  z.enum(["new-session", "step-up"]);
@@ -28380,7 +28386,9 @@ function createSystemProxy(api) {
28380
28386
  addonSettings: {
28381
28387
  getGlobalSettings: (input) => dispatch("addonSettings", "getGlobalSettings", "query", input),
28382
28388
  updateGlobalSettings: (input) => dispatch("addonSettings", "updateGlobalSettings", "mutation", input),
28383
- getIntegrationSettings: (input) => dispatch("addonSettings", "getIntegrationSettings", "query", input)
28389
+ getIntegrationSettings: (input) => dispatch("addonSettings", "getIntegrationSettings", "query", input),
28390
+ getDeclaredSettingsKeys: (input) => dispatch("addonSettings", "getDeclaredSettingsKeys", "query", input),
28391
+ unsetStoredSettingsKeys: (input) => dispatch("addonSettings", "unsetStoredSettingsKeys", "mutation", input)
28384
28392
  },
28385
28393
  addonWidgets: { listWidgets: (input) => dispatch("addonWidgets", "listWidgets", "query", input) },
28386
28394
  alerts: {
@@ -28595,6 +28603,8 @@ function createSystemProxy(api) {
28595
28603
  reloadDevice: (input) => dispatch("deviceProvider", "reloadDevice", "mutation", input),
28596
28604
  supportsDiscovery: (input) => dispatch("deviceProvider", "supportsDiscovery", "query", input),
28597
28605
  discoverDevices: (input) => dispatch("deviceProvider", "discoverDevices", "mutation", input),
28606
+ getDiscoveryModes: (input) => dispatch("deviceProvider", "getDiscoveryModes", "query", input),
28607
+ classifyDiscoveryHits: (input) => dispatch("deviceProvider", "classifyDiscoveryHits", "mutation", input),
28598
28608
  getDiscoveryParamsSchema: (input) => dispatch("deviceProvider", "getDiscoveryParamsSchema", "query", input),
28599
28609
  getManualCreationType: (input) => dispatch("deviceProvider", "getManualCreationType", "query", input),
28600
28610
  adoptDiscoveredDevice: (input) => dispatch("deviceProvider", "adoptDiscoveredDevice", "mutation", input),
@@ -28700,6 +28710,9 @@ function createSystemProxy(api) {
28700
28710
  uploadCertificate: (input) => dispatch("localNetwork", "uploadCertificate", "mutation", input),
28701
28711
  downloadCa: (input) => dispatch("localNetwork", "downloadCa", "query", input),
28702
28712
  useStoredUploadedCertificate: (input) => dispatch("localNetwork", "useStoredUploadedCertificate", "mutation", input),
28713
+ scanNetwork: (input) => dispatch("localNetwork", "scanNetwork", "mutation", input),
28714
+ getScanSubnets: (input) => dispatch("localNetwork", "getScanSubnets", "query", input),
28715
+ setScanSubnets: (input) => dispatch("localNetwork", "setScanSubnets", "mutation", input),
28703
28716
  revertToGeneratedCertificate: (input) => dispatch("localNetwork", "revertToGeneratedCertificate", "mutation", input)
28704
28717
  },
28705
28718
  meshNetwork: {
@@ -28922,6 +28935,13 @@ function createSystemProxy(api) {
28922
28935
  assignPlates: (input) => dispatch("plateGallery", "assignPlates", "mutation", input),
28923
28936
  unassignPlates: (input) => dispatch("plateGallery", "unassignPlates", "mutation", input)
28924
28937
  },
28938
+ platformProbe: {
28939
+ getCapabilities: (input) => dispatch("platformProbe", "getCapabilities", "query", input),
28940
+ getHardware: (input) => dispatch("platformProbe", "getHardware", "query", input),
28941
+ resolveInferenceConfig: (input) => dispatch("platformProbe", "resolveInferenceConfig", "query", input),
28942
+ resolveHwAccel: (input) => dispatch("platformProbe", "resolveHwAccel", "query", input),
28943
+ rescanAccelerators: (input) => dispatch("platformProbe", "rescanAccelerators", "mutation", input)
28944
+ },
28925
28945
  recordEntries: {
28926
28946
  listEntryKinds: (input) => dispatch("recordEntries", "listEntryKinds", "query", input),
28927
28947
  listEntries: (input) => dispatch("recordEntries", "listEntries", "query", input),
@@ -1,4 +1,4 @@
1
- import { a as DeviceType, i as DeviceRole } from "./err-msg-DWXWc0Di.mjs";
1
+ import { a as DeviceType, i as DeviceRole } from "./err-msg-BD5buxvT.mjs";
2
2
  import { z } from "zod";
3
3
  import { createHash } from "node:crypto";
4
4
  //#region src/ffmpeg/invocation.ts
@@ -1,4 +1,4 @@
1
- const require_err_msg = require("./err-msg-EJhsFHqa.js");
1
+ const require_err_msg = require("./err-msg-DkPZXb-g.js");
2
2
  let zod = require("zod");
3
3
  let node_crypto = require("node:crypto");
4
4
  //#region src/ffmpeg/invocation.ts
@@ -1,4 +1,5 @@
1
1
  import { BaseAddon } from '../addon/base-addon.js';
2
+ import { type DiscoveryHit, type DiscoveryMode } from '../capabilities/device-provider.cap.js';
2
3
  import type { AddonInitResult, ProviderRegistration } from '../interfaces/addon.js';
3
4
  import type { ConfigUISchema } from '../interfaces/config-ui.js';
4
5
  import type { IDevice } from './device.js';
@@ -27,6 +28,12 @@ export interface DiscoveryCandidate {
27
28
  readonly onboardedDeviceId?: number;
28
29
  /** Operator-facing name of the matched device, so the UI can say WHICH one it is. */
29
30
  readonly onboardedName?: string;
31
+ /** The candidate is an integration to set up, not a device to adopt. */
32
+ readonly setupIntegration?: boolean;
33
+ /** `stableId` of the gateway candidate this device was found behind. */
34
+ readonly parentStableId?: string;
35
+ /** `false` = shown for context, not pickable. Default true. */
36
+ readonly selectable?: boolean;
30
37
  }
31
38
  export interface DeviceSummary {
32
39
  readonly id: number;
@@ -123,6 +130,16 @@ export declare abstract class BaseDeviceProvider<TConfig extends object = Record
123
130
  discoverDevices(_input?: {
124
131
  params?: Record<string, unknown>;
125
132
  }): Promise<readonly DiscoveryCandidate[]>;
133
+ /**
134
+ * How the scan engine finds this provider. Default `[]`: the provider is
135
+ * not migrated and keeps answering `discoverDevices` itself.
136
+ */
137
+ getDiscoveryModes(): Promise<readonly DiscoveryMode[]>;
138
+ /** Turn the scan engine's raw hits into candidates. Default: none. */
139
+ classifyDiscoveryHits(_input: {
140
+ hits: readonly DiscoveryHit[];
141
+ params?: Record<string, unknown>;
142
+ }): Promise<readonly DiscoveryCandidate[]>;
126
143
  /** Extra per-scan input form (e.g. a broadcast address for another subnet).
127
144
  * Null = no extra params. Override in providers that support scoped scans. */
128
145
  getDiscoveryParamsSchema(): Promise<ConfigUISchema | null>;
@@ -102,7 +102,13 @@ export declare enum DeviceType {
102
102
  * above a threshold. No program cap — that surface is the dishwasher's. */
103
103
  Washer = "washer",
104
104
  /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
105
- Dryer = "dryer"
105
+ Dryer = "dryer",
106
+ /** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
107
+ * other radio-to-IP bridges). It carries the box's own facts (firmware,
108
+ * address, connection state) and the actions the box really supports
109
+ * (`reboot`, `device-admin-link`). Products are NOT its children — they are
110
+ * adopted beside it — and its connection settings stay on the integration. */
111
+ Gateway = "gateway"
106
112
  }
107
113
  export declare enum DeviceFeature {
108
114
  BatteryOperated = "battery-operated",
@@ -104,6 +104,12 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
104
104
  DeviceType["Washer"] = "washer";
105
105
  /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
106
106
  DeviceType["Dryer"] = "dryer";
107
+ /** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
108
+ * other radio-to-IP bridges). It carries the box's own facts (firmware,
109
+ * address, connection state) and the actions the box really supports
110
+ * (`reboot`, `device-admin-link`). Products are NOT its children — they are
111
+ * adopted beside it — and its connection settings stay on the integration. */
112
+ DeviceType["Gateway"] = "gateway";
107
113
  return DeviceType;
108
114
  }({});
109
115
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -104,6 +104,12 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
104
104
  DeviceType["Washer"] = "washer";
105
105
  /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
106
106
  DeviceType["Dryer"] = "dryer";
107
+ /** The physical bridge box of a vendor ecosystem (Velux KLF-200, and later
108
+ * other radio-to-IP bridges). It carries the box's own facts (firmware,
109
+ * address, connection state) and the actions the box really supports
110
+ * (`reboot`, `device-admin-link`). Products are NOT its children — they are
111
+ * adopted beside it — and its connection settings stay on the integration. */
112
+ DeviceType["Gateway"] = "gateway";
107
113
  return DeviceType;
108
114
  }({});
109
115
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -363,6 +363,20 @@ export type AppRouter = TrpcCoreRouter<{
363
363
  output: z.infer<typeof addonSettingsCapability.methods.getIntegrationSettings.output>;
364
364
  meta: object;
365
365
  }>;
366
+ getDeclaredSettingsKeys: TRPCQueryProcedure<{
367
+ input: {
368
+ [x: string]: unknown;
369
+ } & z.input<typeof addonSettingsCapability.methods.getDeclaredSettingsKeys.input>;
370
+ output: z.infer<typeof addonSettingsCapability.methods.getDeclaredSettingsKeys.output>;
371
+ meta: object;
372
+ }>;
373
+ unsetStoredSettingsKeys: TRPCMutationProcedure<{
374
+ input: {
375
+ [x: string]: unknown;
376
+ } & z.input<typeof addonSettingsCapability.methods.unsetStoredSettingsKeys.input>;
377
+ output: z.infer<typeof addonSettingsCapability.methods.unsetStoredSettingsKeys.output>;
378
+ meta: object;
379
+ }>;
366
380
  getDeviceSettings: TRPCQueryProcedure<{
367
381
  input: {
368
382
  [x: string]: unknown;
@@ -3409,6 +3423,20 @@ export type AppRouter = TrpcCoreRouter<{
3409
3423
  output: z.infer<typeof deviceProviderCapability.methods.discoverDevices.output>;
3410
3424
  meta: object;
3411
3425
  }>;
3426
+ getDiscoveryModes: TRPCQueryProcedure<{
3427
+ input: {
3428
+ [x: string]: unknown;
3429
+ } & z.input<typeof deviceProviderCapability.methods.getDiscoveryModes.input>;
3430
+ output: z.infer<typeof deviceProviderCapability.methods.getDiscoveryModes.output>;
3431
+ meta: object;
3432
+ }>;
3433
+ classifyDiscoveryHits: TRPCMutationProcedure<{
3434
+ input: {
3435
+ [x: string]: unknown;
3436
+ } & z.input<typeof deviceProviderCapability.methods.classifyDiscoveryHits.input>;
3437
+ output: z.infer<typeof deviceProviderCapability.methods.classifyDiscoveryHits.output>;
3438
+ meta: object;
3439
+ }>;
3412
3440
  getDiscoveryParamsSchema: TRPCQueryProcedure<{
3413
3441
  input: {
3414
3442
  [x: string]: unknown;
@@ -4356,6 +4384,13 @@ export type AppRouter = TrpcCoreRouter<{
4356
4384
  output: z.infer<typeof keychainCapability.methods.deleteDeviceScope.output>;
4357
4385
  meta: object;
4358
4386
  }>;
4387
+ releaseRecordRefs: TRPCMutationProcedure<{
4388
+ input: {
4389
+ [x: string]: unknown;
4390
+ } & z.input<typeof keychainCapability.methods.releaseRecordRefs.input>;
4391
+ output: z.infer<typeof keychainCapability.methods.releaseRecordRefs.output>;
4392
+ meta: object;
4393
+ }>;
4359
4394
  listMeta: TRPCQueryProcedure<{
4360
4395
  input: {
4361
4396
  [x: string]: unknown;
@@ -4908,6 +4943,27 @@ export type AppRouter = TrpcCoreRouter<{
4908
4943
  output: z.infer<typeof localNetworkCapability.methods.useStoredUploadedCertificate.output>;
4909
4944
  meta: object;
4910
4945
  }>;
4946
+ scanNetwork: TRPCMutationProcedure<{
4947
+ input: {
4948
+ [x: string]: unknown;
4949
+ } & z.input<typeof localNetworkCapability.methods.scanNetwork.input>;
4950
+ output: z.infer<typeof localNetworkCapability.methods.scanNetwork.output>;
4951
+ meta: object;
4952
+ }>;
4953
+ getScanSubnets: TRPCQueryProcedure<{
4954
+ input: {
4955
+ nodeId?: string | undefined;
4956
+ } | undefined;
4957
+ output: z.infer<typeof localNetworkCapability.methods.getScanSubnets.output>;
4958
+ meta: object;
4959
+ }>;
4960
+ setScanSubnets: TRPCMutationProcedure<{
4961
+ input: {
4962
+ [x: string]: unknown;
4963
+ } & z.input<typeof localNetworkCapability.methods.setScanSubnets.input>;
4964
+ output: z.infer<typeof localNetworkCapability.methods.setScanSubnets.output>;
4965
+ meta: object;
4966
+ }>;
4911
4967
  revertToGeneratedCertificate: TRPCMutationProcedure<{
4912
4968
  input: {
4913
4969
  nodeId?: string | undefined;
@@ -9573,6 +9629,34 @@ export type AppRouter = TrpcCoreRouter<{
9573
9629
  output: z.infer<typeof storageAdminCapability.methods.readRecords.output>;
9574
9630
  meta: object;
9575
9631
  }>;
9632
+ staleDataReport: TRPCQueryProcedure<{
9633
+ input: {
9634
+ [x: string]: unknown;
9635
+ } & z.input<typeof storageAdminCapability.methods.staleDataReport.input>;
9636
+ output: z.infer<typeof storageAdminCapability.methods.staleDataReport.output>;
9637
+ meta: object;
9638
+ }>;
9639
+ scanStaleData: TRPCMutationProcedure<{
9640
+ input: {
9641
+ [x: string]: unknown;
9642
+ } & z.input<typeof storageAdminCapability.methods.scanStaleData.input>;
9643
+ output: z.infer<typeof storageAdminCapability.methods.scanStaleData.output>;
9644
+ meta: object;
9645
+ }>;
9646
+ dropOrphanedKind: TRPCMutationProcedure<{
9647
+ input: {
9648
+ [x: string]: unknown;
9649
+ } & z.input<typeof storageAdminCapability.methods.dropOrphanedKind.input>;
9650
+ output: z.infer<typeof storageAdminCapability.methods.dropOrphanedKind.output>;
9651
+ meta: object;
9652
+ }>;
9653
+ unsetStaleSettingsKey: TRPCMutationProcedure<{
9654
+ input: {
9655
+ [x: string]: unknown;
9656
+ } & z.input<typeof storageAdminCapability.methods.unsetStaleSettingsKey.input>;
9657
+ output: z.infer<typeof storageAdminCapability.methods.unsetStaleSettingsKey.output>;
9658
+ meta: object;
9659
+ }>;
9576
9660
  }>>;
9577
9661
  storageEvictable: TRPCBuiltRouter<{
9578
9662
  ctx: TrpcContext;
@@ -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: 29 collection caps, 49 array methods.
11
+ * Coverage: 29 collection caps, 51 array methods.
12
12
  */
13
13
  export declare const COLLECTION_ARRAY_METHODS: Readonly<Record<string, readonly string[]>>;
14
14
  /**
@@ -56,7 +56,7 @@ export declare const CAP_CUSTOMIZE_CATALOG: {
56
56
  readonly targets: readonly [{
57
57
  readonly id: 'items';
58
58
  readonly cardinality: 'keyedArray';
59
- readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer];
59
+ readonly deviceTypes: readonly [DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway];
60
60
  readonly apply: 'add';
61
61
  readonly vocabularyCap: 'consumables';
62
62
  readonly sources: readonly [];
@@ -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: 1431 method paths across 193 capabilities.
9
+ * Coverage: 1443 method paths across 193 capabilities.
10
10
  */
11
11
  import type { MethodRole } from '../auth/viewer-access.js';
12
12
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
@@ -42,6 +42,7 @@ import type { pipelineExecutorCapability } from '../capabilities/pipeline-execut
42
42
  import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-orchestrator.cap.js';
43
43
  import type { pipelineRunnerCapability } from '../capabilities/pipeline-runner.cap.js';
44
44
  import type { plateGalleryCapability } from '../capabilities/plate-gallery.cap.js';
45
+ import type { platformProbeCapability } from '../capabilities/platform-probe.cap.js';
45
46
  import type { recordEntriesCapability } from '../capabilities/record-entries.cap.js';
46
47
  import type { recordingArchiveCapability } from '../capabilities/recording-archive.cap.js';
47
48
  import type { recordingExportCapability } from '../capabilities/recording-export.cap.js';
@@ -72,7 +73,7 @@ export interface SystemProxy {
72
73
  readonly actionSource: Pick<InferProvider<typeof actionSourceCapability>, 'listActions' | 'runAction' | 'stopAction'>;
73
74
  readonly addonPages: Pick<InferProvider<typeof addonPagesCapability>, 'listPages'>;
74
75
  readonly addons: Pick<InferProvider<typeof addonsCapability>, 'list' | 'getLogs' | 'listPackages' | 'installPackage' | 'installFromWorkspace' | 'isWorkspaceAvailable' | 'listWorkspacePackages' | 'uninstallPackage' | 'listInstallations' | 'reloadPackages' | 'searchAvailable' | 'listUpdates' | 'updatePackage' | 'rollbackPackage' | 'forceRefresh' | 'restartServer' | 'getLastRestart' | 'listFrameworkPackages' | 'listCapabilityProviders' | 'setCapabilityProviderEnabled' | 'getVersions' | 'getPackageDocs' | 'restartAddon' | 'retryLoad' | 'getAutoUpdateSettings' | 'setAutoUpdateSettings' | 'getAddonAutoUpdate' | 'setAddonAutoUpdate' | 'applyAutoUpdateToAll' | 'custom' | 'startJob' | 'getJob' | 'listJobs' | 'cancelJob' | 'onAddonLogs'>;
75
- readonly addonSettings: Pick<InferProvider<typeof addonSettingsCapability>, 'getGlobalSettings' | 'updateGlobalSettings' | 'getIntegrationSettings'>;
76
+ readonly addonSettings: Pick<InferProvider<typeof addonSettingsCapability>, 'getGlobalSettings' | 'updateGlobalSettings' | 'getIntegrationSettings' | 'getDeclaredSettingsKeys' | 'unsetStoredSettingsKeys'>;
76
77
  readonly addonWidgets: Pick<InferProvider<typeof addonWidgetsCapability>, 'listWidgets'>;
77
78
  readonly alerts: Pick<InferProvider<typeof alertsCapability>, 'emit' | 'update' | 'list' | 'getUnreadCount' | 'markRead' | 'markAllRead' | 'dismiss'>;
78
79
  readonly audioAnalyzer: Pick<InferProvider<typeof audioAnalyzerCapability>, 'analyseChunk' | 'classify' | 'attachDevice' | 'isReady' | 'dispose' | 'reprobeAudioEngine'>;
@@ -88,14 +89,14 @@ export interface SystemProxy {
88
89
  readonly deviceExport: Pick<InferProvider<typeof deviceExportCapability>, 'getStatus' | 'listSupportedDeviceKinds' | 'listExposedDevices' | 'exposeDevice' | 'unexposeDevice' | 'listSupportedEntityKinds' | 'listExposedEntities' | 'exposeEntity' | 'unexposeEntity'>;
89
90
  readonly deviceHistory: Pick<InferProvider<typeof deviceHistoryCapability>, 'listNodeSeries' | 'queryNode' | 'queryMany' | 'declareSeries' | 'record' | 'recordBuckets' | 'getStatus' | 'listOrphanSeries' | 'deleteOrphanSeries'>;
90
91
  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'>;
91
- readonly deviceProvider: Pick<InferProvider<typeof deviceProviderCapability>, 'start' | 'stop' | 'getStatus' | 'getDevices' | 'reloadDevice' | 'supportsDiscovery' | 'discoverDevices' | 'getDiscoveryParamsSchema' | 'getManualCreationType' | 'adoptDiscoveredDevice' | 'supportsManualCreation' | 'getChildCreationSchema' | 'createDevice' | 'testCreationField'>;
92
+ readonly deviceProvider: Pick<InferProvider<typeof deviceProviderCapability>, 'start' | 'stop' | 'getStatus' | 'getDevices' | 'reloadDevice' | 'supportsDiscovery' | 'discoverDevices' | 'getDiscoveryModes' | 'classifyDiscoveryHits' | 'getDiscoveryParamsSchema' | 'getManualCreationType' | 'adoptDiscoveredDevice' | 'supportsManualCreation' | 'getChildCreationSchema' | 'createDevice' | 'testCreationField'>;
92
93
  readonly deviceState: Pick<InferProvider<typeof deviceStateCapability>, 'getAllSnapshots' | 'listClaims'>;
93
94
  readonly displayPalette: Pick<InferProvider<typeof displayPaletteCapability>, 'getPalette' | 'listPresets' | 'setPalette'>;
94
95
  readonly faceGallery: Pick<InferProvider<typeof faceGalleryCapability>, 'listIdentities' | 'createIdentity' | 'renameIdentity' | 'deleteIdentity' | 'listIdentitySamples' | 'auditIdentitySamples' | 'removeSample' | 'getFaceMedia' | 'assignFace' | 'unassignFace' | 'deleteFace' | 'assignFaces' | 'unassignFaces' | 'suggestFaceClusters'>;
95
96
  readonly integrations: Pick<InferProvider<typeof integrationsCapability>, 'list' | 'get' | 'getByAddonId' | 'create' | 'update' | 'delete' | 'getSettings' | 'setSettings' | 'getAvailableTypes' | 'testConnection'>;
96
97
  readonly keychainAdmin: Pick<InferProvider<typeof keychainAdminCapability>, 'status' | 'listSecrets' | 'listAudit' | 'reveal' | 'setSystemSecret' | 'importSecret' | 'deleteOrphans' | 'rotateMasterKey' | 'purgeRetiredKeys' | 'downloadRecoveryKey' | 'resetKeychain' | 'resetReport' | 'acknowledgeReset'>;
97
98
  readonly llm: Pick<InferProvider<typeof llmCapability>, 'generate' | 'generateVision' | 'cancel' | 'listProfileKinds' | 'listProfiles' | 'upsertProfile' | 'migrateRawSecrets' | 'deleteProfile' | 'testProfile' | 'listModels' | 'getDefaults' | 'setDefault' | 'getUsage' | 'listModelCatalog' | 'listRuntimeNodes' | 'listNodeModels' | 'resolveModelRef' | 'installModel' | 'deleteModel' | 'getRuntimeStatus' | 'startRuntime' | 'stopRuntime'>;
98
- readonly localNetwork: Pick<InferProvider<typeof localNetworkCapability>, 'list' | 'getPreferred' | 'getConnectionEndpoints' | 'getNotificationEndpoint' | 'setNotificationEndpoint' | 'getViewerEndpoints' | 'setViewerEndpoints' | 'getAddresses' | 'addCustomAddress' | 'removeCustomAddress' | 'setAddressRole' | 'getHubAddresses' | 'getAllowedAddresses' | 'setAllowedAddresses' | 'resetAllowlistToBestMatch' | 'getTlsStatus' | 'regenerateCertificate' | 'uploadCertificate' | 'downloadCa' | 'useStoredUploadedCertificate' | 'revertToGeneratedCertificate'>;
99
+ readonly localNetwork: Pick<InferProvider<typeof localNetworkCapability>, 'list' | 'getPreferred' | 'getConnectionEndpoints' | 'getNotificationEndpoint' | 'setNotificationEndpoint' | 'getViewerEndpoints' | 'setViewerEndpoints' | 'getAddresses' | 'addCustomAddress' | 'removeCustomAddress' | 'setAddressRole' | 'getHubAddresses' | 'getAllowedAddresses' | 'setAllowedAddresses' | 'resetAllowlistToBestMatch' | 'getTlsStatus' | 'regenerateCertificate' | 'uploadCertificate' | 'downloadCa' | 'useStoredUploadedCertificate' | 'scanNetwork' | 'getScanSubnets' | 'setScanSubnets' | 'revertToGeneratedCertificate'>;
99
100
  readonly meshNetwork: Pick<InferProvider<typeof meshNetworkCapability>, 'getStatus' | 'join' | 'startLogin' | 'leave' | 'logout' | 'listPeers' | 'testConnection'>;
100
101
  readonly metricsProvider: Pick<InferProvider<typeof metricsProviderCapability>, 'collectSnapshot' | 'getCached' | 'getCurrent' | 'getDiskSpace' | 'getGpuInfo' | 'getCpuTemperature' | 'getProcessStats' | 'listAddonInstances' | 'getAddonStats' | 'listNodeProcesses' | 'getLoadSeries'>;
101
102
  readonly mqttBroker: Pick<InferProvider<typeof mqttBrokerCapability>, 'listBrokers' | 'getBrokerConfig' | 'addBroker' | 'removeBroker' | 'testConnection' | 'startEmbeddedBroker' | 'stopEmbeddedBroker' | 'getStatus'>;
@@ -110,6 +111,7 @@ export interface SystemProxy {
110
111
  readonly pipelineOrchestrator: Pick<InferProvider<typeof pipelineOrchestratorCapability>, 'requestOccupancyLook' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'rebalance' | 'getPipelineAssignments' | 'getAgentLoad' | 'getClusterModelChoice' | 'getGlobalMetrics' | 'getCapabilityBindings' | 'setCapabilityBinding' | 'getIngestOwner' | 'getAudioNodeLoad' | 'getAudioAssignments' | 'getAgentSettings' | 'listAgentSettings' | 'removeAgentSettings' | 'setAgentMaxCameras' | 'setAgentCapabilities' | 'setAgentDecodeLimits' | 'setAgentReachableHost' | 'setAgentInferenceDevices' | 'setNodeStepSettings' | 'getNodeInferenceDevices' | 'forgetInferenceDevice' | 'resetNodePipelineDefaults' | 'planAutoTune' | 'applyAutoTune' | 'setLoadBalancingShares' | 'getPlacementStats' | 'suggestShares' | 'getEffectiveShares' | 'setShareSource' | 'getNodeBenchmarkPreflight' | 'startNodeBenchmark' | 'getNodeBenchmarkStatus' | 'abortNodeBenchmark' | 'getNodeBenchmarkCandidates' | 'listNodeBenchmarkResults' | 'deleteNodeBenchmarkResult' | 'getCameraStatuses' | 'setCameraSensors' | 'reconcileFromDisk' | 'getReconcileFromDiskStatus'>;
111
112
  readonly pipelineRunner: Pick<InferProvider<typeof pipelineRunnerCapability>, 'attachCamera' | 'reportMotion' | 'getLocalLoad' | 'getLocalMetrics' | 'getAllCameraMetrics' | 'getLocalCameras' | 'getNativeCrop' | 'runStatelessStep' | 'startNodeBench' | 'getNodeBenchStatus' | 'abortNodeBench'>;
112
113
  readonly plateGallery: Pick<InferProvider<typeof plateGalleryCapability>, 'getPlateMedia' | 'searchPlates' | 'suggestPlateClusters' | 'correctPlateText' | 'deletePlate' | 'listVehicles' | 'createVehicle' | 'renameVehicle' | 'deleteVehicle' | 'listVehicleSamples' | 'removeVehicleSample' | 'assignPlate' | 'unassignPlate' | 'assignPlates' | 'unassignPlates'>;
114
+ readonly platformProbe: Pick<InferProvider<typeof platformProbeCapability>, 'getCapabilities' | 'getHardware' | 'resolveInferenceConfig' | 'resolveHwAccel' | 'rescanAccelerators'>;
113
115
  readonly recordEntries: Pick<InferProvider<typeof recordEntriesCapability>, 'listEntryKinds' | 'listEntries' | 'putEntry' | 'deleteEntry'>;
114
116
  readonly recordingArchive: Pick<InferProvider<typeof recordingArchiveCapability>, 'getAvailabilityBatch' | 'getDaysWithRecordingsBatch' | 'getStorageUsage' | 'listOpsLog' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'refreshStorageLocationsForMigration' | 'startStorageMigrationMove' | 'getStorageMigrationMoveStatus' | 'cancelStorageMigrationMove' | 'relocateFootage' | 'listRelocateJobs' | 'getRelocateResidue' | 'reconcileLedgerAgainstDisk' | 'cancelRelocateJob' | 'planStorageRebalance' | 'startStorageRebalance' | 'getPlacement' | 'setDevicePlacement'>;
115
117
  readonly recordingExport: Pick<InferProvider<typeof recordingExportCapability>, 'createExport' | 'getExport' | 'cancelExport' | 'deleteExport' | 'getDownloadUrl' | 'readExportBytes'>;
package/dist/index.d.ts CHANGED
@@ -163,8 +163,8 @@ export { APP_FLOW_DEFAULT_REDIRECT, APP_FLOW_REFUSAL_MESSAGES, APP_FLOW_STATE_PR
163
163
  export { SSO_STATE_COOKIE, SSO_STATE_COOKIE_MAX_AGE_SEC } from './auth/sso-state.js';
164
164
  export { buildDeviceEnrollmentLink, buildDeviceSignatureMessage, type CompleteEnrollmentInput, CompleteEnrollmentInputSchema, type CompleteEnrollmentOutput, CompleteEnrollmentOutputSchema, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_CERT_VALIDITY_DAYS, DEVICE_ENROLLMENT_TTL_MS, DEVICE_NONCE_TTL_MS, DEVICE_SAN_CREDENTIAL_PREFIX, DEVICE_SAN_USER_PREFIX, DEVICE_SIGNATURE_MESSAGE_VERSION, type DeviceCertificateLoginMethod, DeviceCertificateLoginMethodSchema, type DeviceChallenge, DeviceChallengeSchema, type DeviceCredential, DeviceCredentialSchema, type DeviceCredentialStatus, DeviceCredentialStatusSchema, type DevicePlatform, DevicePlatformSchema, type DeviceProofInput, DeviceProofInputSchema, type CompleteEnrollmentResult, CompleteEnrollmentResultSchema, DEFINITIVE_DEVICE_REFUSALS, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_REFRESH_REFUSAL_PREFIX, deviceRefusalFromMessage, type DeviceChallengeResult, DeviceChallengeResultSchema, DeviceEnrollProofSchema, type DeviceRefusal, type DeviceRefusalReason, DeviceRefusalReasonSchema, DeviceRefusalSchema, type DeviceRevoker, type EnrollSelfInput, EnrollSelfInputSchema, formatDeviceRevoker, isDefinitiveDeviceRefusal, type RenewDeviceCertificateResult, RenewDeviceCertificateResultSchema, type RevokeOwnDeviceCertificateResult, RevokeOwnDeviceCertificateResultSchema, type DeviceSignaturePurpose, DeviceSignaturePurposeSchema, type RenewDeviceCertificateOutput, RenewDeviceCertificateOutputSchema, type StartEnrollmentOutput, StartEnrollmentOutputSchema, parseDeviceEnrollmentLink, } from './auth/device-certificate.js';
165
165
  export { advertisedHubOrigins, claimedRequestOrigins, normalizeOrigin, pickRequestOrigin, type RequestHeaders, requestMountPrefix, } from './auth/request-origin.js';
166
- export type { ActionStep, AutomationAction, AutomationCapStep, AutomationCondition, AutomationConditionAll, AutomationConditionAny, AutomationConditionExpression, AutomationConditionLeaf, AutomationConditionStationaryPresent, AutomationConditionNot, AutomationConditionOperator, AutomationConditionTraceNode, AutomationRecipe, AutomationRunMode, AutomationRunOutcome, AutomationRunTrace, AutomationRunVerdict, AutomationStateDoc, AutomationStepTrace, AutomationTrigger, AutomationTriggerTrace, ConditionEvaluation, ConditionReader, DetectionDecision, DetectionTrigger, DetectionVars, GenerateAutomationBlockInput, MirrorRefreshFetchers, MirrorRefreshReport, MirrorSource, StationaryChangedInput, StationaryDecision, StationaryTrigger, StationaryVars, TraceNodeOutcome, TraceValue, TrackLifecycleInput, } from './automation/index.js';
167
- export { ActionStepSchema, AutomationActionSchema, AutomationCapStepSchema, AutomationWaitStepSchema, EMPTY_AUTOMATION_STATE, mergeSkipTraces, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationConditionTraceNodeSchema, AutomationRecipeSchema, AutomationRunModeSchema, AutomationRunOutcomeSchema, AutomationRunTraceSchema, AutomationRunVerdictSchema, AutomationStateDocSchema, AutomationStepTraceSchema, AutomationTriggerSchema, AutomationTriggerTraceSchema, appendTrace, buildTriggerTrace, collectMirrorSources, ConditionMirror, conditionDepth, countConditionLeaves, DEFAULT_TRACE_KEEP, DetectionTriggerFilter, detectionClassMatches, evaluateConditionTree, evaluateStationaryTrigger, generateAutomationBlock, isSkippedTrace, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_TRACE_KEEP, RunGate, skipSignature, TraceNodeOutcomeSchema, TraceValueSchema, validateRecipeBounds, } from './automation/index.js';
166
+ export type { ActionStep, AutomationAction, AutomationAll, AutomationAny, AutomationCapStep, AutomationConditionOperator, AutomationConditionTraceNode, AutomationEventLeaf, AutomationLeaf, AutomationNot, AutomationStateLeaf, AutomationWhen, DetectionLabelSource, DetectionLeaf, DetectionSubject, DeviceBecomesLeaf, DeviceIsLeaf, ExpressionLeaf, IdentityLabel, LegacyAutomationRecipe, LegacyCondition, LegacyTrigger, PlateLabel, StationaryLeaf, StationaryPresentLeaf, SubClassLabel, SubjectObservation, SubjectVerdict, AutomationRecipe, AutomationRunMode, AutomationRunOutcome, AutomationRunTrace, AutomationRunVerdict, AutomationStateDoc, AutomationStepTrace, AutomationTriggerTrace, ConditionEvaluation, ConditionReader, DetectionDecision, DetectionTrigger, DetectionVars, GenerateAutomationBlockInput, MirrorRefreshFetchers, MirrorRefreshReport, MirrorSource, StationaryChangedInput, StationaryDecision, StationaryTrigger, StationaryVars, TraceNodeOutcome, TraceValue, TrackLifecycleInput, } from './automation/index.js';
167
+ export { ActionStepSchema, AutomationActionSchema, AutomationCapStepSchema, AutomationWaitStepSchema, EMPTY_AUTOMATION_STATE, mergeSkipTraces, AutomationConditionOperatorSchema, AutomationConditionTraceNodeSchema, AutomationRecipeSchema, AutomationWhenSchema, CurrentAutomationRecipeSchema, DETECTION_LABEL_SOURCES, DetectionSubjectSchema, LegacyAutomationRecipeSchema, LegacyConditionSchema, LegacyTriggerSchema, MAX_TRACE_ARG_LENGTH, MAX_TRACE_ARGS, MAX_WHEN_DEPTH, MAX_WHEN_LEAVES, REDACTED_ARG, StationarySubjectSchema, anySubjectMatches, buildStepArgsTrace, collectWhenMirrorSources, convertLegacyCondition, convertLegacyRecipe, convertLegacyWhen, countWhenLeaves, describeSubject, evaluateWhenTree, forEachLeaf, hasEventLeaves, isEventLeaf, isLeaf, subClassesOf, subjectFromClassName, subjectMatches, validateWhenTree, whenDepth, AutomationRunModeSchema, AutomationRunOutcomeSchema, AutomationRunTraceSchema, AutomationRunVerdictSchema, AutomationStateDocSchema, AutomationStepTraceSchema, AutomationTriggerTraceSchema, appendTrace, buildTriggerTrace, collectMirrorSources, ConditionMirror, DEFAULT_TRACE_KEEP, DetectionTriggerFilter, detectionClassMatches, evaluateConditionTree, evaluateStationaryTrigger, generateAutomationBlock, isSkippedTrace, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_TRACE_KEEP, RunGate, skipSignature, TraceNodeOutcomeSchema, TraceValueSchema, validateRecipeBounds, } from './automation/index.js';
168
168
  export { UnitWarningSchema, capUnitResolver, normalizeActionUnits, normalizeConditionUnits, normalizeRecipeUnits, prepareRecipeUnits, } from './automation/index.js';
169
169
  export type { PreparedRecipe, UnitResolver, UnitWarning, UnitsNormalized, } from './automation/index.js';
170
170
  export * from './automation/action.js';