@wandelbots/nova-js 3.13.0-pr.307.ea0533d → 3.13.0

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 (45) hide show
  1. package/dist/Nova--8gozkLR.d.mts +85 -0
  2. package/dist/Nova--8gozkLR.d.mts.map +1 -0
  3. package/dist/Nova-B1o5iTQ6.d.cts +85 -0
  4. package/dist/Nova-B1o5iTQ6.d.cts.map +1 -0
  5. package/dist/{context-Cu5mXcFZ.cjs → context-BZELA2eh.cjs} +3 -146
  6. package/dist/context-BZELA2eh.cjs.map +1 -0
  7. package/dist/{context-CmXqEEwW.mjs → context-ffr5Q2dc.mjs} +3 -86
  8. package/dist/context-ffr5Q2dc.mjs.map +1 -0
  9. package/dist/converters-DnG1fX23.mjs +87 -0
  10. package/dist/converters-DnG1fX23.mjs.map +1 -0
  11. package/dist/converters-EYS27XJE.cjs +146 -0
  12. package/dist/converters-EYS27XJE.cjs.map +1 -0
  13. package/dist/experimental/nats/index.cjs +96 -17
  14. package/dist/experimental/nats/index.cjs.map +1 -1
  15. package/dist/experimental/nats/index.d.cts +1079 -67
  16. package/dist/experimental/nats/index.d.cts.map +1 -1
  17. package/dist/experimental/nats/index.d.mts +1079 -67
  18. package/dist/experimental/nats/index.d.mts.map +1 -1
  19. package/dist/experimental/nats/index.mjs +96 -18
  20. package/dist/experimental/nats/index.mjs.map +1 -1
  21. package/dist/index.cjs +13 -12
  22. package/dist/index.mjs +3 -2
  23. package/dist/v1/index.cjs +3 -3
  24. package/dist/v1/index.cjs.map +1 -1
  25. package/dist/v1/index.mjs +2 -2
  26. package/dist/v2/index.cjs +4 -3
  27. package/dist/v2/index.cjs.map +1 -1
  28. package/dist/v2/index.d.cts +5 -83
  29. package/dist/v2/index.d.cts.map +1 -1
  30. package/dist/v2/index.d.mts +4 -82
  31. package/dist/v2/index.d.mts.map +1 -1
  32. package/dist/v2/index.mjs +2 -1
  33. package/dist/v2/index.mjs.map +1 -1
  34. package/dist/{wandelscriptUtils-CKhiZJsB.mjs → wandelscriptUtils-CpUXdLVc.mjs} +3 -2
  35. package/dist/{wandelscriptUtils-CKhiZJsB.mjs.map → wandelscriptUtils-CpUXdLVc.mjs.map} +1 -1
  36. package/dist/{wandelscriptUtils-BdqeVDCY.cjs → wandelscriptUtils-DcY1aLWu.cjs} +13 -12
  37. package/dist/{wandelscriptUtils-BdqeVDCY.cjs.map → wandelscriptUtils-DcY1aLWu.cjs.map} +1 -1
  38. package/package.json +1 -3
  39. package/src/experimental/nats/index.ts +7 -0
  40. package/src/lib/experimental/nats/NovaNatsClient.ts +86 -15
  41. package/src/lib/experimental/nats/buildNatsServerUrl.ts +15 -0
  42. package/src/lib/experimental/nats/buildSubject.ts +53 -5
  43. package/src/lib/experimental/nats/generated/operations.ts +918 -71
  44. package/dist/context-CmXqEEwW.mjs.map +0 -1
  45. package/dist/context-Cu5mXcFZ.cjs.map +0 -1
@@ -1,6 +1,32 @@
1
+ import { t as Nova } from "../../Nova-B1o5iTQ6.cjs";
1
2
  import { ConnectionOptions, Msg, NatsConnection } from "@nats-io/nats-core";
2
3
 
4
+ //#region src/lib/experimental/nats/buildNatsServerUrl.d.ts
5
+ /**
6
+ * Builds the WebSocket URL for a NOVA instance's NATS gateway from its
7
+ * instance URL, e.g. `https://foo.instance.wandelbots.io` becomes
8
+ * `wss://foo.instance.wandelbots.io/api/nats`.
9
+ *
10
+ * Pass the result as `servers` in the `NovaNatsClientConfig` passed to
11
+ * `NovaNatsClient`.
12
+ */
13
+ declare function buildNatsServerUrl(instanceUrl: string): string;
14
+ //#endregion
3
15
  //#region src/lib/experimental/nats/generated/types.d.ts
16
+ /**
17
+ * AUTO-GENERATED FILE - DO NOT EDIT.
18
+ * Generated from src/asyncapi.yaml by scripts/generate-nats-client.ts.
19
+ * Run `pnpm generate:nats` to regenerate.
20
+ */
21
+ /**
22
+ * A unique name for the cell used as an identifier for addressing the cell in all API calls.
23
+ * It must be a valid k8s label name as defined by [RFC 1123](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names).
24
+ *
25
+ *
26
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
27
+ * via the `definition` "CellName".
28
+ */
29
+ type CellName = string;
4
30
  /**
5
31
  * A description of the cell.
6
32
  *
@@ -46,6 +72,20 @@ type ContainerEnvironment = {
46
72
  name: string;
47
73
  value: string;
48
74
  }[];
75
+ /**
76
+ * The amount of requested storage capacity.
77
+ *
78
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
79
+ * via the `definition` "Capacity".
80
+ */
81
+ type Capacity = string;
82
+ /**
83
+ * The state of a program run.
84
+ *
85
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
86
+ * via the `definition` "ProgramRunState".
87
+ */
88
+ type ProgramRunState = "PREPARING" | "RUNNING" | "COMPLETED" | "FAILED" | "STOPPED";
49
89
  /**
50
90
  * State of the program run.
51
91
  */
@@ -95,6 +135,25 @@ type Vector3D = [number, number, number];
95
135
  * via the `definition` "RotationVector".
96
136
  */
97
137
  type RotationVector = [number, number, number];
138
+ /**
139
+ * A link chain is a kinematic chain of links that is connected via joints.
140
+ * A motion group can be used to control the motion of the joints in a link chain.
141
+ *
142
+ * A link is a group of colliders that is attached to the link reference frame.
143
+ *
144
+ * The reference frame of a link is obtained after applying all sets of Denavit-Hartenberg-parameters from base to (including) the link index.
145
+ *
146
+ * This means that the reference frame of the link is on the rotation axis of the next joint in the kinematic chain.
147
+ * Example: For a motion group with 2 joints, the collider reference frame (CRF) for link 1 is on the rotation axis of joint 2. The chain looks like:
148
+ * - Origin >> Mounting >> Base >> (CRF Base) Joint 0 >> Link 0 >> (CRF Link 0) Joint 1 >> Link 1 >> (CRF Link 1) Flange (CRF Tool) >> TCP
149
+ *
150
+ * Adjacent links in the kinematic chain of the motion group are not checked for mutual collision.
151
+ *
152
+ *
153
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
154
+ * via the `definition` "LinkChain".
155
+ */
156
+ type LinkChain = CollisionMotionGroupLink[];
98
157
  /**
99
158
  * The shape of the motion groups links to validate against colliders.
100
159
  * Indexed along the kinematic chain, starting with a static base shape before first joint.
@@ -122,6 +181,50 @@ type IOValue = IOBooleanValue | IOIntegerValue | IOFloatValue;
122
181
  * via the `definition` "ListIOValuesResponse".
123
182
  */
124
183
  type ListIOValuesResponse = IOValue[];
