@camstack/types 1.2.53 → 1.2.55

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.
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The one place a bearer principal is classified and matched against a
3
+ * `TokenScope` set. Pure — no I/O, no registry, no logger — so the kernel,
4
+ * `server/backend` and any ADDON can share it. It lives in `@camstack/types`
5
+ * for exactly that reason: `scopesAllowDeviceCap` used to live in
6
+ * `@camstack/system`, which addons may not import, so `addon-export-alexa`
7
+ * hand-copied it into `directive-router.ts` and said so in a comment twice.
8
+ * One vector, one derivation.
9
+ *
10
+ * ── What this exists to stop ────────────────────────────────────────────
11
+ *
12
+ * Measured on the live hub, 2026-08-09: an `oauth-access` token minted for the
13
+ * `export-alexa` account link was accepted on
14
+ * `POST /addon/homeassistant-export/command` — a route that actuates PTZ,
15
+ * reboot, the per-camera switches and notification snooze. The addon-route gate
16
+ * verified the JWT signature and checked `isAdmin` for `access: 'admin'` routes
17
+ * and nothing else, so every `access: 'authenticated'` route in the product was
18
+ * reachable by ANY valid hub JWT, including one issued to a different
19
+ * integration, a 60-second single-use authorization CODE, and a 30-day refresh
20
+ * token. See D103.
21
+ */
22
+ import type { MethodAccess, TokenScope } from '../schemas/auth-records.js';
23
+ /**
24
+ * The access flavour an HTTP verb asks for. `GET`/`HEAD` read; anything that
25
+ * can change state is at least `create`.
26
+ *
27
+ * An UNRECOGNISED verb resolves to `delete`, the most privileged flavour, so a
28
+ * method nobody thought about fails closed. The inverse default — treating the
29
+ * unknown as `view` — is how a gate quietly stops gating.
30
+ */
31
+ export declare function methodAccessForHttpMethod(method: string): MethodAccess;
32
+ /**
33
+ * True if the scope set grants `access` on device-scoped capabilities.
34
+ * A `category:device` grant covers every device cap (the broad grant).
35
+ */
36
+ export declare function scopesAllowDeviceCap(scopes: readonly TokenScope[], access: MethodAccess): boolean;
37
+ /**
38
+ * True if the scope set names this addon with at least `access`.
39
+ *
40
+ * Deliberately NOT satisfied by `category:device`: a grant over per-camera
41
+ * capabilities says nothing about an addon's own HTTP surface, and conflating
42
+ * the two is precisely the confusion that let an Alexa token drive Home
43
+ * Assistant's command route.
44
+ */
45
+ export declare function scopesAllowAddon(scopes: readonly TokenScope[], addonId: string, access: MethodAccess): boolean;
46
+ /**
47
+ * What a verified JWT actually IS. Every one of these verifies under the same
48
+ * hub secret — that is the whole trap. `jwt.verify` succeeding means "we minted
49
+ * this", never "this is an API credential".
50
+ */
51
+ export type BearerPrincipal =
52
+ /** An ordinary user session from `auth.login`. Governed by the user's own scopes. */
53
+ {
54
+ readonly kind: 'session';
55
+ }
56
+ /** An account-linking token issued to an integration. Governed by the grant. */
57
+ | {
58
+ readonly kind: 'integration';
59
+ readonly provider: 'oauth-access';
60
+ }
61
+ /** Minted for one hand-off step and never meant to authenticate an API call. */
62
+ | {
63
+ readonly kind: 'not-a-credential';
64
+ readonly reason: string;
65
+ };
66
+ /**
67
+ * The narrow shape read off a verified JWT payload. Every field optional: the
68
+ * payload arrives as whatever was signed, and a missing discriminator must
69
+ * classify, never throw.
70
+ */
71
+ export interface BearerPayloadShape {
72
+ readonly kind?: unknown;
73
+ readonly provider?: unknown;
74
+ readonly userId?: unknown;
75
+ readonly isAdmin?: unknown;
76
+ readonly scopes?: unknown;
77
+ }
78
+ /**
79
+ * Classify a VERIFIED JWT payload.
80
+ *
81
+ * A session JWT carries no `kind`. Everything else in this system tags itself:
82
+ * `kind: 'sso-bridge'` for the OAuth/SSO family (discriminated further by
83
+ * `provider`), `kind: 'totp-challenge'` for login leg 1. Only `oauth-access` is
84
+ * an API credential; a code lives in a browser redirect URL and a refresh token
85
+ * belongs to `/token`.
86
+ */
87
+ export declare function classifyBearerPrincipal(payload: BearerPayloadShape): BearerPrincipal;
88
+ export interface PrincipalAddonReachInput {
89
+ readonly principal: BearerPrincipal;
90
+ readonly scopes: readonly TokenScope[];
91
+ readonly isAdmin: boolean;
92
+ readonly addonId: string;
93
+ /** The HTTP verb of the request being gated. */
94
+ readonly method: string;
95
+ }
96
+ /**
97
+ * The verdict, with the reason carried so the refusal can be LOGGED. A branch
98
+ * that drops a request silently reads as "never happened".
99
+ */
100
+ export type PrincipalAddonReachVerdict = {
101
+ readonly allowed: true;
102
+ } | {
103
+ readonly allowed: false;
104
+ readonly reason: string;
105
+ };
106
+ /**
107
+ * May this principal reach `/addon/<addonId>/…` on an `authenticated` route or
108
+ * data-plane endpoint?
109
+ *
110
+ * Three principals, three answers:
111
+ *
112
+ * - **session** — unchanged. A user session is governed by the route's own
113
+ * `access` (`authenticated` / `admin`), exactly as before. Tightening HERE
114
+ * would lock every non-admin viewer out of recorder playback, snapshot media
115
+ * and the stream-broker embed, which is a worse outcome than the hole.
116
+ * - **integration** — must hold `addon:<addonId>` at the verb's access. This is
117
+ * the same rule the `cst_` scoped-token branch has always applied; the JWT
118
+ * branch simply never applied it, and closing that divergence IS the fix.
119
+ * `isAdmin` is ignored: an integration token is minted `isAdmin: false` and a
120
+ * token claiming otherwise must not talk its way past the grant.
121
+ * - **not-a-credential** — refused unconditionally.
122
+ */
123
+ export declare function principalMayReachAddon(input: PrincipalAddonReachInput): PrincipalAddonReachVerdict;
@@ -6,6 +6,76 @@ import { type InferProvider } from './capability-definition.js';
6
6
  * Each provider returns a static descriptor; the core enumerates them
7
7
  * to validate the `integration=` query param and resolve the consent
8
8
  * label + the scopes baked into the issued token.
