@camstack/types 1.2.446 → 1.2.448

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 (35) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/addon.js +3 -2
  3. package/dist/addon.mjs +3 -2
  4. package/dist/automation/action.d.ts +2 -0
  5. package/dist/automation/index.d.ts +3 -1
  6. package/dist/automation/normalize-units.d.ts +59 -0
  7. package/dist/automation/recipe.d.ts +15 -1
  8. package/dist/capabilities/action-source.cap.d.ts +1 -0
  9. package/dist/capabilities/actions.cap.d.ts +32 -1
  10. package/dist/capabilities/core-blocks.cap.d.ts +17 -0
  11. package/dist/capabilities/index.d.ts +3 -1
  12. package/dist/capabilities/remote-layout-components.cap.d.ts +81 -0
  13. package/dist/capabilities/remote.cap.d.ts +2 -0
  14. package/dist/client.js +1 -2
  15. package/dist/client.mjs +1 -2
  16. package/dist/device/cap-vocabulary/types.d.ts +9 -1
  17. package/dist/generated/addon-api.d.ts +15 -0
  18. package/dist/generated/capability-router-map.d.ts +5 -2
  19. package/dist/generated/collection-array-methods.d.ts +1 -1
  20. package/dist/generated/method-access-map.d.ts +1 -1
  21. package/dist/generated/system-proxy.d.ts +2 -0
  22. package/dist/index.d.ts +6 -1
  23. package/dist/index.js +1786 -733
  24. package/dist/index.mjs +1750 -734
  25. package/dist/interfaces/event-bus.d.ts +9 -0
  26. package/dist/remote/remote-builtin-components.d.ts +15 -0
  27. package/dist/remote/remote-components.d.ts +109 -0
  28. package/dist/remote/remote-config.d.ts +121 -0
  29. package/dist/remote/remote-layout-ops.d.ts +68 -0
  30. package/dist/{sleep-6eG9C8Xl.mjs → sleep-63gM_1JR.mjs} +1 -0
  31. package/dist/{sleep-UXDHn-oJ.js → sleep-BSPhInRm.js} +1 -0
  32. package/dist/units/index.d.ts +3 -0
  33. package/dist/units/quantity-input.d.ts +58 -0
  34. package/dist/units/quantity-units.d.ts +8 -0
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.448] - 2026-10-29
11
+
12
+ ### Changed
13
+
14
+ - The node-restarting and node-updating events carry what is being updated, and both can be used in notification templates
15
+ - Remote templates gain section dividers, titled panels, button shapes and tones, and a palette of components (D-pad, rockers, keypad, colour keys, media row) that addons can extend
16
+
17
+ ## [1.2.447] - 2026-10-29
18
+
19
+ ### Changed
20
+
21
+ - Numbers tied to a physical quantity can be entered in a unit you pick: automation conditions and steps accept { value, unit }, converted to the stored unit, and a bare API number is accepted with a warning
22
+ - node-restarting and node-updating are offered in the served notification template catalog again
23
+
10
24
  ## [1.2.446] - 2026-10-29
11
25
 
12
26
  ### Changed
package/dist/addon.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sleep = require("./sleep-UXDHn-oJ.js");
2
+ const require_sleep = require("./sleep-BSPhInRm.js");
3
3
  const require_event_category = require("./event-category-E17zaHjN.js");
4
4
  const require_err_msg = require("./err-msg-EJhsFHqa.js");
5
5
  //#region src/generated/cap-input-defaults.ts
