@camstack/types 1.2.439 → 1.2.441

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 (34) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/addon.js +9 -3
  3. package/dist/addon.mjs +9 -3
  4. package/dist/capabilities/customize-catalog.d.ts +3 -0
  5. package/dist/capabilities/customize-spec.d.ts +20 -2
  6. package/dist/capabilities/hub-address.d.ts +2 -0
  7. package/dist/capabilities/index.d.ts +6 -2
  8. package/dist/capabilities/media-player.cap.d.ts +50 -0
  9. package/dist/capabilities/pet-feeder.cap.d.ts +9 -0
  10. package/dist/capabilities/remote.cap.d.ts +264 -0
  11. package/dist/capabilities/template.cap.d.ts +161 -0
  12. package/dist/client.js +14 -0
  13. package/dist/client.mjs +14 -0
  14. package/dist/generated/addon-api.d.ts +90 -0
  15. package/dist/generated/addon-cap-facts.d.ts +1 -1
  16. package/dist/generated/cap-input-defaults.d.ts +1 -1
  17. package/dist/generated/capability-router-map.d.ts +10 -4
  18. package/dist/generated/collection-array-methods.d.ts +1 -1
  19. package/dist/generated/customize-catalog.d.ts +18 -1
  20. package/dist/generated/method-access-map.d.ts +1 -1
  21. package/dist/generated/method-device-selectors.d.ts +2 -2
  22. package/dist/generated/system-proxy.d.ts +4 -0
  23. package/dist/index.d.ts +5 -0
  24. package/dist/index.js +863 -71
  25. package/dist/index.mjs +816 -72
  26. package/dist/interfaces/device-call-redirect.d.ts +42 -0
  27. package/dist/interfaces/kernel-abstractions.d.ts +12 -0
  28. package/dist/remote/remote-config.d.ts +116 -0
  29. package/dist/remote/remote-roles.d.ts +21 -0
  30. package/dist/remote/smartir-draft.d.ts +25 -0
  31. package/dist/{sleep-g6ZjBHBL.js → sleep-BpwNJ1Su.js} +19 -0
  32. package/dist/{sleep-BAvUCi_2.mjs → sleep-DJws6ho7.mjs} +19 -0
  33. package/dist/template/template-kinds.d.ts +26 -0
  34. package/package.json +1 -1