184
+ /**
185
+ * Defines the current system mode of the robot system, including NOVA communicating with the robot controller.
186
+ *
187
+ * ### MODE_CONTROLLER_NOT_CONFIGURED
188
+ *
189
+ * No controller with the specified identifier is configured. Call [addRobotController](#/operations/addRobotController) to register a controller.
190
+ *
191
+ * ### MODE_INITIALIZING
192
+ *
193
+ * Indicates that a connection to the robot controller is established or reestablished in case of a disconnect.
194
+ * On success, the controller is set to MODE_MONITOR.
195
+ * On failure, the initialization process is retried until successful or cancelled by the user.
196
+ *
197
+ * ### MODE_MONITOR
198
+ *
199
+ * Read-only mode with an active controller connection.
200
+ * - Receives robot state and I/O signals
201
+ * - Move requests are rejected
202
+ * - No commands are sent to the controller
203
+ *
204
+ * ### MODE_CONTROL
205
+ *
206
+ * Active control mode.
207
+ *
208
+ * **Movement is possible in this mode**
209
+ *
210
+ * The robot is cyclically commanded to hold its current position.
211
+ * The robot state is received in sync with the controller cycle.
212
+ * Motion and jogging requests are accepted and executed.
213
+ * Input/Output interaction is enabled.
214
+ *
215
+ * ### MODE_FREE_DRIVE
216
+ *
217
+ * Read-only mode with servo motors enabled for manual movement (Free Drive).
218
+ *
219
+ * Move requests are rejected.
220
+ *
221
+ * Not supported by all robots: Use [getSupportedModes](#/operations/getSupportedModes) to check Free Drive availability.
222
+ *
223
+ *
224
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
225
+ * via the `definition` "RobotSystemMode".
226
+ */
227
+ type RobotSystemMode = "MODE_CONTROLLER_NOT_CONFIGURED" | "MODE_INITIALIZING" | "MODE_MONITOR" | "MODE_CONTROL" | "MODE_FREE_DRIVE";
125
228
  /**
126
229
  * Current operation mode of the configured robot controller.
127
230
  * Operation modes in which the attached motion groups can be moved are:
@@ -148,6 +251,28 @@ type OperationMode = "OPERATION_MODE_UNKNOWN" | "OPERATION_MODE_NO_CONTROLLER" |
148
251
  * via the `definition` "SafetyStateType".
149
252
  */
150
253
  type SafetyStateType = "SAFETY_STATE_UNKNOWN" | "SAFETY_STATE_FAULT" | "SAFETY_STATE_NORMAL" | "SAFETY_STATE_MASTERING" | "SAFETY_STATE_CONFIRM_SAFETY" | "SAFETY_STATE_OPERATOR_SAFETY" | "SAFETY_STATE_PROTECTIVE_STOP" | "SAFETY_STATE_REDUCED" | "SAFETY_STATE_STOP" | "SAFETY_STATE_STOP_0" | "SAFETY_STATE_STOP_1" | "SAFETY_STATE_STOP_2" | "SAFETY_STATE_RECOVERY" | "SAFETY_STATE_DEVICE_EMERGENCY_STOP" | "SAFETY_STATE_ROBOT_EMERGENCY_STOP" | "SAFETY_STATE_VIOLATION";
254
+ /**
255
+ * This structure describes a set of joint values, e.g., positions, currents, torques, of a motion group.
256
+ *
257
+ * Float precision is the default.
258
+ *
259
+ *
260
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
261
+ * via the `definition` "Joints".
262
+ */
263
+ type Joints = number[];
264
+ /**
265
+ * - The location is a scalar value that defines a position along a path, typically ranging from 0 to `n`,
266
+ * where `n` denotes the number of motion commands
267
+ * - Each integer value of the location corresponds to a specific motion command,
268
+ * while non-integer values interpolate positions within the segments.
269
+ * - The location is calculated from the joint path
270
+ *
271
+ *
272
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
273
+ * via the `definition` "Location".
274
+ */
275
+ type Location = number;
151
276
  /**
152
277
  * Current joint position of each joint.
153
278
  * The unit depends on the type of joint: For revolute joints, the angle is given in [rad]; for prismatic joints, the displacement is given in [mm].
@@ -1110,6 +1235,20 @@ interface ColliderDictionary {
1110
1235
  interface CollisionMotionGroupLink {
1111
1236
  [k: string]: Collider;
1112
1237
  }
1238
+ /**
1239
+ * Defines the shape of a tool.
1240
+ *
1241
+ * A tool is a dictionary of colliders.
1242
+ *
1243
+ * All colliders that make up a tool are attached to the flange frame of the motion group.
1244
+ *
1245
+ *
1246
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
1247
+ * via the `definition` "Tool".
1248
+ */
1249
+ interface CollisionMotionGroupTool {
1250
+ [k: string]: Collider;
1251
+ }
1113
1252
  /**
1114
1253
  * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
1115
1254
  * via the `definition` "CollisionSetup".
@@ -1247,6 +1386,20 @@ interface StreamIOValuesResponse {
1247
1386
  */
1248
1387
  sequence_number: number;
1249
1388
  }
1389
+ /**
1390
+ * Indicates which joint of the motion group is in a limit.
1391
+ * If a joint is in its limit, only this joint can be moved. Movements that affect any other joints are not executed.
1392
+ *
1393
+ *
1394
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
1395
+ * via the `definition` "MotionGroupState_JointLimitReached".
1396
+ */
1397
+ interface MotionGroupState_JointLimitReached {
1398
+ /**
1399
+ * If true, operational (soft) jointLimit is reached for specific joint.
1400
+ */
1401
+ limit_reached: boolean[];
1402
+ }
1250
1403
  /**
1251
1404
  * Jogging is active.
1252
1405
  *
@@ -1425,6 +1578,24 @@ interface TrajectoryDetails {
1425
1578
  */
1426
1579
  kind: "TRAJECTORY";
1427
1580
  }
1581
+ /**
1582
+ * Details about the state of the motion execution.
1583
+ * The details are either for a jogging or a trajectory.
1584
+ * If NOVA is not controlling this motion group at the moment, this field is omitted.
1585
+ *
1586
+ *
1587
+ * This interface was referenced by `GeneratedNatsPayloadsRoot`'s JSON-Schema
1588
+ * via the `definition` "Execute".
1589
+ */
1590
+ interface Execute {
1591
+ /**
1592
+ * Commanded joint position of each joint. This command was sent in the time step the corresponding state was received.
1593
+ * The unit depends on the type of joint: For revolute joints, the angle is given in [rad]; for prismatic joints, the displacement is given in [mm].
1594
+ *
1595
+ */
1596
+ joint_position: number[];
1597
+ details?: JoggingDetails | TrajectoryDetails;
1598
+ }
1428
1599
  /**
1429
1600
  * Presents the current state of the motion group.
1430
1601
  *
@@ -1994,193 +2165,1017 @@ interface NatsErrorPayload {
1994
2165
  //#region src/lib/experimental/nats/generated/operations.d.ts
1995
2166
  /** Subject parameters required by each NATS subject, e.g. "nova.v2.cells.{cell}". */
