@camstack/types 1.2.263 → 1.2.265

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/automation/recipe.d.ts +1 -1
  2. package/dist/capabilities/composer.cap.d.ts +328 -0
  3. package/dist/capabilities/control.cap.d.ts +4 -4
  4. package/dist/capabilities/core-blocks.cap.d.ts +2339 -0
  5. package/dist/capabilities/custom-model-registry.cap.d.ts +44 -2
  6. package/dist/capabilities/day-night.cap.d.ts +8 -8
  7. package/dist/capabilities/device-extension.cap.d.ts +8 -8
  8. package/dist/capabilities/index.d.ts +4 -2
  9. package/dist/capabilities/model-convert.cap.d.ts +22 -1
  10. package/dist/capabilities/model-distributor.cap.d.ts +44 -2
  11. package/dist/capabilities/notification-rules.cap.d.ts +74 -74
  12. package/dist/capabilities/osd-manager.cap.d.ts +13 -13
  13. package/dist/composition/composition-graph.d.ts +36 -0
  14. package/dist/composition/composition-report.d.ts +264 -0
  15. package/dist/composition/composition.d.ts +362 -0
  16. package/dist/composition/evaluate-field.d.ts +63 -0
  17. package/dist/composition/examples.d.ts +10 -0
  18. package/dist/composition/expression-kinds.d.ts +36 -0
  19. package/dist/composition/index.d.ts +12 -0
  20. package/dist/composition/state-fields.d.ts +19 -0
  21. package/dist/composition/validate-composition.d.ts +46 -0
  22. package/dist/device/schema-fields.d.ts +3 -0
  23. package/dist/expression/builtins.d.ts +30 -2
  24. package/dist/generated/addon-api.d.ts +57 -0
  25. package/dist/generated/capability-router-map.d.ts +5 -2
  26. package/dist/generated/method-access-map.d.ts +1 -1
  27. package/dist/generated/system-proxy.d.ts +1 -1
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +1388 -83
  30. package/dist/index.mjs +1314 -84
  31. package/dist/notification/rule-kinds.d.ts +3 -2
  32. package/dist/types/models.d.ts +80 -2
  33. package/package.json +1 -1
