@camstack/types 1.2.442 → 1.2.444

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 (61) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/addon.d.ts +5 -1
  3. package/dist/addon.js +21 -5
  4. package/dist/addon.mjs +17 -6
  5. package/dist/automation/export-entities.d.ts +98 -0
  6. package/dist/capabilities/capability-definition.d.ts +1 -1
  7. package/dist/capabilities/composer.cap.d.ts +34 -0
  8. package/dist/capabilities/consumables.cap.d.ts +4 -5
  9. package/dist/capabilities/core-blocks.cap.d.ts +244 -0
  10. package/dist/capabilities/device-export.cap.d.ts +111 -1
  11. package/dist/capabilities/index.d.ts +8 -3
  12. package/dist/capabilities/metrics-provider.cap.d.ts +16 -16
  13. package/dist/capabilities/node-removal-hook.cap.d.ts +67 -0
  14. package/dist/capabilities/nodes.cap.d.ts +2 -2
  15. package/dist/capabilities/pet-fountain.cap.d.ts +138 -0
  16. package/dist/capabilities/pipeline-executor.cap.d.ts +6 -22
  17. package/dist/capabilities/pipeline-orchestrator.cap.d.ts +3 -4
  18. package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
  19. package/dist/capabilities/pipeline-step-input.d.ts +33 -0
  20. package/dist/client.js +817 -798
  21. package/dist/client.mjs +817 -798
  22. package/dist/composition/composition-items.d.ts +3 -3
  23. package/dist/composition/composition-report.d.ts +17 -0
  24. package/dist/composition/composition.d.ts +68 -1
  25. package/dist/composition/index.d.ts +2 -0
  26. package/dist/composition/presets/pet-fountain.d.ts +36 -0
  27. package/dist/composition/validate-forward.d.ts +31 -0
  28. package/dist/{composition-C0dlyG9U.js → composition-CO6Sak-s.js} +49 -5
  29. package/dist/{composition-bIBW5_13.mjs → composition-kSuOifuG.mjs} +32 -6
  30. package/dist/device/cap-vocabulary/entries/appliances.d.ts +1 -1
  31. package/dist/device/device-control-resolution.d.ts +1 -1
  32. package/dist/device/device-type.d.ts +4 -0
  33. package/dist/{err-msg-BCdlR2Li.mjs → err-msg-DWXWc0Di.mjs} +4 -0
  34. package/dist/{err-msg-COHgq7Mb.js → err-msg-EJhsFHqa.js} +4 -0
  35. package/dist/generated/addon-api.d.ts +149 -32
  36. package/dist/generated/addon-cap-facts.d.ts +1 -1
  37. package/dist/generated/cap-status-types.d.ts +3 -1
  38. package/dist/generated/capability-router-map.d.ts +10 -4
  39. package/dist/generated/collection-array-methods.d.ts +2 -2
  40. package/dist/generated/customize-catalog.d.ts +1 -1
  41. package/dist/generated/device-local-state.d.ts +3 -0
  42. package/dist/generated/device-proxy.d.ts +3 -0
  43. package/dist/generated/device-scoped-caps.d.ts +1 -1
  44. package/dist/generated/history-catalog.d.ts +1 -1
  45. package/dist/generated/method-access-map.d.ts +1 -1
  46. package/dist/generated/method-device-selectors.d.ts +1 -1
  47. package/dist/generated/runtime-state-durability.d.ts +1 -1
  48. package/dist/generated/system-proxy.d.ts +1 -1
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.js +1616 -607
  51. package/dist/index.mjs +1581 -596
  52. package/dist/interfaces/agent.d.ts +6 -2
  53. package/dist/interfaces/event-bus.d.ts +1 -1
  54. package/dist/node.js +2 -2
  55. package/dist/node.mjs +2 -2
  56. package/dist/{sleep-DJws6ho7.mjs → sleep-6eG9C8Xl.mjs} +224 -72
  57. package/dist/{sleep-BpwNJ1Su.js → sleep-UXDHn-oJ.js} +247 -71
  58. package/dist/types/agent-pipeline-settings.d.ts +2 -2
  59. package/dist/utils/oauth-landing.d.ts +1 -1
  60. package/dist/vendor-login-proxy/flow-trace.d.ts +29 -0
  61. package/package.json +1 -1
@@ -91,6 +91,7 @@ import type { navigationCapability } from '../capabilities/navigation.cap.js';
91
91
  import type { networkAccessCapability } from '../capabilities/network-access.cap.js';
92
92
  import type { networkQualityCapability } from '../capabilities/network-quality.cap.js';
93
93
  import type { nodeCertificatesCapability } from '../capabilities/node-certificates.cap.js';