1996
2167
  interface NatsOperationParams {
1997
- /** publishCell */
2168
+ /**
2169
+ * Cell Configuration
2170
+ *
2171
+ * Publishes the configuration for a cell.
2172
+ *
2173
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2174
+ *
2175
+ * @operationId publishCell
2176
+ */
1998
2177
  "nova.v2.cells.{cell}": {
2178
+ /**
2179
+ * Unique identifier addressing a cell in all API calls.
2180
+ */
1999
2181
  cell: string;
2000
2182
  };
2001
- /** publishApp */
2183
+ /**
2184
+ * App Configuration
2185
+ *
2186
+ * Publishes the configuration for a GUI application in the cell.
2187
+ *
2188
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2189
+ *
2190
+ * @operationId publishApp
2191
+ */
2002
2192
  "nova.v2.cells.{cell}.apps.{app}": {
2193
+ /**
2194
+ * Unique identifier addressing a cell in all API calls.
2195
+ */
2003
2196
  cell: string;
2197
+ /**
2198
+ * Name of the provided application.
2199
+ * Must be unique within the cell and is used as an identifier for addressing the application in all API calls, e.g., when updating the application.
2200
+ */
2004
2201
  app: string;
2005
2202
  };
2006
- /** publishProgramStatus */
2203
+ /**
2204
+ * Program Status
2205
+ *
2206
+ * Publishes status messages for programs running in an app within a cell.
2207
+ * The status messages provide information about the current state of a program run.
2208
+ *
2209
+ * @operationId publishProgramStatus
2210
+ */
2007
2211
  "nova.v2.cells.{cell}.programs": {
2212
+ /**
2213
+ * Unique identifier addressing a cell in all API calls.
2214
+ */
2008
2215
  cell: string;
2009
2216
  };
2010
- /** publishRobotController */
2217
+ /**
2218
+ * Robot Controller Configuration
2219
+ *
2220
+ * Publishes the configuration of a robot controller.
2221
+ *
2222
+ * @operationId publishRobotController
2223
+ */
2011
2224
  "nova.v2.cells.{cell}.controllers.{controller}": {
2225
+ /**
2226
+ * Unique identifier addressing a cell in all API calls.
2227
+ */
2012
2228
  cell: string;
2229
+ /**
2230
+ * Unique identifier to address a controller in the cell.
2231
+ */
2013
2232
  controller: string;
2014
2233
  };
2015
- /** publishCellStatus */
2234
+ /**
2235
+ * Service Status
2236
+ *
2237
+ * Publishes the status of all cell resources.
2238
+ *
2239
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2240
+ *
2241
+ * @operationId publishCellStatus
2242
+ */
2016
2243
  "nova.v2.cells.{cell}.status": {
2244
+ /**
2245
+ * Unique identifier addressing a cell in all API calls.
2246
+ */
2017
2247
  cell: string;
2018
2248
  };
2019
- /** publishCellCycle */
2249
+ /**
2250
+ * Cell Cycle Event
2251
+ *
2252
+ * Publishes the cycle events for a cell.
2253
+ *
2254
+ * @operationId publishCellCycle
2255
+ */
2020
2256
  "nova.v2.cells.{cell}.cycle": {
2257
+ /**
2258
+ * Unique identifier addressing a cell in all API calls.
2259
+ */
2021
2260
  cell: string;
2022
2261
  };
2023
- /** publishSystemStatus */
2024
- "nova.v2.system.status": Record<string, never>;
2025
- /** publishCollisionSetup */
2262
+ /**
2263
+ * Wandelbots NOVA status
2264
+ *
2265
+ * Publishes the status of all system services.
2266
+ *
2267
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2268
+ *
2269
+ * @operationId publishSystemStatus
2270
+ */
2271
+ "nova.v2.system.status": Record<never, never>;
2272
+ /**
2273
+ * Collision Setup
2274
+ *
2275
+ * Publishes the stored collision setup.
2276
+ *
2277
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2278
+ *
2279
+ * @operationId publishCollisionSetup
2280
+ */
2026
2281
  "nova.v2.cells.{cell}.collision.setups.{setup}": {
2282
+ /**
2283
+ * Unique identifier addressing a cell in all API calls.
2284
+ */
2027
2285
  cell: string;
2286
+ /**
2287
+ * Unique identifier addressing a collision setup.
2288
+ */
2028
2289
  setup: string;
2029
2290
  };
2030
- /** publishBUSIOStatus */
2291
+ /**
2292
+ * BUS Inputs/Outputs Service Status
2293
+ *
2294
+ * Publishes the status of BUS inputs/outputs service.
2295
+ *
2296
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`.
2297
+ *
2298
+ * @operationId publishBUSIOStatus
2299
+ */
2031
2300
  "nova.v2.cells.{cell}.bus-ios.status": {
2301
+ /**
2302
+ * Unique identifier addressing a cell in all API calls.
2303
+ */
2032
2304
  cell: string;
2033
2305
  };
2034
- /** publishBUSIOsIOs */
2306
+ /**
2307
+ * BUS Input/Output Values
2308
+ *
2309
+ * Publishes updates of BUS input/output values.
2310
+ *
2311
+ * @operationId publishBUSIOsIOs
2312
+ */
2035
2313
  "nova.v2.cells.{cell}.bus-ios.ios": {
2314
+ /**
2315
+ * Unique identifier addressing a cell in all API calls.
2316
+ */
2036
2317
  cell: string;
2037
2318
  };
2038
- /** setBUSIOsIOs */
2319
+ /**
2320
+ * Set Output Values
2321
+ *
2322
+ * Set output values published with the BUS inputs/outputs service.
2323
+ * If you're using a virtual service, you can set inputs as well.
2324
+ *
2325
+ * @operationId setBUSIOsIOs
2326
+ */
2039
2327
  "nova.v2.cells.{cell}.bus-ios.ios.set": {
2328
+ /**
2329
+ * Unique identifier addressing a cell in all API calls.
2330
+ */
2040
2331
  cell: string;
2041
2332
  };
2042
- /** selectRobotControllerIOs */
2333
+ /**
2334
+ * Select Input/Output Values
2335
+ *
2336
+ * Select input/output values published by the controller.
2337
+ *
2338
+ * @operationId selectRobotControllerIOs
2339
+ */
2043
2340
  "nova.v2.cells.{cell}.controllers.{controller}.ios.select": {
2341
+ /**
2342
+ * Unique identifier addressing a cell in all API calls.
2343
+ */
2044
2344
  cell: string;
2345
+ /**
2346
+ * Unique identifier to address a controller in a cell.
2347
+ */
2045
2348
  controller: string;
2046
2349
  };
2047
- /** publishRobotControllerIOs */
2350
+ /**
2351
+ * Input/Output Values
2352
+ *
2353
+ * Publishes updates of input/output values.
2354
+ *
2355
+ * @operationId publishRobotControllerIOs
2356
+ */
2048
2357
  "nova.v2.cells.{cell}.controllers.{controller}.ios": {
2358
+ /**
2359
+ * Unique identifier addressing a cell in all API calls.
2360
+ */
2049
2361
  cell: string;
2362
+ /**
2363
+ * Unique identifier to address a controller in the cell.
2364
+ */
2050
2365
  controller: string;
2051
2366
  };
2052
- /** publishRobotControllersState */
2367
+ /**
2368
+ * State of Robot Controller
2369
+ *
2370
+ * Publishes the current state of a robot controller.
2371
+ *
2372
+ * @operationId publishRobotControllersState
2373
+ */
2053
2374
  "nova.v2.cells.{cell}.controllers.{controller}.state": {
2375
+ /**
2376
+ * Unique identifier addressing a cell in all API calls.
2377
+ */
2054
2378
  cell: string;
2379
+ /**
2380
+ * Unique identifier to address a controller in the cell.
2381
+ */
2055
2382
  controller: string;
2056
2383
  };
2057
- /** publishMotionGroupDescription */
2384
+ /**
2385
+ * Description of Motion Group
2386
+ *
2387
+ * Publishes the description of a motion group, including TCPs, mounting, safety zones, limits, etc.
2388
+ *
2389
+ * @operationId publishMotionGroupDescription
2390
+ */
2058
2391
  "nova.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description": {
2392
+ /**
2393
+ * Unique identifier addressing a cell in all API calls.
2394
+ */
2059
2395
  cell: string;
2396
+ /**
2397
+ * Unique identifier addressing a controller in the cell.
2398
+ */
2060
2399
  controller: string;
2400
+ /**
2401
+ * Motion group identifier.
2402
+ */
2061
2403
  "motion-group": string;
2062
2404
  };
2063
- /** eventSystemUpdateStarted */
2064
- "nova.v2.events.system.update.started": Record<string, never>;
2065
- /** eventSystemUpdateCompleted */
2066
- "nova.v2.events.system.update.completed": Record<string, never>;
2067
- /** eventSystemNetworkStatusChanged */
2068
- "nova.v2.events.system.network.status.changed": Record<string, never>;
2069
- /** eventCellCreated */
2405
+ /**
2406
+ * System Update Started
2407
+ *
2408
+ * Publishes an event when a system update process is initiated.
2409
+ *
2410
+ * This event is triggered once the service-manager begins a system update process,
2411
+ * providing details about the update metadata, trigger information, and pre-update checks.
2412
+ *
2413
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2414
+ * for reliable delivery and event replay capabilities.
2415
+ *
2416
+ * @operationId eventSystemUpdateStarted
2417
+ */
2418
+ "nova.v2.events.system.update.started": Record<never, never>;
2419
+ /**
2420
+ * System Update Completed
2421
+ *
2422
+ * Publishes an event when a system update process is completed.
2423
+ *
2424
+ * This event is triggered once the service-manager completes a system update process,
2425
+ * providing comprehensive results including success status, component outcomes,
2426
+ * error details, and post-update validation results.
2427
+ *
2428
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2429
+ * for reliable delivery and event replay capabilities.
2430
+ *
2431
+ * @operationId eventSystemUpdateCompleted
2432
+ */
2433
+ "nova.v2.events.system.update.completed": Record<never, never>;
2434
+ /**
2435
+ * System Network Status Changed
2436
+ *
2437
+ * Publishes an event when a system network status changes.
2438
+ *
2439
+ * This event is triggered once system-info service detects a change in the system network status,
2440
+ * providing details about the new network state and related information.
2441
+ *
2442
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2443
+ * for reliable delivery and event replay capabilities.
2444
+ *
2445
+ * @operationId eventSystemNetworkStatusChanged
2446
+ */
2447
+ "nova.v2.events.system.network.status.changed": Record<never, never>;
2448
+ /**
2449
+ * Cell Created
2450
+ *
2451
+ * Publishes an event when a cell foundation release is created.
2452
+ *
2453
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2454
+ *
2455
+ * @operationId eventCellCreated
2456
+ */
2070
2457
  "nova.v2.events.cells.{cell}.created": {
2458
+ /**
2459
+ * Unique identifier addressing a cell in all API calls.
2460
+ */
2071
2461
  cell: string;
2072
2462
  };
2073
- /** eventCellUpdated */
2463
+ /**
2464
+ * Cell Updated
2465
+ *
2466
+ * Publishes an event when a cell foundation release is updated.
2467
+ *
2468
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2469
+ *
2470
+ * @operationId eventCellUpdated
2471
+ */
2074
2472
  "nova.v2.events.cells.{cell}.updated": {
2473
+ /**
2474
+ * Unique identifier addressing a cell in all API calls.
2475
+ */
2075
2476
  cell: string;
2076
2477
  };
2077
- /** eventCellDeleted */
2478
+ /**
2479
+ * Cell Deleted
2480
+ *
2481
+ * Publishes an event when a cell foundation release is deleted.
2482
+ *
2483
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2484
+ *
2485
+ * @operationId eventCellDeleted
2486
+ */
2078
2487
  "nova.v2.events.cells.{cell}.deleted": {
2488
+ /**
2489
+ * Unique identifier addressing a cell in all API calls.
2490
+ */
2079
2491
  cell: string;
2080
2492
  };
2081
- /** eventAppCreated */
2493
+ /**
2494
+ * App Created
2495
+ *
2496
+ * Publishes an event when an app release is created in a cell.
2497
+ *
2498
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2499
+ *
2500
+ * @operationId eventAppCreated
2501
+ */
2082
2502
  "nova.v2.events.cells.{cell}.apps.{app}.created": {
2503
+ /**
2504
+ * Unique identifier addressing a cell in all API calls.
2505
+ */
2083
2506
  cell: string;
2507
+ /**
2508
+ * Unique identifier addressing an app in the cell.
2509
+ */
2084
2510
  app: string;
2085
2511
  };
2086
- /** eventAppUpdated */
2512
+ /**
2513
+ * App Updated
2514
+ *
2515
+ * Publishes an event when an app release is updated in a cell.
2516
+ *
2517
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2518
+ *
2519
+ * @operationId eventAppUpdated
2520
+ */
2087
2521
  "nova.v2.events.cells.{cell}.apps.{app}.updated": {
2522
+ /**
2523
+ * Unique identifier addressing a cell in all API calls.
2524
+ */
2088
2525
  cell: string;
2089
- app: string;
2526
+ /**
2527
+ * Unique identifier addressing an app in the cell.
2528
+ */
2529
+ app: string;
2090
2530
  };
2091
- /** eventAppDeleted */
2531
+ /**
2532
+ * App Deleted
2533
+ *
2534
+ * Publishes an event when an app release is deleted from a cell.
2535
+ *
2536
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2537
+ *
2538
+ * @operationId eventAppDeleted
2539
+ */
2092
2540
  "nova.v2.events.cells.{cell}.apps.{app}.deleted": {
2541
+ /**
2542
+ * Unique identifier addressing a cell in all API calls.
2543
+ */
2093
2544
  cell: string;
2545
+ /**
2546
+ * Unique identifier addressing an app in the cell.
2547
+ */
2094
2548
  app: string;
2095
2549
  };
2096
- /** eventRobotControllerCreated */
2550
+ /**
2551
+ * Robot Controller Created
2552
+ *
2553
+ * Publishes an event when a robot controller release is created in a cell.
2554
+ *
2555
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2556
+ *
2557
+ * @operationId eventRobotControllerCreated
2558
+ */
2097
2559
  "nova.v2.events.cells.{cell}.controllers.{controller}.created": {
2560
+ /**
2561
+ * Unique identifier addressing a cell in all API calls.
2562
+ */
2098
2563
  cell: string;
2564
+ /**
2565
+ * Unique identifier to address a controller in the cell.
2566
+ */
2099
2567
  controller: string;
2100
2568
  };
2101
- /** eventRobotControllerUpdated */
2569
+ /**
2570
+ * Robot Controller Updated
2571
+ *
2572
+ * Publishes an event when a robot controller release is updated in a cell.
2573
+ *
2574
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2575
+ *
2576
+ * @operationId eventRobotControllerUpdated
2577
+ */
2102
2578
  "nova.v2.events.cells.{cell}.controllers.{controller}.updated": {
2579
+ /**
2580
+ * Unique identifier addressing a cell in all API calls.
2581
+ */
2103
2582
  cell: string;
2583
+ /**
2584
+ * Unique identifier to address a controller in the cell.
2585
+ */
2104
2586
  controller: string;
2105
2587
  };
2106
- /** eventRobotControllerDeleted */
2588
+ /**
2589
+ * Robot Controller Deleted
2590
+ *
2591
+ * Publishes an event when a robot controller release is deleted from a cell.
2592
+ *
2593
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2594
+ *
2595
+ * @operationId eventRobotControllerDeleted
2596
+ */
2107
2597
  "nova.v2.events.cells.{cell}.controllers.{controller}.deleted": {
2598
+ /**
2599
+ * Unique identifier addressing a cell in all API calls.
2600
+ */
2108
2601
  cell: string;
2602
+ /**
2603
+ * Unique identifier to address a controller in the cell.
2604
+ */
2109
2605
  controller: string;
2110
2606
  };
2111
2607
  }
