@camstack/types 1.2.428 → 1.2.430

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/addon/session-health.d.ts +124 -0
  3. package/dist/addon.js +4 -3
  4. package/dist/addon.mjs +4 -3
  5. package/dist/automation/action.d.ts +210 -0
  6. package/dist/automation/condition-eval.d.ts +64 -0
  7. package/dist/automation/detection-trigger.d.ts +66 -0
  8. package/dist/automation/index.d.ts +12 -2
  9. package/dist/automation/recipe.d.ts +103 -1
  10. package/dist/automation/run-gate.d.ts +43 -0
  11. package/dist/automation/step-runner.d.ts +82 -0
  12. package/dist/automation/trace.d.ts +325 -0
  13. package/dist/capabilities/action-source.cap.d.ts +74 -0
  14. package/dist/capabilities/actions.cap.d.ts +459 -0
  15. package/dist/capabilities/core-blocks.cap.d.ts +761 -0
  16. package/dist/capabilities/index.d.ts +5 -1
  17. package/dist/capabilities/pet-feeder.cap.d.ts +15 -1
  18. package/dist/client.js +73 -49
  19. package/dist/client.mjs +73 -49
  20. package/dist/enums/event-category.d.ts +5 -0
  21. package/dist/enums.js +1 -1
  22. package/dist/enums.mjs +1 -1
  23. package/dist/{event-category-Ave2VSxY.js → event-category-BhzwWQCH.js} +5 -0
  24. package/dist/{event-category-CT-hz5Rb.mjs → event-category-hdMR7CTW.mjs} +5 -0
  25. package/dist/generated/addon-api.d.ts +135 -0
  26. package/dist/generated/addon-cap-facts.d.ts +1 -1
  27. package/dist/generated/capability-router-map.d.ts +10 -4
  28. package/dist/generated/collection-array-methods.d.ts +1 -1
  29. package/dist/generated/device-proxy.d.ts +2 -0
  30. package/dist/generated/history-catalog.d.ts +1 -1
  31. package/dist/generated/method-access-map.d.ts +1 -1
  32. package/dist/generated/method-device-selectors.d.ts +2 -2
  33. package/dist/generated/system-proxy.d.ts +5 -1
  34. package/dist/index.d.ts +6 -2
  35. package/dist/index.js +3211 -1093
  36. package/dist/index.mjs +3153 -1094
  37. package/dist/{sleep-edKiOXLo.js → sleep-5zRztaHa.js} +24 -2
  38. package/dist/{sleep--jXS9hWo.mjs → sleep-BHjNez61.mjs} +24 -2
  39. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as expandCapMethods, $n as REVALIDATE_AFTER_MS, $r as isSecretMarker, $t as RecordFieldPathSchema, A as HF_REPO, An as RecordUniqueViolationError, Ar as buildSecretRef, At as StreamSourceEntrySchema, B as withoutCallerStamp, Bn as RECORD_CLASSES, Br as isEvent, Bt as QUANTITY_BASE, Cn as InvalidRecordError, Cr as KeychainWriteRefusedError, Ct as CamStreamResolutionSchema, D as createSliceHandle, Dn as RecordNotFoundError, Dr as transformSecretWrite, Dt as ProfileRtspEntrySchema, E as createMirrorSource, En as RECORDS_ERROR_CODES, Er as resolveSecretMarkers, Et as FrameHandleSchema, F as RawStateResultSchema, Fn as UnknownRecordKindError, Fr as parseSecretRef, Ft as makeSourceBrokerId, G as adminUiCapability, Gn as RECORD_MAX_DATA_BYTES, Gr as dehydrateConfigField, Gt as isReadingQuantity, H as defineCustomActions, Hn as RECORD_DEFAULT_MAX_DATA_BYTES, Hr as WELL_KNOWN_TAB_MAP, Ht as baseUnitOf, I as deviceOpsCapability, In as asRecordsError, Ir as normalizeNodeId, It as parseProfileBrokerId, J as DEVICE_STATUS_METHOD, Jn as RECORD_QUERY_MAX, Jr as resolveHydratedFieldValue, Jt as defineEntryKind, K as DEFAULT_RUNTIME_STATE_DURABILITY, Kn as RECORD_MAX_INDEXES, Kr as dehydrateSchema, Kt as readingMeta, L as viewerUiCapability, Ln as recordsErrorFromMessage, Lr as createDurableState, Lt as selectAssignedProfileSlots, Mn as RevConflictError, Mr as globalSecretScope, Mt as SubscribeAudioChunksInputSchema, N as CAP_NAMES, Nn as TransactRefusedError, Nr as isSecretRef, Nt as SubscribeAudioChunksResultSchema, O as DEFAULT_TOKEN_EXPIRY, On as RecordSecretUnavailableError, Or as SECRET_REF_SCHEME, Ot as ProfileSlotSchema, Pn as UnindexedFilterError, Pr as normalizeSecretOwner, Pt as makeProfileBrokerId, Q as event, Qn as resolveSecretViewsIn, Qr as isSecretFieldView, Qt as EntryDescriptorSchema, R as DEVICE_CHILDREN_BATCH_MAX, Rn as RECORD_BATCH_MAX, Rr as createEvent, Rt as DEFAULT_DISPLAY_PREFERENCE, S as invokeTrpcLeaf, Sn as ForeignSecretMarkerError, Sr as secretTreeFromSchema, St as CamStreamKindSchema, T as createLazyTrpcSource, Tn as PlaintextSecretError, Tr as isSecretRefOwnedBy, Tt as DecodedAudioChunkSchema, U as describeCustomActions, Un as RECORD_DELETE_BATCH, Ur as collectHydratedFieldEntries, Ut as displayUnitFor, V as customAction, Vn as RECORD_DATABASES, Vr as WELL_KNOWN_TABS, Vt as ReadingQuantitySchema, W as deviceCustomAction, Wn as RECORD_ID_MAX_LENGTH, Wr as collectHydratedFieldValues, Wt as historyUnitFor, X as HISTORY_UNIT_LABELS, Xn as RECORD_SETTINGS_MAX_ROWS, Xr as classifySecretWrite, Xt as createRecordsAccess, Y as HISTORY_DEFAULT_MIN_INTERVAL_MS, Yn as RECORD_SECRET_COLLECTION_PREFIX, Yr as SECRET_CLEAR, Yt as entryBody, Z as PROVIDER_PIN_FIELD, Zn as RECORD_SWEEP_INTERVAL_MS, Zr as isSecretClear, Zt as assertTransactScope, _ as readErrorI18n, _n as collectZodSecretPaths, _r as classifyStoreError, _t as AudioStreamPickSchema, a as asJsonArray, ai as collectSecretConfigKeys, an as assertValidDeclaration, ar as registerKnownSecret, at as systemMethod, b as isDeviceScopedCap, bn as DeclarationRefusedError, br as parseSecretStatePath, bt as CAM_PROFILE_ORDER, c as asString, ci as omitTransientConfig, cn as REMOVE_LEAF, cr as PEER_BYTES_CHUNK_BYTES, ct as readNodePin, d as parseJsonUnknown, di as audioChunkBytesPerSample, dn as parseSecretPath, dr as PEER_BYTES_TICKET_TTL_MS, dt as ReadinessRegistry, ei as isSecretMarkerLike, en as RecordIndexSchema, er as createSecretsAccess, et as historyItemFieldPath, f as hfModelUrl, fi as expandAudioChunkToF32le, fn as recordArrayItemPath, fr as PeerBytesTicketSchema, ft as ReadinessTimeoutError, g as ErrorI18nPayloadSchema, gn as SECRET_META, gr as BaseAddon, gt as AudioChunkFormatSchema, h as ErrorCodeSchema, hn as secretArrayPrefixes, hr as DisposerChain, ht as scopeKey, i as asBoolean, ii as collectKeychainStoredKeys, in as StoredRecordKindDeclarationSchema, ir as knownSecretCount, it as resolveCapMount, j as RUNTIME_DEFAULTS, jn as RecordsError, jr as formatSecretScope, jt as StreamSourceSchema, k as HF_BASE_URL, kn as RecordTooLargeError, kr as arrayItemFieldPath, kt as ProfileSlotStatusSchema, l as parseJsonArray, li as schemaDeclaresAnyField, ln as collectSecretLeaves, lr as PEER_BYTES_MAX_OUTSTANDING, lt as toNodeId, m as CamstackError, mn as recordSecretRef, mr as SHARE_VIEW_KINDS, mt as readinessKey, n as sleepCancellable, ni as toSecretFieldView, nn as RecordKindNameSchema, nr as clearKnownSecrets, nt as method, o as asJsonObject, oi as isKeychainStoredField, on as declarationsOf, or as scrubKnownSecrets, ot as CAP_NODE_PIN_CONTEXT_KEY, p as BOOT_RECOVERY_BACKOFF_MS, pi as isAudioChunkFormat, pn as recordSecretCollection, pr as DATAPLANE_SECRET_HEADER, pt as emitDownForOwnedCaps, q as DEVICE_SETTINGS_CONTRIBUTION_METHODS, qn as RECORD_MAX_INDEX_FIELDS, qr as hydrateSchema, qt as makeInMemoryRecords, r as maskUrlCredentials, ri as REDACTED_SECRET, rn as RecordRetentionSchema, rr as forgetKnownSecret, rt as optionalMethod, s as asNumber, si as isSecretConfigField, sn as defineRecordKinds, sr as shortSecretRefHash, st as nodePin, t as sleep, ti as makeSecretMarker, tn as RecordKindDeclarationSchema, tr as MIN_SCRUBBED_LENGTH, tt as isDeviceConfigCap, u as parseJsonObject, ui as AUDIO_CHUNK_FORMATS, un as mapSecretLeaves, ur as PEER_BYTES_STALL_MS, ut as MODEL_FORMATS, v as userError, vn as isZodSecret, vr as normalizeAddonInitResult, vt as BrokerStatsSchema, w as createEventBusSliceSource, wn as NoCallerError, wr as collectSecretMarkerRefs, wt as CameraStreamSchema, x as createDeviceProxy, xn as FilterRequiredError, xr as secretTreeFromPaths, xt as CamProfileSchema, y as DEVICE_SCOPED_CAPS, yn as BatchTooLargeError, yr as mergeSecretStatePaths, yt as BrokerStatusSchema, z as CALLER_STAMPED_CAPABILITIES, zn as RECORD_BATCH_MAX_BYTES, zr as emitReadiness, zt as DISPLAY_PREFERENCES } from "./sleep--jXS9hWo.mjs";
2
- import { i as publicEventCategories, n as OWNER_ONLY_EVENT_CATEGORIES, r as isOwnerOnlyEventCategory, t as EventCategory } from "./event-category-CT-hz5Rb.mjs";
1
+ import { $ as expandCapMethods, $n as REVALIDATE_AFTER_MS, $r as isSecretMarker, $t as RecordFieldPathSchema, A as HF_REPO, An as RecordUniqueViolationError, Ar as buildSecretRef, At as StreamSourceEntrySchema, B as withoutCallerStamp, Bn as RECORD_CLASSES, Br as isEvent, Bt as QUANTITY_BASE, Cn as InvalidRecordError, Cr as KeychainWriteRefusedError, Ct as CamStreamResolutionSchema, D as createSliceHandle, Dn as RecordNotFoundError, Dr as transformSecretWrite, Dt as ProfileRtspEntrySchema, E as createMirrorSource, En as RECORDS_ERROR_CODES, Er as resolveSecretMarkers, Et as FrameHandleSchema, F as RawStateResultSchema, Fn as UnknownRecordKindError, Fr as parseSecretRef, Ft as makeSourceBrokerId, G as adminUiCapability, Gn as RECORD_MAX_DATA_BYTES, Gr as dehydrateConfigField, Gt as isReadingQuantity, H as defineCustomActions, Hn as RECORD_DEFAULT_MAX_DATA_BYTES, Hr as WELL_KNOWN_TAB_MAP, Ht as baseUnitOf, I as deviceOpsCapability, In as asRecordsError, Ir as normalizeNodeId, It as parseProfileBrokerId, J as DEVICE_STATUS_METHOD, Jn as RECORD_QUERY_MAX, Jr as resolveHydratedFieldValue, Jt as defineEntryKind, K as DEFAULT_RUNTIME_STATE_DURABILITY, Kn as RECORD_MAX_INDEXES, Kr as dehydrateSchema, Kt as readingMeta, L as viewerUiCapability, Ln as recordsErrorFromMessage, Lr as createDurableState, Lt as selectAssignedProfileSlots, Mn as RevConflictError, Mr as globalSecretScope, Mt as SubscribeAudioChunksInputSchema, N as CAP_NAMES, Nn as TransactRefusedError, Nr as isSecretRef, Nt as SubscribeAudioChunksResultSchema, O as DEFAULT_TOKEN_EXPIRY, On as RecordSecretUnavailableError, Or as SECRET_REF_SCHEME, Ot as ProfileSlotSchema, Pn as UnindexedFilterError, Pr as normalizeSecretOwner, Pt as makeProfileBrokerId, Q as event, Qn as resolveSecretViewsIn, Qr as isSecretFieldView, Qt as EntryDescriptorSchema, R as DEVICE_CHILDREN_BATCH_MAX, Rn as RECORD_BATCH_MAX, Rr as createEvent, Rt as DEFAULT_DISPLAY_PREFERENCE, S as invokeTrpcLeaf, Sn as ForeignSecretMarkerError, Sr as secretTreeFromSchema, St as CamStreamKindSchema, T as createLazyTrpcSource, Tn as PlaintextSecretError, Tr as isSecretRefOwnedBy, Tt as DecodedAudioChunkSchema, U as describeCustomActions, Un as RECORD_DELETE_BATCH, Ur as collectHydratedFieldEntries, Ut as displayUnitFor, V as customAction, Vn as RECORD_DATABASES, Vr as WELL_KNOWN_TABS, Vt as ReadingQuantitySchema, W as deviceCustomAction, Wn as RECORD_ID_MAX_LENGTH, Wr as collectHydratedFieldValues, Wt as historyUnitFor, X as HISTORY_UNIT_LABELS, Xn as RECORD_SETTINGS_MAX_ROWS, Xr as classifySecretWrite, Xt as createRecordsAccess, Y as HISTORY_DEFAULT_MIN_INTERVAL_MS, Yn as RECORD_SECRET_COLLECTION_PREFIX, Yr as SECRET_CLEAR, Yt as entryBody, Z as PROVIDER_PIN_FIELD, Zn as RECORD_SWEEP_INTERVAL_MS, Zr as isSecretClear, Zt as assertTransactScope, _ as readErrorI18n, _n as collectZodSecretPaths, _r as classifyStoreError, _t as AudioStreamPickSchema, a as asJsonArray, ai as collectSecretConfigKeys, an as assertValidDeclaration, ar as registerKnownSecret, at as systemMethod, b as isDeviceScopedCap, bn as DeclarationRefusedError, br as parseSecretStatePath, bt as CAM_PROFILE_ORDER, c as asString, ci as omitTransientConfig, cn as REMOVE_LEAF, cr as PEER_BYTES_CHUNK_BYTES, ct as readNodePin, d as parseJsonUnknown, di as audioChunkBytesPerSample, dn as parseSecretPath, dr as PEER_BYTES_TICKET_TTL_MS, dt as ReadinessRegistry, ei as isSecretMarkerLike, en as RecordIndexSchema, er as createSecretsAccess, et as historyItemFieldPath, f as hfModelUrl, fi as expandAudioChunkToF32le, fn as recordArrayItemPath, fr as PeerBytesTicketSchema, ft as ReadinessTimeoutError, g as ErrorI18nPayloadSchema, gn as SECRET_META, gr as BaseAddon, gt as AudioChunkFormatSchema, h as ErrorCodeSchema, hn as secretArrayPrefixes, hr as DisposerChain, ht as scopeKey, i as asBoolean, ii as collectKeychainStoredKeys, in as StoredRecordKindDeclarationSchema, ir as knownSecretCount, it as resolveCapMount, j as RUNTIME_DEFAULTS, jn as RecordsError, jr as formatSecretScope, jt as StreamSourceSchema, k as HF_BASE_URL, kn as RecordTooLargeError, kr as arrayItemFieldPath, kt as ProfileSlotStatusSchema, l as parseJsonArray, li as schemaDeclaresAnyField, ln as collectSecretLeaves, lr as PEER_BYTES_MAX_OUTSTANDING, lt as toNodeId, m as CamstackError, mn as recordSecretRef, mr as SHARE_VIEW_KINDS, mt as readinessKey, n as sleepCancellable, ni as toSecretFieldView, nn as RecordKindNameSchema, nr as clearKnownSecrets, nt as method, o as asJsonObject, oi as isKeychainStoredField, on as declarationsOf, or as scrubKnownSecrets, ot as CAP_NODE_PIN_CONTEXT_KEY, p as BOOT_RECOVERY_BACKOFF_MS, pi as isAudioChunkFormat, pn as recordSecretCollection, pr as DATAPLANE_SECRET_HEADER, pt as emitDownForOwnedCaps, q as DEVICE_SETTINGS_CONTRIBUTION_METHODS, qn as RECORD_MAX_INDEX_FIELDS, qr as hydrateSchema, qt as makeInMemoryRecords, r as maskUrlCredentials, ri as REDACTED_SECRET, rn as RecordRetentionSchema, rr as forgetKnownSecret, rt as optionalMethod, s as asNumber, si as isSecretConfigField, sn as defineRecordKinds, sr as shortSecretRefHash, st as nodePin, t as sleep, ti as makeSecretMarker, tn as RecordKindDeclarationSchema, tr as MIN_SCRUBBED_LENGTH, tt as isDeviceConfigCap, u as parseJsonObject, ui as AUDIO_CHUNK_FORMATS, un as mapSecretLeaves, ur as PEER_BYTES_STALL_MS, ut as MODEL_FORMATS, v as userError, vn as isZodSecret, vr as normalizeAddonInitResult, vt as BrokerStatsSchema, w as createEventBusSliceSource, wn as NoCallerError, wr as collectSecretMarkerRefs, wt as CameraStreamSchema, x as createDeviceProxy, xn as FilterRequiredError, xr as secretTreeFromPaths, xt as CamProfileSchema, y as DEVICE_SCOPED_CAPS, yn as BatchTooLargeError, yr as mergeSecretStatePaths, yt as BrokerStatusSchema, z as CALLER_STAMPED_CAPABILITIES, zn as RECORD_BATCH_MAX_BYTES, zr as emitReadiness, zt as DISPLAY_PREFERENCES } from "./sleep-BHjNez61.mjs";
2
+ import { i as publicEventCategories, n as OWNER_ONLY_EVENT_CATEGORIES, r as isOwnerOnlyEventCategory, t as EventCategory } from "./event-category-hdMR7CTW.mjs";
3
3
  import { $ as GroupTemplateIdSchema, $t as validateExpressionSource, A as composedDeviceStableId, An as sliceActiveValue, At as planResetTier, B as AGGREGATE_REDUCERS, Bn as AUDIO_PRESETS, Bt as wattMillisecondsToKwh, C as CompositionSeriesSourceSchema, Cn as SOURCE_CAPS, Ct as RollingWindowSchema, D as MAX_COMPOSITION_FIELDS_PER_FEATURE, Dn as evaluateSensorEdge, Dt as nextLocalMidnight, E as MAX_COMPOSITION_FEATURES, En as SOURCE_DEVICE_TYPES, Et as maxDurationMs, F as compositionSourceKey, Ft as STATISTIC_STATS, G as ArithmeticHelperSpecSchema, Gn as buildVideoArgs, Gt as isApplianceKind, H as ActiveCriterionSchema, Hn as buildAudioArgs, Ht as APPLIANCE_KINDS, I as featureFieldEntries, It as evaluateDerivative, J as DerivativeHelperSpecSchema, Jn as logBannerArgs, Jt as cloneStatefulExpressionMemory, K as BINARY_AGGREGATES, Kn as invocationFromEncodeProfile, Kt as sourcePickForAppliance, L as featureSources, Lt as evaluateStatistic, M as compositionItemFieldPath, Mn as FFMPEG_PATH_ENV, Mt as rollingDurationMs, N as compositionReadKey, Nt as statisticCadenceMs, O as MAX_COMPOSITION_ITEMS, On as evaluateSensorLevelEdge, Ot as openReset, P as compositionSliceKey, Pt as SERIES_KINDS, Q as GroupHelperSpecSchema, Qt as toExpressionValue, R as fieldReads, Rn as canonicalHash, Rt as integrateReading, S as CompositionSchema, Sn as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, St as ROLLING_SPANS, T as MAX_COMPOSITION_CODE_LENGTH, Tn as SOURCE_CAP_CHANGED_AT_FIELD, Tt as integralCadenceMs, U as AggregateReducerSchema, Un as buildFfmpegArgs, Ut as APPLIANCE_TEMPLATE_ID, V as ARITHMETIC_OPS, Vn as audioPlanFromEncodeProfile, Vt as APPLIANCE_DEFAULTS, W as ApplianceHelperSpecSchema, Wn as buildInputArgs, Wt as applianceDeviceType, X as ExpressionHelperSpecSchema, Xn as resolveStreamMaps, Xt as evaluateExpressionSource, Y as EXPRESSION_OUTPUTS, Yn as pickVideoEncoder, Yt as createStatefulExpressionMemory, Z as GROUP_TEMPLATE_IDS, Zt as evaluateStatefulExpressionCall, _ as CompositionFromSourceSchema, _n as evaluateCount, _t as HISTORY_TIERS, a as CUSTOMIZATION_BLOCK_NAME_PREFIX, an as tokenize, at as NUMERIC_AGGREGATES, b as CompositionNewTargetSchema, bn as ExpressionEvalError, bt as MIN_CUSTOM_MINUTES, c as CompositionCodeSourceSchema, cn as MAX_EXPRESSION_AST_NODES, ct as helperMembers, d as CompositionExpressionSourceSchema, dn as MAX_EXPRESSION_EVAL_STEPS, dt as CALENDAR_PERIODS, en as createExpressionScope, et as HelperMemberSchema, f as CompositionFeatureSchema, fn as MAX_EXPRESSION_SOURCE_LENGTH, ft as CalendarWindowSchema, g as CompositionForwardCommandSchema, gn as disarmRoseMemory, gt as HISTORY_SLOW_MS, h as CompositionFieldsFeatureSchema, hn as EXPRESSION_BUILTIN_NAMES, ht as HISTORY_FAST_MS, i as COMPOSITION_ITEM_KEY_RE, in as parseExpression, it as MAX_HELPER_MEMBERS, j as compositionFeatureEnabled, jn as sliceChangedAt, jt as planStatisticTier, k as composedDeviceRef, kn as isSourceCap, kt as openStatistic, l as CompositionCommandTargetSchema, ln as MAX_EXPRESSION_BINDINGS, lt as isHistoryHelper, m as CompositionFieldSourceSchema, mn as EXPRESSION_BUILTINS, mt as DEFAULT_HISTORY_RETENTION, n as COMPOSER_ADDON_ID, nn as compileExpression, nt as INTEGRAL_OUTPUTS, o as CompositionAggregateSourceSchema, on as EXPRESSION_COMPILE_CACHE_CAPACITY, ot as StatisticHelperSpecSchema, p as CompositionFieldReadSchema, pn as RESERVED_BINDING_NAMES, pt as DAY_MS, q as DERIVATIVE_UNITS, qn as isSoftwareDecode, qt as EXPRESSION_INJECTED_NOW, r as COMPOSITION_ITEM_ARRAY_PATH, rn as compileExpressionSafe, rt as IntegralHelperSpecSchema, s as CompositionBindingSchema, sn as EXPRESSION_IDENTIFIER_RE, st as ThresholdHelperSpecSchema, t as COMPOSED_DEVICE_STABLE_ID_PREFIX, tn as evaluateAst, tt as HelperSpecSchema, u as CompositionExistingTargetSchema, un as MAX_EXPRESSION_CALL_ARGS, ut as CompositionSourceRefSchema, v as CompositionItemEntrySchema, vn as evaluateRose, vt as HOUR_MS, w as CompositionTargetSchema, wn as SOURCE_CAP_ACTIVE_FIELD, wt as StatisticWindowSchema, x as CompositionPassthroughFeatureSchema, xn as ExpressionParseError, xt as RESET_PERIODS, y as CompositionLiteralBindingSchema, yn as isStatefulBuiltin, yt as MINUTE_MS, z as ACTIVE_CRITERIA, zn as Fmp4BoxSplitter, zt as KWH_PER_WATT_MS } from "./composition-Bb8iwHEJ.mjs";
4
4
  import { NODE_COLOR_IDS, NodeColorIdSchema, assignNodeColorId } from "./node-color.mjs";
5
5
  import { a as DeviceType, i as DeviceRole, n as ChargingStatus, r as DeviceFeature, t as errMsg } from "./err-msg-DIorGYeC.mjs";
@@ -288,6 +288,254 @@ function buildCapturingReply(envelope) {
288
288
  return wrapper;
289
289
  }
290
290
  //#endregion
291
+ //#region src/addon/session-health.ts
292
+ var SESSION_LOST_ALERT_CATEGORY = "integration.session-lost";
293
+ var SESSION_EPISODE_KEY = "session-lost";
294
+ /** A transient reconnect is quiet for this long before it is worth an alert. */
295
+ var DEFAULT_SESSION_LOST_DEBOUNCE_MS = 2 * 6e4;
296
+ var REASON_TEXT = {
297
+ kicked: "the account was signed in on another device, which ended this session",
298
+ "auth-rejected": "the cloud rejected the sign-in (check the credentials)",
299
+ "token-expired": "the session token expired and could not be renewed",
300
+ "connection-lost": "the connection to the cloud was lost"
301
+ };
302
+ function sessionLostAlertId(kind, integrationId) {
303
+ return `session:${kind}:${integrationId}`;
304
+ }
305
+ /** Pure builder, exported so an addon with its own flow can still emit the standard shape. */
306
+ function buildSessionLostAlert(input) {
307
+ const now = input.now ?? Date.now();
308
+ return {
309
+ id: sessionLostAlertId(input.kind, input.integrationId),
310
+ category: SESSION_LOST_ALERT_CATEGORY,
311
+ severity: input.severity ?? "error",
312
+ title: `${input.providerName} connection lost`,
313
+ message: `${input.integrationName} lost its ${input.providerName} session: ${REASON_TEXT[input.reason]}.`,
314
+ action: input.action ?? {
315
+ label: "Open integration",
316
+ href: `/integrations/${encodeURIComponent(input.integrationId)}`
317
+ },
318
+ status: "active",
319
+ read: false,
320
+ createdAt: now,
321
+ updatedAt: now,
322
+ source: {
323
+ type: input.kind,
324
+ id: input.integrationId
325
+ },
326
+ metadata: {
327
+ episodeKey: SESSION_EPISODE_KEY,
328
+ reason: input.reason
329
+ }
330
+ };
331
+ }
332
+ var SessionHealthTracker = class {
333
+ #opts;
334
+ #debounceMs;
335
+ #entries = /* @__PURE__ */ new Map();
336
+ constructor(opts) {
337
+ this.#opts = opts;
338
+ this.#debounceMs = opts.debounceMs ?? 12e4;
339
+ }
340
+ /** The session is gone. Idempotent: call it on every failed poll. */
341
+ lost(integrationId, info) {
342
+ const tags = { integrationId };
343
+ const entry = this.#entries.get(integrationId);
344
+ if (entry === void 0 || entry.phase === "ok") {
345
+ const timer = setTimeout(() => void this.#fire(integrationId), this.#debounceMs);
346
+ this.#entries.set(integrationId, {
347
+ phase: "pending",
348
+ info,
349
+ timer
350
+ });
351
+ this.#opts.logger.info(`${this.#opts.providerName} session lost — alert after ${this.#debounceMs}ms unless it recovers`, {
352
+ tags,
353
+ meta: { reason: info.reason }
354
+ });
355
+ return;
356
+ }
357
+ entry.info = info;
358
+ if (entry.phase === "pending") {
359
+ this.#opts.logger.debug(`${this.#opts.providerName} session still lost — alert pending`, {
360
+ tags,
361
+ meta: { reason: info.reason }
362
+ });
363
+ return;
364
+ }
365
+ if (entry.phase === "unsent") {
366
+ this.#emit(integrationId, entry);
367
+ return;
368
+ }
369
+ this.#opts.logger.debug(`${this.#opts.providerName} session still lost — alert already active`, {
370
+ tags,
371
+ meta: { reason: info.reason }
372
+ });
373
+ }
374
+ /** A call went through. Idempotent: call it on every successful poll. */
375
+ async restored(integrationId) {
376
+ const tags = { integrationId };
377
+ const entry = this.#entries.get(integrationId);
378
+ if (entry === void 0) {
379
+ this.#entries.set(integrationId, {
380
+ phase: "ok",
381
+ info: EMPTY_INFO,
382
+ timer: null
383
+ });
384
+ if (!await this.#resolve(integrationId, "startup reconcile")) this.#entries.delete(integrationId);
385
+ return;
386
+ }
387
+ if (entry.phase === "ok") return;
388
+ this.#clearTimer(entry);
389
+ const previous = entry.phase;
390
+ entry.phase = "ok";
391
+ if (previous === "pending" || previous === "unsent") {
392
+ this.#opts.logger.info(`${this.#opts.providerName} session recovered inside the debounce — no alert`, { tags });
393
+ return;
394
+ }
395
+ await this.#resolve(integrationId, "session restored");
396
+ }
397
+ /** The integration is gone (deleted / disabled): drop its state and its alert. */
398
+ async forget(integrationId) {
399
+ const entry = this.#entries.get(integrationId);
400
+ if (entry === void 0) return;
401
+ this.#clearTimer(entry);
402
+ this.#entries.delete(integrationId);
403
+ if (entry.phase === "alerted") await this.#resolve(integrationId, "integration removed");
404
+ }
405
+ /** Stop every pending timer (addon shutdown). */
406
+ dispose() {
407
+ for (const entry of this.#entries.values()) this.#clearTimer(entry);
408
+ this.#entries.clear();
409
+ }
410
+ #clearTimer(entry) {
411
+ if (entry.timer !== null) clearTimeout(entry.timer);
412
+ entry.timer = null;
413
+ }
414
+ async #fire(integrationId) {
415
+ const entry = this.#entries.get(integrationId);
416
+ if (entry === void 0 || entry.phase !== "pending") return;
417
+ entry.timer = null;
418
+ await this.#emit(integrationId, entry);
419
+ }
420
+ async #emit(integrationId, entry) {
421
+ const tags = { integrationId };
422
+ const emit = this.#opts.getAlerts()?.emit;
423
+ if (emit === void 0) {
424
+ entry.phase = "unsent";
425
+ this.#opts.logger.warn(`${this.#opts.providerName} session alert skipped — alerts capability missing`, { tags });
426
+ return;
427
+ }
428
+ try {
429
+ await emit.mutate(buildSessionLostAlert({
430
+ kind: this.#opts.kind,
431
+ providerName: this.#opts.providerName,
432
+ integrationId,
433
+ integrationName: entry.info.integrationName,
434
+ reason: entry.info.reason,
435
+ ...entry.info.action !== void 0 ? { action: entry.info.action } : {}
436
+ }));
437
+ entry.phase = "alerted";
438
+ this.#opts.logger.warn(`${this.#opts.providerName} session lost — alert raised`, {
439
+ tags,
440
+ meta: { reason: entry.info.reason }
441
+ });
442
+ } catch (err) {
443
+ entry.phase = "unsent";
444
+ this.#opts.logger.warn(`${this.#opts.providerName} session alert emit failed`, {
445
+ tags,
446
+ meta: { error: err instanceof Error ? err.message : String(err) }
447
+ });
448
+ }
449
+ }
450
+ async #resolve(integrationId, why) {
451
+ const tags = { integrationId };
452
+ const update = this.#opts.getAlerts()?.update;
453
+ if (update === void 0) {
454
+ this.#opts.logger.debug(`${this.#opts.providerName} session alert not resolved — no alerts cap`, { tags });
455
+ return false;
456
+ }
457
+ try {
458
+ await update.mutate({
459
+ alertId: sessionLostAlertId(this.#opts.kind, integrationId),
460
+ patch: {
461
+ status: "completed",
462
+ read: true
463
+ }
464
+ });
465
+ this.#opts.logger.info(`${this.#opts.providerName} session alert resolved`, {
466
+ tags,
467
+ meta: { why }
468
+ });
469
+ } catch (err) {
470
+ this.#opts.logger.debug(`${this.#opts.providerName} session alert resolve skipped`, {
471
+ tags,
472
+ meta: {
473
+ why,
474
+ error: err instanceof Error ? err.message : String(err)
475
+ }
476
+ });
477
+ }
478
+ return true;
479
+ }
480
+ };
481
+ var EMPTY_INFO = {
482
+ integrationName: "",
483
+ reason: "connection-lost"
484
+ };
485
+ /**
486
+ * The addon-facing face of {@link SessionHealthTracker}: a process-wide object an
487
+ * integration manager AND its device classes can reach (the kernel builds a
488
+ * device from a `DeviceContext` alone, so neither can be handed a tracker).
489
+ * The addon `bind()`s it in `onInitialize`, `unbind()`s it on shutdown and
490
+ * `forget()`s an integration that vanished; everything before `bind` is a no-op.
491
+ */
492
+ var IntegrationSessionReporter = class {
493
+ #opts;
494
+ #tracker = null;
495
+ #names = /* @__PURE__ */ new Map();
496
+ constructor(opts) {
497
+ this.#opts = opts;
498
+ }
499
+ bind(binding) {
500
+ this.#tracker?.dispose();
501
+ this.#tracker = new SessionHealthTracker({
502
+ kind: this.#opts.kind,
503
+ providerName: this.#opts.providerName,
504
+ logger: binding.logger,
505
+ getAlerts: binding.getAlerts,
506
+ ...binding.debounceMs !== void 0 ? { debounceMs: binding.debounceMs } : {}
507
+ });
508
+ }
509
+ unbind() {
510
+ this.#tracker?.dispose();
511
+ this.#tracker = null;
512
+ }
513
+ /** The manager tells us the display name once, so a device can report by id alone. */
514
+ register(integrationId, integrationName) {
515
+ this.#names.set(integrationId, integrationName);
516
+ }
517
+ /** A call failed. Only a session-ending failure counts; anything else is ignored. */
518
+ failure(integrationId, err) {
519
+ const reason = this.#opts.classify(err);
520
+ if (reason === null) return;
521
+ const action = this.#opts.action?.(integrationId);
522
+ this.#tracker?.lost(integrationId, {
523
+ integrationName: this.#names.get(integrationId) ?? integrationId,
524
+ reason,
525
+ ...action !== void 0 ? { action } : {}
526
+ });
527
+ }
528
+ /** A call went through. */
529
+ async ok(integrationId) {
530
+ await this.#tracker?.restored(integrationId);
531
+ }
532
+ /** The integration was removed. */
533
+ async forget(integrationId) {
534
+ this.#names.delete(integrationId);
535
+ await this.#tracker?.forget(integrationId);
536
+ }
537
+ };
538
+ //#endregion
291
539
  //#region src/encode-profile.ts
292
540
  /**
293
541
  * Shared video / audio encode profile schemas used by every consumer
@@ -7825,7 +8073,7 @@ var ExpressionSourceSchema = z.object({
7825
8073
  *
7826
8074
  * Three vocabularies, each salvaged rather than invented:
7827
8075
  *
7828
- * - **Triggers** — the only genuinely new surface. Four members, none of which
8076
+ * - **Triggers** — the only genuinely new surface. Six members, none of which
7829
8077
  * touches notification delivery. The NC keeps its four *pipeline* triggers;
7830
8078
  * these are device/time triggers and the two sets do not overlap.
7831
8079
  * - **Conditions** — `ALL`/`ANY`/`NOT` over two leaf kinds, bounded. The
@@ -7949,7 +8197,23 @@ var AutomationTriggerSchema = z.discriminatedUnion("kind", [
7949
8197
  kind: z.literal("schedule"),
7950
8198
  cron: z.string().min(1).max(120)
7951
8199
  }),
7952
- z.object({ kind: z.literal("manual") })
8200
+ z.object({ kind: z.literal("manual") }),
8201
+ z.object({
8202
+ kind: z.literal("detection"),
8203
+ /** Class names. A macro class (`animal`, `vehicle`, `person`, `package`)
8204
+ * matches every raw class that maps to it; any other name matches
8205
+ * exactly. */
8206
+ classes: z.array(z.string().min(1)).min(1),
8207
+ deviceIds: z.array(z.number().int().nonnegative()).min(1),
8208
+ /** The track must have visited at least one of these zones. */
8209
+ zones: z.array(z.string().min(1)).min(1).optional(),
8210
+ /** Best-so-far confidence the track must reach. */
8211
+ minScore: z.number().min(0).max(1).optional()
8212
+ }),
8213
+ z.object({
8214
+ kind: z.literal("interval"),
8215
+ minutes: z.number().int().min(1).max(1440)
8216
+ })
7953
8217
  ]);
7954
8218
  /**
7955
8219
  * One action step.
@@ -7969,28 +8233,47 @@ var AutomationTriggerSchema = z.discriminatedUnion("kind", [
7969
8233
  * is called. The runner still receives a number and is untouched; the
7970
8234
  * resolution is the recipe's job, not the runner's.
7971
8235
  */
8236
+ var AutomationWaitStepSchema = z.object({
8237
+ kind: z.literal("wait"),
8238
+ seconds: z.number().min(0).max(300)
8239
+ });
8240
+ var AutomationCapStepSchema = z.object({
8241
+ kind: z.literal("cap"),
8242
+ /**
8243
+ * One device, several same-family devices (locks / climate family / …),
8244
+ * or `{ $var }` for the device that triggered the run. An array is
8245
+ * fan-out at codegen — each id gets the same cap.method call.
8246
+ */
8247
+ deviceId: z.union([
8248
+ z.number().int(),
8249
+ z.array(z.number().int()).min(1),
8250
+ z.object({ $var: z.string().min(1) })
8251
+ ]),
8252
+ cap: z.string().min(1),
8253
+ method: z.string().min(1),
8254
+ /** Values may carry `{{vars.x}}` slots, or be exactly `{ $var: 'name' }`, which
8255
+ * SUBSTITUTE and do not evaluate (§3.2.3). Anything beyond substitution is
8256
+ * the expression leaf. */
8257
+ args: z.record(z.string(), z.unknown()).optional()
8258
+ });
8259
+ /**
8260
+ * The steps an internal Action may contain: cap and wait, and nothing that can
8261
+ * call back into an Action — so an Action can never reach itself (no cycles).
8262
+ */
8263
+ var ActionStepSchema = z.discriminatedUnion("kind", [AutomationWaitStepSchema, AutomationCapStepSchema]);
7972
8264
  var AutomationActionSchema = z.discriminatedUnion("kind", [
8265
+ AutomationWaitStepSchema,
8266
+ AutomationCapStepSchema,
7973
8267
  z.object({
7974
- kind: z.literal("wait"),
7975
- seconds: z.number().min(0).max(300)
7976
- }),
7977
- z.object({
7978
- kind: z.literal("cap"),
7979
- /**
7980
- * One device, several same-family devices (locks / climate family / …),
7981
- * or `{ $var }` for the device that triggered the run. An array is
7982
- * fan-out at codegen — each id gets the same cap.method call.
7983
- */
7984
- deviceId: z.union([
7985
- z.number().int(),
7986
- z.array(z.number().int()).min(1),
7987
- z.object({ $var: z.string().min(1) })
7988
- ]),
7989
- cap: z.string().min(1),
7990
- method: z.string().min(1),
7991
- /** Values may carry `{{vars.x}}` slots, which SUBSTITUTE and do not
7992
- * evaluate (§3.2.3). Anything beyond substitution is the expression leaf. */
7993
- args: z.record(z.string(), z.unknown()).optional()
8268
+ kind: z.literal("action"),
8269
+ /** An entry of the `actions` surface (`internal:<uuid>` or `<addonId>:<localId>`). */
8270
+ actionId: z.string().min(1),
8271
+ /** Values for the action's declared variables; the others take their default. */
8272
+ variables: z.record(z.string(), z.union([
8273
+ z.string(),
8274
+ z.number(),
8275
+ z.boolean()
8276
+ ])).optional()
7994
8277
  }),
7995
8278
  z.object({
7996
8279
  kind: z.literal("code"),
@@ -7999,10 +8282,45 @@ var AutomationActionSchema = z.discriminatedUnion("kind", [
7999
8282
  code: z.string().min(1).max(2e4)
8000
8283
  })
8001
8284
  ]);
8285
+ /**
8286
+ * How a trigger that arrives while the automation is busy (or cooling down) is
8287
+ * handled. One of the automation's execution modes, never a property of its
8288
+ * actions. Absent means `single`.
8289
+ *
8290
+ * - `single` — drop the trigger while a run is in progress (traced + logged).
8291
+ * - `restart` — abort the run in progress (at its next step boundary), start fresh.
8292
+ * - `queued` — queue up to `max` triggers, drop the rest (traced).
8293
+ * - `parallel` — up to `max` runs at once, drop the rest (traced).
8294
+ * - `cooldown` — `single`, and no new run until `minutes` after the last run
8295
+ * STARTED; persisted across a restart. A manual trigger bypasses only this
8296
+ * wait, never the single/queued limits.
8297
+ */
8298
+ var AutomationRunModeSchema = z.discriminatedUnion("mode", [
8299
+ z.object({ mode: z.literal("single") }),
8300
+ z.object({ mode: z.literal("restart") }),
8301
+ z.object({
8302
+ mode: z.literal("queued"),
8303
+ max: z.number().int().min(1).max(10)
8304
+ }),
8305
+ z.object({
8306
+ mode: z.literal("parallel"),
8307
+ max: z.number().int().min(1).max(10)
8308
+ }),
8309
+ z.object({
8310
+ mode: z.literal("cooldown"),
8311
+ minutes: z.number().int().min(1).max(1440)
8312
+ })
8313
+ ]);
8314
+ /** Run traces kept per automation when the recipe does not say. */
8315
+ var DEFAULT_TRACE_KEEP = 20;
8316
+ var MAX_TRACE_KEEP = 100;
8002
8317
  var AutomationRecipeSchema = z.object({
8003
8318
  triggers: z.array(AutomationTriggerSchema),
8004
8319
  conditions: AutomationConditionSchema.optional(),
8005
- actions: z.array(AutomationActionSchema)
8320
+ actions: z.array(AutomationActionSchema),
8321
+ runMode: AutomationRunModeSchema.optional(),
8322
+ /** How many run traces the automation keeps (default {@link DEFAULT_TRACE_KEEP}). */
8323
+ keepTraces: z.number().int().min(1).max(100).optional()
8006
8324
  });
8007
8325
  /** Depth of a tree, root container = 1. A bare leaf is depth 1. */
8008
8326
  function conditionDepth(cond) {
@@ -8054,19 +8372,23 @@ function validateRecipeBounds(recipe) {
8054
8372
  /** How often the state mirror is re-read as the backstop for a dropped event
8055
8373
  * (D8: an event WAKES the evaluation, the reconcile guarantees it). */
8056
8374
  var RECONCILE_MS = 15e3;
8375
+ /** What a step trace shows before the step runs. */
8376
+ function stepMetaOf(action) {
8377
+ switch (action.kind) {
8378
+ case "wait": return { kind: "wait" };
8379
+ case "code": return { kind: "code" };
8380
+ case "action": return { kind: "action" };
8381
+ case "cap": return {
8382
+ kind: "cap",
8383
+ cap: action.cap,
8384
+ method: action.method,
8385
+ ...typeof action.deviceId === "number" ? { deviceId: action.deviceId } : {}
8386
+ };
8387
+ }
8388
+ }
8057
8389
  function j(value) {
8058
8390
  return JSON.stringify(value);
8059
8391
  }
8060
- /** Emit the boolean tree as calls into the generated combinators. */
8061
- function emitCondition(cond, indent) {
8062
- switch (cond.kind) {
8063
- case "all": return `allOf([\n${cond.children.map((c) => `${indent} () => ${emitCondition(c, `${indent} `)}`).join(",\n")}\n${indent}])`;
8064
- case "any": return `anyOf([\n${cond.children.map((c) => `${indent} () => ${emitCondition(c, `${indent} `)}`).join(",\n")}\n${indent}])`;
8065
- case "not": return `notOf(() => ${emitCondition(cond.child, indent)})`;
8066
- case "condition": return `leaf(${j(cond.deviceId)}, ${j(cond.cap)}, ${j(cond.fieldPath)}, ${j(cond.operator)}, ${j(cond.value)})`;
8067
- case "expression": return `exprLeaf(${j(cond.expr)}, ${j(cond.bindings)})`;
8068
- }
8069
- }
8070
8392
  function emitTrigger(trigger, index) {
8071
8393
  switch (trigger.kind) {
8072
8394
  case "schedule": return ` // trigger ${index}: schedule — armed to the next minute boundary and
@@ -8142,31 +8464,79 @@ function emitTrigger(trigger, index) {
8142
8464
  }`;
8143
8465
  }
8144
8466
  case "manual": return ` // trigger ${index}: manual — fired by automation-control.trigger
8145
- // ("Run actions"), which runs the THEN half with an EMPTY vars bag.`;
8467
+ // ("Run actions"), which runs the THEN half with an EMPTY vars bag. A manual
8468
+ // run bypasses only the cooldown wait, never the single/queued limits.`;
8469
+ case "interval": return ` // trigger ${index}: interval — every ${trigger.minutes} min, first run jittered so
8470
+ // blocks restarted together do not all fire on the same second.
8471
+ {
8472
+ let interval: ReturnType<typeof setInterval> | undefined
8473
+ const first = setTimeout(() => {
8474
+ void run({ kind: 'interval', at: Date.now() })
8475
+ interval = setInterval(() => { void run({ kind: 'interval', at: Date.now() }) }, ${j(trigger.minutes * 6e4)})
8476
+ }, Math.floor(Math.random() * Math.min(${j(trigger.minutes * 6e4)}, 30_000)) + 1)
8477
+ disposers.push(() => {
8478
+ clearTimeout(first)
8479
+ if (interval !== undefined) clearInterval(interval)
8480
+ })
8481
+ }`;
8482
+ case "detection": return ` // trigger ${index}: detection — ONE fire per (device, track); a rejected event is
8483
+ // traced with its reason and never fires.
8484
+ {
8485
+ const filter = new DetectionTriggerFilter(${j(trigger)})
8486
+ disposers.push(
8487
+ ctx.eventBus.subscribe(
8488
+ { category: EventCategory.PipelineAnalyticsTrackLifecycle },
8489
+ (event) => {
8490
+ const decision = filter.evaluate(event.data, Date.now())
8491
+ if (decision.kind === 'ignore') return
8492
+ if (decision.kind === 'reject') {
8493
+ ctx.logger.debug('detection trigger rejected an event', {
8494
+ tags: { deviceId: decision.vars.deviceId },
8495
+ reason: decision.reason,
8496
+ })
8497
+ }
8498
+ void run(
8499
+ { kind: 'detection', at: Date.now(), ...decision.vars },
8500
+ decision.reason,
8501
+ decision.kind === 'fire',
8502
+ )
8503
+ },
8504
+ ),
8505
+ )
8506
+ }`;
8146
8507
  }
8147
8508
  }
8148
8509
  function emitAction(action, index) {
8510
+ const step = (body) => ` {
8511
+ meta: STEP_META[${index}]!,
8512
+ run: async (scope) => {
8513
+ ${body}
8514
+ },
8515
+ },`;
8149
8516
  switch (action.kind) {
8150
- case "wait": return ` case ${index}: await sleep(${j(action.seconds * 1e3)}); break`;
8517
+ case "wait": return step(` await sleep(${j(action.seconds * 1e3)})`);
8151
8518
  case "cap":
8152
- if (Array.isArray(action.deviceId)) return ` case ${index}: {
8153
- for (const deviceId of ${j(action.deviceId)}) {
8519
+ if (Array.isArray(action.deviceId)) return step(` for (const deviceId of ${j(action.deviceId)}) {
8520
+ scope.setDeviceId(deviceId)
8154
8521
  await actuate(deviceId, ${j(action.cap)}, ${j(action.method)}, ${j(action.args ?? {})}, vars)
8155
- }
8156
- break
8157
- }`;
8158
- return ` case ${index}: {
8159
- const deviceId = ${typeof action.deviceId === "number" ? j(action.deviceId) : `resolveTarget(vars, ${j(action.deviceId.$var)})`}
8160
- await actuate(deviceId, ${j(action.cap)}, ${j(action.method)}, ${j(action.args ?? {})}, vars)
8161
- break
8162
- }`;
8163
- case "code": return ` case ${index}: {
8164
- // inline code action — a fragment of THIS block, bundled by esbuild
8522
+ }`);
8523
+ return step(` const deviceId = ${typeof action.deviceId === "number" ? j(action.deviceId) : `resolveTarget(vars, ${j(action.deviceId.$var)})`}
8524
+ scope.setDeviceId(deviceId)
8525
+ await actuate(deviceId, ${j(action.cap)}, ${j(action.method)}, ${j(action.args ?? {})}, vars)`);
8526
+ case "action": return step(` // an Action run, awaited: the step takes THAT run's outcome
8527
+ const result = await ctx.api.actions.run.mutate({
8528
+ actionId: ${j(action.actionId)},
8529
+ variables: substituteVariables(${j(action.variables ?? {})}, vars),
8530
+ wait: true,
8531
+ origin: { blockId: BLOCK_ID ?? undefined },
8532
+ })
8533
+ if (result.outcome !== 'ran') {
8534
+ throw new Error('action ' + ${j(action.actionId)} + ' ' + result.outcome + (result.message === undefined ? '' : ': ' + result.message))
8535
+ }`);
8536
+ case "code": return step(` // inline code action — a fragment of THIS block, bundled by esbuild
8165
8537
  await (async () => {
8166
8538
  ${action.code.split("\n").map((line) => ` ${line}`).join("\n")}
8167
- })()
8168
- break
8169
- }`;
8539
+ })()`);
8170
8540
  }
8171
8541
  }
8172
8542
  /**
@@ -8180,9 +8550,31 @@ function generateAutomationBlock(input) {
8180
8550
  const boundsError = validateRecipeBounds(input.recipe);
8181
8551
  if (boundsError !== null) throw new Error(`cannot generate an automation from an invalid recipe: ${boundsError}`);
8182
8552
  const { name, recipe } = input;
8183
- const conditionExpr = recipe.conditions === void 0 ? "true" : `await ${emitCondition(recipe.conditions, " ")}`;
8184
- return `import type { AddonContext } from '@camstack/types'
8185
- import { evaluateExpressionSource, toExpressionValue } from '@camstack/types'
8553
+ const runMode = recipe.runMode ?? { mode: "single" };
8554
+ const stepMeta = recipe.actions.map(stepMetaOf);
8555
+ return `import type {
8556
+ AddonContext,
8557
+ AutomationConditionTraceNode,
8558
+ AutomationRunTrace,
8559
+ AutomationRunVerdict,
8560
+ AutomationStepTrace,
8561
+ RunnableStep,
8562
+ } from '@camstack/types'
8563
+ import {
8564
+ ConditionMirror,
8565
+ DetectionTriggerFilter,
8566
+ EventCategory,
8567
+ RunGate,
8568
+ buildTriggerTrace,
8569
+ collectMirrorSources,
8570
+ coreBlockIdFromAddonId,
8571
+ evaluateConditionTree,
8572
+ isSkippedTrace,
8573
+ mergeSkipTraces,
8574
+ resolveDeviceTarget,
8575
+ resolveStepArgs,
8576
+ runSteps,
8577
+ } from '@camstack/types'
8186
8578
 
8187
8579
  /**
8188
8580
  * ${name}
@@ -8197,6 +8589,20 @@ const AUTOMATION_RECIPE = ${JSON.stringify(recipe, null, 2)} as const
8197
8589
 
8198
8590
  const RECONCILE_MS = ${RECONCILE_MS}
8199
8591
 
8592
+ /** How triggers that arrive while busy (or cooling down) are handled. */
8593
+ const RUN_MODE = ${j(runMode)} as const
8594
+
8595
+ /** Run traces kept (a ring, held in the hub's runs ledger). */
8596
+ const KEEP_TRACES = ${recipe.keepTraces ?? 20}
8597
+
8598
+ const CONDITIONS = ${recipe.conditions === void 0 ? "undefined" : "AUTOMATION_RECIPE.conditions"}
8599
+
8600
+ /** Skips that repeat are folded into one trace; it goes to the hub after this. */
8601
+ const SKIP_FLUSH_MS = 5_000
8602
+
8603
+ /** Static facts about each action step, for its trace. */
8604
+ const STEP_META: ReadonlyArray<{ kind: string; cap?: string; method?: string; deviceId?: number }> = ${j(stepMeta)}
8605
+
8200
8606
  /** A cap is named \`alarm-panel\`; \`ctx.api\` is keyed by the ROUTER name,
8201
8607
  * \`alarmPanel\`. Indexing ctx.api with the cap name yields undefined and every
8202
8608
  * action throws, so the conversion is not cosmetic. */
@@ -8247,137 +8653,170 @@ function matchField(field: string, value: number): boolean {
8247
8653
 
8248
8654
  export default function block(ctx: AddonContext) {
8249
8655
  const disposers: Array<() => void> = []
8250
- const sleep = (ms: number): Promise<void> => new Promise((r) => setTimeout(r, ms))
8656
+ const gate = new RunGate(RUN_MODE)
8657
+ const mirror = new ConditionMirror(collectMirrorSources(CONDITIONS))
8658
+ const BLOCK_ID = coreBlockIdFromAddonId(ctx.id)
8659
+ /** The cooldown stamp: memory is the authority at fire time (D49); the hub ledger is read once at start. */
8660
+ let lastRunStartedAt: number | null = null
8661
+ /** True when the stamp could not be read at start — the first run is let through and says so. */
8662
+ let stampUnknown = false
8663
+ let sendChain: Promise<void> = Promise.resolve()
8664
+ let pendingSkip: AutomationRunTrace | undefined
8665
+ let skipTimer: ReturnType<typeof setTimeout> | undefined
8666
+ let stopped = false
8667
+ let runCounter = 0
8668
+ const runningTokens = new Set<RunToken>()
8669
+ const queue: QueuedRun[] = []
8251
8670
 
8252
- /** Read one cap field off the state mirror. Returns undefined when the device,
8253
- * the cap or the field cannot be resolved — the caller decides what that
8254
- * means, and it always logs. */
8255
- async function readField(
8256
- deviceId: number,
8257
- cap: string,
8258
- fieldPath: string,
8259
- ): Promise<unknown> {
8260
- try {
8261
- const slice = await ctx.api.deviceState.getCapSlice.query({ deviceId, capName: cap })
8262
- let cursor: unknown = slice
8263
- for (const part of fieldPath.split('.')) {
8264
- if (cursor === null || typeof cursor !== 'object') return undefined
8265
- cursor = (cursor as Record<string, unknown>)[part]
8671
+ interface RunToken {
8672
+ aborted: boolean
8673
+ wake?: () => void
8674
+ }
8675
+ interface QueuedRun {
8676
+ readonly trigger: Record<string, unknown>
8677
+ readonly reason: string
8678
+ readonly queuedAt: number
8679
+ }
8680
+
8681
+ /** Sleep that a restart can cut short. */
8682
+ const abortableSleep = (ms: number, token: RunToken): Promise<void> =>
8683
+ new Promise((resolve) => {
8684
+ const timer = setTimeout(resolve, ms)
8685
+ token.wake = () => {
8686
+ clearTimeout(timer)
8687
+ resolve()
8266
8688
  }
8267
- return cursor
8268
- } catch {
8269
- return undefined
8689
+ })
8690
+
8691
+ // ── the hub's runs ledger: the stamp is read ONCE here, the ring is written through RPC ──
8692
+ async function loadState(): Promise<void> {
8693
+ if (BLOCK_ID === null) {
8694
+ ctx.logger.warn('this is not a core-block addon id — no run ledger, cooldown and traces will not survive a restart', { addonId: ctx.id })
8695
+ return
8696
+ }
8697
+ try {
8698
+ const doc = await ctx.api.coreBlocks.getAutomationRunState.query({ blockId: BLOCK_ID })
8699
+ lastRunStartedAt = doc.lastRunStartedAt
8700
+ } catch (err: unknown) {
8701
+ stampUnknown = true
8702
+ ctx.logger.warn('could not read the stored cooldown stamp — the first run is let through', {
8703
+ blockId: BLOCK_ID,
8704
+ error: err instanceof Error ? err.message : String(err),
8705
+ })
8270
8706
  }
8271
8707
  }
8272
8708
 
8273
- function compare(actual: unknown, operator: string, expected: unknown): boolean {
8274
- switch (operator) {
8275
- case 'eq': return actual === expected
8276
- case 'ne': return actual !== expected
8277
- case 'gt': return typeof actual === 'number' && typeof expected === 'number' && actual > expected
8278
- case 'gte': return typeof actual === 'number' && typeof expected === 'number' && actual >= expected
8279
- case 'lt': return typeof actual === 'number' && typeof expected === 'number' && actual < expected
8280
- case 'lte': return typeof actual === 'number' && typeof expected === 'number' && actual <= expected
8281
- case 'contains': return typeof actual === 'string' && typeof expected === 'string' && actual.includes(expected)
8282
- case 'in': return Array.isArray(expected) && expected.some((v) => v === actual)
8283
- default: return false
8284
- }
8709
+ function send(payload: { trace?: AutomationRunTrace; runStartedAt?: number }): Promise<void> {
8710
+ if (BLOCK_ID === null) return Promise.resolve()
8711
+ const blockId = BLOCK_ID
8712
+ sendChain = sendChain.then(async () => {
8713
+ try {
8714
+ await ctx.api.coreBlocks.reportAutomationRun.mutate({ blockId, keepTraces: KEEP_TRACES, ...payload })
8715
+ } catch (err: unknown) {
8716
+ ctx.logger.warn('could not report the run to the hub ledger', {
8717
+ blockId,
8718
+ error: err instanceof Error ? err.message : String(err),
8719
+ })
8720
+ }
8721
+ })
8722
+ return sendChain
8285
8723
  }
8286
8724
 
8287
- /** A leaf whose device or cap is currently unresolvable is FALSE and logs.
8288
- * It never throws the pass away, and it never counts as true. */
8289
- async function leaf(
8290
- deviceId: number,
8291
- cap: string,
8292
- fieldPath: string,
8293
- operator: string,
8294
- expected: unknown,
8295
- ): Promise<boolean> {
8296
- const actual = await readField(deviceId, cap, fieldPath)
8297
- if (actual === undefined) {
8298
- ctx.logger.warn('condition leaf unresolvable — treated as false', {
8299
- tags: { deviceId },
8300
- cap,
8301
- fieldPath,
8302
- })
8303
- return false
8725
+ function flushSkip(): void {
8726
+ if (skipTimer !== undefined) {
8727
+ clearTimeout(skipTimer)
8728
+ skipTimer = undefined
8304
8729
  }
8305
- return compare(actual, operator, expected)
8730
+ if (pendingSkip === undefined) return
8731
+ const trace = pendingSkip
8732
+ pendingSkip = undefined
8733
+ void send({ trace })
8306
8734
  }
8307
8735
 
8308
- /** The expression leaf goes through the bounded engine — parsed AST, no
8309
- * member access, no loops, hard step/node limits. Never inline JS. */
8310
- async function exprLeaf(
8311
- expr: string,
8312
- bindings: Record<string, { kind?: string; cap?: string; fieldPath?: string; value?: unknown; sourceStableId?: string }>,
8313
- ): Promise<boolean> {
8314
- const values: Record<string, string | number | boolean | null> = {}
8315
- for (const [alias, binding] of Object.entries(bindings)) {
8316
- if (binding.kind === 'literal') {
8317
- values[alias] = toExpressionValue(binding.value) ?? null
8318
- continue
8319
- }
8320
- const deviceId = await stableIdToDeviceId(binding.sourceStableId)
8321
- if (deviceId === undefined) {
8322
- ctx.logger.warn('condition leaf unresolvable — treated as false', {
8323
- tags: { deviceId: -1 },
8324
- binding: alias,
8325
- })
8326
- return false
8736
+ /** A skip identical to the one waiting is COUNTED on it; anything else flushes it first. */
8737
+ function record(trace: AutomationRunTrace): void {
8738
+ if (isSkippedTrace(trace)) {
8739
+ if (pendingSkip !== undefined) {
8740
+ const merged = mergeSkipTraces(pendingSkip, trace)
8741
+ if (merged !== null) {
8742
+ pendingSkip = merged
8743
+ return
8744
+ }
8745
+ flushSkip()
8327
8746
  }
8328
- const raw = await readField(deviceId, binding.cap ?? '', binding.fieldPath ?? '')
8329
- values[alias] = toExpressionValue(raw) ?? null
8747
+ pendingSkip = trace
8748
+ skipTimer = setTimeout(flushSkip, SKIP_FLUSH_MS)
8749
+ return
8330
8750
  }
8331
- const result = evaluateExpressionSource(expr, values, Date.now())
8332
- if (!result.ok) {
8333
- ctx.logger.warn('expression leaf failed — treated as false', { expr, error: result.error })
8334
- return false
8751
+ flushSkip()
8752
+ void send({ trace })
8753
+ }
8754
+
8755
+ // ── the condition mirror (D49): memory only at fire time ──
8756
+ async function refreshMirror(): Promise<void> {
8757
+ const report = await mirror.refresh({
8758
+ fetchSlice: (deviceId, cap) => ctx.api.deviceState.getCapSlice.query({ deviceId, capName: cap }),
8759
+ fetchStableIds: async () => {
8760
+ const all = await ctx.api.deviceManager.listAll.query({})
8761
+ return new Map(all.devices.flatMap((d: { stableId?: string; id: number }) =>
8762
+ d.stableId === undefined ? [] : [[d.stableId, d.id] as [string, number]]))
8763
+ },
8764
+ })
8765
+ if (report.kept > 0) {
8766
+ ctx.logger.debug('condition mirror kept stale values for sources it could not read', report)
8335
8767
  }
8336
- return result.value === true
8337
8768
  }
8338
8769
 
8339
- async function stableIdToDeviceId(stableId: string | undefined): Promise<number | undefined> {
8340
- if (stableId === undefined) return undefined
8770
+ /** Read one cap field off the state mirror. Returns undefined when the device,
8771
+ * the cap or the field cannot be resolved — the caller decides what that
8772
+ * means, and it always logs. (Used by the device-state TRIGGER, which the
8773
+ * reconcile backs; conditions read the ConditionMirror instead.) */
8774
+ async function readField(
8775
+ deviceId: number,
8776
+ cap: string,
8777
+ fieldPath: string,
8778
+ ): Promise<unknown> {
8341
8779
  try {
8342
- const all = await ctx.api.deviceManager.listAll.query({})
8343
- const hit = all.devices.find((d: { stableId?: string; id: number }) => d.stableId === stableId)
8344
- return hit?.id
8780
+ const slice = await ctx.api.deviceState.getCapSlice.query({ deviceId, capName: cap })
8781
+ let cursor: unknown = slice
8782
+ for (const part of fieldPath.split('.')) {
8783
+ if (cursor === null || typeof cursor !== 'object') return undefined
8784
+ cursor = (cursor as Record<string, unknown>)[part]
8785
+ }
8786
+ return cursor
8345
8787
  } catch {
8346
8788
  return undefined
8347
8789
  }
8348
8790
  }
8349
8791
 
8350
- async function allOf(children: Array<() => Promise<boolean>>): Promise<boolean> {
8351
- for (const c of children) { if (!(await c())) return false }
8352
- return true
8353
- }
8354
- async function anyOf(children: Array<() => Promise<boolean>>): Promise<boolean> {
8355
- for (const c of children) { if (await c()) return true }
8356
- return false
8357
- }
8358
- async function notOf(child: () => Promise<boolean>): Promise<boolean> {
8359
- return !(await child())
8360
- }
8361
-
8362
8792
  /** A {$var} action target, resolved from the run's bag BEFORE dispatch — the
8363
8793
  * action runner only ever sees a number. */
8364
8794
  function resolveTarget(vars: Record<string, unknown>, name: string): number {
8365
- const raw = vars[name]
8366
- if (typeof raw === 'number') return raw
8367
- throw new Error('action target var "' + name + '" is not a device id')
8795
+ return resolveDeviceTarget(vars, name)
8796
+ }
8797
+
8798
+ function warnMissingVar(name: string): void {
8799
+ ctx.logger.warn('template referenced a var that was never set', { var: name })
8368
8800
  }
8369
8801
 
8370
- /** Substitute {{vars.x}} slots. Substitution only — never evaluation. */
8802
+ /** Substitute {{vars.x}} slots and { $var } values. Substitution only — never evaluation. */
8371
8803
  function substitute(value: unknown, vars: Record<string, unknown>): unknown {
8372
- if (typeof value !== 'string') return value
8373
- return value.replace(/\\{\\{\\s*vars\\.([A-Za-z_][A-Za-z0-9_]*)\\s*\\}\\}/g, (_m, key: string) => {
8374
- const v = vars[key]
8375
- if (v === undefined) {
8376
- ctx.logger.warn('template referenced a var that was never set', { var: key })
8377
- return ''
8804
+ return resolveStepArgs(value, vars, warnMissingVar)
8805
+ }
8806
+
8807
+ /** The variables handed to an Action step, substituted and kept to primitives. */
8808
+ function substituteVariables(
8809
+ raw: Record<string, string | number | boolean>,
8810
+ vars: Record<string, unknown>,
8811
+ ): Record<string, string | number | boolean> {
8812
+ const out: Record<string, string | number | boolean> = {}
8813
+ for (const [key, value] of Object.entries(raw)) {
8814
+ const resolved = substitute(value, vars)
8815
+ if (typeof resolved === 'string' || typeof resolved === 'number' || typeof resolved === 'boolean') {
8816
+ out[key] = resolved
8378
8817
  }
8379
- return String(v)
8380
- })
8818
+ }
8819
+ return out
8381
8820
  }
8382
8821
 
8383
8822
  async function actuate(
@@ -8387,8 +8826,9 @@ export default function block(ctx: AddonContext) {
8387
8826
  args: Record<string, unknown>,
8388
8827
  vars: Record<string, unknown>,
8389
8828
  ): Promise<void> {
8390
- const resolved: Record<string, unknown> = {}
8391
- for (const [k, v] of Object.entries(args)) resolved[k] = substitute(v, vars)
8829
+ const substituted = substitute(args, vars)
8830
+ const resolved: Record<string, unknown> =
8831
+ substituted !== null && typeof substituted === 'object' ? { ...substituted } : {}
8392
8832
  // Forked-addon ctx.api namespaces are tRPC Proxies over a noop function
8393
8833
  // (typeof === 'function'), not plain objects — reject only null/undefined.
8394
8834
  const client: unknown = Reflect.get(ctx.api, capToRouterKey(cap))
@@ -8402,292 +8842,1937 @@ export default function block(ctx: AddonContext) {
8402
8842
  await mutate({ ...resolved, deviceId })
8403
8843
  }
8404
8844
 
8405
- async function evaluateConditions(): Promise<boolean> {
8406
- return ${conditionExpr}
8407
- }
8408
-
8409
- /** The THEN half. Stops at the first failure — continuing past a failed step
8410
- * executes an intent the operator never expressed. */
8411
- async function runActions(vars: Record<string, unknown>): Promise<void> {
8412
- for (let step = 0; step < ${recipe.actions.length}; step += 1) {
8413
- try {
8414
- switch (step) {
8845
+ /** The THEN half, through the ONE shared step runner: stops at the first
8846
+ * failure (continuing past a failed step executes an intent the operator
8847
+ * never expressed); every step is traced, the ones after a failure (or an
8848
+ * abort) are marked not-run. */
8849
+ async function runActions(
8850
+ vars: Record<string, unknown>,
8851
+ token: RunToken,
8852
+ ): Promise<{ steps: readonly AutomationStepTrace[]; failed: boolean }> {
8853
+ const sleep = (ms: number): Promise<void> => abortableSleep(ms, token)
8854
+ const steps: RunnableStep[] = [
8415
8855
  ${recipe.actions.map((a, i) => emitAction(a, i)).join("\n")}
8416
- }
8417
- } catch (err: unknown) {
8856
+ ]
8857
+ return runSteps(steps, {
8858
+ pathPrefix: 'actions',
8859
+ isAborted: () => token.aborted,
8860
+ abortReason: 'aborted by a restart',
8861
+ now: () => Date.now(),
8862
+ onFailure: (failure) => {
8418
8863
  ctx.logger.warn('action failed — stopping the sequence', {
8419
- step,
8420
- error: err instanceof Error ? err.message : String(err),
8864
+ ...(failure.deviceId === undefined ? {} : { tags: { deviceId: failure.deviceId } }),
8865
+ step: failure.index,
8866
+ error: failure.message,
8421
8867
  })
8868
+ },
8869
+ })
8870
+ }
8871
+
8872
+ function deviceTags(trigger: Record<string, unknown>): { tags?: { deviceId: number } } {
8873
+ const deviceId = trigger['deviceId']
8874
+ return typeof deviceId === 'number' ? { tags: { deviceId } } : {}
8875
+ }
8876
+
8877
+ function newRunId(at: number): string {
8878
+ runCounter += 1
8879
+ return at.toString(36) + '-' + runCounter.toString(36)
8880
+ }
8881
+
8882
+ /** A trigger that never became a run (rejected, or dropped by the run mode). */
8883
+ function skipTrace(
8884
+ trigger: Record<string, unknown>,
8885
+ reason: string,
8886
+ outcome: AutomationRunTrace['outcome'],
8887
+ verdict: AutomationRunVerdict | undefined,
8888
+ accepted: boolean,
8889
+ ): AutomationRunTrace {
8890
+ const now = Date.now()
8891
+ return {
8892
+ runId: newRunId(now),
8893
+ startedAt: now,
8894
+ endedAt: now,
8895
+ trigger: buildTriggerTrace(trigger, accepted ? 'pass' : 'fail', reason),
8896
+ conditions: [],
8897
+ ...(verdict === undefined ? {} : { verdict }),
8898
+ steps: [],
8899
+ outcome,
8900
+ repeat: 1,
8901
+ lastAt: now,
8902
+ }
8903
+ }
8904
+
8905
+ /** One admitted run: conditions (memory only), the cooldown, the actions. */
8906
+ async function execute(
8907
+ trigger: Record<string, unknown>,
8908
+ reason: string,
8909
+ admission: AutomationRunVerdict,
8910
+ ): Promise<void> {
8911
+ const token: RunToken = { aborted: false }
8912
+ runningTokens.add(token)
8913
+ const startedAt = Date.now()
8914
+ const runId = newRunId(startedAt)
8915
+ let verdict = admission
8916
+ let outcome: AutomationRunTrace['outcome'] = 'ran'
8917
+ let nodes: AutomationConditionTraceNode[] = []
8918
+ let steps: AutomationStepTrace[] = []
8919
+ try {
8920
+ const evaluation = evaluateConditionTree(CONDITIONS, mirror, Date.now())
8921
+ nodes = [...evaluation.nodes]
8922
+ for (const node of nodes) {
8923
+ if (node.kind === 'condition' && node.observed === null && node.deviceId !== undefined) {
8924
+ ctx.logger.warn('condition leaf value unknown — treated as false', {
8925
+ tags: { deviceId: node.deviceId },
8926
+ path: node.path,
8927
+ cap: node.cap,
8928
+ fieldPath: node.fieldPath,
8929
+ })
8930
+ }
8931
+ }
8932
+ if (!evaluation.pass) {
8933
+ outcome = 'skipped-conditions'
8934
+ ctx.logger.debug('automation did not run — conditions were false', { trigger, ...deviceTags(trigger) })
8935
+ return
8936
+ }
8937
+ const letThrough = stampUnknown && RUN_MODE.mode === 'cooldown'
8938
+ const cooldown = letThrough
8939
+ ? { ok: true, bypassed: true, reason: 'cooldown stamp unreadable at start — run let through' }
8940
+ : gate.cooldown({
8941
+ manual: trigger['kind'] === 'manual',
8942
+ now: Date.now(),
8943
+ lastRunStartedAt,
8944
+ })
8945
+ if (!cooldown.ok) {
8946
+ outcome = 'skipped-cooldown'
8947
+ verdict = { mode: RUN_MODE, decision: 'cooldown', reason: cooldown.reason }
8948
+ ctx.logger.info('automation did not run — ' + cooldown.reason, deviceTags(trigger))
8422
8949
  return
8423
8950
  }
8951
+ if (cooldown.bypassed) verdict = { mode: RUN_MODE, decision: 'bypass', reason: cooldown.reason }
8952
+ // Stamped when the actions START, and reported to the hub before they run,
8953
+ // so a restart mid-run cannot fire again inside the window.
8954
+ lastRunStartedAt = startedAt
8955
+ stampUnknown = false
8956
+ await send({ runStartedAt: startedAt })
8957
+ ctx.logger.info('automation running', { trigger, ...deviceTags(trigger) })
8958
+ const vars: Record<string, unknown> = { ...trigger }
8959
+ const result = await runActions(vars, token)
8960
+ steps = result.steps
8961
+ outcome = token.aborted ? 'aborted' : result.failed ? 'failed' : 'ran'
8962
+ } catch (err: unknown) {
8963
+ outcome = 'failed'
8964
+ ctx.logger.warn('automation run failed', { error: err instanceof Error ? err.message : String(err), ...deviceTags(trigger) })
8965
+ } finally {
8966
+ runningTokens.delete(token)
8967
+ const endedAt = Date.now()
8968
+ record({
8969
+ runId,
8970
+ startedAt,
8971
+ endedAt,
8972
+ trigger: buildTriggerTrace(trigger, 'pass', reason),
8973
+ conditions: nodes,
8974
+ verdict,
8975
+ steps,
8976
+ outcome,
8977
+ repeat: 1,
8978
+ lastAt: endedAt,
8979
+ })
8980
+ if (gate.release()) {
8981
+ const next = queue.shift()
8982
+ if (next !== undefined && !stopped) {
8983
+ void execute(next.trigger, next.reason, {
8984
+ mode: RUN_MODE,
8985
+ decision: 'queued',
8986
+ reason: 'queued, then ran after waiting ' + (Date.now() - next.queuedAt) + ' ms',
8987
+ })
8988
+ }
8989
+ }
8424
8990
  }
8425
8991
  }
8426
8992
 
8427
- async function run(trigger: Record<string, unknown>): Promise<void> {
8428
- const vars: Record<string, unknown> = { ...trigger }
8429
- const passed = await evaluateConditions()
8430
- if (!passed) {
8431
- ctx.logger.debug('automation did not run — conditions were false', { trigger })
8993
+ /** Every trigger lands here. \`accepted\` = the trigger itself was satisfied
8994
+ * (a rejected detection event is only traced). */
8995
+ async function run(
8996
+ trigger: Record<string, unknown>,
8997
+ reason = 'fired',
8998
+ accepted = true,
8999
+ ): Promise<void> {
9000
+ await ready
9001
+ if (stopped) return
9002
+ if (!accepted) {
9003
+ record(skipTrace(trigger, reason, 'skipped-trigger', undefined, false))
8432
9004
  return
8433
9005
  }
8434
- ctx.logger.info('automation running', { trigger })
8435
- await runActions(vars)
9006
+ const admission = gate.admit()
9007
+ const verdict: AutomationRunVerdict = { mode: RUN_MODE, decision: admission.decision, reason: admission.reason }
9008
+ switch (admission.decision) {
9009
+ case 'drop':
9010
+ ctx.logger.info('automation trigger dropped — ' + admission.reason, deviceTags(trigger))
9011
+ record(skipTrace(trigger, reason, 'skipped-overlap', verdict, true))
9012
+ return
9013
+ case 'queued':
9014
+ ctx.logger.info('automation trigger queued — ' + admission.reason, deviceTags(trigger))
9015
+ queue.push({ trigger, reason, queuedAt: Date.now() })
9016
+ return
9017
+ case 'restart':
9018
+ ctx.logger.info('automation restarting — ' + admission.reason, deviceTags(trigger))
9019
+ for (const running of runningTokens) {
9020
+ running.aborted = true
9021
+ running.wake?.()
9022
+ }
9023
+ break
9024
+ case 'run':
9025
+ break
9026
+ }
9027
+ await execute(trigger, reason, verdict)
9028
+ }
9029
+
9030
+ const ready: Promise<void> = (async () => {
9031
+ await loadState()
9032
+ await refreshMirror()
9033
+ })()
9034
+
9035
+ if (CONDITIONS !== undefined) {
9036
+ disposers.push(
9037
+ ctx.eventBus.subscribe({ category: EventCategory.DeviceStateChanged }, (event) => {
9038
+ const data = event.data
9039
+ const deviceId = data['deviceId']
9040
+ const capName = data['capName']
9041
+ if (typeof deviceId === 'number' && typeof capName === 'string') {
9042
+ mirror.apply(deviceId, capName, data['slice'])
9043
+ }
9044
+ }),
9045
+ )
9046
+ const mirrorReconcile = setInterval(() => { void refreshMirror() }, RECONCILE_MS)
9047
+ disposers.push(() => clearInterval(mirrorReconcile))
8436
9048
  }
8437
9049
 
8438
9050
  ${recipe.triggers.map((t, i) => emitTrigger(t, i)).join("\n\n")}
8439
9051
 
8440
9052
  return () => {
9053
+ stopped = true
9054
+ queue.length = 0
9055
+ flushSkip()
9056
+ for (const running of runningTokens) {
9057
+ running.aborted = true
9058
+ running.wake?.()
9059
+ }
8441
9060
  for (const dispose of disposers) dispose()
8442
9061
  }
8443
9062
  }
8444
9063
  `;
8445
9064
  }
8446
9065
  //#endregion
8447
- //#region src/capabilities/addon-pages.cap.ts
9066
+ //#region src/automation/condition-eval.ts
8448
9067
  /**
8449
- * `addon-pages` — system-scoped singleton aggregator cap. Public-facing
8450
- * surface that admin-ui consumes through `useAddonPagesListPages()`.
9068
+ * Evaluating an automation's condition tree against the ConditionMirror.
8451
9069
  *
8452
- * The provider iterates every `addon-pages-source` (collection) provider
8453
- * and emits `AddonPageInfo[]` enriched with versioned `bundleUrl` strings
8454
- * pointing at `/api/addon-pages/<addonId>/<bundle>?v=<mtime>`. The
8455
- * filesystem `mtime` cache-buster lets the browser pick up addon
8456
- * rebuilds without manual reload.
9070
+ * D49: a trigger is a one-shot event, so its gate must never hang on a read
9071
+ * that can fail. Every field a condition leaf names is therefore kept in
9072
+ * memory — filled at start, updated off device state-changed events, reconciled
9073
+ * on a timer — and evaluation reads that memory ONLY. A value the mirror does
9074
+ * not hold is UNKNOWN, which is `fail` with a reason, never a throw and never a
9075
+ * `pass`. A failed refresh changes nothing: the previous value stays.
8457
9076
  *
8458
- * The hub-local builtin `addon-pages-aggregator` (see
8459
- * `@camstack/system/builtins/addon-pages-aggregator`) registers the
8460
- * provider. Splitting the public aggregator from the raw collection
8461
- * keeps both ends in codegen — there's no hand-written
8462
- * `addon-pages.router.ts` wrapper anymore.
9077
+ * The evaluator returns a node per tree position (containers, leaves, and the
9078
+ * ones a short-circuit never reached) with a stable path and a human reason, so
9079
+ * the editor can paint each block.
8463
9080
  */
8464
- var AddonPageDeclarationSchema$1 = z.object({
8465
- id: z.string(),
8466
- label: z.string(),
8467
- icon: z.string(),
8468
- path: z.string(),
8469
- remoteName: z.string(),
8470
- bundle: z.string(),
8471
- section: z.string().optional(),
8472
- sectionLabel: z.string().optional()
8473
- });
8474
- var AddonPageInfoSchema = z.object({
8475
- addonId: z.string(),
8476
- page: AddonPageDeclarationSchema$1,
8477
- bundleUrl: z.string()
8478
- });
8479
- var addonPagesCapability = {
8480
- name: "addon-pages",
8481
- scope: "system",
8482
- mode: "singleton",
8483
- methods: { listPages: method(z.void(), z.array(AddonPageInfoSchema).readonly()) }
9081
+ function collectInto(cond, out) {
9082
+ switch (cond.kind) {
9083
+ case "all":
9084
+ case "any":
9085
+ for (const child of cond.children) collectInto(child, out);
9086
+ return;
9087
+ case "not":
9088
+ collectInto(cond.child, out);
9089
+ return;
9090
+ case "condition":
9091
+ out.push({
9092
+ kind: "device",
9093
+ deviceId: cond.deviceId,
9094
+ cap: cond.cap
9095
+ });
9096
+ return;
9097
+ case "expression":
9098
+ for (const binding of Object.values(cond.bindings)) if (binding.kind === "global") out.push({
9099
+ kind: "stable",
9100
+ stableId: binding.sourceStableId,
9101
+ cap: binding.cap
9102
+ });
9103
+ return;
9104
+ }
9105
+ }
9106
+ /** Every (device, cap) a tree reads, deduplicated. */
9107
+ function collectMirrorSources(cond) {
9108
+ if (cond === void 0) return [];
9109
+ const all = [];
9110
+ collectInto(cond, all);
9111
+ const seen = /* @__PURE__ */ new Set();
9112
+ return all.filter((s) => {
9113
+ const key = s.kind === "device" ? `d|${s.deviceId}|${s.cap}` : `s|${s.stableId}|${s.cap}`;
9114
+ if (seen.has(key)) return false;
9115
+ seen.add(key);
9116
+ return true;
9117
+ });
9118
+ }
9119
+ function sliceKey(deviceId, cap) {
9120
+ return `${deviceId}|${cap}`;
9121
+ }
9122
+ function pick$1(slice, fieldPath) {
9123
+ let cursor = slice;
9124
+ for (const part of fieldPath.split(".")) {
9125
+ if (cursor === null || typeof cursor !== "object") return void 0;
9126
+ cursor = Reflect.get(cursor, part);
9127
+ }
9128
+ return cursor;
9129
+ }
9130
+ function isSliceObject(value) {
9131
+ return typeof value === "object" && value !== null;
9132
+ }
9133
+ var ConditionMirror = class {
9134
+ sources;
9135
+ slices = /* @__PURE__ */ new Map();
9136
+ stableIds = /* @__PURE__ */ new Map();
9137
+ watched;
9138
+ constructor(sources) {
9139
+ this.sources = sources;
9140
+ this.watched = new Set(sources.filter((s) => s.kind === "device").map((s) => sliceKey(s.deviceId, s.cap)));
9141
+ }
9142
+ /** A `device.state-changed` event. Slices nobody reads are ignored. */
9143
+ apply(deviceId, cap, slice) {
9144
+ const key = sliceKey(deviceId, cap);
9145
+ if (!isSliceObject(slice)) return;
9146
+ if (!this.watched.has(key) && !this.isStableTarget(deviceId, cap)) return;
9147
+ this.slices.set(key, slice);
9148
+ }
9149
+ isStableTarget(deviceId, cap) {
9150
+ for (const s of this.sources) if (s.kind === "stable" && s.cap === cap && this.stableIds.get(s.stableId) === deviceId) return true;
9151
+ return false;
9152
+ }
9153
+ read(deviceId, cap, fieldPath) {
9154
+ const slice = this.slices.get(sliceKey(deviceId, cap));
9155
+ return slice === void 0 ? void 0 : pick$1(slice, fieldPath);
9156
+ }
9157
+ readStable(stableId, cap, fieldPath) {
9158
+ const deviceId = this.stableIds.get(stableId);
9159
+ return deviceId === void 0 ? void 0 : this.read(deviceId, cap, fieldPath);
9160
+ }
9161
+ /** Fill / reconcile. A read that fails or answers nothing keeps the old value. */
9162
+ async refresh(fetchers) {
9163
+ let updated = 0;
9164
+ let kept = 0;
9165
+ if (this.sources.some((s) => s.kind === "stable")) try {
9166
+ this.stableIds = await fetchers.fetchStableIds();
9167
+ } catch {}
9168
+ const targets = /* @__PURE__ */ new Map();
9169
+ for (const s of this.sources) {
9170
+ const deviceId = s.kind === "device" ? s.deviceId : this.stableIds.get(s.stableId);
9171
+ if (deviceId === void 0) {
9172
+ kept += 1;
9173
+ continue;
9174
+ }
9175
+ targets.set(sliceKey(deviceId, s.cap), {
9176
+ deviceId,
9177
+ cap: s.cap
9178
+ });
9179
+ }
9180
+ for (const [key, target] of targets) try {
9181
+ const slice = await fetchers.fetchSlice(target.deviceId, target.cap);
9182
+ if (isSliceObject(slice)) {
9183
+ this.slices.set(key, slice);
9184
+ updated += 1;
9185
+ } else kept += 1;
9186
+ } catch {
9187
+ kept += 1;
9188
+ }
9189
+ return {
9190
+ updated,
9191
+ kept
9192
+ };
9193
+ }
8484
9194
  };
8485
- //#endregion
8486
- //#region src/capabilities/addon-pages-source.cap.ts
8487
- /**
8488
- * `addon-pages-source` — collection cap exposing per-provider raw page
8489
- * declarations. Every addon that contributes a UI page registers a
8490
- * provider here. The hub-side singleton aggregator (`addon-pages` cap,
8491
- * see `addon-pages.cap.ts`) walks this collection, stamps versioned
8492
- * `bundleUrl` values, and returns the enriched `AddonPageInfo[]` list
8493
- * that admin-ui consumes.
8494
- *
8495
- * The split exists because the public listing has a different output
8496
- * shape than the per-provider raw declarations, and we want both ends
8497
- * to flow through codegen instead of relying on a hand-written wrapper.
8498
- */
8499
- var AddonPageDeclarationSchema = z.object({
8500
- id: z.string(),
8501
- label: z.string(),
8502
- icon: z.string(),
8503
- path: z.string(),
8504
- /**
8505
- * Module Federation remote name — must match the `name` field on the
8506
- * page addon's `federation()` plugin config. Used by admin-ui's
8507
- * `<AddonPageLoader>` to call `loadRemote('<remoteName>/page')`.
8508
- * Conventionally `addon_<id>_page` (snake_case; MF names cannot
8509
- * contain hyphens).
8510
- */
8511
- remoteName: z.string(),
8512
- /**
8513
- * Bundle filename inside the addon's `dist/` dir served at
8514
- * `/api/addon-pages/<addonId>/<bundle>`. With Module Federation this
8515
- * is always `'remoteEntry.js'`; the value is kept on the metadata so
8516
- * the static-file route can compute an mtime-based cache-buster URL
8517
- * without a separate filesystem stat.
8518
- */
8519
- bundle: z.string(),
8520
- /**
8521
- * Sidebar section this page docks into. Well-known ids: `'detection'`,
8522
- * `'cluster'`, `'administration'` — the page renders inside that group.
8523
- * Any OTHER string creates (or joins) a custom section rendered after
8524
- * the built-in groups; its label comes from `sectionLabel` (first
8525
- * declaration wins), falling back to the id. Absent → the legacy
8526
- * "Addon Pages" group.
8527
- */
8528
- section: z.string().optional(),
8529
- /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
8530
- sectionLabel: z.string().optional()
8531
- });
8532
- var addonPagesSourceCapability = {
8533
- name: "addon-pages-source",
8534
- scope: "system",
8535
- mode: "collection",
8536
- internal: true,
8537
- methods: {
8538
- /**
8539
- * `internal: true` did not gate the mount (see the 2026-08-26 note on
8540
- * `data-store-provider`) — this was reachable on the AppRouter by ANY
8541
- * authenticated session at the default `auth: 'protected'`. The only
8542
- * consumer, the `addon-pages-aggregator` builtin, reads it via
8543
- * `ctx.capabilities.getCollection('addon-pages-source')` — LOCAL-PROCESS
8544
- * only, never tRPC (per `ctx.capabilities` seeing only the local
8545
- * process). The public, enriched listing admin-ui actually consumes is
8546
- * the separate `addon-pages` cap, unaffected by this change.
8547
- */
8548
- listPages: method(z.void(), z.array(AddonPageDeclarationSchema).readonly(), { auth: "admin" }) }
9195
+ var OPERATOR_SYMBOL = {
9196
+ eq: "=",
9197
+ ne: "≠",
9198
+ gt: ">",
9199
+ gte: "≥",
9200
+ lt: "<",
9201
+ lte: "≤",
9202
+ contains: "contains",
9203
+ in: "in"
8549
9204
  };
9205
+ function compare(actual, operator, expected) {
9206
+ switch (operator) {
9207
+ case "eq": return actual === expected;
9208
+ case "ne": return actual !== expected;
9209
+ case "gt": return typeof actual === "number" && typeof expected === "number" && actual > expected;
9210
+ case "gte": return typeof actual === "number" && typeof expected === "number" && actual >= expected;
9211
+ case "lt": return typeof actual === "number" && typeof expected === "number" && actual < expected;
9212
+ case "lte": return typeof actual === "number" && typeof expected === "number" && actual <= expected;
9213
+ case "contains": return typeof actual === "string" && typeof expected === "string" && actual.includes(expected);
9214
+ case "in": return Array.isArray(expected) && expected.some((v) => v === actual);
9215
+ }
9216
+ }
9217
+ function toTraceValue(value) {
9218
+ if (value === void 0 || value === null) return null;
9219
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return value;
9220
+ if (Array.isArray(value) && value.every((v) => typeof v === "string" || typeof v === "number")) return value;
9221
+ return JSON.stringify(value);
9222
+ }
9223
+ function show(value) {
9224
+ return Array.isArray(value) ? `[${value.join(", ")}]` : String(value);
9225
+ }
9226
+ function markSkipped(cond, path, why, out) {
9227
+ out.push({
9228
+ path,
9229
+ kind: cond.kind,
9230
+ outcome: "not-evaluated",
9231
+ reason: why
9232
+ });
9233
+ if (cond.kind === "all" || cond.kind === "any") cond.children.forEach((c, i) => {
9234
+ markSkipped(c, `${path}.${i}`, why, out);
9235
+ });
9236
+ else if (cond.kind === "not") markSkipped(cond.child, `${path}.0`, why, out);
9237
+ }
9238
+ function evalNode(cond, path, reader, now, out) {
9239
+ switch (cond.kind) {
9240
+ case "condition": {
9241
+ const observed = reader.read(cond.deviceId, cond.cap, cond.fieldPath);
9242
+ const base = {
9243
+ path,
9244
+ kind: cond.kind,
9245
+ deviceId: cond.deviceId,
9246
+ cap: cond.cap,
9247
+ fieldPath: cond.fieldPath,
9248
+ operator: cond.operator,
9249
+ expected: toTraceValue(cond.value),
9250
+ observed: toTraceValue(observed)
9251
+ };
9252
+ if (observed === void 0) {
9253
+ out.push({
9254
+ ...base,
9255
+ outcome: "fail",
9256
+ reason: `${cond.fieldPath} value unknown → fail`
9257
+ });
9258
+ return false;
9259
+ }
9260
+ const ok = compare(observed, cond.operator, cond.value);
9261
+ out.push({
9262
+ ...base,
9263
+ outcome: ok ? "pass" : "fail",
9264
+ reason: `${cond.fieldPath} ${show(observed)}, expected ${OPERATOR_SYMBOL[cond.operator]} ${show(cond.value)} → ${ok ? "pass" : "fail"}`
9265
+ });
9266
+ return ok;
9267
+ }
9268
+ case "expression": {
9269
+ const values = {};
9270
+ for (const [alias, binding] of Object.entries(cond.bindings)) {
9271
+ if (binding.kind === "literal") {
9272
+ values[alias] = toExpressionValue(binding.value) ?? null;
9273
+ continue;
9274
+ }
9275
+ const raw = binding.kind === "global" ? reader.readStable(binding.sourceStableId, binding.cap, binding.fieldPath) : void 0;
9276
+ if (raw === void 0) {
9277
+ out.push({
9278
+ path,
9279
+ kind: cond.kind,
9280
+ outcome: "fail",
9281
+ reason: `${alias} value unknown → fail`
9282
+ });
9283
+ return false;
9284
+ }
9285
+ values[alias] = toExpressionValue(raw) ?? null;
9286
+ }
9287
+ const result = evaluateExpressionSource(cond.expr, values, now);
9288
+ if (!result.ok) {
9289
+ out.push({
9290
+ path,
9291
+ kind: cond.kind,
9292
+ outcome: "fail",
9293
+ reason: `${cond.expr}: ${result.error} → fail`
9294
+ });
9295
+ return false;
9296
+ }
9297
+ const ok = result.value === true;
9298
+ out.push({
9299
+ path,
9300
+ kind: cond.kind,
9301
+ outcome: ok ? "pass" : "fail",
9302
+ reason: `${cond.expr} with ${JSON.stringify(values)} → ${ok ? "pass" : "fail"}`
9303
+ });
9304
+ return ok;
9305
+ }
9306
+ case "not": {
9307
+ const at = out.length;
9308
+ out.push({
9309
+ path,
9310
+ kind: "not",
9311
+ outcome: "not-evaluated",
9312
+ reason: ""
9313
+ });
9314
+ const inner = evalNode(cond.child, `${path}.0`, reader, now, out);
9315
+ const ok = !inner;
9316
+ out.splice(at, 1, {
9317
+ path,
9318
+ kind: "not",
9319
+ outcome: ok ? "pass" : "fail",
9320
+ reason: `not (${inner ? "pass" : "fail"}) → ${ok ? "pass" : "fail"}`
9321
+ });
9322
+ return ok;
9323
+ }
9324
+ case "all":
9325
+ case "any": {
9326
+ const isAll = cond.kind === "all";
9327
+ const at = out.length;
9328
+ out.push({
9329
+ path,
9330
+ kind: cond.kind,
9331
+ outcome: "not-evaluated",
9332
+ reason: ""
9333
+ });
9334
+ let decided = null;
9335
+ for (let i = 0; i < cond.children.length; i += 1) {
9336
+ const child = cond.children[i];
9337
+ if (child === void 0) continue;
9338
+ if (decided !== null) {
9339
+ markSkipped(child, `${path}.${i}`, `short-circuited by ${path}.${decided}`, out);
9340
+ continue;
9341
+ }
9342
+ const ok = evalNode(child, `${path}.${i}`, reader, now, out);
9343
+ if (isAll ? !ok : ok) decided = i;
9344
+ }
9345
+ const ok = isAll ? decided === null : decided !== null;
9346
+ const reason = isAll ? ok ? `all ${cond.children.length} passed → pass` : `${path}.${decided} failed → fail` : ok ? `${path}.${decided} passed → pass` : `none of ${cond.children.length} passed → fail`;
9347
+ out.splice(at, 1, {
9348
+ path,
9349
+ kind: cond.kind,
9350
+ outcome: ok ? "pass" : "fail",
9351
+ reason
9352
+ });
9353
+ return ok;
9354
+ }
9355
+ }
9356
+ }
9357
+ /** No condition tree is a pass with no nodes. */
9358
+ function evaluateConditionTree(cond, reader, now) {
9359
+ if (cond === void 0) return {
9360
+ pass: true,
9361
+ nodes: []
9362
+ };
9363
+ const nodes = [];
9364
+ return {
9365
+ pass: evalNode(cond, "conditions", reader, now, nodes),
9366
+ nodes
9367
+ };
9368
+ }
8550
9369
  //#endregion
8551
- //#region src/capabilities/addon-routes.cap.ts
8552
- var AddonHttpRouteSchema = z.object({
8553
- method: z.enum([
8554
- "GET",
8555
- "POST",
8556
- "PUT",
8557
- "DELETE",
8558
- "PATCH"
8559
- ]),
8560
- path: z.string(),
8561
- access: z.enum([
8562
- "public",
8563
- "authenticated",
8564
- "admin"
8565
- ]).optional(),
8566
- description: z.string().optional(),
8567
- /** The hub limits this route per client address before the handler runs. */
8568
- rateLimit: z.enum(["auth"]).optional()
8569
- });
8570
- /**
8571
- * Cross-process route invocation envelope. The hub captures the
8572
- * request as plain data, ships it to the worker via Moleculer, and
8573
- * the worker runs the local handler against a capturing reply. The
8574
- * envelope returned describes what the handler intended (status,
8575
- * headers, body, or a redirect) so the hub can translate it back to
8576
- * the Fastify reply that's actually wired to the socket.
8577
- */
8578
- var InvokeRequestSchema = z.object({
8579
- method: z.string(),
8580
- path: z.string(),
8581
- params: z.record(z.string(), z.string()),
8582
- query: z.record(z.string(), z.string()),
8583
- body: z.unknown(),
8584
- headers: z.record(z.string(), z.string()),
8585
- user: z.object({
8586
- id: z.string(),
8587
- username: z.string(),
8588
- isAdmin: z.boolean()
8589
- }).optional(),
8590
- scopedToken: z.unknown().optional()
8591
- });
8592
- var InvokeReplyEnvelopeSchema = z.object({
8593
- status: z.number().int(),
8594
- headers: z.record(z.string(), z.string()),
8595
- /** When set, the hub MUST `reply.redirect(redirectUrl)` instead of
8596
- * sending `body`. Status defaults to 302 when this is set unless
8597
- * the handler called `reply.code(...)` explicitly. */
8598
- redirectUrl: z.string().nullable(),
8599
- /** JSON-serializable body. `undefined` is treated as "no body". */
8600
- body: z.unknown().optional(),
8601
- /** Set when the handler called `reply.type(mime)`. */
8602
- contentType: z.string().optional()
8603
- });
8604
- var addonRoutesCapability = {
8605
- name: "addon-routes",
8606
- scope: "system",
8607
- mode: "collection",
8608
- internal: true,
8609
- methods: {
8610
- getRoutes: method(z.void(), z.array(AddonHttpRouteSchema)),
8611
- /**
8612
- * Cross-process dispatch entry point. Forked addons implement this
8613
- * (via `buildAddonRouteProvider`) so the hub's Fastify catch-all
8614
- * can route through Moleculer when the handler lives in a worker.
8615
- *
8616
- * Local addons can implement it for free with the same helper;
8617
- * the hub bypasses the wire on co-located addons.
8618
- */
8619
- invoke: method(InvokeRequestSchema, InvokeReplyEnvelopeSchema, { kind: "mutation" })
9370
+ //#region src/catalogs/coco-classmap.ts
9371
+ var COCO_80_LABELS = [
9372
+ {
9373
+ id: "person",
9374
+ name: "Person"
8620
9375
  },
8621
- /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
8622
- mount: { kind: "skip" }
8623
- };
8624
- //#endregion
8625
- //#region src/capabilities/addon-settings.cap.ts
8626
- var ConfigTabDeclarationSchema = z.object({
8627
- id: z.string(),
8628
- label: z.string(),
8629
- icon: z.string(),
8630
- order: z.number().optional()
8631
- });
8632
- var ConfigSectionWithValuesSchema = z.object({
8633
- id: z.string(),
8634
- title: z.string(),
8635
- titleKey: z.string().optional(),
8636
- description: z.string().optional(),
8637
- descriptionKey: z.string().optional(),
8638
- style: z.enum(["card", "accordion"]).optional(),
8639
- defaultCollapsed: z.boolean().optional(),
8640
- columns: z.union([
8641
- z.literal(1),
8642
- z.literal(2),
8643
- z.literal(3),
8644
- z.literal(4)
8645
- ]).optional(),
8646
- tab: z.string().optional(),
8647
- location: z.enum([
8648
- "settings",
8649
- "top-tab",
8650
- "hero"
8651
- ]).optional(),
8652
- order: z.number().optional(),
8653
- fields: z.array(z.any())
8654
- });
8655
- var SettingsSchemaWithValuesSchema = z.object({
8656
- tabs: z.array(ConfigTabDeclarationSchema).optional(),
8657
- sections: z.array(ConfigSectionWithValuesSchema)
8658
- });
8659
- /** Patch object — keys are field names, values are the new field values. */
8660
- var SettingsPatchSchema = z.record(z.string(), z.unknown());
8661
- /** Standard success response for update operations. */
8662
- var SettingsUpdateResultSchema = z.object({ success: z.literal(true) });
9376
+ {
9377
+ id: "bicycle",
9378
+ name: "Bicycle"
9379
+ },
9380
+ {
9381
+ id: "car",
9382
+ name: "Car"
9383
+ },
9384
+ {
9385
+ id: "motorcycle",
9386
+ name: "Motorcycle"
9387
+ },
9388
+ {
9389
+ id: "airplane",
9390
+ name: "Airplane"
9391
+ },
9392
+ {
9393
+ id: "bus",
9394
+ name: "Bus"
9395
+ },
9396
+ {
9397
+ id: "train",
9398
+ name: "Train"
9399
+ },
9400
+ {
9401
+ id: "truck",
9402
+ name: "Truck"
9403
+ },
9404
+ {
9405
+ id: "boat",
9406
+ name: "Boat"
9407
+ },
9408
+ {
9409
+ id: "traffic light",
9410
+ name: "Traffic Light"
9411
+ },
9412
+ {
9413
+ id: "fire hydrant",
9414
+ name: "Fire Hydrant"
9415
+ },
9416
+ {
9417
+ id: "stop sign",
9418
+ name: "Stop Sign"
9419
+ },
9420
+ {
9421
+ id: "parking meter",
9422
+ name: "Parking Meter"
9423
+ },
9424
+ {
9425
+ id: "bench",
9426
+ name: "Bench"
9427
+ },
9428
+ {
9429
+ id: "bird",
9430
+ name: "Bird"
9431
+ },
9432
+ {
9433
+ id: "cat",
9434
+ name: "Cat"
9435
+ },
9436
+ {
9437
+ id: "dog",
9438
+ name: "Dog"
9439
+ },
9440
+ {
9441
+ id: "horse",
9442
+ name: "Horse"
9443
+ },
9444
+ {
9445
+ id: "sheep",
9446
+ name: "Sheep"
9447
+ },
9448
+ {
9449
+ id: "cow",
9450
+ name: "Cow"
9451
+ },
9452
+ {
9453
+ id: "elephant",
9454
+ name: "Elephant"
9455
+ },
9456
+ {
9457
+ id: "bear",
9458
+ name: "Bear"
9459
+ },
9460
+ {
9461
+ id: "zebra",
9462
+ name: "Zebra"
9463
+ },
9464
+ {
9465
+ id: "giraffe",
9466
+ name: "Giraffe"
9467
+ },
9468
+ {
9469
+ id: "backpack",
9470
+ name: "Backpack"
9471
+ },
9472
+ {
9473
+ id: "umbrella",
9474
+ name: "Umbrella"
9475
+ },
9476
+ {
9477
+ id: "handbag",
9478
+ name: "Handbag"
9479
+ },
9480
+ {
9481
+ id: "tie",
9482
+ name: "Tie"
9483
+ },
9484
+ {
9485
+ id: "suitcase",
9486
+ name: "Suitcase"
9487
+ },
9488
+ {
9489
+ id: "frisbee",
9490
+ name: "Frisbee"
9491
+ },
9492
+ {
9493
+ id: "skis",
9494
+ name: "Skis"
9495
+ },
9496
+ {
9497
+ id: "snowboard",
9498
+ name: "Snowboard"
9499
+ },
9500
+ {
9501
+ id: "sports ball",
9502
+ name: "Sports Ball"
9503
+ },
9504
+ {
9505
+ id: "kite",
9506
+ name: "Kite"
9507
+ },
9508
+ {
9509
+ id: "baseball bat",
9510
+ name: "Baseball Bat"
9511
+ },
9512
+ {
9513
+ id: "baseball glove",
9514
+ name: "Baseball Glove"
9515
+ },
9516
+ {
9517
+ id: "skateboard",
9518
+ name: "Skateboard"
9519
+ },
9520
+ {
9521
+ id: "surfboard",
9522
+ name: "Surfboard"
9523
+ },
9524
+ {
9525
+ id: "tennis racket",
9526
+ name: "Tennis Racket"
9527
+ },
9528
+ {
9529
+ id: "bottle",
9530
+ name: "Bottle"
9531
+ },
9532
+ {
9533
+ id: "wine glass",
9534
+ name: "Wine Glass"
9535
+ },
9536
+ {
9537
+ id: "cup",
9538
+ name: "Cup"
9539
+ },
9540
+ {
9541
+ id: "fork",
9542
+ name: "Fork"
9543
+ },
9544
+ {
9545
+ id: "knife",
9546
+ name: "Knife"
9547
+ },
9548
+ {
9549
+ id: "spoon",
9550
+ name: "Spoon"
9551
+ },
9552
+ {
9553
+ id: "bowl",
9554
+ name: "Bowl"
9555
+ },
9556
+ {
9557
+ id: "banana",
9558
+ name: "Banana"
9559
+ },
9560
+ {
9561
+ id: "apple",
9562
+ name: "Apple"
9563
+ },
9564
+ {
9565
+ id: "sandwich",
9566
+ name: "Sandwich"
9567
+ },
9568
+ {
9569
+ id: "orange",
9570
+ name: "Orange"
9571
+ },
9572
+ {
9573
+ id: "broccoli",
9574
+ name: "Broccoli"
9575
+ },
9576
+ {
9577
+ id: "carrot",
9578
+ name: "Carrot"
9579
+ },
9580
+ {
9581
+ id: "hot dog",
9582
+ name: "Hot Dog"
9583
+ },
9584
+ {
9585
+ id: "pizza",
9586
+ name: "Pizza"
9587
+ },
9588
+ {
9589
+ id: "donut",
9590
+ name: "Donut"
9591
+ },
9592
+ {
9593
+ id: "cake",
9594
+ name: "Cake"
9595
+ },
9596
+ {
9597
+ id: "chair",
9598
+ name: "Chair"
9599
+ },
9600
+ {
9601
+ id: "couch",
9602
+ name: "Couch"
9603
+ },
9604
+ {
9605
+ id: "potted plant",
9606
+ name: "Potted Plant"
9607
+ },
9608
+ {
9609
+ id: "bed",
9610
+ name: "Bed"
9611
+ },
9612
+ {
9613
+ id: "dining table",
9614
+ name: "Dining Table"
9615
+ },
9616
+ {
9617
+ id: "toilet",
9618
+ name: "Toilet"
9619
+ },
9620
+ {
9621
+ id: "tv",
9622
+ name: "TV"
9623
+ },
9624
+ {
9625
+ id: "laptop",
9626
+ name: "Laptop"
9627
+ },
9628
+ {
9629
+ id: "mouse",
9630
+ name: "Mouse"
9631
+ },
9632
+ {
9633
+ id: "remote",
9634
+ name: "Remote"
9635
+ },
9636
+ {
9637
+ id: "keyboard",
9638
+ name: "Keyboard"
9639
+ },
9640
+ {
9641
+ id: "cell phone",
9642
+ name: "Cell Phone"
9643
+ },
9644
+ {
9645
+ id: "microwave",
9646
+ name: "Microwave"
9647
+ },
9648
+ {
9649
+ id: "oven",
9650
+ name: "Oven"
9651
+ },
9652
+ {
9653
+ id: "toaster",
9654
+ name: "Toaster"
9655
+ },
9656
+ {
9657
+ id: "sink",
9658
+ name: "Sink"
9659
+ },
9660
+ {
9661
+ id: "refrigerator",
9662
+ name: "Refrigerator"
9663
+ },
9664
+ {
9665
+ id: "book",
9666
+ name: "Book"
9667
+ },
9668
+ {
9669
+ id: "clock",
9670
+ name: "Clock"
9671
+ },
9672
+ {
9673
+ id: "vase",
9674
+ name: "Vase"
9675
+ },
9676
+ {
9677
+ id: "scissors",
9678
+ name: "Scissors"
9679
+ },
9680
+ {
9681
+ id: "teddy bear",
9682
+ name: "Teddy Bear"
9683
+ },
9684
+ {
9685
+ id: "hair drier",
9686
+ name: "Hair Drier"
9687
+ },
9688
+ {
9689
+ id: "toothbrush",
9690
+ name: "Toothbrush"
9691
+ }
9692
+ ];
9693
+ var MACRO_LABELS = [
9694
+ {
9695
+ id: "person",
9696
+ name: "Person"
9697
+ },
9698
+ {
9699
+ id: "vehicle",
9700
+ name: "Vehicle"
9701
+ },
9702
+ {
9703
+ id: "animal",
9704
+ name: "Animal"
9705
+ },
9706
+ {
9707
+ id: "package",
9708
+ name: "Package"
9709
+ }
9710
+ ];
8663
9711
  /**
8664
- * addon-settings — singleton gateway for three-level addon settings.
9712
+ * The class names a per-class COUNT can ever be keyed on — the macro ids, and
9713
+ * only those.
8665
9714
  *
8666
- * Works like `device-manager`: a single hub-side provider that resolves
8667
- * `addonId` to the target addon and delegates the call. For hub-local
8668
- * addons the call is direct; for remote agents it proxies via the
8669
- * per-addon Moleculer service.
9715
+ * `preserveOriginal: false` below is the whole reason this set exists: the
9716
+ * executor maps each raw COCO label onto its macro and DROPS everything else,
9717
+ * so a tracked detection's `className` is always one of {@link MACRO_LABELS}.
9718
+ * Any surface that indexes counts by class name — the ZoneAnalytics occupancy
9719
+ * snapshot's `byClass`, and therefore every occupancy rule — can match nothing
9720
+ * else. Derived from the catalog, never hand-listed, so a new macro joins it by
9721
+ * being declared once.
8670
9722
  *
8671
- * Replaces the `$addonHost` Moleculer service. Transport transparency
8672
- * is handled by the provider implementation — callers (admin UI, other
8673
- * addons via `ctx.api`) never know which node hosts the target addon.
9723
+ * Cost of not having it, 2026-08-12: the notification rule editor offered the
9724
+ * full taxonomy for an occupancy class (occupancy is the one condition that
9725
+ * does not go through the engine's macro-expanding `expandClassSelector`), two
9726
+ * live rules were authored on `car`, and both counters read 0 forever.
9727
+ */
9728
+ var DETECTION_MACRO_CLASSES = new Set(MACRO_LABELS.map((l) => l.id));
9729
+ /** True when `className` is a macro the detector can actually emit (and hence a
9730
+ * class a count can be keyed on) — see {@link DETECTION_MACRO_CLASSES}. */
9731
+ function isDetectionMacroClass(className) {
9732
+ return DETECTION_MACRO_CLASSES.has(className.trim().toLowerCase());
9733
+ }
9734
+ var COCO_TO_MACRO = {
9735
+ mapping: {
9736
+ person: "person",
9737
+ bicycle: "vehicle",
9738
+ car: "vehicle",
9739
+ motorcycle: "vehicle",
9740
+ airplane: "vehicle",
9741
+ bus: "vehicle",
9742
+ train: "vehicle",
9743
+ truck: "vehicle",
9744
+ boat: "vehicle",
9745
+ bird: "animal",
9746
+ cat: "animal",
9747
+ dog: "animal",
9748
+ horse: "animal",
9749
+ sheep: "animal",
9750
+ cow: "animal",
9751
+ elephant: "animal",
9752
+ bear: "animal",
9753
+ zebra: "animal",
9754
+ giraffe: "animal",
9755
+ suitcase: "package",
9756
+ backpack: "package",
9757
+ handbag: "package"
9758
+ },
9759
+ preserveOriginal: false
9760
+ };
9761
+ var MACRO_NAMES = new Set(Object.values(COCO_TO_MACRO.mapping));
9762
+ function macroOf(className) {
9763
+ return COCO_TO_MACRO.mapping[className] ?? className;
9764
+ }
9765
+ /** `animal` matches a dog; `dog` matches only a dog (a cat is also an animal). */
9766
+ function detectionClassMatches(wanted, actual) {
9767
+ const w = wanted.toLowerCase();
9768
+ const a = actual.toLowerCase();
9769
+ if (w === a) return true;
9770
+ return MACRO_NAMES.has(w) && macroOf(a) === w;
9771
+ }
9772
+ function isPhase(value) {
9773
+ return value === "start" || value === "update" || value === "end";
9774
+ }
9775
+ var DetectionTriggerFilter = class {
9776
+ trigger;
9777
+ /** `${deviceId}|${trackId}` → fired at. Insertion-ordered, so the oldest is first. */
9778
+ fired = /* @__PURE__ */ new Map();
9779
+ constructor(trigger) {
9780
+ this.trigger = trigger;
9781
+ }
9782
+ get firedCount() {
9783
+ return this.fired.size;
9784
+ }
9785
+ evaluate(event, now) {
9786
+ const { deviceId, trackId, phase } = event;
9787
+ if (typeof deviceId !== "number" || typeof trackId !== "string" || !isPhase(phase)) return {
9788
+ kind: "ignore",
9789
+ why: "malformed track-lifecycle event"
9790
+ };
9791
+ if (!this.trigger.deviceIds.includes(deviceId)) return {
9792
+ kind: "ignore",
9793
+ why: `device ${deviceId} is not one of the trigger's devices`
9794
+ };
9795
+ const key = `${deviceId}|${trackId}`;
9796
+ if (phase === "end") {
9797
+ this.fired.delete(key);
9798
+ return {
9799
+ kind: "ignore",
9800
+ why: "track ended"
9801
+ };
9802
+ }
9803
+ this.expire(now);
9804
+ const className = typeof event.bestClassName === "string" ? event.bestClassName : "";
9805
+ const score = typeof event.bestConfidence === "number" ? event.bestConfidence : 0;
9806
+ const vars = {
9807
+ deviceId,
9808
+ className,
9809
+ trackId,
9810
+ score
9811
+ };
9812
+ if (this.fired.has(key)) return {
9813
+ kind: "reject",
9814
+ reason: `already fired for track ${trackId}`,
9815
+ vars
9816
+ };
9817
+ if (!this.trigger.classes.some((c) => detectionClassMatches(c, className))) return {
9818
+ kind: "reject",
9819
+ reason: `class ${className || "unknown"} not in [${this.trigger.classes.join(", ")}]`,
9820
+ vars
9821
+ };
9822
+ if (this.trigger.minScore !== void 0 && score < this.trigger.minScore) return {
9823
+ kind: "reject",
9824
+ reason: `score ${score} < ${this.trigger.minScore}`,
9825
+ vars
9826
+ };
9827
+ if (this.trigger.zones !== void 0) {
9828
+ const visited = Array.isArray(event.zonesVisited) ? event.zonesVisited.filter((z) => typeof z === "string") : [];
9829
+ if (!this.trigger.zones.some((z) => visited.includes(z))) return {
9830
+ kind: "reject",
9831
+ reason: `zone mismatch: visited [${visited.join(", ")}], wanted [${this.trigger.zones.join(", ")}]`,
9832
+ vars
9833
+ };
9834
+ }
9835
+ this.remember(key, now);
9836
+ return {
9837
+ kind: "fire",
9838
+ reason: `${className} ${score} on device ${deviceId}`,
9839
+ vars
9840
+ };
9841
+ }
9842
+ remember(key, now) {
9843
+ this.fired.set(key, now);
9844
+ while (this.fired.size > 512) {
9845
+ const oldest = this.fired.keys().next();
9846
+ if (oldest.done === true) break;
9847
+ this.fired.delete(oldest.value);
9848
+ }
9849
+ }
9850
+ expire(now) {
9851
+ for (const [key, at] of this.fired) {
9852
+ if (now - at < 9e5) break;
9853
+ this.fired.delete(key);
9854
+ }
9855
+ }
9856
+ };
9857
+ //#endregion
9858
+ //#region src/automation/run-gate.ts
9859
+ var MINUTE_MS$1 = 6e4;
9860
+ function minutes(ms) {
9861
+ return (ms / MINUTE_MS$1).toFixed(1);
9862
+ }
9863
+ var RunGate = class {
9864
+ mode;
9865
+ active = 0;
9866
+ pending = 0;
9867
+ constructor(mode) {
9868
+ this.mode = mode;
9869
+ }
9870
+ get activeRuns() {
9871
+ return this.active;
9872
+ }
9873
+ get queuedTriggers() {
9874
+ return this.pending;
9875
+ }
9876
+ admit() {
9877
+ const mode = this.mode;
9878
+ switch (mode.mode) {
9879
+ case "single":
9880
+ case "cooldown":
9881
+ if (this.active > 0) return {
9882
+ decision: "drop",
9883
+ reason: `${mode.mode}: a run is already in progress`
9884
+ };
9885
+ this.active += 1;
9886
+ return {
9887
+ decision: "run",
9888
+ reason: `${mode.mode}: no run in progress`
9889
+ };
9890
+ case "restart":
9891
+ if (this.active > 0) {
9892
+ this.active += 1;
9893
+ return {
9894
+ decision: "restart",
9895
+ reason: `restart: aborting ${this.active - 1} run(s) in progress`
9896
+ };
9897
+ }
9898
+ this.active += 1;
9899
+ return {
9900
+ decision: "run",
9901
+ reason: "restart: no run in progress"
9902
+ };
9903
+ case "queued":
9904
+ if (this.active === 0) {
9905
+ this.active += 1;
9906
+ return {
9907
+ decision: "run",
9908
+ reason: "queued: no run in progress"
9909
+ };
9910
+ }
9911
+ if (this.pending < mode.max) {
9912
+ this.pending += 1;
9913
+ return {
9914
+ decision: "queued",
9915
+ reason: `queued: a run is in progress, waiting ${this.pending} of ${mode.max}`
9916
+ };
9917
+ }
9918
+ return {
9919
+ decision: "drop",
9920
+ reason: `queued: a run is in progress and the queue is full (${mode.max})`
9921
+ };
9922
+ case "parallel":
9923
+ if (this.active < mode.max) {
9924
+ this.active += 1;
9925
+ return {
9926
+ decision: "run",
9927
+ reason: `parallel: ${this.active} of ${mode.max} running`
9928
+ };
9929
+ }
9930
+ return {
9931
+ decision: "drop",
9932
+ reason: `parallel: ${mode.max} runs already in progress`
9933
+ };
9934
+ }
9935
+ }
9936
+ /** The run holding a slot ended (any outcome). True = a queued trigger took the slot. */
9937
+ release() {
9938
+ if (this.active > 0) this.active -= 1;
9939
+ if (this.mode.mode === "queued" && this.pending > 0) {
9940
+ this.pending -= 1;
9941
+ this.active += 1;
9942
+ return true;
9943
+ }
9944
+ return false;
9945
+ }
9946
+ /** Checked AFTER the conditions pass. Always `ok` outside `cooldown` mode. */
9947
+ cooldown(input) {
9948
+ if (this.mode.mode !== "cooldown") return {
9949
+ ok: true,
9950
+ bypassed: false,
9951
+ reason: ""
9952
+ };
9953
+ const waitMs = this.mode.minutes * MINUTE_MS$1;
9954
+ if (input.lastRunStartedAt === null) return {
9955
+ ok: true,
9956
+ bypassed: false,
9957
+ reason: `cooldown ${this.mode.minutes} min: no earlier run`
9958
+ };
9959
+ const elapsed = input.now - input.lastRunStartedAt;
9960
+ if (elapsed >= waitMs) return {
9961
+ ok: true,
9962
+ bypassed: false,
9963
+ reason: `cooldown ${this.mode.minutes} min: last run started ${minutes(elapsed)} min ago`
9964
+ };
9965
+ const left = `${minutes(waitMs - elapsed)} min left`;
9966
+ if (input.manual) return {
9967
+ ok: true,
9968
+ bypassed: true,
9969
+ reason: `cooldown ${this.mode.minutes} min bypassed by a manual trigger (${left})`
9970
+ };
9971
+ return {
9972
+ ok: false,
9973
+ bypassed: false,
9974
+ reason: `cooldown ${this.mode.minutes} min: last run started ${minutes(elapsed)} min ago, ${left}`
9975
+ };
9976
+ }
9977
+ };
9978
+ //#endregion
9979
+ //#region src/automation/trace.ts
9980
+ /**
9981
+ * Run traces — what an automation (or, later, an Action run) DID, node by node,
9982
+ * so the editor can paint every block green or red with its reason.
8674
9983
  *
8675
- * Three levels:
8676
- * - **addon**: addon-scoped settings (installation config, API keys, …)
8677
- * - **global**: settings applied to all devices by default
8678
- * - **device**: per-device overrides
9984
+ * A trace is data, not a log: it covers the WHOLE tree — the trigger stage,
9985
+ * every condition node (containers and leaves, including the ones a
9986
+ * short-circuit never reached), the run-mode verdict and every action step —
9987
+ * each addressed by a stable path (`conditions.0.1`, `actions.2`, or `steps.N`
9988
+ * for an Action run). Skipped
9989
+ * evaluations are traced too, and identical consecutive skips collapse into a
9990
+ * repeat count so a trigger that fails every 5 minutes cannot flush real runs.
8679
9991
  *
8680
- * Optional `nodeId` allows explicit node targeting. When absent the
8681
- * provider resolves the addon's host node automatically.
9992
+ * {@link AutomationStepTraceSchema} is deliberately free of automation
9993
+ * vocabulary so an Action run records the same step shape.
8682
9994
  */
9995
+ /** A value a trace may show: JSON primitives and short lists, nothing deeper. */
9996
+ var TraceValueSchema = z.union([
9997
+ z.string(),
9998
+ z.number(),
9999
+ z.boolean(),
10000
+ z.null(),
10001
+ z.array(z.union([z.string(), z.number()]))
10002
+ ]);
10003
+ var AutomationRunOutcomeSchema = z.enum([
10004
+ "ran",
10005
+ "skipped-trigger",
10006
+ "skipped-conditions",
10007
+ "skipped-cooldown",
10008
+ "skipped-overlap",
10009
+ "failed",
10010
+ "aborted"
10011
+ ]);
10012
+ /** `not-evaluated` = a short-circuit never reached the node. */
10013
+ var TraceNodeOutcomeSchema = z.enum([
10014
+ "pass",
10015
+ "fail",
10016
+ "not-evaluated"
10017
+ ]);
10018
+ var AutomationTriggerTraceSchema = z.object({
10019
+ kind: z.string().min(1),
10020
+ outcome: z.enum(["pass", "fail"]),
10021
+ /** Why an event was rejected ("class person not in [dog]") or what fired. */
10022
+ reason: z.string(),
10023
+ /** deviceId, className, trackId, score … — only what the trigger exposes. */
10024
+ vars: z.record(z.string(), TraceValueSchema)
10025
+ });
10026
+ var AutomationConditionTraceNodeSchema = z.object({
10027
+ /** `conditions` for the root, `conditions.<i>` for its i-th child, … */
10028
+ path: z.string().min(1),
10029
+ kind: z.enum([
10030
+ "all",
10031
+ "any",
10032
+ "not",
10033
+ "condition",
10034
+ "expression"
10035
+ ]),
10036
+ outcome: TraceNodeOutcomeSchema,
10037
+ reason: z.string(),
10038
+ deviceId: z.number().int().optional(),
10039
+ cap: z.string().optional(),
10040
+ fieldPath: z.string().optional(),
10041
+ operator: z.string().optional(),
10042
+ expected: TraceValueSchema.optional(),
10043
+ /** What the mirror held; `null` when it held nothing (unknown). */
10044
+ observed: TraceValueSchema.optional()
10045
+ });
10046
+ var AutomationRunVerdictSchema = z.object({
10047
+ mode: AutomationRunModeSchema,
10048
+ decision: z.enum([
10049
+ "run",
10050
+ "queued",
10051
+ "restart",
10052
+ "drop",
10053
+ "cooldown",
10054
+ "bypass"
10055
+ ]),
10056
+ reason: z.string()
10057
+ });
10058
+ /** One executed (or not-run) step — shared by automations and Action runs. */
10059
+ var AutomationStepTraceSchema = z.object({
10060
+ /** `actions.<i>` */
10061
+ path: z.string().min(1),
10062
+ kind: z.string().min(1),
10063
+ cap: z.string().optional(),
10064
+ method: z.string().optional(),
10065
+ deviceId: z.number().int().optional(),
10066
+ startedAt: z.number().optional(),
10067
+ endedAt: z.number().optional(),
10068
+ outcome: z.enum([
10069
+ "ok",
10070
+ "error",
10071
+ "not-run"
10072
+ ]),
10073
+ message: z.string().optional()
10074
+ });
10075
+ var AutomationRunTraceSchema = z.object({
10076
+ runId: z.string().min(1),
10077
+ startedAt: z.number(),
10078
+ endedAt: z.number(),
10079
+ trigger: AutomationTriggerTraceSchema,
10080
+ conditions: z.array(AutomationConditionTraceNodeSchema),
10081
+ verdict: AutomationRunVerdictSchema.optional(),
10082
+ steps: z.array(AutomationStepTraceSchema),
10083
+ outcome: AutomationRunOutcomeSchema,
10084
+ /** How many identical consecutive skips this trace stands for (>= 1). */
10085
+ repeat: z.number().int().min(1),
10086
+ /** When the latest of those repeats happened. */
10087
+ lastAt: z.number()
10088
+ });
8683
10089
  /**
8684
- * `addon-settings` is a **hub-centric** cap: the hub hosts the single
8685
- * provider, and `nodeId` in the input is data for the hub provider's
8686
- * internal dispatcher, not a routing hint for the cap-router. See
8687
- * `CapabilityDefinition.nodeIdMode` for the contract.
10090
+ * What the hub's `runs` ledger holds for one owner (`automation:<blockId>` or
10091
+ * `action:<actionId>`): the cooldown stamp and the trace ring.
8688
10092
  */
8689
- var addonSettingsCapability = {
8690
- name: "addon-settings",
10093
+ var AutomationStateDocSchema = z.object({
10094
+ version: z.literal(1),
10095
+ lastRunStartedAt: z.number().nullable(),
10096
+ traces: z.array(AutomationRunTraceSchema)
10097
+ });
10098
+ /** The state of an owner that never reported. */
10099
+ var EMPTY_AUTOMATION_STATE = {
10100
+ version: 1,
10101
+ lastRunStartedAt: null,
10102
+ traces: []
10103
+ };
10104
+ function isSkippedTrace(trace) {
10105
+ return trace.outcome.startsWith("skipped-");
10106
+ }
10107
+ /** Numbers vary between repeats of the same cause ("0.41 < 0.6" / "0.43 < 0.6"). */
10108
+ function normaliseReason(reason) {
10109
+ return reason.replace(/\d+(\.\d+)?/g, "#");
10110
+ }
10111
+ /** Two skips with the same signature are the same event repeating. */
10112
+ function skipSignature(trace) {
10113
+ return JSON.stringify([
10114
+ trace.outcome,
10115
+ trace.trigger.kind,
10116
+ trace.trigger.outcome,
10117
+ normaliseReason(trace.trigger.reason),
10118
+ trace.verdict === void 0 ? null : [trace.verdict.decision, normaliseReason(trace.verdict.reason)],
10119
+ trace.conditions.map((n) => [n.path, n.outcome])
10120
+ ]);
10121
+ }
10122
+ /**
10123
+ * `next` folded into `prev` when both are skips of the same signature (the
10124
+ * repeat count and the latest time move on), else null. Used by the block
10125
+ * BEFORE it sends, so a trigger that fails every few seconds costs one RPC per
10126
+ * flush, not one per skip; the ledger applies the same rule through
10127
+ * {@link appendTrace}.
10128
+ */
10129
+ function mergeSkipTraces(prev, next) {
10130
+ if (!isSkippedTrace(prev) || !isSkippedTrace(next)) return null;
10131
+ if (skipSignature(prev) !== skipSignature(next)) return null;
10132
+ return {
10133
+ ...prev,
10134
+ repeat: prev.repeat + next.repeat,
10135
+ lastAt: next.lastAt,
10136
+ endedAt: next.endedAt
10137
+ };
10138
+ }
10139
+ /**
10140
+ * Append a trace to a ring of at most `keep` entries, without mutating it.
10141
+ *
10142
+ * - A skip identical to the previous trace is counted on that trace
10143
+ * (`repeat`, `lastAt`), not appended.
10144
+ * - When the ring is full, the oldest SKIPPED trace goes first; a real run is
10145
+ * evicted only when every trace is a run. A noisy skip stream therefore
10146
+ * cannot push the runs the operator is looking for out of the ring.
10147
+ */
10148
+ function appendTrace(ring, trace, keep) {
10149
+ const last = ring[ring.length - 1];
10150
+ const merged = last === void 0 ? null : mergeSkipTraces(last, trace);
10151
+ if (merged !== null) return [...ring.slice(0, -1), merged];
10152
+ const next = [...ring, trace];
10153
+ while (next.length > keep) {
10154
+ const skipAt = next.findIndex((t, i) => i < next.length - 1 && isSkippedTrace(t));
10155
+ next.splice(skipAt === -1 ? 0 : skipAt, 1);
10156
+ }
10157
+ return next;
10158
+ }
10159
+ /**
10160
+ * The trigger stage of a trace from the bag a trigger handed to `run()`:
10161
+ * primitives only (a device-state `to` that is an object is left out), minus the
10162
+ * bookkeeping keys `kind` and `at`.
10163
+ */
10164
+ function buildTriggerTrace(trigger, outcome, reason) {
10165
+ const vars = {};
10166
+ for (const [key, value] of Object.entries(trigger)) {
10167
+ if (key === "kind" || key === "at") continue;
10168
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value === null) vars[key] = value;
10169
+ }
10170
+ return {
10171
+ kind: typeof trigger["kind"] === "string" ? trigger["kind"] : "unknown",
10172
+ outcome,
10173
+ reason,
10174
+ vars
10175
+ };
10176
+ }
10177
+ //#endregion
10178
+ //#region src/automation/action.ts
10179
+ /**
10180
+ * Actions — named, runnable things an operator (or an automation) can start,
10181
+ * declared as LIST ENTRIES, never as devices.
10182
+ *
10183
+ * An entry is either **internal** (a short list of cap/wait steps kept in the
10184
+ * hub's `actions` record kind) or declared by an addon through the
10185
+ * `action-source` collection (a Home Assistant script, a scene …). The one
10186
+ * surface the UI and automations talk to is the `actions` cap; it keeps no
10187
+ * catalog of its own (D3) — every `list` asks the providers live.
10188
+ *
10189
+ * This file is the data half: the entry schema, the variables an entry may
10190
+ * declare, and the pure resolution of the values a run was given. It holds no
10191
+ * runtime.
10192
+ */
10193
+ /** What a variable's value is. `select` takes one of `options`. */
10194
+ var ActionVariableTypeSchema = z.enum([
10195
+ "string",
10196
+ "number",
10197
+ "boolean",
10198
+ "select"
10199
+ ]);
10200
+ var ACTION_VARIABLE_NAME_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
10201
+ var ActionVariableValueSchema = z.union([
10202
+ z.string(),
10203
+ z.number(),
10204
+ z.boolean()
10205
+ ]);
10206
+ /**
10207
+ * One declared variable. Steps reference it as `{ $var: 'name' }` (the whole
10208
+ * value) or `{{vars.name}}` (inside a string) in their args.
10209
+ */
10210
+ var ActionVariableSchema = z.object({
10211
+ name: z.string().regex(ACTION_VARIABLE_NAME_RE),
10212
+ label: z.string().min(1).max(120).optional(),
10213
+ type: ActionVariableTypeSchema,
10214
+ required: z.boolean().optional(),
10215
+ default: ActionVariableValueSchema.optional(),
10216
+ /** The allowed values of a `select`. */
10217
+ options: z.array(z.string().min(1)).min(1).optional()
10218
+ }).superRefine((v, ctx) => {
10219
+ if (v.type === "select" && v.options === void 0) ctx.addIssue({
10220
+ code: "custom",
10221
+ message: "a select variable needs options",
10222
+ path: ["options"]
10223
+ });
10224
+ if (v.default !== void 0 && variableValueError(v, v.default) !== null) ctx.addIssue({
10225
+ code: "custom",
10226
+ message: variableValueError(v, v.default) ?? "invalid default",
10227
+ path: ["default"]
10228
+ });
10229
+ });
10230
+ /** Why `value` is not a legal value for the variable, or null when it is. */
10231
+ function variableValueError(variable, value) {
10232
+ switch (variable.type) {
10233
+ case "string": return typeof value === "string" ? null : `variable "${variable.name}" must be a string`;
10234
+ case "number": return typeof value === "number" && Number.isFinite(value) ? null : `variable "${variable.name}" must be a number`;
10235
+ case "boolean": return typeof value === "boolean" ? null : `variable "${variable.name}" must be true or false`;
10236
+ case "select": return typeof value === "string" && (variable.options ?? []).includes(value) ? null : `variable "${variable.name}" must be one of ${(variable.options ?? []).join(", ")}`;
10237
+ }
10238
+ }
10239
+ /**
10240
+ * The values a run starts with: what the caller gave, checked against the
10241
+ * declaration, with defaults filled. A value the entry did not declare is
10242
+ * REFUSED — a typo in a variable name must not silently run with the default.
10243
+ */
10244
+ function resolveActionVariables(declared, given) {
10245
+ const decls = declared ?? [];
10246
+ const provided = given ?? {};
10247
+ for (const name of Object.keys(provided)) if (!decls.some((d) => d.name === name)) return {
10248
+ ok: false,
10249
+ error: `unknown variable "${name}"`
10250
+ };
10251
+ const values = {};
10252
+ for (const decl of decls) {
10253
+ const value = provided[decl.name] ?? decl.default;
10254
+ if (value === void 0) {
10255
+ if (decl.required === true) return {
10256
+ ok: false,
10257
+ error: `variable "${decl.name}" is required`
10258
+ };
10259
+ continue;
10260
+ }
10261
+ const error = variableValueError(decl, value);
10262
+ if (error !== null) return {
10263
+ ok: false,
10264
+ error
10265
+ };
10266
+ values[decl.name] = value;
10267
+ }
10268
+ return {
10269
+ ok: true,
10270
+ values
10271
+ };
10272
+ }
10273
+ var ActionSourceKindSchema = z.enum(["internal", "addon"]);
10274
+ /** Prefix of an internal action's id. */
10275
+ var INTERNAL_ACTION_PREFIX = "internal:";
10276
+ function internalActionId(uuid) {
10277
+ return `${INTERNAL_ACTION_PREFIX}${uuid}`;
10278
+ }
10279
+ function isInternalActionId(actionId) {
10280
+ return actionId.startsWith("internal:") && actionId.length > 9;
10281
+ }
10282
+ /** The addon behind a `<addonId>:<localId>` id, or null for anything else (internal included). */
10283
+ function addonIdOfActionId(actionId) {
10284
+ if (isInternalActionId(actionId)) return null;
10285
+ const at = actionId.indexOf(":");
10286
+ return at > 0 && at < actionId.length - 1 ? actionId.slice(0, at) : null;
10287
+ }
10288
+ var ActionStatusSchema = z.object({
10289
+ isRunning: z.boolean(),
10290
+ /** Ms epoch the latest run STARTED; null when it never ran. */
10291
+ lastRunAt: z.number().nullable(),
10292
+ /** The latest run's failure; null on success or when it never ran. */
10293
+ lastError: z.string().nullable()
10294
+ });
10295
+ var IDLE_ACTION_STATUS = {
10296
+ isRunning: false,
10297
+ lastRunAt: null,
10298
+ lastError: null
10299
+ };
10300
+ var ActionEntrySchema = z.object({
10301
+ /** `internal:<uuid>` or `<addonId>:<localId>`. */
10302
+ id: z.string().min(3),
10303
+ name: z.string().min(1).max(120),
10304
+ /** The addon that declared it; `core-blocks` for an internal one. */
10305
+ addonId: z.string().min(1),
10306
+ source: ActionSourceKindSchema,
10307
+ /** An addon-declared entry is edited where it was declared. */
10308
+ readOnly: z.boolean(),
10309
+ /** Internal only: cap and wait steps. No action-in-action, so no cycles. */
10310
+ steps: z.array(ActionStepSchema).min(1).max(50).optional(),
10311
+ variables: z.array(ActionVariableSchema).max(20).optional(),
10312
+ status: ActionStatusSchema
10313
+ }).superRefine((entry, ctx) => {
10314
+ if (entry.source === "internal") {
10315
+ if (!isInternalActionId(entry.id)) ctx.addIssue({
10316
+ code: "custom",
10317
+ message: "an internal action id is internal:<uuid>",
10318
+ path: ["id"]
10319
+ });
10320
+ return;
10321
+ }
10322
+ if (entry.steps !== void 0) ctx.addIssue({
10323
+ code: "custom",
10324
+ message: "only an internal action carries steps",
10325
+ path: ["steps"]
10326
+ });
10327
+ if (!entry.readOnly) ctx.addIssue({
10328
+ code: "custom",
10329
+ message: "an addon action is read-only here",
10330
+ path: ["readOnly"]
10331
+ });
10332
+ if (addonIdOfActionId(entry.id) === null) ctx.addIssue({
10333
+ code: "custom",
10334
+ message: "an addon action id is <addonId>:<localId>",
10335
+ path: ["id"]
10336
+ });
10337
+ });
10338
+ /** What an operator writes for an internal action. */
10339
+ var ActionInputSchema = z.object({
10340
+ name: z.string().min(1).max(120),
10341
+ steps: z.array(ActionStepSchema).min(1).max(50),
10342
+ variables: z.array(ActionVariableSchema).max(20).optional()
10343
+ });
10344
+ /** Who started a run. Absent = the operator pressed it. */
10345
+ var ActionRunOriginSchema = z.object({
10346
+ /** The automation block whose step started it. */
10347
+ blockId: z.string().min(1).optional() });
10348
+ /** `started` = the caller did not ask to wait. */
10349
+ var ActionRunOutcomeSchema = z.union([AutomationRunOutcomeSchema, z.literal("started")]);
10350
+ var ActionRunResultSchema = z.object({
10351
+ runId: z.string().min(1),
10352
+ outcome: ActionRunOutcomeSchema,
10353
+ /** Why it did not run, or what failed. */
10354
+ message: z.string().optional()
10355
+ });
10356
+ var ActionErrorCodeSchema = z.enum([
10357
+ "not-found",
10358
+ "read-only",
10359
+ "invalid-variables",
10360
+ "invalid-steps",
10361
+ "not-linked",
10362
+ "busy"
10363
+ ]);
10364
+ /**
10365
+ * A refusal with a reason a caller can branch on. The code leads the message
10366
+ * (`[read-only] …`) because a cap call flattens an error to its text.
10367
+ */
10368
+ var ActionError = class extends Error {
10369
+ code;
10370
+ constructor(code, message) {
10371
+ super(`[${code}] ${message}`);
10372
+ this.name = "ActionError";
10373
+ this.code = code;
10374
+ }
10375
+ };
10376
+ /** The run-state change `actions.onRunChanged` carries. */
10377
+ var ActionRunChangedSchema = z.object({
10378
+ actionId: z.string(),
10379
+ runId: z.string(),
10380
+ isRunning: z.boolean(),
10381
+ /** Set when the run ended. */
10382
+ outcome: AutomationRunOutcomeSchema.optional(),
10383
+ lastRunAt: z.number().nullable(),
10384
+ lastError: z.string().nullable()
10385
+ });
10386
+ //#endregion
10387
+ //#region src/automation/step-runner.ts
10388
+ function errorMessage(err) {
10389
+ return err instanceof Error ? err.message : String(err);
10390
+ }
10391
+ async function runSteps(steps, options) {
10392
+ const traces = [];
10393
+ let failed = false;
10394
+ let aborted = false;
10395
+ for (const [index, step] of steps.entries()) {
10396
+ const path = `${options.pathPrefix}.${index}`;
10397
+ if (failed || aborted || options.isAborted()) {
10398
+ if (!failed) aborted = true;
10399
+ traces.push({
10400
+ ...step.meta,
10401
+ path,
10402
+ outcome: "not-run",
10403
+ message: failed ? "an earlier step failed" : options.abortReason
10404
+ });
10405
+ continue;
10406
+ }
10407
+ const startedAt = options.now();
10408
+ let deviceId = step.meta.deviceId;
10409
+ const scope = { setDeviceId: (id) => {
10410
+ deviceId = id;
10411
+ } };
10412
+ try {
10413
+ await step.run(scope);
10414
+ traces.push({
10415
+ ...step.meta,
10416
+ ...deviceId === void 0 ? {} : { deviceId },
10417
+ path,
10418
+ startedAt,
10419
+ endedAt: options.now(),
10420
+ outcome: "ok"
10421
+ });
10422
+ } catch (err) {
10423
+ failed = true;
10424
+ const message = errorMessage(err);
10425
+ options.onFailure({
10426
+ index,
10427
+ path,
10428
+ message,
10429
+ deviceId
10430
+ });
10431
+ traces.push({
10432
+ ...step.meta,
10433
+ ...deviceId === void 0 ? {} : { deviceId },
10434
+ path,
10435
+ startedAt,
10436
+ endedAt: options.now(),
10437
+ outcome: "error",
10438
+ message
10439
+ });
10440
+ }
10441
+ }
10442
+ return {
10443
+ steps: traces,
10444
+ failed,
10445
+ aborted: aborted && !failed
10446
+ };
10447
+ }
10448
+ function isVarRef(value) {
10449
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
10450
+ const keys = Object.keys(value);
10451
+ return keys.length === 1 && keys[0] === "$var" && typeof Reflect.get(value, "$var") === "string";
10452
+ }
10453
+ var TEMPLATE_RE = /\{\{\s*vars\.([A-Za-z_][A-Za-z0-9_]*)\s*\}\}/g;
10454
+ /**
10455
+ * Substitute a step's args from the run's variables. SUBSTITUTION only, never
10456
+ * evaluation:
10457
+ * - a value that is exactly `{ $var: 'name' }` becomes the variable's value,
10458
+ * keeping its type (a number stays a number);
10459
+ * - `{{vars.name}}` inside a string becomes its text.
10460
+ * A variable that is not set THROWS — a step must not run with a hole where
10461
+ * the operator meant a value. (`{{vars.x}}` keeps the automation behaviour:
10462
+ * the hole is reported through `onMissing` and rendered empty.)
10463
+ */
10464
+ function resolveStepArgs(value, vars, onMissing) {
10465
+ if (isVarRef(value)) {
10466
+ const found = vars[value.$var];
10467
+ if (found === void 0) throw new Error(`variable "${value.$var}" is not set`);
10468
+ return found;
10469
+ }
10470
+ if (typeof value === "string") return value.replace(TEMPLATE_RE, (_m, key) => {
10471
+ const v = vars[key];
10472
+ if (v === void 0) {
10473
+ onMissing(key);
10474
+ return "";
10475
+ }
10476
+ return String(v);
10477
+ });
10478
+ if (Array.isArray(value)) return value.map((v) => resolveStepArgs(v, vars, onMissing));
10479
+ if (value !== null && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, resolveStepArgs(v, vars, onMissing)]));
10480
+ return value;
10481
+ }
10482
+ /** A `{ $var }` device target, resolved from the bag BEFORE dispatch. */
10483
+ function resolveDeviceTarget(vars, name) {
10484
+ const raw = vars[name];
10485
+ if (typeof raw === "number") return raw;
10486
+ throw new Error(`action target var "${name}" is not a device id`);
10487
+ }
10488
+ function stepMetaOfAction(step) {
10489
+ if (step.kind === "wait") return { kind: "wait" };
10490
+ return {
10491
+ kind: "cap",
10492
+ cap: step.cap,
10493
+ method: step.method,
10494
+ ...typeof step.deviceId === "number" ? { deviceId: step.deviceId } : {}
10495
+ };
10496
+ }
10497
+ function isPlainRecord(value) {
10498
+ return value !== null && typeof value === "object" && !Array.isArray(value);
10499
+ }
10500
+ /**
10501
+ * The runnable form of an internal Action's steps, bound to one run's
10502
+ * variables. Variables are substituted per step, at the moment it runs, so a
10503
+ * missing one fails THAT step (traced) and leaves the later ones not-run.
10504
+ */
10505
+ function buildActionSteps(steps, vars, deps) {
10506
+ return steps.map((step) => {
10507
+ const meta = stepMetaOfAction(step);
10508
+ if (step.kind === "wait") return {
10509
+ meta,
10510
+ run: () => deps.sleep(step.seconds * 1e3)
10511
+ };
10512
+ return {
10513
+ meta,
10514
+ run: async (scope) => {
10515
+ const resolved = resolveStepArgs(step.args ?? {}, vars, deps.onMissingVar);
10516
+ const args = isPlainRecord(resolved) ? resolved : {};
10517
+ const targets = typeof step.deviceId === "number" ? [step.deviceId] : Array.isArray(step.deviceId) ? step.deviceId : [resolveDeviceTarget(vars, step.deviceId.$var)];
10518
+ for (const deviceId of targets) {
10519
+ scope.setDeviceId(deviceId);
10520
+ await deps.invokeCap({
10521
+ deviceId,
10522
+ cap: step.cap,
10523
+ method: step.method,
10524
+ args
10525
+ });
10526
+ }
10527
+ }
10528
+ };
10529
+ });
10530
+ }
10531
+ //#endregion
10532
+ //#region src/capabilities/addon-pages.cap.ts
10533
+ /**
10534
+ * `addon-pages` — system-scoped singleton aggregator cap. Public-facing
10535
+ * surface that admin-ui consumes through `useAddonPagesListPages()`.
10536
+ *
10537
+ * The provider iterates every `addon-pages-source` (collection) provider
10538
+ * and emits `AddonPageInfo[]` enriched with versioned `bundleUrl` strings
10539
+ * pointing at `/api/addon-pages/<addonId>/<bundle>?v=<mtime>`. The
10540
+ * filesystem `mtime` cache-buster lets the browser pick up addon
10541
+ * rebuilds without manual reload.
10542
+ *
10543
+ * The hub-local builtin `addon-pages-aggregator` (see
10544
+ * `@camstack/system/builtins/addon-pages-aggregator`) registers the
10545
+ * provider. Splitting the public aggregator from the raw collection
10546
+ * keeps both ends in codegen — there's no hand-written
10547
+ * `addon-pages.router.ts` wrapper anymore.
10548
+ */
10549
+ var AddonPageDeclarationSchema$1 = z.object({
10550
+ id: z.string(),
10551
+ label: z.string(),
10552
+ icon: z.string(),
10553
+ path: z.string(),
10554
+ remoteName: z.string(),
10555
+ bundle: z.string(),
10556
+ section: z.string().optional(),
10557
+ sectionLabel: z.string().optional()
10558
+ });
10559
+ var AddonPageInfoSchema = z.object({
10560
+ addonId: z.string(),
10561
+ page: AddonPageDeclarationSchema$1,
10562
+ bundleUrl: z.string()
10563
+ });
10564
+ var addonPagesCapability = {
10565
+ name: "addon-pages",
10566
+ scope: "system",
10567
+ mode: "singleton",
10568
+ methods: { listPages: method(z.void(), z.array(AddonPageInfoSchema).readonly()) }
10569
+ };
10570
+ //#endregion
10571
+ //#region src/capabilities/addon-pages-source.cap.ts
10572
+ /**
10573
+ * `addon-pages-source` — collection cap exposing per-provider raw page
10574
+ * declarations. Every addon that contributes a UI page registers a
10575
+ * provider here. The hub-side singleton aggregator (`addon-pages` cap,
10576
+ * see `addon-pages.cap.ts`) walks this collection, stamps versioned
10577
+ * `bundleUrl` values, and returns the enriched `AddonPageInfo[]` list
10578
+ * that admin-ui consumes.
10579
+ *
10580
+ * The split exists because the public listing has a different output
10581
+ * shape than the per-provider raw declarations, and we want both ends
10582
+ * to flow through codegen instead of relying on a hand-written wrapper.
10583
+ */
10584
+ var AddonPageDeclarationSchema = z.object({
10585
+ id: z.string(),
10586
+ label: z.string(),
10587
+ icon: z.string(),
10588
+ path: z.string(),
10589
+ /**
10590
+ * Module Federation remote name — must match the `name` field on the
10591
+ * page addon's `federation()` plugin config. Used by admin-ui's
10592
+ * `<AddonPageLoader>` to call `loadRemote('<remoteName>/page')`.
10593
+ * Conventionally `addon_<id>_page` (snake_case; MF names cannot
10594
+ * contain hyphens).
10595
+ */
10596
+ remoteName: z.string(),
10597
+ /**
10598
+ * Bundle filename inside the addon's `dist/` dir served at
10599
+ * `/api/addon-pages/<addonId>/<bundle>`. With Module Federation this
10600
+ * is always `'remoteEntry.js'`; the value is kept on the metadata so
10601
+ * the static-file route can compute an mtime-based cache-buster URL
10602
+ * without a separate filesystem stat.
10603
+ */
10604
+ bundle: z.string(),
10605
+ /**
10606
+ * Sidebar section this page docks into. Well-known ids: `'detection'`,
10607
+ * `'cluster'`, `'administration'` — the page renders inside that group.
10608
+ * Any OTHER string creates (or joins) a custom section rendered after
10609
+ * the built-in groups; its label comes from `sectionLabel` (first
10610
+ * declaration wins), falling back to the id. Absent → the legacy
10611
+ * "Addon Pages" group.
10612
+ */
10613
+ section: z.string().optional(),
10614
+ /** Display label for a CUSTOM `section` id (ignored for well-known ids). */
10615
+ sectionLabel: z.string().optional()
10616
+ });
10617
+ var addonPagesSourceCapability = {
10618
+ name: "addon-pages-source",
10619
+ scope: "system",
10620
+ mode: "collection",
10621
+ internal: true,
10622
+ methods: {
10623
+ /**
10624
+ * `internal: true` did not gate the mount (see the 2026-08-26 note on
10625
+ * `data-store-provider`) — this was reachable on the AppRouter by ANY
10626
+ * authenticated session at the default `auth: 'protected'`. The only
10627
+ * consumer, the `addon-pages-aggregator` builtin, reads it via
10628
+ * `ctx.capabilities.getCollection('addon-pages-source')` — LOCAL-PROCESS
10629
+ * only, never tRPC (per `ctx.capabilities` seeing only the local
10630
+ * process). The public, enriched listing admin-ui actually consumes is
10631
+ * the separate `addon-pages` cap, unaffected by this change.
10632
+ */
10633
+ listPages: method(z.void(), z.array(AddonPageDeclarationSchema).readonly(), { auth: "admin" }) }
10634
+ };
10635
+ //#endregion
10636
+ //#region src/capabilities/addon-routes.cap.ts
10637
+ var AddonHttpRouteSchema = z.object({
10638
+ method: z.enum([
10639
+ "GET",
10640
+ "POST",
10641
+ "PUT",
10642
+ "DELETE",
10643
+ "PATCH"
10644
+ ]),
10645
+ path: z.string(),
10646
+ access: z.enum([
10647
+ "public",
10648
+ "authenticated",
10649
+ "admin"
10650
+ ]).optional(),
10651
+ description: z.string().optional(),
10652
+ /** The hub limits this route per client address before the handler runs. */
10653
+ rateLimit: z.enum(["auth"]).optional()
10654
+ });
10655
+ /**
10656
+ * Cross-process route invocation envelope. The hub captures the
10657
+ * request as plain data, ships it to the worker via Moleculer, and
10658
+ * the worker runs the local handler against a capturing reply. The
10659
+ * envelope returned describes what the handler intended (status,
10660
+ * headers, body, or a redirect) so the hub can translate it back to
10661
+ * the Fastify reply that's actually wired to the socket.
10662
+ */
10663
+ var InvokeRequestSchema = z.object({
10664
+ method: z.string(),
10665
+ path: z.string(),
10666
+ params: z.record(z.string(), z.string()),
10667
+ query: z.record(z.string(), z.string()),
10668
+ body: z.unknown(),
10669
+ headers: z.record(z.string(), z.string()),
10670
+ user: z.object({
10671
+ id: z.string(),
10672
+ username: z.string(),
10673
+ isAdmin: z.boolean()
10674
+ }).optional(),
10675
+ scopedToken: z.unknown().optional()
10676
+ });
10677
+ var InvokeReplyEnvelopeSchema = z.object({
10678
+ status: z.number().int(),
10679
+ headers: z.record(z.string(), z.string()),
10680
+ /** When set, the hub MUST `reply.redirect(redirectUrl)` instead of
10681
+ * sending `body`. Status defaults to 302 when this is set unless
10682
+ * the handler called `reply.code(...)` explicitly. */
10683
+ redirectUrl: z.string().nullable(),
10684
+ /** JSON-serializable body. `undefined` is treated as "no body". */
10685
+ body: z.unknown().optional(),
10686
+ /** Set when the handler called `reply.type(mime)`. */
10687
+ contentType: z.string().optional()
10688
+ });
10689
+ var addonRoutesCapability = {
10690
+ name: "addon-routes",
10691
+ scope: "system",
10692
+ mode: "collection",
10693
+ internal: true,
10694
+ methods: {
10695
+ getRoutes: method(z.void(), z.array(AddonHttpRouteSchema)),
10696
+ /**
10697
+ * Cross-process dispatch entry point. Forked addons implement this
10698
+ * (via `buildAddonRouteProvider`) so the hub's Fastify catch-all
10699
+ * can route through Moleculer when the handler lives in a worker.
10700
+ *
10701
+ * Local addons can implement it for free with the same helper;
10702
+ * the hub bypasses the wire on co-located addons.
10703
+ */
10704
+ invoke: method(InvokeRequestSchema, InvokeReplyEnvelopeSchema, { kind: "mutation" })
10705
+ },
10706
+ /** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
10707
+ mount: { kind: "skip" }
10708
+ };
10709
+ //#endregion
10710
+ //#region src/capabilities/addon-settings.cap.ts
10711
+ var ConfigTabDeclarationSchema = z.object({
10712
+ id: z.string(),
10713
+ label: z.string(),
10714
+ icon: z.string(),
10715
+ order: z.number().optional()
10716
+ });
10717
+ var ConfigSectionWithValuesSchema = z.object({
10718
+ id: z.string(),
10719
+ title: z.string(),
10720
+ titleKey: z.string().optional(),
10721
+ description: z.string().optional(),
10722
+ descriptionKey: z.string().optional(),
10723
+ style: z.enum(["card", "accordion"]).optional(),
10724
+ defaultCollapsed: z.boolean().optional(),
10725
+ columns: z.union([
10726
+ z.literal(1),
10727
+ z.literal(2),
10728
+ z.literal(3),
10729
+ z.literal(4)
10730
+ ]).optional(),
10731
+ tab: z.string().optional(),
10732
+ location: z.enum([
10733
+ "settings",
10734
+ "top-tab",
10735
+ "hero"
10736
+ ]).optional(),
10737
+ order: z.number().optional(),
10738
+ fields: z.array(z.any())
10739
+ });
10740
+ var SettingsSchemaWithValuesSchema = z.object({
10741
+ tabs: z.array(ConfigTabDeclarationSchema).optional(),
10742
+ sections: z.array(ConfigSectionWithValuesSchema)
10743
+ });
10744
+ /** Patch object — keys are field names, values are the new field values. */
10745
+ var SettingsPatchSchema = z.record(z.string(), z.unknown());
10746
+ /** Standard success response for update operations. */
10747
+ var SettingsUpdateResultSchema = z.object({ success: z.literal(true) });
10748
+ /**
10749
+ * addon-settings — singleton gateway for three-level addon settings.
10750
+ *
10751
+ * Works like `device-manager`: a single hub-side provider that resolves
10752
+ * `addonId` to the target addon and delegates the call. For hub-local
10753
+ * addons the call is direct; for remote agents it proxies via the
10754
+ * per-addon Moleculer service.
10755
+ *
10756
+ * Replaces the `$addonHost` Moleculer service. Transport transparency
10757
+ * is handled by the provider implementation — callers (admin UI, other
10758
+ * addons via `ctx.api`) never know which node hosts the target addon.
10759
+ *
10760
+ * Three levels:
10761
+ * - **addon**: addon-scoped settings (installation config, API keys, …)
10762
+ * - **global**: settings applied to all devices by default
10763
+ * - **device**: per-device overrides
10764
+ *
10765
+ * Optional `nodeId` allows explicit node targeting. When absent the
10766
+ * provider resolves the addon's host node automatically.
10767
+ */
10768
+ /**
10769
+ * `addon-settings` is a **hub-centric** cap: the hub hosts the single
10770
+ * provider, and `nodeId` in the input is data for the hub provider's
10771
+ * internal dispatcher, not a routing hint for the cap-router. See
10772
+ * `CapabilityDefinition.nodeIdMode` for the contract.
10773
+ */
10774
+ var addonSettingsCapability = {
10775
+ name: "addon-settings",
8691
10776
  scope: "system",
8692
10777
  mode: "singleton",
8693
10778
  nodeIdMode: "data",
@@ -13870,7 +15955,7 @@ async function runFanOut(calls, invoke) {
13870
15955
  //#region src/generated/history-catalog.ts
13871
15956
  /**
13872
15957
  * Cap history catalog, projected from every `*.cap.ts` `history` block.
13873
- * 42 caps with series (76 series), 33 caps answered `'none'`.
15958
+ * 42 caps with series (77 series), 33 caps answered `'none'`.
13874
15959
  * Field keys are `runtimeState` paths (`a.b` into fixed objects only).
13875
15960
  */
13876
15961
  var HISTORY_CATALOG = {
@@ -14097,6 +16182,7 @@ var HISTORY_CATALOG = {
14097
16182
  } },
14098
16183
  "pet-feeder": {
14099
16184
  "foodLevel": { kind: "gauge" },
16185
+ "bowlFood": { kind: "gauge" },
14100
16186
  "food1": { kind: "gauge" },
14101
16187
  "food2": { kind: "gauge" },
14102
16188
  "batteryPower": {
@@ -15988,7 +18074,29 @@ var coreBlocksCapability = {
15988
18074
  kind: "mutation",
15989
18075
  auth: "admin",
15990
18076
  access: "view"
15991
- })
18077
+ }),
18078
+ /**
18079
+ * An automation block reports one run (or one coalesced skip) to the hub's
18080
+ * `runs` ledger. Only the block itself may: the transport stamps
18081
+ * `callerAddonId`, and anything but `core-block-<blockId>` is refused.
18082
+ * `keepTraces` bounds the ring; `runStartedAt` moves the cooldown stamp.
18083
+ */
18084
+ reportAutomationRun: method(z.object({
18085
+ blockId: z.string().min(1),
18086
+ trace: AutomationRunTraceSchema.optional(),
18087
+ runStartedAt: z.number().optional(),
18088
+ keepTraces: z.number().int().min(1).max(100).optional()
18089
+ }), z.void(), {
18090
+ kind: "mutation",
18091
+ auth: "admin"
18092
+ }),
18093
+ /** The cooldown stamp and trace ring a block reads ONCE, at start. Owner-only. */
18094
+ getAutomationRunState: method(z.object({ blockId: z.string().min(1) }), AutomationStateDocSchema, { auth: "admin" }),
18095
+ /** An automation's run traces, newest last. The operator's read. */
18096
+ getTraces: method(z.object({ blockId: z.string().min(1) }), z.object({
18097
+ traces: z.array(AutomationRunTraceSchema),
18098
+ lastError: z.string().nullable()
18099
+ }), { auth: "admin" })
15992
18100
  }
15993
18101
  };
15994
18102
  //#endregion
@@ -44005,683 +46113,291 @@ var NotificationActionIconSchema = z.enum([
44005
46113
  "arm-night",
44006
46114
  "disarm",
44007
46115
  "light",
44008
- "alert",
44009
- "camera"
44010
- ]);
44011
- /** A single tap-through action button. */
44012
- var NotificationActionSchema = z.object({
44013
- id: z.string(),
44014
- label: z.string(),
44015
- url: z.string().optional(),
44016
- /** Dropped by the degrade engine for a kind with `caps.actionIcons: false`. */
44017
- icon: NotificationActionIconSchema.optional(),
44018
- /**
44019
- * Renders in a warning style where the notifier supports it.
44020
- *
44021
- * A HINT, never a gate. The callback's authority is its token and nothing
44022
- * else — see `notification-center/action-token.ts` for what that does and
44023
- * does not buy.
44024
- */
44025
- destructive: z.boolean().optional(),
44026
- /**
44027
- * How the tap should REACH the url.
44028
- *
44029
- * `navigate` (absent, and every button authored before this field) opens it:
44030
- * the phone leaves the notification and shows whatever the callback returns.
44031
- * That is right for a button whose answer the operator wants to read.
44032
- *
44033
- * `background` fires it as a POST and stays put. It exists for the buttons
44034
- * whose whole point is not to interrupt — "silence this for 30 minutes" is
44035
- * an answer to the notification, and being thrown into a browser tab to
44036
- * confirm it costs more attention than the notification did. A backend that
44037
- * cannot do a background call renders it as an ordinary link (the adapters
44038
- * fall back rather than dropping the button), so this is a preference, never
44039
- * a requirement.
44040
- */
44041
- mode: z.enum(["navigate", "background"]).optional()
44042
- });
44043
- /**
44044
- * The canonical notification. `body` is the only hard field (Apprise model).
44045
- * `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
44046
- * NOT a fixed severity enum — each kind declares its own `caps.levels` and
44047
- * the adapter maps this ordinal onto its native level. `level?` is an
44048
- * optional kind-native level id (`emergency`, `silent`, …) that overrides
44049
- * `priority` for that one target.
44050
- */
44051
- var NotificationSchema = z.object({
44052
- body: z.string(),
44053
- title: z.string().optional(),
44054
- format: NotificationFormatSchema.default("text"),
44055
- priority: z.number().int().min(1).max(5).default(3),
44056
- level: z.string().optional(),
44057
- attachments: z.array(AttachmentSchema).optional(),
44058
- clickUrl: z.string().optional(),
44059
- actions: z.array(NotificationActionSchema).optional(),
44060
- sound: z.string().optional(),
44061
- ttl: z.number().optional(),
44062
- tag: z.string().optional(),
44063
- deviceId: z.number().optional(),
44064
- eventId: z.string().optional(),
44065
- metadata: z.record(z.string(), z.unknown()).optional()
44066
- });
44067
- /** One declared native severity/priority level for a kind. */
44068
- var TargetKindLevelSchema = z.object({
44069
- id: z.string(),
44070
- label: z.string(),
44071
- /** Which canonical priority (1..5) this level maps to. `null` = qualitative-only. */
44072
- ordinal: z.number().int().min(1).max(5).nullable(),
44073
- flags: z.object({
44074
- critical: z.boolean().optional(),
44075
- silent: z.boolean().optional(),
44076
- noPush: z.boolean().optional()
44077
- }).optional(),
44078
- /** e.g. Pushover `emergency` requires `retry` / `expire`. */
44079
- requires: z.array(z.string()).optional(),
44080
- description: z.string().optional()
44081
- });
44082
- /** Attachment capabilities for a kind (drives the degrade engine + test panel). */
44083
- var TargetKindAttachmentsCapsSchema = z.object({
44084
- mediaTypes: z.array(AttachmentMediaTypeSchema),
44085
- mode: z.enum([
44086
- "url",
44087
- "bytes",
44088
- "both"
44089
- ]),
44090
- max: z.number().int().nonnegative(),
44091
- maxBytes: z.number().int().positive().optional()
44092
- });
44093
- /** The full capability block consulted before dispatch. */
44094
- var TargetKindCapsSchema = z.object({
44095
- attachments: TargetKindAttachmentsCapsSchema,
44096
- /** Max action buttons (0 = none). */
44097
- actions: z.number().int().nonnegative(),
44098
- /**
44099
- * Whether this kind renders a per-action ICON.
44100
- *
44101
- * `.optional()`, deliberately NOT `.default(false)`: a Zod default does not
44102
- * run on the addon cap path — three production failures in one day taught
44103
- * this repo that once. Absent is read as false by the degrade engine, which
44104
- * is the safe direction: an icon that is not rendered costs nothing, an icon
44105
- * assumed and dropped costs the operator's trust in the field.
44106
- */
44107
- actionIcons: z.boolean().optional(),
44108
- levels: z.array(TargetKindLevelSchema),
44109
- format: z.array(NotificationFormatSchema),
44110
- clickUrl: z.boolean(),
44111
- sound: z.boolean(),
44112
- ttl: z.boolean(),
44113
- bodyMaxLen: z.number().int().positive()
44114
- });
44115
- /**
44116
- * `configSchema` is a `ConfigUISchema` tree passed through to the admin
44117
- * FormBuilder. Stored as `z.unknown()` at the cap seam (mirrors
44118
- * `device-provider.getChildCreationSchema` `CreationSchemaOutputSchema`) —
44119
- * the union is large and not meant for runtime validation here; the exported
44120
- * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
44121
- */
44122
- var ConfigSchemaPassthrough$2 = z.unknown();
44123
- var TargetKindSchema = z.object({
44124
- kind: z.string(),
44125
- label: z.string(),
44126
- icon: z.string(),
44127
- /** Stamped by each provider so the concat-fanned catalog stays routable. */
44128
- addonId: z.string(),
44129
- /**
44130
- * URL of the kind's bundled BRAND icon, served by the providing addon over
44131
- * its own `addon-routes` surface (`/addon/<addonId>/icons/<kind>`). Absent
44132
- * when the addon bundles no icon for that kind — the client then falls back
44133
- * to a neutral glyph rather than rendering the raw `icon` NAME as text.
44134
- *
44135
- * Root-relative on purpose: it resolves against whatever origin serves a web
44136
- * client, and a native client joins it onto its own hub base.
44137
- *
44138
- * DECLARED here deliberately. It used to travel as an undeclared passthrough
44139
- * field that survived only because the runtime cap-router forwards provider
44140
- * output verbatim — so every consumer had to re-declare it by hand to stop
44141
- * its own Zod parse from stripping it, and the whole arrangement would have
44142
- * broken silently the moment output validation was tightened anywhere.
44143
- */
44144
- iconUrl: z.string().optional(),
44145
- /**
44146
- * Media type of {@link iconUrl} (`image/svg+xml`, `image/png`, …).
44147
- *
44148
- * The server knows this and therefore says it, because the client cannot
44149
- * safely guess: a React-Native client renders SVG and raster through two
44150
- * DIFFERENT components (`react-native-svg` vs `expo-image` — expo-image does
44151
- * not decode SVG on iOS/Android), so without this it silently fell back to a
44152
- * placeholder glyph for every vector icon while the web build looked fine.
44153
- *
44154
- * Absent when {@link iconUrl} is absent, or for a legacy provider that has
44155
- * not been updated — a client that cannot determine the type should prefer
44156
- * its raster path, which is the safe default for an unknown image.
44157
- */
44158
- iconMediaType: z.string().optional(),
44159
- configSchema: ConfigSchemaPassthrough$2,
44160
- /**
44161
- * The config keys that decide WHERE this kind's secrets are sent (server,
44162
- * base URL, instance, chat, recipient). A save that changes any of them
44163
- * while leaving a secret redacted is refused by the provider (D634), so an
44164
- * editor uses this to ask for the secret on exactly those edits instead of
44165
- * on every edit.
44166
- *
44167
- * Optional: absent from a provider that holds no secret (the Home Assistant
44168
- * kinds) and from a provider older than this field — an editor that finds
44169
- * it absent must assume ANY edit may need the secret.
44170
- */
44171
- destinationKeys: z.array(z.string()).optional(),
44172
- supportsDiscovery: z.boolean(),
44173
- caps: TargetKindCapsSchema
44174
- });
44175
- /**
44176
- * A persisted target. `config` holds secrets; providers REDACT secret fields
44177
- * (return a presence marker only) when serving `listTargets` — never
44178
- * round-trip a stored secret to the UI.
44179
- */
44180
- var TargetSchema = z.object({
44181
- id: z.string(),
44182
- name: z.string(),
44183
- kind: z.string(),
44184
- addonId: z.string(),
44185
- enabled: z.boolean(),
44186
- config: z.record(z.string(), z.unknown())
44187
- });
44188
- /** A discovery-surfaced candidate (config is partial + non-secret). */
44189
- var DiscoveredTargetSchema = z.object({
44190
- kind: z.string(),
44191
- suggestedName: z.string(),
44192
- config: z.record(z.string(), z.unknown())
44193
- });
44194
- /** The degrade engine's report — what was resolved / dropped / degraded. */
44195
- var RenderedAsSchema = z.object({
44196
- level: z.string(),
44197
- format: NotificationFormatSchema,
44198
- attachmentsSent: z.number().int().nonnegative(),
44199
- actionsSent: z.number().int().nonnegative(),
44200
- truncated: z.boolean(),
44201
- dropped: z.array(z.string())
44202
- });
44203
- var SendResultSchema = z.object({
44204
- success: z.boolean(),
44205
- error: z.string().optional(),
44206
- renderedAs: RenderedAsSchema.optional()
44207
- });
44208
- /** Same shape as SendResult — kept as a distinct name for the test panel. */
44209
- var TestResultSchema = SendResultSchema;
44210
- /**
44211
- * Pre-save credential probe against a partial (unsaved) target config.
44212
- * `resolvedUrl` never includes secrets (token stripped from path).
44213
- */
44214
- var ProbeTargetConfigResultSchema = z.object({
44215
- ok: z.boolean(),
44216
- resolvedUrl: z.string(),
44217
- httpStatus: z.number().int().optional(),
44218
- stateInstance: z.string().optional(),
44219
- error: z.string().optional()
44220
- });
44221
- var notificationOutputCapability = {
44222
- name: "notification-output",
44223
- scope: "system",
44224
- mode: "collection",
44225
- methods: {
44226
- listTargetKinds: method(z.object({}), z.array(TargetKindSchema)),
44227
- listTargets: method(z.object({}), z.array(TargetSchema), { auth: "admin" }),
44228
- /**
44229
- * One target WITH secrets — admin edit / duplicate hydration only.
44230
- * `listTargets` stays redacted; the editor loads this so password fields
44231
- * are filled (masked in the input) and a save can round-trip the token
44232
- * when a destination changes (Duplicate with a new chatId, etc.).
44233
- */
44234
- getTarget: method(z.object({ targetId: z.string() }), TargetSchema, { auth: "admin" }),
44235
- discoverTargets: method(z.object({
44236
- kind: z.string(),
44237
- config: z.record(z.string(), z.unknown()).optional(),
44238
- /**
44239
- * When editing / duplicating, the blank password field never round-trips
44240
- * the stored token. Pass the source target id so the provider can restore
44241
- * secrets server-side before dialling (same merge as upsert).
44242
- */
44243
- targetId: z.string().optional()
44244
- }), z.array(DiscoveredTargetSchema), { auth: "admin" }),
44245
- probeTargetConfig: method(z.object({
44246
- kind: z.string(),
44247
- config: z.record(z.string(), z.unknown()),
44248
- /** See `discoverTargets.targetId` — restore stored secrets for a blank password. */
44249
- targetId: z.string().optional()
44250
- }), ProbeTargetConfigResultSchema, {
44251
- kind: "mutation",
44252
- auth: "admin"
44253
- }),
44254
- send: method(z.object({
44255
- targetId: z.string(),
44256
- notification: NotificationSchema
44257
- }), SendResultSchema, {
44258
- kind: "mutation",
44259
- auth: "admin"
44260
- }),
44261
- testTarget: method(z.object({
44262
- targetId: z.string(),
44263
- sample: NotificationSchema.optional()
44264
- }), TestResultSchema, {
44265
- kind: "mutation",
44266
- auth: "admin"
44267
- }),
44268
- upsertTarget: method(z.object({
44269
- target: TargetSchema,
44270
- /**
44271
- * Duplicate flow: create a NEW target id while copying secrets from an
44272
- * existing row. The UI never holds the stored token; blank / redacted
44273
- * password fields are restored from this source (D634 still applies if
44274
- * destinations diverge without a re-typed secret).
44275
- */
44276
- cloneSecretsFrom: z.string().optional()
44277
- }), TargetSchema, {
44278
- kind: "mutation",
44279
- auth: "admin"
44280
- }),
44281
- deleteTarget: method(z.object({ targetId: z.string() }), z.void(), {
44282
- kind: "mutation",
44283
- auth: "admin"
44284
- }),
44285
- setTargetEnabled: method(z.object({
44286
- targetId: z.string(),
44287
- enabled: z.boolean()
44288
- }), z.void(), {
44289
- kind: "mutation",
44290
- auth: "admin"
44291
- })
44292
- }
44293
- };
44294
- //#endregion
44295
- //#region src/catalogs/coco-classmap.ts
44296
- var COCO_80_LABELS = [
44297
- {
44298
- id: "person",
44299
- name: "Person"
44300
- },
44301
- {
44302
- id: "bicycle",
44303
- name: "Bicycle"
44304
- },
44305
- {
44306
- id: "car",
44307
- name: "Car"
44308
- },
44309
- {
44310
- id: "motorcycle",
44311
- name: "Motorcycle"
44312
- },
44313
- {
44314
- id: "airplane",
44315
- name: "Airplane"
44316
- },
44317
- {
44318
- id: "bus",
44319
- name: "Bus"
44320
- },
44321
- {
44322
- id: "train",
44323
- name: "Train"
44324
- },
44325
- {
44326
- id: "truck",
44327
- name: "Truck"
44328
- },
44329
- {
44330
- id: "boat",
44331
- name: "Boat"
44332
- },
44333
- {
44334
- id: "traffic light",
44335
- name: "Traffic Light"
44336
- },
44337
- {
44338
- id: "fire hydrant",
44339
- name: "Fire Hydrant"
44340
- },
44341
- {
44342
- id: "stop sign",
44343
- name: "Stop Sign"
44344
- },
44345
- {
44346
- id: "parking meter",
44347
- name: "Parking Meter"
44348
- },
44349
- {
44350
- id: "bench",
44351
- name: "Bench"
44352
- },
44353
- {
44354
- id: "bird",
44355
- name: "Bird"
44356
- },
44357
- {
44358
- id: "cat",
44359
- name: "Cat"
44360
- },
44361
- {
44362
- id: "dog",
44363
- name: "Dog"
44364
- },
44365
- {
44366
- id: "horse",
44367
- name: "Horse"
44368
- },
44369
- {
44370
- id: "sheep",
44371
- name: "Sheep"
44372
- },
44373
- {
44374
- id: "cow",
44375
- name: "Cow"
44376
- },
44377
- {
44378
- id: "elephant",
44379
- name: "Elephant"
44380
- },
44381
- {
44382
- id: "bear",
44383
- name: "Bear"
44384
- },
44385
- {
44386
- id: "zebra",
44387
- name: "Zebra"
44388
- },
44389
- {
44390
- id: "giraffe",
44391
- name: "Giraffe"
44392
- },
44393
- {
44394
- id: "backpack",
44395
- name: "Backpack"
44396
- },
44397
- {
44398
- id: "umbrella",
44399
- name: "Umbrella"
44400
- },
44401
- {
44402
- id: "handbag",
44403
- name: "Handbag"
44404
- },
44405
- {
44406
- id: "tie",
44407
- name: "Tie"
44408
- },
44409
- {
44410
- id: "suitcase",
44411
- name: "Suitcase"
44412
- },
44413
- {
44414
- id: "frisbee",
44415
- name: "Frisbee"
44416
- },
44417
- {
44418
- id: "skis",
44419
- name: "Skis"
44420
- },
44421
- {
44422
- id: "snowboard",
44423
- name: "Snowboard"
44424
- },
44425
- {
44426
- id: "sports ball",
44427
- name: "Sports Ball"
44428
- },
44429
- {
44430
- id: "kite",
44431
- name: "Kite"
44432
- },
44433
- {
44434
- id: "baseball bat",
44435
- name: "Baseball Bat"
44436
- },
44437
- {
44438
- id: "baseball glove",
44439
- name: "Baseball Glove"
44440
- },
44441
- {
44442
- id: "skateboard",
44443
- name: "Skateboard"
44444
- },
44445
- {
44446
- id: "surfboard",
44447
- name: "Surfboard"
44448
- },
44449
- {
44450
- id: "tennis racket",
44451
- name: "Tennis Racket"
44452
- },
44453
- {
44454
- id: "bottle",
44455
- name: "Bottle"
44456
- },
44457
- {
44458
- id: "wine glass",
44459
- name: "Wine Glass"
44460
- },
44461
- {
44462
- id: "cup",
44463
- name: "Cup"
44464
- },
44465
- {
44466
- id: "fork",
44467
- name: "Fork"
44468
- },
44469
- {
44470
- id: "knife",
44471
- name: "Knife"
44472
- },
44473
- {
44474
- id: "spoon",
44475
- name: "Spoon"
44476
- },
44477
- {
44478
- id: "bowl",
44479
- name: "Bowl"
44480
- },
44481
- {
44482
- id: "banana",
44483
- name: "Banana"
44484
- },
44485
- {
44486
- id: "apple",
44487
- name: "Apple"
44488
- },
44489
- {
44490
- id: "sandwich",
44491
- name: "Sandwich"
44492
- },
44493
- {
44494
- id: "orange",
44495
- name: "Orange"
44496
- },
44497
- {
44498
- id: "broccoli",
44499
- name: "Broccoli"
44500
- },
44501
- {
44502
- id: "carrot",
44503
- name: "Carrot"
44504
- },
44505
- {
44506
- id: "hot dog",
44507
- name: "Hot Dog"
44508
- },
44509
- {
44510
- id: "pizza",
44511
- name: "Pizza"
44512
- },
44513
- {
44514
- id: "donut",
44515
- name: "Donut"
44516
- },
44517
- {
44518
- id: "cake",
44519
- name: "Cake"
44520
- },
44521
- {
44522
- id: "chair",
44523
- name: "Chair"
44524
- },
44525
- {
44526
- id: "couch",
44527
- name: "Couch"
44528
- },
44529
- {
44530
- id: "potted plant",
44531
- name: "Potted Plant"
44532
- },
44533
- {
44534
- id: "bed",
44535
- name: "Bed"
44536
- },
44537
- {
44538
- id: "dining table",
44539
- name: "Dining Table"
44540
- },
44541
- {
44542
- id: "toilet",
44543
- name: "Toilet"
44544
- },
44545
- {
44546
- id: "tv",
44547
- name: "TV"
44548
- },
44549
- {
44550
- id: "laptop",
44551
- name: "Laptop"
44552
- },
44553
- {
44554
- id: "mouse",
44555
- name: "Mouse"
44556
- },
44557
- {
44558
- id: "remote",
44559
- name: "Remote"
44560
- },
44561
- {
44562
- id: "keyboard",
44563
- name: "Keyboard"
44564
- },
44565
- {
44566
- id: "cell phone",
44567
- name: "Cell Phone"
44568
- },
44569
- {
44570
- id: "microwave",
44571
- name: "Microwave"
44572
- },
44573
- {
44574
- id: "oven",
44575
- name: "Oven"
44576
- },
44577
- {
44578
- id: "toaster",
44579
- name: "Toaster"
44580
- },
44581
- {
44582
- id: "sink",
44583
- name: "Sink"
44584
- },
44585
- {
44586
- id: "refrigerator",
44587
- name: "Refrigerator"
44588
- },
44589
- {
44590
- id: "book",
44591
- name: "Book"
44592
- },
44593
- {
44594
- id: "clock",
44595
- name: "Clock"
44596
- },
44597
- {
44598
- id: "vase",
44599
- name: "Vase"
44600
- },
44601
- {
44602
- id: "scissors",
44603
- name: "Scissors"
44604
- },
44605
- {
44606
- id: "teddy bear",
44607
- name: "Teddy Bear"
44608
- },
44609
- {
44610
- id: "hair drier",
44611
- name: "Hair Drier"
44612
- },
44613
- {
44614
- id: "toothbrush",
44615
- name: "Toothbrush"
44616
- }
44617
- ];
44618
- var MACRO_LABELS = [
44619
- {
44620
- id: "person",
44621
- name: "Person"
44622
- },
44623
- {
44624
- id: "vehicle",
44625
- name: "Vehicle"
44626
- },
44627
- {
44628
- id: "animal",
44629
- name: "Animal"
44630
- },
44631
- {
44632
- id: "package",
44633
- name: "Package"
44634
- }
44635
- ];
46116
+ "alert",
46117
+ "camera"
46118
+ ]);
46119
+ /** A single tap-through action button. */
46120
+ var NotificationActionSchema = z.object({
46121
+ id: z.string(),
46122
+ label: z.string(),
46123
+ url: z.string().optional(),
46124
+ /** Dropped by the degrade engine for a kind with `caps.actionIcons: false`. */
46125
+ icon: NotificationActionIconSchema.optional(),
46126
+ /**
46127
+ * Renders in a warning style where the notifier supports it.
46128
+ *
46129
+ * A HINT, never a gate. The callback's authority is its token and nothing
46130
+ * else — see `notification-center/action-token.ts` for what that does and
46131
+ * does not buy.
46132
+ */
46133
+ destructive: z.boolean().optional(),
46134
+ /**
46135
+ * How the tap should REACH the url.
46136
+ *
46137
+ * `navigate` (absent, and every button authored before this field) opens it:
46138
+ * the phone leaves the notification and shows whatever the callback returns.
46139
+ * That is right for a button whose answer the operator wants to read.
46140
+ *
46141
+ * `background` fires it as a POST and stays put. It exists for the buttons
46142
+ * whose whole point is not to interrupt — "silence this for 30 minutes" is
46143
+ * an answer to the notification, and being thrown into a browser tab to
46144
+ * confirm it costs more attention than the notification did. A backend that
46145
+ * cannot do a background call renders it as an ordinary link (the adapters
46146
+ * fall back rather than dropping the button), so this is a preference, never
46147
+ * a requirement.
46148
+ */
46149
+ mode: z.enum(["navigate", "background"]).optional()
46150
+ });
44636
46151
  /**
44637
- * The class names a per-class COUNT can ever be keyed on — the macro ids, and
44638
- * only those.
44639
- *
44640
- * `preserveOriginal: false` below is the whole reason this set exists: the
44641
- * executor maps each raw COCO label onto its macro and DROPS everything else,
44642
- * so a tracked detection's `className` is always one of {@link MACRO_LABELS}.
44643
- * Any surface that indexes counts by class name — the ZoneAnalytics occupancy
44644
- * snapshot's `byClass`, and therefore every occupancy rule — can match nothing
44645
- * else. Derived from the catalog, never hand-listed, so a new macro joins it by
44646
- * being declared once.
44647
- *
44648
- * Cost of not having it, 2026-08-12: the notification rule editor offered the
44649
- * full taxonomy for an occupancy class (occupancy is the one condition that
44650
- * does not go through the engine's macro-expanding `expandClassSelector`), two
44651
- * live rules were authored on `car`, and both counters read 0 forever.
46152
+ * The canonical notification. `body` is the only hard field (Apprise model).
46153
+ * `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
46154
+ * NOT a fixed severity enum — each kind declares its own `caps.levels` and
46155
+ * the adapter maps this ordinal onto its native level. `level?` is an
46156
+ * optional kind-native level id (`emergency`, `silent`, …) that overrides
46157
+ * `priority` for that one target.
44652
46158
  */
44653
- var DETECTION_MACRO_CLASSES = new Set(MACRO_LABELS.map((l) => l.id));
44654
- /** True when `className` is a macro the detector can actually emit (and hence a
44655
- * class a count can be keyed on) — see {@link DETECTION_MACRO_CLASSES}. */
44656
- function isDetectionMacroClass(className) {
44657
- return DETECTION_MACRO_CLASSES.has(className.trim().toLowerCase());
44658
- }
44659
- var COCO_TO_MACRO = {
44660
- mapping: {
44661
- person: "person",
44662
- bicycle: "vehicle",
44663
- car: "vehicle",
44664
- motorcycle: "vehicle",
44665
- airplane: "vehicle",
44666
- bus: "vehicle",
44667
- train: "vehicle",
44668
- truck: "vehicle",
44669
- boat: "vehicle",
44670
- bird: "animal",
44671
- cat: "animal",
44672
- dog: "animal",
44673
- horse: "animal",
44674
- sheep: "animal",
44675
- cow: "animal",
44676
- elephant: "animal",
44677
- bear: "animal",
44678
- zebra: "animal",
44679
- giraffe: "animal",
44680
- suitcase: "package",
44681
- backpack: "package",
44682
- handbag: "package"
44683
- },
44684
- preserveOriginal: false
46159
+ var NotificationSchema = z.object({
46160
+ body: z.string(),
46161
+ title: z.string().optional(),
46162
+ format: NotificationFormatSchema.default("text"),
46163
+ priority: z.number().int().min(1).max(5).default(3),
46164
+ level: z.string().optional(),
46165
+ attachments: z.array(AttachmentSchema).optional(),
46166
+ clickUrl: z.string().optional(),
46167
+ actions: z.array(NotificationActionSchema).optional(),
46168
+ sound: z.string().optional(),
46169
+ ttl: z.number().optional(),
46170
+ tag: z.string().optional(),
46171
+ deviceId: z.number().optional(),
46172
+ eventId: z.string().optional(),
46173
+ metadata: z.record(z.string(), z.unknown()).optional()
46174
+ });
46175
+ /** One declared native severity/priority level for a kind. */
46176
+ var TargetKindLevelSchema = z.object({
46177
+ id: z.string(),
46178
+ label: z.string(),
46179
+ /** Which canonical priority (1..5) this level maps to. `null` = qualitative-only. */
46180
+ ordinal: z.number().int().min(1).max(5).nullable(),
46181
+ flags: z.object({
46182
+ critical: z.boolean().optional(),
46183
+ silent: z.boolean().optional(),
46184
+ noPush: z.boolean().optional()
46185
+ }).optional(),
46186
+ /** e.g. Pushover `emergency` requires `retry` / `expire`. */
46187
+ requires: z.array(z.string()).optional(),
46188
+ description: z.string().optional()
46189
+ });
46190
+ /** Attachment capabilities for a kind (drives the degrade engine + test panel). */
46191
+ var TargetKindAttachmentsCapsSchema = z.object({
46192
+ mediaTypes: z.array(AttachmentMediaTypeSchema),
46193
+ mode: z.enum([
46194
+ "url",
46195
+ "bytes",
46196
+ "both"
46197
+ ]),
46198
+ max: z.number().int().nonnegative(),
46199
+ maxBytes: z.number().int().positive().optional()
46200
+ });
46201
+ /** The full capability block consulted before dispatch. */
46202
+ var TargetKindCapsSchema = z.object({
46203
+ attachments: TargetKindAttachmentsCapsSchema,
46204
+ /** Max action buttons (0 = none). */
46205
+ actions: z.number().int().nonnegative(),
46206
+ /**
46207
+ * Whether this kind renders a per-action ICON.
46208
+ *
46209
+ * `.optional()`, deliberately NOT `.default(false)`: a Zod default does not
46210
+ * run on the addon cap path — three production failures in one day taught
46211
+ * this repo that once. Absent is read as false by the degrade engine, which
46212
+ * is the safe direction: an icon that is not rendered costs nothing, an icon
46213
+ * assumed and dropped costs the operator's trust in the field.
46214
+ */
46215
+ actionIcons: z.boolean().optional(),
46216
+ levels: z.array(TargetKindLevelSchema),
46217
+ format: z.array(NotificationFormatSchema),
46218
+ clickUrl: z.boolean(),
46219
+ sound: z.boolean(),
46220
+ ttl: z.boolean(),
46221
+ bodyMaxLen: z.number().int().positive()
46222
+ });
46223
+ /**
46224
+ * `configSchema` is a `ConfigUISchema` tree passed through to the admin
46225
+ * FormBuilder. Stored as `z.unknown()` at the cap seam (mirrors
46226
+ * `device-provider.getChildCreationSchema` `CreationSchemaOutputSchema`) —
46227
+ * the union is large and not meant for runtime validation here; the exported
46228
+ * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
46229
+ */
46230
+ var ConfigSchemaPassthrough$2 = z.unknown();
46231
+ var TargetKindSchema = z.object({
46232
+ kind: z.string(),
46233
+ label: z.string(),
46234
+ icon: z.string(),
46235
+ /** Stamped by each provider so the concat-fanned catalog stays routable. */
46236
+ addonId: z.string(),
46237
+ /**
46238
+ * URL of the kind's bundled BRAND icon, served by the providing addon over
46239
+ * its own `addon-routes` surface (`/addon/<addonId>/icons/<kind>`). Absent
46240
+ * when the addon bundles no icon for that kind — the client then falls back
46241
+ * to a neutral glyph rather than rendering the raw `icon` NAME as text.
46242
+ *
46243
+ * Root-relative on purpose: it resolves against whatever origin serves a web
46244
+ * client, and a native client joins it onto its own hub base.
46245
+ *
46246
+ * DECLARED here deliberately. It used to travel as an undeclared passthrough
46247
+ * field that survived only because the runtime cap-router forwards provider
46248
+ * output verbatim — so every consumer had to re-declare it by hand to stop
46249
+ * its own Zod parse from stripping it, and the whole arrangement would have
46250
+ * broken silently the moment output validation was tightened anywhere.
46251
+ */
46252
+ iconUrl: z.string().optional(),
46253
+ /**
46254
+ * Media type of {@link iconUrl} (`image/svg+xml`, `image/png`, …).
46255
+ *
46256
+ * The server knows this and therefore says it, because the client cannot
46257
+ * safely guess: a React-Native client renders SVG and raster through two
46258
+ * DIFFERENT components (`react-native-svg` vs `expo-image` — expo-image does
46259
+ * not decode SVG on iOS/Android), so without this it silently fell back to a
46260
+ * placeholder glyph for every vector icon while the web build looked fine.
46261
+ *
46262
+ * Absent when {@link iconUrl} is absent, or for a legacy provider that has
46263
+ * not been updated — a client that cannot determine the type should prefer
46264
+ * its raster path, which is the safe default for an unknown image.
46265
+ */
46266
+ iconMediaType: z.string().optional(),
46267
+ configSchema: ConfigSchemaPassthrough$2,
46268
+ /**
46269
+ * The config keys that decide WHERE this kind's secrets are sent (server,
46270
+ * base URL, instance, chat, recipient). A save that changes any of them
46271
+ * while leaving a secret redacted is refused by the provider (D634), so an
46272
+ * editor uses this to ask for the secret on exactly those edits instead of
46273
+ * on every edit.
46274
+ *
46275
+ * Optional: absent from a provider that holds no secret (the Home Assistant
46276
+ * kinds) and from a provider older than this field — an editor that finds
46277
+ * it absent must assume ANY edit may need the secret.
46278
+ */
46279
+ destinationKeys: z.array(z.string()).optional(),
46280
+ supportsDiscovery: z.boolean(),
46281
+ caps: TargetKindCapsSchema
46282
+ });
46283
+ /**
46284
+ * A persisted target. `config` holds secrets; providers REDACT secret fields
46285
+ * (return a presence marker only) when serving `listTargets` — never
46286
+ * round-trip a stored secret to the UI.
46287
+ */
46288
+ var TargetSchema = z.object({
46289
+ id: z.string(),
46290
+ name: z.string(),
46291
+ kind: z.string(),
46292
+ addonId: z.string(),
46293
+ enabled: z.boolean(),
46294
+ config: z.record(z.string(), z.unknown())
46295
+ });
46296
+ /** A discovery-surfaced candidate (config is partial + non-secret). */
46297
+ var DiscoveredTargetSchema = z.object({
46298
+ kind: z.string(),
46299
+ suggestedName: z.string(),
46300
+ config: z.record(z.string(), z.unknown())
46301
+ });
46302
+ /** The degrade engine's report — what was resolved / dropped / degraded. */
46303
+ var RenderedAsSchema = z.object({
46304
+ level: z.string(),
46305
+ format: NotificationFormatSchema,
46306
+ attachmentsSent: z.number().int().nonnegative(),
46307
+ actionsSent: z.number().int().nonnegative(),
46308
+ truncated: z.boolean(),
46309
+ dropped: z.array(z.string())
46310
+ });
46311
+ var SendResultSchema = z.object({
46312
+ success: z.boolean(),
46313
+ error: z.string().optional(),
46314
+ renderedAs: RenderedAsSchema.optional()
46315
+ });
46316
+ /** Same shape as SendResult — kept as a distinct name for the test panel. */
46317
+ var TestResultSchema = SendResultSchema;
46318
+ /**
46319
+ * Pre-save credential probe against a partial (unsaved) target config.
46320
+ * `resolvedUrl` never includes secrets (token stripped from path).
46321
+ */
46322
+ var ProbeTargetConfigResultSchema = z.object({
46323
+ ok: z.boolean(),
46324
+ resolvedUrl: z.string(),
46325
+ httpStatus: z.number().int().optional(),
46326
+ stateInstance: z.string().optional(),
46327
+ error: z.string().optional()
46328
+ });
46329
+ var notificationOutputCapability = {
46330
+ name: "notification-output",
46331
+ scope: "system",
46332
+ mode: "collection",
46333
+ methods: {
46334
+ listTargetKinds: method(z.object({}), z.array(TargetKindSchema)),
46335
+ listTargets: method(z.object({}), z.array(TargetSchema), { auth: "admin" }),
46336
+ /**
46337
+ * One target WITH secrets — admin edit / duplicate hydration only.
46338
+ * `listTargets` stays redacted; the editor loads this so password fields
46339
+ * are filled (masked in the input) and a save can round-trip the token
46340
+ * when a destination changes (Duplicate with a new chatId, etc.).
46341
+ */
46342
+ getTarget: method(z.object({ targetId: z.string() }), TargetSchema, { auth: "admin" }),
46343
+ discoverTargets: method(z.object({
46344
+ kind: z.string(),
46345
+ config: z.record(z.string(), z.unknown()).optional(),
46346
+ /**
46347
+ * When editing / duplicating, the blank password field never round-trips
46348
+ * the stored token. Pass the source target id so the provider can restore
46349
+ * secrets server-side before dialling (same merge as upsert).
46350
+ */
46351
+ targetId: z.string().optional()
46352
+ }), z.array(DiscoveredTargetSchema), { auth: "admin" }),
46353
+ probeTargetConfig: method(z.object({
46354
+ kind: z.string(),
46355
+ config: z.record(z.string(), z.unknown()),
46356
+ /** See `discoverTargets.targetId` — restore stored secrets for a blank password. */
46357
+ targetId: z.string().optional()
46358
+ }), ProbeTargetConfigResultSchema, {
46359
+ kind: "mutation",
46360
+ auth: "admin"
46361
+ }),
46362
+ send: method(z.object({
46363
+ targetId: z.string(),
46364
+ notification: NotificationSchema
46365
+ }), SendResultSchema, {
46366
+ kind: "mutation",
46367
+ auth: "admin"
46368
+ }),
46369
+ testTarget: method(z.object({
46370
+ targetId: z.string(),
46371
+ sample: NotificationSchema.optional()
46372
+ }), TestResultSchema, {
46373
+ kind: "mutation",
46374
+ auth: "admin"
46375
+ }),
46376
+ upsertTarget: method(z.object({
46377
+ target: TargetSchema,
46378
+ /**
46379
+ * Duplicate flow: create a NEW target id while copying secrets from an
46380
+ * existing row. The UI never holds the stored token; blank / redacted
46381
+ * password fields are restored from this source (D634 still applies if
46382
+ * destinations diverge without a re-typed secret).
46383
+ */
46384
+ cloneSecretsFrom: z.string().optional()
46385
+ }), TargetSchema, {
46386
+ kind: "mutation",
46387
+ auth: "admin"
46388
+ }),
46389
+ deleteTarget: method(z.object({ targetId: z.string() }), z.void(), {
46390
+ kind: "mutation",
46391
+ auth: "admin"
46392
+ }),
46393
+ setTargetEnabled: method(z.object({
46394
+ targetId: z.string(),
46395
+ enabled: z.boolean()
46396
+ }), z.void(), {
46397
+ kind: "mutation",
46398
+ auth: "admin"
46399
+ })
46400
+ }
44685
46401
  };
44686
46402
  //#endregion
44687
46403
  //#region src/catalogs/audio-classmap.ts
@@ -62627,6 +64343,152 @@ var audioMetricsCapability = {
62627
64343
  history: "none"
62628
64344
  };
62629
64345
  //#endregion
64346
+ //#region src/capabilities/action-source.cap.ts
64347
+ /**
64348
+ * action-source — an addon DECLARES runnable actions (a Home Assistant script,
64349
+ * a scene, a vendor routine) as list entries. Never as devices.
64350
+ *
64351
+ * It mirrors `notification-output`: `listActions` returns an array, so the
64352
+ * generated cap mount concat-fans it across every provider; `runAction` and
64353
+ * `stopAction` route to ONE provider by the `addonId` the generated collection
64354
+ * router extracts from the call input.
64355
+ *
64356
+ * Nobody but the `actions` surface (the core-blocks builtin) calls this cap.
64357
+ * The UI and automations talk to `actions`, which fans out here LIVE on every
64358
+ * `list` and keeps no catalog of its own (D3: no shadow registry).
64359
+ *
64360
+ * `listActions` entries carry `source: 'addon'`, `readOnly: true`, an id of
64361
+ * `<addonId>:<localId>` and an idle `status` (the provider may fill what it
64362
+ * knows). `actionId` on `runAction` / `stopAction` is the full entry id.
64363
+ */
64364
+ var actionSourceCapability = {
64365
+ name: "action-source",
64366
+ scope: "system",
64367
+ mode: "collection",
64368
+ methods: {
64369
+ listActions: method(z.object({}), z.array(ActionEntrySchema), { auth: "admin" }),
64370
+ runAction: method(z.object({
64371
+ actionId: z.string().min(1),
64372
+ variables: z.record(z.string(), ActionVariableValueSchema).optional()
64373
+ }), z.void(), {
64374
+ kind: "mutation",
64375
+ auth: "admin"
64376
+ }),
64377
+ stopAction: method(z.object({ actionId: z.string().min(1) }), z.void(), {
64378
+ kind: "mutation",
64379
+ auth: "admin"
64380
+ })
64381
+ }
64382
+ };
64383
+ //#endregion
64384
+ //#region src/capabilities/actions.cap.ts
64385
+ /**
64386
+ * actions — the ONE surface for runnable actions, for the UI and for
64387
+ * automations. Provided by the core-blocks builtin on the hub.
64388
+ *
64389
+ * An action is a LIST ENTRY, not a device (D883): either internal (cap and wait
64390
+ * steps, kept in the hub's `actions` record kind) or declared by an addon over
64391
+ * `action-source`. `list` asks every `action-source` provider LIVE and overlays
64392
+ * the run status from the hub's `runs` ledger; there is no catalog here to
64393
+ * drift (D3).
64394
+ *
64395
+ * **Permissions follow the camera, as linked devices do.** An action is linked
64396
+ * to cameras by the operator (`setLinks`, D356: nothing links itself). A
64397
+ * non-admin may `get` / `run` an action only through a camera they may see that
64398
+ * links it: they name the camera (`deviceId`, a top-level field so the scope
64399
+ * gate sees it) and the provider refuses an action that camera does not link.
64400
+ * An admin, and an in-process caller (an automation block), may run any action.
64401
+ * Every refusal is typed (`[not-linked] …`) and logged.
64402
+ *
64403
+ * A second `run` of an action that is already running is REFUSED — traced and
64404
+ * logged — never queued.
64405
+ */
64406
+ var ActionIdInput = z.object({ actionId: z.string().min(1) });
64407
+ var ActionLinksSchema = z.object({
64408
+ deviceId: z.number().int().nonnegative(),
64409
+ actionIds: z.array(z.string().min(1)).max(100)
64410
+ });
64411
+ var actionsCapability = {
64412
+ name: "actions",
64413
+ scope: "system",
64414
+ mode: "singleton",
64415
+ methods: {
64416
+ /** Every action, live from the providers, with its run status. Admin. */
64417
+ list: method(z.object({}), z.array(ActionEntrySchema), { auth: "admin" }),
64418
+ /**
64419
+ * One action. A non-admin names the camera (`deviceId`) that links it.
64420
+ * `null` when it does not exist.
64421
+ */
64422
+ get: method(z.object({
64423
+ actionId: z.string().min(1),
64424
+ deviceId: z.number().int().nonnegative().optional()
64425
+ }), z.object({ action: ActionEntrySchema.nullable() }), {
64426
+ role: "viewer",
64427
+ auth: "protected",
64428
+ kind: "query",
64429
+ caller: "required"
64430
+ }),
64431
+ /**
64432
+ * Start an action. `wait` holds the call until the run ended (an automation
64433
+ * step does); without it the call returns `started`. A non-admin names the
64434
+ * camera (`deviceId`) that links the action.
64435
+ */
64436
+ run: method(z.object({
64437
+ actionId: z.string().min(1),
64438
+ variables: z.record(z.string(), ActionVariableValueSchema).optional(),
64439
+ wait: z.boolean().optional(),
64440
+ origin: ActionRunOriginSchema.optional(),
64441
+ deviceId: z.number().int().nonnegative().optional()
64442
+ }), ActionRunResultSchema, {
64443
+ role: "viewer",
64444
+ auth: "protected",
64445
+ kind: "mutation",
64446
+ caller: "required"
64447
+ }),
64448
+ stop: method(ActionIdInput, z.void(), {
64449
+ kind: "mutation",
64450
+ auth: "admin"
64451
+ }),
64452
+ getTraces: method(ActionIdInput, z.object({ traces: z.array(AutomationRunTraceSchema) }), { auth: "admin" }),
64453
+ /** Internal actions only. A read-only (addon) entry is refused with `[read-only]`. */
64454
+ create: method(z.object({ action: ActionInputSchema }), z.object({ action: ActionEntrySchema }), {
64455
+ kind: "mutation",
64456
+ auth: "admin"
64457
+ }),
64458
+ update: method(z.object({
64459
+ actionId: z.string().min(1),
64460
+ action: ActionInputSchema.partial()
64461
+ }), z.object({ action: ActionEntrySchema }), {
64462
+ kind: "mutation",
64463
+ auth: "admin"
64464
+ }),
64465
+ delete: method(ActionIdInput, z.void(), {
64466
+ kind: "mutation",
64467
+ auth: "admin"
64468
+ }),
64469
+ /**
64470
+ * What a viewer sees under a camera: the actions this camera LINKS, with
64471
+ * their variables, and only when the caller may see the camera. The scope
64472
+ * gate admits the camera; the answer is cut to the linked ones.
64473
+ */
64474
+ listForCamera: method(z.object({ deviceId: z.number().int().nonnegative() }), z.array(ActionEntrySchema), {
64475
+ role: "viewer",
64476
+ auth: "protected",
64477
+ kind: "query"
64478
+ }),
64479
+ /** The actions a camera links. Admin (the picker). */
64480
+ getLinks: method(z.object({ deviceId: z.number().int().nonnegative() }), ActionLinksSchema, { auth: "admin" }),
64481
+ /** Replace a camera's linked actions with what the operator picked. */
64482
+ setLinks: method(ActionLinksSchema, ActionLinksSchema, {
64483
+ kind: "mutation",
64484
+ auth: "admin"
64485
+ })
64486
+ },
64487
+ events: {
64488
+ /** A run started or ended. Telemetry (D8): `list` is the authority. */
64489
+ onRunChanged: { data: ActionRunChangedSchema } }
64490
+ };
64491
+ //#endregion
62630
64492
  //#region src/capabilities/automation-control.cap.ts
62631
64493
  /**
62632
64494
  * Automation-control cap. Models HA `automation.*` entities on
@@ -70221,10 +72083,20 @@ var PetFeederDeviceStatusSchema = z.enum([
70221
72083
  ]);
70222
72084
  var gramsPortion = z.number().int().min(4).max(200);
70223
72085
  var PetFeederStatusSchema = z.object({
70224
- /** Food currently in the bowl (grams). Null when the device has not
70225
- * reported a reading yet. On dual-hopper models this is the combined
70226
- * bowl reading; per-hopper levels live in `food1`/`food2`. */
72086
+ /** Food in the TANK (hopper), as the feeder's own sensor reports it
72087
+ * (`state.food`). A coarse level code, not grams — `0` is empty. The
72088
+ * amount in the bowl is `bowlFood`. On dual-hopper models this is the
72089
+ * combined reading; per-hopper levels live in `food1`/`food2`. Null when
72090
+ * the device has not reported yet. */
70227
72091
  foodLevel: z.number().nullable().meta(readingMeta("none")),
72092
+ /** Food in the BOWL as the feeder reports it (`state.bowl`), in the
72093
+ * feeder's own units. Null when the model reports none. */
72094
+ bowlFood: z.number().nullable().meta(readingMeta("none")),
72095
+ /** True while the pet is eating (`state.eating`). */
72096
+ eating: z.boolean(),
72097
+ /** Whether `markFoodReplenished` does anything on this model. When false
72098
+ * the client must not offer it. */
72099
+ supportsMarkRefilled: z.boolean(),
70228
72100
  /** Hopper-1 food level (grams) on dual-hopper feeders; null on
70229
72101
  * single-hopper models. */
70230
72102
  food1: z.number().nullable().meta(readingMeta("none")),
@@ -70232,8 +72104,8 @@ var PetFeederStatusSchema = z.object({
70232
72104
  * single-hopper models. */
70233
72105
  food2: z.number().nullable().meta(readingMeta("none")),
70234
72106
  /** Derived low-food flag — mirrors the HA `food_level` binary_sensor
70235
- * (`device_class: problem`, on = low). True when the bowl is empty /
70236
- * below the feeder's low threshold. */
72107
+ * (`device_class: problem`, on = low). True when the tank reports empty,
72108
+ * or, on a dual-hopper model, when EITHER hopper is empty. */
70237
72109
  lowFood: z.boolean(),
70238
72110
  /** Battery charge 0..100 (%). Null on mains-powered models or when the
70239
72111
  * device has no battery reading. */
@@ -70301,7 +72173,9 @@ var petFeederCapability = {
70301
72173
  kind: "mutation",
70302
72174
  auth: "protected"
70303
72175
  }),
70304
- /** Mark a hopper as refilled (D4H/D4S/D4SH). */
72176
+ /** Tell the PetKit cloud a hopper was refilled so it stops its low-food
72177
+ * reminders (D4H/D4S/D4SH only — see `supportsMarkRefilled`). It does not
72178
+ * change any sensor reading. */
70305
72179
  markFoodReplenished: method(z.object({ deviceId: z.number().int().nonnegative() }), z.void(), {
70306
72180
  kind: "mutation",
70307
72181
  auth: "protected"
@@ -70374,6 +72248,7 @@ var petFeederCapability = {
70374
72248
  */
70375
72249
  history: { fields: {
70376
72250
  foodLevel: { kind: "gauge" },
72251
+ bowlFood: { kind: "gauge" },
70377
72252
  food1: { kind: "gauge" },
70378
72253
  food2: { kind: "gauge" },
70379
72254
  batteryPower: {
@@ -85206,6 +87081,104 @@ var METHOD_ACCESS_MAP = Object.freeze({
85206
87081
  access: "create",
85207
87082
  role: "admin"
85208
87083
  },
87084
+ "actions.create": {
87085
+ capName: "actions",
87086
+ capScope: "system",
87087
+ addonId: null,
87088
+ access: "create",
87089
+ role: "admin"
87090
+ },
87091
+ "actions.delete": {
87092
+ capName: "actions",
87093
+ capScope: "system",
87094
+ addonId: null,
87095
+ access: "delete",
87096
+ role: "admin"
87097
+ },
87098
+ "actions.get": {
87099
+ capName: "actions",
87100
+ capScope: "system",
87101
+ addonId: null,
87102
+ access: "view",
87103
+ role: "viewer"
87104
+ },
87105
+ "actions.getLinks": {
87106
+ capName: "actions",
87107
+ capScope: "system",
87108
+ addonId: null,
87109
+ access: "view",
87110
+ role: "admin"
87111
+ },
87112
+ "actions.getTraces": {
87113
+ capName: "actions",
87114
+ capScope: "system",
87115
+ addonId: null,
87116
+ access: "view",
87117
+ role: "admin"
87118
+ },
87119
+ "actions.list": {
87120
+ capName: "actions",
87121
+ capScope: "system",
87122
+ addonId: null,
87123
+ access: "view",
87124
+ role: "admin"
87125
+ },
87126
+ "actions.listForCamera": {
87127
+ capName: "actions",
87128
+ capScope: "system",
87129
+ addonId: null,
87130
+ access: "view",
87131
+ role: "viewer"
87132
+ },
87133
+ "actions.run": {
87134
+ capName: "actions",
87135
+ capScope: "system",
87136
+ addonId: null,
87137
+ access: "create",
87138
+ role: "viewer"
87139
+ },
87140
+ "actions.setLinks": {
87141
+ capName: "actions",
87142
+ capScope: "system",
87143
+ addonId: null,
87144
+ access: "create",
87145
+ role: "admin"
87146
+ },
87147
+ "actions.stop": {
87148
+ capName: "actions",
87149
+ capScope: "system",
87150
+ addonId: null,
87151
+ access: "create",
87152
+ role: "admin"
87153
+ },
87154
+ "actions.update": {
87155
+ capName: "actions",
87156
+ capScope: "system",
87157
+ addonId: null,
87158
+ access: "create",
87159
+ role: "admin"
87160
+ },
87161
+ "actionSource.listActions": {
87162
+ capName: "action-source",
87163
+ capScope: "system",
87164
+ addonId: null,
87165
+ access: "view",
87166
+ role: "admin"
87167
+ },
87168
+ "actionSource.runAction": {
87169
+ capName: "action-source",
87170
+ capScope: "system",
87171
+ addonId: null,
87172
+ access: "create",
87173
+ role: "admin"
87174
+ },
87175
+ "actionSource.stopAction": {
87176
+ capName: "action-source",
87177
+ capScope: "system",
87178
+ addonId: null,
87179
+ access: "create",
87180
+ role: "admin"
87181
+ },
85209
87182
  "addonPages.listPages": {
85210
87183
  capName: "addon-pages",
85211
87184
  capScope: "system",
@@ -86487,6 +88460,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
86487
88460
  access: "view",
86488
88461
  role: "admin"
86489
88462
  },
88463
+ "coreBlocks.getAutomationRunState": {
88464
+ capName: "core-blocks",
88465
+ capScope: "system",
88466
+ addonId: null,
88467
+ access: "view",
88468
+ role: "admin"
88469
+ },
86490
88470
  "coreBlocks.getBlockSettings": {
86491
88471
  capName: "core-blocks",
86492
88472
  capScope: "system",
@@ -86508,6 +88488,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
86508
88488
  access: "view",
86509
88489
  role: "admin"
86510
88490
  },
88491
+ "coreBlocks.getTraces": {
88492
+ capName: "core-blocks",
88493
+ capScope: "system",
88494
+ addonId: null,
88495
+ access: "view",
88496
+ role: "admin"
88497
+ },
86511
88498
  "coreBlocks.getTypeDefs": {
86512
88499
  capName: "core-blocks",
86513
88500
  capScope: "system",
@@ -86543,6 +88530,13 @@ var METHOD_ACCESS_MAP = Object.freeze({
86543
88530
  access: "create",
86544
88531
  role: "admin"
86545
88532
  },
88533
+ "coreBlocks.reportAutomationRun": {
88534
+ capName: "core-blocks",
88535
+ capScope: "system",
88536
+ addonId: null,
88537
+ access: "create",
88538
+ role: "admin"
88539
+ },
86546
88540
  "coreBlocks.restart": {
86547
88541
  capName: "core-blocks",
86548
88542
  capScope: "system",
@@ -94905,6 +96899,8 @@ var METHOD_ACCESS_MAP = Object.freeze({
94905
96899
  /** Set of all known cap names — handy for the scope picker. */
94906
96900
  var KNOWN_CAP_NAMES = [
94907
96901
  "accessories",
96902
+ "action-source",
96903
+ "actions",
94908
96904
  "addon-pages",
94909
96905
  "addon-pages-source",
94910
96906
  "addon-routes",
@@ -95190,6 +97186,8 @@ var DEVICE_CAP_NAMES = [
95190
97186
  ];
95191
97187
  /** Every cap declared as `scope: 'system'` — drives the `category:system` matcher. */
95192
97188
  var SYSTEM_CAP_NAMES = [
97189
+ "action-source",
97190
+ "actions",
95193
97191
  "addon-pages",
95194
97192
  "addon-pages-source",
95195
97193
  "addon-routes",
@@ -99088,6 +101086,8 @@ var ML = "model and training machinery — no device action";
99088
101086
  var INTERNAL = "internal plumbing between addons — never operator-facing";
99089
101087
  /** Every system-scoped cap, with why it is not a device's vocabulary. */
99090
101088
  var SYSTEM_CAP_VOCABULARY = {
101089
+ "action-source": system(INTERNAL),
101090
+ actions: system("declared actions — run from the Actions page and from the cameras that link them"),
99091
101091
  "addon-pages": system(UI_PLUMBING),
99092
101092
  "addon-pages-source": system(UI_PLUMBING),
99093
101093
  "addon-routes": system(UI_PLUMBING),
@@ -100994,6 +102994,8 @@ var CAP_NAMES_WITH_STATUS = [
100994
102994
  //#region src/generated/capability-router-map.ts
100995
102995
  var CAPABILITY_NAMES = {
100996
102996
  accessories: "accessories",
102997
+ actionSource: "action-source",
102998
+ actions: "actions",
100997
102999
  addonPages: "addon-pages",
100998
103000
  addonPagesSource: "addon-pages-source",
100999
103001
  addonRoutes: "addon-routes",
@@ -101185,6 +103187,14 @@ var CAPABILITY_ROUTER_KEYS = [
101185
103187
  key: "accessories",
101186
103188
  name: "accessories"
101187
103189
  },
103190
+ {
103191
+ key: "actionSource",
103192
+ name: "action-source"
103193
+ },
103194
+ {
103195
+ key: "actions",
103196
+ name: "actions"
103197
+ },
101188
103198
  {
101189
103199
  key: "addonPages",
101190
103200
  name: "addon-pages"
@@ -101933,6 +103943,8 @@ var CAPABILITY_ROUTER_KEYS = [
101933
103943
  */
101934
103944
  var ALL_CAPABILITY_DEFINITIONS = [
101935
103945
  accessoriesCapability,
103946
+ actionSourceCapability,
103947
+ actionsCapability,
101936
103948
  addonPagesCapability,
101937
103949
  addonPagesSourceCapability,
101938
103950
  addonRoutesCapability,
@@ -102135,6 +104147,31 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
102135
104147
  form: "single",
102136
104148
  optional: false
102137
104149
  }],
104150
+ "actions.get": [{
104151
+ name: "deviceId",
104152
+ form: "single",
104153
+ optional: true
104154
+ }],
104155
+ "actions.getLinks": [{
104156
+ name: "deviceId",
104157
+ form: "single",
104158
+ optional: false
104159
+ }],
104160
+ "actions.listForCamera": [{
104161
+ name: "deviceId",
104162
+ form: "single",
104163
+ optional: false
104164
+ }],
104165
+ "actions.run": [{
104166
+ name: "deviceId",
104167
+ form: "single",
104168
+ optional: true
104169
+ }],
104170
+ "actions.setLinks": [{
104171
+ name: "deviceId",
104172
+ form: "single",
104173
+ optional: false
104174
+ }],
102138
104175
  "addonSettings.getDeviceSettings": [{
102139
104176
  name: "deviceId",
102140
104177
  form: "single",
@@ -104906,6 +106943,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
104906
106943
  /** Cap-method paths that carry a device reference AND live on a system-scope
104907
106944
  * cap — the set the v3 device check newly reaches. */
104908
106945
  var SYSTEM_SCOPE_DEVICE_METHODS = [
106946
+ "actions.get",
106947
+ "actions.getLinks",
106948
+ "actions.listForCamera",
106949
+ "actions.run",
106950
+ "actions.setLinks",
104909
106951
  "addonSettings.getDeviceSettings",
104910
106952
  "addonSettings.updateDeviceSettings",
104911
106953
  "audioAnalyzer.attachDevice",
@@ -106120,6 +108162,20 @@ function createSystemProxy(api) {
106120
108162
  return invokeTrpcLeaf(api, capProp, method, kind, input, push);
106121
108163
  }
106122
108164
  return {
108165
+ actions: {
108166
+ list: (input) => dispatch("actions", "list", "query", input),
108167
+ stop: (input) => dispatch("actions", "stop", "mutation", input),
108168
+ getTraces: (input) => dispatch("actions", "getTraces", "query", input),
108169
+ create: (input) => dispatch("actions", "create", "mutation", input),
108170
+ update: (input) => dispatch("actions", "update", "mutation", input),
108171
+ delete: (input) => dispatch("actions", "delete", "mutation", input),
108172
+ setLinks: (input) => dispatch("actions", "setLinks", "mutation", input)
108173
+ },
108174
+ actionSource: {
108175
+ listActions: (input) => dispatch("actionSource", "listActions", "query", input),
108176
+ runAction: (input) => dispatch("actionSource", "runAction", "mutation", input),
108177
+ stopAction: (input) => dispatch("actionSource", "stopAction", "mutation", input)
108178
+ },
106123
108179
  addonPages: { listPages: (input) => dispatch("addonPages", "listPages", "query", input) },
106124
108180
  addons: {
106125
108181
  list: (input) => dispatch("addons", "list", "query", input),
@@ -106263,7 +108319,10 @@ function createSystemProxy(api) {
106263
108319
  listCompositions: (input) => dispatch("coreBlocks", "listCompositions", "query", input),
106264
108320
  getCustomization: (input) => dispatch("coreBlocks", "getCustomization", "query", input),
106265
108321
  listComposableCaps: (input) => dispatch("coreBlocks", "listComposableCaps", "query", input),
106266
- validateComposition: (input) => dispatch("coreBlocks", "validateComposition", "mutation", input)
108322
+ validateComposition: (input) => dispatch("coreBlocks", "validateComposition", "mutation", input),
108323
+ reportAutomationRun: (input) => dispatch("coreBlocks", "reportAutomationRun", "mutation", input),
108324
+ getAutomationRunState: (input) => dispatch("coreBlocks", "getAutomationRunState", "query", input),
108325
+ getTraces: (input) => dispatch("coreBlocks", "getTraces", "query", input)
106267
108326
  },
106268
108327
  decoder: {
106269
108328
  getInfo: (input) => dispatch("decoder", "getInfo", "query", input),
@@ -116838,4 +118897,4 @@ function armRemovalReconcile(opts) {
116838
118897
  return () => clearInterval(timer);
116839
118898
  }
116840
118899
  //#endregion
116841
- export { ACCESSORY_LABEL, ACCESS_ROLES, ACTIVE_CRITERIA, ACTUATOR_METHODS, ACTUATOR_TEMPLATE_IDS, ADMIN_SCOPE, AGENT_MDNS_QUERY_NAME, AGENT_MDNS_SERVICE_TYPE, AGENT_MDNS_TXT_KEYS, AGGREGATE_REDUCERS, AGGREGATE_THROUGHPUT_BY_KIND, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, ALL_METHOD_ACCESS, APPEARANCE_BIN_COUNT, APPEARANCE_BLOCKS, APPEARANCE_DESCRIPTOR_VERSION, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, APPLE_SA_TO_MACRO, APPLIANCE_DEFAULTS, APPLIANCE_EXPORT, APPLIANCE_KINDS, APPLIANCE_TEMPLATE_ID, APP_AUTH_CALLBACK_MAX_LENGTH, APP_AUTH_CALLBACK_URLS, APP_FLOW_DEFAULT_REDIRECT, APP_FLOW_REFUSAL_MESSAGES, APP_FLOW_STATE_PREFIX, APP_REFUSED_PATH, APP_START_REFUSAL_MESSAGES, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, ARITHMETIC_OPS, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_CHUNK_FORMATS, AUDIO_GRADIENT_ALPHAS, AUDIO_MACRO_LABELS, AUDIO_NOT_CLASSIFIED_REASONS, AUDIO_PRESETS, AUDIO_SCALE_EPOCH_ISO, AUDIO_SCALE_EPOCH_MS, AUTOMATIC_HUB_ADDRESS_FLAGS, AUTO_SHARE_HEADROOM, AUTO_TUNE_FAMILY, AcceleratorComputeSchema, AcceleratorKindSchema, AccessoriesStatusSchema, AccessoryKind, ActiveCriterionSchema, AddBrokerInputSchema, AddRetrainFrameFromRecordingResultSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AddonRoutesScopeSchema, AdminLinkTargetEnum, 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, AggregateReducerSchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertEpisodePayloadSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, AnalyticsLtsSeriesSchema, AppFlowPurposeSchema, AppLoginPathSchema, AppPageLangSchema, AppleFmAvailabilitySchema, AppleFmUnavailableReasonSchema, ApplianceHelperSpecSchema, ArchiveEntrySchema, ArchiveManifestSchema, ArchiveSqliteSnapshotSchema, ArchivedDebugNoteQueryInputSchema, ArchivedDebugNoteSchema, ArithmeticHelperSpecSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioAttachDeviceInputSchema, AudioAttachDeviceResultSchema, AudioChunkFormatSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioClassifyOutcomeSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioDetachDeviceResultSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AudioStreamPickSchema, AuthResultSchema, AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, AutoTuneOptionsSchema, AutoTunePhaseResultSchema, AutoTunePlanSchema, AutoTuneWarningSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationTriggerSchema, AvailableIntegrationTypeSchema, BASE_DEVICE_CAPS, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BATTERY_UNREACHABLE_AFTER_MS, BENCH_ROOT_STEP_ID, BINARY_AGGREGATES, BIRTH_DECISION_DEFAULT_LIMIT, BOOT_RECOVERY_BACKOFF_MS, BUILTIN_RESULT_KINDS, BackgroundRunRegistry, BacklightModeSchema, BackupArchiveEncryptionSchema, BackupDestinationInfoSchema, BackupEncryptionStatusSchema, BackupEntrySchema, BackupRunPhaseSchema, BackupRunSchema, BackupRunStateSchema, BackupTriggerResultSchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatchTooLargeError, BatteryStatusSchema, BinaryStatusSchema, BirthDecisionCropSourceSchema, BirthDecisionQueryInputSchema, BirthDecisionRecordSchema, BirthDecisionVerdictSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerInfoSchema as UnifiedBrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, BucketAccumulator, BulkRecordSchema, CALENDAR_PERIODS, CALLER_STAMPED_CAPABILITIES, CAMERA_SENSORS_NOT_LOADED, CAMERA_SENSORS_SETTINGS_KEY, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAMERA_TRIGGER, CAMSTACK_APP_LINK_ORIGIN, CAMSTACK_EVENT_PREFIX, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_CUSTOMIZE_CATALOG, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, CAP_RUNTIME_FIELD_UNITS, CAP_VOCABULARY, CAP_VOCABULARY_BY_NAME, CATALOG_LANGS, CLASS_MAP_MACRO_TARGETS, CLIP_BROKER_PACED_RATES, CLIP_LABEL_EVENT_FETCH_LIMIT, CLIP_PLAYBACK_OPTIONS, CLIP_REALTIME_SOURCE_RATES, CLIP_REASON_HEADER_MAX, CLIP_SEARCH_STRICTNESS, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, CLIP_STREAM_SOURCE_RATES, CLIP_STREAM_TRANSPORT_HEADER, CLIP_STRICTNESS_FACTOR, CLIP_VECTOR_INDEX_PATTERN, CLUSTER_MODEL_CHOICE_UNREADABLE_REASONS, CLUSTER_MODEL_SCOPED_STEPS, CLUSTER_MODEL_SECTION_ID, CLUSTER_STEP_SETTING_FIELDS, COCO_80_LABELS, COCO_TO_MACRO, COMPOSED_DEVICE_STABLE_ID_PREFIX, COMPOSED_ITEM_FIXED_FIELDS, COMPOSER_ADDON_ID, COMPOSER_RUNNER_ID, COMPOSITION_EVENT_CATEGORY, COMPOSITION_ITEM_ARRAY_PATH, COMPOSITION_ITEM_KEY_RE, CONNECTION_TEST_TIMEOUT_MS, CONTAINER_CHILD_PRIORITY, CORAL_DEFAULT_MODEL_ID, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CORE_ULTRA_265K_IGPU_CLOCK_MHZ, CORE_ULTRA_265K_IGPU_EU, CREDENTIAL_TOKEN_AUDIENCE, CREDENTIAL_TOKEN_KIND, CROP_CLASS_FLOORS, CROP_SUPPLY_SOURCES, CROP_SUPPLY_STEP_IDS, CUSTOMIZATION_BLOCK_NAME_PREFIX, CalendarColorSchema, CalendarEntrySchema, CalendarEventSchema, CalendarInfoSchema, CalendarListEventsInputSchema, CalendarPreferenceEntrySchema, CalendarPreferencesSchema, CalendarSetPreferenceInputSchema, CalendarSourceKindSchema, CalendarWindowSchema, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionSourceSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraOccupancySnapshotForDeviceSchema, CameraOwnMotionSchema, CameraRawLevelSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSensorAttachmentSchema, CameraSensorEntrySchema, CameraSensorModeSchema, CameraSensorRefSchema, CameraSensorsConfigSchema, CameraSensorsNotEnforcedSchema, CameraSensorsNotForwardedSchema, CameraSensorsStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CameraSwitchWarningSchema, CamstackError, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CapacityFallbackSchema, CapacitySourceSchema, CarbonMonoxideStatusSchema, CatalogFileSchema, CatalogLangSchema, ChargingStatus, ClaimOutcomeSchema, ClaimsListingSchema, CleanupDeletedDevicesResultSchema, ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipBytesOfferSchema, ClipBytesSchema, ClipExportFailureSchema, ClipModelMetaSchema, ClipPlaybackOptionsSchema, ClipPlaybackSchema, ClipSchema, ClipSearchStrictnessSchema, ClipSourceAvailabilitySchema, ClipSourceSchema, ClipStillDispositionSchema, ClipStillRefusalCodeSchema, ClipStreamAudioReasonSchema, ClipStreamAudioSchema, ClipStreamDialSchema, ClipWakeSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, ClusterModelChoiceSchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, CompleteEnrollmentInputSchema, CompleteEnrollmentOutputSchema, CompleteEnrollmentResultSchema, ComposableCapabilitiesSchema, ComposableCapabilitySchema, ComposableFieldSchema, ComposerApplyInputSchema, ComposerApplyResultSchema, ComposerBlockSchema, ComposerBlockVerdictSchema, ComposerUnreadableBlockSchema, CompositionAggregateSourceSchema, CompositionBindingSchema, CompositionBlockInputSchema, CompositionBlockStateSchema, CompositionCodeSourceSchema, CompositionCommandTargetSchema, CompositionCustomizationReadSchema, CompositionEventPlanSchema, CompositionExistingTargetSchema, CompositionExpressionSourceSchema, CompositionFeatureModeSchema, CompositionFeaturePlanSchema, CompositionFeatureSchema, CompositionFieldItemSchema, CompositionFieldKindSchema, CompositionFieldPlanSchema, CompositionFieldReadSchema, CompositionFieldRoleSchema, CompositionFieldSourceSchema, CompositionFieldStateKindSchema, CompositionFieldStateSchema, CompositionFieldsFeatureSchema, CompositionForwardCommandSchema, CompositionFromSourceSchema, CompositionGetReadSchema, CompositionGraphError, CompositionItemEntrySchema, CompositionListReadSchema, CompositionLiteralBindingSchema, CompositionNewTargetSchema, CompositionPassthroughFeatureSchema, CompositionProblemCodeSchema, CompositionProblemSchema, CompositionRunStatusSchema, CompositionSchema, CompositionSeriesSourceSchema, CompositionSourceRefSchema, CompositionStateReadSchema, CompositionTargetSchema, CompositionUnavailableModeSchema, CompositionValidationSchema, CompositionViewSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableFormSchema, ConsumableItemSchema, ConsumableKindSchema, ConsumableLevelSchema, ConsumableRemainingKindSchema, ConsumableRemainingSchema, ConsumableStatusSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileInputSchema, CoreBlockCompileResultSchema, CoreBlockFilesSchema, CoreBlockInputFieldsSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockSourceSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateIntegrationInputSchema, CreateUserInputSchema, CredentialScopeSchema, CredentialTokenClaimsSchema, CustomActionInputSchema, CustomModelDescriptorSchema, CustomizeAssignmentStatusSchema, DATABASE_SNAPSHOT_PARTIAL_SUFFIX, DATABASE_SNAPSHOT_SUFFIX, DATABASE_SNAPSHOT_TIMEOUT_MS, DATAPLANE_SECRET_HEADER, DATA_STORE_DATABASES, DAYS_PER_WEEK, DAY_MS, DAY_NAMES, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_CAMERA_FPS, DEFAULT_CAMERA_SENSOR_MODE, DEFAULT_CATALOG_LANG, DEFAULT_CLUSTER_STEP_MODELS, DEFAULT_CLUSTER_STEP_SETTINGS, DEFAULT_CORE_BLOCK_ENTRY, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_DISPLAY_PREFERENCE, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, DEFAULT_HEADROOM, DEFAULT_HISTORY_RETENTION, DEFAULT_MIN_LANDMARK_FACE_SIZE_PX, DEFAULT_MIN_SESSIONS_PER_DEVICE, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_OVERLAY_LAYERS, DEFAULT_POOL_MEMORY_POLICY, DEFAULT_RECORDING_PROFILES, DEFAULT_RETENTION, DEFAULT_RUNTIME_STATE_DURABILITY, DEFAULT_SESSION_PLACEMENT_POLICY, DEFAULT_SHARE_SOURCE, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DEFAULT_TOKEN_EXPIRY, DEFAULT_VIEWER_SCOPE, DEFINITIVE_DEVICE_REFUSALS, DERIVATIVE_UNITS, DERIVED_CAMERA_SILENCED_CAP_NAMES, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_MACRO_CLASSES, DETECTION_PIPELINE_CAP_NAME, DETECTOR_ACCURACY, DETECTOR_PERF, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_CERT_VALIDITY_DAYS, DEVICE_CHILDREN_BATCH_MAX, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_DO_ACTIONS, DEVICE_ENROLLMENT_TTL_MS, DEVICE_HISTORY_ENERGY_KEY, DEVICE_HISTORY_ORPHAN_DELETE_MAX, DEVICE_HISTORY_ORPHAN_LIST_MAX, DEVICE_HISTORY_QUERY_MANY_MAX_ITEMS, DEVICE_NONCE_TTL_MS, DEVICE_PROFILES, DEVICE_RAMP, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_RESTORE_RETRY_CONCURRENCY, DEVICE_RESTORE_RETRY_DELAYS_MS, DEVICE_SAN_CREDENTIAL_PREFIX, DEVICE_SAN_USER_PREFIX, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_SIGNATURE_MESSAGE_VERSION, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TOMBSTONE_RETENTION_MS, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_DO_CAPS, DEVICE_TYPE_INFO, DISPLAY_PREFERENCES, DISPLAY_PRESETS, DOORBELL_RISE_DEBOUNCE_MS, DataStoreDatabaseSchema, EngineInfoSchema as DataStoreEngineInfoSchema, DatabaseSnapshotRequestSchema, DatabaseSnapshotResultSchema, DatabaseSnapshotTableSchema, DatabaseSnapshotTargetsSchema, DatabaseSnapshotWrittenSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclarationRefusedError, DeclareCollectionInputSchema, DeclareKindResultSchema, DeclaredDevices, DecodedAudioChunkSchema, DeleteIntegrationResultSchema, DerivativeHelperSpecSchema, DetailCropConventionSchema, DetectionCatalogClassMapSchema, DetectionSourceSchema, DetectionSourcesSchema, DeviceAdminLinkSchema, DeviceCaStatusSchema, DeviceCertificateLoginMethodSchema, DeviceCertificateSettingsSchema, DeviceChallengeResultSchema, DeviceChallengeSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceCredentialSchema, DeviceCredentialStatusSchema, DeviceDataEntrySchema, DeviceDiscoveryStatusSchema, DeviceEnrollProofSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceHistoryKindSchema, DeviceHistoryOrphanDeleteRefusalSchema, DeviceHistoryOrphanReasonSchema, DeviceHistoryProducerKindSchema, DeviceHistoryRefusalReasonSchema, DeviceHistoryResolutionSchema, DeviceHistoryStatusSchema, DeviceHistorySubjectSchema, DeviceInfoSchema, DeviceModelChoiceSchema, DeviceNetworkStatsSchema, DevicePlatformSchema, DeviceProofInputSchema, DeviceRecommendationSchema, DeviceRefusalReasonSchema, DeviceRefusalSchema, DeviceRemovedInputSchema, DeviceRemovedResultSchema, DeviceRestoreRetryScheduler, DeviceRole, DeviceRuntimeState, DeviceSelectorSchema, DeviceSignaturePurposeSchema, DeviceStatusSchema, DeviceTombstoneSchema, DeviceType, DiagnosticIdSchema, DiagnosticWindowPatchSchema, DiagnosticWindowSchema, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DishwasherAccessSchema, DishwasherAvailabilitySchema, DishwasherOperationStateSchema, DishwasherOptionDescriptorSchema, DishwasherOptionsSchema, DishwasherProgramSchema, DishwasherStateSchema, DishwasherStatusSchema, DishwasherValueSchema, DiskReconcileJobSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EMBEDDING_MODEL_FAILED, EMBEDDING_REQUIREMENTS_FAILED, EMBEDDING_REQUIREMENTS_UNAVAILABLE, ESTIMATE_COMPUTE_RATIO_MAX, ESTIMATE_COMPUTE_RATIO_MIN, EVENTFUL_CAP_NAMES, EVENT_DENSITY_BATCH_MAX, EVENT_KIND_BY_CAP, EVENT_KIND_LABELS, EVENT_KIND_LABEL_KEYS, EVENT_OWNER_TYPES, EVENT_PAD_MS, EVENT_TAXONOMY, EXPORT_DENSE_MAX_RANGES, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EXPRESSION_OUTPUTS, EXTENSION_HOST_DEVICE_TYPES, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EXTENSION_SLOT_LISTING_METHOD, EXTENSION_SLOT_REF_SEPARATOR, EffectiveDeviceShareSchema, EffectiveNodeShareSchema, EffectiveSharesSchema, EffectiveTuningSchema, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingFailedModelSchema, EmbeddingFailedRequirementSchema, EmbeddingInfoSchema, EmbeddingRefusalCodeSchema, EmbeddingResultSchema, EmbeddingTowerSchema, EncodeProfileSchema, EnrichedWidgetMetadataSchema, EnrollSelfInputSchema, EntryDescriptorSchema, EntryKindInfoSchema, EntryViewSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, ErrorCodeSchema, ErrorI18nPayloadSchema, EventCategory, EventDensityBucketSchema, EventDensityForDeviceSchema, EventEmitterStatusSchema, EventFireSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventOwnerTypeSchema, EventSourceType, ExportBytesSchema, ExportClipSubjectSchema, ExportDenseRangeSchema, ExportDenseSchema, ExportDownloadSchema, ExportFootageSubjectSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportSubjectSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionHelperSpecSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, ExtensionCandidateSchema, ExtensionCandidatesSchema, ExtensionSetResultSchema, ExtensionSetSlotInputSchema, ExtensionSlotActivationSchema, ExtensionSlotIdSchema, ExtensionSlotRefInputSchema, ExtensionSlotRowSchema, ExtensionSlotSourceSchema, ExtensionSlotStateSchema, ExtensionSlotUnreachableSchema, ExtensionSlotValueSchema, ExtensionSourceAvailabilitySchema, ExtensionSourceHealthSchema, ExtensionSourceSchema, ExternalIdentityKeySchema, ExternalIdentitySchema, FACE_RESCORE_INTERVAL_FIELD, FACE_RESCORE_INTERVAL_KEY, FACE_RESCORE_INTERVAL_MIN_RUNNING, FACE_RESCORE_SECTION_ID, FAN_OUT_CONCURRENCY, FEEDER_EXAMPLE_ADDON_ID, FEEDER_EXAMPLE_HA_DEVICE_ID, FFMPEG_PATH_ENV, FIRST_LEVEL_MACRO_CLASSES, FULL_IMAGE_BBOX, FailureContributionSchema, FailureCounters, FailureReasonCountSchema, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FieldClaimModeSchema, FieldClaimSchema, FilterRequiredError, FloodStatusSchema, Fmp4BoxSplitter, ForeignSecretMarkerError, FrameHandleSchema, FrameInputSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, G711_SCALE_CORRECTION_DB, GROUP_TEMPLATES, GROUP_TEMPLATE_IDS, GasStatusSchema, GetLoggingSettingsInputSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, GridLayoutPatchSchema, GridLayoutViewSchema, GroupActiveSchema, GroupCommandResultSchema, GroupCommandsSchema, GroupHelperSpecSchema, GroupStatusSchema, GroupTemplateIdSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HISTORY_BUCKET_MS, HISTORY_CATALOG, HISTORY_DEFAULT_MIN_INTERVAL_MS, HISTORY_FAST_MS, HISTORY_ITEM_CATALOG, HISTORY_NONE_CAPS, HISTORY_SLOW_MS, HISTORY_TIERS, HISTORY_UNIT_LABELS, HOURS_PER_DAY, HOUR_MS, HUB_ADDRESS_ROLES, HUB_MDNS_QUERY_NAME, HUB_MDNS_ROLE, HUB_MDNS_SERVICE_TYPE, HUB_MDNS_TXT_KEYS, HUB_VIEWER_MOUNT, HWACCEL_OPTIONS, HardwareClassIdSchema, HealthStatusSchema, HeatingValveStatusSchema, HelperMemberSchema, HelperSpecSchema, HfModelResolutionSchema, HistoryPointSchema, HistoryResolutionEnum, HttpsLeafInfoSchema, HubAddressRoleSchema, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ICON_CATALOG_SOURCE, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, INFERENCE_DEVICE_EXCLUSION_REASONS, INITIAL_PULSE, INITIAL_SPAN, INTEGRAL_OUTPUTS, INVERTIBLE_CAPS, IconKeySchema, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, ImportModelBundleInputSchema, ImportModelBundleResultSchema, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, InstalledPackageSchema, IntegralHelperSpecSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, InvalidRecordError, KEYCHAIN_MAX_REFS_PER_CALL, KEYCHAIN_RESET_CONFIRMATION, KEYCHAIN_RESET_TRIGGER_ACTOR, KNOWN_CAP_NAMES, KWH_PER_WATT_MS, KeptReasonSchema, KeyEventSchema, KeychainAdminSecretSchema, KeychainAuditActionSchema, KeychainAuditEntrySchema, KeychainKeySourceKindSchema, KeychainKeySourceSchema, KeychainResetRecordSchema, KeychainResolveEntrySchema, KeychainResolveResultSchema, KeychainSecretMetaSchema, KeychainSecretUsageSchema, KeychainStateSchema, KeychainStatusSchema, KeychainUnavailableReasonSchema, KeychainWriteRefusedError, LABEL_SUPPLY_MACRO, LABEL_SUPPLY_STEP_IDS, LABEL_SUPPLY_VOCABULARIES, LEGACY_READ_ONLY_CONFIG_KEY, LIGHT_SHARED_CAPS, LINKED_DEVICES_SLOT, LINKED_LABEL_STEP_PREFIX, LLM_PROFILE_KIND_PATTERN, LOAD_CONTRIBUTION_ATTRIBUTIONS, LOAD_CONTRIBUTION_ROLES, LOCATION_DESCRIPTION_MAX, LOCATION_ICON_FALLBACK, LOG_CHANNEL_TICK_MS, LOG_LEVEL_RANK, LTS_SCOPE_CLASS_SEPARATOR, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LatencySourceSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LedgerWalkDeviceReportSchema, LedgerWalkInputSchema, LedgerWalkRefusalSchema, LedgerWalkReportSchema, LedgerWalkSkipCountsSchema, LedgerWalkSkipReasonSchema, LegacyStorageLocationDefaultSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LinkedDevicesSlotValueSchema, ListNodeBenchmarkResultsInputSchema, ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, LiveViewerCountSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmDownloadProgressSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmListModelsErrorCodeSchema, LlmListModelsInputSchema, LlmListModelsResultSchema, LlmModelFeaturesSchema, LlmModelInfoSchema, LlmNodeModelSchema, LlmProfileFieldSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmProviderConfigSchema, LlmProviderWidgetSchema, LlmRefusalSourceSchema, LlmRetryPolicySchema, LlmRuntimeAppleCompleteInputSchema, LlmRuntimeCancelInputSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmTimeoutDefaults, LlmUsageRollupSchema, LlmUsageSchema, LoadBalancingSharesInputSchema, LoadContributionSchema, LocateSegmentResultSchema, LocationDescriptionAssignmentSchema, LocationIconAssignmentSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogChannelApplyResultSchema, LogChannelDescriptorSchema, LogChannelGate, LogChannelLevelSchema, LogChannelRegistry, LogChannelWindowPatchSchema, LogChannelWindowSchema, LogChannelWindowStateSchema, LogEntrySchema, LogLevelSchema, LogReadCapabilitiesSchema, LogReadEntrySchema, LogReadQuerySchema, LogReadResultSchema, LogStreamEntrySchema, LoggingEffectiveSchema, LoggingExplicitSchema, LoggingLevelLayerSchema, LoggingLevelSourceSchema, LoggingScopeKindSchema, LoggingSettingsPatchSchema, LoggingSettingsStateSchema, LoginMethodContributionSchema, LoginStageEnum, LtsBucketSchema, MACRO_LABELS, MASK_EMITTING_POSTPROCESSORS, MASK_SUPPLY_STEP_IDS, MAX_ARCHIVED_DEBUG_NOTES, MAX_BIRTH_DECISION_RECORDS, MAX_BIRTH_LATENCY_PROXY_MS, MAX_CAMERA_SENSORS, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, MAX_COMPOSITION_CODE_LENGTH, MAX_COMPOSITION_FEATURES, MAX_COMPOSITION_FIELDS_PER_FEATURE, MAX_COMPOSITION_ITEMS, 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, MAX_HELPER_MEMBERS, MAX_KEYS, MAX_REASONS_PER_KEY, MAX_REQUEUED_BUCKETS_PER_SERIES, MAX_SENSOR_TRIGGER_DEVICES, MAX_TRACK_DEBUG_NOTE_LEN, MAX_TRACK_PURITIES, MAX_TRACK_RELATIONS, MEDIA_OWNER_TYPES, MEDIA_PRESENCE_OWNER_KINDS, METHOD_ACCESS_MAP, METHOD_DEVICE_SELECTORS, MINUTES_PER_DAY, MINUTE_MS, MIN_CUSTOM_MINUTES, MIN_SCRUBBED_LENGTH, MIN_SESSIONS_PER_DEVICE_RANGE, MODEL_FORMATS, MODEL_HOSTING, MODEL_PROVIDER_IDS, MOTION_CLOSE_AFTER_MS, MOTION_CROP_DISPATCH_KEY, MOTION_CROP_MAX_REGIONS, MOTION_CROP_MOTION_PAD, MOTION_CROP_TRACKED_PAD, MOTION_SOURCE_LABELS, MOTION_SPAN_TIMEOUT_MS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelExtraFileSchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileKindEnum, MediaFileRefSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MediaPresenceOwnerKindSchema, MediaRelocateModeSchema, MeshLeafInfoSchema, MeshPeerSchema, MeshStatusSchema, MeterStatusSchema, MethodAccessSchema, MigrateDeviceResultSchema, MigrateSwitchOutcomeSchema, MigrateSwitchReportSchema, ModelBundleFileSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatPrecisionSchema, ModelFormatsSchema, ModelLicenseSchema, ModelOnDiskStateSchema, ModelPinChangeSchema, ModelProviderIdSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionTriggeredBySchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, BrokerInfoSchema$1 as MqttBrokerInfoSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, N100_IGPU_CLOCK_MHZ, N100_IGPU_EU, 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_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SCENE_BUDGET_FIELD, NATIVE_LEASE_SCENE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, NAVIGATION_ACTION_CATALOG, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NC_ALARM_CONTROLLABLE_CAPS, NC_ALARM_DEFAULT_PROFILE_ID, NC_ALARM_DEFAULT_PROFILE_NAME, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, NC_ALARM_DELAY_FIELDS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_NONBLOCKING_MAX, NC_ALARM_NOTIFY_FIELDS, NC_ALARM_OPENING_EVENT_KINDS, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_DEFAULT_DELAYS, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_AUDIO_CONFIRM_HITS_DEFAULT, NC_AUDIO_CONFIRM_HITS_MAX, NC_AUDIO_CONFIRM_HITS_MIN, NC_AUDIO_CONFIRM_WINDOW_MAX_SEC, NC_AUDIO_CONFIRM_WINDOW_MIN_SEC, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, NC_AUDIO_DBFS_FLOOR, NC_AUDIO_DB_MAX, NC_AUDIO_DB_MIN, NC_AUDIO_DB_OFFERED, NC_AUDIO_DB_STEP, NC_AUDIO_DEFAULTS, NC_AUDIO_HIT_PERCENT_MAX, NC_AUDIO_HIT_PERCENT_MIN, NC_AUDIO_SAMPLING_MAX_SEC, NC_AUDIO_SAMPLING_MIN_SEC, NC_AUDIO_SEED, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BASE_CONDITION_KEYS, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CLIP_POST_ROLL_DEFAULT_SEC, NC_CLIP_PRE_ROLL_DEFAULT_SEC, NC_CLIP_RETENTION_MAX_SEC, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_DEFAULT_SNOOZE_MINUTES, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_LEGACY_SYSTEM_EVENT_KINDS, NC_MAX_PER_TRACK_IMMEDIATE, NC_MEDIA_IMAGE_MODES, NC_OCCUPANCY_DEFAULTS, NC_RULE_CLEARABLE_KEYS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_RETIRED_CLEAR_KEYS, NC_RULE_SECTIONS, NC_SENSOR_RAISED_FIELD_BY_KIND, NC_SENSOR_TRANSITION_KINDS, NC_SENSOR_TRANSITION_NEVER_FIRES_WARNING, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SERVER_PACKAGE_NAME, NC_SNOOZE_MAX_MINUTES, NC_STATE_SUMMARY_SECTION_IDS, NC_SYSTEM_DELIVERY, NC_SYSTEM_EVENT_CLASS_SPECS, NC_SYSTEM_EVENT_CONDITION_FILTER_KEYS, NC_SYSTEM_EVENT_FAMILIES, NC_SYSTEM_EVENT_FAMILY, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_FILTER_KEYS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_SYSTEM_RULE_KINDS, NC_TAXONOMY, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NC_UPDATE_EVENT_PACKAGE_NAMES, NETWORK_LINK_TYPES, NETWORK_LINK_UNKNOWN, NODE_BENCHMARK_DEFAULTS, NODE_COLOR_IDS, NO_MEASURED_CAPACITY, NUMERIC_AGGREGATES, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionOptionsSchema, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionSettingsPatchSchema, NativeObjectDetectionStatusSchema, NativeObjectGeometryEnum, NavigationActionEntrySchema, NavigationActionIdSchema, NavigationEntryKindSchema, NavigationFeaturesSchema, NavigationLightModeSchema, NavigationModeSchema, NavigationMoveCommandSchema, NavigationPointSchema, NavigationRuntimeStateSchema, NavigationStatusSchema, NcActionBindingSchema, NcAlarmBlockingEditSchema, NcAlarmBlockingSchema, NcAlarmConfigSchema, NcAlarmCreateProfileInputSchema, NcAlarmModeCoverageSchema, NcAlarmModeDelaysEditSchema, NcAlarmModeDelaysSchema, NcAlarmModeDeviceListSchema, NcAlarmNonBlockingEditSchema, NcAlarmNonBlockingSchema, NcAlarmPostTriggeredActionSchema, NcAlarmProfileIdInputSchema, NcAlarmProfileMetaSchema, NcAlarmProfilesViewSchema, NcAlarmRenameProfileInputSchema, NcAlarmSecureOnArmEditSchema, NcAlarmSecureOnArmOffSchema, NcAlarmSensorReadingSchema, NcAlarmSensorStateSchema, NcAlarmSensorsInputSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcAlarmSkipReasonSchema, NcAlarmSkippedDeviceSchema, NcAudioConditionSchema, NcClipRetentionAskSchema, NcClipRetentionPlanSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcConfirmExpectSchema, NcConfirmSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcHookBindingsSchema, NcLegacyRuleActionSequenceSchema, NcLinkedCameraModeSchema, NcMediaFrameSchema, NcMediaImageSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleClearableKeySchema, NcRuleInputSchema, NcRuleKindSchema, NcRuleLastRunSchema, NcRuleLastRunsSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcRuleUpdateInputSchema, NcSceneConditionSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSensorTransitionSchema, NcSharedSequenceInputSchema, NcSharedSequenceSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcStateSummaryPreviewRowSchema, NcStateSummaryPreviewSchema, NcStateSummaryPreviewSectionSchema, NcStateSummarySectionIdSchema, NcStateSummarySplitSchema, NcSystemEventConditionSchema, NcSystemEventDeliveryModeSchema, NcSystemEventDeliverySchema, NcSystemEventKindSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTemplateFamilySchema, NcTemplateFieldSchema, NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, NcTemplateVarContextSchema, NcTemplateVarDescriptorSchema, NcTemplateVarGroupSchema, NcTemplateVarKindSchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NetworkLinkStatusSchema, NetworkTunnelStartedDataSchema, NoCallerError, NodeBenchCellSchema, NodeBenchClipSchema, NodeBenchDeviceCellSchema, NodeBenchFingerprintSchema, NodeBenchLimitSchema, NodeBenchPipelineCellSchema, NodeBenchProgressSchema, NodeBenchRampStepSchema, NodeBenchRunnerInputSchema, NodeBenchRunnerStateSchema, NodeBenchRunnerStatusSchema, NodeBenchmarkCandidatesSchema, NodeBenchmarkDevicePlanSchema, NodeBenchmarkEndReasonSchema, NodeBenchmarkManifestSchema, NodeBenchmarkMovingCameraSchema, NodeBenchmarkPhaseSchema, NodeBenchmarkPlanSchema, NodeBenchmarkPreflightSchema, NodeBenchmarkRefusalKindSchema, NodeBenchmarkRefusalSchema, NodeBenchmarkResultSchema, NodeBenchmarkResultViewSchema, NodeBenchmarkRunSchema, NodeBenchmarkStateSchema, NodeBenchmarkStatusSchema, NodeBenchmarkStayingCameraSchema, NodeColorIdSchema, NodeDeviceChangeSchema, NodeDirectoryEntrySchema, NodeDirectorySchema, NodeHttpsStateSchema, NodeRecommendationSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OAUTH_LANDING_PATH, OAUTH_LANDING_REASONS, OBJECT_DETECTION_STEP_ID, OPERATOR_WRITTEN_STALE_MS, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OVERFLOW_REASON, OVERLAY_LAYERS, OWNER_ONLY_EVENT_CATEGORIES, OauthIntegrationDescriptorSchema, ObjectEventSchema, OccupancyBurstRefusalSchema, OccupancyLookAnswerSchema, OccupancyLookRefusalSchema, OccupancyLookRequestSchema, OidcConnectionSchema, OidcConnectionUpdateInputSchema, OnboardFieldSupportSchema, OnboardRecordTrackSchema, OnboardScheduleSupportSchema, OnboardStorageSchema, OnboardStorageVolumeSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OrphanDeviceDataSchema, OsdNamedTemplateSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, OsdTemplateBindingSchema, OsdTemplateFormatSchema, OsdTemplatePickSchema, OsdTemplateTokenKindSchema, OverrideDraftSchema, PALETTE_BACKGROUNDS, PALETTE_ENTRY_IDS, PALETTE_MIN_CONTRAST, PALETTE_MIN_DELTA_E, PALETTE_MIN_DELTA_E_MARK, PALETTE_PRESET_IDS, PEER_BYTES_CHUNK_BYTES, PEER_BYTES_MAX_OUTSTANDING, PEER_BYTES_STALL_MS, PEER_BYTES_TICKET_TTL_MS, PENDING_BLOCK_ID, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PHOENIX_780M_CU, PIPELINE_ANALYTICS_CAP_NAME, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PIPELINE_RAMP, PLUG_APPLIANCE_TYPES, PLUS_CATALOG_CLASS_FLOORS, PLUS_CATALOG_STOCK_CLASS_FLOORS, PLUS_CATALOG_TO_MACRO, PLUS_CATALOG_UNMAPPED_LABELS, PREFERENCES_MAX_DEVICE_ID_LENGTH, PREFERENCES_MAX_NAMESPACES, PREFERENCES_MAX_VALUE_BYTES, PREFERENCES_NAMESPACE_PATTERN, PREFERENCES_SELF_SCOPE, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PROVIDER_PIN_FIELD, PUBLIC_ENDPOINT_HTTP_REASON, PYTHON_SCRIPT, PackageInstallationSchema, PackageInstallationsSchema, PackageLlmVerdictSchema, PackageUpdateSchema, PackageVersionInfoSchema, PaletteRejectedError, ParkRefusalSchema, ParkTrackFrameResultSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PeerBytesTicketSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineModelFormatStatusSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PlacementDeviceStatsSchema, PlacementNodeStatsSchema, PlacementStatsInputSchema, PlacementStatsSchema, PlaintextSecretError, PolygonPointSchema, PoolMemoryWatchdog, PowerMeterStatusSchema, PrecisionGopsSchema, PreferenceDeviceIdSchema, PreferenceNamespaceSchema, PreferenceRowSchema, PreferenceValueSchema, PreferencesChangedSinceInputSchema, PreferencesChangedSinceOutputSchema, PreferencesDeleteInputSchema, PreferencesDeleteOutputSchema, PreferencesGetInputSchema, PreferencesGetOutputSchema, PreferencesPutInputSchema, PreferencesPutOutputSchema, PreferencesSelfScopeSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProbeTargetConfigResultSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderJobStateSchema, ProviderJobStatusSchema, ProviderMotionDataSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzHomePresetSchema, PtzHomeReturnSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetFunctionSchema, PtzPresetSchema, PtzStatusSchema, QUANTITY_BASE, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECALL_TIE, RECOGNITION_TYPES, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_EXPORT_MAX_READ_BYTES, RECORDING_SOURCE_CAMSTACK, RECORDING_SOURCE_CAMSTACK_ADDON, RECORDING_TIMELINE_BATCH_MAX, RECORDS_ERROR_CODES, RECORD_BATCH_MAX, RECORD_BATCH_MAX_BYTES, RECORD_CLASSES, RECORD_DATABASES, RECORD_DEFAULT_MAX_DATA_BYTES, RECORD_DELETE_BATCH, RECORD_ID_MAX_LENGTH, RECORD_MAX_DATA_BYTES, RECORD_MAX_INDEXES, RECORD_MAX_INDEX_FIELDS, RECORD_QUERY_MAX, RECORD_SECRET_COLLECTION_PREFIX, RECORD_SETTINGS_MAX_ROWS, RECORD_SWEEP_INTERVAL_MS, RECOVERY_CROP_MAX_SIDE_PX, RECOVERY_CROP_MIN_SIDE_PX, RECOVERY_CROP_PADDING_RATIO, RECOVERY_EDGE_MARGIN_PX, RECOVERY_FUSE_CONTAINMENT, RECOVERY_FUSE_IOU, RECOVERY_MAX_CROPS_PER_FRAME, RECOVERY_MAX_REGION_FRAME_FRACTION, RECOVERY_MIN_INTERVAL_MS, RECOVERY_MIN_UNCOVERED_FRACTION, RECOVERY_MOTION_MAX_AGE_MS, RECOVERY_VIEW_PX, REDACTED_SECRET, REFERENCE_COMPUTE, REFERENCE_MATCH_FRACTION, REMOVAL_RECONCILE_INTERVAL_MS, REMOVED_MODEL_IDS, REMOVE_LEAF, RESERVED_BINDING_NAMES, RESERVED_COLLECTION_SOURCES, RESET_PERIODS, RESTORED_CAP_NAMES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, REVALIDATE_AFTER_MS, ROLLING_SPANS, ROOM_EXAMPLE_MOTION_SOURCES, ROOM_EXAMPLE_TEMPERATURE_SOURCES, ROOM_OCCUPANCY_WINDOW_MS, ROOT_BUCKET_KEY, ROOT_CHILD_CONTAINMENT_MIN, ROOT_FACE_REFINE_INPUT_PX, ROOT_FACE_REFINE_SCALE, ROOT_SUPPLIABLE_STEP_IDS, RUNNING_POWER_START_DELAY_MS, RUNNING_POWER_STOP_DELAY_MS, RUNNING_POWER_THRESHOLD_WATTS, RUNNING_STATE_COLD, RUNTIME_DEFAULTS, RUNTIME_STATE_POLICY, RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS, RUNTIME_TO_FORMAT, RawSecretMigrationInputSchema, RawSecretMigrationReportSchema, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadWindowBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, ReadingQuantitySchema, RebuildObjectEmbeddingsRefusalSchema, RecentTracksPageSchema, RecentTracksQueryInput, RecommendationReasonSchema, RecordBodySchema, RecordFieldPathSchema, RecordIdSchema, RecordIndexSchema, RecordInputSchema, RecordKindDeclarationSchema, RecordKindNameSchema, RecordNotFoundError, RecordQueryInputSchema, RecordQueryResultSchema, RecordRetentionSchema, RecordSecretRefsSchema, RecordSecretUnavailableError, RecordTooLargeError, RecordTransactOpSchema, RecordTriggerSchema, RecordUniqueViolationError, RecordViewSchema, RecordWhereSchema, RecordWindowSchema, RecordingAvailabilityForDeviceSchema, RecordingAvailabilitySchema, RecordingBandAudioSchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysForDeviceSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingObjectTriggerClassSchema, RecordingOnboardOptionsSchema, RecordingOnboardPatchSchema, RecordingOnboardStatusSchema, RecordingPlaybackSchema, RecordingRangeSchema, RecordingReadSchema, RecordingRebalanceInputSchema, RecordingRebalanceMoveSchema, RecordingRebalancePlanSchema, RecordingRebalanceSkipReasonSchema, RecordingRebalanceSkipSchema, RecordingRetentionSchema, RecordingSignalRuntimeStateSchema, RecordingSignalStatusSchema, RecordingSourceAvailabilitySchema, RecordingSourceOptionsSchema, RecordingSourceSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RecordsError, RedirectLoginMethodSchema, RelocatableMediaCountInputSchema, RelocatableMediaCountSchema, RelocateFootageClassSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RelocateResidueInputSchema, RelocateResidueSchema, RenderedAsSchema, RenewDeviceCertificateOutputSchema, RenewDeviceCertificateResultSchema, ReportMotionInputSchema, ReportedFailureContributionSchema, ReportedLoadContributionSchema, RequestCensusGroupSchema, RequestCensusProcedureSchema, RequestCensusSnapshotSchema, RequestCensusStatusSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainArchiveResultSchema, RetrainArchiveTargetSchema, RetrainAssistProfileSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainBoxReviewSchema, RetrainCollectionCreateResultSchema, RetrainCollectionRenameResultSchema, RetrainCollectionSchema, RetrainCopyRefusalSchema, RetrainCorpusFilterSchema, RetrainCorpusKpiCameraRowSchema, RetrainCorpusKpiSchema, RetrainCorpusPageFrameSchema, RetrainCorpusPageSchema, RetrainDatasetSelectionSchema, RetrainDatasetStatsSchema, RetrainDatasetVersionSchema, RetrainDismissedSchema, RetrainExportFilterSchema, RetrainExportLayoutSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameOriginSchema, RetrainFrameReviewSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainFrameWorkStateSchema, RetrainLlmAssistResultSchema, RetrainLlmProposalSchema, RetrainLlmReviewSchema, RetrainMacroClassSchema, RetrainOriginSchema, RetrainPipelineBoxSchema, RetrainReviewStatusSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTrainingCorpusResolveResultSchema, RetrainTrainingCorpusSelectionSchema, RetrainTransitionResultSchema, RevConflictError, RevokeOwnDeviceCertificateResultSchema, RingBuffer, RollingWindowSchema, RootStepSupplySchema, RtpSourceSchema, RtspRestreamEntrySchema, RunnerBootCheckSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, RunnerRefusalSchema, RunningStateSourceSchema, RunningStateStatusSchema, SCENE_CONDITIONS, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, SCENE_DEFAULT_ANCHOR_THRESHOLD, SCENE_DEFAULT_CHECK_INTERVAL_SEC, SCENE_DEFAULT_OBSERVATION_SPACING_SEC, SCENE_DEFAULT_QUIET_SECONDS, SCENE_DEFAULT_UNCOVERED_POLICY, SCENE_DIVERGED, SCENE_RESET_RECAPTURES, SCOPE_PRESETS, SECRET_CLEAR, SECRET_META, SECRET_REF_SCHEME, SENSOR_FEATURES, SENSOR_MAP, SERIAL_CAPACITY_CAMERA_FPS, SERIES_KINDS, SERVER_NAME_MAX_LENGTH, SERVER_NAME_SETTING_KEY, SESSION_PLACEMENT_SETTING_KEY, SHARE_AFFINITY_TOLERANCE_SESSIONS, SHARE_SOURCE_SETTING_KEY, SHARE_VIEW_KINDS, SHARE_VIEW_MAX_DEVICES, SINGLE_HUB_ADDRESS_ROLES, SOURCE_CAPS, SOURCE_CAP_ACTIVE_FIELD, SOURCE_CAP_CHANGED_AT_FIELD, SOURCE_DEVICE_TYPES, SOURCE_INFO_METADATA_KEY, SSO_STATE_COOKIE, SSO_STATE_COOKIE_MAX_AGE_SEC, STATE_LABELS, STATE_LABEL_KEYS, STATIONARY_OVERLAY_STYLE, STATISTIC_STATS, STORAGE_ACCESS_FALLBACK, STORAGE_BYTES_PER_GB, STORAGE_LOCATION_MODES, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SYSTEM_SCOPE_DEVICE_METHODS, SceneCheckSchema, SceneConditionSchema, SceneConfirmSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusForDeviceSchema, SceneMonitorStatusSchema, SceneReferenceSchema, SceneUnavailableSchema, SceneUncoveredPolicySchema, SceneVerdictSchema, ScopedTokenSchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerNameInfoSchema, ServerNameSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateOutcomeSchema, ServerUpdateStateSchema, SessionPlacementPolicySchema, SessionTriggerSchema, SetCameraSensorsInputSchema, SetLoggingSettingsInputSchema, SetShareSourceInputSchema, SetSiteLocationInputSchema, SetTrackPurityInputSchema, SetTrackPurityResultSchema, SetTrackRelationInputSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShareSourceSchema, ShareViewGrantSchema, ShareViewScopeSchema, ShareWeightsSchema, SiteLocationSchema, SiteLocationSourceSchema, SiteLocationStatusSchema, SiteZoneSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StaleDevicePinSchema, StartEmbeddedInputSchema, StartEnrollmentOutputSchema, StationaryObjectSchema, StatisticHelperSpecSchema, StatisticWindowSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, StorageAccessSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, StorageCleanupInputSchema, StorageCleanupJobSchema, StorageCleanupPhaseSchema, StorageCleanupStatusInputSchema, StorageDrainProgressSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, StorageEvictionPolicySchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageKindSchema, StorageLocationDeclarationSchema, StorageLocationModeSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, StorageMigrationClassSchema, StorageMigrationDestinationsSchema, StorageMigrationDrainInputSchema, StorageMigrationFindingCodeSchema, StorageMigrationFindingSchema, StorageMigrationFootageMoveInputSchema, StorageMigrationInputSchema, StorageMigrationJobSchema, StorageMigrationLaneSchema, StorageMigrationLeaseInputSchema, StorageMigrationMediaMoveInputSchema, StorageMigrationModeSchema, StorageMigrationMoveProgressSchema, StorageMigrationMoveSchema, StorageMigrationMoverSchema, StorageMigrationParticipantSchema, StorageMigrationPhaseSchema, StorageMigrationPlanSchema, StorageMigrationResidueSchema, StorageMigrationSourcesSchema, StorageOccupancyReportSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, StorageTableSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StoredRecordKindDeclarationSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSignalSchema, StreamSignalsStatusSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SuggestSharesInputSchema, SuggestSharesResultSchema, SuggestedDeviceShareSchema, SuggestedNodeShareSchema, SuppliedRootOutputSchema, SwitchStatusSchema, SystemHeldSecretNameSchema, SystemMetricsSchema, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TIMEZONES, TRACK_RELATIONS_DEFAULT_LIMIT, TRAINING_JOB_SCHEMA, TRAINING_RESULT_SCHEMA, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalInstanceInfoSchema, TerminalLegacyCameraSchema, TerminalOutputBatchSchema, TerminalOutputEventSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, ThresholdHelperSpecSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackPlacementSchema, TrackProjectionSchema, TrackPuritySchema, TrackPurityValueSchema, TrackRelationKindSchema, TrackRelationRefusalSchema, TrackRelationSchema, TrackSchema, TrackSideSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainerSourceRefSchema, TrainingAcceleratorRefSchema, TrainingBaseModelSchema, TrainingCanarySchema, TrainingCanaryTargetSchema, TrainingCatalogDraftSchema, TrainingCorpusSelectionSchema, TrainingCredentialCheckSchema, TrainingEvalClassSchema, TrainingEvalReportSchema, TrainingEventSchema, TrainingExportDeviceTotalsSchema, TrainingExportSchema, TrainingExportSummarySchema, TrainingFailureReasonSchema, TrainingGpuOptionSchema, TrainingJobPlanSchema, TrainingJobRequestSchema, TrainingJobSchema, TrainingJobSpecSchema, TrainingJobStateSchema, TrainingLogLineSchema, TrainingPresetSchema, TrainingProgressPointSchema, TrainingProviderDefaultsSchema, TrainingProviderDescriptorSchema, TrainingProviderEntrySchema, TrainingProviderTypeSchema, TrainingProviderUpdateEntryInputSchema, TrainingRefusalReasonSchema, TrainingRegionOptionSchema, TrainingResultFileSchema, TrainingResultSchema, TrainingSplitPlanSchema, TrainingStageSchema, TransactRefusedError, TransportPlaneCountsSchema, TransportPlaneSchema, TurnServerSchema, UNATTRIBUTED_BUCKET_KEY, UNIT_TABLE, UNLOCK_CONFIRMATION, USE_ROOT_MODEL_DEFAULTS, USE_ROOT_MODEL_SETTING_KEY, UnindexedFilterError, UninstallNodeOutcomeSchema, UninstallNodeResultSchema, UninstallPackageResultSchema, UnitConversionError, UnknownRecordKindError, UnreleasedClaimSchema, UnstampedEventMediaCountSchema, UnstampedRowsSchema, UpdateBlockerSchema, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserScopeSchema, UserSummarySchema, VECTOR_INDEX_DIM_CONFLICT, VIDEOCLIPS_MAX_OFFER_BYTES, VIDEOCLIPS_MAX_READ_BYTES, VIEWER_FEATURES, VIEWER_FEATURE_IDS, VISIT_MERGE_GAP_MS, VOCAB_TEMPLATES, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, ViewerDeviceAllowSchema, ViewerFeatureIdSchema, ViewerTokenScopeSchema, WEBRTC_CLIMB_HOLD_CODES, WEBRTC_EGRESS_PROFILE, WEBRTC_TRY_BLOCKERS, WEEKLY_MASK_LENGTH, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcClimbHoldSchema, WebrtcLadderDecisionSchema, WebrtcSessionDebugSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WebrtcTierFailureSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, WrapperActivationReadSchema, WrapperEvidenceSchema, WrapperIdentitySchema, WrapperKindSchema, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, __resetLogChannelRegistryForTests, acceleratorKindOf, accessoriesCapability, accessoryChildrenComplete, accessoryChildrenUnknown, accessoryStableId, actionsForBoundCaps, actionsForDevice, actionsForDeviceType, actionsForDevices, activateAlarmProfile, activeForReducer, actuatorMethodRow, addonCatalogHref, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advertisedHubOrigins, aggregateThroughputFactor, airQualitySensorCapability, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPanelCapability, alarmPatchLanded, alarmProfileById, alertEpisodeId, alertEpisodeKind, alertEpisodePayload, alertNodeId, alertsCapability, allDoActions, allowedSuppliedEffect, ambientLightSensorCapability, annotateClipsWithEventLabels, appFlowLocation, applianceDeviceType, applianceExport, applyBlockingEdit, applyCropClassFloors, applyModeDelaysEdits, applyModeDeviceListEdit, applyModelBoundSettings, applyNonBlockingEdit, applySecureOnArmEdit, arithmeticDraft, armRemovalReconcile, arrayItemFieldPath, asBoolean, asJsonArray, asJsonObject, asNumber, asRecordsError, asString, assertTimelapseCadences, assertTransactScope, assertValidDeclaration, assignNodeColorId, audioAnalysisCapability, audioAnalyzerCapability, audioChunkBytesPerSample, audioCodecCapability, audioIsFailClosed, audioKindId, audioLabelChoices, audioMetricsCapability, audioModeOf, audioOrDefaults, audioPlanFromEncodeProfile, audioScaleEraOf, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, baseUnitOf, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, bucketStartOf, buildAddonRouteProvider, buildAudioArgs, buildBenchStepTree, buildCapabilityLookup, buildDeviceAdminUrl, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildPlusCatalogClassMap, buildRoleScopes, buildSecretRef, buildStreamParamsConfigSchema, buildSubjectPath, buildVideoArgs, buildViewerLink, builtCapabilityBlockers, bundledCamstack, buttonCapability, calendarEventLocalSpan, calendarEventOnLocalDay, calendarSourceCapability, calendarsCapability, cameraCredentialsCapability, cameraGridLayoutCapability, cameraOwnsMotionViaSensor, cameraPipelineConfigCapability, cameraScopedStepSettings, cameraSensorRefKey, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, canonicalIconKey, canonicalizeAppCallback, capabilityScopesOf, capacityForModel, capacitySessionsOf, carbonMonoxideCapability, cellsToRects, checkRoleAddress, claimedRequestOrigins, classifyBearerPrincipal, classifyCamerasForBenchmark, classifyFieldSource, classifyInferenceHardware, classifyRetrainReview, classifySecretWrite, classifyStoreError, classifyStream, classifyStreams, clearKnownSecrets, clearModelBoundOverrides, clearModelBoundSetting, climateControlCapability, clipEventLabelDepsFromApi, clipExportFailure, clipExportFailureOf, clipLabelsForWindow, clipReasonHeaderValue, cloneAlarmSettings, cloneStatefulExpressionMemory, clusterModelSettingKey, clusterStepSettingFieldsFor, clusterStepSettingKey, codecIsAccepted, collectHydratedFieldEntries, collectHydratedFieldValues, collectKeychainStoredKeys, collectModelBoundKeys, collectSecretConfigKeys, collectSecretLeaves, collectSecretMarkerRefs, collectZodSecretPaths, colorCapability, colorForKind, commitWatchdogRestart, compareToTarget, compileExpression, compileExpressionSafe, compileHelper, compileKeyedArrayOverride, compilePulseOverride, compileScalarOverride, compileSpanOverride, composeSwitchedOff, composedDeviceRef, composedDeviceStableId, composerCapability, compositionEdges, compositionFeatureEnabled, compositionFieldKey, compositionFillStatus, compositionItemFieldPath, compositionReadKey, compositionSliceKey, compositionSourceKey, compositionSourceRefs, computeCapacityShares, computeScores, conditionDepth, conditionExclusionReason, conditionVisibleForKind, connectionTestCapability, connectivityCapability, consumableFormOf, consumableKindOf, consumableLowPercentOf, consumablesCapability, contactCapability, containingParentIndex, controlCapability, convertPresetFeature, convertUnit, convertUnitTargets, coralUsableUnits, coreBlockAddonId, coreBlockComposition, coreBlockIdFromAddonId, coreBlockSourceKind, coreBlocksCapability, cosineSimilarity, countConditionLeaves, countRecoverySkips, coverCapability, createAlarmProfile, createDeviceExtensionProvider, createDeviceProxy, createDurableState, createEvent, createEventBusSliceSource, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createLogChannelsProvider, createMirrorSource, createRecordsAccess, createRuntimeStateBridge, createSecretsAccess, createSliceHandle, createStatefulExpressionMemory, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, databaseSnapshotCapability, dayNightCapability, dayOfWeekToIndex, declarationOwnerNodeId, declarationsOf, declareLogChannel, declaredSeriesKind, decodeCompositionToCards, decodeKeyedArrayOverride, decodePulseOverride, decodeScalarOverride, decodeVectorBase64, decoderCapability, defaultDeliveryForSection, defaultDeviceFor, defineCustomActions, defineEntryKind, defineExtensionSlotProvider, defineRecordKinds, dehydrateConfigField, dehydrateSchema, deleteAlarmProfile, derivativeDraft, derivativeUnitLabel, deriveBatteryPresence, deriveCameraSwitches, deriveDetailCropRect, deriveMaskSupplies, derivePostTriggeredAction, deriveRecordingMode, deriveRootFaceRefineRect, deriveRootSupplies, describeComposableCaps, describeCustomActions, describeModelVariant, describeOnboardClamp, describeOnboardRefusal, describeRootSupplies, describeRootSupply, describeStateField, describeSystemEventDeliveryProblem, describeSystemEventFamilyProblem, describeTopLevelStateFields, detectAccessRole, detectionPipelineCapability, deviceAdminLinkCapability, deviceAdoptionCapability, deviceAttentionKind, deviceBackendToFormat, deviceCredentialsCapability, deviceCustomAction, deviceDiscoveryCapability, deviceDoFamily, deviceExportCapability, deviceExtensionCapability, deviceHistoryCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceRefusalFromMessage, deviceRemovalHookCapability, deviceSelectorMatches, deviceStateCapability, deviceStatusCapability, diffStepSettings, disarmRoseMemory, dishwasherCapability, displayPaletteCapability, displayUnitFor, doActionSelectValue, dominantClipLabels, doorbellCapability, droppedConditionsForKind, edgetpuDelegateDevice, effectiveStepSettings, egressTranscodeSharingKey, egressTransportFromRequest, electByShare, electByShareWithAffinity, eligibleUnderBenchmark, embeddingEncoderCapability, embeddingModelFailedError, embeddingModelFailedOf, embeddingRefusalOf, embeddingRequirementsFailedError, embeddingRequirementsUnavailableError, emitDownForOwnedCaps, emitReadiness, emitsCollectionSelector, encodeCardsToComposition, encodeProfileFromStreamShape, encodeVectorBase64, ensureAlarmProfiles, entryBody, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, estimateNodeBenchmarkDurationMs, evaluateAggregate, evaluateAst, evaluateCompositionField, evaluateCount, evaluateDerivative, evaluateExpressionSource, evaluatePoolMemory, evaluateRose, evaluateSensorEdge, evaluateSensorLevelEdge, evaluateStatefulExpressionCall, evaluateStatistic, evaluateZoneRules, event, eventEmitterCapability, eventKindLabel, eventOverlapsClipWindow, evictionPolicyForMode, evictionPolicyOfLocation, expandAudioChunkToF32le, expandCapMethods, expandContainer, expandSystemEventClasses, exportSubjectOf, exposeBlockDevices, expressionContainsBuiltinCall, expressionDraft, extensionSlotRef, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, failureContributionCapability, failureRate, fanControlCapability, fanOutTargets, featureFieldEntries, featureOfRole, featureProbeCapability, featureSources, feederCustomizationExample, feederExampleSources, ffmpegRate, fieldEntryToSource, fieldReads, fieldUnitKeys, fieldsPinnedAtValueBelow, filesystemBrowseCapability, findCandidateCycles, findCompositionCycles, findTimezone, floodCapability, foldSnapshotByFunction, foreignCapacityCells, forgetKnownSecret, formatDeviceRevoker, formatForRuntime, formatMediaOwnerKey, formatMinutes, formatPaletteViolations, formatParkedFor, formatReading, formatSecretScope, formulaProblem, freshResults, fuseRecoveredDetections, gasCapability, gbToBytes, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getLogChannelRegistry, getTaxonomyEntry, gifDeriveSpeed, gifFilterComplex, gifFromMp4Args, globalSecretScope, grantRowsOf, groupActiveCapability, groupCommandsCapability, groupStatusCapability, groupTemplate, hasModelBoundOverrides, hasMotionTrigger, hasUrlScheme, heatingValveCapability, helperMembers, helperSaveProblems, hfModelUrl, historyFieldsFor, historyItemFieldPath, historyUnitFor, htmlToText, hubAddressHostname, hubMotionNativeProvider, humidifierCapability, humiditySensorCapability, hydrateSchema, iconCategoryLabel, iconEntry, iconsInCategory, imageCapability, imageModesForKind, imageSettingsCapability, inferExpressionKinds, inferModelProvider, ingestReading, initialPoolMemoryState, integralCadenceMs, integralDraft, integrateReading, integrationsCapability, intercomCapability, interpolate, interpretStoredClusterModel, invalidClusterStepModelEntries, invertPresetFeature, invocationFromEncodeProfile, isAgentOnlyPlacement, isAlarmControllableCap, isAlertEpisodeOpen, isAlertEpisodeSeverity, isAppLinkBase, isAppStartRefusal, isApplianceKind, isArrayOutputSchema, isAudioChunkFormat, isAudioClassName, isAudioLabelSelected, isAudioRule, isAutomaticShareSource, isBaseConditionKey, isBatteryPresenceFault, isClusterScopedStep, isCollectionArrayMethod, isCredentialTokenPayload, isDefaultAlarmProfileId, isDefaultAppConnectionEndpoint, isDefinitiveDeviceRefusal, isDeployableToAgent, isDetectionMacroClass, isDeviceConfigCap, isDeviceScopedCap, isDoActionActuatable, isDoPickerDeviceType, isDrawableSubjectPath, isEmbeddingModelFailed, isEvent, isEventKindLabelKey, isEventOwnerType, isFirstLevelMacroClass, isHeldBackTemplateVar, isHistoryHelper, isIconKey, isIsolatedBuiltin, isKeychainStoredField, isKnownTemplateVar, isLabelSupplyStepId, isLocationEnabled, isMediaOwnerType, isModelScopedStepSettingKey, isNode, isOauthLandingReason, isObjectInput, isOccupancyRule, isOwnerOnlyEventCategory, isPlugApplianceType, isReadingQuantity, isRemovedModelId, isRestoredCap, isRetiredClearKey, isRootSuppliableStepId, isSameAddonId, isScheduleActive, isSecretClear, isSecretConfigField, isSecretFieldView, isSecretMarker, isSecretMarkerLike, isSecretRef, isSecretRefOwnedBy, isSingleHubAddressRole, isSoftwareDecode, isSourceCap, isStateLabelKey, isStatefulBuiltin, isStorageLocationMode, isSystemDelivery, isSystemEventFamily, isSystemEventRecoveryKind, isSystemEventSummaryRule, isSystemRuleKind, isUnfilledRequiredProblem, isVectorIndexDimConflict, isVoidInput, isZodSecret, ituDbfsFromPreEpoch, jobKindSchema, kebabToCamel, keychainAdminCapability, keychainCapability, kindOfValue, kindsForDiscriminator, knownSecretCount, knownValues, lawnMowerControlCapability, legacyAutoLinkIds, legacyImageMode, legacyModeOf, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, linkedLabelStepId, linkedStepOf, listBenchDetailSteps, llmCapability, llmRuntimeCapability, loadContributionCapability, localNetworkCapability, localizeConfigTree, locationIconKey, locationSimilarity, lockControlCapability, logBannerArgs, logChannelsCapability, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeInMemoryRecords, makeProfileBrokerId, makeSecretMarker, makeSourceBrokerId, mapAudioLabelToMacro, mapSecretLeaves, markFieldEdited, markdownToHtmlLite, markdownToText, maskUrlCredentials, matchDoAction, maxDurationMs, mayReadLocation, mayWriteToLocation, measuredCapacityFromResults, measuredDetectorCells, mediaPlayerCapability, memoizePinnedFfmpeg, mergeClipLabels, mergeKeyedArrayItem, mergeOverrides, mergeScalarTarget, mergeSecretStatePaths, mergeSettingsBags, mergeSourceInfo, meshNetworkCapability, meterCapability, method, methodAccessForHttpMethod, methodRefusal, methodRoleOf, metricsProviderCapability, migrateLegacyDeviceSignalConfig, minutesToTimeOfDay, modeMayRead, modeMayWrite, modelBindingKey, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, modelScopedStepSettingKeys, motionCapability, motionDetectionCapability, motionSourceLabel, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, navigationCapability, ncAlarmSystemDefaultSettings, ncMediaPolicyError, networkAccessCapability, networkLinkCapability, networkQualityCapability, nextLocalMidnight, nodeBenchmarkRefusals, nodeCertificatesCapability, nodePickerItems, nodePin, nodesCapability, normalizeAddonInitResult, normalizeAudioLabel, normalizeCoreBlockWrite, normalizeNcMediaPolicy, normalizeNodeId, normalizeOrigin, normalizeSecretOwner, normalizeTokenScopes, normalizeUnit, normalizedArea, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, oauthLandingUrl, objectInputDeclaresAddonId, objectInputDeclaresRequiredDeviceId, occupancyScope, oidcConnectionsCapability, omitTransientConfig, openReset, openStatistic, optionalAncestors, optionalMethod, osdCapability, osdManagerCapability, overlayClusterStepSettings, ownedSlice, packagePickerItems, paintHex, paletteEntryLabel, paletteFromInput, paletteFromStored, paletteLegend, paletteResultSchema, paletteSwatchSchema, parseAcceleratorFactsJson, parseAdminBase, parseAlertEpisodePayload, parseAppAuthCallback, parseAppFlowRequest, parseAppPageLang, parseCameraStreamConfig, parseColorInput, parseCredentialScopes, parseDeviceEnrollmentLink, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseMediaOwnerKey, parseOauthLandingFragment, parseOccupancyScope, parseProcStatus, parseProfileBrokerId, parseRetrainRevisionConflict, parseRuleSection, parseSecretPath, parseSecretRef, parseSecretStatePath, parseSessionPlacementPolicy, parseShareSource, parseStreamParamsFormPatch, parseTrainingEventLine, patchAudio, petFeederCapability, pickAccessoryControl, pickAppLinkHub, pickClusterStepModels, pickClusterStepSettings, pickDetailCropConvention, pickFaceRescoreIntervalMinutes, pickInvalidClusterStepModels, pickNativeLeaseOverride, pickPreferredRtspEntry, pickRequestOrigin, pickRestartCandidate, pickVideoEncoder, pickerForCondition, pickerForRuleClasses, pinUnderBenchmark, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, planComposition, planCompositionEvents, planItems, planMotionCropRegions, planMotionCrops, planRecoveryCrops, planResetTier, planStatisticTier, plateGalleryCapability, platformProbeCapability, plusCatalogDefaultClassFloors, plusCatalogLabelFields, poolMemoryThreshold, powerMeterCapability, prepareNotification, presenceCapability, presetById, pressureSensorCapability, primaryCapForRole, principalMayReachAddon, privacyMaskCapability, problemsBlockSave, procedureAuthKey, projectKeyedArrayAssignment, projectPulseAssignment, projectScalarAssignment, projectSpanAssignment, projectSubjectPath, providerMotionEvent, ptzAutotrackCapability, ptzCapability, publicEventCategories, pythonScriptForBackend, quantityFromUnit, rankStreams, readClusterStepModels, readClusterStepSettings, readDetailCropConvention, readDeviceStateFrom, readErrorI18n, readFaceRescoreIntervalMinutes, readHubMotionDetected, readHubMotionStatus, readKeyedArrayItems, readMotionTriggeredBy, readNativeLeaseOverride, readNodePin, readRecoveryRecipe, readRecoveryRecipeForSteps, readTimelapseGeneratedAt, readUseRootModel, readinessKey, readingMeta, rebootCapability, recommendNode, reconcileBlockDevices, reconcileRemovedDevices, recordArrayItemPath, recordEntriesCapability, recordSecretCollection, recordSecretRef, recordingArchiveCapability, recordingCapability, recordingExportCapability, recordingOnboardCapability, recordingSignalCapability, recordsCapability, recordsErrorFromMessage, rectsToCells, reducePoints, reducerForActive, registerKnownSecret, remapCropDetections, removeScalarTarget, renameAlarmProfile, renderVocabPhrase, replacedFieldKeys, reportIsScalable, requestMountPrefix, requiredTopLevelKeys, requiresPython, reservedSourceOwner, resetPoolBaseline, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAppConnections, resolveBucketMs, resolveCapMount, resolveClipSearchMinScore, resolveClusterStepModelId, resolveContainerPrimaryChild, resolveCoreBlockEntry, resolveCoreBlockFiles, resolveCreateExportSubject, resolveDeviceControlKind, resolveDeviceProfile, resolveEffectiveShares, resolveEgressDecodeHwAccel, resolveExportProfiles, resolveFormat, resolveHubAddressRoles, resolveHydratedFieldValue, resolveIconKey, resolveInternalAddress, resolveLatencyColumn, resolveLocationMode, resolveMethodAuth, resolveMethodRole, resolveModeDelays, resolveModeNotifyPolicy, resolveModelBoundSetting, resolveMutate, resolveNcMediaImage, resolveNotificationTapAddress, resolvePoolMemoryPolicy, resolvePublicEndpoint, resolveRecordingProfiles, resolveRootSupply, resolveRunnerId, resolveSecretMarkers, resolveSecretViewsIn, resolveServerName, resolveStreamMaps, resolveVariantModelId, resolveViewableDeviceIds, resultCellKey, resultStandings, retrainBoxIou, retrainRevisionConflictMessage, roleSpec, rollingDurationMs, roomCompositionExample, rootSuppliesOf, rootSupplyServes, ruleAutoTriggersAlarm, ruleBelongsToAlarm, ruleDeviceCompatCapNames, ruleDeviceCompatCapQueries, ruleEditorSectionsForKind, ruleGatedOnArmedState, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, ruleTriggerZoneIds, runFanOut, runInferenceStep, runningFromDishwasherOperation, runningFromLawnMower, runningFromMediaPlayer, runningFromVacuumState, runningStateCapability, runtimeDevices, runtimeFieldUnit, runtimeStatePolicyFor, sameDoFamily, sameHelperBody, sameRead, scalarTargetCount, sceneMonitorCapability, scheduleForSendTimes, schemaDeclaresAnyField, scopeInherits, scopeKey, scopesAllowAddon, scopesAllowAddonRoutes, scopesAllowDeviceCap, scopesAllowOwnPreferences, scopesGrantAdmin, scoreRuntimes, scriptRunnerCapability, scrubKnownSecrets, searchIcons, secretArrayPrefixes, secretTreeFromPaths, secretTreeFromSchema, secureActuationFor, selectAppConnectionEndpoints, selectAssignedProfileSlots, selectRecoveryStep, sendTimesForEditor, sendTimesOfSchedule, sensorRaisedOf, sensorTransitionNeverFires, sensorTransitionOffered, servedTemplateVars, serverManagementCapability, sessionsOfDeviceCell, setByPath, setFormulaExpr, setPaletteInputSchema, settingValuesEqual, settingsBelow, settingsStoreCapability, shareViewGrantOf, sharedActuatorFeatures, sharedActuatorMethods, sharedColorModes, sharedLightCaps, shortHostname, shortSecretRefHash, signalPercentFromBars, signalPercentFromRssi, siteZoneKey, sleep, sleepCancellable, sliceActiveValue, sliceChangedAt, smokeCapability, smtpProviderCapability, snapshotCapability, sourcePickForAppliance, sourcePickForHistory, sourcePickForMath, sourcePickForTemplate, splitTranslationRef, squareAround, ssoBridgeCapability, startMoverUnderClearance, startReachabilityPoll, stateLabel, stateVocabularyFor, statisticCadenceMs, statisticDraft, stepModelRunsOnFormat, stepPulse, stepSettingSource, stepSpan, storageAdminCapability, storageCapability, storageEvictableCapability, storageMigrationCapability, storageOccupancyCapability, storageProviderCapability, storedFromReady, storedPaletteSchema, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, streamSignalsCapability, stripRetiredBandPreBufferSec, strippedOfLegacyReadOnly, subKindsOf, subjectHasPath, subjectPathSampleFromBox, subjectPathSvgPoints, summarisePrivacyAudio, summarizeEffectiveScope, summarizeReview, supplyFor, supportedRuntimes, swatchHex, switchCapability, switchedOffIds, syncActiveAlarmProfileSettings, synthesizeSourceInfo, systemCapability, systemEventClassKinds, systemEventClassOf, systemEventClassesFor, systemEventDeliveryProblems, systemEventFamilyOf, systemEventFamilyProblems, systemEventFilterApplies, systemEventFilterAppliesToAnyKind, systemEventKindNamesOf, systemEventKindsOfFamily, systemEventSummaryScheduleOf, systemEventSummarySplitOf, systemFamilyOfKind, systemRuleKindOf, tamperCapability, targetFeature, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, templateCarriesSummary, templateDeviceType, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies, templateVarsFor, terminalSessionCapability, textToHtml, thresholdDraft, thresholdToBase, thresholdToDisplay, timeOfDayToMinutes, toAppLinkHubOrigin, toDeviceSummary, toExpressionValue, toNodeId, toPercentShares, toSecretFieldView, toStreamSourceEntry, toastCapability, toggleAudioLabel, tokenize, trainingCapability, trainingProviderCapability, transcodeBody, transformSecretWrite, tryConvertDelta, tryConvertUnit, turnProviderCapability, unitCompanionField, unitDimension, unitsForDimension, unreachableExtensionSlotRow, unwrapSchema, updateCapability, userError, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateComposition, validateCustomAddress, validateExpressionSource, validatePalette, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorIndexDimConflictError, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerAdmitsDevice, viewerHoldsRole, viewerLinkBaseOf, viewerScopeOf, viewerUiCapability, actionsForDevice$1 as vocabularyActionsForDevice, triggersForDevice as vocabularyTriggersForDevice, waterHeaterCapability, wattMillisecondsToKwh, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, weeklyMaskIndex, weeklyMaskIsUniform, weeklyMaskToWindows, widenDeviceConstructor, windowsToWeeklyMask, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, withClipEventLabels, withFieldFrom, withLocationMode, withSystemEventClasses, withoutCallerStamp, withoutField, withoutKeyedArrayItem, writeModelBoundSetting, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
118900
+ export { ACCESSORY_LABEL, ACCESS_ROLES, ACTIVE_CRITERIA, ACTUATOR_METHODS, ACTUATOR_TEMPLATE_IDS, ADMIN_SCOPE, AGENT_MDNS_QUERY_NAME, AGENT_MDNS_SERVICE_TYPE, AGENT_MDNS_TXT_KEYS, AGGREGATE_REDUCERS, AGGREGATE_THROUGHPUT_BY_KIND, ALEXA_EGRESS_PROFILE, ALL_CAPABILITY_DEFINITIONS, ALL_METHOD_ACCESS, APPEARANCE_BIN_COUNT, APPEARANCE_BLOCKS, APPEARANCE_DESCRIPTOR_VERSION, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, APPLE_SA_TO_MACRO, APPLIANCE_DEFAULTS, APPLIANCE_EXPORT, APPLIANCE_KINDS, APPLIANCE_TEMPLATE_ID, APP_AUTH_CALLBACK_MAX_LENGTH, APP_AUTH_CALLBACK_URLS, APP_FLOW_DEFAULT_REDIRECT, APP_FLOW_REFUSAL_MESSAGES, APP_FLOW_STATE_PREFIX, APP_REFUSED_PATH, APP_START_REFUSAL_MESSAGES, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, ARITHMETIC_OPS, AUDIO_ANALYSIS_CAP_NAME, AUDIO_BACKEND_CHOICES, AUDIO_CHUNK_FORMATS, AUDIO_GRADIENT_ALPHAS, AUDIO_MACRO_LABELS, AUDIO_NOT_CLASSIFIED_REASONS, AUDIO_PRESETS, AUDIO_SCALE_EPOCH_ISO, AUDIO_SCALE_EPOCH_MS, AUTOMATIC_HUB_ADDRESS_FLAGS, AUTO_SHARE_HEADROOM, AUTO_TUNE_FAMILY, AcceleratorComputeSchema, AcceleratorKindSchema, AccessoriesStatusSchema, AccessoryKind, ActionEntrySchema, ActionError, ActionErrorCodeSchema, ActionInputSchema, ActionLinksSchema, ActionRunChangedSchema, ActionRunOriginSchema, ActionRunOutcomeSchema, ActionRunResultSchema, ActionSourceKindSchema, ActionStatusSchema, ActionStepSchema, ActionVariableSchema, ActionVariableTypeSchema, ActionVariableValueSchema, ActiveCriterionSchema, AddBrokerInputSchema, AddRetrainFrameFromRecordingResultSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AddonRoutesScopeSchema, AdminLinkTargetEnum, 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, AggregateReducerSchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertEpisodePayloadSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, AnalyticsLtsSeriesSchema, AppFlowPurposeSchema, AppLoginPathSchema, AppPageLangSchema, AppleFmAvailabilitySchema, AppleFmUnavailableReasonSchema, ApplianceHelperSpecSchema, ArchiveEntrySchema, ArchiveManifestSchema, ArchiveSqliteSnapshotSchema, ArchivedDebugNoteQueryInputSchema, ArchivedDebugNoteSchema, ArithmeticHelperSpecSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioAttachDeviceInputSchema, AudioAttachDeviceResultSchema, AudioChunkFormatSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioClassifyOutcomeSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioDetachDeviceResultSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AudioStreamPickSchema, AuthResultSchema, AutoTuneApplyInputSchema, AutoTuneApplyResultSchema, AutoTuneOptionsSchema, AutoTunePhaseResultSchema, AutoTunePlanSchema, AutoTuneWarningSchema, AutoUpdateSettingsSchema, AutomationActionSchema, AutomationCapStepSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationConditionTraceNodeSchema, AutomationControlStatusSchema, AutomationRecipeSchema, AutomationRunModeSchema, AutomationRunOutcomeSchema, AutomationRunTraceSchema, AutomationRunVerdictSchema, AutomationStateDocSchema, AutomationStepTraceSchema, AutomationTriggerSchema, AutomationTriggerTraceSchema, AutomationWaitStepSchema, AvailableIntegrationTypeSchema, BASE_DEVICE_CAPS, BASE_LIVE_EGRESS_PROFILE, BATTERY_DEVICE_PROFILE, BATTERY_UNREACHABLE_AFTER_MS, BENCH_ROOT_STEP_ID, BINARY_AGGREGATES, BIRTH_DECISION_DEFAULT_LIMIT, BOOT_RECOVERY_BACKOFF_MS, BUILTIN_RESULT_KINDS, BackgroundRunRegistry, BacklightModeSchema, BackupArchiveEncryptionSchema, BackupDestinationInfoSchema, BackupEncryptionStatusSchema, BackupEntrySchema, BackupRunPhaseSchema, BackupRunSchema, BackupRunStateSchema, BackupTriggerResultSchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatchTooLargeError, BatteryStatusSchema, BinaryStatusSchema, BirthDecisionCropSourceSchema, BirthDecisionQueryInputSchema, BirthDecisionRecordSchema, BirthDecisionVerdictSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerInfoSchema as UnifiedBrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, BucketAccumulator, BulkRecordSchema, CALENDAR_PERIODS, CALLER_STAMPED_CAPABILITIES, CAMERA_SENSORS_NOT_LOADED, CAMERA_SENSORS_SETTINGS_KEY, CAMERA_SWITCH_CATALOG, CAMERA_SWITCH_ORDER, CAMERA_TRIGGER, CAMSTACK_APP_LINK_ORIGIN, CAMSTACK_EVENT_PREFIX, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_CUSTOMIZE_CATALOG, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, CAP_RUNTIME_FIELD_UNITS, CAP_VOCABULARY, CAP_VOCABULARY_BY_NAME, CATALOG_LANGS, CLASS_MAP_MACRO_TARGETS, CLIP_BROKER_PACED_RATES, CLIP_LABEL_EVENT_FETCH_LIMIT, CLIP_PLAYBACK_OPTIONS, CLIP_REALTIME_SOURCE_RATES, CLIP_REASON_HEADER_MAX, CLIP_SEARCH_STRICTNESS, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, CLIP_STREAM_SOURCE_RATES, CLIP_STREAM_TRANSPORT_HEADER, CLIP_STRICTNESS_FACTOR, CLIP_VECTOR_INDEX_PATTERN, CLUSTER_MODEL_CHOICE_UNREADABLE_REASONS, CLUSTER_MODEL_SCOPED_STEPS, CLUSTER_MODEL_SECTION_ID, CLUSTER_STEP_SETTING_FIELDS, COCO_80_LABELS, COCO_TO_MACRO, COMPOSED_DEVICE_STABLE_ID_PREFIX, COMPOSED_ITEM_FIXED_FIELDS, COMPOSER_ADDON_ID, COMPOSER_RUNNER_ID, COMPOSITION_EVENT_CATEGORY, COMPOSITION_ITEM_ARRAY_PATH, COMPOSITION_ITEM_KEY_RE, CONNECTION_TEST_TIMEOUT_MS, CONTAINER_CHILD_PRIORITY, CORAL_DEFAULT_MODEL_ID, CORE_BLOCKS_ADDON_ID, CORE_BLOCK_ADDON_PREFIX, CORE_ULTRA_265K_IGPU_CLOCK_MHZ, CORE_ULTRA_265K_IGPU_EU, CREDENTIAL_TOKEN_AUDIENCE, CREDENTIAL_TOKEN_KIND, CROP_CLASS_FLOORS, CROP_SUPPLY_SOURCES, CROP_SUPPLY_STEP_IDS, CUSTOMIZATION_BLOCK_NAME_PREFIX, CalendarColorSchema, CalendarEntrySchema, CalendarEventSchema, CalendarInfoSchema, CalendarListEventsInputSchema, CalendarPreferenceEntrySchema, CalendarPreferencesSchema, CalendarSetPreferenceInputSchema, CalendarSourceKindSchema, CalendarWindowSchema, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionSourceSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraOccupancySnapshotForDeviceSchema, CameraOwnMotionSchema, CameraRawLevelSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSensorAttachmentSchema, CameraSensorEntrySchema, CameraSensorModeSchema, CameraSensorRefSchema, CameraSensorsConfigSchema, CameraSensorsNotEnforcedSchema, CameraSensorsNotForwardedSchema, CameraSensorsStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusDegradationReasonSchema, CameraStatusDegradationSchema, CameraStatusSchema, CameraStatusStageSchema, CameraStreamSchema, CameraSwitchAuthoritySchema, CameraSwitchGroupSchema, CameraSwitchIdSchema, CameraSwitchSchema, CameraSwitchUnavailableReasonSchema, CameraSwitchWarningSchema, CamstackError, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CapacityFallbackSchema, CapacitySourceSchema, CarbonMonoxideStatusSchema, CatalogFileSchema, CatalogLangSchema, ChargingStatus, ClaimOutcomeSchema, ClaimsListingSchema, CleanupDeletedDevicesResultSchema, ClearTrackRelationInputSchema, ClearTrackRelationResultSchema, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipBytesOfferSchema, ClipBytesSchema, ClipExportFailureSchema, ClipModelMetaSchema, ClipPlaybackOptionsSchema, ClipPlaybackSchema, ClipSchema, ClipSearchStrictnessSchema, ClipSourceAvailabilitySchema, ClipSourceSchema, ClipStillDispositionSchema, ClipStillRefusalCodeSchema, ClipStreamAudioReasonSchema, ClipStreamAudioSchema, ClipStreamDialSchema, ClipWakeSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, ClusterModelChoiceSchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, CompleteEnrollmentInputSchema, CompleteEnrollmentOutputSchema, CompleteEnrollmentResultSchema, ComposableCapabilitiesSchema, ComposableCapabilitySchema, ComposableFieldSchema, ComposerApplyInputSchema, ComposerApplyResultSchema, ComposerBlockSchema, ComposerBlockVerdictSchema, ComposerUnreadableBlockSchema, CompositionAggregateSourceSchema, CompositionBindingSchema, CompositionBlockInputSchema, CompositionBlockStateSchema, CompositionCodeSourceSchema, CompositionCommandTargetSchema, CompositionCustomizationReadSchema, CompositionEventPlanSchema, CompositionExistingTargetSchema, CompositionExpressionSourceSchema, CompositionFeatureModeSchema, CompositionFeaturePlanSchema, CompositionFeatureSchema, CompositionFieldItemSchema, CompositionFieldKindSchema, CompositionFieldPlanSchema, CompositionFieldReadSchema, CompositionFieldRoleSchema, CompositionFieldSourceSchema, CompositionFieldStateKindSchema, CompositionFieldStateSchema, CompositionFieldsFeatureSchema, CompositionForwardCommandSchema, CompositionFromSourceSchema, CompositionGetReadSchema, CompositionGraphError, CompositionItemEntrySchema, CompositionListReadSchema, CompositionLiteralBindingSchema, CompositionNewTargetSchema, CompositionPassthroughFeatureSchema, CompositionProblemCodeSchema, CompositionProblemSchema, CompositionRunStatusSchema, CompositionSchema, CompositionSeriesSourceSchema, CompositionSourceRefSchema, CompositionStateReadSchema, CompositionTargetSchema, CompositionUnavailableModeSchema, CompositionValidationSchema, CompositionViewSchema, ConditionMirror, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectionTestDescriptorSchema, ConnectionTestInputSchema, ConnectionTestOutcomeSchema, ConnectivityStatusSchema, ConsumableFormSchema, ConsumableItemSchema, ConsumableKindSchema, ConsumableLevelSchema, ConsumableRemainingKindSchema, ConsumableRemainingSchema, ConsumableStatusSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoreBlockCompileInputSchema, CoreBlockCompileResultSchema, CoreBlockFilesSchema, CoreBlockInputFieldsSchema, CoreBlockInputSchema, CoreBlockPlacementSchema, CoreBlockSchema, CoreBlockSourceSchema, CoreBlockStatusSchema, CoverStateSchema, CoverStatusSchema, CreateIntegrationInputSchema, CreateUserInputSchema, CredentialScopeSchema, CredentialTokenClaimsSchema, CustomActionInputSchema, CustomModelDescriptorSchema, CustomizeAssignmentStatusSchema, DATABASE_SNAPSHOT_PARTIAL_SUFFIX, DATABASE_SNAPSHOT_SUFFIX, DATABASE_SNAPSHOT_TIMEOUT_MS, DATAPLANE_SECRET_HEADER, DATA_STORE_DATABASES, DAYS_PER_WEEK, DAY_MS, DAY_NAMES, DECLARED_DEVICE_SWEEP_LIMIT, DECLARED_INTEGRATION_FIXED_KEY, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_CAMERA_FPS, DEFAULT_CAMERA_SENSOR_MODE, DEFAULT_CATALOG_LANG, DEFAULT_CLUSTER_STEP_MODELS, DEFAULT_CLUSTER_STEP_SETTINGS, DEFAULT_CORE_BLOCK_ENTRY, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_DETAIL_CROP_CONVENTION, DEFAULT_DISPLAY_PREFERENCE, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEFAULT_EVENT_COLOR, DEFAULT_FEATURES, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, DEFAULT_HEADROOM, DEFAULT_HISTORY_RETENTION, DEFAULT_MIN_LANDMARK_FACE_SIZE_PX, DEFAULT_MIN_SESSIONS_PER_DEVICE, DEFAULT_NATIVE_LEASE_SETTINGS, DEFAULT_OVERLAY_LAYERS, DEFAULT_POOL_MEMORY_POLICY, DEFAULT_RECORDING_PROFILES, DEFAULT_RETENTION, DEFAULT_RUNTIME_STATE_DURABILITY, DEFAULT_SESSION_LOST_DEBOUNCE_MS, DEFAULT_SESSION_PLACEMENT_POLICY, DEFAULT_SHARE_SOURCE, DEFAULT_TIMELAPSE_PREVIEW_TEXT, DEFAULT_TOKEN_EXPIRY, DEFAULT_TRACE_KEEP, DEFAULT_VIEWER_SCOPE, DEFINITIVE_DEVICE_REFUSALS, DERIVATIVE_UNITS, DERIVED_CAMERA_SILENCED_CAP_NAMES, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, DETECTION_MACRO_CLASSES, DETECTION_PIPELINE_CAP_NAME, DETECTOR_ACCURACY, DETECTOR_PERF, DEVICE_BACKEND_TO_FORMAT, DEVICE_CAP_NAMES, DEVICE_CERT_RENEW_WINDOW_DAYS, DEVICE_CERT_SIGNATURE, DEVICE_CERT_VALIDITY_DAYS, DEVICE_CHILDREN_BATCH_MAX, DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE, DEVICE_DO_ACTIONS, DEVICE_ENROLLMENT_TTL_MS, DEVICE_HISTORY_ENERGY_KEY, DEVICE_HISTORY_ORPHAN_DELETE_MAX, DEVICE_HISTORY_ORPHAN_LIST_MAX, DEVICE_HISTORY_QUERY_MANY_MAX_ITEMS, DEVICE_NONCE_TTL_MS, DEVICE_PROFILES, DEVICE_RAMP, DEVICE_REFRESH_REFUSAL_PREFIX, DEVICE_RESTORE_RETRY_CONCURRENCY, DEVICE_RESTORE_RETRY_DELAYS_MS, DEVICE_SAN_CREDENTIAL_PREFIX, DEVICE_SAN_USER_PREFIX, DEVICE_SCOPED_CAPS, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_SIGNATURE_MESSAGE_VERSION, DEVICE_STATE_READERS, DEVICE_STATUS_METHOD, DEVICE_TOMBSTONE_RETENTION_MS, DEVICE_TYPE_CONTROL_KIND, DEVICE_TYPE_DO_CAPS, DEVICE_TYPE_INFO, DISPLAY_PREFERENCES, DISPLAY_PRESETS, DOORBELL_RISE_DEBOUNCE_MS, DataStoreDatabaseSchema, EngineInfoSchema as DataStoreEngineInfoSchema, DatabaseSnapshotRequestSchema, DatabaseSnapshotResultSchema, DatabaseSnapshotTableSchema, DatabaseSnapshotTargetsSchema, DatabaseSnapshotWrittenSchema, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DeclarationRefusedError, DeclareCollectionInputSchema, DeclareKindResultSchema, DeclaredDevices, DecodedAudioChunkSchema, DeleteIntegrationResultSchema, DerivativeHelperSpecSchema, DetailCropConventionSchema, DetectionCatalogClassMapSchema, DetectionSourceSchema, DetectionSourcesSchema, DetectionTriggerFilter, DeviceAdminLinkSchema, DeviceCaStatusSchema, DeviceCertificateLoginMethodSchema, DeviceCertificateSettingsSchema, DeviceChallengeResultSchema, DeviceChallengeSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceCredentialSchema, DeviceCredentialStatusSchema, DeviceDataEntrySchema, DeviceDiscoveryStatusSchema, DeviceEnrollProofSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceHistoryKindSchema, DeviceHistoryOrphanDeleteRefusalSchema, DeviceHistoryOrphanReasonSchema, DeviceHistoryProducerKindSchema, DeviceHistoryRefusalReasonSchema, DeviceHistoryResolutionSchema, DeviceHistoryStatusSchema, DeviceHistorySubjectSchema, DeviceInfoSchema, DeviceModelChoiceSchema, DeviceNetworkStatsSchema, DevicePlatformSchema, DeviceProofInputSchema, DeviceRecommendationSchema, DeviceRefusalReasonSchema, DeviceRefusalSchema, DeviceRemovedInputSchema, DeviceRemovedResultSchema, DeviceRestoreRetryScheduler, DeviceRole, DeviceRuntimeState, DeviceSelectorSchema, DeviceSignaturePurposeSchema, DeviceStatusSchema, DeviceTombstoneSchema, DeviceType, DiagnosticIdSchema, DiagnosticWindowPatchSchema, DiagnosticWindowSchema, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DishwasherAccessSchema, DishwasherAvailabilitySchema, DishwasherOperationStateSchema, DishwasherOptionDescriptorSchema, DishwasherOptionsSchema, DishwasherProgramSchema, DishwasherStateSchema, DishwasherStatusSchema, DishwasherValueSchema, DiskReconcileJobSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EMBEDDING_MODEL_FAILED, EMBEDDING_REQUIREMENTS_FAILED, EMBEDDING_REQUIREMENTS_UNAVAILABLE, EMPTY_AUTOMATION_STATE, ESTIMATE_COMPUTE_RATIO_MAX, ESTIMATE_COMPUTE_RATIO_MIN, EVENTFUL_CAP_NAMES, EVENT_DENSITY_BATCH_MAX, EVENT_KIND_BY_CAP, EVENT_KIND_LABELS, EVENT_KIND_LABEL_KEYS, EVENT_OWNER_TYPES, EVENT_PAD_MS, EVENT_TAXONOMY, EXPORT_DENSE_MAX_RANGES, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, EXPRESSION_OUTPUTS, EXTENSION_HOST_DEVICE_TYPES, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EXTENSION_SLOT_LISTING_METHOD, EXTENSION_SLOT_REF_SEPARATOR, EffectiveDeviceShareSchema, EffectiveNodeShareSchema, EffectiveSharesSchema, EffectiveTuningSchema, EgressEncodeSchema, EgressRateControlSchema, EgressTranscodeRequestSchema, EgressTranscodeSchema, ElementConfigStore, EmbeddingFailedModelSchema, EmbeddingFailedRequirementSchema, EmbeddingInfoSchema, EmbeddingRefusalCodeSchema, EmbeddingResultSchema, EmbeddingTowerSchema, EncodeProfileSchema, EnrichedWidgetMetadataSchema, EnrollSelfInputSchema, EntryDescriptorSchema, EntryKindInfoSchema, EntryViewSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, ErrorCodeSchema, ErrorI18nPayloadSchema, EventCategory, EventDensityBucketSchema, EventDensityForDeviceSchema, EventEmitterStatusSchema, EventFireSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventKindsForDeviceSchema, EventMediaArtifactSchema, EventMediaCoverageSchema, EventMediaKindSchema, EventMediaProductionSchema, EventOwnerTypeSchema, EventSourceType, ExportBytesSchema, ExportClipSubjectSchema, ExportDenseRangeSchema, ExportDenseSchema, ExportDownloadSchema, ExportFootageSubjectSchema, ExportOptionsSchema, ExportRecordSchema, ExportSetupFieldSchema, ExportSetupSchema, ExportSpeedSchema, ExportStateSchema, ExportSubjectSchema, ExportTimelapseSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionBindingSourceSchema, ExpressionEvalError, ExpressionFieldBindingSchema, ExpressionGlobalBindingSchema, ExpressionHelperSpecSchema, ExpressionLiteralBindingSchema, ExpressionParseError, ExpressionSourceSchema, ExtensionCandidateSchema, ExtensionCandidatesSchema, ExtensionSetResultSchema, ExtensionSetSlotInputSchema, ExtensionSlotActivationSchema, ExtensionSlotIdSchema, ExtensionSlotRefInputSchema, ExtensionSlotRowSchema, ExtensionSlotSourceSchema, ExtensionSlotStateSchema, ExtensionSlotUnreachableSchema, ExtensionSlotValueSchema, ExtensionSourceAvailabilitySchema, ExtensionSourceHealthSchema, ExtensionSourceSchema, ExternalIdentityKeySchema, ExternalIdentitySchema, FACE_RESCORE_INTERVAL_FIELD, FACE_RESCORE_INTERVAL_KEY, FACE_RESCORE_INTERVAL_MIN_RUNNING, FACE_RESCORE_SECTION_ID, FAN_OUT_CONCURRENCY, FEEDER_EXAMPLE_ADDON_ID, FEEDER_EXAMPLE_HA_DEVICE_ID, FFMPEG_PATH_ENV, FIRST_LEVEL_MACRO_CLASSES, FULL_IMAGE_BBOX, FailureContributionSchema, FailureCounters, FailureReasonCountSchema, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FieldClaimModeSchema, FieldClaimSchema, FilterRequiredError, FloodStatusSchema, Fmp4BoxSplitter, ForeignSecretMarkerError, FrameHandleSchema, FrameInputSchema, FrameLazyCountersSchema, FrameLazyMetricsSchema, G711_SCALE_CORRECTION_DB, GROUP_TEMPLATES, GROUP_TEMPLATE_IDS, GasStatusSchema, GetLoggingSettingsInputSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, GridLayoutPatchSchema, GridLayoutViewSchema, GroupActiveSchema, GroupCommandResultSchema, GroupCommandsSchema, GroupHelperSpecSchema, GroupStatusSchema, GroupTemplateIdSchema, HAP_AUDIO_BASE, HAP_AUDIO_BITRATE_KBPS, HAP_AUDIO_VBV_KBITS, HAP_KEYFRAME_INTERVAL_SEC, HF_BASE_URL, HF_REPO, HISTORY_BUCKET_MS, HISTORY_CATALOG, HISTORY_DEFAULT_MIN_INTERVAL_MS, HISTORY_FAST_MS, HISTORY_ITEM_CATALOG, HISTORY_NONE_CAPS, HISTORY_SLOW_MS, HISTORY_TIERS, HISTORY_UNIT_LABELS, HOURS_PER_DAY, HOUR_MS, HUB_ADDRESS_ROLES, HUB_MDNS_QUERY_NAME, HUB_MDNS_ROLE, HUB_MDNS_SERVICE_TYPE, HUB_MDNS_TXT_KEYS, HUB_VIEWER_MOUNT, HWACCEL_OPTIONS, HardwareClassIdSchema, HealthStatusSchema, HeatingValveStatusSchema, HelperMemberSchema, HelperSpecSchema, HfModelResolutionSchema, HistoryPointSchema, HistoryResolutionEnum, HttpsLeafInfoSchema, HubAddressRoleSchema, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ICON_CATALOG_SOURCE, ICON_CATEGORIES, ICON_ENTRIES, ICON_KEYS, ICON_VIEWER_MODULES, IDLE_ACTION_STATUS, INFERENCE_DEVICE_EXCLUSION_REASONS, INITIAL_PULSE, INITIAL_SPAN, INTEGRAL_OUTPUTS, INTERNAL_ACTION_PREFIX, INVERTIBLE_CAPS, IconKeySchema, ImageContractSchema, ImageContractStateSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, ImportModelBundleInputSchema, ImportModelBundleResultSchema, InferenceDeviceExclusionReasonSchema, IngestOwnerSchema, InstalledPackageSchema, IntegralHelperSpecSchema, IntegrationLiteSchema, IntegrationSessionReporter, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, InvalidRecordError, KEYCHAIN_MAX_REFS_PER_CALL, KEYCHAIN_RESET_CONFIRMATION, KEYCHAIN_RESET_TRIGGER_ACTOR, KNOWN_CAP_NAMES, KWH_PER_WATT_MS, KeptReasonSchema, KeyEventSchema, KeychainAdminSecretSchema, KeychainAuditActionSchema, KeychainAuditEntrySchema, KeychainKeySourceKindSchema, KeychainKeySourceSchema, KeychainResetRecordSchema, KeychainResolveEntrySchema, KeychainResolveResultSchema, KeychainSecretMetaSchema, KeychainSecretUsageSchema, KeychainStateSchema, KeychainStatusSchema, KeychainUnavailableReasonSchema, KeychainWriteRefusedError, LABEL_SUPPLY_MACRO, LABEL_SUPPLY_STEP_IDS, LABEL_SUPPLY_VOCABULARIES, LEGACY_READ_ONLY_CONFIG_KEY, LIGHT_SHARED_CAPS, LINKED_DEVICES_SLOT, LINKED_LABEL_STEP_PREFIX, LLM_PROFILE_KIND_PATTERN, LOAD_CONTRIBUTION_ATTRIBUTIONS, LOAD_CONTRIBUTION_ROLES, LOCATION_DESCRIPTION_MAX, LOCATION_ICON_FALLBACK, LOG_CHANNEL_TICK_MS, LOG_LEVEL_RANK, LTS_SCOPE_CLASS_SEPARATOR, LabelAttributionSchema, LabelDefinitionSchema, LabelTierSchema, LatencySourceSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LedgerWalkDeviceReportSchema, LedgerWalkInputSchema, LedgerWalkRefusalSchema, LedgerWalkReportSchema, LedgerWalkSkipCountsSchema, LedgerWalkSkipReasonSchema, LegacyStorageLocationDefaultSchema, LinkedDeviceSchema, LinkedDevicesModeSchema, LinkedDevicesSlotValueSchema, ListNodeBenchmarkResultsInputSchema, ListTrackRelationsInputSchema, ListTrackRelationsResultSchema, LiveViewerCountSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmDownloadProgressSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmListModelsErrorCodeSchema, LlmListModelsInputSchema, LlmListModelsResultSchema, LlmModelFeaturesSchema, LlmModelInfoSchema, LlmNodeModelSchema, LlmProfileFieldSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmProviderConfigSchema, LlmProviderWidgetSchema, LlmRefusalSourceSchema, LlmRetryPolicySchema, LlmRuntimeAppleCompleteInputSchema, LlmRuntimeCancelInputSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmTimeoutDefaults, LlmUsageRollupSchema, LlmUsageSchema, LoadBalancingSharesInputSchema, LoadContributionSchema, LocateSegmentResultSchema, LocationDescriptionAssignmentSchema, LocationIconAssignmentSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogChannelApplyResultSchema, LogChannelDescriptorSchema, LogChannelGate, LogChannelLevelSchema, LogChannelRegistry, LogChannelWindowPatchSchema, LogChannelWindowSchema, LogChannelWindowStateSchema, LogEntrySchema, LogLevelSchema, LogReadCapabilitiesSchema, LogReadEntrySchema, LogReadQuerySchema, LogReadResultSchema, LogStreamEntrySchema, LoggingEffectiveSchema, LoggingExplicitSchema, LoggingLevelLayerSchema, LoggingLevelSourceSchema, LoggingScopeKindSchema, LoggingSettingsPatchSchema, LoggingSettingsStateSchema, LoginMethodContributionSchema, LoginStageEnum, LtsBucketSchema, MACRO_LABELS, MASK_EMITTING_POSTPROCESSORS, MASK_SUPPLY_STEP_IDS, MAX_ARCHIVED_DEBUG_NOTES, MAX_BIRTH_DECISION_RECORDS, MAX_BIRTH_LATENCY_PROXY_MS, MAX_CAMERA_SENSORS, MAX_CLIP_EVENT_IDS, MAX_CLIP_LABELS, MAX_COMPOSITION_CODE_LENGTH, MAX_COMPOSITION_FEATURES, MAX_COMPOSITION_FIELDS_PER_FEATURE, MAX_COMPOSITION_ITEMS, 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, MAX_HELPER_MEMBERS, MAX_KEYS, MAX_REASONS_PER_KEY, MAX_REQUEUED_BUCKETS_PER_SERIES, MAX_SENSOR_TRIGGER_DEVICES, MAX_TRACE_KEEP, MAX_TRACK_DEBUG_NOTE_LEN, MAX_TRACK_PURITIES, MAX_TRACK_RELATIONS, MEDIA_OWNER_TYPES, MEDIA_PRESENCE_OWNER_KINDS, METHOD_ACCESS_MAP, METHOD_DEVICE_SELECTORS, MINUTES_PER_DAY, MINUTE_MS, MIN_CUSTOM_MINUTES, MIN_SCRUBBED_LENGTH, MIN_SESSIONS_PER_DEVICE_RANGE, MODEL_FORMATS, MODEL_HOSTING, MODEL_PROVIDER_IDS, MOTION_CLOSE_AFTER_MS, MOTION_CROP_DISPATCH_KEY, MOTION_CROP_MAX_REGIONS, MOTION_CROP_MOTION_PAD, MOTION_CROP_TRACKED_PAD, MOTION_SOURCE_LABELS, MOTION_SPAN_TIMEOUT_MS, MOTION_TRIGGER_FEATURE, ManagedModelCatalogEntrySchema, ManagedModelExtraFileSchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileInfoSchema, MediaFileKindEnum, MediaFileRefSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MediaPresenceOwnerKindSchema, MediaRelocateModeSchema, MeshLeafInfoSchema, MeshPeerSchema, MeshStatusSchema, MeterStatusSchema, MethodAccessSchema, MigrateDeviceResultSchema, MigrateSwitchOutcomeSchema, MigrateSwitchReportSchema, ModelBundleFileSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatPrecisionSchema, ModelFormatsSchema, ModelLicenseSchema, ModelOnDiskStateSchema, ModelPinChangeSchema, ModelProviderIdSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionTriggeredBySchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, BrokerInfoSchema$1 as MqttBrokerInfoSchema, StatusSchema as MqttBrokerStatusSchema, MutationFilterSchema, N100_IGPU_CLOCK_MHZ, N100_IGPU_EU, 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_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SCENE_BUDGET_FIELD, NATIVE_LEASE_SCENE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, NAVIGATION_ACTION_CATALOG, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NC_ALARM_CONTROLLABLE_CAPS, NC_ALARM_DEFAULT_PROFILE_ID, NC_ALARM_DEFAULT_PROFILE_NAME, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, NC_ALARM_DELAY_FIELDS, NC_ALARM_DELAY_MAX_SEC, NC_ALARM_NONBLOCKING_MAX, NC_ALARM_NOTIFY_FIELDS, NC_ALARM_OPENING_EVENT_KINDS, NC_ALARM_SENSORS_MAX, NC_ALARM_SYSTEM_DEFAULT_DELAYS, NC_ALARM_SYSTEM_EVENT_KINDS, NC_ALARM_TRIGGERED_MAX_SEC, NC_AUDIO_CONFIRM_HITS_DEFAULT, NC_AUDIO_CONFIRM_HITS_MAX, NC_AUDIO_CONFIRM_HITS_MIN, NC_AUDIO_CONFIRM_WINDOW_MAX_SEC, NC_AUDIO_CONFIRM_WINDOW_MIN_SEC, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, NC_AUDIO_DBFS_FLOOR, NC_AUDIO_DB_MAX, NC_AUDIO_DB_MIN, NC_AUDIO_DB_OFFERED, NC_AUDIO_DB_STEP, NC_AUDIO_DEFAULTS, NC_AUDIO_HIT_PERCENT_MAX, NC_AUDIO_HIT_PERCENT_MIN, NC_AUDIO_SAMPLING_MAX_SEC, NC_AUDIO_SAMPLING_MIN_SEC, NC_AUDIO_SEED, NC_AUTHORABLE_SYSTEM_EVENT_KINDS, NC_BASE_CONDITION_KEYS, NC_BATTERY_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_CAMERA_SCOPE_CAP_NAME, NC_CLIP_POST_ROLL_DEFAULT_SEC, NC_CLIP_PRE_ROLL_DEFAULT_SEC, NC_CLIP_RETENTION_MAX_SEC, NC_CONDITION_CATALOG, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, NC_CONFIRM_DEFAULT_TIMEOUT_MS, NC_CONFIRM_MAX_TIMEOUT_MS, NC_CONFIRM_MIN_TIMEOUT_MS, NC_CONSUMABLE_LOW_PERCENT_DEFAULT, NC_CONSUMABLE_LOW_PERCENT_MAX, NC_CONSUMABLE_SYSTEM_EVENT_KINDS, NC_DEFAULT_SNOOZE_MINUTES, NC_GROUPING_DEFAULT_SEC, NC_GROUPING_MAX_SEC, NC_GROUPING_MIN_SEC, NC_HISTORY_LIMIT_DEFAULT, NC_HISTORY_LIMIT_MAX, NC_LEGACY_SYSTEM_EVENT_KINDS, NC_MAX_PER_TRACK_IMMEDIATE, NC_MEDIA_IMAGE_MODES, NC_OCCUPANCY_DEFAULTS, NC_RULE_CLEARABLE_KEYS, NC_RULE_EDITOR_SECTION_ORDER, NC_RULE_KIND_SPECS, NC_RULE_RETIRED_CLEAR_KEYS, NC_RULE_SECTIONS, NC_SENSOR_RAISED_FIELD_BY_KIND, NC_SENSOR_TRANSITION_KINDS, NC_SENSOR_TRANSITION_NEVER_FIRES_WARNING, NC_SENSOR_TRANSITION_UNSUPPORTED_REASON, NC_SERVER_PACKAGE_NAME, NC_SNOOZE_MAX_MINUTES, NC_STATE_SUMMARY_SECTION_IDS, NC_SYSTEM_DELIVERY, NC_SYSTEM_EVENT_CLASS_SPECS, NC_SYSTEM_EVENT_CONDITION_FILTER_KEYS, NC_SYSTEM_EVENT_FAMILIES, NC_SYSTEM_EVENT_FAMILY, NC_SYSTEM_EVENT_FAMILY_FILTERS, NC_SYSTEM_EVENT_FILTER_KEYS, NC_SYSTEM_EVENT_KIND_GROUP_SPECS, NC_SYSTEM_EVENT_SUMMARY_FAMILIES, NC_SYSTEM_RULE_KINDS, NC_TAXONOMY, NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS, NC_TEMPLATE_VARS, NC_UPDATE_EVENT_PACKAGE_NAMES, NETWORK_LINK_TYPES, NETWORK_LINK_UNKNOWN, NODE_BENCHMARK_DEFAULTS, NODE_COLOR_IDS, NO_MEASURED_CAPACITY, NUMERIC_AGGREGATES, NativeCropBboxSchema, NativeCropRefSchema, NativeCropResultSchema, NativeDetectionSchema, NativeLeaseAdmissionSchema, NativeLeaseSettingsSchema, NativeObjectClassEnum, NativeObjectDetectionOptionsSchema, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionSettingsPatchSchema, NativeObjectDetectionStatusSchema, NativeObjectGeometryEnum, NavigationActionEntrySchema, NavigationActionIdSchema, NavigationEntryKindSchema, NavigationFeaturesSchema, NavigationLightModeSchema, NavigationModeSchema, NavigationMoveCommandSchema, NavigationPointSchema, NavigationRuntimeStateSchema, NavigationStatusSchema, NcActionBindingSchema, NcAlarmBlockingEditSchema, NcAlarmBlockingSchema, NcAlarmConfigSchema, NcAlarmCreateProfileInputSchema, NcAlarmModeCoverageSchema, NcAlarmModeDelaysEditSchema, NcAlarmModeDelaysSchema, NcAlarmModeDeviceListSchema, NcAlarmNonBlockingEditSchema, NcAlarmNonBlockingSchema, NcAlarmPostTriggeredActionSchema, NcAlarmProfileIdInputSchema, NcAlarmProfileMetaSchema, NcAlarmProfilesViewSchema, NcAlarmRenameProfileInputSchema, NcAlarmSecureOnArmEditSchema, NcAlarmSecureOnArmOffSchema, NcAlarmSensorReadingSchema, NcAlarmSensorStateSchema, NcAlarmSensorsInputSchema, NcAlarmSensorsSchema, NcAlarmSettingsPatchSchema, NcAlarmSettingsSchema, NcAlarmSkipReasonSchema, NcAlarmSkippedDeviceSchema, NcAudioConditionSchema, NcClipRetentionAskSchema, NcClipRetentionPlanSchema, NcConditionDescriptorSchema, NcConditionsSchema, NcConfirmExpectSchema, NcConfirmSchema, NcCrossingSchema, NcDeliverySchema, NcDeviceStateConditionSchema, NcHistoryEntrySchema, NcHistoryFilterSchema, NcHistoryRecordKindSchema, NcHistoryStatusSchema, NcHistorySubjectSchema, NcHookBindingsSchema, NcLegacyRuleActionSequenceSchema, NcLinkedCameraModeSchema, NcMediaFrameSchema, NcMediaImageSchema, NcMediaPolicySchema, NcOccupancyConditionSchema, NcPlateMatcherSchema, NcRuleActionSchema, NcRuleActionSequenceSchema, NcRuleActionsSchema, NcRuleClearableKeySchema, NcRuleInputSchema, NcRuleKindSchema, NcRuleLastRunSchema, NcRuleLastRunsSchema, NcRuleNotificationButtonSchema, NcRulePatchSchema, NcRuleSchema, NcRuleTargetSchema, NcRuleUpdateInputSchema, NcSceneConditionSchema, NcScheduleSchema, NcScheduleWindowSchema, NcSensorTransitionSchema, NcSharedSequenceInputSchema, NcSharedSequenceSchema, NcSnoozeInputSchema, NcSnoozeSchema, NcSnoozeScopeSchema, NcSnoozeSuppressedSchema, NcStateSummaryPreviewRowSchema, NcStateSummaryPreviewSchema, NcStateSummaryPreviewSectionSchema, NcStateSummarySectionIdSchema, NcStateSummarySplitSchema, NcSystemEventConditionSchema, NcSystemEventDeliveryModeSchema, NcSystemEventDeliverySchema, NcSystemEventKindSchema, NcTaxonomyEntrySchema, NcTaxonomySchema, NcTemplateFamilySchema, NcTemplateFieldSchema, NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, NcTemplateVarContextSchema, NcTemplateVarDescriptorSchema, NcTemplateVarGroupSchema, NcTemplateVarKindSchema, NcTestResultSchema, NcThrottleGranularitySchema, NcThrottleSchema, NcZoneConditionSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NetworkLinkStatusSchema, NetworkTunnelStartedDataSchema, NoCallerError, NodeBenchCellSchema, NodeBenchClipSchema, NodeBenchDeviceCellSchema, NodeBenchFingerprintSchema, NodeBenchLimitSchema, NodeBenchPipelineCellSchema, NodeBenchProgressSchema, NodeBenchRampStepSchema, NodeBenchRunnerInputSchema, NodeBenchRunnerStateSchema, NodeBenchRunnerStatusSchema, NodeBenchmarkCandidatesSchema, NodeBenchmarkDevicePlanSchema, NodeBenchmarkEndReasonSchema, NodeBenchmarkManifestSchema, NodeBenchmarkMovingCameraSchema, NodeBenchmarkPhaseSchema, NodeBenchmarkPlanSchema, NodeBenchmarkPreflightSchema, NodeBenchmarkRefusalKindSchema, NodeBenchmarkRefusalSchema, NodeBenchmarkResultSchema, NodeBenchmarkResultViewSchema, NodeBenchmarkRunSchema, NodeBenchmarkStateSchema, NodeBenchmarkStatusSchema, NodeBenchmarkStayingCameraSchema, NodeColorIdSchema, NodeDeviceChangeSchema, NodeDirectoryEntrySchema, NodeDirectorySchema, NodeHttpsStateSchema, NodeRecommendationSchema, NotificationActionIconSchema, NotificationActionSchema, NotificationFormatSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OAUTH_LANDING_PATH, OAUTH_LANDING_REASONS, OBJECT_DETECTION_STEP_ID, OPERATOR_WRITTEN_STALE_MS, OPS_LOG_DEFAULT_LIMIT, OPS_LOG_RING_DEFAULT_MAX, OVERFLOW_REASON, OVERLAY_LAYERS, OWNER_ONLY_EVENT_CATEGORIES, OauthIntegrationDescriptorSchema, ObjectEventSchema, OccupancyBurstRefusalSchema, OccupancyLookAnswerSchema, OccupancyLookRefusalSchema, OccupancyLookRequestSchema, OidcConnectionSchema, OidcConnectionUpdateInputSchema, OnboardFieldSupportSchema, OnboardRecordTrackSchema, OnboardScheduleSupportSchema, OnboardStorageSchema, OnboardStorageVolumeSchema, OpsLogDomainSchema, OpsLogEntrySchema, OpsLogOpSchema, OpsLogQueryInputSchema, OpsLogReasonSchema, OrchestratorMetricsSchema, OrphanDeviceDataSchema, OsdNamedTemplateSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdRenderOutcomeEnum, OsdRenderResultSchema, OsdSlotBindingSchema, OsdSlotViewSchema, OsdSourceOptionSchema, OsdSourceSchema, OsdSourceValueTypeEnum, OsdStatusSchema, OsdTemplateBindingSchema, OsdTemplateFormatSchema, OsdTemplatePickSchema, OsdTemplateTokenKindSchema, OverrideDraftSchema, PALETTE_BACKGROUNDS, PALETTE_ENTRY_IDS, PALETTE_MIN_CONTRAST, PALETTE_MIN_DELTA_E, PALETTE_MIN_DELTA_E_MARK, PALETTE_PRESET_IDS, PEER_BYTES_CHUNK_BYTES, PEER_BYTES_MAX_OUTSTANDING, PEER_BYTES_STALL_MS, PEER_BYTES_TICKET_TTL_MS, PENDING_BLOCK_ID, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PHOENIX_780M_CU, PIPELINE_ANALYTICS_CAP_NAME, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PIPELINE_RAMP, PLUG_APPLIANCE_TYPES, PLUS_CATALOG_CLASS_FLOORS, PLUS_CATALOG_STOCK_CLASS_FLOORS, PLUS_CATALOG_TO_MACRO, PLUS_CATALOG_UNMAPPED_LABELS, PREFERENCES_MAX_DEVICE_ID_LENGTH, PREFERENCES_MAX_NAMESPACES, PREFERENCES_MAX_VALUE_BYTES, PREFERENCES_NAMESPACE_PATTERN, PREFERENCES_SELF_SCOPE, PRIVACY_MASK_CAP_NAME, PROVIDER_KIND_CAP_NAMES, PROVIDER_PIN_FIELD, PUBLIC_ENDPOINT_HTTP_REASON, PYTHON_SCRIPT, PackageInstallationSchema, PackageInstallationsSchema, PackageLlmVerdictSchema, PackageUpdateSchema, PackageVersionInfoSchema, PaletteRejectedError, ParkRefusalSchema, ParkTrackFrameResultSchema, ParkedFrameKindSchema, ParkedTrackFrameSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PeerBytesTicketSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineModelFormatStatusSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PlacementDeviceStatsSchema, PlacementNodeStatsSchema, PlacementStatsInputSchema, PlacementStatsSchema, PlaintextSecretError, PolygonPointSchema, PoolMemoryWatchdog, PowerMeterStatusSchema, PrecisionGopsSchema, PreferenceDeviceIdSchema, PreferenceNamespaceSchema, PreferenceRowSchema, PreferenceValueSchema, PreferencesChangedSinceInputSchema, PreferencesChangedSinceOutputSchema, PreferencesDeleteInputSchema, PreferencesDeleteOutputSchema, PreferencesGetInputSchema, PreferencesGetOutputSchema, PreferencesPutInputSchema, PreferencesPutOutputSchema, PreferencesSelfScopeSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProbeTargetConfigResultSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderJobStateSchema, ProviderJobStatusSchema, ProviderMotionDataSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzHomePresetSchema, PtzHomeReturnSchema, PtzMoveCommandSchema, PtzOptionsSchema, PtzPositionSchema, PtzPresetFunctionSchema, PtzPresetSchema, PtzStatusSchema, QUANTITY_BASE, QueryFilterSchema, RATE_CONTROL_RELAXED, RATE_CONTROL_TIGHT, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECALL_TIE, RECOGNITION_TYPES, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_EXPORT_MAX_READ_BYTES, RECORDING_SOURCE_CAMSTACK, RECORDING_SOURCE_CAMSTACK_ADDON, RECORDING_TIMELINE_BATCH_MAX, RECORDS_ERROR_CODES, RECORD_BATCH_MAX, RECORD_BATCH_MAX_BYTES, RECORD_CLASSES, RECORD_DATABASES, RECORD_DEFAULT_MAX_DATA_BYTES, RECORD_DELETE_BATCH, RECORD_ID_MAX_LENGTH, RECORD_MAX_DATA_BYTES, RECORD_MAX_INDEXES, RECORD_MAX_INDEX_FIELDS, RECORD_QUERY_MAX, RECORD_SECRET_COLLECTION_PREFIX, RECORD_SETTINGS_MAX_ROWS, RECORD_SWEEP_INTERVAL_MS, RECOVERY_CROP_MAX_SIDE_PX, RECOVERY_CROP_MIN_SIDE_PX, RECOVERY_CROP_PADDING_RATIO, RECOVERY_EDGE_MARGIN_PX, RECOVERY_FUSE_CONTAINMENT, RECOVERY_FUSE_IOU, RECOVERY_MAX_CROPS_PER_FRAME, RECOVERY_MAX_REGION_FRAME_FRACTION, RECOVERY_MIN_INTERVAL_MS, RECOVERY_MIN_UNCOVERED_FRACTION, RECOVERY_MOTION_MAX_AGE_MS, RECOVERY_VIEW_PX, REDACTED_SECRET, REFERENCE_COMPUTE, REFERENCE_MATCH_FRACTION, REMOVAL_RECONCILE_INTERVAL_MS, REMOVED_MODEL_IDS, REMOVE_LEAF, RESERVED_BINDING_NAMES, RESERVED_COLLECTION_SOURCES, RESET_PERIODS, RESTORED_CAP_NAMES, RETRAIN_REVIEW_ADJUSTED_IOU, RETRAIN_REVIEW_MATCH_IOU, RETRAIN_REVIEW_STATUSES, RETRAIN_REVISION_CONFLICT, REVALIDATE_AFTER_MS, ROLLING_SPANS, ROOM_EXAMPLE_MOTION_SOURCES, ROOM_EXAMPLE_TEMPERATURE_SOURCES, ROOM_OCCUPANCY_WINDOW_MS, ROOT_BUCKET_KEY, ROOT_CHILD_CONTAINMENT_MIN, ROOT_FACE_REFINE_INPUT_PX, ROOT_FACE_REFINE_SCALE, ROOT_SUPPLIABLE_STEP_IDS, RUNNING_POWER_START_DELAY_MS, RUNNING_POWER_STOP_DELAY_MS, RUNNING_POWER_THRESHOLD_WATTS, RUNNING_STATE_COLD, RUNTIME_DEFAULTS, RUNTIME_STATE_POLICY, RUNTIME_STATE_REFRESH_MISS_COOLDOWN_MS, RUNTIME_TO_FORMAT, RawSecretMigrationInputSchema, RawSecretMigrationReportSchema, RawStateResultSchema, ReadGopBytesResultSchema, ReadSegmentBytesResultSchema, ReadWindowBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, ReadingQuantitySchema, RebuildObjectEmbeddingsRefusalSchema, RecentTracksPageSchema, RecentTracksQueryInput, RecommendationReasonSchema, RecordBodySchema, RecordFieldPathSchema, RecordIdSchema, RecordIndexSchema, RecordInputSchema, RecordKindDeclarationSchema, RecordKindNameSchema, RecordNotFoundError, RecordQueryInputSchema, RecordQueryResultSchema, RecordRetentionSchema, RecordSecretRefsSchema, RecordSecretUnavailableError, RecordTooLargeError, RecordTransactOpSchema, RecordTriggerSchema, RecordUniqueViolationError, RecordViewSchema, RecordWhereSchema, RecordWindowSchema, RecordingAvailabilityForDeviceSchema, RecordingAvailabilitySchema, RecordingBandAudioSchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysForDeviceSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingObjectTriggerClassSchema, RecordingOnboardOptionsSchema, RecordingOnboardPatchSchema, RecordingOnboardStatusSchema, RecordingPlaybackSchema, RecordingRangeSchema, RecordingReadSchema, RecordingRebalanceInputSchema, RecordingRebalanceMoveSchema, RecordingRebalancePlanSchema, RecordingRebalanceSkipReasonSchema, RecordingRebalanceSkipSchema, RecordingRetentionSchema, RecordingSignalRuntimeStateSchema, RecordingSignalStatusSchema, RecordingSourceAvailabilitySchema, RecordingSourceOptionsSchema, RecordingSourceSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RecordsError, RedirectLoginMethodSchema, RelocatableMediaCountInputSchema, RelocatableMediaCountSchema, RelocateFootageClassSchema, RelocateFootageInputSchema, RelocateJobSchema, RelocateJobStateSchema, RelocateMediaInputSchema, RelocateResidueInputSchema, RelocateResidueSchema, RenderedAsSchema, RenewDeviceCertificateOutputSchema, RenewDeviceCertificateResultSchema, ReportMotionInputSchema, ReportedFailureContributionSchema, ReportedLoadContributionSchema, RequestCensusGroupSchema, RequestCensusProcedureSchema, RequestCensusSnapshotSchema, RequestCensusStatusSchema, RetrainAnnotationDraftSchema, RetrainAnnotationKindSchema, RetrainAnnotationSchema, RetrainAnnotationSourceSchema, RetrainArchiveResultSchema, RetrainArchiveTargetSchema, RetrainAssistProfileSchema, RetrainAssistResultSchema, RetrainAssistSubjectSchema, RetrainBoxReviewSchema, RetrainCollectionCreateResultSchema, RetrainCollectionRenameResultSchema, RetrainCollectionSchema, RetrainCopyRefusalSchema, RetrainCorpusFilterSchema, RetrainCorpusKpiCameraRowSchema, RetrainCorpusKpiSchema, RetrainCorpusPageFrameSchema, RetrainCorpusPageSchema, RetrainDatasetSelectionSchema, RetrainDatasetStatsSchema, RetrainDatasetVersionSchema, RetrainDismissedSchema, RetrainExportFilterSchema, RetrainExportLayoutSchema, RetrainFrameCandidateSchema, RetrainFrameListSchema, RetrainFrameOriginSchema, RetrainFrameReviewSchema, RetrainFrameSchema, RetrainFrameSelectionSchema, RetrainFrameWorkStateSchema, RetrainLlmAssistResultSchema, RetrainLlmProposalSchema, RetrainLlmReviewSchema, RetrainMacroClassSchema, RetrainOriginSchema, RetrainPipelineBoxSchema, RetrainReviewStatusSchema, RetrainStatusSchema, RetrainTrackSchema, RetrainTrainingCorpusResolveResultSchema, RetrainTrainingCorpusSelectionSchema, RetrainTransitionResultSchema, RevConflictError, RevokeOwnDeviceCertificateResultSchema, RingBuffer, RollingWindowSchema, RootStepSupplySchema, RtpSourceSchema, RtspRestreamEntrySchema, RunGate, RunnerBootCheckSchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerInferenceDeviceSchema, RunnerJumpStepProvisioningSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, RunnerRefusalSchema, RunningStateSourceSchema, RunningStateStatusSchema, SCENE_CONDITIONS, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, SCENE_DEFAULT_ANCHOR_THRESHOLD, SCENE_DEFAULT_CHECK_INTERVAL_SEC, SCENE_DEFAULT_OBSERVATION_SPACING_SEC, SCENE_DEFAULT_QUIET_SECONDS, SCENE_DEFAULT_UNCOVERED_POLICY, SCENE_DIVERGED, SCENE_RESET_RECAPTURES, SCOPE_PRESETS, SECRET_CLEAR, SECRET_META, SECRET_REF_SCHEME, SENSOR_FEATURES, SENSOR_MAP, SERIAL_CAPACITY_CAMERA_FPS, SERIES_KINDS, SERVER_NAME_MAX_LENGTH, SERVER_NAME_SETTING_KEY, SESSION_LOST_ALERT_CATEGORY, SESSION_PLACEMENT_SETTING_KEY, SHARE_AFFINITY_TOLERANCE_SESSIONS, SHARE_SOURCE_SETTING_KEY, SHARE_VIEW_KINDS, SHARE_VIEW_MAX_DEVICES, SINGLE_HUB_ADDRESS_ROLES, SOURCE_CAPS, SOURCE_CAP_ACTIVE_FIELD, SOURCE_CAP_CHANGED_AT_FIELD, SOURCE_DEVICE_TYPES, SOURCE_INFO_METADATA_KEY, SSO_STATE_COOKIE, SSO_STATE_COOKIE_MAX_AGE_SEC, STATE_LABELS, STATE_LABEL_KEYS, STATIONARY_OVERLAY_STYLE, STATISTIC_STATS, STORAGE_ACCESS_FALLBACK, STORAGE_BYTES_PER_GB, STORAGE_LOCATION_MODES, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SYSTEM_SCOPE_DEVICE_METHODS, SceneCheckSchema, SceneConditionSchema, SceneConfirmSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusForDeviceSchema, SceneMonitorStatusSchema, SceneReferenceSchema, SceneUnavailableSchema, SceneUncoveredPolicySchema, SceneVerdictSchema, ScopedTokenSchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerNameInfoSchema, ServerNameSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateOutcomeSchema, ServerUpdateStateSchema, SessionHealthTracker, SessionPlacementPolicySchema, SessionTriggerSchema, SetCameraSensorsInputSchema, SetLoggingSettingsInputSchema, SetShareSourceInputSchema, SetSiteLocationInputSchema, SetTrackPurityInputSchema, SetTrackPurityResultSchema, SetTrackRelationInputSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShareSourceSchema, ShareViewGrantSchema, ShareViewScopeSchema, ShareWeightsSchema, SiteLocationSchema, SiteLocationSourceSchema, SiteLocationStatusSchema, SiteZoneSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StaleDevicePinSchema, StartEmbeddedInputSchema, StartEnrollmentOutputSchema, StationaryObjectSchema, StatisticHelperSpecSchema, StatisticWindowSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, StorageAccessSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, StorageCleanupInputSchema, StorageCleanupJobSchema, StorageCleanupPhaseSchema, StorageCleanupStatusInputSchema, StorageDrainProgressSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, StorageEvictionPolicySchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageKindSchema, StorageLocationDeclarationSchema, StorageLocationModeSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, StorageMigrationClassSchema, StorageMigrationDestinationsSchema, StorageMigrationDrainInputSchema, StorageMigrationFindingCodeSchema, StorageMigrationFindingSchema, StorageMigrationFootageMoveInputSchema, StorageMigrationInputSchema, StorageMigrationJobSchema, StorageMigrationLaneSchema, StorageMigrationLeaseInputSchema, StorageMigrationMediaMoveInputSchema, StorageMigrationModeSchema, StorageMigrationMoveProgressSchema, StorageMigrationMoveSchema, StorageMigrationMoverSchema, StorageMigrationParticipantSchema, StorageMigrationPhaseSchema, StorageMigrationPlanSchema, StorageMigrationResidueSchema, StorageMigrationSourcesSchema, StorageOccupancyReportSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, StorageTableSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StoredRecordKindDeclarationSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSignalSchema, StreamSignalsStatusSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SuggestSharesInputSchema, SuggestSharesResultSchema, SuggestedDeviceShareSchema, SuggestedNodeShareSchema, SuppliedRootOutputSchema, SwitchStatusSchema, SystemHeldSecretNameSchema, SystemMetricsSchema, SystemMirror, TIMELAPSE_DENSE_FLOOR_SEC, TIMEZONES, TRACK_RELATIONS_DEFAULT_LIMIT, TRAINING_JOB_SCHEMA, TRAINING_RESULT_SCHEMA, TRANSCODE_DOWN_MAX_BITRATE_KBPS, TRANSCODE_DOWN_MAX_HEIGHT, TamperStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TerminalInstanceInfoSchema, TerminalLegacyCameraSchema, TerminalOutputBatchSchema, TerminalOutputEventSchema, TerminalProfileInfoSchema, TerminalSessionInfoSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestConnectionStatusEnum, TestResultSchema, ThresholdHelperSpecSchema, TimelapseRuleInputSchema, TimelapseRulePatchSchema, TimelapseRuleSchema, TimelapseTemplateSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TraceNodeOutcomeSchema, TraceValueSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackFlagsPatchSchema, TrackFlagsSchema, TrackPlacementSchema, TrackProjectionSchema, TrackPuritySchema, TrackPurityValueSchema, TrackRelationKindSchema, TrackRelationRefusalSchema, TrackRelationSchema, TrackSchema, TrackSideSchema, TrackSourceSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TrainerSourceRefSchema, TrainingAcceleratorRefSchema, TrainingBaseModelSchema, TrainingCanarySchema, TrainingCanaryTargetSchema, TrainingCatalogDraftSchema, TrainingCorpusSelectionSchema, TrainingCredentialCheckSchema, TrainingEvalClassSchema, TrainingEvalReportSchema, TrainingEventSchema, TrainingExportDeviceTotalsSchema, TrainingExportSchema, TrainingExportSummarySchema, TrainingFailureReasonSchema, TrainingGpuOptionSchema, TrainingJobPlanSchema, TrainingJobRequestSchema, TrainingJobSchema, TrainingJobSpecSchema, TrainingJobStateSchema, TrainingLogLineSchema, TrainingPresetSchema, TrainingProgressPointSchema, TrainingProviderDefaultsSchema, TrainingProviderDescriptorSchema, TrainingProviderEntrySchema, TrainingProviderTypeSchema, TrainingProviderUpdateEntryInputSchema, TrainingRefusalReasonSchema, TrainingRegionOptionSchema, TrainingResultFileSchema, TrainingResultSchema, TrainingSplitPlanSchema, TrainingStageSchema, TransactRefusedError, TransportPlaneCountsSchema, TransportPlaneSchema, TurnServerSchema, UNATTRIBUTED_BUCKET_KEY, UNIT_TABLE, UNLOCK_CONFIRMATION, USE_ROOT_MODEL_DEFAULTS, USE_ROOT_MODEL_SETTING_KEY, UnindexedFilterError, UninstallNodeOutcomeSchema, UninstallNodeResultSchema, UninstallPackageResultSchema, UnitConversionError, UnknownRecordKindError, UnreleasedClaimSchema, UnstampedEventMediaCountSchema, UnstampedRowsSchema, UpdateBlockerSchema, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserScopeSchema, UserSummarySchema, VECTOR_INDEX_DIM_CONFLICT, VIDEOCLIPS_MAX_OFFER_BYTES, VIDEOCLIPS_MAX_READ_BYTES, VIEWER_FEATURES, VIEWER_FEATURE_IDS, VISIT_MERGE_GAP_MS, VOCAB_TEMPLATES, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VectorDeclareIndexInputSchema, VectorDeleteByFilterInputSchema, VectorDeleteInputSchema, VectorDeleteResultSchema, VectorFilterSchema, VectorGetInputSchema, VectorGetResultSchema, VectorItemSchema, VectorMatchSchema, VectorMetadataSchema, VectorMetricSchema, VectorQueryInputSchema, VectorQueryResultSchema, VectorStatsInputSchema, VectorStatsResultSchema, VectorUpsertInputSchema, VectorUpsertResultSchema, VibrationStatusSchema, VideoEncodeSchema, ViewerDeviceAllowSchema, ViewerFeatureIdSchema, ViewerTokenScopeSchema, WEBRTC_CLIMB_HOLD_CODES, WEBRTC_EGRESS_PROFILE, WEBRTC_TRY_BLOCKERS, WEEKLY_MASK_LENGTH, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcClimbHoldSchema, WebrtcLadderDecisionSchema, WebrtcSessionDebugSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WebrtcTierFailureSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, WrapperActivationReadSchema, WrapperEvidenceSchema, WrapperIdentitySchema, WrapperKindSchema, YAMNET_TO_MACRO, ZoneCrossingDirectionSchema, ZoneCrossingSchema, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, __resetLogChannelRegistryForTests, acceleratorKindOf, accessoriesCapability, accessoryChildrenComplete, accessoryChildrenUnknown, accessoryStableId, actionSourceCapability, actionsCapability, actionsForBoundCaps, actionsForDevice, actionsForDeviceType, actionsForDevices, activateAlarmProfile, activeForReducer, actuatorMethodRow, addonCatalogHref, addonIdOfActionId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advertisedHubOrigins, aggregateThroughputFactor, airQualitySensorCapability, alarmDeviceBlocksArming, alarmDeviceSecureOnArm, alarmPanelCapability, alarmPatchLanded, alarmProfileById, alertEpisodeId, alertEpisodeKind, alertEpisodePayload, alertNodeId, alertsCapability, allDoActions, allowedSuppliedEffect, ambientLightSensorCapability, annotateClipsWithEventLabels, appFlowLocation, appendTrace, applianceDeviceType, applianceExport, applyBlockingEdit, applyCropClassFloors, applyModeDelaysEdits, applyModeDeviceListEdit, applyModelBoundSettings, applyNonBlockingEdit, applySecureOnArmEdit, arithmeticDraft, armRemovalReconcile, arrayItemFieldPath, asBoolean, asJsonArray, asJsonObject, asNumber, asRecordsError, asString, assertTimelapseCadences, assertTransactScope, assertValidDeclaration, assignNodeColorId, audioAnalysisCapability, audioAnalyzerCapability, audioChunkBytesPerSample, audioCodecCapability, audioIsFailClosed, audioKindId, audioLabelChoices, audioMetricsCapability, audioModeOf, audioOrDefaults, audioPlanFromEncodeProfile, audioScaleEraOf, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, bareAddonId, baseUnitOf, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, bucketStartOf, buildActionSteps, buildAddonRouteProvider, buildAudioArgs, buildBenchStepTree, buildCapabilityLookup, buildDeviceAdminUrl, buildDeviceEnrollmentLink, buildDeviceSignatureMessage, buildEventKindDescriptor, buildFfmpegArgs, buildInputArgs, buildModelVariantGroups, buildNcTaxonomy, buildPlusCatalogClassMap, buildRoleScopes, buildSecretRef, buildSessionLostAlert, buildStreamParamsConfigSchema, buildSubjectPath, buildTriggerTrace, buildVideoArgs, buildViewerLink, builtCapabilityBlockers, bundledCamstack, buttonCapability, calendarEventLocalSpan, calendarEventOnLocalDay, calendarSourceCapability, calendarsCapability, cameraCredentialsCapability, cameraGridLayoutCapability, cameraOwnsMotionViaSensor, cameraPipelineConfigCapability, cameraScopedStepSettings, cameraSensorRefKey, cameraStreamsCapability, canConvertUnit, canonicalEgressPlan, canonicalIconKey, canonicalizeAppCallback, capabilityScopesOf, capacityForModel, capacitySessionsOf, carbonMonoxideCapability, cellsToRects, checkRoleAddress, claimedRequestOrigins, classifyBearerPrincipal, classifyCamerasForBenchmark, classifyFieldSource, classifyInferenceHardware, classifyRetrainReview, classifySecretWrite, classifyStoreError, classifyStream, classifyStreams, clearKnownSecrets, clearModelBoundOverrides, clearModelBoundSetting, climateControlCapability, clipEventLabelDepsFromApi, clipExportFailure, clipExportFailureOf, clipLabelsForWindow, clipReasonHeaderValue, cloneAlarmSettings, cloneStatefulExpressionMemory, clusterModelSettingKey, clusterStepSettingFieldsFor, clusterStepSettingKey, codecIsAccepted, collectHydratedFieldEntries, collectHydratedFieldValues, collectKeychainStoredKeys, collectMirrorSources, collectModelBoundKeys, collectSecretConfigKeys, collectSecretLeaves, collectSecretMarkerRefs, collectZodSecretPaths, colorCapability, colorForKind, commitWatchdogRestart, compareToTarget, compileExpression, compileExpressionSafe, compileHelper, compileKeyedArrayOverride, compilePulseOverride, compileScalarOverride, compileSpanOverride, composeSwitchedOff, composedDeviceRef, composedDeviceStableId, composerCapability, compositionEdges, compositionFeatureEnabled, compositionFieldKey, compositionFillStatus, compositionItemFieldPath, compositionReadKey, compositionSliceKey, compositionSourceKey, compositionSourceRefs, computeCapacityShares, computeScores, conditionDepth, conditionExclusionReason, conditionVisibleForKind, connectionTestCapability, connectivityCapability, consumableFormOf, consumableKindOf, consumableLowPercentOf, consumablesCapability, contactCapability, containingParentIndex, controlCapability, convertPresetFeature, convertUnit, convertUnitTargets, coralUsableUnits, coreBlockAddonId, coreBlockComposition, coreBlockIdFromAddonId, coreBlockSourceKind, coreBlocksCapability, cosineSimilarity, countConditionLeaves, countRecoverySkips, coverCapability, createAlarmProfile, createDeviceExtensionProvider, createDeviceProxy, createDurableState, createEvent, createEventBusSliceSource, createExpressionScope, createHwAccelCache, createLazyTrpcSource, createLogChannelsProvider, createMirrorSource, createRecordsAccess, createRuntimeStateBridge, createSecretsAccess, createSliceHandle, createStatefulExpressionMemory, createSystemProxy, customAction, customModelRegistryCapability, dataStoreProviderCapability, databaseSnapshotCapability, dayNightCapability, dayOfWeekToIndex, declarationOwnerNodeId, declarationsOf, declareLogChannel, declaredSeriesKind, decodeCompositionToCards, decodeKeyedArrayOverride, decodePulseOverride, decodeScalarOverride, decodeVectorBase64, decoderCapability, defaultDeliveryForSection, defaultDeviceFor, defineCustomActions, defineEntryKind, defineExtensionSlotProvider, defineRecordKinds, dehydrateConfigField, dehydrateSchema, deleteAlarmProfile, derivativeDraft, derivativeUnitLabel, deriveBatteryPresence, deriveCameraSwitches, deriveDetailCropRect, deriveMaskSupplies, derivePostTriggeredAction, deriveRecordingMode, deriveRootFaceRefineRect, deriveRootSupplies, describeComposableCaps, describeCustomActions, describeModelVariant, describeOnboardClamp, describeOnboardRefusal, describeRootSupplies, describeRootSupply, describeStateField, describeSystemEventDeliveryProblem, describeSystemEventFamilyProblem, describeTopLevelStateFields, detectAccessRole, detectionClassMatches, detectionPipelineCapability, deviceAdminLinkCapability, deviceAdoptionCapability, deviceAttentionKind, deviceBackendToFormat, deviceCredentialsCapability, deviceCustomAction, deviceDiscoveryCapability, deviceDoFamily, deviceExportCapability, deviceExtensionCapability, deviceHistoryCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceRefusalFromMessage, deviceRemovalHookCapability, deviceSelectorMatches, deviceStateCapability, deviceStatusCapability, diffStepSettings, disarmRoseMemory, dishwasherCapability, displayPaletteCapability, displayUnitFor, doActionSelectValue, dominantClipLabels, doorbellCapability, droppedConditionsForKind, edgetpuDelegateDevice, effectiveStepSettings, egressTranscodeSharingKey, egressTransportFromRequest, electByShare, electByShareWithAffinity, eligibleUnderBenchmark, embeddingEncoderCapability, embeddingModelFailedError, embeddingModelFailedOf, embeddingRefusalOf, embeddingRequirementsFailedError, embeddingRequirementsUnavailableError, emitDownForOwnedCaps, emitReadiness, emitsCollectionSelector, encodeCardsToComposition, encodeProfileFromStreamShape, encodeVectorBase64, ensureAlarmProfiles, entryBody, enumSensorCapability, enumerateInferenceDevices, enumerateItemArrayFields, enumerateSchemaFields, errMsg, estimateNodeBenchmarkDurationMs, evaluateAggregate, evaluateAst, evaluateCompositionField, evaluateConditionTree, evaluateCount, evaluateDerivative, evaluateExpressionSource, evaluatePoolMemory, evaluateRose, evaluateSensorEdge, evaluateSensorLevelEdge, evaluateStatefulExpressionCall, evaluateStatistic, evaluateZoneRules, event, eventEmitterCapability, eventKindLabel, eventOverlapsClipWindow, evictionPolicyForMode, evictionPolicyOfLocation, expandAudioChunkToF32le, expandCapMethods, expandContainer, expandSystemEventClasses, exportSubjectOf, exposeBlockDevices, expressionContainsBuiltinCall, expressionDraft, extensionSlotRef, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, failureContributionCapability, failureRate, fanControlCapability, fanOutTargets, featureFieldEntries, featureOfRole, featureProbeCapability, featureSources, feederCustomizationExample, feederExampleSources, ffmpegRate, fieldEntryToSource, fieldReads, fieldUnitKeys, fieldsPinnedAtValueBelow, filesystemBrowseCapability, findCandidateCycles, findCompositionCycles, findTimezone, floodCapability, foldSnapshotByFunction, foreignCapacityCells, forgetKnownSecret, formatDeviceRevoker, formatForRuntime, formatMediaOwnerKey, formatMinutes, formatPaletteViolations, formatParkedFor, formatReading, formatSecretScope, formulaProblem, freshResults, fuseRecoveredDetections, gasCapability, gbToBytes, generateAutomationBlock, getAudioMacroClassIds, getByPath, getCapsByProviderKind, getLogChannelRegistry, getTaxonomyEntry, gifDeriveSpeed, gifFilterComplex, gifFromMp4Args, globalSecretScope, grantRowsOf, groupActiveCapability, groupCommandsCapability, groupStatusCapability, groupTemplate, hasModelBoundOverrides, hasMotionTrigger, hasUrlScheme, heatingValveCapability, helperMembers, helperSaveProblems, hfModelUrl, historyFieldsFor, historyItemFieldPath, historyUnitFor, htmlToText, hubAddressHostname, hubMotionNativeProvider, humidifierCapability, humiditySensorCapability, hydrateSchema, iconCategoryLabel, iconEntry, iconsInCategory, imageCapability, imageModesForKind, imageSettingsCapability, inferExpressionKinds, inferModelProvider, ingestReading, initialPoolMemoryState, integralCadenceMs, integralDraft, integrateReading, integrationsCapability, intercomCapability, internalActionId, interpolate, interpretStoredClusterModel, invalidClusterStepModelEntries, invertPresetFeature, invocationFromEncodeProfile, isAgentOnlyPlacement, isAlarmControllableCap, isAlertEpisodeOpen, isAlertEpisodeSeverity, isAppLinkBase, isAppStartRefusal, isApplianceKind, isArrayOutputSchema, isAudioChunkFormat, isAudioClassName, isAudioLabelSelected, isAudioRule, isAutomaticShareSource, isBaseConditionKey, isBatteryPresenceFault, isClusterScopedStep, isCollectionArrayMethod, isCredentialTokenPayload, isDefaultAlarmProfileId, isDefaultAppConnectionEndpoint, isDefinitiveDeviceRefusal, isDeployableToAgent, isDetectionMacroClass, isDeviceConfigCap, isDeviceScopedCap, isDoActionActuatable, isDoPickerDeviceType, isDrawableSubjectPath, isEmbeddingModelFailed, isEvent, isEventKindLabelKey, isEventOwnerType, isFirstLevelMacroClass, isHeldBackTemplateVar, isHistoryHelper, isIconKey, isInternalActionId, isIsolatedBuiltin, isKeychainStoredField, isKnownTemplateVar, isLabelSupplyStepId, isLocationEnabled, isMediaOwnerType, isModelScopedStepSettingKey, isNode, isOauthLandingReason, isObjectInput, isOccupancyRule, isOwnerOnlyEventCategory, isPlugApplianceType, isReadingQuantity, isRemovedModelId, isRestoredCap, isRetiredClearKey, isRootSuppliableStepId, isSameAddonId, isScheduleActive, isSecretClear, isSecretConfigField, isSecretFieldView, isSecretMarker, isSecretMarkerLike, isSecretRef, isSecretRefOwnedBy, isSingleHubAddressRole, isSkippedTrace, isSoftwareDecode, isSourceCap, isStateLabelKey, isStatefulBuiltin, isStorageLocationMode, isSystemDelivery, isSystemEventFamily, isSystemEventRecoveryKind, isSystemEventSummaryRule, isSystemRuleKind, isUnfilledRequiredProblem, isVectorIndexDimConflict, isVoidInput, isZodSecret, ituDbfsFromPreEpoch, jobKindSchema, kebabToCamel, keychainAdminCapability, keychainCapability, kindOfValue, kindsForDiscriminator, knownSecretCount, knownValues, lawnMowerControlCapability, legacyAutoLinkIds, legacyImageMode, legacyModeOf, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, linkedLabelStepId, linkedStepOf, listBenchDetailSteps, llmCapability, llmRuntimeCapability, loadContributionCapability, localNetworkCapability, localizeConfigTree, locationIconKey, locationSimilarity, lockControlCapability, logBannerArgs, logChannelsCapability, logDestinationCapability, logLevelAtMost, loginMethodCapability, looseSchema, makeInMemoryRecords, makeProfileBrokerId, makeSecretMarker, makeSourceBrokerId, mapAudioLabelToMacro, mapSecretLeaves, markFieldEdited, markdownToHtmlLite, markdownToText, maskUrlCredentials, matchDoAction, maxDurationMs, mayReadLocation, mayWriteToLocation, measuredCapacityFromResults, measuredDetectorCells, mediaPlayerCapability, memoizePinnedFfmpeg, mergeClipLabels, mergeKeyedArrayItem, mergeOverrides, mergeScalarTarget, mergeSecretStatePaths, mergeSettingsBags, mergeSkipTraces, mergeSourceInfo, meshNetworkCapability, meterCapability, method, methodAccessForHttpMethod, methodRefusal, methodRoleOf, metricsProviderCapability, migrateLegacyDeviceSignalConfig, minutesToTimeOfDay, modeMayRead, modeMayWrite, modelBindingKey, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, modelScopedStepSettingKeys, motionCapability, motionDetectionCapability, motionSourceLabel, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, navigationCapability, ncAlarmSystemDefaultSettings, ncMediaPolicyError, networkAccessCapability, networkLinkCapability, networkQualityCapability, nextLocalMidnight, nodeBenchmarkRefusals, nodeCertificatesCapability, nodePickerItems, nodePin, nodesCapability, normalizeAddonInitResult, normalizeAudioLabel, normalizeCoreBlockWrite, normalizeNcMediaPolicy, normalizeNodeId, normalizeOrigin, normalizeSecretOwner, normalizeTokenScopes, normalizeUnit, normalizedArea, notificationOutputCapability, notificationRulesCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, oauthLandingUrl, objectInputDeclaresAddonId, objectInputDeclaresRequiredDeviceId, occupancyScope, oidcConnectionsCapability, omitTransientConfig, openReset, openStatistic, optionalAncestors, optionalMethod, osdCapability, osdManagerCapability, overlayClusterStepSettings, ownedSlice, packagePickerItems, paintHex, paletteEntryLabel, paletteFromInput, paletteFromStored, paletteLegend, paletteResultSchema, paletteSwatchSchema, parseAcceleratorFactsJson, parseAdminBase, parseAlertEpisodePayload, parseAppAuthCallback, parseAppFlowRequest, parseAppPageLang, parseCameraStreamConfig, parseColorInput, parseCredentialScopes, parseDeviceEnrollmentLink, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseMediaOwnerKey, parseOauthLandingFragment, parseOccupancyScope, parseProcStatus, parseProfileBrokerId, parseRetrainRevisionConflict, parseRuleSection, parseSecretPath, parseSecretRef, parseSecretStatePath, parseSessionPlacementPolicy, parseShareSource, parseStreamParamsFormPatch, parseTrainingEventLine, patchAudio, petFeederCapability, pickAccessoryControl, pickAppLinkHub, pickClusterStepModels, pickClusterStepSettings, pickDetailCropConvention, pickFaceRescoreIntervalMinutes, pickInvalidClusterStepModels, pickNativeLeaseOverride, pickPreferredRtspEntry, pickRequestOrigin, pickRestartCandidate, pickVideoEncoder, pickerForCondition, pickerForRuleClasses, pinUnderBenchmark, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, planComposition, planCompositionEvents, planItems, planMotionCropRegions, planMotionCrops, planRecoveryCrops, planResetTier, planStatisticTier, plateGalleryCapability, platformProbeCapability, plusCatalogDefaultClassFloors, plusCatalogLabelFields, poolMemoryThreshold, powerMeterCapability, prepareNotification, presenceCapability, presetById, pressureSensorCapability, primaryCapForRole, principalMayReachAddon, privacyMaskCapability, problemsBlockSave, procedureAuthKey, projectKeyedArrayAssignment, projectPulseAssignment, projectScalarAssignment, projectSpanAssignment, projectSubjectPath, providerMotionEvent, ptzAutotrackCapability, ptzCapability, publicEventCategories, pythonScriptForBackend, quantityFromUnit, rankStreams, readClusterStepModels, readClusterStepSettings, readDetailCropConvention, readDeviceStateFrom, readErrorI18n, readFaceRescoreIntervalMinutes, readHubMotionDetected, readHubMotionStatus, readKeyedArrayItems, readMotionTriggeredBy, readNativeLeaseOverride, readNodePin, readRecoveryRecipe, readRecoveryRecipeForSteps, readTimelapseGeneratedAt, readUseRootModel, readinessKey, readingMeta, rebootCapability, recommendNode, reconcileBlockDevices, reconcileRemovedDevices, recordArrayItemPath, recordEntriesCapability, recordSecretCollection, recordSecretRef, recordingArchiveCapability, recordingCapability, recordingExportCapability, recordingOnboardCapability, recordingSignalCapability, recordsCapability, recordsErrorFromMessage, rectsToCells, reducePoints, reducerForActive, registerKnownSecret, remapCropDetections, removeScalarTarget, renameAlarmProfile, renderVocabPhrase, replacedFieldKeys, reportIsScalable, requestMountPrefix, requiredTopLevelKeys, requiresPython, reservedSourceOwner, resetPoolBaseline, resolveActionVariables, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAppConnections, resolveBucketMs, resolveCapMount, resolveClipSearchMinScore, resolveClusterStepModelId, resolveContainerPrimaryChild, resolveCoreBlockEntry, resolveCoreBlockFiles, resolveCreateExportSubject, resolveDeviceControlKind, resolveDeviceProfile, resolveDeviceTarget, resolveEffectiveShares, resolveEgressDecodeHwAccel, resolveExportProfiles, resolveFormat, resolveHubAddressRoles, resolveHydratedFieldValue, resolveIconKey, resolveInternalAddress, resolveLatencyColumn, resolveLocationMode, resolveMethodAuth, resolveMethodRole, resolveModeDelays, resolveModeNotifyPolicy, resolveModelBoundSetting, resolveMutate, resolveNcMediaImage, resolveNotificationTapAddress, resolvePoolMemoryPolicy, resolvePublicEndpoint, resolveRecordingProfiles, resolveRootSupply, resolveRunnerId, resolveSecretMarkers, resolveSecretViewsIn, resolveServerName, resolveStepArgs, resolveStreamMaps, resolveVariantModelId, resolveViewableDeviceIds, resultCellKey, resultStandings, retrainBoxIou, retrainRevisionConflictMessage, roleSpec, rollingDurationMs, roomCompositionExample, rootSuppliesOf, rootSupplyServes, ruleAutoTriggersAlarm, ruleBelongsToAlarm, ruleDeviceCompatCapNames, ruleDeviceCompatCapQueries, ruleEditorSectionsForKind, ruleGatedOnArmedState, ruleGroupingApplies, ruleKindOf, ruleKindSpec, ruleMatchesSection, ruleSection, ruleSectionOf, ruleSeedForSection, ruleTriggerZoneIds, runFanOut, runInferenceStep, runSteps, runningFromDishwasherOperation, runningFromLawnMower, runningFromMediaPlayer, runningFromVacuumState, runningStateCapability, runtimeDevices, runtimeFieldUnit, runtimeStatePolicyFor, sameDoFamily, sameHelperBody, sameRead, scalarTargetCount, sceneMonitorCapability, scheduleForSendTimes, schemaDeclaresAnyField, scopeInherits, scopeKey, scopesAllowAddon, scopesAllowAddonRoutes, scopesAllowDeviceCap, scopesAllowOwnPreferences, scopesGrantAdmin, scoreRuntimes, scriptRunnerCapability, scrubKnownSecrets, searchIcons, secretArrayPrefixes, secretTreeFromPaths, secretTreeFromSchema, secureActuationFor, selectAppConnectionEndpoints, selectAssignedProfileSlots, selectRecoveryStep, sendTimesForEditor, sendTimesOfSchedule, sensorRaisedOf, sensorTransitionNeverFires, sensorTransitionOffered, servedTemplateVars, serverManagementCapability, sessionLostAlertId, sessionsOfDeviceCell, setByPath, setFormulaExpr, setPaletteInputSchema, settingValuesEqual, settingsBelow, settingsStoreCapability, shareViewGrantOf, sharedActuatorFeatures, sharedActuatorMethods, sharedColorModes, sharedLightCaps, shortHostname, shortSecretRefHash, signalPercentFromBars, signalPercentFromRssi, siteZoneKey, skipSignature, sleep, sleepCancellable, sliceActiveValue, sliceChangedAt, smokeCapability, smtpProviderCapability, snapshotCapability, sourcePickForAppliance, sourcePickForHistory, sourcePickForMath, sourcePickForTemplate, splitTranslationRef, squareAround, ssoBridgeCapability, startMoverUnderClearance, startReachabilityPoll, stateLabel, stateVocabularyFor, statisticCadenceMs, statisticDraft, stepModelRunsOnFormat, stepPulse, stepSettingSource, stepSpan, storageAdminCapability, storageCapability, storageEvictableCapability, storageMigrationCapability, storageOccupancyCapability, storageProviderCapability, storedFromReady, storedPaletteSchema, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, streamSignalsCapability, stripRetiredBandPreBufferSec, strippedOfLegacyReadOnly, subKindsOf, subjectHasPath, subjectPathSampleFromBox, subjectPathSvgPoints, summarisePrivacyAudio, summarizeEffectiveScope, summarizeReview, supplyFor, supportedRuntimes, swatchHex, switchCapability, switchedOffIds, syncActiveAlarmProfileSettings, synthesizeSourceInfo, systemCapability, systemEventClassKinds, systemEventClassOf, systemEventClassesFor, systemEventDeliveryProblems, systemEventFamilyOf, systemEventFamilyProblems, systemEventFilterApplies, systemEventFilterAppliesToAnyKind, systemEventKindNamesOf, systemEventKindsOfFamily, systemEventSummaryScheduleOf, systemEventSummarySplitOf, systemFamilyOfKind, systemRuleKindOf, tamperCapability, targetFeature, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, templateCarriesSummary, templateDeviceType, templateVarDeliveryApplies, templateVarKindApplies, templateVarSystemEventApplies, templateVarsFor, terminalSessionCapability, textToHtml, thresholdDraft, thresholdToBase, thresholdToDisplay, timeOfDayToMinutes, toAppLinkHubOrigin, toDeviceSummary, toExpressionValue, toNodeId, toPercentShares, toSecretFieldView, toStreamSourceEntry, toastCapability, toggleAudioLabel, tokenize, trainingCapability, trainingProviderCapability, transcodeBody, transformSecretWrite, tryConvertDelta, tryConvertUnit, turnProviderCapability, unitCompanionField, unitDimension, unitsForDimension, unreachableExtensionSlotRow, unwrapSchema, updateCapability, userError, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateComposition, validateCustomAddress, validateExpressionSource, validatePalette, validateRecipeBounds, valveCapability, vectorDimFromBase64, vectorIndexDimConflictError, vectorStoreCapability, vibrationCapability, videoclipsCapability, viewerAdmitsDevice, viewerHoldsRole, viewerLinkBaseOf, viewerScopeOf, viewerUiCapability, actionsForDevice$1 as vocabularyActionsForDevice, triggersForDevice as vocabularyTriggersForDevice, waterHeaterCapability, wattMillisecondsToKwh, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, weeklyMaskIndex, weeklyMaskIsUniform, weeklyMaskToWindows, widenDeviceConstructor, windowsToWeeklyMask, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, withClipEventLabels, withFieldFrom, withLocationMode, withSystemEventClasses, withoutCallerStamp, withoutField, withoutKeyedArrayItem, writeModelBoundSetting, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };