@wandelbots/nova-js 4.9.1-nova-api-dev.26-8-0-dev-66 → 4.9.1-nova-api-dev.26-8-0-dev-68

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.
@@ -9,18 +9,26 @@ import type {
9
9
  AppCreatedEvent,
10
10
  AppDeletedEvent,
11
11
  AppUpdatedEvent,
12
+ ArpScanReply,
13
+ ArpScanRequest,
12
14
  BusIOsState,
15
+ CancelIOSubscription,
13
16
  Cell,
14
17
  CellCreatedEvent,
15
18
  CellCycleEvent,
16
19
  CellDeletedEvent,
17
20
  CellUpdatedEvent,
18
21
  CollisionSetup,
22
+ IOSubscriptionCreated,
23
+ IOSubscriptionLease,
19
24
  ListIOValuesResponse,
20
25
  MotionGroupDescription,
21
26
  NatsErrorPayload,
27
+ NetworkInterfacesReply,
28
+ NetworkInterfacesRequest,
22
29
  NetworkStatusChangedEvent,
23
30
  ProgramStatus,
31
+ RenewIOSubscription,
24
32
  RobotController,
25
33
  RobotControllerCreatedEvent,
26
34
  RobotControllerDeletedEvent,
@@ -29,8 +37,10 @@ import type {
29
37
  SelectIOs,
30
38
  ServiceStatusList,
31
39
  StreamIOValuesResponse,
40
+ SubscribeIOs,
32
41
  SystemUpdateCompletedEvent,
33
42
  SystemUpdateStartedEvent,
43
+ UpdateIOSubscription,
34
44
  } from "./types.ts"
35
45
 
36
46
  /** Subject parameters required by each NATS subject, e.g. "nova.v2.cells.{cell}". */
@@ -203,7 +213,12 @@ export interface NatsOperationParams {
203
213
  /**
204
214
  * Select Input/Output Values
205
215
  *
206
- * Select input/output values published by the controller.
216
+ * Select input/output values published by the controller on the shared `...ios` subject.
217
+ *
218
+ * This is the reserved, never-expiring default stream, shared by all clients that use it. For
219
+ * independent per-client streams with their own update type and time to live use the `ios.subscribe`
220
+ * operations instead. Malformed requests (non-string or empty entries in `ios`, an invalid
221
+ * `update_type`) are rejected and leave the current selection unchanged.
207
222
  *
208
223
  * @operationId selectRobotControllerIOs
209
224
  */
@@ -234,6 +249,112 @@ export interface NatsOperationParams {
234
249
  */
235
250
  controller: string
236
251
  }
252
+ /**
253
+ * Subscribe to Input/Output Values
254
+ *
255
+ * Create a per-client subscription that streams the selected input/output values on a dedicated,
256
+ * subscription-specific subject.
257
+ *
258
+ * The server generates a subject-safe `subscription_id` and returns it in the reply; values are then
259
+ * published on `{instance}.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}`. The
260
+ * subscription expires after `ttl_seconds` unless it is renewed. A subscription that would push the
261
+ * union of all subscriptions' ports beyond the controller's realtime input/output capacity is rejected.
262
+ *
263
+ * @operationId subscribeRobotControllerIOs
264
+ */
265
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe": {
266
+ /**
267
+ * Unique identifier addressing a cell in all API calls.
268
+ */
269
+ cell: string
270
+ /**
271
+ * Unique identifier to address a controller in a cell.
272
+ */
273
+ controller: string
274
+ }
275
+ /**
276
+ * Update an Input/Output Subscription
277
+ *
278
+ * Partially update an existing subscription by its server-issued `subscription_id`. Only the supplied
279
+ * fields (`ios`, `update_type`, `ttl_seconds`) are changed; omitted fields are kept unchanged, so the
280
+ * time to live or the update type can be changed without resending the port list. An update that would
281
+ * push the union of all subscriptions' ports beyond the controller's realtime input/output capacity is
282
+ * rejected and leaves the subscription unchanged.
283
+ *
284
+ * A successful update also renews the lease: `expires_at` is reset to the current time plus the
285
+ * subscription's time to live, even when `ttl_seconds` is omitted.
286
+ *
287
+ * @operationId updateRobotControllerIOSubscription
288
+ */
289
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.update": {
290
+ /**
291
+ * Unique identifier addressing a cell in all API calls.
292
+ */
293
+ cell: string
294
+ /**
295
+ * Unique identifier to address a controller in a cell.
296
+ */
297
+ controller: string
298
+ }
299
+ /**
300
+ * Renew an Input/Output Subscription
301
+ *
302
+ * Extend the lease of an existing subscription identified by its server-issued `subscription_id`.
303
+ * Clients should renew at roughly a third of the subscription's time to live. A subscription that has
304
+ * already expired is not found and must be created again.
305
+ *
306
+ * @operationId renewRobotControllerIOSubscription
307
+ */
308
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.renew": {
309
+ /**
310
+ * Unique identifier addressing a cell in all API calls.
311
+ */
312
+ cell: string
313
+ /**
314
+ * Unique identifier to address a controller in a cell.
315
+ */
316
+ controller: string
317
+ }
318
+ /**
319
+ * Cancel an Input/Output Subscription
320
+ *
321
+ * Cancel an existing subscription identified by its server-issued `subscription_id`. Streaming on the
322
+ * subscription's subject stops and its ports are removed from the union read from the controller.
323
+ *
324
+ * @operationId cancelRobotControllerIOSubscription
325
+ */
326
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.cancel": {
327
+ /**
328
+ * Unique identifier addressing a cell in all API calls.
329
+ */
330
+ cell: string
331
+ /**
332
+ * Unique identifier to address a controller in a cell.
333
+ */
334
+ controller: string
335
+ }
336
+ /**
337
+ * Subscription Input/Output Values
338
+ *
339
+ * Publishes updates of input/output values for a single subscription on its dedicated
340
+ * `...ios.{subscription_id}` subject. Each subscription receives its own `full` or `changes` view.
341
+ *
342
+ * @operationId publishRobotControllerIOSubscription
343
+ */
344
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}": {
345
+ /**
346
+ * Unique identifier addressing a cell in all API calls.
347
+ */
348
+ cell: string
349
+ /**
350
+ * Unique identifier to address a controller in the cell.
351
+ */
352
+ controller: string
353
+ /**
354
+ * Server-issued identifier of the subscription this stream belongs to.
355
+ */
356
+ subscription_id: string
357
+ }
237
358
  /**
238
359
  * State of Robot Controller
239
360
  *
@@ -315,6 +436,22 @@ export interface NatsOperationParams {
315
436
  * @operationId eventSystemNetworkStatusChanged
316
437
  */