2112
2608
  /** Payload types for subjects the server publishes and the client subscribes to. */
2113
2609
  interface NatsSubscribePayloads {
2114
- /** publishCell */
2610
+ /**
2611
+ * Cell Configuration
2612
+ *
2613
+ * Publishes the configuration for a cell.
2614
+ *
2615
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2616
+ *
2617
+ * @operationId publishCell
2618
+ */
2115
2619
  "nova.v2.cells.{cell}": Cell;
2116
- /** publishApp */
2620
+ /**
2621
+ * App Configuration
2622
+ *
2623
+ * Publishes the configuration for a GUI application in the cell.
2624
+ *
2625
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2626
+ *
2627
+ * @operationId publishApp
2628
+ */
2117
2629
  "nova.v2.cells.{cell}.apps.{app}": App;
2118
- /** publishProgramStatus */
2630
+ /**
2631
+ * Program Status
2632
+ *
2633
+ * Publishes status messages for programs running in an app within a cell.
2634
+ * The status messages provide information about the current state of a program run.
2635
+ *
2636
+ * @operationId publishProgramStatus
2637
+ */
2119
2638
  "nova.v2.cells.{cell}.programs": ProgramStatus;
2120
- /** publishRobotController */
2639
+ /**
2640
+ * Robot Controller Configuration
2641
+ *
2642
+ * Publishes the configuration of a robot controller.
2643
+ *
2644
+ * @operationId publishRobotController
2645
+ */
2121
2646
  "nova.v2.cells.{cell}.controllers.{controller}": RobotController;
2122
- /** publishCellStatus */
2647
+ /**
2648
+ * Service Status
2649
+ *
2650
+ * Publishes the status of all cell resources.
2651
+ *
2652
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2653
+ *
2654
+ * @operationId publishCellStatus
2655
+ */
2123
2656
  "nova.v2.cells.{cell}.status": ServiceStatusList;
2124
- /** publishCellCycle */
2657
+ /**
2658
+ * Cell Cycle Event
2659
+ *
2660
+ * Publishes the cycle events for a cell.
2661
+ *
2662
+ * @operationId publishCellCycle
2663
+ */
2125
2664
  "nova.v2.cells.{cell}.cycle": CellCycleEvent;
2126
- /** publishSystemStatus */
2665
+ /**
2666
+ * Wandelbots NOVA status
2667
+ *
2668
+ * Publishes the status of all system services.
2669
+ *
2670
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2671
+ *
2672
+ * @operationId publishSystemStatus
2673
+ */
2127
2674
  "nova.v2.system.status": ServiceStatusList;
2128
- /** publishCollisionSetup */
2675
+ /**
2676
+ * Collision Setup
2677
+ *
2678
+ * Publishes the stored collision setup.
2679
+ *
2680
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2681
+ *
2682
+ * @operationId publishCollisionSetup
2683
+ */
2129
2684
  "nova.v2.cells.{cell}.collision.setups.{setup}": CollisionSetup;
2130
- /** publishBUSIOStatus */
2685
+ /**
2686
+ * BUS Inputs/Outputs Service Status
2687
+ *
2688
+ * Publishes the status of BUS inputs/outputs service.
2689
+ *
2690
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`.
2691
+ *
2692
+ * @operationId publishBUSIOStatus
2693
+ */
2131
2694
  "nova.v2.cells.{cell}.bus-ios.status": BusIOsState;
2132
- /** publishBUSIOsIOs */
2695
+ /**
2696
+ * BUS Input/Output Values
2697
+ *
2698
+ * Publishes updates of BUS input/output values.
2699
+ *
2700
+ * @operationId publishBUSIOsIOs
2701
+ */
2133
2702
  "nova.v2.cells.{cell}.bus-ios.ios": ListIOValuesResponse;
2134
- /** publishRobotControllerIOs */
2703
+ /**
2704
+ * Input/Output Values
2705
+ *
2706
+ * Publishes updates of input/output values.
2707
+ *
2708
+ * @operationId publishRobotControllerIOs
2709
+ */
2135
2710
  "nova.v2.cells.{cell}.controllers.{controller}.ios": StreamIOValuesResponse;
2136
- /** publishRobotControllersState */
2711
+ /**
2712
+ * State of Robot Controller
2713
+ *
2714
+ * Publishes the current state of a robot controller.
2715
+ *
2716
+ * @operationId publishRobotControllersState
2717
+ */
2137
2718
  "nova.v2.cells.{cell}.controllers.{controller}.state": RobotControllerState;
2138
- /** publishMotionGroupDescription */
2719
+ /**
2720
+ * Description of Motion Group
2721
+ *
2722
+ * Publishes the description of a motion group, including TCPs, mounting, safety zones, limits, etc.
2723
+ *
2724
+ * @operationId publishMotionGroupDescription
2725
+ */
2139
2726
  "nova.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description": MotionGroupDescription;
2140
- /** eventSystemUpdateStarted */
2727
+ /**
2728
+ * System Update Started
2729
+ *
2730
+ * Publishes an event when a system update process is initiated.
2731
+ *
2732
+ * This event is triggered once the service-manager begins a system update process,
2733
+ * providing details about the update metadata, trigger information, and pre-update checks.
2734
+ *
2735
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2736
+ * for reliable delivery and event replay capabilities.
2737
+ *
2738
+ * @operationId eventSystemUpdateStarted
2739
+ */
2141
2740
  "nova.v2.events.system.update.started": SystemUpdateStartedEvent;
2142
- /** eventSystemUpdateCompleted */
2741
+ /**
2742
+ * System Update Completed
2743
+ *
2744
+ * Publishes an event when a system update process is completed.
2745
+ *
2746
+ * This event is triggered once the service-manager completes a system update process,
2747
+ * providing comprehensive results including success status, component outcomes,
2748
+ * error details, and post-update validation results.
2749
+ *
2750
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2751
+ * for reliable delivery and event replay capabilities.
2752
+ *
2753
+ * @operationId eventSystemUpdateCompleted
2754
+ */
2143
2755
  "nova.v2.events.system.update.completed": SystemUpdateCompletedEvent;
2144
- /** eventSystemNetworkStatusChanged */
2756
+ /**
2757
+ * System Network Status Changed
2758
+ *
2759
+ * Publishes an event when a system network status changes.
2760
+ *
2761
+ * This event is triggered once system-info service detects a change in the system network status,
2762
+ * providing details about the new network state and related information.
2763
+ *
2764
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
2765
+ * for reliable delivery and event replay capabilities.
2766
+ *
2767
+ * @operationId eventSystemNetworkStatusChanged
2768
+ */
2145
2769
  "nova.v2.events.system.network.status.changed": NetworkStatusChangedEvent;
2146
- /** eventCellCreated */
2770
+ /**
2771
+ * Cell Created
2772
+ *
2773
+ * Publishes an event when a cell foundation release is created.
2774
+ *
2775
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2776
+ *
2777
+ * @operationId eventCellCreated
2778
+ */
2147
2779
  "nova.v2.events.cells.{cell}.created": CellCreatedEvent;
2148
- /** eventCellUpdated */
2780
+ /**
2781
+ * Cell Updated
2782
+ *
2783
+ * Publishes an event when a cell foundation release is updated.
2784
+ *
2785
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2786
+ *
2787
+ * @operationId eventCellUpdated
2788
+ */
2149
2789
  "nova.v2.events.cells.{cell}.updated": CellUpdatedEvent;
2150
- /** eventCellDeleted */
2790
+ /**
2791
+ * Cell Deleted
2792
+ *
2793
+ * Publishes an event when a cell foundation release is deleted.
2794
+ *
2795
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2796
+ *
2797
+ * @operationId eventCellDeleted
2798
+ */
2151
2799
  "nova.v2.events.cells.{cell}.deleted": CellDeletedEvent;
2152
- /** eventAppCreated */
2800
+ /**
2801
+ * App Created
2802
+ *
2803
+ * Publishes an event when an app release is created in a cell.
2804
+ *
2805
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2806
+ *
2807
+ * @operationId eventAppCreated
2808
+ */
2153
2809
  "nova.v2.events.cells.{cell}.apps.{app}.created": AppCreatedEvent;
2154
- /** eventAppUpdated */
2810
+ /**
2811
+ * App Updated
2812
+ *
2813
+ * Publishes an event when an app release is updated in a cell.
2814
+ *
2815
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2816
+ *
2817
+ * @operationId eventAppUpdated
2818
+ */
2155
2819
  "nova.v2.events.cells.{cell}.apps.{app}.updated": AppUpdatedEvent;
2156
- /** eventAppDeleted */
2820
+ /**
2821
+ * App Deleted
2822
+ *
2823
+ * Publishes an event when an app release is deleted from a cell.
2824
+ *
2825
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2826
+ *
2827
+ * @operationId eventAppDeleted
2828
+ */
2157
2829
  "nova.v2.events.cells.{cell}.apps.{app}.deleted": AppDeletedEvent;
2158
- /** eventRobotControllerCreated */
2830
+ /**
2831
+ * Robot Controller Created
2832
+ *
2833
+ * Publishes an event when a robot controller release is created in a cell.
2834
+ *
2835
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2836
+ *
2837
+ * @operationId eventRobotControllerCreated
2838
+ */
2159
2839
  "nova.v2.events.cells.{cell}.controllers.{controller}.created": RobotControllerCreatedEvent;
2160
- /** eventRobotControllerUpdated */
2840
+ /**
2841
+ * Robot Controller Updated
2842
+ *
2843
+ * Publishes an event when a robot controller release is updated in a cell.
2844
+ *
2845
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2846
+ *
2847
+ * @operationId eventRobotControllerUpdated
2848
+ */
2161
2849
  "nova.v2.events.cells.{cell}.controllers.{controller}.updated": RobotControllerUpdatedEvent;
2162
- /** eventRobotControllerDeleted */
2850
+ /**
2851
+ * Robot Controller Deleted
2852
+ *
2853
+ * Publishes an event when a robot controller release is deleted from a cell.
2854
+ *
2855
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
2856
+ *
2857
+ * @operationId eventRobotControllerDeleted
2858
+ */
2163
2859
  "nova.v2.events.cells.{cell}.controllers.{controller}.deleted": RobotControllerDeletedEvent;
2164
2860
  }