@@ -0,0 +1,10 @@
1
+ import { type Composition, type CompositionSourceRef } from './composition.js';
2
+ export declare const ROOM_OCCUPANCY_WINDOW_MS = 300000;
3
+ export declare const ROOM_EXAMPLE_TEMPERATURE_SOURCES: readonly CompositionSourceRef[];
4
+ export declare const ROOM_EXAMPLE_MOTION_SOURCES: readonly CompositionSourceRef[];
5
+ export interface RoomExampleInput {
6
+ readonly temperatureSources: readonly CompositionSourceRef[];
7
+ readonly motionSources: readonly CompositionSourceRef[];
8
+ readonly occupancyWindowMs: number;
9
+ }
10
+ export declare function roomCompositionExample(input: RoomExampleInput): Composition;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * What an expression can PRODUCE: the static half of type validation at save
3
+ * (D659). The language is untyped at runtime; this walk gives the set of value
4
+ * kinds the result may take, so a save that would write a string into
5
+ * `celsius`, or a possible null into a non-nullable field, is refused by name
6
+ * before it is stored.
7
+ */
8
+ import type { ExpressionValue } from '../expression/ast.js';
9
+ export type ExpressionValueKind = 'number' | 'string' | 'boolean' | 'null';
10
+ export type ExpressionKindSet = ReadonlySet<ExpressionValueKind>;
11
+ export interface FixedKindRule {
12
+ readonly kind: 'fixed';
13
+ readonly result: readonly ExpressionValueKind[];
14
+ }
15
+ /** `coalesce`: the first non-null argument, null only when every argument may be null. */
16
+ export interface CoalesceKindRule {
17
+ readonly kind: 'coalesce';
18
+ }
19
+ export type BuiltinKindRule = FixedKindRule | CoalesceKindRule;
20
+ /** One rule per builtin. `expression-kinds.spec.ts` fails for a builtin missing here. */
21
+ export declare const BUILTIN_RESULT_KINDS: Readonly<Record<string, BuiltinKindRule>>;
22
+ export interface InferExpressionKindsInput {
23
+ readonly expr: string;
24
+ readonly bindingKinds: ReadonlyMap<string, ExpressionKindSet>;
25
+ }
26
+ export interface InferredKinds {
27
+ readonly ok: true;
28
+ readonly kinds: ExpressionKindSet;
29
+ }
30
+ export interface InferenceFailure {
31
+ readonly ok: false;
32
+ readonly error: string;
33
+ }
34
+ export type InferExpressionKindsResult = InferredKinds | InferenceFailure;
35
+ export declare function kindOfValue(value: ExpressionValue): ExpressionValueKind;
36
+ export declare function inferExpressionKinds(input: InferExpressionKindsInput): InferExpressionKindsResult;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Compositions: composed devices (D659). This is the module barrel; leaf files
3
+ * inside @camstack/types import the deep modules, never this file.
4
+ */
5
+ export * from './composition.js';
6
+ export * from './composition-graph.js';
7
+ export * from './composition-report.js';
8
+ export * from './evaluate-field.js';
9
+ export * from './examples.js';
10
+ export * from './expression-kinds.js';
11
+ export * from './state-fields.js';
12
+ export * from './validate-composition.js';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * What a capability's state field IS: kind, nullability, whether required. The
3
+ * validator needs nullability, which `enumerateSchemaFields` does not report,
4
+ * and that decides a field's unavailable mode (D393).
5
+ */
6
+ import { z } from 'zod';
7
+ import { type WireableField } from '../device/schema-fields.js';
8
+ export interface StateFieldDescription {
9
+ readonly path: string;
10
+ readonly kind: WireableField['kind'];
11
+ readonly nullable: boolean;
12
+ readonly required: boolean;
13
+ /** Present only when `kind === 'enum'` — the closed set of strings the field accepts. */
14
+ readonly enumValues?: readonly string[];
15
+ }
16
+ export declare function describeStateField(schema: z.ZodType, path: string): StateFieldDescription | null;
17
+ export declare function describeTopLevelStateFields(schema: z.ZodType): ReadonlyMap<string, StateFieldDescription>;
18
+ /** Top-level keys a value MUST carry: those whose schema refuses `undefined`. */
19
+ export declare function requiredTopLevelKeys(schema: z.ZodType): readonly string[];
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Save-time validation of a composition (D659): shape, capability fit, field
3
+ * kinds, nullability, sources, cycles. Every refusal names its reason (D391),
4
+ * and every variant a later slice implements is refused BY NAME with that slice.
5
+ *
6
+ * Pure: the caller DESCRIBES the sources (one read each) and passes the other
7
+ * stored compositions. `planComposition` is the static half the composer
8
+ * re-runs at apply time, where the sources are the tracker's business.
9
+ */
10
+ import type { CapabilityDefinition } from '../capabilities/capability-definition.js';
11
+ import { type Composition, type CompositionSourceRef } from './composition.js';
12
+ import { type CompositionPeer } from './composition-graph.js';
13
+ import type { CompositionFieldPlan, CompositionProblem, CompositionValidation } from './composition-report.js';
14
+ export type CapabilityLookup = (capName: string) => CapabilityDefinition | null;
15
+ export declare function buildCapabilityLookup(defs: readonly CapabilityDefinition[]): CapabilityLookup;
16
+ /** Caps every `BaseDevice` registers on itself; a second registration throws. */
17
+ export declare const BASE_DEVICE_CAPS: ReadonlySet<string>;
18
+ export interface CompositionSourceFound {
19
+ readonly kind: 'found';
20
+ readonly deviceId: number;
21
+ readonly caps: ReadonlySet<string>;
22
+ }
23
+ export interface CompositionSourceAbsent {
24
+ readonly kind: 'absent';
25
+ }
26
+ export interface CompositionSourceUnreadable {
27
+ readonly kind: 'unreadable';
28
+ readonly error: string;
29
+ }
30
+ export type CompositionSourceDescription = CompositionSourceFound | CompositionSourceAbsent | CompositionSourceUnreadable;
31
+ export interface ValidateCompositionContext {
32
+ readonly lookupCap: CapabilityLookup;
33
+ /** Keyed by `compositionSourceKey`. A ref with no entry was not read, and is refused as unreadable. */
34
+ readonly sources: ReadonlyMap<string, CompositionSourceDescription>;
35
+ /** The device this composition writes; null on create, when the block has no id yet. */
36
+ readonly self: CompositionSourceRef | null;
37
+ /** Every OTHER stored composition; cycles run through them. */
38
+ readonly peers: readonly CompositionPeer[];
39
+ }
40
+ export interface CompositionPlanResult {
41
+ readonly problems: readonly CompositionProblem[];
42
+ readonly fields: readonly CompositionFieldPlan[];
43
+ }
44
+ export declare function planComposition(composition: Composition, lookupCap: CapabilityLookup): CompositionPlanResult;
45
+ export declare function compositionSourceRefs(composition: Composition): readonly CompositionSourceRef[];
46
+ export declare function validateComposition(composition: Composition, ctx: ValidateCompositionContext): CompositionValidation;
@@ -8,6 +8,9 @@ export interface WireableField {
8
8
  * `target.itemKey`. Absent/false for plain status fields. */
9
9
  readonly item?: boolean;
10
10
  }