317
438
  "nova.v2.events.system.network.status.changed": Record<never, never>
439
+ /**
440
+ * List Network Interfaces
441
+ *
442
+ * Lists all managed network interfaces available for controller connections and ARP scanning.
443
+ *
444
+ * @operationId getNetworkInterfaces
445
+ */
446
+ "nova.v2.system.network.interfaces": Record<never, never>
447
+ /**
448
+ * Run ARP Scan
449
+ *
450
+ * Runs an ARP scan on the target interface and returns all discovered devices.
451
+ *
452
+ * @operationId arpScan
453
+ */
454
+ "nova.v2.system.network.arpscan": Record<never, never>
318
455
  /**
319
456
  * Cell Created
320
457
  *
@@ -579,6 +716,15 @@ export interface NatsSubscribePayloads {
579
716
  * @operationId publishRobotControllerIOs
580
717
  */
581
718
  "nova.v2.cells.{cell}.controllers.{controller}.ios": StreamIOValuesResponse
719
+ /**
720
+ * Subscription Input/Output Values
721
+ *
722
+ * Publishes updates of input/output values for a single subscription on its dedicated
723
+ * `...ios.{subscription_id}` subject. Each subscription receives its own `full` or `changes` view.
724
+ *
725
+ * @operationId publishRobotControllerIOSubscription
726
+ */
727
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}": StreamIOValuesResponse
582
728
  /**
583
729
  * State of Robot Controller
584
730
  *
@@ -746,11 +892,80 @@ export interface NatsRequestPayloads {
746
892
  /**
747
893
  * Select Input/Output Values
748
894
  *
749
- * Select input/output values published by the controller.
895
+ * Select input/output values published by the controller on the shared `...ios` subject.
896
+ *
897
+ * This is the reserved, never-expiring default stream, shared by all clients that use it. For
898
+ * independent per-client streams with their own update type and time to live use the `ios.subscribe`
899
+ * operations instead. Malformed requests (non-string or empty entries in `ios`, an invalid
900
+ * `update_type`) are rejected and leave the current selection unchanged.
750
901
  *
751
902
  * @operationId selectRobotControllerIOs
752
903
  */