2165
2861
  type NatsSubscribeSubject = keyof NatsSubscribePayloads;
2166
2862
  /** Request payload types for subjects the client sends requests to. */
2167
2863
  interface NatsRequestPayloads {
2168
- /** setBUSIOsIOs */
2864
+ /**
2865
+ * Set Output Values
2866
+ *
2867
+ * Set output values published with the BUS inputs/outputs service.
2868
+ * If you're using a virtual service, you can set inputs as well.
2869
+ *
2870
+ * @operationId setBUSIOsIOs
2871
+ */
2169
2872
  "nova.v2.cells.{cell}.bus-ios.ios.set": ListIOValuesResponse;
2170
- /** selectRobotControllerIOs */
2873
+ /**
2874
+ * Select Input/Output Values
2875
+ *
2876
+ * Select input/output values published by the controller.
2877
+ *
2878
+ * @operationId selectRobotControllerIOs
2879
+ */
2171
2880
  "nova.v2.cells.{cell}.controllers.{controller}.ios.select": SelectIOs;
2172
2881
  }
2173
2882
  /** Reply payload types for request/reply subjects. */
2174
2883
  interface NatsReplyPayloads {
2175
- /** setBUSIOsIOs */
2884
+ /**
2885
+ * Set Output Values
2886
+ *
2887
+ * Set output values published with the BUS inputs/outputs service.
2888
+ * If you're using a virtual service, you can set inputs as well.
2889
+ *
2890
+ * @operationId setBUSIOsIOs
2891
+ */
2176
2892
  "nova.v2.cells.{cell}.bus-ios.ios.set": NatsErrorPayload;
2177
- /** selectRobotControllerIOs */
2893
+ /**
2894
+ * Select Input/Output Values
2895
+ *
2896
+ * Select input/output values published by the controller.
2897
+ *
2898
+ * @operationId selectRobotControllerIOs
2899
+ */
2178
2900
  "nova.v2.cells.{cell}.controllers.{controller}.ios.select": NatsErrorPayload;
2179
2901
  }