94
+ import type { nodeRemovalHookCapability } from '../capabilities/node-removal-hook.cap.js';
94
95
  import type { nodesCapability } from '../capabilities/nodes.cap.js';
95
96
  import type { notificationOutputCapability } from '../capabilities/notification-output.cap.js';
96
97
  import type { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
@@ -100,6 +101,7 @@ import type { oidcConnectionsCapability } from '../capabilities/oidc-connections
100
101
  import type { osdManagerCapability } from '../capabilities/osd-manager.cap.js';
101
102
  import type { osdCapability } from '../capabilities/osd.cap.js';
102
103
  import type { petFeederCapability } from '../capabilities/pet-feeder.cap.js';
104
+ import type { petFountainCapability } from '../capabilities/pet-fountain.cap.js';
103
105
  import type { pipelineAnalyticsCapability } from '../capabilities/pipeline-analytics.cap.js';
104
106
  import type { pipelineExecutorCapability } from '../capabilities/pipeline-executor.cap.js';
105
107
  import type { pipelineOrchestratorCapability } from '../capabilities/pipeline-orchestrator.cap.js';
@@ -2476,6 +2478,36 @@ export type AppRouter = TrpcCoreRouter<{
2476
2478
  output: z.infer<typeof deviceExportCapability.methods.unexposeDevice.output>;
2477
2479
  meta: object;
2478
2480
  }>;
2481
+ listSupportedEntityKinds: TRPCQueryProcedure<{
2482
+ input: {
2483
+ nodeId?: string | undefined;
2484
+ addonId?: string | undefined;
2485
+ } | undefined;
2486
+ output: z.infer<typeof deviceExportCapability.methods.listSupportedEntityKinds.output>;
2487
+ meta: object;
2488
+ }>;
2489
+ listExposedEntities: TRPCQueryProcedure<{
2490
+ input: {
2491
+ nodeId?: string | undefined;
2492
+ addonId?: string | undefined;
2493
+ } | undefined;
2494
+ output: z.infer<typeof deviceExportCapability.methods.listExposedEntities.output>;
2495
+ meta: object;
2496
+ }>;
2497
+ exposeEntity: TRPCMutationProcedure<{
2498
+ input: {
2499
+ [x: string]: unknown;
2500
+ } & z.input<typeof deviceExportCapability.methods.exposeEntity.input>;
2501
+ output: z.infer<typeof deviceExportCapability.methods.exposeEntity.output>;
2502
+ meta: object;
2503
+ }>;
2504
+ unexposeEntity: TRPCMutationProcedure<{
2505
+ input: {
2506
+ [x: string]: unknown;
2507
+ } & z.input<typeof deviceExportCapability.methods.unexposeEntity.input>;
2508
+ output: z.infer<typeof deviceExportCapability.methods.unexposeEntity.output>;
2509
+ meta: object;
2510
+ }>;
2479
2511
  }>>;
2480
2512
  deviceExtension: TRPCBuiltRouter<{
2481
2513
  ctx: TrpcContext;
@@ -5694,6 +5726,20 @@ export type AppRouter = TrpcCoreRouter<{
5694
5726
  meta: object;
5695
5727
  }>;
5696
5728
  }>>;
5729
+ nodeRemovalHook: TRPCBuiltRouter<{
5730
+ ctx: TrpcContext;
5731
+ meta: object;
5732
+ errorShape: AugmentedErrorShape;
5733
+ transformer: true;
5734
+ }, TRPCDecorateCreateRouterOptions<{
5735
+ onNodeRemoved: TRPCMutationProcedure<{
5736
+ input: {
5737
+ [x: string]: unknown;
5738
+ } & z.input<typeof nodeRemovalHookCapability.methods.onNodeRemoved.input>;
5739
+ output: z.infer<typeof nodeRemovalHookCapability.methods.onNodeRemoved.output>;
5740
+ meta: object;
5741
+ }>;
5742
+ }>>;
5697
5743
  nodes: TRPCBuiltRouter<{
5698
5744
  ctx: TrpcContext;
5699
5745
  meta: object;
@@ -6402,6 +6448,55 @@ export type AppRouter = TrpcCoreRouter<{
6402
6448
  meta: object;
6403
6449
  }>;
6404
6450
  }>>;