753
904
  "nova.v2.cells.{cell}.controllers.{controller}.ios.select": SelectIOs
905
+ /**
906
+ * Subscribe to Input/Output Values
907
+ *
908
+ * Create a per-client subscription that streams the selected input/output values on a dedicated,
909
+ * subscription-specific subject.
910
+ *
911
+ * The server generates a subject-safe `subscription_id` and returns it in the reply; values are then
912
+ * published on `{instance}.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}`. The
913
+ * subscription expires after `ttl_seconds` unless it is renewed. A subscription that would push the
914
+ * union of all subscriptions' ports beyond the controller's realtime input/output capacity is rejected.
915
+ *
916
+ * @operationId subscribeRobotControllerIOs
917
+ */
918
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe": SubscribeIOs
919
+ /**
920
+ * Update an Input/Output Subscription
921
+ *
922
+ * Partially update an existing subscription by its server-issued `subscription_id`. Only the supplied
923
+ * fields (`ios`, `update_type`, `ttl_seconds`) are changed; omitted fields are kept unchanged, so the
924
+ * time to live or the update type can be changed without resending the port list. An update that would
925
+ * push the union of all subscriptions' ports beyond the controller's realtime input/output capacity is
926
+ * rejected and leaves the subscription unchanged.
927
+ *
928
+ * A successful update also renews the lease: `expires_at` is reset to the current time plus the
929
+ * subscription's time to live, even when `ttl_seconds` is omitted.
930
+ *
931
+ * @operationId updateRobotControllerIOSubscription
932
+ */
933
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.update": UpdateIOSubscription
934
+ /**
935
+ * Renew an Input/Output Subscription
936
+ *
937
+ * Extend the lease of an existing subscription identified by its server-issued `subscription_id`.
938
+ * Clients should renew at roughly a third of the subscription's time to live. A subscription that has
939
+ * already expired is not found and must be created again.
940
+ *
941
+ * @operationId renewRobotControllerIOSubscription
942
+ */
943
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.renew": RenewIOSubscription
944
+ /**
945
+ * Cancel an Input/Output Subscription
946
+ *
947
+ * Cancel an existing subscription identified by its server-issued `subscription_id`. Streaming on the
948
+ * subscription's subject stops and its ports are removed from the union read from the controller.
949
+ *
950
+ * @operationId cancelRobotControllerIOSubscription
951
+ */
952
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.cancel": CancelIOSubscription
953
+ /**
954
+ * List Network Interfaces
955
+ *
956
+ * Lists all managed network interfaces available for controller connections and ARP scanning.
957
+ *
958
+ * @operationId getNetworkInterfaces
959
+ */
960
+ "nova.v2.system.network.interfaces": NetworkInterfacesRequest
961
+ /**
962
+ * Run ARP Scan
963
+ *
964
+ * Runs an ARP scan on the target interface and returns all discovered devices.
965
+ *
966
+ * @operationId arpScan
967
+ */
968
+ "nova.v2.system.network.arpscan": ArpScanRequest
754
969
  }
755
970
 
756
971
  /** Reply payload types for request/reply subjects. */