@@ -367,7 +367,7 @@ function materialise(defaults) {
367
367
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
368
368
  * forked runner. See docs/decisions/adr-0028.md.
369
369
  *
370
- * Coverage: 28 collection caps, 48 array methods.
370
+ * Coverage: 29 collection caps, 49 array methods.
371
371
  */
372
372
  var COLLECTION_ARRAY_METHODS = Object.freeze({
373
373
  "action-source": ["listActions"],
@@ -408,6 +408,7 @@ var COLLECTION_ARRAY_METHODS = Object.freeze({
408
408
  "listTargets"
409
409
  ],
410
410
  "recording": ["listSources"],
411
+ "remote-layout-components": ["listComponents"],
411
412
  "storage-occupancy": ["getOccupancy"],
412
413
  "storage-provider": ["list"],
413
414
  "template": ["list"],
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $n as RECORD_SECRET_COLLECTION_PREFIX, $r as SECRET_CLEAR, $t as entryBody, A as HF_REPO, An as RECORDS_ERROR_CODES, B as DEVICE_CHILDREN_BATCH_MAX, Bn as asRecordsError, C as addonSliceHandleApi, Cn as BatchTooLargeError, Dn as InvalidRecordError, En as ForeignSecretMarkerError, Fn as RecordsError, Fr as formatSecretScope, G as describeCustomActions, Gn as RECORD_DATABASES, H as withoutCallerStamp, Hn as RECORD_BATCH_MAX, Hr as createEvent, I as deviceOpsCapability, In as RevConflictError, Ir as globalSecretScope, Jn as RECORD_ID_MAX_LENGTH, Kn as RECORD_DEFAULT_MAX_DATA_BYTES, L as viewerUiCapability, Ln as TransactRefusedError, Lr as isSecretRef, M as CAP_ADVANCE_FIELDS, Mn as RecordSecretUnavailableError, Mr as SECRET_REF_SCHEME, Nn as RecordTooLargeError, Nr as arrayItemFieldPath, On as NoCallerError, P as CAP_STATE_LEAVES, Pn as RecordUniqueViolationError, Pr as buildSecretRef, Q as readNodePin, Qn as RECORD_QUERY_MAX, Qt as defineEntryKind, R as PipelineRunResultBridge, Rn as UnindexedFilterError, Rr as normalizeSecretOwner, Sn as isZodSecret, Sr as normalizeAddonInitResult, Tn as FilterRequiredError, U as customAction, Un as RECORD_BATCH_MAX_BYTES, Ur as emitReadiness, V as CALLER_STAMPED_CAPABILITIES, Vn as recordsErrorFromMessage, W as defineCustomActions, Wn as RECORD_CLASSES, Xn as RECORD_MAX_INDEXES, Y as addonPagesSourceCapability, Yn as RECORD_MAX_DATA_BYTES, Z as nodePin, Zn as RECORD_MAX_INDEX_FIELDS, Zt as makeInMemoryRecords, _ as readErrorI18n, _n as recordSecretCollection, _r as DATAPLANE_SECRET_HEADER, ai as makeSecretMarker, an as RecordKindDeclarationSchema, ar as MIN_SCRUBBED_LENGTH, b as isDeviceScopedCap, br as BaseAddon, c as asString, cn as StoredRecordKindDeclarationSchema, cr as knownSecretCount, d as parseJsonUnknown, dn as defineRecordKinds, dr as shortSecretRefHash, ei as classifySecretWrite, en as createRecordsAccess, er as RECORD_SETTINGS_MAX_ROWS, f as hfModelUrl, fn as REMOVE_LEAF, fr as PEER_BYTES_CHUNK_BYTES, g as ErrorI18nPayloadSchema, gn as recordArrayItemPath, gt as ReadinessTimeoutError, hn as parseSecretPath, hr as PEER_BYTES_TICKET_TTL_MS, ht as ReadinessRegistry, ii as isSecretMarkerLike, in as RecordIndexSchema, ir as createSecretsAccess, jn as RecordNotFoundError, kn as PlaintextSecretError, ln as assertValidDeclaration, lr as registerKnownSecret, mn as mapSecretLeaves, mr as PEER_BYTES_STALL_MS, mt as MODEL_FORMATS, ni as isSecretFieldView, nn as EntryDescriptorSchema, nr as resolveSecretViewsIn, o as asJsonObject, oi as toSecretFieldView, on as RecordKindNameSchema, or as clearKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as collectSecretLeaves, pr as PEER_BYTES_MAX_OUTSTANDING, q as adminUiCapability, qn as RECORD_DELETE_BATCH, r as maskUrlCredentials, ri as isSecretMarker, rn as RecordFieldPathSchema, rr as REVALIDATE_AFTER_MS, sn as RecordRetentionSchema, sr as forgetKnownSecret, st as expandCapMethods, t as sleep, ti as isSecretClear, tn as assertTransactScope, tr as RECORD_SWEEP_INTERVAL_MS, un as declarationsOf, ur as scrubKnownSecrets, vn as recordSecretRef, w as createEventBusSliceSource, wn as DeclarationRefusedError, x as createDeviceProxy, xn as collectZodSecretPaths, y as DEVICE_SCOPED_CAPS, yn as secretArrayPrefixes, yr as DisposerChain, yt as scopeKey, z as PipelineStepInputSchema, zn as UnknownRecordKindError, zr as parseSecretRef } from "./sleep-6eG9C8Xl.mjs";
1
+ import { $n as RECORD_SECRET_COLLECTION_PREFIX, $r as SECRET_CLEAR, $t as entryBody, A as HF_REPO, An as RECORDS_ERROR_CODES, B as DEVICE_CHILDREN_BATCH_MAX, Bn as asRecordsError, C as addonSliceHandleApi, Cn as BatchTooLargeError, Dn as InvalidRecordError, En as ForeignSecretMarkerError, Fn as RecordsError, Fr as formatSecretScope, G as describeCustomActions, Gn as RECORD_DATABASES, H as withoutCallerStamp, Hn as RECORD_BATCH_MAX, Hr as createEvent, I as deviceOpsCapability, In as RevConflictError, Ir as globalSecretScope, Jn as RECORD_ID_MAX_LENGTH, Kn as RECORD_DEFAULT_MAX_DATA_BYTES, L as viewerUiCapability, Ln as TransactRefusedError, Lr as isSecretRef, M as CAP_ADVANCE_FIELDS, Mn as RecordSecretUnavailableError, Mr as SECRET_REF_SCHEME, Nn as RecordTooLargeError, Nr as arrayItemFieldPath, On as NoCallerError, P as CAP_STATE_LEAVES, Pn as RecordUniqueViolationError, Pr as buildSecretRef, Q as readNodePin, Qn as RECORD_QUERY_MAX, Qt as defineEntryKind, R as PipelineRunResultBridge, Rn as UnindexedFilterError, Rr as normalizeSecretOwner, Sn as isZodSecret, Sr as normalizeAddonInitResult, Tn as FilterRequiredError, U as customAction, Un as RECORD_BATCH_MAX_BYTES, Ur as emitReadiness, V as CALLER_STAMPED_CAPABILITIES, Vn as recordsErrorFromMessage, W as defineCustomActions, Wn as RECORD_CLASSES, Xn as RECORD_MAX_INDEXES, Y as addonPagesSourceCapability, Yn as RECORD_MAX_DATA_BYTES, Z as nodePin, Zn as RECORD_MAX_INDEX_FIELDS, Zt as makeInMemoryRecords, _ as readErrorI18n, _n as recordSecretCollection, _r as DATAPLANE_SECRET_HEADER, ai as makeSecretMarker, an as RecordKindDeclarationSchema, ar as MIN_SCRUBBED_LENGTH, b as isDeviceScopedCap, br as BaseAddon, c as asString, cn as StoredRecordKindDeclarationSchema, cr as knownSecretCount, d as parseJsonUnknown, dn as defineRecordKinds, dr as shortSecretRefHash, ei as classifySecretWrite, en as createRecordsAccess, er as RECORD_SETTINGS_MAX_ROWS, f as hfModelUrl, fn as REMOVE_LEAF, fr as PEER_BYTES_CHUNK_BYTES, g as ErrorI18nPayloadSchema, gn as recordArrayItemPath, gt as ReadinessTimeoutError, hn as parseSecretPath, hr as PEER_BYTES_TICKET_TTL_MS, ht as ReadinessRegistry, ii as isSecretMarkerLike, in as RecordIndexSchema, ir as createSecretsAccess, jn as RecordNotFoundError, kn as PlaintextSecretError, ln as assertValidDeclaration, lr as registerKnownSecret, mn as mapSecretLeaves, mr as PEER_BYTES_STALL_MS, mt as MODEL_FORMATS, ni as isSecretFieldView, nn as EntryDescriptorSchema, nr as resolveSecretViewsIn, o as asJsonObject, oi as toSecretFieldView, on as RecordKindNameSchema, or as clearKnownSecrets, p as BOOT_RECOVERY_BACKOFF_MS, pn as collectSecretLeaves, pr as PEER_BYTES_MAX_OUTSTANDING, q as adminUiCapability, qn as RECORD_DELETE_BATCH, r as maskUrlCredentials, ri as isSecretMarker, rn as RecordFieldPathSchema, rr as REVALIDATE_AFTER_MS, sn as RecordRetentionSchema, sr as forgetKnownSecret, st as expandCapMethods, t as sleep, ti as isSecretClear, tn as assertTransactScope, tr as RECORD_SWEEP_INTERVAL_MS, un as declarationsOf, ur as scrubKnownSecrets, vn as recordSecretRef, w as createEventBusSliceSource, wn as DeclarationRefusedError, x as createDeviceProxy, xn as collectZodSecretPaths, y as DEVICE_SCOPED_CAPS, yn as secretArrayPrefixes, yr as DisposerChain, yt as scopeKey, z as PipelineStepInputSchema, zn as UnknownRecordKindError, zr as parseSecretRef } from "./sleep-63gM_1JR.mjs";
2
2
  import { t as EventCategory } from "./event-category-DmZDPDf_.mjs";
3
3
  import { a as DeviceType, t as errMsg } from "./err-msg-DWXWc0Di.mjs";
4
4
  //#region src/generated/cap-input-defaults.ts
@@ -366,7 +366,7 @@ function materialise(defaults) {
366
366
  * barrel (`ALL_CAPABILITY_DEFINITIONS`), which would cost ~144MB RSS per
367
367
  * forked runner. See docs/decisions/adr-0028.md.
368
368
  *
369
- * Coverage: 28 collection caps, 48 array methods.
369
+ * Coverage: 29 collection caps, 49 array methods.
370
370
  */
371
371
  var COLLECTION_ARRAY_METHODS = Object.freeze({
372
372
  "action-source": ["listActions"],
@@ -407,6 +407,7 @@ var COLLECTION_ARRAY_METHODS = Object.freeze({
407
407
  "listTargets"
408
408
  ],
409
409
  "recording": ["listSources"],
410
+ "remote-layout-components": ["listComponents"],
410
411
  "storage-occupancy": ["getOccupancy"],
411
412
  "storage-provider": ["list"],
412
413
  "template": ["list"],
@@ -92,6 +92,7 @@ export declare const ActionEntrySchema: z.ZodObject<{
92
92
  cap: z.ZodString;
93
93
  method: z.ZodString;
94
94
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
95
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
95
96
  }, z.core.$strip>], "kind">>>;
96
97
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
97
98
  name: z.ZodString;
@@ -127,6 +128,7 @@ export declare const ActionInputSchema: z.ZodObject<{
127
128
  cap: z.ZodString;
128
129
  method: z.ZodString;
129
130
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
131
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
130
132
  }, z.core.$strip>], "kind">>;
131
133
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
132
134
  name: z.ZodString;
@@ -20,7 +20,9 @@ export type { CooldownInput, CooldownVerdict, RunGateAdmission } from './run-gat
20
20
  export { RunGate } from './run-gate.js';
21
21
  export type { AutomationConditionTraceNode, AutomationRunOutcome, AutomationRunTrace, AutomationRunVerdict, AutomationStateDoc, AutomationStepTrace, AutomationTriggerTrace, TraceNodeOutcome, TraceValue, } from './trace.js';
22
22
  export { AutomationConditionTraceNodeSchema, EMPTY_AUTOMATION_STATE, mergeSkipTraces, AutomationRunOutcomeSchema, AutomationRunTraceSchema, AutomationRunVerdictSchema, AutomationStateDocSchema, AutomationStepTraceSchema, AutomationTriggerTraceSchema, appendTrace, buildTriggerTrace, isSkippedTrace, skipSignature, TraceNodeOutcomeSchema, TraceValueSchema, } from './trace.js';
23
- export type { ActionStep, AutomationAction, AutomationCondition, AutomationConditionAll, AutomationConditionAny, AutomationConditionExpression, AutomationConditionLeaf, AutomationConditionNot, AutomationConditionOperator, AutomationConditionStationaryPresent, AutomationRecipe, AutomationRunMode, AutomationTrigger, } from './recipe.js';
23
+ export type { ActionStep, AutomationAction, AutomationCapStep, AutomationCondition, AutomationConditionAll, AutomationConditionAny, AutomationConditionExpression, AutomationConditionLeaf, AutomationConditionNot, AutomationConditionOperator, AutomationConditionStationaryPresent, AutomationRecipe, AutomationRunMode, AutomationTrigger, } from './recipe.js';
24
24
  export { ActionStepSchema, AutomationActionSchema, AutomationCapStepSchema, AutomationWaitStepSchema, AutomationConditionOperatorSchema, AutomationConditionSchema, AutomationRecipeSchema, AutomationRunModeSchema, AutomationTriggerSchema, conditionDepth, countConditionLeaves, DEFAULT_TRACE_KEEP, MAX_TRACE_KEEP, MAX_CONDITION_DEPTH, MAX_CONDITION_LEAVES, validateRecipeBounds, } from './recipe.js';
25
25
  export * from './action.js';
26
26
  export * from './step-runner.js';
27
+ export { UnitWarningSchema, capUnitResolver, normalizeActionUnits, normalizeConditionUnits, normalizeRecipeUnits, } from './normalize-units.js';
28
+ export type { UnitResolver, UnitWarning, UnitsNormalized } from './normalize-units.js';
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The save boundary of the value + unit contract (D972).
3
+ *
4
+ * A number tied to a physical quantity is ENTERED in a unit the person picks
5
+ * and STORED in a fixed one:
6
+ *
7
+ * - a condition leaf on a device field → the field's base unit (D944);
8
+ * - a cap step arg → the unit the method's input declares (`paramMeta`).
9
+ *
10
+ * The write form of a number is {@link QuantityValue} (`{ value, unit }`,
11
+ * "this number is in this unit"). Normalising converts it, stores the bare
12
+ * number and records the picked unit (`leaf.unit` / `step.argUnits[arg]`) so an
13
+ * editor can show the number the way it was typed. Normalising an already
14
+ * normalised record changes nothing: a stored bare number is never converted
15
+ * again, which is why the picked unit is a separate field.
16
+ *
17
+ * A bare number on a quantity field is ACCEPTED as the base / declared unit
18
+ * and reported as a {@link UnitWarning}; a unit that cannot belong to the
19
+ * quantity is a typed {@link QuantityUnitError}.
20
+ *
21
+ * Pure: the cap knowledge arrives as a {@link UnitResolver}.
22
+ */
23
+ import type { CapabilityDefinition } from '../capabilities/capability-definition.js';
24
+ import { type ParamMeta } from '../units/quantity-input.js';
25
+ import type { ReadingQuantity } from '../units/quantity.js';
26
+ import { z } from 'zod';
27
+ import type { AutomationAction, AutomationCapStep, AutomationCondition, AutomationRecipe } from './recipe.js';
28
+ /** What the boundary needs to know about caps. */
29
+ export interface UnitResolver {
30
+ /** The quantity of a status field, or `undefined` when it is not a quantity. */
31
+ fieldQuantity(cap: string, fieldPath: string): ReadingQuantity | undefined;
32
+ /** What a method input declares for `arg`, or `undefined` when it is not a quantity. */
33
+ paramMeta(cap: string, method: string, arg: string): ParamMeta | undefined;
34
+ }
35
+ /** A bare number accepted as a base unit — the save succeeded, say so. */
36
+ export declare const UnitWarningSchema: z.ZodObject<{
37
+ path: z.ZodString;
38
+ deviceId: z.ZodOptional<z.ZodNumber>;
39
+ field: z.ZodString;
40
+ value: z.ZodNumber;
41
+ assumedUnit: z.ZodString;
42
+ message: z.ZodString;
43
+ }, z.core.$strip>;
44
+ export type UnitWarning = z.infer<typeof UnitWarningSchema>;
45
+ export interface UnitsNormalized<T> {
46
+ readonly value: T;
47
+ readonly warnings: readonly UnitWarning[];
48
+ }
49
+ /** A resolver over capability definitions (the generated registry, or a fake). */
50
+ export declare function capUnitResolver(defs: readonly CapabilityDefinition[]): UnitResolver;
51
+ /** Normalise every leaf of a condition tree. Throws {@link QuantityUnitError}. */
52
+ export declare function normalizeConditionUnits(condition: AutomationCondition, resolver: UnitResolver, path?: string): UnitsNormalized<AutomationCondition>;
53
+ /**
54
+ * Normalise the cap steps of an action list (an internal Action's steps, or a
55
+ * recipe's actions). Other step kinds pass through. Throws {@link QuantityUnitError}.
56
+ */
57
+ export declare function normalizeActionUnits<A extends AutomationAction>(actions: readonly A[], resolver: UnitResolver, path?: string): UnitsNormalized<(A | AutomationCapStep)[]>;
58
+ /** Normalise a whole recipe: its condition tree and its actions. */
59
+ export declare function normalizeRecipeUnits(recipe: AutomationRecipe, resolver: UnitResolver): UnitsNormalized<AutomationRecipe>;
@@ -27,6 +27,7 @@
27
27
  */
28
28
  import { z } from 'zod';
29
29
  import { type ExpressionBindingSource } from '../expression/binding-source.js';
30
+ import { type QuantityValue } from '../units/quantity-input.js';
30
31
  /**
31
32
  * Depth of a condition tree, counting the root container as level 1.
32
33
  *
@@ -58,7 +59,15 @@ export interface AutomationConditionLeaf {
58
59
  readonly cap: string;
59
60
  readonly fieldPath: string;
60
61
  readonly operator: AutomationConditionOperator;
61
- readonly value: string | number | boolean | readonly (string | number)[];
62
+ /**
63
+ * The value. A number on a quantity field is stored in the field's base unit
64
+ * (D944); {@link QuantityValue} is the WRITE form — "this number is in this
65
+ * unit" — which the save boundary replaces with the converted number and
66
+ * `unit`. A leaf that still carries one is never evaluated (it fails).
67
+ */
68
+ readonly value: string | number | boolean | readonly (string | number)[] | QuantityValue;
69
+ /** The unit the person picked for `value` (display only; `value` is in the base unit). */
70
+ readonly unit?: string;
62
71
  }
63
72
  /** The escape hatch: the bounded expression engine over named device bindings. */
64
73
  export interface AutomationConditionExpression {
@@ -170,7 +179,9 @@ export declare const AutomationCapStepSchema: z.ZodObject<{
170
179
  cap: z.ZodString;
171
180
  method: z.ZodString;
172
181
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
182
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
173
183
  }, z.core.$strip>;
184
+ export type AutomationCapStep = z.infer<typeof AutomationCapStepSchema>;
174
185
  /**
175
186
  * The steps an internal Action may contain: cap and wait, and nothing that can
176
187
  * call back into an Action — so an Action can never reach itself (no cycles).
@@ -186,6 +197,7 @@ export declare const ActionStepSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
186
197
  cap: z.ZodString;
187
198
  method: z.ZodString;
188
199
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
200
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
189
201
  }, z.core.$strip>], "kind">;
190
202
  export type ActionStep = z.infer<typeof ActionStepSchema>;
191
203
  export declare const AutomationActionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -199,6 +211,7 @@ export declare const AutomationActionSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
199
211
  cap: z.ZodString;
200
212
  method: z.ZodString;
201
213
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
214
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
202
215
  }, z.core.$strip>, z.ZodObject<{
203
216
  kind: z.ZodLiteral<"action">;
204
217
  actionId: z.ZodString;
@@ -289,6 +302,7 @@ export declare const AutomationRecipeSchema: z.ZodObject<{
289
302
  cap: z.ZodString;
290
303
  method: z.ZodString;
291
304
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
305
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
292
306
  }, z.core.$strip>, z.ZodObject<{
293
307
  kind: z.ZodLiteral<"action">;
294
308
  actionId: z.ZodString;
@@ -42,6 +42,7 @@ export declare const actionSourceCapability: {
42
42
  cap: z.ZodString;
43
43
  method: z.ZodString;
44
44
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
45
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
45
46
  }, z.core.$strip>], "kind">>>;
46
47
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
47
48
  name: z.ZodString;
@@ -31,6 +31,7 @@ export declare const actionsCapability: {
31
31
  cap: z.ZodString;
32
32
  method: z.ZodString;
33
33
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
34
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
34
35
  }, z.core.$strip>], "kind">>>;
35
36
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
36
37
  name: z.ZodString;
@@ -79,6 +80,7 @@ export declare const actionsCapability: {
79
80
  cap: z.ZodString;
80
81
  method: z.ZodString;
81
82
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
83
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
82
84
  }, z.core.$strip>], "kind">>>;
83
85
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
84
86
  name: z.ZodString;
@@ -225,7 +227,15 @@ export declare const actionsCapability: {
225
227
  lastAt: z.ZodNumber;
226
228
  }, z.core.$strip>>;
227
229
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
228
- /** Internal actions only. A read-only (addon) entry is refused with `[read-only]`. */
230
+ /**
231
+ * Internal actions only; a read-only (addon) entry is refused with `[read-only]`.
232
+ * Create an internal action. A cap step arg that is a physical quantity may
233
+ * be sent as `{ value, unit }` ("value expressed in unit"); the server
234
+ * converts it to the unit the method's input declares, stores the bare
235
+ * number plus the picked unit in `argUnits`, and refuses a unit of another
236
+ * dimension (`[invalid-steps]`). A bare number is taken as the declared
237
+ * unit and answered as a `warnings` entry (D972).
238
+ */
229
239
  readonly create: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
230
240
  action: z.ZodObject<{
231
241
  name: z.ZodString;
@@ -240,6 +250,7 @@ export declare const actionsCapability: {
240
250
  cap: z.ZodString;
241
251
  method: z.ZodString;
242
252
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
253
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
243
254
  }, z.core.$strip>], "kind">>;
244
255
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
245
256
  name: z.ZodString;
@@ -276,6 +287,7 @@ export declare const actionsCapability: {
276
287
  cap: z.ZodString;
277
288
  method: z.ZodString;
278
289
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
290
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
279
291
  }, z.core.$strip>], "kind">>>;
280
292
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
281
293
  name: z.ZodString;
@@ -296,6 +308,14 @@ export declare const actionsCapability: {
296
308
  lastError: z.ZodNullable<z.ZodString>;
297
309
  }, z.core.$strip>;
298
310
  }, z.core.$strip>;
311
+ warnings: z.ZodOptional<z.ZodArray<z.ZodObject<{
312
+ path: z.ZodString;
313
+ deviceId: z.ZodOptional<z.ZodNumber>;
314
+ field: z.ZodString;
315
+ value: z.ZodNumber;
316
+ assumedUnit: z.ZodString;
317
+ message: z.ZodString;
318
+ }, z.core.$strip>>>;
299
319
  }, z.core.$strip>, "mutation">;
300
320
  readonly update: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
301
321
  actionId: z.ZodString;
@@ -312,6 +332,7 @@ export declare const actionsCapability: {
312
332
  cap: z.ZodString;
313
333
  method: z.ZodString;
314
334
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
335
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
315
336
  }, z.core.$strip>], "kind">>>;
316
337
  variables: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
317
338
  name: z.ZodString;
@@ -348,6 +369,7 @@ export declare const actionsCapability: {
348
369
  cap: z.ZodString;
349
370
  method: z.ZodString;
350
371
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
372
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
351
373
  }, z.core.$strip>], "kind">>>;