@@ -0,0 +1,161 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ /**
4
+ * template — the generic store of reusable, named operator data (D963). A
5
+ * record is `{ id, kind, name, payload }`; the kinds (today only `remote`, the
6
+ * button grid of a remote) and the schema each payload must satisfy are
7
+ * declared by the system in `template-kinds.ts`. Nothing here is specific to a
8
+ * kind: the engine validates a payload against its kind's schema and, on a
9
+ * delete, asks the kind's owner whether anything still points at the record.
10
+ *
11
+ * Every refusal is a typed result — a UI says "unknown kind" or names the
12
+ * devices that still use a template, without parsing text.
13
+ */
14
+ export declare const TemplateRecordSchema: z.ZodObject<{
15
+ id: z.ZodString;
16
+ kind: z.ZodEnum<{
17
+ remote: "remote";
18
+ }>;
19
+ name: z.ZodString;
20
+ payload: z.ZodUnknown;
21
+ createdAt: z.ZodNumber;
22
+ updatedAt: z.ZodNumber;
23
+ }, z.core.$strip>;
24
+ export type TemplateRecord = z.infer<typeof TemplateRecordSchema>;
25
+ export declare const TEMPLATE_WRITE_REFUSALS: readonly ['invalid-payload', 'not-found'];
26
+ export declare const TemplateWriteResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
+ status: z.ZodLiteral<"saved">;
28
+ template: z.ZodObject<{
29
+ id: z.ZodString;
30
+ kind: z.ZodEnum<{
31
+ remote: "remote";
32
+ }>;
33
+ name: z.ZodString;
34
+ payload: z.ZodUnknown;
35
+ createdAt: z.ZodNumber;
36
+ updatedAt: z.ZodNumber;
37
+ }, z.core.$strip>;
38
+ }, z.core.$strip>, z.ZodObject<{
39
+ status: z.ZodLiteral<"refused">;
40
+ reason: z.ZodEnum<{
41
+ "invalid-payload": "invalid-payload";
42
+ "not-found": "not-found";
43
+ }>;
44
+ detail: z.ZodString;
45
+ }, z.core.$strip>], "status">;
46
+ export type TemplateWriteResult = z.infer<typeof TemplateWriteResultSchema>;
47
+ /** A device still pointing at a template. */
48
+ export declare const TemplateUserSchema: z.ZodObject<{
49
+ deviceId: z.ZodNumber;
50
+ name: z.ZodString;
51
+ }, z.core.$strip>;
52
+ export type TemplateUser = z.infer<typeof TemplateUserSchema>;
53
+ export declare const TemplateDeleteResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
54
+ status: z.ZodLiteral<"deleted">;
55
+ }, z.core.$strip>, z.ZodObject<{
56
+ status: z.ZodLiteral<"not-found">;
57
+ }, z.core.$strip>, z.ZodObject<{
58
+ status: z.ZodLiteral<"in-use">;
59
+ devices: z.ZodArray<z.ZodObject<{
60
+ deviceId: z.ZodNumber;
61
+ name: z.ZodString;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>], "status">;
64
+ export type TemplateDeleteResult = z.infer<typeof TemplateDeleteResultSchema>;
65
+ export declare const templateCapability: {
66
+ readonly name: 'template';
67
+ readonly scope: 'system';
68
+ readonly mode: 'collection';
69
+ readonly methods: {
70
+ readonly list: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
71
+ kind: z.ZodOptional<z.ZodEnum<{
72
+ remote: "remote";
73
+ }>>;
74
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
75
+ id: z.ZodString;
76
+ kind: z.ZodEnum<{
77
+ remote: "remote";
78
+ }>;
79
+ name: z.ZodString;
80
+ payload: z.ZodUnknown;
81
+ createdAt: z.ZodNumber;
82
+ updatedAt: z.ZodNumber;
83
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
84
+ readonly get: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
85
+ id: z.ZodString;
86
+ }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
87
+ id: z.ZodString;
88
+ kind: z.ZodEnum<{
89
+ remote: "remote";
90
+ }>;
91
+ name: z.ZodString;
92
+ payload: z.ZodUnknown;
93
+ createdAt: z.ZodNumber;
94
+ updatedAt: z.ZodNumber;
95
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
96
+ readonly create: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
97
+ kind: z.ZodEnum<{
98
+ remote: "remote";
99
+ }>;
100
+ name: z.ZodString;
101
+ payload: z.ZodUnknown;
102
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
103
+ status: z.ZodLiteral<"saved">;
104
+ template: z.ZodObject<{
105
+ id: z.ZodString;
106
+ kind: z.ZodEnum<{
107
+ remote: "remote";
108
+ }>;
109
+ name: z.ZodString;
110
+ payload: z.ZodUnknown;
111
+ createdAt: z.ZodNumber;
112
+ updatedAt: z.ZodNumber;
113
+ }, z.core.$strip>;
114
+ }, z.core.$strip>, z.ZodObject<{
115
+ status: z.ZodLiteral<"refused">;
116
+ reason: z.ZodEnum<{
117
+ "invalid-payload": "invalid-payload";
118
+ "not-found": "not-found";
119
+ }>;
120
+ detail: z.ZodString;
121
+ }, z.core.$strip>], "status">, "mutation">;
122
+ readonly update: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
123
+ id: z.ZodString;
124
+ name: z.ZodOptional<z.ZodString>;
125
+ payload: z.ZodOptional<z.ZodUnknown>;
126
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
127
+ status: z.ZodLiteral<"saved">;
128
+ template: z.ZodObject<{
129
+ id: z.ZodString;
130
+ kind: z.ZodEnum<{
131
+ remote: "remote";
132
+ }>;
133
+ name: z.ZodString;
134
+ payload: z.ZodUnknown;
135
+ createdAt: z.ZodNumber;
136
+ updatedAt: z.ZodNumber;
137
+ }, z.core.$strip>;
138
+ }, z.core.$strip>, z.ZodObject<{
139
+ status: z.ZodLiteral<"refused">;
140
+ reason: z.ZodEnum<{
141
+ "invalid-payload": "invalid-payload";
142
+ "not-found": "not-found";
143
+ }>;
144
+ detail: z.ZodString;
145
+ }, z.core.$strip>], "status">, "mutation">;
146
+ readonly delete: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
147
+ id: z.ZodString;
148
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
149
+ status: z.ZodLiteral<"deleted">;
150
+ }, z.core.$strip>, z.ZodObject<{
151
+ status: z.ZodLiteral<"not-found">;
152
+ }, z.core.$strip>, z.ZodObject<{
153
+ status: z.ZodLiteral<"in-use">;
154
+ devices: z.ZodArray<z.ZodObject<{
155
+ deviceId: z.ZodNumber;
156
+ name: z.ZodString;
157
+ }, z.core.$strip>>;
158
+ }, z.core.$strip>], "status">, "mutation">;
159
+ };
160
+ };
161
+ export type ITemplateProvider = InferProvider<typeof templateCapability>;
package/dist/client.js CHANGED
@@ -28939,6 +28939,13 @@ function createSystemProxy(api) {
28939
28939
  getDownloadUrl: (input) => dispatch("recordingExport", "getDownloadUrl", "query", input),
28940
28940
  readExportBytes: (input) => dispatch("recordingExport", "readExportBytes", "query", input)
28941
28941
  },
28942
+ remote: {
28943
+ getConfig: (input) => dispatch("remote", "getConfig", "query", input),
28944
+ setConfig: (input) => dispatch("remote", "setConfig", "mutation", input),
28945
+ listCommands: (input) => dispatch("remote", "listCommands", "query", input),
28946
+ sendCommand: (input) => dispatch("remote", "sendCommand", "mutation", input),
28947
+ sendMediaCommand: (input) => dispatch("remote", "sendMediaCommand", "mutation", input)
28948
+ },
28942
28949
  serverManagement: {
28943
28950
  getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
28944
28951
  checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
@@ -29046,6 +29053,13 @@ function createSystemProxy(api) {
29046
29053
  getLoggingSettings: (input) => dispatch("system", "getLoggingSettings", "query", input),
29047
29054
  setLoggingSettings: (input) => dispatch("system", "setLoggingSettings", "mutation", input)
29048
29055
  },
29056
+ template: {
29057
+ list: (input) => dispatch("template", "list", "query", input),
29058
+ get: (input) => dispatch("template", "get", "query", input),
29059
+ create: (input) => dispatch("template", "create", "mutation", input),
29060
+ update: (input) => dispatch("template", "update", "mutation", input),
29061
+ delete: (input) => dispatch("template", "delete", "mutation", input)
29062
+ },
29049
29063
  terminalSession: {
29050
29064
  listProfiles: (input) => dispatch("terminalSession", "listProfiles", "query", input),
29051
29065
  listInstances: (input) => dispatch("terminalSession", "listInstances", "query", input),
package/dist/client.mjs CHANGED
@@ -28938,6 +28938,13 @@ function createSystemProxy(api) {
28938
28938
  getDownloadUrl: (input) => dispatch("recordingExport", "getDownloadUrl", "query", input),
28939
28939
  readExportBytes: (input) => dispatch("recordingExport", "readExportBytes", "query", input)
28940
28940
  },
28941
+ remote: {
28942
+ getConfig: (input) => dispatch("remote", "getConfig", "query", input),
28943
+ setConfig: (input) => dispatch("remote", "setConfig", "mutation", input),
28944
+ listCommands: (input) => dispatch("remote", "listCommands", "query", input),
28945
+ sendCommand: (input) => dispatch("remote", "sendCommand", "mutation", input),
28946
+ sendMediaCommand: (input) => dispatch("remote", "sendMediaCommand", "mutation", input)
28947
+ },
28941
28948
  serverManagement: {
28942
28949
  getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
28943
28950
  checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
@@ -29045,6 +29052,13 @@ function createSystemProxy(api) {
29045
29052
  getLoggingSettings: (input) => dispatch("system", "getLoggingSettings", "query", input),
29046
29053
  setLoggingSettings: (input) => dispatch("system", "setLoggingSettings", "mutation", input)
29047
29054
  },
29055
+ template: {
29056
+ list: (input) => dispatch("template", "list", "query", input),
29057
+ get: (input) => dispatch("template", "get", "query", input),
29058
+ create: (input) => dispatch("template", "create", "mutation", input),
29059
+ update: (input) => dispatch("template", "update", "mutation", input),
29060
+ delete: (input) => dispatch("template", "delete", "mutation", input)
29061
+ },
29048
29062
  terminalSession: {
29049
29063
  listProfiles: (input) => dispatch("terminalSession", "listProfiles", "query", input),
29050
29064
  listInstances: (input) => dispatch("terminalSession", "listInstances", "query", input),
@@ -117,6 +117,7 @@ import type { recordingOnboardCapability } from '../capabilities/recording-onboa
117
117
  import type { recordingSignalCapability } from '../capabilities/recording-signal.cap.js';
118
118
  import type { recordingCapability } from '../capabilities/recording.cap.js';
119
119
  import type { recordsCapability } from '../capabilities/records.cap.js';
120
+ import type { remoteCapability } from '../capabilities/remote.cap.js';
120
121
  import type { sceneMonitorCapability } from '../capabilities/scene-monitor.cap.js';
121
122
  import type { scriptRunnerCapability } from '../capabilities/script-runner.cap.js';
122
123
  import type { serverManagementCapability } from '../capabilities/server-management.cap.js';
@@ -136,6 +137,7 @@ import type { streamParamsCapability } from '../capabilities/stream-params.cap.j
136
137
  import type { streamSignalsCapability } from '../capabilities/stream-signals.cap.js';
137
138
  import type { switchCapability } from '../capabilities/switch.cap.js';
138
139
  import type { systemCapability } from '../capabilities/system.cap.js';
140
+ import type { templateCapability } from '../capabilities/template.cap.js';
139
141
  import type { terminalSessionCapability } from '../capabilities/terminal-session.cap.js';
140
142
  import type { toastCapability } from '../capabilities/toast.cap.js';
141
143
  import type { trainingProviderCapability } from '../capabilities/training-provider.cap.js';
@@ -8788,6 +8790,48 @@ export type AppRouter = TrpcCoreRouter<{
8788
8790
  meta: object;
8789
8791
  }>;
8790
8792
  }>>;
8793
+ remote: TRPCBuiltRouter<{
8794
+ ctx: TrpcContext;
8795
+ meta: object;
8796
+ errorShape: AugmentedErrorShape;
8797
+ transformer: true;
8798
+ }, TRPCDecorateCreateRouterOptions<{
8799
+ getConfig: TRPCQueryProcedure<{
8800
+ input: {
8801
+ [x: string]: unknown;
8802
+ } & z.input<typeof remoteCapability.methods.getConfig.input>;
8803
+ output: z.infer<typeof remoteCapability.methods.getConfig.output>;
8804
+ meta: object;
8805
+ }>;
8806
+ setConfig: TRPCMutationProcedure<{
8807
+ input: {
8808
+ [x: string]: unknown;
8809
+ } & z.input<typeof remoteCapability.methods.setConfig.input>;
8810
+ output: z.infer<typeof remoteCapability.methods.setConfig.output>;
8811
+ meta: object;
8812
+ }>;
8813
+ listCommands: TRPCQueryProcedure<{
8814
+ input: {
8815
+ [x: string]: unknown;
8816
+ } & z.input<typeof remoteCapability.methods.listCommands.input>;
8817
+ output: z.infer<typeof remoteCapability.methods.listCommands.output>;
8818
+ meta: object;
8819
+ }>;
8820
+ sendCommand: TRPCMutationProcedure<{
8821
+ input: {
8822
+ [x: string]: unknown;
8823
+ } & z.input<typeof remoteCapability.methods.sendCommand.input>;
8824
+ output: z.infer<typeof remoteCapability.methods.sendCommand.output>;
8825
+ meta: object;
8826
+ }>;
8827
+ sendMediaCommand: TRPCMutationProcedure<{
8828
+ input: {
8829
+ [x: string]: unknown;
8830
+ } & z.input<typeof remoteCapability.methods.sendMediaCommand.input>;
8831
+ output: z.infer<typeof remoteCapability.methods.sendMediaCommand.output>;
8832
+ meta: object;
8833
+ }>;
8834
+ }>>;
8791
8835
  runningState: TRPCBuiltRouter<{
8792
8836
  ctx: TrpcContext;
8793
8837
  meta: object;
@@ -10138,6 +10182,48 @@ export type AppRouter = TrpcCoreRouter<{
10138
10182
  meta: object;
10139
10183
  }>;
10140
10184
  }>>;
10185
+ template: TRPCBuiltRouter<{
10186
+ ctx: TrpcContext;
10187
+ meta: object;
10188
+ errorShape: AugmentedErrorShape;
10189
+ transformer: true;
10190
+ }, TRPCDecorateCreateRouterOptions<{
10191
+ list: TRPCQueryProcedure<{
10192
+ input: {
10193
+ [x: string]: unknown;
10194
+ } & z.input<typeof templateCapability.methods.list.input>;
10195
+ output: z.infer<typeof templateCapability.methods.list.output>;
10196
+ meta: object;
10197
+ }>;
10198
+ get: TRPCQueryProcedure<{
10199
+ input: {
10200
+ [x: string]: unknown;
10201
+ } & z.input<typeof templateCapability.methods.get.input>;
10202
+ output: z.infer<typeof templateCapability.methods.get.output>;
10203
+ meta: object;
10204
+ }>;
10205
+ create: TRPCMutationProcedure<{
10206
+ input: {
10207
+ [x: string]: unknown;
10208
+ } & z.input<typeof templateCapability.methods.create.input>;
10209
+ output: z.infer<typeof templateCapability.methods.create.output>;
10210
+ meta: object;
10211
+ }>;
10212
+ update: TRPCMutationProcedure<{
10213
+ input: {
10214
+ [x: string]: unknown;
10215
+ } & z.input<typeof templateCapability.methods.update.input>;
10216
+ output: z.infer<typeof templateCapability.methods.update.output>;
10217
+ meta: object;
10218
+ }>;
10219
+ delete: TRPCMutationProcedure<{
10220
+ input: {
10221
+ [x: string]: unknown;
10222
+ } & z.input<typeof templateCapability.methods.delete.input>;
10223
+ output: z.infer<typeof templateCapability.methods.delete.output>;
10224
+ meta: object;
10225
+ }>;
10226
+ }>>;
10141
10227
  terminalSession: TRPCBuiltRouter<{
10142
10228
  ctx: TrpcContext;
10143
10229
  meta: object;
@@ -12605,6 +12691,7 @@ export type AppRouter = TrpcCoreRouter<{
12605
12691
  host: string;
12606
12692
  port: number;
12607
12693
  version: string | null;
12694
+ name: string | null;
12608
12695
  state: "unpaired" | "pending" | "paired";
12609
12696
  fingerprint: string | null;
12610
12697
  source: "mdns" | "address";
@@ -12638,6 +12725,7 @@ export type AppRouter = TrpcCoreRouter<{
12638
12725
  host: string;
12639
12726
  port: number;
12640
12727
  version: string | null;
12728
+ name: string | null;
12641
12729
  state: "unpaired" | "pending" | "paired";
12642
12730
  fingerprint: string | null;
12643
12731
  source: "mdns" | "address";
@@ -12783,6 +12871,7 @@ export type AppRouter = TrpcCoreRouter<{
12783
12871
  host: string;
12784
12872
  port: number;
12785
12873
  version: string | null;
12874
+ name: string | null;
12786
12875
  state: "unpaired" | "pending" | "paired";
12787
12876
  fingerprint: string | null;
12788
12877
  source: "mdns" | "address";
@@ -12816,6 +12905,7 @@ export type AppRouter = TrpcCoreRouter<{
12816
12905
  host: string;
12817
12906
  port: number;
12818
12907
  version: string | null;
12908
+ name: string | null;
12819
12909
  state: "unpaired" | "pending" | "paired";
12820
12910
  fingerprint: string | null;
12821
12911
  source: "mdns" | "address";
@@ -5,7 +5,7 @@
5
5
  * `ALL_CAPABILITY_DEFINITIONS` (the whole Zod schema graph, ~+100 MB heap per
6
6
  * runner). See docs/decisions/adr-0028.md.
7
7
  *
8
- * Coverage: 1 advance-derived caps, 77 caps with 356 state leaves.
8
+ * Coverage: 1 advance-derived caps, 77 caps with 360 state leaves.
9
9
  */
10
10
  /** A bindable scalar in a capability's runtime state. */
11
11
  export interface CapStateLeaf {
@@ -11,7 +11,7 @@
11
11
  * Plain data, zero Zod: a forked runner must not import the schema barrel
12
12
  * (~144MB RSS per runner — D28).
13
13
  *
14
- * Coverage: 29 caps, 72 methods with defaults.
14
+ * Coverage: 30 caps, 75 methods with defaults.
15
15
  */
16
16
  export declare const CAP_INPUT_DEFAULTS: Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, unknown>>>>>>;
17
17
  /**
@@ -143,6 +143,7 @@ export { recordingExportCapability } from '../capabilities/recording-export.cap.
143
143
  export { recordingOnboardCapability } from '../capabilities/recording-onboard.cap.js';
144
144
  export { recordingSignalCapability } from '../capabilities/recording-signal.cap.js';
145
145
  export { recordsCapability } from '../capabilities/records.cap.js';
146
+ export { remoteCapability } from '../capabilities/remote.cap.js';
146
147
  export { runningStateCapability } from '../capabilities/running-state.cap.js';
147
148
  export { sceneMonitorCapability } from '../capabilities/scene-monitor.cap.js';
148
149
  export { scriptRunnerCapability } from '../capabilities/script-runner.cap.js';
@@ -166,6 +167,7 @@ export { switchCapability } from '../capabilities/switch.cap.js';
166
167
  export { systemCapability } from '../capabilities/system.cap.js';
167
168
  export { tamperCapability } from '../capabilities/tamper.cap.js';
168
169
  export { temperatureSensorCapability } from '../capabilities/temperature-sensor.cap.js';
170
+ export { templateCapability } from '../capabilities/template.cap.js';
169
171
  export { terminalSessionCapability } from '../capabilities/terminal-session.cap.js';
170
172
  export { toastCapability } from '../capabilities/toast.cap.js';
171
173
  export { trainingCapability } from '../capabilities/training.cap.js';
@@ -332,6 +334,7 @@ export declare const CAPABILITY_NAMES: {
332
334
  readonly recordingOnboard: 'recording-onboard';
333
335
  readonly recordingSignal: 'recording-signal';
334
336
  readonly records: 'records';
337
+ readonly remote: 'remote';
335
338
  readonly runningState: 'running-state';
336
339
  readonly sceneMonitor: 'scene-monitor';
337
340
  readonly scriptRunner: 'script-runner';
@@ -355,6 +358,7 @@ export declare const CAPABILITY_NAMES: {
355
358
  readonly system: 'system';
356
359
  readonly tamper: 'tamper';
357
360
  readonly temperatureSensor: 'temperature-sensor';
361
+ readonly template: 'template';
358
362
  readonly terminalSession: 'terminal-session';
359
363
  readonly toast: 'toast';
360
364
  readonly training: 'training';
@@ -534,6 +538,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
534
538
  readonly recordingOnboard: TRouter;
535
539
  readonly recordingSignal: TRouter;
536
540
  readonly records: TRouter;
541
+ readonly remote: TRouter;
537
542
  readonly runningState: TRouter;
538
543
  readonly sceneMonitor: TRouter;
539
544
  readonly scriptRunner: TRouter;
@@ -557,6 +562,7 @@ export interface CapabilityRouterMap<TRouter = unknown> {
557
562
  readonly system: TRouter;
558
563
  readonly tamper: TRouter;
559
564
  readonly temperatureSensor: TRouter;
565
+ readonly template: TRouter;
560
566
  readonly terminalSession: TRouter;
561
567
  readonly toast: TRouter;
562
568
  readonly training: TRouter;
@@ -578,12 +584,12 @@ export interface CapabilityRouterMap<TRouter = unknown> {
578
584
  readonly zoneRules: TRouter;
579
585
  readonly zones: TRouter;
580
586
  }
581
- /** Capability names whose mode is `singleton` (152 caps). */
582
- export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'ir-transmitter', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
587
+ /** Capability names whose mode is `singleton` (153 caps). */
588
+ export declare const SINGLETON_CAPABILITY_NAMES: readonly ['accessories', 'actions', 'addon-pages', 'addon-settings', 'addon-widgets', 'addons', 'admin-ui', 'air-quality-sensor', 'alarm-panel', 'alerts', 'ambient-light-sensor', 'audio-analysis', 'audio-analyzer', 'audio-codec', 'audio-metrics', 'automation-control', 'backup', 'battery', 'binary', 'brightness', 'button', 'calendars', 'camera-credentials', 'camera-grid-layout', 'camera-pipeline-config', 'camera-streams', 'carbon-monoxide', 'climate-control', 'color', 'composer', 'connectivity', 'consumables', 'contact', 'control', 'core-blocks', 'cover', 'database-snapshot', 'day-night', 'decoder', 'detection-pipeline', 'device-admin-link', 'device-credentials', 'device-discovery', 'device-history', 'device-manager', 'device-ops', 'device-state', 'device-status', 'dishwasher', 'display-palette', 'doorbell', 'enum-sensor', 'event-emitter', 'face-gallery', 'fan-control', 'feature-probe', 'filesystem-browse', 'flood', 'gas', 'group-active', 'group-commands', 'group-status', 'heating-valve', 'humidifier', 'humidity-sensor', 'image', 'image-settings', 'integrations', 'intercom', 'ir-transmitter', 'keychain', 'keychain-admin', 'lawn-mower-control', 'llm-runtime', 'local-network', 'lock-control', 'media-player', 'meter', 'metrics-provider', 'model-convert', 'model-distributor', 'motion', 'motion-detection', 'motion-trigger', 'motion-zones', 'native-object-detection', 'navigation', 'network-link', 'network-quality', 'node-certificates', 'nodes', 'notification-rules', 'notifier', 'numeric-sensor', 'oidc-connections', 'osd', 'osd-manager', 'pet-feeder', 'pipeline-analytics', 'pipeline-executor', 'pipeline-orchestrator', 'pipeline-runner', 'plate-gallery', 'platform-probe', 'power-meter', 'presence', 'pressure-sensor', 'privacy-mask', 'ptz', 'ptz-autotrack', 'reboot', 'record-entries', 'recording-archive', 'recording-export', 'recording-onboard', 'recording-signal', 'records', 'remote', 'running-state', 'scene-monitor', 'script-runner', 'server-management', 'settings-store', 'smoke', 'snapshot', 'sso-bridge', 'storage', 'storage-admin', 'storage-migration', 'stream-broker', 'stream-catalog', 'stream-params', 'stream-signals', 'switch', 'system', 'tamper', 'temperature-sensor', 'terminal-session', 'toast', 'training', 'update', 'user-management', 'vacuum-control', 'valve', 'vector-store', 'vibration', 'viewer-ui', 'water-heater', 'weather', 'webrtc-session', 'zone-analytics', 'zone-rules', 'zones'];
583
589
  /** Union of singleton capability names (literal string union). */
584
590
  export type SingletonCapabilityName = typeof SINGLETON_CAPABILITY_NAMES[number];
585
- /** Capability names whose mode is `collection` (36 caps). */
586
- export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', 'addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-adoption', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', 'embedding-encoder', 'failure-contribution', 'llm', 'load-contribution', 'log-channels', 'log-destination', 'login-method', 'mesh-network', 'mqtt-broker', 'network-access', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
591
+ /** Capability names whose mode is `collection` (37 caps). */
592
+ export declare const COLLECTION_CAPABILITY_NAMES: readonly ['action-source', 'addon-pages-source', 'addon-routes', 'addon-widgets-source', 'auth-provider', 'broker', 'calendar-source', 'connection-test', 'custom-model-registry', 'data-store-provider', 'device-adoption', 'device-export', 'device-extension', 'device-provider', 'device-removal-hook', 'embedding-encoder', 'failure-contribution', 'llm', 'load-contribution', 'log-channels', 'log-destination', 'login-method', 'mesh-network', 'mqtt-broker', 'network-access', 'notification-output', 'oauth-integration', 'recording', 'smtp-provider', 'storage-evictable', 'storage-occupancy', 'storage-provider', 'template', 'training-provider', 'turn-provider', 'user-passkeys', 'videoclips'];
587
593
  /** Union of collection capability names (literal string union). */
588
594
  export type CollectionCapabilityName = typeof COLLECTION_CAPABILITY_NAMES[number];
589
595
  /** Capability mode lookup at runtime — mirrors the `.cap.ts` definitions. */
@@ -8,7 +8,7 @@
8
8
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
9
9
  * forked runner. See docs/decisions/adr-0028.md.
10
10
  *
11
- * Coverage: 27 collection caps, 45 array methods.
11
+ * Coverage: 28 collection caps, 46 array methods.
12
12
  */
13
13
  export declare const COLLECTION_ARRAY_METHODS: Readonly<Record<string, readonly string[]>>;
14
14
  /**
@@ -1,7 +1,7 @@
1
1
  import { DeviceType } from '../device/device-type.js';
2
2
  /**
3
3
  * Customize catalog, projected from every `*.cap.ts` `customize` block.
4
- * 6 caps. Field keys are `runtimeState` paths. No Zod.
4
+ * 7 caps. Field keys are `runtimeState` paths. No Zod.
5
5
  */
6
6
  export declare const CAP_CUSTOMIZE_CATALOG: {
7
7
  readonly battery: {
@@ -318,6 +318,23 @@ export declare const CAP_CUSTOMIZE_CATALOG: {
318
318
  }];
319
319
  }];
320
320
  };
321
+ readonly remote: {
322
+ readonly version: 1;
323
+ readonly targets: readonly [{
324
+ readonly id: 'remote';
325
+ readonly cardinality: 'config';
326
+ readonly deviceTypes: readonly [DeviceType.MediaPlayer];
327
+ readonly apply: 'add';
328
+ readonly readMethod: 'getConfig';
329
+ readonly writeMethod: 'setConfig';
330
+ readonly vocabularyCap: 'remote';
331
+ readonly sources: readonly [];
332
+ readonly sourceReport: {
333
+ readonly status: 'assignment-status';
334
+ };
335
+ readonly advancedExpression: false;
336
+ }];
337
+ };
321
338
  readonly 'running-state': {
322
339
  readonly version: 1;
323
340
  readonly targets: readonly [{
@@ -6,7 +6,7 @@
6
6
  * scope+access check inside `protectedProcedure` (see
7
7
  * `server/backend/src/api/trpc/trpc.middleware.ts`).
8
8
  *
9
- * Coverage: 1406 method paths across 188 capabilities.
9
+ * Coverage: 1416 method paths across 190 capabilities.
10
10
  */
11
11
  import type { MethodRole } from '../auth/viewer-access.js';
12
12
  import type { CapabilityMethodAccess } from '../capabilities/capability-definition.js';
@@ -6,8 +6,8 @@
6
6
  * system-scope cap that takes a deviceId was previously never device-filtered
7
7
  * — see the generator header).
8
8
  *
9
- * Coverage: 557 methods carry a device reference, of which
10
- * 179 are on SYSTEM-scope caps.
9
+ * Coverage: 562 methods carry a device reference, of which
10
+ * 184 are on SYSTEM-scope caps.
11
11
  *
12
12
  * Top-level fields, number arrays, and one-level arrays of objects carrying
13
13
  * a numeric device field (targets[].deviceId) are all mapped; the matcher
@@ -45,12 +45,14 @@ import type { plateGalleryCapability } from '../capabilities/plate-gallery.cap.j
45
45
  import type { recordEntriesCapability } from '../capabilities/record-entries.cap.js';
46
46
  import type { recordingArchiveCapability } from '../capabilities/recording-archive.cap.js';
47
47
  import type { recordingExportCapability } from '../capabilities/recording-export.cap.js';
48
+ import type { remoteCapability } from '../capabilities/remote.cap.js';
48
49
  import type { serverManagementCapability } from '../capabilities/server-management.cap.js';
49
50
  import type { settingsStoreCapability } from '../capabilities/settings-store.cap.js';
50
51
  import type { storageCapability } from '../capabilities/storage.cap.js';
51
52
  import type { storageMigrationCapability } from '../capabilities/storage-migration.cap.js';
52
53
  import type { streamBrokerCapability } from '../capabilities/stream-broker.cap.js';
53
54
  import type { systemCapability } from '../capabilities/system.cap.js';
55
+ import type { templateCapability } from '../capabilities/template.cap.js';
54
56
  import type { terminalSessionCapability } from '../capabilities/terminal-session.cap.js';
55
57
  import type { toastCapability } from '../capabilities/toast.cap.js';
56
58
  import type { trainingCapability } from '../capabilities/training.cap.js';
@@ -110,12 +112,14 @@ export interface SystemProxy {
110
112
  readonly recordEntries: Pick<InferProvider<typeof recordEntriesCapability>, 'listEntryKinds' | 'listEntries' | 'putEntry' | 'deleteEntry'>;
111
113
  readonly recordingArchive: Pick<InferProvider<typeof recordingArchiveCapability>, 'getAvailabilityBatch' | 'getDaysWithRecordingsBatch' | 'getStorageUsage' | 'listOpsLog' | 'pauseForStorageMigration' | 'resumeForStorageMigration' | 'refreshStorageLocationsForMigration' | 'startStorageMigrationMove' | 'getStorageMigrationMoveStatus' | 'cancelStorageMigrationMove' | 'relocateFootage' | 'listRelocateJobs' | 'getRelocateResidue' | 'reconcileLedgerAgainstDisk' | 'cancelRelocateJob' | 'planStorageRebalance' | 'startStorageRebalance' | 'getPlacement' | 'setDevicePlacement'>;
112
114
  readonly recordingExport: Pick<InferProvider<typeof recordingExportCapability>, 'createExport' | 'getExport' | 'cancelExport' | 'deleteExport' | 'getDownloadUrl' | 'readExportBytes'>;
115
+ readonly remote: Pick<InferProvider<typeof remoteCapability>, 'getConfig' | 'setConfig' | 'listCommands' | 'sendCommand' | 'sendMediaCommand'>;
113
116
  readonly serverManagement: Pick<InferProvider<typeof serverManagementCapability>, 'getServerPackageStatus' | 'checkServerUpdate' | 'applyServerUpdate' | 'rollbackServerUpdate' | 'restartServer'>;
114
117
  readonly settingsStore: Pick<InferProvider<typeof settingsStoreCapability>, 'get' | 'set' | 'query' | 'upsert' | 'upsertMany' | 'insert' | 'insertMany' | 'transact' | 'update' | 'delete' | 'deleteWhere' | 'updateWhere' | 'count' | 'aggregate' | 'histogram' | 'isEmpty' | 'declareCollection'>;
115
118
  readonly storage: Pick<InferProvider<typeof storageCapability>, 'resolve' | 'write' | 'read' | 'exists' | 'list' | 'delete' | 'getAvailableSpace' | 'beginUpload' | 'writeChunk' | 'finalizeUpload' | 'abortUpload' | 'beginDownload' | 'readChunk' | 'endDownload' | 'listLocations' | 'listLocationDeclarations' | 'upsertLocation' | 'deleteLocation' | 'listDrainProgress' | 'testLocation' | 'listProviders' | 'testConfig'>;
116
119
  readonly storageMigration: Pick<InferProvider<typeof storageMigrationCapability>, 'plan' | 'start' | 'status' | 'cancel' | 'movers' | 'moverClearance' | 'residue' | 'drain' | 'cleanupStart' | 'cleanupStatus' | 'cleanupCancel' | 'history'>;
117
120
  readonly streamBroker: Pick<InferProvider<typeof streamBrokerCapability>, 'fetchEventMedia' | 'listAllCameraStreams' | 'listAllProfileSlots' | 'getBrokerStats' | 'probeStream' | 'listClients' | 'getLiveViewerCounts' | 'killClient' | 'getStreamUrl' | 'getStreamWithCodec' | 'releaseStreamWithCodec' | 'acquireEgressTranscode' | 'releaseEgressTranscode' | 'subscribeAudioChunks' | 'pullAudioChunks' | 'unsubscribeAudioChunks' | 'setPreBufferDuration' | 'getPreBufferInfo' | 'getRtspPort' | 'getAllRtspEntries' | 'getRtspEntry' | 'regenerateRtspToken' | 'setRtspEnabled' | 'isRtspEnabled'>;
118
121
  readonly system: Pick<InferProvider<typeof systemCapability>, 'info' | 'health' | 'featureFlags' | 'networkAddresses' | 'getRetentionConfig' | 'setRetentionConfig' | 'forceRetentionCleanup' | 'getSiteLocation' | 'setSiteLocation' | 'detectSiteLocation' | 'getRequestCensus' | 'getLoadContributions' | 'getFailureContributions' | 'getLoggingSettings' | 'setLoggingSettings'>;
122
+ readonly template: Pick<InferProvider<typeof templateCapability>, 'list' | 'get' | 'create' | 'update' | 'delete'>;
119
123
  readonly terminalSession: Pick<InferProvider<typeof terminalSessionCapability>, 'listProfiles' | 'listInstances' | 'createInstance' | 'updateInstance' | 'deleteInstance' | 'setInstanceEnabled' | 'listLegacyCameras' | 'adoptLegacyMonitor' | 'listSessions' | 'openSession' | 'resize' | 'pullOutput' | 'writeInput' | 'close'>;
120
124
  readonly toast: Pick<InferProvider<typeof toastCapability>, 'onToast'>;
121
125
  readonly training: Pick<InferProvider<typeof trainingCapability>, 'listBaseModels' | 'planJob' | 'startJob' | 'startJobBatch' | 'listJobs' | 'getJob' | 'cancelJob' | 'getJobResult' | 'listCanaryTargets' | 'registerResult' | 'canaryResult' | 'rollbackCanary' | 'discardResult'>;
package/dist/index.d.ts CHANGED
@@ -106,6 +106,7 @@ export type * from './interfaces/server-analysis.js';
106
106
  export * from './interfaces/server-analysis.js';
107
107
  export type * from './interfaces/server-network.js';
108
108
  export type * from './interfaces/status-overlay.js';
109
+ export type * from './interfaces/device-call-redirect.js';
109
110
  export type * from './interfaces/storage.js';
110
111
  export type { LegacyStorageLocationDefault, StorageDrainProgress, StorageLocation, StorageLocationRef, } from './interfaces/storage-location.js';
111
112
  export { gbToBytes, isLocationEnabled, LegacyStorageLocationDefaultSchema, STORAGE_BYTES_PER_GB, StorageDrainProgressSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, } from './interfaces/storage-location.js';
@@ -169,6 +170,10 @@ export * from './automation/step-runner.js';
169
170
  export * from './cap-call-context.js';
170
171
  export * from './capabilities/index.js';
171
172
  export * from './running-state/defaults.js';
173
+ export * from './remote/remote-roles.js';
174
+ export * from './remote/remote-config.js';
175
+ export * from './remote/smartir-draft.js';
176
+ export * from './template/template-kinds.js';
172
177
  export * from './running-state/from-operation.js';
173
178
  export * from './clips/clip-event-labels.js';
174
179
  export * from './device-extension/index.js';