11
+ /** Unwrap ZodNullable / ZodOptional / ZodDefault wrappers to reach the inner type.
12
+ * Zod v4 exposes `.unwrap()` on all three wrapper classes. */
13
+ export declare function unwrapSchema(schema: z.ZodType): z.ZodType;
11
14
  /** Walk a cap status schema into flat wireable leaf fields (dotted paths).
12
15
  * Recurses into nested ZodObject (unwrapping nullable/optional/default first),
13
16
  * so fields with null live values are still offered. Arrays / unknown shapes
@@ -1,10 +1,38 @@
1
+ /**
2
+ * Frozen, null-prototype builtin function table for the expression engine
3
+ * (spec §4 rule 4). The table is the SOLE surface of callable functions: the
4
+ * parser rejects any callee not in it, and the evaluator gates each call on an
5
+ * own-property check against it.
6
+ *
7
+ * Because the object has a NULL prototype AND is `Object.freeze`d:
8
+ * - it cannot be polluted (no `__proto__` / `constructor` write reaches it);
9
+ * - a lookup for `toString` / `hasOwnProperty` / `constructor` finds NOTHING
10
+ * (there is no `Object.prototype` in the chain), so those names are not
11
+ * callable — they are simply "unknown function" at parse time.
12
+ *
13
+ * Every numeric argument is validated as a finite number and every numeric
14
+ * RESULT is re-checked finite, so `/0`, `sqrt(-1)` (→ NaN) and overflow
15
+ * (`pow(10,400)` → Infinity) all raise `ExpressionEvalError` and fail the link
16
+ * closed rather than emitting a garbage value.
17
+ */
1
18
  import type { ExpressionValue } from './ast.js';
2
- /** Optional runtime hooks the evaluator threads through to builtins. Stage U
3
- * installs the real unit-conversion table here; absent → the `convert` stub. */
19
+ /** Optional runtime hooks the evaluator threads through to builtins. */
4
20
  export interface ExpressionEvalHooks {
5
21
  /** Convert `value` from unit `from` to unit `to`; `null` when the pair is
6
22
  * not convertible. Absent hook → `convert` uses its identity-only stub. */
7
23
  readonly convert?: (value: number, from: string, to: string) => number | null;
24
+ /**
25
+ * Epoch ms of THIS evaluation. `evaluateExpressionSource` sets it to the same
26
+ * `now` the scope carries. A windowed builtin with no clock fails closed:
27
+ * reading the wall clock here would make an evaluation unrepeatable.
28
+ */
29
+ readonly now?: number;
30
+ /**
31
+ * Called by a windowed builtin with the instant its answer will change ON ITS
32
+ * OWN, with no source event. The composer arms ONE timer at the earliest such
33
+ * instant. That is a deadline, never a poll (D659).
34
+ */
35
+ readonly noteDeadline?: (at: number) => void;
8
36
  }