2180
2902
  type NatsRequestSubject = keyof NatsRequestPayloads;
2903
+ /** Payload types for every subject defined in the spec, publishable via NovaNatsClient#publish. */
2904
+ interface NatsPublishPayloads {
2905
+ /**
2906
+ * Cell Configuration
2907
+ *
2908
+ * Publishes the configuration for a cell.
2909
+ *
2910
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2911
+ *
2912
+ * @operationId publishCell
2913
+ */
2914
+ "nova.v2.cells.{cell}": Cell;
2915
+ /**
2916
+ * App Configuration
2917
+ *
2918
+ * Publishes the configuration for a GUI application in the cell.
2919
+ *
2920
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2921
+ *
2922
+ * @operationId publishApp
2923
+ */
2924
+ "nova.v2.cells.{cell}.apps.{app}": App;
2925
+ /**
2926
+ * Program Status
2927
+ *
2928
+ * Publishes status messages for programs running in an app within a cell.
2929
+ * The status messages provide information about the current state of a program run.
2930
+ *
2931
+ * @operationId publishProgramStatus
2932
+ */
2933
+ "nova.v2.cells.{cell}.programs": ProgramStatus;
2934
+ /**
2935
+ * Robot Controller Configuration
2936
+ *
2937
+ * Publishes the configuration of a robot controller.
2938
+ *
2939
+ * @operationId publishRobotController
2940
+ */
2941
+ "nova.v2.cells.{cell}.controllers.{controller}": RobotController;
2942
+ /**
2943
+ * Service Status
2944
+ *
2945
+ * Publishes the status of all cell resources.
2946
+ *
2947
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2948
+ *
2949
+ * @operationId publishCellStatus
2950
+ */
2951
+ "nova.v2.cells.{cell}.status": ServiceStatusList;
2952
+ /**
2953
+ * Cell Cycle Event
2954
+ *
2955
+ * Publishes the cycle events for a cell.
2956
+ *
2957
+ * @operationId publishCellCycle
2958
+ */
2959
+ "nova.v2.cells.{cell}.cycle": CellCycleEvent;
2960
+ /**
2961
+ * Wandelbots NOVA status
2962
+ *
2963
+ * Publishes the status of all system services.
2964
+ *
2965
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2966
+ *
2967
+ * @operationId publishSystemStatus
2968
+ */
2969
+ "nova.v2.system.status": ServiceStatusList;
2970
+ /**
2971
+ * Collision Setup
2972
+ *
2973
+ * Publishes the stored collision setup.
2974
+ *
2975
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`
2976
+ *
2977
+ * @operationId publishCollisionSetup
2978
+ */
2979
+ "nova.v2.cells.{cell}.collision.setups.{setup}": CollisionSetup;
2980
+ /**
2981
+ * BUS Inputs/Outputs Service Status
2982
+ *
2983
+ * Publishes the status of BUS inputs/outputs service.
2984
+ *
2985
+ * The latest status message is persisted NATS JetStream, documented in `x-nats-jetstream-stream`.
2986
+ *
2987
+ * @operationId publishBUSIOStatus
2988
+ */
2989
+ "nova.v2.cells.{cell}.bus-ios.status": BusIOsState;
2990
+ /**
2991
+ * BUS Input/Output Values
2992
+ *
2993
+ * Publishes updates of BUS input/output values.
2994
+ *
2995
+ * @operationId publishBUSIOsIOs
2996
+ */
2997
+ "nova.v2.cells.{cell}.bus-ios.ios": ListIOValuesResponse;
2998
+ /**
2999
+ * Set Output Values
3000
+ *
3001
+ * Set output values published with the BUS inputs/outputs service.
3002
+ * If you're using a virtual service, you can set inputs as well.
3003
+ *
3004
+ * @operationId setBUSIOsIOs
3005
+ */
3006
+ "nova.v2.cells.{cell}.bus-ios.ios.set": ListIOValuesResponse;
3007
+ /**
3008
+ * Select Input/Output Values
3009
+ *
3010
+ * Select input/output values published by the controller.
3011
+ *
3012
+ * @operationId selectRobotControllerIOs
3013
+ */
3014
+ "nova.v2.cells.{cell}.controllers.{controller}.ios.select": SelectIOs;
3015
+ /**
3016
+ * Input/Output Values
3017
+ *
3018
+ * Publishes updates of input/output values.
3019
+ *
3020
+ * @operationId publishRobotControllerIOs
3021
+ */
3022
+ "nova.v2.cells.{cell}.controllers.{controller}.ios": StreamIOValuesResponse;
3023
+ /**
3024
+ * State of Robot Controller
3025
+ *
3026
+ * Publishes the current state of a robot controller.
3027
+ *
3028
+ * @operationId publishRobotControllersState
3029
+ */
3030
+ "nova.v2.cells.{cell}.controllers.{controller}.state": RobotControllerState;
3031
+ /**
3032
+ * Description of Motion Group
3033
+ *
3034
+ * Publishes the description of a motion group, including TCPs, mounting, safety zones, limits, etc.
3035
+ *
3036
+ * @operationId publishMotionGroupDescription
3037
+ */
3038
+ "nova.v2.cells.{cell}.controllers.{controller}.motion-groups.{motion-group}.description": MotionGroupDescription;
3039
+ /**
3040
+ * System Update Started
3041
+ *
3042
+ * Publishes an event when a system update process is initiated.
3043
+ *
3044
+ * This event is triggered once the service-manager begins a system update process,
3045
+ * providing details about the update metadata, trigger information, and pre-update checks.
3046
+ *
3047
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
3048
+ * for reliable delivery and event replay capabilities.
3049
+ *
3050
+ * @operationId eventSystemUpdateStarted
3051
+ */
3052
+ "nova.v2.events.system.update.started": SystemUpdateStartedEvent;
3053
+ /**
3054
+ * System Update Completed
3055
+ *
3056
+ * Publishes an event when a system update process is completed.
3057
+ *
3058
+ * This event is triggered once the service-manager completes a system update process,
3059
+ * providing comprehensive results including success status, component outcomes,
3060
+ * error details, and post-update validation results.
3061
+ *
3062
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
3063
+ * for reliable delivery and event replay capabilities.
3064
+ *
3065
+ * @operationId eventSystemUpdateCompleted
3066
+ */
3067
+ "nova.v2.events.system.update.completed": SystemUpdateCompletedEvent;
3068
+ /**
3069
+ * System Network Status Changed
3070
+ *
3071
+ * Publishes an event when a system network status changes.
3072
+ *
3073
+ * This event is triggered once system-info service detects a change in the system network status,
3074
+ * providing details about the new network state and related information.
3075
+ *
3076
+ * The event follows CloudEvents v1.0 specification and is persisted in NATS JetStream
3077
+ * for reliable delivery and event replay capabilities.
3078
+ *
3079
+ * @operationId eventSystemNetworkStatusChanged
3080
+ */
3081
+ "nova.v2.events.system.network.status.changed": NetworkStatusChangedEvent;
3082
+ /**
3083
+ * Cell Created
3084
+ *
3085
+ * Publishes an event when a cell foundation release is created.
3086
+ *
3087
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3088
+ *
3089
+ * @operationId eventCellCreated
3090
+ */
3091
+ "nova.v2.events.cells.{cell}.created": CellCreatedEvent;
3092
+ /**
3093
+ * Cell Updated
3094
+ *
3095
+ * Publishes an event when a cell foundation release is updated.
3096
+ *
3097
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3098
+ *
3099
+ * @operationId eventCellUpdated
3100
+ */
3101
+ "nova.v2.events.cells.{cell}.updated": CellUpdatedEvent;
3102
+ /**
3103
+ * Cell Deleted
3104
+ *
3105
+ * Publishes an event when a cell foundation release is deleted.
3106
+ *
3107
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3108
+ *
3109
+ * @operationId eventCellDeleted
3110
+ */
3111
+ "nova.v2.events.cells.{cell}.deleted": CellDeletedEvent;
3112
+ /**
3113
+ * App Created
3114
+ *
3115
+ * Publishes an event when an app release is created in a cell.
3116
+ *
3117
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3118
+ *
3119
+ * @operationId eventAppCreated
3120
+ */
3121
+ "nova.v2.events.cells.{cell}.apps.{app}.created": AppCreatedEvent;
3122
+ /**
3123
+ * App Updated
3124
+ *
3125
+ * Publishes an event when an app release is updated in a cell.
3126
+ *
3127
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3128
+ *
3129
+ * @operationId eventAppUpdated
3130
+ */
3131
+ "nova.v2.events.cells.{cell}.apps.{app}.updated": AppUpdatedEvent;
3132
+ /**
3133
+ * App Deleted
3134
+ *
3135
+ * Publishes an event when an app release is deleted from a cell.
3136
+ *
3137
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3138
+ *
3139
+ * @operationId eventAppDeleted
3140
+ */
3141
+ "nova.v2.events.cells.{cell}.apps.{app}.deleted": AppDeletedEvent;
3142
+ /**
3143
+ * Robot Controller Created
3144
+ *
3145
+ * Publishes an event when a robot controller release is created in a cell.
3146
+ *
3147
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3148
+ *
3149
+ * @operationId eventRobotControllerCreated
3150
+ */
3151
+ "nova.v2.events.cells.{cell}.controllers.{controller}.created": RobotControllerCreatedEvent;
3152
+ /**
3153
+ * Robot Controller Updated
3154
+ *
3155
+ * Publishes an event when a robot controller release is updated in a cell.
3156
+ *
3157
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3158
+ *
3159
+ * @operationId eventRobotControllerUpdated
3160
+ */
3161
+ "nova.v2.events.cells.{cell}.controllers.{controller}.updated": RobotControllerUpdatedEvent;
3162
+ /**
3163
+ * Robot Controller Deleted
3164
+ *
3165
+ * Publishes an event when a robot controller release is deleted from a cell.
3166
+ *
3167
+ * The event follows CloudEvents v1.0 and is persisted in NATS JetStream for reliable delivery and replay capabilities.
3168
+ *
3169
+ * @operationId eventRobotControllerDeleted
3170
+ */
3171
+ "nova.v2.events.cells.{cell}.controllers.{controller}.deleted": RobotControllerDeletedEvent;
3172
+ }
3173
+ type NatsPublishSubject = keyof NatsPublishPayloads;
2181
3174
  //#endregion
