@camstack/types 1.2.452 → 1.2.454
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.
- package/CHANGELOG.md +13 -0
- package/dist/capabilities/terminal-session.cap.d.ts +7 -0
- package/dist/index.js +16 -1
- package/dist/index.mjs +16 -1
- package/dist/interfaces/config-ui.d.ts +34 -1
- package/dist/remote/remote-config.d.ts +10 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.454] - 2026-10-31
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Remote layout groups accept an optional size and hideTitle for dividers
|
|
15
|
+
|
|
16
|
+
## [1.2.453] - 2026-10-30
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Terminal instances report nodeInCluster and updateInstance accepts targetNodeId to re-point an instance.
|
|
21
|
+
- Notification targets pick a broker and list their options inside the add/edit form; the page-wide Find devices dialog is gone
|
|
22
|
+
|
|
10
23
|
## [1.2.452] - 2026-10-30
|
|
11
24
|
|
|
12
25
|
### Added
|
|
@@ -40,6 +40,7 @@ declare const TerminalInstanceInfoSchema: z.ZodObject<{
|
|
|
40
40
|
instanceId: z.ZodString;
|
|
41
41
|
cameraStableId: z.ZodString;
|
|
42
42
|
nodeId: z.ZodString;
|
|
43
|
+
nodeInCluster: z.ZodBoolean;
|
|
43
44
|
profileId: z.ZodString;
|
|
44
45
|
profileLabel: z.ZodString;
|
|
45
46
|
name: z.ZodString;
|
|
@@ -111,6 +112,7 @@ export declare const terminalSessionCapability: {
|
|
|
111
112
|
instanceId: z.ZodString;
|
|
112
113
|
cameraStableId: z.ZodString;
|
|
113
114
|
nodeId: z.ZodString;
|
|
115
|
+
nodeInCluster: z.ZodBoolean;
|
|
114
116
|
profileId: z.ZodString;
|
|
115
117
|
profileLabel: z.ZodString;
|
|
116
118
|
name: z.ZodString;
|
|
@@ -134,6 +136,7 @@ export declare const terminalSessionCapability: {
|
|
|
134
136
|
instanceId: z.ZodString;
|
|
135
137
|
cameraStableId: z.ZodString;
|
|
136
138
|
nodeId: z.ZodString;
|
|
139
|
+
nodeInCluster: z.ZodBoolean;
|
|
137
140
|
profileId: z.ZodString;
|
|
138
141
|
profileLabel: z.ZodString;
|
|
139
142
|
name: z.ZodString;
|
|
@@ -146,6 +149,7 @@ export declare const terminalSessionCapability: {
|
|
|
146
149
|
}, z.core.$strip>, "mutation">;
|
|
147
150
|
readonly updateInstance: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
|
|
148
151
|
instanceId: z.ZodString;
|
|
152
|
+
targetNodeId: z.ZodOptional<z.ZodString>;
|
|
149
153
|
name: z.ZodOptional<z.ZodString>;
|
|
150
154
|
executable: z.ZodOptional<z.ZodString>;
|
|
151
155
|
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -156,6 +160,7 @@ export declare const terminalSessionCapability: {
|
|
|
156
160
|
instanceId: z.ZodString;
|
|
157
161
|
cameraStableId: z.ZodString;
|
|
158
162
|
nodeId: z.ZodString;
|
|
163
|
+
nodeInCluster: z.ZodBoolean;
|
|
159
164
|
profileId: z.ZodString;
|
|
160
165
|
profileLabel: z.ZodString;
|
|
161
166
|
name: z.ZodString;
|
|
@@ -176,6 +181,7 @@ export declare const terminalSessionCapability: {
|
|
|
176
181
|
instanceId: z.ZodString;
|
|
177
182
|
cameraStableId: z.ZodString;
|
|
178
183
|
nodeId: z.ZodString;
|
|
184
|
+
nodeInCluster: z.ZodBoolean;
|
|
179
185
|
profileId: z.ZodString;
|
|
180
186
|
profileLabel: z.ZodString;
|
|
181
187
|
name: z.ZodString;
|
|
@@ -203,6 +209,7 @@ export declare const terminalSessionCapability: {
|
|
|
203
209
|
instanceId: z.ZodString;
|
|
204
210
|
cameraStableId: z.ZodString;
|
|
205
211
|
nodeId: z.ZodString;
|
|
212
|
+
nodeInCluster: z.ZodBoolean;
|
|
206
213
|
profileId: z.ZodString;
|
|
207
214
|
profileLabel: z.ZodString;
|
|
208
215
|
name: z.ZodString;
|
package/dist/index.js
CHANGED
|
@@ -63448,6 +63448,12 @@ var TerminalInstanceInfoSchema = zod.z.object({
|
|
|
63448
63448
|
instanceId: zod.z.string(),
|
|
63449
63449
|
cameraStableId: zod.z.string(),
|
|
63450
63450
|
nodeId: zod.z.string(),
|
|
63451
|
+
/**
|
|
63452
|
+
* False while the node the instance is bound to is not in the cluster
|
|
63453
|
+
* topology (forgotten, renamed, re-paired). The instance is kept; the
|
|
63454
|
+
* operator re-points it with `updateInstance({ targetNodeId })`.
|
|
63455
|
+
*/
|
|
63456
|
+
nodeInCluster: zod.z.boolean(),
|
|
63451
63457
|
profileId: zod.z.string(),
|
|
63452
63458
|
profileLabel: zod.z.string(),
|
|
63453
63459
|
name: zod.z.string(),
|
|
@@ -63514,6 +63520,8 @@ var terminalSessionCapability = {
|
|
|
63514
63520
|
}),
|
|
63515
63521
|
updateInstance: require_sleep.method(zod.z.object({
|
|
63516
63522
|
instanceId: zod.z.string().min(1),
|
|
63523
|
+
/** Re-point the instance to another node; the profile must exist there. */
|
|
63524
|
+
targetNodeId: zod.z.string().min(1).max(256).optional(),
|
|
63517
63525
|
name: zod.z.string().trim().min(1).max(160).optional(),
|
|
63518
63526
|
executable: zod.z.string().max(1024).optional(),
|
|
63519
63527
|
args: zod.z.array(zod.z.string().max(2048)).max(64).optional(),
|
|
@@ -67705,7 +67713,14 @@ var RemoteLayoutGroupSchema = zod.z.object({
|
|
|
67705
67713
|
col: zod.z.number().int().min(0).max(24),
|
|
67706
67714
|
rowSpan: zod.z.number().int().min(1).max(24),
|
|
67707
67715
|
colSpan: zod.z.number().int().min(1).max(24),
|
|
67708
|
-
title: zod.z.string().min(1).max(40).optional()
|
|
67716
|
+
title: zod.z.string().min(1).max(40).optional(),
|
|
67717
|
+
/**
|
|
67718
|
+
* How much room a divider takes: `compact` (the default) is a slim rule,
|
|
67719
|
+
* `normal` a full grid row. Other frames ignore it.
|
|
67720
|
+
*/
|
|
67721
|
+
size: zod.z.enum(["compact", "normal"]).optional(),
|
|
67722
|
+
/** Keep the title in the layout but draw only the rule. */
|
|
67723
|
+
hideTitle: zod.z.boolean().optional()
|
|
67709
67724
|
});
|
|
67710
67725
|
function rectsOverlap(a, b) {
|
|
67711
67726
|
return a.row < b.row + b.rowSpan && b.row < a.row + a.rowSpan && a.col < b.col + b.colSpan && b.col < a.col + a.colSpan;
|
package/dist/index.mjs
CHANGED
|
@@ -63447,6 +63447,12 @@ var TerminalInstanceInfoSchema = z.object({
|
|
|
63447
63447
|
instanceId: z.string(),
|
|
63448
63448
|
cameraStableId: z.string(),
|
|
63449
63449
|
nodeId: z.string(),
|
|
63450
|
+
/**
|
|
63451
|
+
* False while the node the instance is bound to is not in the cluster
|
|
63452
|
+
* topology (forgotten, renamed, re-paired). The instance is kept; the
|
|
63453
|
+
* operator re-points it with `updateInstance({ targetNodeId })`.
|
|
63454
|
+
*/
|
|
63455
|
+
nodeInCluster: z.boolean(),
|
|
63450
63456
|
profileId: z.string(),
|
|
63451
63457
|
profileLabel: z.string(),
|
|
63452
63458
|
name: z.string(),
|
|
@@ -63513,6 +63519,8 @@ var terminalSessionCapability = {
|
|
|
63513
63519
|
}),
|
|
63514
63520
|
updateInstance: method(z.object({
|
|
63515
63521
|
instanceId: z.string().min(1),
|
|
63522
|
+
/** Re-point the instance to another node; the profile must exist there. */
|
|
63523
|
+
targetNodeId: z.string().min(1).max(256).optional(),
|
|
63516
63524
|
name: z.string().trim().min(1).max(160).optional(),
|
|
63517
63525
|
executable: z.string().max(1024).optional(),
|
|
63518
63526
|
args: z.array(z.string().max(2048)).max(64).optional(),
|
|
@@ -67704,7 +67712,14 @@ var RemoteLayoutGroupSchema = z.object({
|
|
|
67704
67712
|
col: z.number().int().min(0).max(24),
|
|
67705
67713
|
rowSpan: z.number().int().min(1).max(24),
|
|
67706
67714
|
colSpan: z.number().int().min(1).max(24),
|
|
67707
|
-
title: z.string().min(1).max(40).optional()
|
|
67715
|
+
title: z.string().min(1).max(40).optional(),
|
|
67716
|
+
/**
|
|
67717
|
+
* How much room a divider takes: `compact` (the default) is a slim rule,
|
|
67718
|
+
* `normal` a full grid row. Other frames ignore it.
|
|
67719
|
+
*/
|
|
67720
|
+
size: z.enum(["compact", "normal"]).optional(),
|
|
67721
|
+
/** Keep the title in the layout but draw only the rule. */
|
|
67722
|
+
hideTitle: z.boolean().optional()
|
|
67708
67723
|
});
|
|
67709
67724
|
function rectsOverlap(a, b) {
|
|
67710
67725
|
return a.row < b.row + b.rowSpan && b.row < a.row + a.rowSpan && a.col < b.col + b.colSpan && b.col < a.col + a.colSpan;
|
|
@@ -86,7 +86,7 @@ export interface ConfigSection {
|
|
|
86
86
|
readonly immediate?: boolean;
|
|
87
87
|
readonly fields: readonly ConfigField[];
|
|
88
88
|
}
|
|
89
|
-
export type ConfigField = ConfigTextField | ConfigNumberField | ConfigBooleanField | ConfigSelectField | ConfigMultiSelectField | ConfigTimezoneField | ConfigDateTimeField | ConfigColorField | ConfigIconField | ConfigPasswordField | ConfigTextAreaField | ConfigSliderField | ConfigTagsField | ConfigScheduleField | ConfigGroupField | ConfigSubTabsField | ConfigSeparatorField | ConfigInfoField | ConfigQrCodeField | ConfigObjectArrayField | ConfigEditableArrayField | ConfigModelSelectorField | ConfigStorageLocationField | ConfigProbeField | ConfigButtonField | ConfigNodeSelectField | ConfigNodeMultiSelectField | ConfigDeviceSelectField | ConfigDeviceMultiSelectField | ConfigNotificationTargetSelectField | ConfigNotificationTargetMultiSelectField | ConfigWidgetField | ConfigAddonActionSelectField | ConfigAddonActionButtonField | ConfigDeviceActionButtonField | ConfigAccountSignInField | ConfigSecretPresenceField;
|
|
89
|
+
export type ConfigField = ConfigTextField | ConfigNumberField | ConfigBooleanField | ConfigSelectField | ConfigMultiSelectField | ConfigTimezoneField | ConfigDateTimeField | ConfigColorField | ConfigIconField | ConfigPasswordField | ConfigTextAreaField | ConfigSliderField | ConfigTagsField | ConfigScheduleField | ConfigGroupField | ConfigSubTabsField | ConfigSeparatorField | ConfigInfoField | ConfigQrCodeField | ConfigObjectArrayField | ConfigEditableArrayField | ConfigModelSelectorField | ConfigStorageLocationField | ConfigProbeField | ConfigButtonField | ConfigNodeSelectField | ConfigNodeMultiSelectField | ConfigDeviceSelectField | ConfigDeviceMultiSelectField | ConfigNotificationTargetSelectField | ConfigNotificationTargetMultiSelectField | ConfigBrokerSelectField | ConfigWidgetField | ConfigAddonActionSelectField | ConfigAddonActionButtonField | ConfigDeviceActionButtonField | ConfigAccountSignInField | ConfigSecretPresenceField;
|
|
90
90
|
/**
|
|
91
91
|
* Per-MODEL applicability of a pipeline-step setting (D214).
|
|
92
92
|
*
|
|
@@ -385,6 +385,27 @@ export interface ConfigSelectField extends ConfigFieldBase {
|
|
|
385
385
|
*/
|
|
386
386
|
optionsFrom?: string;
|
|
387
387
|
dependsOn?: Record<string, unknown>;
|
|
388
|
+
/**
|
|
389
|
+
* Options fetched from the provider of a notification kind once what it needs
|
|
390
|
+
* has been entered. See {@link ConfigDiscoverOptions}. Free text stays
|
|
391
|
+
* possible when the fetch fails or answers nothing.
|
|
392
|
+
*/
|
|
393
|
+
discoverOptions?: ConfigDiscoverOptions;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* A select whose options are the candidates a notification kind's
|
|
397
|
+
* `discoverTargets` answers for the form's CURRENT values.
|
|
398
|
+
*
|
|
399
|
+
* Nothing is fetched until every field in `dependsOn` has a value (a broker
|
|
400
|
+
* picked, a token typed), so a credential-gated kind is never asked without its
|
|
401
|
+
* credentials. A candidate becomes an option: value = `candidate.config[<this
|
|
402
|
+
* field's key>]`, label = `candidate.suggestedName`.
|
|
403
|
+
*/
|
|
404
|
+
export interface ConfigDiscoverOptions {
|
|
405
|
+
/** The notification kind whose provider answers the discovery. */
|
|
406
|
+
readonly kind: string;
|
|
407
|
+
/** Form keys that must all be non-empty before the first fetch; sent as `config`. */
|
|
408
|
+
readonly dependsOn: readonly string[];
|
|
388
409
|
}
|
|
389
410
|
export interface ConfigMultiSelectField extends ConfigFieldBase {
|
|
390
411
|
type: 'multiselect';
|
|
@@ -520,6 +541,16 @@ export interface ConfigDeviceMultiSelectField extends ConfigFieldBase {
|
|
|
520
541
|
export interface ConfigNotificationTargetSelectField extends ConfigFieldBase {
|
|
521
542
|
type: 'notification-target-select';
|
|
522
543
|
}
|
|
544
|
+
/**
|
|
545
|
+
* Pick an existing broker of one kind, or create one in place. Stored value is
|
|
546
|
+
* the broker id string. The host mounts the picker (it owns the sign-in
|
|
547
|
+
* dialogs); without one the field lists the brokers without "Create new".
|
|
548
|
+
*/
|
|
549
|
+
export interface ConfigBrokerSelectField extends ConfigFieldBase {
|
|
550
|
+
type: 'broker-select';
|
|
551
|
+
/** The broker kind to list and to create. */
|
|
552
|
+
brokerKind: string;
|
|
553
|
+
}
|
|
523
554
|
/**
|
|
524
555
|
* Pick MULTIPLE `notification-output` targets. Stored value is a `string[]`
|
|
525
556
|
* of target ids.
|
|
@@ -1136,6 +1167,8 @@ export type ConfigFieldWithValue = (ConfigTextField & {
|
|
|
1136
1167
|
readonly value: unknown;
|
|
1137
1168
|
}) | (ConfigNotificationTargetMultiSelectField & {
|
|
1138
1169
|
readonly value: unknown;
|
|
1170
|
+
}) | (ConfigBrokerSelectField & {
|
|
1171
|
+
readonly value: unknown;
|
|
1139
1172
|
}) | ConfigWidgetField | (ConfigAddonActionSelectField & {
|
|
1140
1173
|
readonly value: unknown;
|
|
1141
1174
|
}) | ConfigAddonActionButtonField | ConfigDeviceActionButtonField | ConfigAccountSignInField | ConfigSecretPresenceField;
|
|
@@ -176,6 +176,11 @@ export declare const RemoteLayoutGroupSchema: z.ZodObject<{
|
|
|
176
176
|
rowSpan: z.ZodNumber;
|
|
177
177
|
colSpan: z.ZodNumber;
|
|
178
178
|
title: z.ZodOptional<z.ZodString>;
|
|
179
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
180
|
+
compact: "compact";
|
|
181
|
+
normal: "normal";
|
|
182
|
+
}>>;
|
|
183
|
+
hideTitle: z.ZodOptional<z.ZodBoolean>;
|
|
179
184
|
}, z.core.$strip>;
|
|
180
185
|
export type RemoteLayoutGroup = z.infer<typeof RemoteLayoutGroupSchema>;
|
|
181
186
|
export interface LayoutRect {
|
|
@@ -232,6 +237,11 @@ export declare const RemoteLayoutPayloadSchema: z.ZodObject<{
|
|
|
232
237
|
rowSpan: z.ZodNumber;
|
|
233
238
|
colSpan: z.ZodNumber;
|
|
234
239
|
title: z.ZodOptional<z.ZodString>;
|
|
240
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
241
|
+
compact: "compact";
|
|
242
|
+
normal: "normal";
|
|
243
|
+
}>>;
|
|
244
|
+
hideTitle: z.ZodOptional<z.ZodBoolean>;
|
|
235
245
|
}, z.core.$strip>>>;
|
|
236
246
|
}, z.core.$strip>;
|
|
237
247
|
export type RemoteLayoutPayload = z.infer<typeof RemoteLayoutPayloadSchema>;
|