@@ -767,11 +982,80 @@ export interface NatsReplyPayloads {
767
982
  /**
768
983
  * Select Input/Output Values
769
984
  *
770
- * Select input/output values published by the controller.
985
+ * Select input/output values published by the controller on the shared `...ios` subject.
986
+ *
987
+ * This is the reserved, never-expiring default stream, shared by all clients that use it. For
988
+ * independent per-client streams with their own update type and time to live use the `ios.subscribe`
989
+ * operations instead. Malformed requests (non-string or empty entries in `ios`, an invalid
990
+ * `update_type`) are rejected and leave the current selection unchanged.
771
991
  *
772
992
  * @operationId selectRobotControllerIOs
773
993
  */
774
994
  "nova.v2.cells.{cell}.controllers.{controller}.ios.select": NatsErrorPayload
995
+ /**
996
+ * Subscribe to Input/Output Values
997
+ *
998
+ * Create a per-client subscription that streams the selected input/output values on a dedicated,
999
+ * subscription-specific subject.
1000
+ *
1001
+ * The server generates a subject-safe `subscription_id` and returns it in the reply; values are then
1002
+ * published on `{instance}.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}`. The
1003
+ * subscription expires after `ttl_seconds` unless it is renewed. A subscription that would push the
1004
+ * union of all subscriptions' ports beyond the controller's realtime input/output capacity is rejected.
1005
+ *
1006
+ * @operationId subscribeRobotControllerIOs
1007
+ */
1008
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe": IOSubscriptionCreated
1009
+ /**
1010
+ * Update an Input/Output Subscription
1011
+ *
1012
+ * Partially update an existing subscription by its server-issued `subscription_id`. Only the supplied
1013
+ * fields (`ios`, `update_type`, `ttl_seconds`) are changed; omitted fields are kept unchanged, so the
1014
+ * time to live or the update type can be changed without resending the port list. An update that would
1015
+ * push the union of all subscriptions' ports beyond the controller's realtime input/output capacity is
1016
+ * rejected and leaves the subscription unchanged.
1017
+ *
1018
+ * A successful update also renews the lease: `expires_at` is reset to the current time plus the
1019
+ * subscription's time to live, even when `ttl_seconds` is omitted.
1020
+ *
1021
+ * @operationId updateRobotControllerIOSubscription
1022
+ */
1023
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.update": IOSubscriptionLease
1024
+ /**
1025
+ * Renew an Input/Output Subscription
1026
+ *
1027
+ * Extend the lease of an existing subscription identified by its server-issued `subscription_id`.
1028
+ * Clients should renew at roughly a third of the subscription's time to live. A subscription that has
1029
+ * already expired is not found and must be created again.
1030
+ *
1031
+ * @operationId renewRobotControllerIOSubscription
1032
+ */
1033
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.renew": IOSubscriptionLease
1034
+ /**
1035
+ * Cancel an Input/Output Subscription
1036
+ *
1037
+ * Cancel an existing subscription identified by its server-issued `subscription_id`. Streaming on the
1038
+ * subscription's subject stops and its ports are removed from the union read from the controller.
1039
+ *
1040
+ * @operationId cancelRobotControllerIOSubscription
1041
+ */
1042
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.cancel": NatsErrorPayload
1043
+ /**
1044
+ * List Network Interfaces
1045
+ *
1046
+ * Lists all managed network interfaces available for controller connections and ARP scanning.
1047
+ *
1048
+ * @operationId getNetworkInterfaces
1049
+ */
1050
+ "nova.v2.system.network.interfaces": NetworkInterfacesReply
1051
+ /**
1052
+ * Run ARP Scan
1053
+ *
1054
+ * Runs an ARP scan on the target interface and returns all discovered devices.
1055
+ *
1056
+ * @operationId arpScan
1057
+ */
1058
+ "nova.v2.system.network.arpscan": ArpScanReply
775
1059
  }
776
1060
 
777
1061
  export type NatsRequestSubject = keyof NatsRequestPayloads