9
37
  export interface ExpressionBuiltin {
10
38
  readonly minArgs: number;
@@ -27,6 +27,7 @@ import type { cameraGridLayoutCapability } from '../capabilities/camera-grid-lay
27
27
  import type { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
28
28
  import type { climateControlCapability } from '../capabilities/climate-control.cap.js';
29
29
  import type { colorCapability } from '../capabilities/color.cap.js';
30
+ import type { composerCapability } from '../capabilities/composer.cap.js';
30
31
  import type { connectionTestCapability } from '../capabilities/connection-test.cap.js';
31
32
  import type { consumablesCapability } from '../capabilities/consumables.cap.js';
32
33
  import type { controlCapability } from '../capabilities/control.cap.js';
@@ -1413,6 +1414,27 @@ export type AppRouter = TrpcCoreRouter<{
1413
1414
  meta: object;
1414
1415
  }>;
1415
1416
  }>>;
1417
+ composer: TRPCBuiltRouter<{
1418
+ ctx: TrpcContext;
1419
+ meta: object;
1420
+ errorShape: AugmentedErrorShape;
1421
+ transformer: true;
1422
+ }, TRPCDecorateCreateRouterOptions<{
1423
+ applyBlocks: TRPCMutationProcedure<{
1424
+ input: {
1425
+ [x: string]: unknown;
1426
+ } & z.input<typeof composerCapability.methods.applyBlocks.input>;
1427
+ output: z.infer<typeof composerCapability.methods.applyBlocks.output>;
1428
+ meta: object;
1429
+ }>;
1430
+ getStates: TRPCQueryProcedure<{
1431
+ input: {
1432
+ [x: string]: unknown;
1433
+ } & z.input<typeof composerCapability.methods.getStates.input>;
1434
+ output: z.infer<typeof composerCapability.methods.getStates.output>;
1435
+ meta: object;
1436
+ }>;
1437
+ }>>;
1416
1438
  connectionTest: TRPCBuiltRouter<{
1417
1439
  ctx: TrpcContext;
1418
1440
  meta: object;
@@ -1574,6 +1596,41 @@ export type AppRouter = TrpcCoreRouter<{
1574
1596
  output: z.infer<typeof coreBlocksCapability.methods.getTypeDefs.output>;
1575
1597
  meta: object;
1576
1598
  }>;
1599
+ createComposition: TRPCMutationProcedure<{
1600
+ input: {
1601
+ [x: string]: unknown;
1602
+ } & z.input<typeof coreBlocksCapability.methods.createComposition.input>;
1603
+ output: z.infer<typeof coreBlocksCapability.methods.createComposition.output>;
1604
+ meta: object;
1605
+ }>;
1606
+ updateComposition: TRPCMutationProcedure<{
1607
+ input: {
1608
+ [x: string]: unknown;
1609
+ } & z.input<typeof coreBlocksCapability.methods.updateComposition.input>;
1610
+ output: z.infer<typeof coreBlocksCapability.methods.updateComposition.output>;
1611
+ meta: object;
1612
+ }>;
1613
+ getComposition: TRPCQueryProcedure<{
1614
+ input: {
1615
+ [x: string]: unknown;
1616
+ } & z.input<typeof coreBlocksCapability.methods.getComposition.input>;
1617
+ output: z.infer<typeof coreBlocksCapability.methods.getComposition.output>;
1618
+ meta: object;
1619
+ }>;
1620
+ listCompositions: TRPCQueryProcedure<{
1621
+ input: {
1622
+ [x: string]: unknown;
1623
+ } & z.input<typeof coreBlocksCapability.methods.listCompositions.input>;
1624
+ output: z.infer<typeof coreBlocksCapability.methods.listCompositions.output>;
1625
+ meta: object;
1626
+ }>;
1627
+ validateComposition: TRPCMutationProcedure<{
1628
+ input: {
1629
+ [x: string]: unknown;
1630
+ } & z.input<typeof coreBlocksCapability.methods.validateComposition.input>;
1631
+ output: z.infer<typeof coreBlocksCapability.methods.validateComposition.output>;
1632
+ meta: object;
1633
+ }>;
1577
1634
  }>>;
1578
1635
  cover: TRPCBuiltRouter<{
1579
1636
  ctx: TrpcContext;
@@ -30,6 +30,7 @@ export { cameraStreamsCapability } from '../capabilities/camera-streams.cap.js';
30
30
  export { carbonMonoxideCapability } from '../capabilities/carbon-monoxide.cap.js';
31
31
  export { climateControlCapability } from '../capabilities/climate-control.cap.js';
32
32
  export { colorCapability } from '../capabilities/color.cap.js';
33
+ export { composerCapability } from '../capabilities/composer.cap.js';
33
34
  export { connectionTestCapability } from '../capabilities/connection-test.cap.js';
34
35
  export { connectivityCapability } from '../capabilities/connectivity.cap.js';
35
36
  export { consumablesCapability } from '../capabilities/consumables.cap.js';
@@ -192,6 +193,7 @@ export declare const CAPABILITY_NAMES: {
192
193
  readonly carbonMonoxide: "carbon-monoxide";
193
194
  readonly climateControl: "climate-control";
194
195
  readonly color: "color";
196
+ readonly composer: "composer";
195
197
  readonly connectionTest: "connection-test";
196
198
  readonly connectivity: "connectivity";
197
199
  readonly consumables: "consumables";
@@ -367,6 +369,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
367
369
  readonly carbonMonoxide: TRouter;
368
370
  readonly climateControl: TRouter;
369
371
  readonly color: TRouter;
372
+ readonly composer: TRouter;
370
373
  readonly connectionTest: TRouter;
371
374
  readonly connectivity: TRouter;
372
375
  readonly consumables: TRouter;
@@ -497,8 +500,8 @@ export interface CapabilityRouterMap<TRouter = unknown> {
497
500
  readonly zoneRules: TRouter;
498
501
  readonly zones: TRouter;
499
502
  }
500
- /** Capability names whose mode is `singleton` (130 caps). */
501
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-grid-layout", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "connectivity", "consumables", "contact", "control", "core-blocks", "cover", "day-night", "decoder", "detection-pipeline", "device-admin-link", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "navigation", "network-link", "network-quality", "nodes", "notification-rules", "notifier", "numeric-sensor", "osd", "osd-manager", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording-archive", "recording-export", "recording-onboard", "recording-signal", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "storage-migration", "stream-broker", "stream-catalog", "stream-params", "stream-signals", "switch", "system", "tamper", "temperature-sensor", "terminal-session", "toast", "update", "user-management", "vacuum-control", "valve", "vector-store", "vibration", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
503
+ /** Capability names whose mode is `singleton` (131 caps). */
504
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ["accessories", "addon-pages", "addon-settings", "addon-widgets", "addons", "admin-ui", "air-quality-sensor", "alarm-panel", "alerts", "ambient-light-sensor", "audio-analysis", "audio-analyzer", "audio-codec", "audio-metrics", "automation-control", "backup", "battery", "binary", "brightness", "button", "camera-credentials", "camera-grid-layout", "camera-pipeline-config", "camera-streams", "carbon-monoxide", "climate-control", "color", "composer", "connectivity", "consumables", "contact", "control", "core-blocks", "cover", "day-night", "decoder", "detection-pipeline", "device-admin-link", "device-adoption", "device-discovery", "device-manager", "device-ops", "device-state", "device-status", "doorbell", "enum-sensor", "event-emitter", "face-gallery", "fan-control", "feature-probe", "filesystem-browse", "flood", "gas", "humidifier", "humidity-sensor", "image", "image-settings", "integrations", "intercom", "lawn-mower-control", "llm-runtime", "local-network", "lock-control", "media-player", "metrics-provider", "model-convert", "model-distributor", "motion", "motion-detection", "motion-trigger", "motion-zones", "native-object-detection", "navigation", "network-link", "network-quality", "nodes", "notification-rules", "notifier", "numeric-sensor", "osd", "osd-manager", "pet-feeder", "pipeline-analytics", "pipeline-executor", "pipeline-orchestrator", "pipeline-runner", "plate-gallery", "platform-probe", "power-meter", "presence", "pressure-sensor", "privacy-mask", "ptz", "ptz-autotrack", "reboot", "recording-archive", "recording-export", "recording-onboard", "recording-signal", "scene-monitor", "script-runner", "server-management", "settings-store", "smoke", "snapshot", "sso-bridge", "storage", "storage-migration", "stream-broker", "stream-catalog", "stream-params", "stream-signals", "switch", "system", "tamper", "temperature-sensor", "terminal-session", "toast", "update", "user-management", "vacuum-control", "valve", "vector-store", "vibration", "viewer-ui", "water-heater", "weather", "webrtc-session", "zone-analytics", "zone-rules", "zones"];
502
505
  /** Union of singleton capability names (literal string union). */
503
506
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
504
507
  /** Capability names whose mode is `collection` (31 caps). */
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1178 method paths across 161 capabilities.
9
+ * Coverage: 1185 method paths across 162 capabilities.
10
10
  */
11
11
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
12
12
  export interface MethodAccessRecord {
@@ -65,7 +65,7 @@ export interface SystemProxy {
65
65
  readonly backup: Pick<InferProvider<typeof backupCapability>, 'listDestinations' | 'trigger' | 'listRuns' | 'cancel' | 'list' | 'listLocations' | 'getEntries' | 'restore' | 'delete' | 'listArchives' | 'upsertDestinationPolicy' | 'previewSchedule' | 'listSchedules' | 'upsertSchedule' | 'deleteSchedule'>;
66
66
  readonly broker: Pick<InferProvider<typeof brokerCapability>, 'list' | 'get' | 'listProviders' | 'add' | 'remove' | 'testConnection' | 'getSettings' | 'setSettings' | 'getBrokerConfig' | 'getSettingsSchema' | 'testSettings' | 'publish' | 'subscribe' | 'unsubscribe' | 'getState' | 'getStatus'>;
67
67
  readonly connectionTest: Pick<InferProvider<typeof connectionTestCapability>, 'testSettings' | 'describeTest'>;
68
- readonly coreBlocks: Pick<InferProvider<typeof coreBlocksCapability>, 'list' | 'get' | 'create' | 'update' | 'delete' | 'setEnabled' | 'restart' | 'compile' | 'getTypeDefs'>;
68
+ readonly coreBlocks: Pick<InferProvider<typeof coreBlocksCapability>, 'list' | 'get' | 'create' | 'update' | 'delete' | 'setEnabled' | 'restart' | 'compile' | 'getTypeDefs' | 'createComposition' | 'updateComposition' | 'getComposition' | 'listCompositions' | 'validateComposition'>;
69
69
  readonly decoder: Pick<InferProvider<typeof decoderCapability>, 'supportsCodec' | 'getInfo' | 'createSession' | 'destroySession' | 'pushPacket' | 'openStream' | 'pullFrames' | 'pullHandles' | 'getFrame' | 'getShmStats' | 'updateConfig' | 'getStats' | 'listActiveSessions' | 'reprobeHwaccel'>;
70
70
  readonly deviceAdoption: Pick<InferProvider<typeof deviceAdoptionCapability>, 'listCandidateFilters' | 'listCandidates' | 'getCandidate' | 'refresh' | 'adopt' | 'release' | 'resync'>;
71
71
  readonly deviceExport: Pick<InferProvider<typeof deviceExportCapability>, 'getStatus' | 'listSupportedDeviceKinds' | 'listExposedDevices' | 'exposeDevice' | 'unexposeDevice'>;
package/dist/index.d.ts CHANGED
@@ -143,6 +143,7 @@ export { AutomationActionSchema, AutomationConditionOperatorSchema, AutomationCo
143
143
  export * from './cap-call-context.js';
144
144
  export * from './capabilities/index.js';
145
145
  export * from './device-extension/index.js';
146
+ export * from './composition/index.js';
146
147
  export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, getAudioMacroClassIds, mapAudioLabelToMacro, YAMNET_TO_MACRO, } from './catalogs/audio-classmap.js';
147
148
  export { COCO_80_LABELS, COCO_TO_MACRO, DETECTION_MACRO_CLASSES, isDetectionMacroClass, MACRO_LABELS, } from './catalogs/coco-classmap.js';
148
149
  export { DEVICE_STATE_READERS, readDeviceStateFrom, stateVocabularyFor, } from './catalogs/device-state-vocabulary.js';