@camstack/types 1.2.452 → 1.2.453

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 CHANGED
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.453] - 2026-10-30
11
+
12
+ ### Changed
13
+
14
+ - Terminal instances report nodeInCluster and updateInstance accepts targetNodeId to re-point an instance.
15
+ - Notification targets pick a broker and list their options inside the add/edit form; the page-wide Find devices dialog is gone
16
+
10
17
  ## [1.2.452] - 2026-10-30
11
18
 
12
19
  ### 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(),
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(),
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.452",
3
+ "version": "1.2.453",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",