9
+ *
10
+ * ## Declaring one
11
+ *
12
+ * An OAuth client is integration-specific knowledge — who the client is, what
13
+ * it may ask for, where it may be sent — so it is declared by the ADDON that
14
+ * owns the integration, never by the kernel and never as a branch inside
15
+ * `oauth2-routes.ts` ([D101](../../../../docs/decisions/adr-0101.md)). Three
16
+ * steps, no others:
17
+ *
18
+ * 1. Add `{ "name": "oauth-integration" }` to the addon's `camstack.addons[]`
19
+ * manifest entry. This is also what tells the hub, at addon-LOAD time, that
20
+ * a descriptor is owed — see "the boot window" below.
21
+ * 2. Return a provider from `onInitialize()`:
22
+ *
23
+ * ```ts
24
+ * const provider: IOauthIntegrationProvider = {
25
+ * getDescriptor: async () => ({
26
+ * integrationId: 'my-thing', // the `integration=` query param
27
+ * displayName: 'My Thing',
28
+ * requestedScopes: [ … ], // see below
29
+ * allowedRedirectPrefixes: ['https://callback.example/'],
30
+ * }),
31
+ * }
32
+ * return [{ capability: oauthIntegrationCapability, provider }]
33
+ * ```
34
+ *
35
+ * The descriptor must be **static** — it is read on the authorize path, so
36
+ * never put an await on network or disk behind it, and never register it
37
+ * behind one either (a provider is registered only once `onInitialize`
38
+ * RETURNS, so anything awaited before the return delays linking).
39
+ * 3. Nothing else. There is no allow-list to join, no id to register with the
40
+ * core, and no per-integration branch anywhere: `/api/oauth2/authorize` and
41
+ * `/api/oauth2/integrations` are built from this collection alone.
42
+ *
43
+ * **Scopes. `requestedScopes` has exactly ONE meaning: what the integration
44
+ * NEEDS to function.** Not a blast radius, not a conservative
45
+ * under-declaration, not a description of some other path the addon happens to
46
+ * have. Derive it from what the client actually calls **with this token** —
47
+ * every tRPC path against `METHOD_ACCESS_MAP`, plus an `addon:` grant for every
48
+ * addon HTTP route it posts to — and write the call that justifies each entry
49
+ * next to it. Two integrations once used this field to mean two different
50
+ * things; the operator ruled there is one meaning, and any third integration
51
+ * inherits it (2026-08-09).
52
+ *
53
+ * This is not documentation, it is the ENFORCEMENT INPUT. Since
54
+ * [D103](../../../../docs/decisions/adr-0103.md) the `/addon/:addonId/*` gate
55
+ * checks an integration token's grant before letting it reach an
56
+ * `access: 'authenticated'` route, so an **under-declaration is an integration
57
+ * that stops working** — a missing `addon:` entry means `403 Token scope
58
+ * mismatch` on every control the client tries to actuate. Widen the descriptor
59
+ * honestly rather than weakening a check to make a route pass.
60
+ *
61
+ * Prefer a narrow `capability:` scope to a `category:` one unless the client
62
+ * genuinely needs a whole family; a category scope grants every future member
63
+ * of that category too. `category:system [create]` has been rejected once and
64
+ * should stay rejected: it hands `addons.installPackage` to an integration.
65
+ *
66
+ * Calls the ADDON itself makes over `ctx.api` run as the addon and are not
67
+ * scope-checked, so they are not what this field describes — but reaching the
68
+ * addon's route in the first place IS, and that is the entry to declare.
69
+ *
70
+ * **The boot window.** An addon registers its provider after its runner forks
71
+ * and initialises, so between hub start and that moment this collection is
72
+ * incomplete and an `integrationId` can be legitimately absent. The core does
73
+ * not wait, poll or cache around this ([D3](../../../../docs/decisions/adr-0003.md)):
74
+ * it compares the manifest declarers against the registered providers and
75
+ * answers `503 temporarily_unavailable` (with `Retry-After` and the pending
76
+ * addon ids) instead of `400 unknown integration`, and reports
77
+ * `complete: false` on `GET /api/oauth2/integrations`. A client should retry
78
+ * while the list is incomplete rather than conclude the hub cannot do OAuth.
9
79
  */
10
80
  declare const OauthIntegrationDescriptorSchema: z.ZodObject<{
11
81
  integrationId: z.ZodString;
@@ -50,6 +120,7 @@ declare const OauthIntegrationDescriptorSchema: z.ZodObject<{
50
120
  allowedPrivateHostPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
121
  requiresPkce: z.ZodOptional<z.ZodBoolean>;
52
122
  hubUrl: z.ZodOptional<z.ZodString>;
123
+ refreshTokenTtlSec: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
53
124
  }, z.core.$strip>;
54
125
  export declare const oauthIntegrationCapability: {
55
126
  readonly name: "oauth-integration";
@@ -100,6 +171,7 @@ export declare const oauthIntegrationCapability: {
100
171
  allowedPrivateHostPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
172
  requiresPkce: z.ZodOptional<z.ZodBoolean>;
102
173
  hubUrl: z.ZodOptional<z.ZodString>;
174
+ refreshTokenTtlSec: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
103
175
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
104
176
  };
105
177
  };
@@ -63,6 +63,7 @@ declare const SsoBridgeClaimsSchema: z.ZodObject<{
63
63
  jti: z.ZodOptional<z.ZodString>;
64
64
  codeChallenge: z.ZodOptional<z.ZodString>;
65
65
  sessionId: z.ZodOptional<z.ZodString>;
66
+ refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
66
67
  }, z.core.$strip>;
67
68
  export declare const ssoBridgeCapability: {
68
69
  readonly name: "sso-bridge";
@@ -120,8 +121,9 @@ export declare const ssoBridgeCapability: {
120
121
  jti: z.ZodOptional<z.ZodString>;
121
122
  codeChallenge: z.ZodOptional<z.ZodString>;
122
123
  sessionId: z.ZodOptional<z.ZodString>;
124
+ refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
123
125
  }, z.core.$strip>;
124
- ttlSec: z.ZodOptional<z.ZodNumber>;
126
+ ttlSec: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
125
127
  }, z.core.$strip>, z.ZodObject<{
126
128
  token: z.ZodString;
127
129
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
@@ -176,6 +178,7 @@ export declare const ssoBridgeCapability: {
176
178
  jti: z.ZodOptional<z.ZodString>;
177
179
  codeChallenge: z.ZodOptional<z.ZodString>;
178
180
  sessionId: z.ZodOptional<z.ZodString>;
181
+ refreshTtl: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
179
182
  }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
180
183
  };
181
184
  };
@@ -938,6 +938,7 @@ export declare const userManagementCapability: {
938
938
  redirectUri: z.ZodString;
939
939
  hubUrl: z.ZodString;
940
940
  codeChallenge: z.ZodOptional<z.ZodString>;
941
+ refreshTtlSec: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"never">]>>;
941
942
  }, z.core.$strip>, z.ZodObject<{
942
943
  code: z.ZodString;
943
944
  }, z.core.$strip>, "mutation">;