6451
+ petFountain: TRPCBuiltRouter<{
6452
+ ctx: TrpcContext;
6453
+ meta: object;
6454
+ errorShape: AugmentedErrorShape;
6455
+ transformer: true;
6456
+ }, TRPCDecorateCreateRouterOptions<{
6457
+ getStatus: TRPCQueryProcedure<{
6458
+ input: {
6459
+ [x: string]: unknown;
6460
+ } & z.input<typeof DEVICE_STATUS_METHOD.getStatus.input>;
6461
+ output: z.infer<typeof DEVICE_STATUS_METHOD.getStatus.output>;
6462
+ meta: object;
6463
+ }>;
6464
+ setPump: TRPCMutationProcedure<{
6465
+ input: {
6466
+ [x: string]: unknown;
6467
+ } & z.input<typeof petFountainCapability.methods.setPump.input>;
6468
+ output: z.infer<typeof petFountainCapability.methods.setPump.output>;
6469
+ meta: object;
6470
+ }>;
6471
+ setPumpInterval: TRPCMutationProcedure<{
6472
+ input: {
6473
+ [x: string]: unknown;
6474
+ } & z.input<typeof petFountainCapability.methods.setPumpInterval.input>;
6475
+ output: z.infer<typeof petFountainCapability.methods.setPumpInterval.output>;
6476
+ meta: object;
6477
+ }>;
6478
+ setPumpOnMinutes: TRPCMutationProcedure<{
6479
+ input: {
6480
+ [x: string]: unknown;
6481
+ } & z.input<typeof petFountainCapability.methods.setPumpOnMinutes.input>;
6482
+ output: z.infer<typeof petFountainCapability.methods.setPumpOnMinutes.output>;
6483
+ meta: object;
6484
+ }>;
6485
+ setPumpOffMinutes: TRPCMutationProcedure<{
6486
+ input: {
6487
+ [x: string]: unknown;
6488
+ } & z.input<typeof petFountainCapability.methods.setPumpOffMinutes.input>;
6489
+ output: z.infer<typeof petFountainCapability.methods.setPumpOffMinutes.output>;
6490
+ meta: object;
6491
+ }>;
6492
+ resetDailyConsumption: TRPCMutationProcedure<{
6493
+ input: {
6494
+ [x: string]: unknown;
6495
+ } & z.input<typeof petFountainCapability.methods.resetDailyConsumption.input>;
6496
+ output: z.infer<typeof petFountainCapability.methods.resetDailyConsumption.output>;
6497
+ meta: object;
6498
+ }>;
6499
+ }>>;
6405
6500
  pipelineAnalytics: TRPCBuiltRouter<{
6406
6501
  ctx: TrpcContext;
6407
6502
  meta: object;
@@ -12241,6 +12336,17 @@ export type AppRouter = TrpcCoreRouter<{
12241
12336
  historyRemoved: boolean;
12242
12337
  registryRemoved: boolean;
12243
12338
  stillListed: boolean;
12339
+ certificates: {
12340
+ outcome: "not-attempted";
12341
+ } | {
12342
+ outcome: "revoked";
12343
+ serials: string[];
12344
+ } | {
12345
+ outcome: "registry-unavailable";
12346
+ } | {
12347
+ outcome: "failed";
12348
+ error: string;
12349
+ };
12244
12350
  message: string;
12245
12351
  };
12246
12352
  meta: object;
@@ -12264,6 +12370,17 @@ export type AppRouter = TrpcCoreRouter<{
12264
12370
  historyRemoved: boolean;
12265
12371
  registryRemoved: boolean;
12266
12372
  stillListed: boolean;
12373
+ certificates: {
12374
+ outcome: "not-attempted";
12375
+ } | {
12376
+ outcome: "revoked";
12377
+ serials: string[];
12378
+ } | {
12379
+ outcome: "registry-unavailable";
12380
+ } | {
12381
+ outcome: "failed";
12382
+ error: string;
12383
+ };
12267
12384
  message: string;
12268
12385
  };
12269
12386
  meta: object;
@@ -12351,7 +12468,7 @@ export type AppRouter = TrpcCoreRouter<{
12351
12468
  notAfter: number;
12352
12469
  issuedAt: number;
12353
12470
  issuedVia: "enroll" | "pairing" | "renewal" | "boot" | "observed";
12354
- status: "valid" | "expiring" | "expired" | "revoked";
12471
+ status: "revoked" | "valid" | "expiring" | "expired";
12355
12472
  revokedAt: number | null;
12356
12473
  revokedReason: string | null;
12357
12474
  } | null;
@@ -12363,7 +12480,7 @@ export type AppRouter = TrpcCoreRouter<{
12363
12480
  notAfter: number;
12364
12481
  issuedAt: number;
12365
12482
  issuedVia: "enroll" | "pairing" | "renewal" | "boot" | "observed";
12366
- status: "valid" | "expiring" | "expired" | "revoked";
12483
+ status: "revoked" | "valid" | "expiring" | "expired";
12367
12484
  revokedAt: number | null;
12368
12485
  revokedReason: string | null;
12369
12486
  }[];
@@ -12479,7 +12596,7 @@ export type AppRouter = TrpcCoreRouter<{
12479
12596
  notAfter: number;
12480
12597
  issuedAt: number;
12481
12598
  issuedVia: "enroll" | "pairing" | "renewal" | "boot" | "observed";
12482
- status: "valid" | "expiring" | "expired" | "revoked";
12599
+ status: "revoked" | "valid" | "expiring" | "expired";
12483
12600
  revokedAt: number | null;
12484
12601
  revokedReason: string | null;
12485
12602
  } | null;
@@ -12491,7 +12608,7 @@ export type AppRouter = TrpcCoreRouter<{
12491
12608
  notAfter: number;
12492
12609
  issuedAt: number;
12493
12610
  issuedVia: "enroll" | "pairing" | "renewal" | "boot" | "observed";
12494
- status: "valid" | "expiring" | "expired" | "revoked";
12611
+ status: "revoked" | "valid" | "expiring" | "expired";
12495
12612
  revokedAt: number | null;
12496
12613
  revokedReason: string | null;
12497
12614
  }[];
@@ -12704,7 +12821,7 @@ export type AppRouter = TrpcCoreRouter<{
12704
12821
  port: number;
12705
12822
  };
12706
12823
  code: string;
12707
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12824
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12708
12825
  hubConfirmed: boolean;
12709
12826
  agentConfirmed: boolean;
12710
12827
  expiresAt: number;
@@ -12738,7 +12855,7 @@ export type AppRouter = TrpcCoreRouter<{
12738
12855
  port: number;
12739
12856
  };
12740
12857
  code: string;
12741
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12858
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12742
12859
  hubConfirmed: boolean;
12743
12860
  agentConfirmed: boolean;
12744
12861
  expiresAt: number;
@@ -12760,7 +12877,7 @@ export type AppRouter = TrpcCoreRouter<{
12760
12877
  port: number;
12761
12878
  };
12762
12879
  code: string;
12763
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12880
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12764
12881
  hubConfirmed: boolean;
12765
12882
  agentConfirmed: boolean;
12766
12883
  expiresAt: number;
@@ -12780,7 +12897,7 @@ export type AppRouter = TrpcCoreRouter<{
12780
12897
  port: number;
12781
12898
  };
12782
12899
  code: string;
12783
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12900
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12784
12901
  hubConfirmed: boolean;
12785
12902
  agentConfirmed: boolean;
12786
12903
  expiresAt: number;
@@ -12798,7 +12915,7 @@ export type AppRouter = TrpcCoreRouter<{
12798
12915
  port: number;
12799
12916
  };
12800
12917
  code: string;
12801
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12918
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12802
12919
  hubConfirmed: boolean;
12803
12920
  agentConfirmed: boolean;
12804
12921
  expiresAt: number;
@@ -12819,7 +12936,7 @@ export type AppRouter = TrpcCoreRouter<{
12819
12936
  port: number;
12820
12937
  };
12821
12938
  code: string;
12822
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12939
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12823
12940
  hubConfirmed: boolean;
12824
12941
  agentConfirmed: boolean;
12825
12942
  expiresAt: number;
@@ -12839,7 +12956,7 @@ export type AppRouter = TrpcCoreRouter<{
12839
12956
  port: number;
12840
12957
  };
12841
12958
  code: string;
12842
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
12959
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12843
12960
  hubConfirmed: boolean;
12844
12961
  agentConfirmed: boolean;
12845
12962
  expiresAt: number;
@@ -12884,7 +13001,7 @@ export type AppRouter = TrpcCoreRouter<{
12884
13001
  port: number;
12885
13002
  };
12886
13003
  code: string;
12887
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13004
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12888
13005
  hubConfirmed: boolean;
12889
13006
  agentConfirmed: boolean;
12890
13007
  expiresAt: number;
@@ -12918,7 +13035,7 @@ export type AppRouter = TrpcCoreRouter<{
12918
13035
  port: number;
12919
13036
  };
12920
13037
  code: string;
12921
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13038
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12922
13039
  hubConfirmed: boolean;
12923
13040
  agentConfirmed: boolean;
12924
13041
  expiresAt: number;
@@ -12940,7 +13057,7 @@ export type AppRouter = TrpcCoreRouter<{
12940
13057
  port: number;
12941
13058
  };
12942
13059
  code: string;
12943
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13060
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12944
13061
  hubConfirmed: boolean;
12945
13062
  agentConfirmed: boolean;
12946
13063
  expiresAt: number;
@@ -12960,7 +13077,7 @@ export type AppRouter = TrpcCoreRouter<{
12960
13077
  port: number;
12961
13078
  };
12962
13079
  code: string;
12963
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13080
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12964
13081
  hubConfirmed: boolean;
12965
13082
  agentConfirmed: boolean;
12966
13083
  expiresAt: number;
@@ -12978,7 +13095,7 @@ export type AppRouter = TrpcCoreRouter<{
12978
13095
  port: number;
12979
13096
  };
12980
13097
  code: string;
12981
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13098
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
12982
13099
  hubConfirmed: boolean;
12983
13100
  agentConfirmed: boolean;
12984
13101
  expiresAt: number;
@@ -12999,7 +13116,7 @@ export type AppRouter = TrpcCoreRouter<{
12999
13116
  port: number;
13000
13117
  };
13001
13118
  code: string;
13002
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13119
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
13003
13120
  hubConfirmed: boolean;
13004
13121
  agentConfirmed: boolean;
13005
13122
  expiresAt: number;
@@ -13019,7 +13136,7 @@ export type AppRouter = TrpcCoreRouter<{
13019
13136
  port: number;
13020
13137
  };
13021
13138
  code: string;
13022
- state: "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected" | "failed";
13139
+ state: "failed" | "expired" | "paired" | "awaiting-confirmation" | "completing" | "rejected";
13023
13140
  hubConfirmed: boolean;
13024
13141
  agentConfirmed: boolean;
13025
13142
  expiresAt: number;
@@ -13451,7 +13568,7 @@ export type AppRouter = TrpcCoreRouter<{
13451
13568
  ok: true;
13452
13569
  } | {
13453
13570
  ok: false;
13454
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13571
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13455
13572
  definitive: boolean;
13456
13573
  retryAfterSeconds?: number | undefined;
13457
13574
  };
@@ -13467,7 +13584,7 @@ export type AppRouter = TrpcCoreRouter<{
13467
13584
  ok: true;
13468
13585
  } | {
13469
13586
  ok: false;
13470
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13587
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13471
13588
  definitive: boolean;
13472
13589
  retryAfterSeconds?: number | undefined;
13473
13590
  };
@@ -13482,7 +13599,7 @@ export type AppRouter = TrpcCoreRouter<{
13482
13599
  };
13483
13600
  output: {
13484
13601
  ok: false;
13485
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13602
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13486
13603
  definitive: boolean;
13487
13604
  retryAfterSeconds?: number | undefined;
13488
13605
  } | {
@@ -13516,7 +13633,7 @@ export type AppRouter = TrpcCoreRouter<{
13516
13633
  ok: true;
13517
13634
  } | {
13518
13635
  ok: false;
13519
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13636
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13520
13637
  definitive: boolean;
13521
13638
  retryAfterSeconds?: number | undefined;
13522
13639
  };
@@ -13534,7 +13651,7 @@ export type AppRouter = TrpcCoreRouter<{
13534
13651
  sessionsEnded: number;
13535
13652
  } | {
13536
13653
  ok: false;
13537
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13654
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13538
13655
  definitive: boolean;
13539
13656
  retryAfterSeconds?: number | undefined;
13540
13657
  };
@@ -13558,7 +13675,7 @@ export type AppRouter = TrpcCoreRouter<{
13558
13675
  lastUsedFrom: string | null;
13559
13676
  revokedAt: number | null;
13560
13677
  revokedBy: string | null;
13561
- status: "expired" | "revoked" | "active";
13678
+ status: "revoked" | "expired" | "active";
13562
13679
  }[];
13563
13680
  meta: object;
13564
13681
  }>;
@@ -13613,7 +13730,7 @@ export type AppRouter = TrpcCoreRouter<{
13613
13730
  ok: true;
13614
13731
  } | {
13615
13732
  ok: false;
13616
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13733
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
13617
13734
  definitive: boolean;
13618
13735
  retryAfterSeconds?: number | undefined;
13619
13736
  };
@@ -14446,7 +14563,7 @@ export type AppRouter = TrpcCoreRouter<{
14446
14563
  ok: true;
14447
14564
  } | {
14448
14565
  ok: false;
14449
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14566
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14450
14567
  definitive: boolean;
14451
14568
  retryAfterSeconds?: number | undefined;
14452
14569
  };
@@ -14462,7 +14579,7 @@ export type AppRouter = TrpcCoreRouter<{
14462
14579
  ok: true;
14463
14580
  } | {
14464
14581
  ok: false;
14465
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14582
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14466
14583
  definitive: boolean;
14467
14584
  retryAfterSeconds?: number | undefined;
14468
14585
  };
@@ -14477,7 +14594,7 @@ export type AppRouter = TrpcCoreRouter<{
14477
14594
  };
14478
14595
  output: {
14479
14596
  ok: false;
14480
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14597
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14481
14598
  definitive: boolean;
14482
14599
  retryAfterSeconds?: number | undefined;
14483
14600
  } | {
@@ -14511,7 +14628,7 @@ export type AppRouter = TrpcCoreRouter<{
14511
14628
  ok: true;
14512
14629
  } | {
14513
14630
  ok: false;
14514
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14631
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14515
14632
  definitive: boolean;
14516
14633
  retryAfterSeconds?: number | undefined;
14517
14634
  };
@@ -14529,7 +14646,7 @@ export type AppRouter = TrpcCoreRouter<{
14529
14646
  sessionsEnded: number;
14530
14647
  } | {
14531
14648
  ok: false;
14532
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14649
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14533
14650
  definitive: boolean;
14534
14651
  retryAfterSeconds?: number | undefined;
14535
14652
  };
@@ -14553,7 +14670,7 @@ export type AppRouter = TrpcCoreRouter<{
14553
14670
  lastUsedFrom: string | null;
14554
14671
  revokedAt: number | null;
14555
14672
  revokedBy: string | null;
14556
- status: "expired" | "revoked" | "active";
14673
+ status: "revoked" | "expired" | "active";
14557
14674
  }[];
14558
14675
  meta: object;
14559
14676
  }>;
@@ -14608,7 +14725,7 @@ export type AppRouter = TrpcCoreRouter<{
14608
14725
  ok: true;
14609
14726
  } | {
14610
14727
  ok: false;
14611
- reason: "unavailable" | "expired" | "revoked" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14728
+ reason: "revoked" | "unavailable" | "expired" | "bad-public-key" | "bad-signature" | "code-invalid" | "invalid-certificate" | "nonce-invalid" | "rate-limited" | "self-enrollment-disabled" | "step-up-required" | "superseded" | "unknown-credential" | "user-gone";
14612
14729
  definitive: boolean;
14613
14730
  retryAfterSeconds?: number | undefined;
14614
14731
  };
@@ -5,7 +5,7 @@
5
5
  * `ALL_CAPABILITY_DEFINITIONS` (the whole Zod schema graph, ~+100 MB heap per
6
6
  * runner). See docs/decisions/adr-0028.md.
7
7
  *
8
- * Coverage: 1 advance-derived caps, 77 caps with 360 state leaves.
8
+ * Coverage: 1 advance-derived caps, 78 caps with 372 state leaves.
9
9
  */
10
10
  /** A bindable scalar in a capability's runtime state. */
11
11
  export interface CapStateLeaf {
@@ -54,6 +54,7 @@ import type { NotifierStatusSchema } from '../capabilities/notifier.cap.js';
54
54
  import type { NumericSensorStatusSchema } from '../capabilities/numeric-sensor.cap.js';
55
55
  import type { OsdStatusSchema } from '../capabilities/osd.cap.js';
56
56
  import type { PetFeederStatusSchema } from '../capabilities/pet-feeder.cap.js';
57
+ import type { PetFountainStatusSchema } from '../capabilities/pet-fountain.cap.js';
57
58
  import type { PowerMeterStatusSchema } from '../capabilities/power-meter.cap.js';
58
59
  import type { PresenceStatusSchema } from '../capabilities/presence.cap.js';
59
60
  import type { PressureSensorStatusSchema } from '../capabilities/pressure-sensor.cap.js';
@@ -139,6 +140,7 @@ export type CapStatusTypeMap = {
139
140
  readonly 'numeric-sensor': z.infer<typeof NumericSensorStatusSchema>;
140
141
  readonly 'osd': z.infer<typeof OsdStatusSchema>;
141
142
  readonly 'pet-feeder': z.infer<typeof PetFeederStatusSchema>;
143
+ readonly 'pet-fountain': z.infer<typeof PetFountainStatusSchema>;
142
144
  readonly 'power-meter': z.infer<typeof PowerMeterStatusSchema>;
143
145
  readonly 'presence': z.infer<typeof PresenceStatusSchema>;
144
146
  readonly 'pressure-sensor': z.infer<typeof PressureSensorStatusSchema>;
@@ -171,4 +173,4 @@ export type CapNameWithStatus = keyof CapStatusTypeMap;
171
173
  * aggregator to enumerate caps whose `status` should be polled +
172
174
  * streamed via `subscribeDeviceStatusAggregate`.
173
175
  */
174
- export declare const CAP_NAMES_WITH_STATUS: readonly ["accessories", "air-quality-sensor", "alarm-panel", "ambient-light-sensor", "automation-control", "battery", "binary", "brightness", "broker", "camera-credentials", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "device-adoption", "device-discovery", "device-export", "device-status", "dishwasher", "doorbell", "enum-sensor", "event-emitter", "fan-control", "feature-probe", "flood", "gas", "group-active", "group-commands", "group-status", "heating-valve", "humidifier", "humidity-sensor", "image", "image-settings", "intercom", "lawn-mower-control", "lock-control", "media-player", "meter", "motion", "motion-trigger", "motion-zones", "mqtt-broker", "native-object-detection", "navigation", "network-link", "notifier", "numeric-sensor", "osd", "pet-feeder", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "recording-archive", "recording-onboard", "recording-signal", "running-state", "scene-monitor", "script-runner", "smoke", "snapshot", "stream-params", "switch", "tamper", "temperature-sensor", "update", "vacuum-control", "valve", "vibration", "water-heater", "weather"];
176
+ export declare const CAP_NAMES_WITH_STATUS: readonly ["accessories", "air-quality-sensor", "alarm-panel", "ambient-light-sensor", "automation-control", "battery", "binary", "brightness", "broker", "camera-credentials", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "cover", "day-night", "device-adoption", "device-discovery", "device-export", "device-status", "dishwasher", "doorbell", "enum-sensor", "event-emitter", "fan-control", "feature-probe", "flood", "gas", "group-active", "group-commands", "group-status", "heating-valve", "humidifier", "humidity-sensor", "image", "image-settings", "intercom", "lawn-mower-control", "lock-control", "media-player", "meter", "motion", "motion-trigger", "motion-zones", "mqtt-broker", "native-object-detection", "navigation", "network-link", "notifier", "numeric-sensor", "osd", "pet-feeder", "pet-fountain", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "recording-archive", "recording-onboard", "recording-signal", "running-state", "scene-monitor", "script-runner", "smoke", "snapshot", "stream-params", "switch", "tamper", "temperature-sensor", "update", "vacuum-control", "valve", "vibration", "water-heater", "weather"];
@@ -113,6 +113,7 @@ export { networkAccessCapability } from '../capabilities/network-access.cap.js';
113
113
  export { networkLinkCapability } from '../capabilities/network-link.cap.js';
114
114
  export { networkQualityCapability } from '../capabilities/network-quality.cap.js';
115
115
  export { nodeCertificatesCapability } from '../capabilities/node-certificates.cap.js';
116
+ export { nodeRemovalHookCapability } from '../capabilities/node-removal-hook.cap.js';
116
117
  export { nodesCapability } from '../capabilities/nodes.cap.js';
117
118
  export { notificationOutputCapability } from '../capabilities/notification-output.cap.js';
118
119
  export { notificationRulesCapability } from '../capabilities/notification-rules.cap.js';
@@ -123,6 +124,7 @@ export { oidcConnectionsCapability } from '../capabilities/oidc-connections.cap.
123
124
  export { osdCapability } from '../capabilities/osd.cap.js';
124
125
  export { osdManagerCapability } from '../capabilities/osd-manager.cap.js';
125
126
  export { petFeederCapability } from '../capabilities/pet-feeder.cap.js';
127
+ export { petFountainCapability } from '../capabilities/pet-fountain.cap.js';
126
128
  export { pipelineAnalyticsCapability } from '../capabilities/pipeline-analytics.cap.js';
127
129
  export { pipelineExecutorCapability } from '../capabilities/pipeline-executor.cap.js';
128
130
  export { pipelineOrchestratorCapability } from '../capabilities/pipeline-orchestrator.cap.js';
@@ -304,6 +306,7 @@ export declare const CAPABILITY_NAMES: {
304
306
  readonly networkLink: 'network-link';
305
307
  readonly networkQuality: 'network-quality';
306
308
  readonly nodeCertificates: 'node-certificates';
309
+ readonly nodeRemovalHook: 'node-removal-hook';
307
310
  readonly nodes: 'nodes';
308
311
  readonly notificationOutput: 'notification-output';
309
312
  readonly notificationRules: 'notification-rules';
@@ -314,6 +317,7 @@ export declare const CAPABILITY_NAMES: {
314
317
  readonly osd: 'osd';
315
318
  readonly osdManager: 'osd-manager';
316
319
  readonly petFeeder: 'pet-feeder';
320
+ readonly petFountain: 'pet-fountain';
317
321
  readonly pipelineAnalytics: 'pipeline-analytics';
318
322
  readonly pipelineExecutor: 'pipeline-executor';
319
323
  readonly pipelineOrchestrator: 'pipeline-orchestrator';
@@ -508,6 +512,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
508
512
  readonly networkLink: TRouter;
509
513
  readonly networkQuality: TRouter;
510
514
  readonly nodeCertificates: TRouter;
515
+ readonly nodeRemovalHook: TRouter;
511
516
  readonly nodes: TRouter;
512
517
  readonly notificationOutput: TRouter;
513
518
  readonly notificationRules: TRouter;
@@ -518,6 +523,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
518
523
  readonly osd: TRouter;
519
524
  readonly osdManager: TRouter;
520
525
  readonly petFeeder: TRouter;
526
+ readonly petFountain: TRouter;
521
527
  readonly pipelineAnalytics: TRouter;
522
528
  readonly pipelineExecutor: TRouter;
523
529
  readonly pipelineOrchestrator: TRouter;
@@ -584,12 +590,12 @@ export interface CapabilityRouterMap<TRouter = unknown> {
584
590
  readonly zoneRules: TRouter;
585
591
  readonly zones: TRouter;
586
592
  }
587
- /** Capability names whose mode is `singleton` (153 caps). */
588
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', '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', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'ir-transmitter', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', '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', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'remote', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
593
+ /** Capability names whose mode is `singleton` (154 caps). */
594
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', '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', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'ir-transmitter', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pet-fountain', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'remote', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
589
595
  /** Union of singleton capability names (literal string union). */
590
596
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
591
- /** Capability names whose mode is `collection` (37 caps). */
592
- export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', 'addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-adoption', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', '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', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
597
+ /** Capability names whose mode is `collection` (38 caps). */
598
+ export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', 'addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-adoption', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', 'embedding-encoder', 'failure-contribution', 'llm', 'load-contribution', 'log-channels', 'log-destination', 'login-method', 'mesh-network', 'mqtt-broker', 'network-access', 'node-removal-hook', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
593
599
  /** Union of collection capability names (literal string union). */
594
600
  export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
595
601
  /** 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: 28 collection caps, 46 array methods.
11
+ * Coverage: 28 collection caps, 48 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: 2 caps, 7 methods.
24
+ * Coverage: 3 caps, 11 methods.
25
25
  */
26
26
  export declare const PROVIDER_OPTIONAL_METHODS: Readonly<Record<string, readonly string[]>>;
27
27
  /**
@@ -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.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];
60
60
  readonly apply: 'add';
61
61
  readonly vocabularyCap: 'consumables';
62
62
  readonly sources: readonly [];
@@ -49,6 +49,7 @@ import { networkLinkCapability } from '../capabilities/network-link.cap.js';
49
49
  import { notifierCapability } from '../capabilities/notifier.cap.js';
50
50
  import { numericSensorCapability } from '../capabilities/numeric-sensor.cap.js';
51
51
  import { petFeederCapability } from '../capabilities/pet-feeder.cap.js';
52
+ import { petFountainCapability } from '../capabilities/pet-fountain.cap.js';
52
53
  import { powerMeterCapability } from '../capabilities/power-meter.cap.js';
53
54
  import { presenceCapability } from '../capabilities/presence.cap.js';
54
55
  import { pressureSensorCapability } from '../capabilities/pressure-sensor.cap.js';
@@ -137,6 +138,7 @@ export interface DeviceLocalState {
137
138
  notifier: InferRuntimeState<typeof notifierCapability>;
138
139
  numericSensor: InferRuntimeState<typeof numericSensorCapability>;
139
140
  petFeeder: InferRuntimeState<typeof petFeederCapability>;
141
+ petFountain: InferRuntimeState<typeof petFountainCapability>;
140
142
  powerMeter: InferRuntimeState<typeof powerMeterCapability>;
141
143
  presence: InferRuntimeState<typeof presenceCapability>;
142
144
  pressureSensor: InferRuntimeState<typeof pressureSensorCapability>;
@@ -235,6 +237,7 @@ export interface CapNameToRuntimeStateMap {
235
237
  'notifier': InferRuntimeState<typeof notifierCapability>;
236
238
  'numeric-sensor': InferRuntimeState<typeof numericSensorCapability>;
237
239
  'pet-feeder': InferRuntimeState<typeof petFeederCapability>;
240
+ 'pet-fountain': InferRuntimeState<typeof petFountainCapability>;
238
241
  'power-meter': InferRuntimeState<typeof powerMeterCapability>;
239
242
  'presence': InferRuntimeState<typeof presenceCapability>;
240
243
  'pressure-sensor': InferRuntimeState<typeof pressureSensorCapability>;