@@ -883,7 +1167,12 @@ export interface NatsPublishPayloads {
883
1167
  /**
884
1168
  * Select Input/Output Values
885
1169
  *
886
- * Select input/output values published by the controller.
1170
+ * Select input/output values published by the controller on the shared `...ios` subject.
1171
+ *
1172
+ * This is the reserved, never-expiring default stream, shared by all clients that use it. For
1173
+ * independent per-client streams with their own update type and time to live use the `ios.subscribe`
1174
+ * operations instead. Malformed requests (non-string or empty entries in `ios`, an invalid
1175
+ * `update_type`) are rejected and leave the current selection unchanged.
887
1176
  *
888
1177
  * @operationId selectRobotControllerIOs
889
1178
  */
@@ -896,6 +1185,63 @@ export interface NatsPublishPayloads {
896
1185
  * @operationId publishRobotControllerIOs
897
1186
  */
898
1187
  "nova.v2.cells.{cell}.controllers.{controller}.ios": StreamIOValuesResponse
1188
+ /**
1189
+ * Subscribe to Input/Output Values
1190
+ *
1191
+ * Create a per-client subscription that streams the selected input/output values on a dedicated,
1192
+ * subscription-specific subject.
1193
+ *
1194
+ * The server generates a subject-safe `subscription_id` and returns it in the reply; values are then
1195
+ * published on `{instance}.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}`. The
1196
+ * subscription expires after `ttl_seconds` unless it is renewed. A subscription that would push the
1197
+ * union of all subscriptions' ports beyond the controller's realtime input/output capacity is rejected.
1198
+ *
1199
+ * @operationId subscribeRobotControllerIOs
1200
+ */
1201
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe": SubscribeIOs
1202
+ /**
1203
+ * Update an Input/Output Subscription
1204
+ *
1205
+ * Partially update an existing subscription by its server-issued `subscription_id`. Only the supplied
1206
+ * fields (`ios`, `update_type`, `ttl_seconds`) are changed; omitted fields are kept unchanged, so the
1207
+ * time to live or the update type can be changed without resending the port list. An update that would
1208
+ * push the union of all subscriptions' ports beyond the controller's realtime input/output capacity is
1209
+ * rejected and leaves the subscription unchanged.
1210
+ *
1211
+ * A successful update also renews the lease: `expires_at` is reset to the current time plus the
1212
+ * subscription's time to live, even when `ttl_seconds` is omitted.
1213
+ *
1214
+ * @operationId updateRobotControllerIOSubscription
1215
+ */
1216
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.update": UpdateIOSubscription
1217
+ /**
1218
+ * Renew an Input/Output Subscription
1219
+ *
1220
+ * Extend the lease of an existing subscription identified by its server-issued `subscription_id`.
1221
+ * Clients should renew at roughly a third of the subscription's time to live. A subscription that has
1222
+ * already expired is not found and must be created again.
1223
+ *
1224
+ * @operationId renewRobotControllerIOSubscription
1225
+ */
1226
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.renew": RenewIOSubscription
1227
+ /**
1228
+ * Cancel an Input/Output Subscription
1229
+ *
1230
+ * Cancel an existing subscription identified by its server-issued `subscription_id`. Streaming on the
1231
+ * subscription's subject stops and its ports are removed from the union read from the controller.
1232
+ *
1233
+ * @operationId cancelRobotControllerIOSubscription
1234
+ */
1235
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.subscribe.cancel": CancelIOSubscription
1236
+ /**
1237
+ * Subscription Input/Output Values
1238
+ *
1239
+ * Publishes updates of input/output values for a single subscription on its dedicated
1240
+ * `...ios.{subscription_id}` subject. Each subscription receives its own `full` or `changes` view.
1241
+ *
1242
+ * @operationId publishRobotControllerIOSubscription
1243
+ */
1244
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.{subscription_id}": StreamIOValuesResponse
899
1245
  /**
900
1246
  * State of Robot Controller
901
1247
  *
@@ -955,6 +1301,22 @@ export interface NatsPublishPayloads {
955
1301
  * @operationId eventSystemNetworkStatusChanged
956
1302
  */
957
1303
  "nova.v2.events.system.network.status.changed": NetworkStatusChangedEvent
1304
+ /**
1305
+ * List Network Interfaces
1306
+ *
1307
+ * Lists all managed network interfaces available for controller connections and ARP scanning.
1308
+ *
1309
+ * @operationId getNetworkInterfaces
1310
+ */
1311
+ "nova.v2.system.network.interfaces": NetworkInterfacesRequest
1312
+ /**
1313
+ * Run ARP Scan
1314
+ *
1315
+ * Runs an ARP scan on the target interface and returns all discovered devices.
1316
+ *
1317
+ * @operationId arpScan
1318
+ */
1319
+ "nova.v2.system.network.arpscan": ArpScanRequest
958
1320
  /**
959
1321
  * Cell Created
960
1322
  *