352
374
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
353
375
  name: z.ZodString;
@@ -368,6 +390,14 @@ export declare const actionsCapability: {
368
390
  lastError: z.ZodNullable<z.ZodString>;
369
391
  }, z.core.$strip>;
370
392
  }, z.core.$strip>;
393
+ warnings: z.ZodOptional<z.ZodArray<z.ZodObject<{
394
+ path: z.ZodString;
395
+ deviceId: z.ZodOptional<z.ZodNumber>;
396
+ field: z.ZodString;
397
+ value: z.ZodNumber;
398
+ assumedUnit: z.ZodString;
399
+ message: z.ZodString;
400
+ }, z.core.$strip>>>;
371
401
  }, z.core.$strip>, "mutation">;
372
402
  readonly delete: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
373
403
  actionId: z.ZodString;
@@ -399,6 +429,7 @@ export declare const actionsCapability: {
399
429
  cap: z.ZodString;
400
430
  method: z.ZodString;
401
431
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
432
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
402
433
  }, z.core.$strip>], "kind">>>;
403
434
  variables: z.ZodOptional<z.ZodArray<z.ZodObject<{
404
435
  name: z.ZodString;
@@ -188,6 +188,7 @@ export declare const CoreBlockSourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject
188
188
  cap: z.ZodString;
189
189
  method: z.ZodString;
190
190
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
191
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
191
192
  }, z.core.$strip>, z.ZodObject<{
192
193
  kind: z.ZodLiteral<"action">;
193
194
  actionId: z.ZodString;
@@ -731,6 +732,7 @@ export declare const CoreBlockSchema: z.ZodObject<{
731
732
  cap: z.ZodString;
732
733
  method: z.ZodString;
733
734
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
735
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
734
736
  }, z.core.$strip>, z.ZodObject<{
735
737
  kind: z.ZodLiteral<"action">;
736
738
  actionId: z.ZodString;
@@ -1090,6 +1092,7 @@ export declare const CompositionViewSchema: z.ZodObject<{
1090
1092
  cap: z.ZodString;
1091
1093
  method: z.ZodString;
1092
1094
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1095
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1093
1096
  }, z.core.$strip>, z.ZodObject<{
1094
1097
  kind: z.ZodLiteral<"action">;
1095
1098
  actionId: z.ZodString;
@@ -1447,6 +1450,7 @@ export declare const CompositionListReadSchema: z.ZodDiscriminatedUnion<[z.ZodOb
1447
1450
  cap: z.ZodString;
1448
1451
  method: z.ZodString;
1449
1452
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1453
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1450
1454
  }, z.core.$strip>, z.ZodObject<{
1451
1455
  kind: z.ZodLiteral<"action">;
1452
1456
  actionId: z.ZodString;
@@ -1808,6 +1812,7 @@ export declare const CompositionGetReadSchema: z.ZodDiscriminatedUnion<[z.ZodObj
1808
1812
  cap: z.ZodString;
1809
1813
  method: z.ZodString;
1810
1814
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1815
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1811
1816
  }, z.core.$strip>, z.ZodObject<{
1812
1817
  kind: z.ZodLiteral<"action">;
1813
1818
  actionId: z.ZodString;
@@ -2170,6 +2175,7 @@ export declare const CompositionCustomizationReadSchema: z.ZodDiscriminatedUnion
2170
2175
  cap: z.ZodString;
2171
2176
  method: z.ZodString;
2172
2177
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2178
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2173
2179
  }, z.core.$strip>, z.ZodObject<{
2174
2180
  kind: z.ZodLiteral<"action">;
2175
2181
  actionId: z.ZodString;
@@ -2552,6 +2558,7 @@ export declare const coreBlocksCapability: {
2552
2558
  cap: z.ZodString;
2553
2559
  method: z.ZodString;
2554
2560
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2561
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2555
2562
  }, z.core.$strip>, z.ZodObject<{
2556
2563
  kind: z.ZodLiteral<"action">;
2557
2564
  actionId: z.ZodString;
@@ -2872,6 +2879,7 @@ export declare const coreBlocksCapability: {
2872
2879
  cap: z.ZodString;
2873
2880
  method: z.ZodString;
2874
2881
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2882
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2875
2883
  }, z.core.$strip>, z.ZodObject<{
2876
2884
  kind: z.ZodLiteral<"action">;
2877
2885
  actionId: z.ZodString;
@@ -3206,6 +3214,7 @@ export declare const coreBlocksCapability: {
3206
3214
  cap: z.ZodString;
3207
3215
  method: z.ZodString;
3208
3216
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3217
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3209
3218
  }, z.core.$strip>, z.ZodObject<{
3210
3219
  kind: z.ZodLiteral<"action">;
3211
3220
  actionId: z.ZodString;
@@ -3538,6 +3547,7 @@ export declare const coreBlocksCapability: {
3538
3547
  cap: z.ZodString;
3539
3548
  method: z.ZodString;
3540
3549
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3550
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3541
3551
  }, z.core.$strip>, z.ZodObject<{
3542
3552
  kind: z.ZodLiteral<"action">;
3543
3553
  actionId: z.ZodString;
@@ -3866,6 +3876,7 @@ export declare const coreBlocksCapability: {
3866
3876
  cap: z.ZodString;
3867
3877
  method: z.ZodString;
3868
3878
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3879
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3869
3880
  }, z.core.$strip>, z.ZodObject<{
3870
3881
  kind: z.ZodLiteral<"action">;
3871
3882
  actionId: z.ZodString;
@@ -4199,6 +4210,7 @@ export declare const coreBlocksCapability: {
4199
4210
  cap: z.ZodString;
4200
4211
  method: z.ZodString;
4201
4212
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4213
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
4202
4214
  }, z.core.$strip>, z.ZodObject<{
4203
4215
  kind: z.ZodLiteral<"action">;
4204
4216
  actionId: z.ZodString;
@@ -4838,6 +4850,7 @@ export declare const coreBlocksCapability: {
4838
4850
  cap: z.ZodString;
4839
4851
  method: z.ZodString;
4840
4852
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4853
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
4841
4854
  }, z.core.$strip>, z.ZodObject<{
4842
4855
  kind: z.ZodLiteral<"action">;
4843
4856
  actionId: z.ZodString;
@@ -5381,6 +5394,7 @@ export declare const coreBlocksCapability: {
5381
5394
  cap: z.ZodString;
5382
5395
  method: z.ZodString;
5383
5396
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5397
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
5384
5398
  }, z.core.$strip>, z.ZodObject<{
5385
5399
  kind: z.ZodLiteral<"action">;
5386
5400
  actionId: z.ZodString;
@@ -5706,6 +5720,7 @@ export declare const coreBlocksCapability: {
5706
5720
  cap: z.ZodString;
5707
5721
  method: z.ZodString;
5708
5722
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5723
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
5709
5724
  }, z.core.$strip>, z.ZodObject<{
5710
5725
  kind: z.ZodLiteral<"action">;
5711
5726
  actionId: z.ZodString;
@@ -6066,6 +6081,7 @@ export declare const coreBlocksCapability: {
6066
6081
  cap: z.ZodString;
6067
6082
  method: z.ZodString;
6068
6083
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6084
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
6069
6085
  }, z.core.$strip>, z.ZodObject<{
6070
6086
  kind: z.ZodLiteral<"action">;
6071
6087
  actionId: z.ZodString;
@@ -6433,6 +6449,7 @@ export declare const coreBlocksCapability: {
6433
6449
  cap: z.ZodString;
6434
6450
  method: z.ZodString;
6435
6451
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6452
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
6436
6453
  }, z.core.$strip>, z.ZodObject<{
6437
6454
  kind: z.ZodLiteral<"action">;
6438
6455
  actionId: z.ZodString;
@@ -161,6 +161,7 @@ export { type BinaryStatus, BinaryStatusSchema, binaryCapability, type IBinaryPr
161
161
  export { type BrightnessStatus, BrightnessStatusSchema, brightnessCapability, type IBrightnessProvider, } from './brightness.cap.js';
162
162
  export { type IRemoteProvider, REMOTE_CONFIG_REFUSALS, REMOTE_MAX_REPEAT, REMOTE_MEDIA_COMMANDS, REMOTE_REFUSAL_REASONS, type RemoteBoundCommand, type RemoteCommandList, RemoteCommandListSchema, RemoteBoundCommandSchema, type RemoteMediaCommand, type RemoteMediaCommandResult, RemoteMediaCommandResultSchema, RemoteMediaCommandSchema, type RemoteRefusalReason, RemoteRefusalReasonSchema, type RemoteSendResult, RemoteSendResultSchema, type RemoteSetConfigResult, RemoteSetConfigResultSchema, remoteCapability, } from './remote.cap.js';
163
163
  export { type ITemplateProvider, TEMPLATE_WRITE_REFUSALS, type TemplateDeleteResult, TemplateDeleteResultSchema, type TemplateRecord, TemplateRecordSchema, type TemplateUser, TemplateUserSchema, type TemplateWriteResult, TemplateWriteResultSchema, templateCapability, } from './template.cap.js';
164
+ export { type IRemoteLayoutComponentsProvider, remoteLayoutComponentsCapability, } from './remote-layout-components.cap.js';
164
165
  export { buttonCapability, type IButtonProvider } from './button.cap.js';
165
166
  export { irTransmitterCapability, TransmitSettingKeySchema, IrMediumSchema, IrSendResultSchema, IrTransmitterInfoSchema, type IIrTransmitterProvider, type TransmitSettingKey, type IrMedium, type IrSendResult, type IrTransmitterInfo, } from './ir-transmitter.cap.js';
166
167
  export type { CalendarEvent, CalendarInfo, CalendarListEventsInput, CalendarLocalSpan, CalendarSourceKind, ICalendarSourceProvider, } from './calendar-source.cap.js';
@@ -298,6 +299,7 @@ import type { buttonCapability } from './button.cap.js';
298
299
  import type { irTransmitterCapability } from './ir-transmitter.cap.js';
299
300
  import type { remoteCapability } from './remote.cap.js';
300
301
  import type { templateCapability } from './template.cap.js';
302
+ import type { remoteLayoutComponentsCapability } from './remote-layout-components.cap.js';
301
303
  import type { calendarSourceCapability } from './calendar-source.cap.js';
302
304
  import type { calendarsCapability } from './calendars.cap.js';
303
305
  import type { cameraCredentialsCapability } from './camera-credentials.cap.js';
@@ -460,6 +462,6 @@ import type { trainingProviderCapability } from './training-provider.cap.js';
460
462
  import type { zoneAnalyticsCapability } from './zone-analytics.cap.js';
461
463
  import type { zoneRulesCapability } from './zone-rules.cap.js';
462
464
  import type { zonesCapability } from './zones.cap.js';
463
- type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof databaseSnapshotCapability | typeof storageAdminCapability | typeof recordsCapability | typeof recordEntriesCapability | typeof deviceHistoryCapability | typeof keychainCapability | typeof keychainAdminCapability | typeof deviceCredentialsCapability | typeof nodeCertificatesCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof deviceRemovalHookCapability | typeof nodeRemovalHookCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceAdminLinkCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof calendarSourceCapability | typeof calendarsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof composerCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof runningStateCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof petFountainCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof meterCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof actionSourceCapability | typeof actionsCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof trainingCapability | typeof trainingProviderCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof groupActiveCapability | typeof groupCommandsCapability | typeof groupStatusCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof heatingValveCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingArchiveCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof displayPaletteCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof oidcConnectionsCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof cameraGridLayoutCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof recordingOnboardCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof irTransmitterCapability | typeof remoteCapability | typeof templateCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability | typeof deviceExtensionCapability | typeof dishwasherCapability;
465
+ type AnyCapability = typeof streamSignalsCapability | typeof addonSettingsCapability | typeof alertsCapability | typeof storageCapability | typeof storageMigrationCapability | typeof storageProviderCapability | typeof storageEvictableCapability | typeof storageOccupancyCapability | typeof filesystemBrowseCapability | typeof backupCapability | typeof terminalSessionCapability | typeof settingsStoreCapability | typeof dataStoreProviderCapability | typeof databaseSnapshotCapability | typeof storageAdminCapability | typeof recordsCapability | typeof recordEntriesCapability | typeof deviceHistoryCapability | typeof keychainCapability | typeof keychainAdminCapability | typeof deviceCredentialsCapability | typeof nodeCertificatesCapability | typeof logChannelsCapability | typeof logDestinationCapability | typeof loadContributionCapability | typeof failureContributionCapability | typeof deviceRemovalHookCapability | typeof nodeRemovalHookCapability | typeof adminUiCapability | typeof viewerUiCapability | typeof ssoBridgeCapability | typeof userPasskeysCapability | typeof smtpProviderCapability | typeof mqttBrokerCapability | typeof brokerCapability | typeof deviceAdoptionCapability | typeof deviceAdminLinkCapability | typeof deviceExportCapability | typeof addonPagesCapability | typeof addonPagesSourceCapability | typeof addonWidgetsCapability | typeof addonWidgetsSourceCapability | typeof customModelRegistryCapability | typeof modelDistributorCapability | typeof modelConvertCapability | typeof addonRoutesCapability | typeof streamBrokerCapability | typeof decoderCapability | typeof webrtcSessionCapability | typeof cameraStreamsCapability | typeof calendarSourceCapability | typeof calendarsCapability | typeof motionDetectionCapability | typeof pipelineExecutorCapability | typeof detectionPipelineCapability | typeof cameraPipelineConfigCapability | typeof pipelineRunnerCapability | typeof pipelineOrchestratorCapability | typeof audioAnalyzerCapability | typeof audioAnalysisCapability | typeof audioCodecCapability | typeof embeddingEncoderCapability | typeof vectorStoreCapability | typeof deviceProviderCapability | typeof deviceManagerCapability | typeof deviceStateCapability | typeof authProviderCapability | typeof loginMethodCapability | typeof networkAccessCapability | typeof turnProviderCapability | typeof snapshotCapability | typeof llmCapability | typeof llmRuntimeCapability | typeof notificationOutputCapability | typeof composerCapability | typeof coreBlocksCapability | typeof notificationRulesCapability | typeof pipelineAnalyticsCapability | typeof metricsProviderCapability | typeof ptzCapability | typeof ptzAutotrackCapability | typeof navigationCapability | typeof consumablesCapability | typeof connectionTestCapability | typeof runningStateCapability | typeof rebootCapability | typeof deviceDiscoveryCapability | typeof brightnessCapability | typeof colorCapability | typeof climateControlCapability | typeof coverCapability | typeof valveCapability | typeof humidifierCapability | typeof waterHeaterCapability | typeof weatherCapability | typeof imageCapability | typeof lockControlCapability | typeof vacuumControlCapability | typeof petFeederCapability | typeof petFountainCapability | typeof lawnMowerControlCapability | typeof fanControlCapability | typeof controlCapability | typeof notifierCapability | typeof mediaPlayerCapability | typeof meterCapability | typeof alarmPanelCapability | typeof presenceCapability | typeof scriptRunnerCapability | typeof actionSourceCapability | typeof actionsCapability | typeof automationControlCapability | typeof motionTriggerCapability | typeof zonesCapability | typeof zoneRulesCapability | typeof trainingCapability | typeof trainingProviderCapability | typeof zoneAnalyticsCapability | typeof audioMetricsCapability | typeof motionCapability | typeof contactCapability | typeof floodCapability | typeof smokeCapability | typeof carbonMonoxideCapability | typeof gasCapability | typeof groupActiveCapability | typeof groupCommandsCapability | typeof groupStatusCapability | typeof tamperCapability | typeof vibrationCapability | typeof connectivityCapability | typeof binaryCapability | typeof temperatureSensorCapability | typeof heatingValveCapability | typeof humiditySensorCapability | typeof ambientLightSensorCapability | typeof pressureSensorCapability | typeof powerMeterCapability | typeof airQualitySensorCapability | typeof numericSensorCapability | typeof enumSensorCapability | typeof recordingCapability | typeof recordingArchiveCapability | typeof recordingExportCapability | typeof recordingSignalCapability | typeof deviceOpsCapability | typeof displayPaletteCapability | typeof platformProbeCapability | typeof localNetworkCapability | typeof meshNetworkCapability | typeof userManagementCapability | typeof systemCapability | typeof networkQualityCapability | typeof toastCapability | typeof nodesCapability | typeof serverManagementCapability | typeof integrationsCapability | typeof addonsCapability | typeof oauthIntegrationCapability | typeof oidcConnectionsCapability | typeof streamParamsCapability | typeof streamCatalogCapability | typeof motionZonesCapability | typeof cameraGridLayoutCapability | typeof sceneMonitorCapability | typeof privacyMaskCapability | typeof dayNightCapability | typeof recordingOnboardCapability | typeof imageSettingsCapability | typeof osdCapability | typeof osdManagerCapability | typeof accessoriesCapability | typeof batteryCapability | typeof networkLinkCapability | typeof buttonCapability | typeof irTransmitterCapability | typeof remoteCapability | typeof templateCapability | typeof remoteLayoutComponentsCapability | typeof cameraCredentialsCapability | typeof deviceStatusCapability | typeof doorbellCapability | typeof eventEmitterCapability | typeof faceGalleryCapability | typeof featureProbeCapability | typeof intercomCapability | typeof nativeObjectDetectionCapability | typeof plateGalleryCapability | typeof switchCapability | typeof updateCapability | typeof videoclipsCapability | typeof deviceExtensionCapability | typeof dishwasherCapability;
464
466
  export type CapabilityName = AnyCapability['name'];
465
467
  export type ITypedReadinessRegistry = IReadinessRegistry<CapabilityName>;
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+ import { type InferProvider } from './capability-definition.js';
3
+ /**
4
+ * remote-layout-components — the palette of the remote template editor's "Add
5
+ * component" (D973). A provider DECLARES components as data (buttons placed
6
+ * relative to the component, a frame, shapes and tones from closed
7
+ * vocabularies the UI draws); it ships no UI code.
8
+ *
9
+ * Collection: `listComponents` returns an array, so the generated mount
10
+ * concat-fans it across every enabled provider. The core-blocks builtin
11
+ * provides the built-in set (`core:*`); an addon adds its own under
12
+ * `<addonId>:<name>`. The caller dedupes by id, built-ins first.
13
+ */
14
+ export declare const remoteLayoutComponentsCapability: {
15
+ readonly name: 'remote-layout-components';
16
+ readonly scope: 'system';
17
+ readonly mode: 'collection';
18
+ readonly methods: {
19
+ readonly listComponents: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{}, z.core.$strip>, z.ZodArray<z.ZodObject<{
20
+ id: z.ZodString;
21
+ name: z.ZodString;
22
+ nameI18n: z.ZodOptional<z.ZodObject<{
23
+ en: z.ZodString;
24
+ it: z.ZodString;
25
+ }, z.core.$strip>>;
26
+ icon: z.ZodString;
27
+ category: z.ZodEnum<{
28
+ apps: "apps";
29
+ colour: "colour";
30
+ layout: "layout";
31
+ media: "media";
32
+ navigation: "navigation";
33
+ numbers: "numbers";
34
+ power: "power";
35
+ volume: "volume";
36
+ }>;
37
+ size: z.ZodObject<{
38
+ rows: z.ZodNumber;
39
+ cols: z.ZodNumber;
40
+ }, z.core.$strip>;
41
+ group: z.ZodNullable<z.ZodObject<{
42
+ frame: z.ZodEnum<{
43
+ divider: "divider";
44
+ dpad: "dpad";
45
+ keypad: "keypad";
46
+ none: "none";
47
+ panel: "panel";
48
+ "rocker-h": "rocker-h";
49
+ "rocker-v": "rocker-v";
50
+ }>;
51
+ title: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>>;
53
+ buttons: z.ZodArray<z.ZodObject<{
54
+ idSuffix: z.ZodString;
55
+ row: z.ZodNumber;
56
+ col: z.ZodNumber;
57
+ rowSpan: z.ZodNumber;
58
+ colSpan: z.ZodNumber;
59
+ role: z.ZodString;
60
+ icon: z.ZodOptional<z.ZodString>;
61
+ label: z.ZodOptional<z.ZodString>;
62
+ shape: z.ZodOptional<z.ZodEnum<{
63
+ pill: "pill";
64
+ rect: "rect";
65
+ round: "round";
66
+ rounded: "rounded";
67
+ }>>;
68
+ tone: z.ZodOptional<z.ZodEnum<{
69
+ accent: "accent";
70
+ blue: "blue";
71
+ danger: "danger";
72
+ green: "green";
73
+ neutral: "neutral";
74
+ red: "red";
75
+ yellow: "yellow";
76
+ }>>;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
79
+ };
80
+ };
81
+ export type IRemoteLayoutComponentsProvider = InferProvider<typeof remoteLayoutComponentsCapability>;
@@ -124,6 +124,7 @@ export declare const remoteCapability: {
124
124
  cap: z.ZodString;
125
125
  method: z.ZodString;
126
126
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
127
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
127
128
  deviceId: z.ZodNumber;
128
129
  }, z.core.$strip>;
129
130
  }, z.core.$strip>>;
@@ -149,6 +150,7 @@ export declare const remoteCapability: {
149
150
  cap: z.ZodString;
150
151
  method: z.ZodString;
151
152
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
153
+ argUnits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
152
154
  deviceId: z.ZodNumber;
153
155
  }, z.core.$strip>;
154
156
  }, z.core.$strip>>;
package/dist/client.js CHANGED
@@ -28965,6 +28965,7 @@ function createSystemProxy(api) {
28965
28965
  sendCommand: (input) => dispatch("remote", "sendCommand", "mutation", input),
28966
28966
  sendMediaCommand: (input) => dispatch("remote", "sendMediaCommand", "mutation", input)
28967
28967
  },
28968
+ remoteLayoutComponents: { listComponents: (input) => dispatch("remoteLayoutComponents", "listComponents", "query", input) },
28968
28969
  serverManagement: {
28969
28970
  getServerPackageStatus: (input) => dispatch("serverManagement", "getServerPackageStatus", "query", input),
28970
28971
  checkServerUpdate: (input) => dispatch("serverManagement", "checkServerUpdate", "mutation", input),
@@ -31742,8 +31743,6 @@ var NC_TEMPLATE_VARS = [
31742
31743
  * delete it from here then, and the served catalog names it again.
31743
31744
  */
31744
31745
  var NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS = [
31745
- "node-restarting",
31746
- "node-updating",
31747
31746
  "alert-critical",
31748
31747
  "alert-error",
31749
31748
  "alert-critical-resolved",