package/dist/index.d.ts CHANGED
@@ -113,6 +113,7 @@ export * from './types/pipeline.js';
113
113
  export type { AvailableEngine, PipelineAddonSchema, PipelineDefaultStep, PipelineModelOption, PipelineSchema, PipelineSlotSchema, PipelineTemplate, PipelineTemplateStep, TemplateValidationResult, } from './types/pipeline-schema.js';
114
114
  export * from './types/pipeline-step.js';
115
115
  export * from './types/tracked.js';
116
+ export { type BearerPayloadShape, type BearerPrincipal, classifyBearerPrincipal, methodAccessForHttpMethod, type PrincipalAddonReachInput, type PrincipalAddonReachVerdict, principalMayReachAddon, scopesAllowAddon, scopesAllowDeviceCap, } from './auth/principal-scope.js';
116
117
  export type { AutomationAction, AutomationCondition, AutomationConditionAll, AutomationConditionAny, AutomationConditionExpression, AutomationConditionLeaf, AutomationConditionNot, AutomationConditionOperator, AutomationRecipe, AutomationTrigger, GenerateAutomationBlockInput, } from './automation/index.js';
117
118
  export { AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationRecipeSchema, AutomationTriggerSchema, conditionDepth, countConditionLeaves, generateAutomationBlock, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, validateRecipeBounds, } from './automation/index.js';
118
119
  export * from './cap-call-context.js';
package/dist/index.js CHANGED
@@ -2469,6 +2469,102 @@ var ConvertResultSchema = zod.z.object({
2469
2469
  artifacts: zod.z.array(ConvertArtifactSchema).readonly()
2470
2470
  });
2471
2471
  //#endregion
2472
+ //#region src/auth/principal-scope.ts
2473
+ /**
2474
+ * The access flavour an HTTP verb asks for. `GET`/`HEAD` read; anything that
2475
+ * can change state is at least `create`.
2476
+ *
2477
+ * An UNRECOGNISED verb resolves to `delete`, the most privileged flavour, so a
2478
+ * method nobody thought about fails closed. The inverse default — treating the
2479
+ * unknown as `view` — is how a gate quietly stops gating.
2480
+ */
2481
+ function methodAccessForHttpMethod(method) {
2482
+ switch (method.toUpperCase()) {
2483
+ case "GET":
2484
+ case "HEAD":
2485
+ case "OPTIONS": return "view";
2486
+ case "POST":
2487
+ case "PUT":
2488
+ case "PATCH": return "create";
2489
+ default: return "delete";
2490
+ }
2491
+ }
2492
+ /**
2493
+ * True if the scope set grants `access` on device-scoped capabilities.
2494
+ * A `category:device` grant covers every device cap (the broad grant).
2495
+ */
2496
+ function scopesAllowDeviceCap(scopes, access) {
2497
+ return scopes.some((s) => s.type === "category" && s.target === "device" && s.access.includes(access));
2498
+ }
2499
+ /**
2500
+ * True if the scope set names this addon with at least `access`.
2501
+ *
2502
+ * Deliberately NOT satisfied by `category:device`: a grant over per-camera
2503
+ * capabilities says nothing about an addon's own HTTP surface, and conflating
2504
+ * the two is precisely the confusion that let an Alexa token drive Home
2505
+ * Assistant's command route.
2506
+ */
2507
+ function scopesAllowAddon(scopes, addonId, access) {
2508
+ return scopes.some((s) => s.type === "addon" && s.target === addonId && s.access.includes(access));
2509
+ }
2510
+ /**
2511
+ * Classify a VERIFIED JWT payload.
2512
+ *
2513
+ * A session JWT carries no `kind`. Everything else in this system tags itself:
2514
+ * `kind: 'sso-bridge'` for the OAuth/SSO family (discriminated further by
2515
+ * `provider`), `kind: 'totp-challenge'` for login leg 1. Only `oauth-access` is
2516
+ * an API credential; a code lives in a browser redirect URL and a refresh token
2517
+ * belongs to `/token`.
2518
+ */
2519
+ function classifyBearerPrincipal(payload) {
2520
+ const kind = payload.kind;
2521
+ if (kind === void 0) return { kind: "session" };
2522
+ if (kind !== "sso-bridge") return {
2523
+ kind: "not-a-credential",
2524
+ reason: `bridge token kind=${String(kind)}`
2525
+ };
2526
+ const provider = payload.provider;
2527
+ if (provider === "oauth-access") return {
2528
+ kind: "integration",
2529
+ provider: "oauth-access"
2530
+ };
2531
+ return {
2532
+ kind: "not-a-credential",
2533
+ reason: `bridge token provider=${String(provider)}`
2534
+ };
2535
+ }
2536
+ /**
2537
+ * May this principal reach `/addon/<addonId>/…` on an `authenticated` route or
2538
+ * data-plane endpoint?
2539
+ *
2540
+ * Three principals, three answers:
2541
+ *
2542
+ * - **session** — unchanged. A user session is governed by the route's own
2543
+ * `access` (`authenticated` / `admin`), exactly as before. Tightening HERE
2544
+ * would lock every non-admin viewer out of recorder playback, snapshot media
2545
+ * and the stream-broker embed, which is a worse outcome than the hole.
2546
+ * - **integration** — must hold `addon:<addonId>` at the verb's access. This is
2547
+ * the same rule the `cst_` scoped-token branch has always applied; the JWT
2548
+ * branch simply never applied it, and closing that divergence IS the fix.
2549
+ * `isAdmin` is ignored: an integration token is minted `isAdmin: false` and a
2550
+ * token claiming otherwise must not talk its way past the grant.
2551
+ * - **not-a-credential** — refused unconditionally.
2552
+ */
2553
+ function principalMayReachAddon(input) {
2554
+ const { principal } = input;
2555
+ if (principal.kind === "not-a-credential") return {
2556
+ allowed: false,
2557
+ reason: principal.reason
2558
+ };
2559
+ if (principal.kind === "session") return { allowed: true };
2560
+ const access = methodAccessForHttpMethod(input.method);
2561
+ if (scopesAllowAddon(input.scopes, input.addonId, access)) return { allowed: true };
2562
+ return {
2563
+ allowed: false,
2564
+ reason: `integration token holds no addon:${input.addonId}[${access}] grant`
2565
+ };
2566
+ }
2567
+ //#endregion
2472
2568
  //#region src/expression/errors.ts