2182
3175
  //#region src/lib/experimental/nats/NovaNatsClient.d.ts
2183
3176
  type NovaNatsClientConfig = ConnectionOptions;
3177
+ type NatsMessageHandler<K extends NatsSubscribeSubject> = (payload: NatsSubscribePayloads[K], msg: Msg) => void | Promise<void>;
3178
+ type SubscribeArgs<K extends NatsSubscribeSubject> = keyof NatsOperationParams[K] extends never ? [handler: NatsMessageHandler<K>] : [params: NatsOperationParams[K], handler: NatsMessageHandler<K>];
2184
3179
  /**
2185
3180
  * Typed NATS client for the Wandelbots NOVA messaging API, generated from
2186
3181
  * src/asyncapi.yaml (see scripts/generate-nats-client.ts).
@@ -2189,11 +3184,15 @@ type NovaNatsClientConfig = ConnectionOptions;
2189
3184
  */
2190
3185
  declare class NovaNatsClient {
2191
3186
  readonly config: NovaNatsClientConfig;
2192
- connection: NatsConnection | null;
2193
- constructor(config: NovaNatsClientConfig);
2194
- /** Connects to NATS if not already connected, and returns the connection. */
3187
+ private connectionPromise;
3188
+ constructor(nova: Nova, config?: NovaNatsClientConfig);
3189
+ /**
3190
+ * Connects to NATS if not already connected or connecting, and returns the
3191
+ * connection. Safe to call concurrently: all callers share the same
3192
+ * in-flight connection attempt instead of each starting their own.
3193
+ */
2195
3194
  connect(): Promise<NatsConnection>;
2196
- /** Closes the underlying NATS connection, if open. */
3195
+ /** Closes the underlying NATS connection, if open or connecting. */
2197
3196
  close(): Promise<void>;
2198
3197
  /**
2199
3198
  * Subscribes to a NATS subject published by the server, invoking `handler`
@@ -2203,9 +3202,13 @@ declare class NovaNatsClient {
2203
3202
  * `"nova.v2.cells.{cell}"`, with `{param}` placeholders filled in from
2204
3203
  * `params`.
2205
3204
  *
3205
+ * Errors decoding a message or thrown/rejected by `handler` are caught and
3206
+ * logged per-message, so one bad message doesn't stop later messages on
3207
+ * the same subscription from being handled.
3208
+ *
2206
3209
  * Returns a function that unsubscribes when called.
2207
3210
  */
2208
- subscribe<K extends NatsSubscribeSubject>(subject: K, params: NatsOperationParams[K], handler: (payload: NatsSubscribePayloads[K], msg: Msg) => void): Promise<() => void>;
3211
+ subscribe<K extends NatsSubscribeSubject>(subject: K, ...args: SubscribeArgs<K>): Promise<() => void>;
2209
3212
  /**
2210
3213
  * Sends a request payload for a NATS subject the server receives, and
2211
3214
  * waits for the JSON-decoded reply.
@@ -2217,7 +3220,16 @@ declare class NovaNatsClient {
2217
3220
  request<K extends NatsRequestSubject>(subject: K, params: NatsOperationParams[K], payload: NatsRequestPayloads[K], opts?: {
2218
3221
  timeout?: number;
2219
3222
  }): Promise<NatsReplyPayloads[K]>;
3223
+ /**
3224
+ * Publishes a JSON payload to any NATS subject defined in the spec,
3225
+ * without waiting for a reply.
3226
+ *
3227
+ * `subject` is the subject template as it appears on the wire, e.g.
3228
+ * `"nova.v2.cells.{cell}.bus-ios.ios.set"`, with `{param}` placeholders
3229
+ * filled in from `params`.
3230
+ */
3231
+ publish<K extends NatsPublishSubject>(subject: K, params: NatsOperationParams[K], payload: NatsPublishPayloads[K]): Promise<void>;
2220
3232
  }
2221
3233
  //#endregion
2222
- export { type NatsOperationParams, type NatsReplyPayloads, type NatsRequestPayloads, type NatsRequestSubject, type NatsSubscribePayloads, type NatsSubscribeSubject, NovaNatsClient, type NovaNatsClientConfig };
3234
+ export { type AbbController, type AddVirtualControllerMotionGroupRequest, type App, type AppCreatedEvent, type AppDeletedEvent, type AppEventData, type AppUpdatedEvent, type Box, type BusIOsState, type BusIOsStateEnum, type Capacity, type Capsule, type CartesianLimits, type Cell, type CellCreatedEvent, type CellCycleEvent, type CellDeletedEvent, type CellDescription, type CellEventData, type CellName, type CellUpdatedEvent, type CloudEvent, type Collider, type ColliderDictionary, type ColliderDictionary1, type ColliderDictionary2, type CollisionMotionGroupLink, type CollisionMotionGroupTool, type CollisionMotionGroupTool1, type CollisionSetup, type ContainerEnvironment, type ContainerImage, type ContainerResources, type ContainerStorage, type ControllerNetworkInterface, type ConvexHull, type Cylinder, type DHParameter, type Execute, type Execute1, type FanucController, type IOBooleanValue, type IOFloatValue, type IOIntegerValue, type IOValue, type ImageCredentials, type JoggingDetails, type JoggingPausedByUser, type JoggingPausedNearCollision, type JoggingPausedNearJointLimit, type JoggingPausedNearSingularity, type JoggingPausedOnIO, type JoggingRunning, type JointLimits, type JointTypeEnum, type Joints, type Joints1, type Joints2, type Joints3, type KukaController, type LimitRange, type LimitSet, type LinkChain, type LinkChain1, type ListIOValuesResponse, type Location, type Manufacturer, type MotionGroupDescription, type MotionGroupFromJSON, type MotionGroupFromModel, type MotionGroupModel, type MotionGroupState, type MotionGroupState1, type MotionGroupState_JointLimitReached, type MotionGroupState_JointLimitReached1, type NatsErrorPayload, type NatsOperationParams, type NatsPublishPayloads, type NatsPublishSubject, type NatsReplyPayloads, type NatsRequestPayloads, type NatsRequestSubject, type NatsSubscribePayloads, type NatsSubscribeSubject, type NetworkState, type NetworkStatusChangedEvent, NovaNatsClient, type NovaNatsClientConfig, type OperatingState, type OperationLimits, type OperationMode, type Payload, type PayloadDictionary, type Plane, type Pose, type Pose1, type Pose2, type Pose3, type Pose4, type Pose5, type ProgramRunState, type ProgramRunState1, type ProgramStatus, type Rectangle, type RectangularCapsule, type RobotController, type RobotControllerCreatedEvent, type RobotControllerDeletedEvent, type RobotControllerEventData, type RobotControllerState, type RobotControllerUpdatedEvent, type RobotSystemMode, type RotationVector, type SafetyStateType, type SafetyToolColliders, type SelectIOs, type ServiceGroup, type ServiceStatus, type ServiceStatusList, type ServiceStatusPhase, type ServiceStatusSeverity, type Sphere, type StreamIOValuesResponse, type SystemUpdateCompletedEvent, type SystemUpdateStartedEvent, type TcpOffset, type TcpOffsetDictionary, type TrajectoryDetails, type TrajectoryEnded, type TrajectoryPausedByUser, type TrajectoryPausedOnIO, type TrajectoryRunning, type TrajectoryWaitForIO, type UniversalrobotsController, type Vector3D, type Vector3D1, type Vector3D2, type VirtualController, type YaskawaController, buildNatsServerUrl };
2223
3235
  //# sourceMappingURL=index.d.cts.map