2473
2569
  /**
2474
2570
  * Error types for the safe expression engine. Two distinct classes so callers
@@ -13012,6 +13108,76 @@ var ScopedTokenSchema = zod.z.object({
13012
13108
  * Each provider returns a static descriptor; the core enumerates them
13013
13109
  * to validate the `integration=` query param and resolve the consent
13014
13110
  * label + the scopes baked into the issued token.
13111
+ *
13112
+ * ## Declaring one
13113
+ *
13114
+ * An OAuth client is integration-specific knowledge — who the client is, what
13115
+ * it may ask for, where it may be sent — so it is declared by the ADDON that
13116
+ * owns the integration, never by the kernel and never as a branch inside
13117
+ * `oauth2-routes.ts` ([D101](../../../../docs/decisions/adr-0101.md)). Three
13118
+ * steps, no others:
13119
+ *
13120
+ * 1. Add `{ "name": "oauth-integration" }` to the addon's `camstack.addons[]`
13121
+ * manifest entry. This is also what tells the hub, at addon-LOAD time, that
13122
+ * a descriptor is owed — see "the boot window" below.
13123
+ * 2. Return a provider from `onInitialize()`:
13124
+ *
13125
+ * ```ts
13126
+ * const provider: IOauthIntegrationProvider = {
13127
+ * getDescriptor: async () => ({
13128
+ * integrationId: 'my-thing', // the `integration=` query param
13129
+ * displayName: 'My Thing',
13130
+ * requestedScopes: [ … ], // see below
13131
+ * allowedRedirectPrefixes: ['https://callback.example/'],
13132
+ * }),
13133
+ * }
13134
+ * return [{ capability: oauthIntegrationCapability, provider }]
13135
+ * ```
13136
+ *
13137
+ * The descriptor must be **static** — it is read on the authorize path, so
13138
+ * never put an await on network or disk behind it, and never register it
13139
+ * behind one either (a provider is registered only once `onInitialize`
13140
+ * RETURNS, so anything awaited before the return delays linking).
13141
+ * 3. Nothing else. There is no allow-list to join, no id to register with the
13142
+ * core, and no per-integration branch anywhere: `/api/oauth2/authorize` and
13143
+ * `/api/oauth2/integrations` are built from this collection alone.
13144
+ *
13145
+ * **Scopes. `requestedScopes` has exactly ONE meaning: what the integration
13146
+ * NEEDS to function.** Not a blast radius, not a conservative
13147
+ * under-declaration, not a description of some other path the addon happens to
13148
+ * have. Derive it from what the client actually calls **with this token** —
13149
+ * every tRPC path against `METHOD_ACCESS_MAP`, plus an `addon:` grant for every
13150
+ * addon HTTP route it posts to — and write the call that justifies each entry
13151
+ * next to it. Two integrations once used this field to mean two different
13152
+ * things; the operator ruled there is one meaning, and any third integration
13153
+ * inherits it (2026-08-09).
13154
+ *
13155
+ * This is not documentation, it is the ENFORCEMENT INPUT. Since
13156
+ * [D103](../../../../docs/decisions/adr-0103.md) the `/addon/:addonId/*` gate
13157
+ * checks an integration token's grant before letting it reach an
13158
+ * `access: 'authenticated'` route, so an **under-declaration is an integration
13159
+ * that stops working** — a missing `addon:` entry means `403 Token scope
13160
+ * mismatch` on every control the client tries to actuate. Widen the descriptor
13161
+ * honestly rather than weakening a check to make a route pass.
13162
+ *
13163
+ * Prefer a narrow `capability:` scope to a `category:` one unless the client
13164
+ * genuinely needs a whole family; a category scope grants every future member
13165
+ * of that category too. `category:system [create]` has been rejected once and
13166
+ * should stay rejected: it hands `addons.installPackage` to an integration.
13167
+ *
13168
+ * Calls the ADDON itself makes over `ctx.api` run as the addon and are not
13169
+ * scope-checked, so they are not what this field describes — but reaching the
13170
+ * addon's route in the first place IS, and that is the entry to declare.
13171
+ *
13172
+ * **The boot window.** An addon registers its provider after its runner forks
13173
+ * and initialises, so between hub start and that moment this collection is
13174
+ * incomplete and an `integrationId` can be legitimately absent. The core does
13175
+ * not wait, poll or cache around this ([D3](../../../../docs/decisions/adr-0003.md)):
13176
+ * it compares the manifest declarers against the registered providers and
13177
+ * answers `503 temporarily_unavailable` (with `Retry-After` and the pending
13178
+ * addon ids) instead of `400 unknown integration`, and reports
13179
+ * `complete: false` on `GET /api/oauth2/integrations`. A client should retry
13180
+ * while the list is incomplete rather than conclude the hub cannot do OAuth.
13015
13181
  */
13016
13182
  var OauthIntegrationDescriptorSchema = zod.z.object({
13017
13183
  /** Stable id used as the `integration=` query param, e.g. 'export-alexa'. */
@@ -13042,7 +13208,30 @@ var OauthIntegrationDescriptorSchema = zod.z.object({
13042
13208
  * present, /api/oauth2/authorize bakes THIS into the code instead of the
13043
13209
  * hub-global `publicHubUrl()`, so a forked exporter addon (which can't set
13044
13210
  * the hub's env) drives the claim that its cloud Lambda routes back on. */
13045
- hubUrl: zod.z.string().optional()
13211
+ hubUrl: zod.z.string().optional(),
13212
+ /**
13213
+ * How long a REFRESH token issued for this integration lives — seconds, or
13214
+ * `'never'` for a token minted with no `exp` claim at all. Omit to keep the
13215
+ * 30-day default, which is what every link used before this field existed.
13216
+ *
13217
+ * Declared here for the same reason `requestedScopes` is: the integration
13218
+ * knows what it needs. Amazon's account linking and a Home Assistant config
13219
+ * entry are both meant to survive indefinitely, and re-linking is a manual
13220
+ * user action, so a 30-day expiry silently unlinks a working integration.
13221
+ *
13222
+ * **The security posture, stated so it is owned deliberately.** A refresh
13223
+ * token that never expires is permanent access if it leaks. What bounds it is
13224
+ * revocation, not time: `oauthRefresh` re-reads the session on every use and
13225
+ * returns `null` once `revokedAt` is set, as does `oauthVerifyAccessToken`.
13226
+ * The one gap is the ACCESS token — it is a plain signed JWT that nothing
13227
+ * re-checks against the session on the `/trpc` and `/addon/*` paths, so
13228
+ * revoking a link takes effect there only after its remaining hour. That hour
13229
+ * is why the access TTL is not configurable.
13230
+ *
13231
+ * The value is baked into the authorization code at `/authorize` and travels
13232
+ * on the tokens, so editing this field changes FUTURE links only.
13233
+ */
13234
+ refreshTokenTtlSec: zod.z.union([zod.z.number().int().positive(), zod.z.literal("never")]).optional()
13046
13235
  });
13047
13236
  var oauthIntegrationCapability = {
13048
13237
  name: "oauth-integration",
@@ -17557,7 +17746,16 @@ var SsoBridgeClaimsSchema = zod.z.object({
17557
17746
  codeChallenge: zod.z.string().optional(),
17558
17747
  /** OAuth session registry id — set on `oauth-access`/`oauth-refresh`
17559
17748
  * tokens so the verify path can check the session is not revoked. */
17560
- sessionId: zod.z.string().optional()
17749
+ sessionId: zod.z.string().optional(),
17750
+ /**
17751
+ * The refresh lifetime this LINK was created with, in seconds, or `'never'`.
17752
+ * Baked into the code at `/authorize` from the integration's descriptor and
17753
+ * carried forward so `oauthRefresh` re-mints with the same lifetime. It rides
17754
+ * on the token rather than being re-read from the descriptor on purpose:
17755
+ * editing a descriptor must not retroactively extend or shorten a link the
17756
+ * operator already consented to.
17757
+ */
17758
+ refreshTtl: zod.z.union([zod.z.number().int().positive(), zod.z.literal("never")]).optional()
17561
17759
  });
17562
17760
  var ssoBridgeCapability = {
17563
17761
  name: "sso-bridge",
@@ -17567,7 +17765,16 @@ var ssoBridgeCapability = {
17567
17765
  methods: {
17568
17766
  signBridgeToken: require_sleep.method(zod.z.object({
17569
17767
  claims: SsoBridgeClaimsSchema,
17570
- ttlSec: zod.z.number().int().positive().optional()
17768
+ /**
17769
+ * Seconds, or `'never'` for a token minted with NO `exp` claim.
17770
+ *
17771
+ * `'never'` is a literal rather than `undefined`/`0` because omitting
17772
+ * this field already means "the 5-minute SSO hand-off default", and
17773
+ * `jwt.sign` THROWS on `{ expiresIn: undefined }` — a "no expiry" that
17774
+ * went through the numeric path would fail at mint time and break
17775
+ * linking rather than produce an eternal token.
17776
+ */
17777
+ ttlSec: zod.z.union([zod.z.number().int().positive(), zod.z.literal("never")]).optional()
17571
17778
  }), zod.z.object({ token: zod.z.string() })),
17572
17779
  verifyBridgeToken: require_sleep.method(zod.z.object({ token: zod.z.string() }), SsoBridgeClaimsSchema.nullable())
17573
17780
  }
@@ -26649,7 +26856,12 @@ var userManagementCapability = {
26649
26856
  hubUrl: zod.z.string(),
26650
26857
  /** PKCE (RFC 7636) S256 challenge. Baked into the signed code; a code
26651
26858
  * that carries one can ONLY be exchanged with the matching verifier. */
26652
- codeChallenge: zod.z.string().optional()
26859
+ codeChallenge: zod.z.string().optional(),
26860
+ /** The integration's declared refresh lifetime — seconds, or `'never'`.
26861
+ * From `OauthIntegrationDescriptor.refreshTokenTtlSec`. Baked into the
26862
+ * code so the link carries its own lifetime; omit for the 30-day
26863
+ * default. */
26864
+ refreshTtlSec: zod.z.union([zod.z.number().int().positive(), zod.z.literal("never")]).optional()
26653
26865
  }), zod.z.object({ code: zod.z.string() }), {
26654
26866
  kind: "mutation",
26655
26867
  access: "create"
@@ -40442,6 +40654,7 @@ exports.canConvertUnit = canConvertUnit;
40442
40654
  exports.canonicalEgressPlan = canonicalEgressPlan;
40443
40655
  exports.carbonMonoxideCapability = carbonMonoxideCapability;
40444
40656
  exports.cellsToRects = cellsToRects;
40657
+ exports.classifyBearerPrincipal = classifyBearerPrincipal;
40445
40658
  exports.classifyStream = classifyStream;
40446
40659
  exports.classifyStreams = classifyStreams;
40447
40660
  exports.climateControlCapability = climateControlCapability;
@@ -40588,6 +40801,7 @@ exports.mediaPlayerCapability = mediaPlayerCapability;
40588
40801
  exports.mergeSourceInfo = mergeSourceInfo;
40589
40802
  exports.meshNetworkCapability = meshNetworkCapability;
40590
40803
  exports.method = require_sleep.method;
40804
+ exports.methodAccessForHttpMethod = methodAccessForHttpMethod;
40591
40805
  exports.metricsProviderCapability = metricsProviderCapability;
40592
40806
  exports.modelConvertCapability = modelConvertCapability;
40593
40807
  exports.modelDistributorCapability = modelDistributorCapability;
@@ -40636,6 +40850,7 @@ exports.powerMeterCapability = powerMeterCapability;
40636
40850
  exports.prepareNotification = prepareNotification;
40637
40851
  exports.presenceCapability = presenceCapability;
40638
40852
  exports.pressureSensorCapability = pressureSensorCapability;
40853
+ exports.principalMayReachAddon = principalMayReachAddon;
40639
40854
  exports.privacyMaskCapability = privacyMaskCapability;
40640
40855
  exports.procedureAuthKey = procedureAuthKey;
40641
40856
  exports.ptzAutotrackCapability = ptzAutotrackCapability;
@@ -40671,6 +40886,8 @@ exports.runInferenceStep = runInferenceStep;
40671
40886
  exports.runtimeDevices = runtimeDevices;
40672
40887
  exports.sceneMonitorCapability = sceneMonitorCapability;
40673
40888
  exports.scopeKey = require_sleep.scopeKey;
40889
+ exports.scopesAllowAddon = scopesAllowAddon;
40890
+ exports.scopesAllowDeviceCap = scopesAllowDeviceCap;
40674
40891
  exports.scoreRuntimes = scoreRuntimes;
40675
40892
  exports.scriptRunnerCapability = scriptRunnerCapability;
40676
40893
  exports.selectAssignedProfileSlots = require_sleep.selectAssignedProfileSlots;
package/dist/index.mjs CHANGED
@@ -2468,6 +2468,102 @@ var ConvertResultSchema = z.object({
2468
2468
  artifacts: z.array(ConvertArtifactSchema).readonly()
2469
2469
  });
2470
2470
  //#endregion
2471
+ //#region src/auth/principal-scope.ts
2472
+ /**
2473
+ * The access flavour an HTTP verb asks for. `GET`/`HEAD` read; anything that
2474
+ * can change state is at least `create`.
2475
+ *
2476
+ * An UNRECOGNISED verb resolves to `delete`, the most privileged flavour, so a
2477
+ * method nobody thought about fails closed. The inverse default — treating the
2478
+ * unknown as `view` — is how a gate quietly stops gating.
2479
+ */
2480
+ function methodAccessForHttpMethod(method) {
2481
+ switch (method.toUpperCase()) {
2482
+ case "GET":
2483
+ case "HEAD":
2484
+ case "OPTIONS": return "view";
2485
+ case "POST":
2486
+ case "PUT":
2487
+ case "PATCH": return "create";
2488
+ default: return "delete";
2489
+ }
2490
+ }
2491
+ /**
2492
+ * True if the scope set grants `access` on device-scoped capabilities.
2493
+ * A `category:device` grant covers every device cap (the broad grant).
2494
+ */
2495
+ function scopesAllowDeviceCap(scopes, access) {
2496
+ return scopes.some((s) => s.type === "category" && s.target === "device" && s.access.includes(access));
2497
+ }
2498
+ /**
2499
+ * True if the scope set names this addon with at least `access`.
2500
+ *
2501
+ * Deliberately NOT satisfied by `category:device`: a grant over per-camera
2502
+ * capabilities says nothing about an addon's own HTTP surface, and conflating
2503
+ * the two is precisely the confusion that let an Alexa token drive Home
2504
+ * Assistant's command route.
2505
+ */
2506
+ function scopesAllowAddon(scopes, addonId, access) {
2507
+ return scopes.some((s) => s.type === "addon" && s.target === addonId && s.access.includes(access));
2508
+ }
2509
+ /**
2510
+ * Classify a VERIFIED JWT payload.
2511
+ *
2512
+ * A session JWT carries no `kind`. Everything else in this system tags itself:
2513
+ * `kind: 'sso-bridge'` for the OAuth/SSO family (discriminated further by
2514
+ * `provider`), `kind: 'totp-challenge'` for login leg 1. Only `oauth-access` is
2515
+ * an API credential; a code lives in a browser redirect URL and a refresh token
2516
+ * belongs to `/token`.
2517
+ */
2518
+ function classifyBearerPrincipal(payload) {
2519
+ const kind = payload.kind;
2520
+ if (kind === void 0) return { kind: "session" };
2521
+ if (kind !== "sso-bridge") return {
2522
+ kind: "not-a-credential",
2523
+ reason: `bridge token kind=${String(kind)}`
2524
+ };
2525
+ const provider = payload.provider;
2526
+ if (provider === "oauth-access") return {
2527
+ kind: "integration",
2528
+ provider: "oauth-access"
2529
+ };
2530
+ return {
2531
+ kind: "not-a-credential",
2532
+ reason: `bridge token provider=${String(provider)}`
2533
+ };
2534
+ }
2535
+ /**
2536
+ * May this principal reach `/addon/<addonId>/…` on an `authenticated` route or
2537
+ * data-plane endpoint?
2538
+ *
2539
+ * Three principals, three answers:
2540
+ *
2541
+ * - **session** — unchanged. A user session is governed by the route's own
2542
+ * `access` (`authenticated` / `admin`), exactly as before. Tightening HERE
2543
+ * would lock every non-admin viewer out of recorder playback, snapshot media
2544
+ * and the stream-broker embed, which is a worse outcome than the hole.
2545
+ * - **integration** — must hold `addon:<addonId>` at the verb's access. This is
2546
+ * the same rule the `cst_` scoped-token branch has always applied; the JWT
2547
+ * branch simply never applied it, and closing that divergence IS the fix.
2548
+ * `isAdmin` is ignored: an integration token is minted `isAdmin: false` and a
2549
+ * token claiming otherwise must not talk its way past the grant.
2550
+ * - **not-a-credential** — refused unconditionally.
2551
+ */
2552
+ function principalMayReachAddon(input) {
2553
+ const { principal } = input;
2554
+ if (principal.kind === "not-a-credential") return {
2555
+ allowed: false,
2556
+ reason: principal.reason
2557
+ };
2558
+ if (principal.kind === "session") return { allowed: true };
2559
+ const access = methodAccessForHttpMethod(input.method);
2560
+ if (scopesAllowAddon(input.scopes, input.addonId, access)) return { allowed: true };
2561
+ return {
2562
+ allowed: false,
2563
+ reason: `integration token holds no addon:${input.addonId}[${access}] grant`
2564
+ };
2565
+ }
2566
+ //#endregion
2471
2567
  //#region src/expression/errors.ts
2472
2568
  /**
2473
2569
  * Error types for the safe expression engine. Two distinct classes so callers
@@ -13011,6 +13107,76 @@ var ScopedTokenSchema = z.object({
13011
13107
  * Each provider returns a static descriptor; the core enumerates them
13012
13108
  * to validate the `integration=` query param and resolve the consent
13013
13109
  * label + the scopes baked into the issued token.
13110
+ *
13111
+ * ## Declaring one
13112
+ *
13113
+ * An OAuth client is integration-specific knowledge — who the client is, what
13114
+ * it may ask for, where it may be sent — so it is declared by the ADDON that
13115
+ * owns the integration, never by the kernel and never as a branch inside
13116
+ * `oauth2-routes.ts` ([D101](../../../../docs/decisions/adr-0101.md)). Three
13117
+ * steps, no others:
13118
+ *
13119
+ * 1. Add `{ "name": "oauth-integration" }` to the addon's `camstack.addons[]`
13120
+ * manifest entry. This is also what tells the hub, at addon-LOAD time, that
13121
+ * a descriptor is owed — see "the boot window" below.
13122
+ * 2. Return a provider from `onInitialize()`:
13123
+ *
13124
+ * ```ts
13125
+ * const provider: IOauthIntegrationProvider = {
13126
+ * getDescriptor: async () => ({
13127
+ * integrationId: 'my-thing', // the `integration=` query param
13128
+ * displayName: 'My Thing',
13129
+ * requestedScopes: [ … ], // see below
13130
+ * allowedRedirectPrefixes: ['https://callback.example/'],
13131
+ * }),
13132
+ * }
13133
+ * return [{ capability: oauthIntegrationCapability, provider }]
13134
+ * ```
13135
+ *
13136
+ * The descriptor must be **static** — it is read on the authorize path, so
13137
+ * never put an await on network or disk behind it, and never register it
13138
+ * behind one either (a provider is registered only once `onInitialize`
13139
+ * RETURNS, so anything awaited before the return delays linking).
13140
+ * 3. Nothing else. There is no allow-list to join, no id to register with the
13141
+ * core, and no per-integration branch anywhere: `/api/oauth2/authorize` and
13142
+ * `/api/oauth2/integrations` are built from this collection alone.
13143
+ *
13144
+ * **Scopes. `requestedScopes` has exactly ONE meaning: what the integration
13145
+ * NEEDS to function.** Not a blast radius, not a conservative
13146
+ * under-declaration, not a description of some other path the addon happens to
13147
+ * have. Derive it from what the client actually calls **with this token** —
13148
+ * every tRPC path against `METHOD_ACCESS_MAP`, plus an `addon:` grant for every
13149
+ * addon HTTP route it posts to — and write the call that justifies each entry
13150
+ * next to it. Two integrations once used this field to mean two different
13151
+ * things; the operator ruled there is one meaning, and any third integration
13152
+ * inherits it (2026-08-09).
13153
+ *
13154
+ * This is not documentation, it is the ENFORCEMENT INPUT. Since
13155
+ * [D103](../../../../docs/decisions/adr-0103.md) the `/addon/:addonId/*` gate
13156
+ * checks an integration token's grant before letting it reach an
13157
+ * `access: 'authenticated'` route, so an **under-declaration is an integration
13158
+ * that stops working** — a missing `addon:` entry means `403 Token scope
13159
+ * mismatch` on every control the client tries to actuate. Widen the descriptor
13160
+ * honestly rather than weakening a check to make a route pass.
13161
+ *
13162
+ * Prefer a narrow `capability:` scope to a `category:` one unless the client
13163
+ * genuinely needs a whole family; a category scope grants every future member
13164
+ * of that category too. `category:system [create]` has been rejected once and
13165
+ * should stay rejected: it hands `addons.installPackage` to an integration.
13166
+ *
13167
+ * Calls the ADDON itself makes over `ctx.api` run as the addon and are not
13168
+ * scope-checked, so they are not what this field describes — but reaching the
13169
+ * addon's route in the first place IS, and that is the entry to declare.
13170
+ *
13171
+ * **The boot window.** An addon registers its provider after its runner forks
13172
+ * and initialises, so between hub start and that moment this collection is
13173
+ * incomplete and an `integrationId` can be legitimately absent. The core does
13174
+ * not wait, poll or cache around this ([D3](../../../../docs/decisions/adr-0003.md)):
13175
+ * it compares the manifest declarers against the registered providers and
13176
+ * answers `503 temporarily_unavailable` (with `Retry-After` and the pending
13177
+ * addon ids) instead of `400 unknown integration`, and reports
13178
+ * `complete: false` on `GET /api/oauth2/integrations`. A client should retry
13179
+ * while the list is incomplete rather than conclude the hub cannot do OAuth.
13014
13180
  */
13015
13181
  var OauthIntegrationDescriptorSchema = z.object({
13016
13182
  /** Stable id used as the `integration=` query param, e.g. 'export-alexa'. */
@@ -13041,7 +13207,30 @@ var OauthIntegrationDescriptorSchema = z.object({
13041
13207
  * present, /api/oauth2/authorize bakes THIS into the code instead of the
13042
13208
  * hub-global `publicHubUrl()`, so a forked exporter addon (which can't set
13043
13209
  * the hub's env) drives the claim that its cloud Lambda routes back on. */
13044
- hubUrl: z.string().optional()
13210
+ hubUrl: z.string().optional(),
13211
+ /**
13212
+ * How long a REFRESH token issued for this integration lives — seconds, or
13213
+ * `'never'` for a token minted with no `exp` claim at all. Omit to keep the
13214
+ * 30-day default, which is what every link used before this field existed.
13215
+ *
13216
+ * Declared here for the same reason `requestedScopes` is: the integration
13217
+ * knows what it needs. Amazon's account linking and a Home Assistant config
13218
+ * entry are both meant to survive indefinitely, and re-linking is a manual
13219
+ * user action, so a 30-day expiry silently unlinks a working integration.
13220
+ *
13221
+ * **The security posture, stated so it is owned deliberately.** A refresh
13222
+ * token that never expires is permanent access if it leaks. What bounds it is
13223
+ * revocation, not time: `oauthRefresh` re-reads the session on every use and
13224
+ * returns `null` once `revokedAt` is set, as does `oauthVerifyAccessToken`.
13225
+ * The one gap is the ACCESS token — it is a plain signed JWT that nothing
13226
+ * re-checks against the session on the `/trpc` and `/addon/*` paths, so
13227
+ * revoking a link takes effect there only after its remaining hour. That hour
13228
+ * is why the access TTL is not configurable.
13229
+ *
13230
+ * The value is baked into the authorization code at `/authorize` and travels
13231
+ * on the tokens, so editing this field changes FUTURE links only.
13232
+ */
13233
+ refreshTokenTtlSec: z.union([z.number().int().positive(), z.literal("never")]).optional()
13045
13234
  });
13046
13235
  var oauthIntegrationCapability = {
13047
13236
  name: "oauth-integration",
@@ -17556,7 +17745,16 @@ var SsoBridgeClaimsSchema = z.object({
17556
17745
  codeChallenge: z.string().optional(),
17557
17746
  /** OAuth session registry id — set on `oauth-access`/`oauth-refresh`
17558
17747
  * tokens so the verify path can check the session is not revoked. */
17559
- sessionId: z.string().optional()
17748
+ sessionId: z.string().optional(),
17749
+ /**
17750
+ * The refresh lifetime this LINK was created with, in seconds, or `'never'`.
17751
+ * Baked into the code at `/authorize` from the integration's descriptor and
17752
+ * carried forward so `oauthRefresh` re-mints with the same lifetime. It rides
17753
+ * on the token rather than being re-read from the descriptor on purpose:
17754
+ * editing a descriptor must not retroactively extend or shorten a link the
17755
+ * operator already consented to.
17756
+ */
17757
+ refreshTtl: z.union([z.number().int().positive(), z.literal("never")]).optional()
17560
17758
  });
17561
17759
  var ssoBridgeCapability = {
17562
17760
  name: "sso-bridge",
@@ -17566,7 +17764,16 @@ var ssoBridgeCapability = {
17566
17764
  methods: {
17567
17765
  signBridgeToken: method(z.object({
17568
17766
  claims: SsoBridgeClaimsSchema,
17569
- ttlSec: z.number().int().positive().optional()
17767
+ /**
17768
+ * Seconds, or `'never'` for a token minted with NO `exp` claim.
17769
+ *
17770
+ * `'never'` is a literal rather than `undefined`/`0` because omitting
17771
+ * this field already means "the 5-minute SSO hand-off default", and
17772
+ * `jwt.sign` THROWS on `{ expiresIn: undefined }` — a "no expiry" that
17773
+ * went through the numeric path would fail at mint time and break
17774
+ * linking rather than produce an eternal token.
17775
+ */
17776
+ ttlSec: z.union([z.number().int().positive(), z.literal("never")]).optional()
17570
17777
  }), z.object({ token: z.string() })),
17571
17778
  verifyBridgeToken: method(z.object({ token: z.string() }), SsoBridgeClaimsSchema.nullable())
17572
17779
  }
@@ -26648,7 +26855,12 @@ var userManagementCapability = {
26648
26855
  hubUrl: z.string(),
26649
26856
  /** PKCE (RFC 7636) S256 challenge. Baked into the signed code; a code
26650
26857
  * that carries one can ONLY be exchanged with the matching verifier. */
26651
- codeChallenge: z.string().optional()
26858
+ codeChallenge: z.string().optional(),
26859
+ /** The integration's declared refresh lifetime — seconds, or `'never'`.
26860
+ * From `OauthIntegrationDescriptor.refreshTokenTtlSec`. Baked into the
26861
+ * code so the link carries its own lifetime; omit for the 30-day
26862
+ * default. */
26863
+ refreshTtlSec: z.union([z.number().int().positive(), z.literal("never")]).optional()
26652
26864
  }), z.object({ code: z.string() }), {
26653
26865
  kind: "mutation",
26654
26866
  access: "create"
@@ -39577,4 +39789,4 @@ function enumerateInferenceDevices(hw) {
39577
39789
  return out;
39578
39790
  }
39579
39791
  //#endregion
39580
- export { ACCESSORY_LABEL, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AUDIO_PRESETS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionCandidateResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, AdoptionJobSchema, AdoptionJobStateSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, AdoptionOutcomeSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationTriggerSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CONNECTION_TEST_TIMEOUT_MS, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileResultSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_RETENTION, DEFAULT_SCRUB_THUMBNAIL_PRESET, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_PIPELINE_CAP_NAME, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, EngineInfoSchema as DataStoreEngineInfoSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclaredDevices, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetailCropConventionSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventSourceType, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, Fmp4BoxSplitter, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LOG_LEVEL_RANK, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TTL_FIELD, NATIVE_LEASE_TTL_KEY, NC_BASE_CONDITION_KEYS, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_SNOOZE_MAX_MINUTES, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcAlarmConfigSchema, NcAlarmModeCoverageSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaFrameSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleInputSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RenderedAsSchema, ReportMotionInputSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainMacroClassSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTransitionResultSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TAXONOMY_COLORS, TIMEZONES, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackProjectionSchema, TrackSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainingExportDeviceTotalsSchema, TrainingExportSummarySchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, WEBRTC_EGRESS_PROFILE, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, audioPlanFromEncodeProfile, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildAudioArgs, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildStreamParamsConfigSchema, buildVideoArgs, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, compileExpression, compileExpressionSafe, conditionDepth, connectionTestCapability, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, coreBlockAddonId, coreBlockIdFromAddonId, coreBlocksCapability, cosineSimilarity, countConditionLeaves, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, dayNightCapability, declarationOwnerNodeId, decodeVectorBase64, decoderCapability, defaultDeviceFor, defineCustomActions, deriveCameraSwitches, deriveDetailCropRect, deriveRecordingMode, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, egressTranscodeSharingKey, egressTransportFromRequest, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, encodeVectorBase64, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateExpressionSource, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, invocationFromEncodeProfile, isAgentOnlyPlacement, isArrayOutputSchema, isBaseConditionKey, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isDeviceScopedCap, isEvent, isNode, isObjectInput, isSameAddonId, isScheduleActive, isSoftwareDecode, isVoidInput, jobKindSchema, kebabToCamel, knownValues, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logBannerArgs, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, osdManagerCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, petFeederCapability, pickAccessoryControl, pickDetailCropConvention, pickNativeLeaseOverride, pickPreferredRtspEntry, pickVideoEncoder, pickerForCondition, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readDetailCropConvention, readDeviceStateFrom, readNativeLeaseOverride, readNodePin, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveEgressDecodeHwAccel, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, stateVocabularyFor, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, summarisePrivacyAudio, supportedRuntimes, switchCapability, switchedOffIds, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toNodeId, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
39792
+ export { ACCESSORY_LABEL, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AUDIO_PRESETS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionCandidateResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, AdoptionJobSchema, AdoptionJobStateSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, AdoptionOutcomeSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationTriggerSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CONNECTION_TEST_TIMEOUT_MS, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileResultSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_RETENTION, DEFAULT_SCRUB_THUMBNAIL_PRESET, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_PIPELINE_CAP_NAME, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_INFO, EngineInfoSchema as DataStoreEngineInfoSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclaredDevices, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetailCropConventionSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENTFUL_CAP_NAMES, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EVENT_TAXONOMY, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventSourceType, ExportDownloadSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, Fmp4BoxSplitter, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LOG_LEVEL_RANK, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TTL_FIELD, NATIVE_LEASE_TTL_KEY, NC_BASE_CONDITION_KEYS, NC_CONDITION_CATALOG, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_MAX_PER_TRACK_IMMEDIATE, NC_SNOOZE_MAX_MINUTES, NC_TAXONOMY, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NcAlarmConfigSchema, NcAlarmModeCoverageSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcMediaFrameSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleInputSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OauthIntegrationDescriptorSchema, ObjectEventSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RenderedAsSchema, ReportMotionInputSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainCopyRefusalSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainMacroClassSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTransitionResultSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SENSOR_FEATURES, SENSOR_MAP, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TAXONOMY_COLORS, TIMEZONES, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackProjectionSchema, TrackSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainingExportDeviceTotalsSchema, TrainingExportSummarySchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, WEBRTC_EGRESS_PROFILE, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, audioPlanFromEncodeProfile, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildAudioArgs, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildStreamParamsConfigSchema, buildVideoArgs, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, carbonMonoxideCapability, cellsToRects, classifyBearerPrincipal, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, colorForKind, compileExpression, compileExpressionSafe, conditionDepth, connectionTestCapability, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, coreBlockAddonId, coreBlockIdFromAddonId, coreBlocksCapability, cosineSimilarity, countConditionLeaves, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, dayNightCapability, declarationOwnerNodeId, decodeVectorBase64, decoderCapability, defaultDeviceFor, defineCustomActions, deriveCameraSwitches, deriveDetailCropRect, deriveRecordingMode, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceBackendToFormat, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, egressTranscodeSharingKey, egressTransportFromRequest, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, encodeVectorBase64, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateExpressionSource, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, gasCapability, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getTaxonomyEntry, hasMotionTrigger, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, invocationFromEncodeProfile, isAgentOnlyPlacement, isArrayOutputSchema, isBaseConditionKey, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isDeviceScopedCap, isEvent, isNode, isObjectInput, isSameAddonId, isScheduleActive, isSoftwareDecode, isVoidInput, jobKindSchema, kebabToCamel, knownValues, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logBannerArgs, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, methodAccessForHttpMethod, metricsProviderCapability, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, osdManagerCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, petFeederCapability, pickAccessoryControl, pickDetailCropConvention, pickNativeLeaseOverride, pickPreferredRtspEntry, pickVideoEncoder, pickerForCondition, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, principalMayReachAddon, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readDetailCropConvention, readDeviceStateFrom, readNativeLeaseOverride, readNodePin, readinessKey, rebootCapability, recordingCapability, recordingExportCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceControlKind, resolveDeviceProfile, resolveEgressDecodeHwAccel, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveMutate, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, stateVocabularyFor, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, subKindsOf, summarisePrivacyAudio, supportedRuntimes, switchCapability, switchedOffIds, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, terminalSessionCapability, textToHtml, toDeviceSummary, toExpressionValue, toNodeId, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.53",
3
+ "version": "1.2.55",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",