abb-rws-client 0.2.0 → 0.7.1

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 (71) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +364 -143
  3. package/dist/HttpSession.d.ts.map +1 -1
  4. package/dist/HttpSession.js +18 -1
  5. package/dist/HttpSession.js.map +1 -1
  6. package/dist/IRWSAdapter.d.ts +421 -0
  7. package/dist/IRWSAdapter.d.ts.map +1 -0
  8. package/dist/IRWSAdapter.js +2 -0
  9. package/dist/IRWSAdapter.js.map +1 -0
  10. package/dist/Logger.d.ts +35 -0
  11. package/dist/Logger.d.ts.map +1 -0
  12. package/dist/Logger.js +24 -0
  13. package/dist/Logger.js.map +1 -0
  14. package/dist/MultiRobotManager.d.ts +56 -0
  15. package/dist/MultiRobotManager.d.ts.map +1 -0
  16. package/dist/MultiRobotManager.js +129 -0
  17. package/dist/MultiRobotManager.js.map +1 -0
  18. package/dist/RWS1Adapter.d.ts +297 -0
  19. package/dist/RWS1Adapter.d.ts.map +1 -0
  20. package/dist/RWS1Adapter.js +870 -0
  21. package/dist/RWS1Adapter.js.map +1 -0
  22. package/dist/RWS2Adapter.d.ts +20 -0
  23. package/dist/RWS2Adapter.d.ts.map +1 -0
  24. package/dist/RWS2Adapter.js +19 -0
  25. package/dist/RWS2Adapter.js.map +1 -0
  26. package/dist/ResourceMapper.d.ts +226 -2
  27. package/dist/ResourceMapper.d.ts.map +1 -1
  28. package/dist/ResourceMapper.js +286 -3
  29. package/dist/ResourceMapper.js.map +1 -1
  30. package/dist/ResponseParser.d.ts +81 -2
  31. package/dist/ResponseParser.d.ts.map +1 -1
  32. package/dist/ResponseParser.js +309 -3
  33. package/dist/ResponseParser.js.map +1 -1
  34. package/dist/RobotManager.d.ts +536 -0
  35. package/dist/RobotManager.d.ts.map +1 -0
  36. package/dist/RobotManager.js +1523 -0
  37. package/dist/RobotManager.js.map +1 -0
  38. package/dist/RwsClient.d.ts +280 -4
  39. package/dist/RwsClient.d.ts.map +1 -1
  40. package/dist/RwsClient.js +698 -10
  41. package/dist/RwsClient.js.map +1 -1
  42. package/dist/RwsClient2.d.ts +438 -0
  43. package/dist/RwsClient2.d.ts.map +1 -0
  44. package/dist/RwsClient2.js +1672 -0
  45. package/dist/RwsClient2.js.map +1 -0
  46. package/dist/WsSubscriber.d.ts.map +1 -1
  47. package/dist/WsSubscriber.js +18 -11
  48. package/dist/WsSubscriber.js.map +1 -1
  49. package/dist/XhtmlParser.d.ts +24 -0
  50. package/dist/XhtmlParser.d.ts.map +1 -0
  51. package/dist/XhtmlParser.js +56 -0
  52. package/dist/XhtmlParser.js.map +1 -0
  53. package/dist/detect.d.ts +54 -0
  54. package/dist/detect.d.ts.map +1 -0
  55. package/dist/detect.js +187 -0
  56. package/dist/detect.js.map +1 -0
  57. package/dist/index.d.ts +30 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +30 -2
  60. package/dist/index.js.map +1 -1
  61. package/dist/types.d.ts +190 -3
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/types.js +1 -0
  64. package/dist/types.js.map +1 -1
  65. package/examples/01-quickstart-auto.mjs +20 -0
  66. package/examples/02-rws1-explicit.mjs +30 -0
  67. package/examples/03-rws2-explicit.mjs +26 -0
  68. package/examples/04-multi-robot.mjs +35 -0
  69. package/examples/05-remote-control-rmmp.mjs +52 -0
  70. package/examples/06-pull-module-source.mjs +38 -0
  71. package/package.json +31 -5
@@ -0,0 +1,536 @@
1
+ import type { RapidTask, JointTarget, RobTarget, CartesianFull, ElogMessage, FileEntry, SystemInfo, ControllerIdentity, CollisionDetectionState, RapidSymbolProperties, RapidSymbolInfo, RapidSymbolSearchParams, UiInstruction, RestartMode, Signal, IoNetwork, IoDevice } from './types.js';
2
+ /**
3
+ * Listener signature for `onError`. The host (VS Code extension, CLI, etc.) can
4
+ * decide how to surface the error — e.g. `vscode.window.showErrorMessage` with
5
+ * the supplied action labels, or a CLI prompt, or just logging.
6
+ *
7
+ * The promise resolves to the action the user chose, or `undefined` if dismissed.
8
+ * RobotManager respects 'Reconnect' specifically (re-runs connect with the prior config).
9
+ */
10
+ export type ErrorListener = (msg: string, actions: string[]) => Promise<string | undefined>;
11
+ export interface RobotState {
12
+ connected: boolean;
13
+ host: string;
14
+ ctrlstate: string | null;
15
+ opmode: string | null;
16
+ execstate: string | null;
17
+ execCycle: string | null;
18
+ speedRatio: number | null;
19
+ coldetstate: CollisionDetectionState | null;
20
+ tasks: RapidTask[];
21
+ modules: string[];
22
+ mechunits: string[];
23
+ joints: JointTarget | null;
24
+ cartesian: RobTarget | null;
25
+ cartesianFull: CartesianFull | null;
26
+ identity: ControllerIdentity | null;
27
+ systemInfo: SystemInfo | null;
28
+ eventLog: ElogMessage[];
29
+ ioSignals: Signal[];
30
+ }
31
+ export type ChangeHandler = () => void;
32
+ export interface ProbeResult {
33
+ port: number;
34
+ useHttps: boolean;
35
+ authType: 'digest' | 'basic';
36
+ }
37
+ export interface DiscoveredController extends ProbeResult {
38
+ host: string;
39
+ }
40
+ export declare class RobotManager {
41
+ private adapter;
42
+ private adapterConfig;
43
+ private errorListener;
44
+ private _state;
45
+ private handlers;
46
+ private timer;
47
+ /** Unsubscribe function returned by adapter.subscribe(); null when not using WebSockets. */
48
+ private unsubscribeFn;
49
+ /** True when WebSocket subscriptions are active (drives reduced polling interval). */
50
+ private subscriptionActive;
51
+ /** In-flight connect promise — used to dedupe rapid-clicks so we never run two connects in parallel. */
52
+ private connectingPromise;
53
+ /** Monotonic counter so old polling timers can detect they've been superseded and self-cancel. */
54
+ private pollGeneration;
55
+ get state(): RobotState;
56
+ /** The port currently in use (or last attempted). Useful for persisting auto-recovered port changes. */
57
+ get currentPort(): number | undefined;
58
+ /** The HTTPS flag matching `currentPort`. */
59
+ get currentUseHttps(): boolean | undefined;
60
+ onDidChange(fn: ChangeHandler): void;
61
+ private notify;
62
+ /**
63
+ * Install an error listener. Called when the manager auto-disconnects after 3 failed
64
+ * polls. Hosts can route to UI dialogs (vscode.window.showErrorMessage), prompts, or
65
+ * alerting systems. The listener returns the chosen action; only 'Reconnect' is acted
66
+ * on internally — others are passed through for the host to handle.
67
+ */
68
+ onError(fn: ErrorListener): void;
69
+ private static probePort;
70
+ /** Common ports to check on any host. */
71
+ private static readonly PROBE_PORTS;
72
+ /** Returns ALL responding controllers on a single host. */
73
+ static detectAllControllers(host: string): Promise<ProbeResult[]>;
74
+ /**
75
+ * Scan a set of standard ABB hosts for any responding RWS controller.
76
+ * Uses a shorter timeout (1.5 s) for snappy discovery UX.
77
+ * Returns every found controller with its host attached.
78
+ *
79
+ * If nothing is found on 127.0.0.1 via standard ports, falls back to a wide
80
+ * TCP scan of the local-VC port range — this catches RobotStudio VCs whose
81
+ * ports are randomly assigned each startup.
82
+ */
83
+ static discoverControllers(extraHosts?: string[]): Promise<DiscoveredController[]>;
84
+ /** Returns only the first responding controller (used internally during connect). */
85
+ static detectController(host: string): Promise<ProbeResult | null>;
86
+ /**
87
+ * Probe an exact host:port to discover its auth type and protocol.
88
+ * Tries HTTPS first (most OmniCore VCs use it), then HTTP.
89
+ * Returns null only if neither responds — protects against guessing wrong
90
+ * (e.g. RobotStudio-assigned port 5466 is HTTPS but doesn't fit any heuristic).
91
+ */
92
+ static probeSpecificPort(host: string, port: number): Promise<ProbeResult | null>;
93
+ /** Fast TCP-only check to see if a port is accepting connections. */
94
+ private static tcpPing;
95
+ /**
96
+ * Wide-range port scan for RobotStudio VCs whose ports get reassigned each restart.
97
+ * Two-phase: TCP probe everything fast, then HTTP-probe only ports that responded.
98
+ *
99
+ * Uses a sliding-window worker pool to keep concurrency below the OS socket limit
100
+ * (Windows in particular drops connections silently above ~500 concurrent sockets).
101
+ *
102
+ * Heavy operation — only call when standard-port detection finds nothing.
103
+ * Prefer host=127.0.0.1; scanning a remote host this aggressively is rude.
104
+ */
105
+ static wideHostScan(host: string): Promise<DiscoveredController[]>;
106
+ /**
107
+ * Connect to a controller.
108
+ * @param port If provided, skip auto-detection and use this port directly.
109
+ * Required when two controllers share the same host IP.
110
+ * @param useHttps If provided alongside port, sets the protocol explicitly.
111
+ *
112
+ * Rapid duplicate calls are coalesced — concurrent callers receive the same
113
+ * in-flight promise. Without this, fast double-clicks would spawn parallel
114
+ * adapters/timers and overwhelm the controller's session pool.
115
+ */
116
+ connect(host: string, username: string, password: string, port?: number, useHttps?: boolean): Promise<void>;
117
+ private doConnect;
118
+ disconnect(): Promise<void>;
119
+ refresh(): Promise<void>;
120
+ setMotorsOn(): Promise<void>;
121
+ setMotorsOff(): Promise<void>;
122
+ setSpeedRatio(ratio: number): Promise<void>;
123
+ lockOperationMode(pin: string, permanent?: boolean): Promise<void>;
124
+ unlockOperationMode(): Promise<void>;
125
+ /**
126
+ * Switch operation mode (AUTO/MANR/MANF). VC-only — real hardware respects
127
+ * the FlexPendant key switch.
128
+ *
129
+ * State-machine constraints (ABB safety design):
130
+ * AUTO ↔ MANR: direct transition allowed.
131
+ * MANR ↔ MANF: direct transition allowed.
132
+ * AUTO ↔ MANF: NOT allowed direct — must go through MANR.
133
+ * Controller rejects with HTTP 500 "Operation failed" on the direct call.
134
+ * We auto-handle this by routing through MANR (two POSTs).
135
+ *
136
+ * Privilege:
137
+ * Going TO MANR/MANF: usually works without mastership (safer direction).
138
+ * Going TO AUTO: requires `edit` mastership + a confirmation popup on the
139
+ * FlexPendant. We wrap with mastership; the popup must be approved
140
+ * manually (no API path bypasses it — verified live).
141
+ */
142
+ setOperationMode(mode: 'AUTO' | 'MANR' | 'MANF'): Promise<void>;
143
+ /** Single hop. Used internally + as the building block for multi-hop transitions. */
144
+ private setOpmodeOnce;
145
+ /**
146
+ * Wrap an op with auto-acquire-and-release of 'rapid'/'edit' mastership.
147
+ *
148
+ * NOTE: We deliberately do NOT proactively check RMMP here. Doing so caused
149
+ * false-positive errors when:
150
+ * - the controller is in AUTO mode and grants are sufficient without RMMP
151
+ * - the logged-in user lacks UAS grant to even *request* RMMP
152
+ * - the controller is a VC with no FlexPendant target for the popup
153
+ *
154
+ * Mastership-only is the right default. If the op fails because RMMP is
155
+ * actually missing, the caller's error handler can offer a Request-RMMP
156
+ * action — but it's a recovery path, not a precondition.
157
+ */
158
+ private withMastership;
159
+ /** Get current RMMP — 'none' / 'pending modify' / 'modify' / 'exclusive'. */
160
+ getRmmpPrivilege(): Promise<string>;
161
+ /** Request RMMP — triggers a FlexPendant popup that the operator must approve. */
162
+ requestRmmp(level?: 'modify' | 'exclusive'): Promise<void>;
163
+ /**
164
+ * Tracks the last PP target the user explicitly chose via setPPToRoutine.
165
+ * Used by startRapid() to re-apply on next start when execstate is 'stopped'.
166
+ * Reason: when a routine completes (e.g. has `Stop;` at end, or cycle=once),
167
+ * PP advances past the routine's last instruction. The next Start with
168
+ * `execmode=continue` then does nothing visible — controller accepts the
169
+ * call (HTTP 204) but there's nothing left to execute.
170
+ * By re-applying the target on each Start-from-stopped, the user's mental
171
+ * model becomes "Start runs the routine I picked" — every time.
172
+ * Cleared by resetRapid() (PP-to-Main) so the user can then run main again.
173
+ */
174
+ private lastPPTarget;
175
+ /**
176
+ * Start RAPID execution.
177
+ * If the program is currently stopped AND the user previously set PP to a
178
+ * specific routine via setPPToRoutine(), we re-apply that target before
179
+ * starting. This makes "Start" reliable across multiple clicks: the chosen
180
+ * routine runs from the top each time the program has finished and is
181
+ * idle.
182
+ * If the program is paused mid-execution (e.g. user hit Stop in the middle
183
+ * of a long routine), the PP target is NOT re-applied — Start resumes
184
+ * from where the user stopped.
185
+ * Detection: if PP currently lives in `lastPPTarget.routine`, we assume
186
+ * the user is in the "ran-then-stopped" state (PP at end-of-routine).
187
+ * If PP is in some other routine (controller moved it for an interrupt,
188
+ * trap, etc.), we leave it alone.
189
+ */
190
+ startRapid(): Promise<void>;
191
+ /** Active task name. We currently target T_ROB1; future: track multi-task. */
192
+ private activeTaskName;
193
+ stopRapid(): Promise<void>;
194
+ resetRapid(): Promise<void>;
195
+ setExecutionCycle(cycle: 'once' | 'forever' | 'asis'): Promise<void>;
196
+ activateRapidTask(task: string): Promise<void>;
197
+ deactivateRapidTask(task: string): Promise<void>;
198
+ activateAllRapidTasks(): Promise<void>;
199
+ deactivateAllRapidTasks(): Promise<void>;
200
+ getRapidVariable(task: string, module: string, symbol: string): Promise<string>;
201
+ setRapidVariable(task: string, module: string, symbol: string, value: string): Promise<void>;
202
+ validateRapidValue(task: string, value: string, datatype: string): Promise<boolean>;
203
+ getRapidSymbolProperties(task: string, module: string, symbol: string): Promise<RapidSymbolProperties>;
204
+ searchRapidSymbols(params: RapidSymbolSearchParams): Promise<RapidSymbolInfo[]>;
205
+ /**
206
+ * Detailed list of loaded modules — each entry has `name` + `type` (SysMod / ProgMod).
207
+ * Used by the Modules tree to render system vs program modules differently.
208
+ * Falls back to bare names from `listModules` if the adapter doesn't support details.
209
+ */
210
+ listModulesDetailed(task: string): Promise<Array<{
211
+ name: string;
212
+ type: string;
213
+ }>>;
214
+ /**
215
+ * Current program-pointer location for a task (module + routine + line).
216
+ * Returns null if the controller can't currently report a PP (e.g. no
217
+ * program loaded). Surfaces the data the Modules tree uses to highlight
218
+ * which routine is "active".
219
+ */
220
+ getCurrentPP(task: string): Promise<{
221
+ module?: string;
222
+ routine?: string;
223
+ row?: number;
224
+ col?: number;
225
+ } | null>;
226
+ /**
227
+ * List the routines (PROCs, FUNCs, TRAPs) defined in a loaded module.
228
+ * Uses the controller's symbol search rather than parsing the source —
229
+ * works even when the module file isn't on disk anymore (e.g. it was
230
+ * loaded then the file was deleted / never persisted).
231
+ *
232
+ * Returns: array of `{ name, symtyp }` where `symtyp` is one of:
233
+ * - 'prc' procedure (no return value, callable)
234
+ * - 'fun' function (returns a value)
235
+ * - 'trp' trap (interrupt handler)
236
+ * Routines from the controller's BASE / system modules are NOT included
237
+ * unless `includeSystem=true`.
238
+ */
239
+ listRoutines(task: string, moduleName: string, includeSystem?: boolean): Promise<Array<{
240
+ name: string;
241
+ symtyp: string;
242
+ symburl: string;
243
+ local: boolean;
244
+ }>>;
245
+ /**
246
+ * Set the program pointer to a specific routine, optionally in a specific module.
247
+ * If `module` is omitted, the controller picks based on its current scope.
248
+ * Wraps with `edit`/`rapid` mastership.
249
+ *
250
+ * After this returns successfully, the user can click Start and execution
251
+ * will begin at this routine instead of `main`.
252
+ */
253
+ setPPToRoutine(task: string, moduleName: string, routine: string): Promise<void>;
254
+ getActiveUiInstruction(): Promise<UiInstruction | null>;
255
+ setUiInstructionParam(stackurl: string, uiparam: string, value: string): Promise<void>;
256
+ listDirectory(remotePath: string): Promise<FileEntry[]>;
257
+ readFile(remotePath: string): Promise<string>;
258
+ deleteControllerFile(remotePath: string): Promise<void>;
259
+ /**
260
+ * Create a directory on the controller filesystem.
261
+ * If `parentPath` itself doesn't exist, recursively creates the missing
262
+ * parents under the volume root ($HOME / HOME / BACKUP / …). This is
263
+ * mkdir -p semantics — friendlier than the bare ABB endpoint which
264
+ * returns 404 "Path does not exist" if any intermediate is missing.
265
+ */
266
+ createDirectory(parentPath: string, dirName: string): Promise<void>;
267
+ /**
268
+ * Walk down `path` from the volume root, creating each missing segment.
269
+ * Volumes ($HOME, HOME, BACKUP, DATA, …) themselves are NEVER created —
270
+ * they're controller-managed.
271
+ */
272
+ private ensureDirectory;
273
+ copyControllerFile(sourcePath: string, destPath: string): Promise<void>;
274
+ refreshEventLog(): Promise<void>;
275
+ clearEventLog(): Promise<void>;
276
+ clearAllEventLogs(): Promise<void>;
277
+ restartController(mode: RestartMode): Promise<void>;
278
+ getControllerClock(): Promise<string>;
279
+ setControllerClock(year: number, month: number, day: number, hour: number, min: number, sec: number): Promise<void>;
280
+ refreshIoSignals(): Promise<void>;
281
+ writeIoSignal(name: string, value: string): Promise<void>;
282
+ readIoSignal(network: string, device: string, name: string): Promise<Signal>;
283
+ listNetworks(): Promise<IoNetwork[]>;
284
+ listDevices(network: string): Promise<IoDevice[]>;
285
+ /**
286
+ * Upload a single .mod / .sys file and load it into a task.
287
+ *
288
+ * Behavior:
289
+ * 1. Stop RAPID briefly so the symbol table isn't being mutated mid-load.
290
+ * 2. **If a module with the same name (= file basename without ext) is
291
+ * already loaded, unload it first.** Live-verified gotcha: passing
292
+ * `replace=true` to loadmod refreshes the *file* but the program's
293
+ * symbol table still references the OLD module's procedures, so
294
+ * `resetRapid()` afterwards reports "no main" even though the new
295
+ * file has one. Explicit unload + load fixes this.
296
+ * 3. Upload the file to $HOME (or HOME/ on RWS 2.0 — adapter rewrites).
297
+ * 4. loadModule the new file.
298
+ * 5. **If the new module declares `PROC main()`, auto-call PP-to-Main.**
299
+ * This restores the original v0.1 ergonomics without the destructive
300
+ * behavior the earlier loadProgram had — the user can immediately
301
+ * click Start. Failures during the auto-resetpp are swallowed (the
302
+ * module loaded fine; the user can manually click PP-to-Main if
303
+ * needed). Detect by regex over the file content.
304
+ * 6. **Does NOT unload OTHER modules.** Old versions unloaded every
305
+ * non-system module, which destroyed the controller's pre-existing
306
+ * program (e.g. OmniCore's `Module1`).
307
+ */
308
+ loadProgram(localFilePath: string, taskName: string): Promise<void>;
309
+ /** @deprecated use loadProgram */
310
+ uploadAndLoad(p: string, t: string): Promise<void>;
311
+ /**
312
+ * Unload a single RAPID module from a task. Useful for resolving a
313
+ * `main`-proc collision: if two modules both define `PROC main()`, RWS
314
+ * refuses PP-to-Main with a semantic error — unload one and the other
315
+ * becomes the program's entry point.
316
+ */
317
+ unloadModule(taskName: string, moduleName: string): Promise<void>;
318
+ getLicenseInfo(): Promise<{
319
+ entries: Array<Record<string, string>>;
320
+ } | {
321
+ entries: never[];
322
+ }>;
323
+ listProducts(): Promise<never[] | Record<string, string>[]>;
324
+ getRobotType(): Promise<{
325
+ type: string;
326
+ variant?: string;
327
+ }>;
328
+ getEnergyStats(): Promise<{}>;
329
+ getReturnCode(code: number, lang?: string): Promise<{
330
+ code: number;
331
+ title: string;
332
+ desc: string;
333
+ } | null>;
334
+ listControllerOptions(): Promise<never[] | {
335
+ name: string;
336
+ description?: string;
337
+ }[]>;
338
+ listFeatures(): Promise<never[] | Record<string, string>[]>;
339
+ getMotionChangeCount(): Promise<number>;
340
+ getMotionErrorState(): Promise<{
341
+ state: string;
342
+ details?: Record<string, string>;
343
+ } | {
344
+ state: string;
345
+ }>;
346
+ getNonMotionExecution(): Promise<boolean>;
347
+ setNonMotionExecution(enabled: boolean): Promise<void | undefined>;
348
+ getCollisionPredictionMode(): Promise<string>;
349
+ setCollisionPredictionMode(m: string): Promise<void | undefined>;
350
+ getEnableRequest(): Promise<{
351
+ state: string;
352
+ raw: Record<string, string>;
353
+ } | {
354
+ state: string;
355
+ raw: {};
356
+ }>;
357
+ listAliasIO(): Promise<never[] | {
358
+ alias: string;
359
+ signal: string;
360
+ }[]>;
361
+ getTaskSelection(): Promise<{
362
+ selected: string[];
363
+ available: string[];
364
+ } | {
365
+ selected: never[];
366
+ available: never[];
367
+ }>;
368
+ setTaskSelection(tasks: string[]): Promise<void | undefined>;
369
+ getProgramPointer(task: string): Promise<{
370
+ module?: string;
371
+ routine?: string;
372
+ row?: number;
373
+ col?: number;
374
+ }>;
375
+ getMotionPointer(task: string): Promise<{
376
+ module?: string;
377
+ routine?: string;
378
+ row?: number;
379
+ col?: number;
380
+ }>;
381
+ listCfgDomains(): Promise<string[] | never[]>;
382
+ listCfgTypes(d: string): Promise<string[] | never[]>;
383
+ listCfgInstances(d: string, t: string): Promise<string[] | never[]>;
384
+ getCfgInstance(d: string, t: string, i: string): Promise<{}>;
385
+ setCfgInstance(d: string, t: string, i: string, attrs: Record<string, string>): Promise<void>;
386
+ createCfgInstance(d: string, t: string, i: string, attrs: Record<string, string>): Promise<void>;
387
+ removeCfgInstance(d: string, t: string, i: string): Promise<void>;
388
+ loadCfgFile(filepath: string, action?: 'add' | 'replace' | 'add-with-reset'): Promise<void>;
389
+ saveCfgFile(domain: string, filepath: string): Promise<void>;
390
+ listBackups(): Promise<never[] | {
391
+ name: string;
392
+ created?: string;
393
+ size?: number;
394
+ }[]>;
395
+ createBackup(n: string): Promise<void>;
396
+ restoreBackup(n: string): Promise<void>;
397
+ getBackupStatus(): Promise<{
398
+ active: boolean;
399
+ progress?: number;
400
+ phase?: string;
401
+ }>;
402
+ getModuleInfo(task: string, moduleName: string): Promise<Record<string, string>>;
403
+ callServiceRoutine(task: string, routineName: string, args?: Record<string, string>): Promise<void>;
404
+ setActiveTool(mechunit: string, toolName: string): Promise<void>;
405
+ setActiveWobj(mechunit: string, wobjName: string): Promise<void>;
406
+ listDipcQueues(): Promise<{
407
+ name: string;
408
+ size?: number;
409
+ }[]>;
410
+ createDipcQueue(name: string, options?: {
411
+ maxsize?: number;
412
+ maxmessages?: number;
413
+ }): Promise<void>;
414
+ sendDipcMessage(queue: string, payload: string, type?: 'string' | 'num' | 'dnum' | 'bool'): Promise<void>;
415
+ readDipcMessage(queue: string, timeoutMs?: number): Promise<{
416
+ payload: string;
417
+ type: string;
418
+ } | null>;
419
+ removeDipcQueue(name: string): Promise<void>;
420
+ listFileVolumes(): Promise<string[]>;
421
+ compressPath(source: string, destination: string): Promise<void>;
422
+ getActiveTool(m?: string): Promise<{
423
+ name: string;
424
+ data?: Record<string, string>;
425
+ } | {
426
+ name: string;
427
+ }>;
428
+ getActiveWobj(m?: string): Promise<{
429
+ name: string;
430
+ data?: Record<string, string>;
431
+ } | {
432
+ name: string;
433
+ }>;
434
+ getActivePayload(m?: string): Promise<{
435
+ name: string;
436
+ data?: Record<string, string>;
437
+ } | {
438
+ name: string;
439
+ }>;
440
+ listVisionSystems(): Promise<never[] | {
441
+ name: string;
442
+ status?: string;
443
+ }[]>;
444
+ getSafetyStatus(): Promise<{
445
+ state: string;
446
+ details?: Record<string, string>;
447
+ } | {
448
+ state: string;
449
+ }>;
450
+ getVirtualTime(): Promise<{
451
+ time: number;
452
+ running: boolean;
453
+ } | {
454
+ time: number;
455
+ running: boolean;
456
+ }>;
457
+ setVirtualTimeRunning(r: boolean): Promise<void | undefined>;
458
+ setVirtualTimeScale(s: number): Promise<void | undefined>;
459
+ getMechunitBaseFrame(m?: string): Promise<{
460
+ x: number;
461
+ y: number;
462
+ z: number;
463
+ q1: number;
464
+ q2: number;
465
+ q3: number;
466
+ q4: number;
467
+ } | null>;
468
+ getMechunitAxes(m?: string): Promise<never[] | Record<string, string>[]>;
469
+ getMechunitInfo(m?: string): Promise<{}>;
470
+ getTaskStructuralChangeCount(t: string): Promise<number>;
471
+ getTaskMotion(t: string): Promise<{}>;
472
+ getTaskActivationRecord(t: string): Promise<{}>;
473
+ getTaskProgramInfo(t: string): Promise<{}>;
474
+ getModuleSource(t: string, n: string): Promise<string>;
475
+ listModuleSymbols(t: string, n: string): Promise<never[] | {
476
+ name: string;
477
+ type: string;
478
+ dattyp?: string;
479
+ }[]>;
480
+ calcJointsFromCartesian(pos: RobTarget, seedJoints?: JointTarget, mechunit?: string): Promise<JointTarget>;
481
+ calcCartesianFromJoints(joints: JointTarget, mechunit?: string, tool?: string, wobj?: string): Promise<RobTarget>;
482
+ listSystemDevices(): Promise<Array<{
483
+ id: string;
484
+ name: string;
485
+ }>>;
486
+ listAllIoDevices(): Promise<Array<{
487
+ name: string;
488
+ network: string;
489
+ lstate: string;
490
+ pstate: string;
491
+ address: string;
492
+ }>>;
493
+ requestMastershipAll(): Promise<void>;
494
+ releaseMastershipAll(): Promise<void>;
495
+ requestMastershipWithId(domain: 'rapid' | 'cfg' | 'motion'): Promise<number>;
496
+ releaseMastershipWithId(domain: 'rapid' | 'cfg' | 'motion', id: number): Promise<void>;
497
+ resetMastershipWatchdog(): Promise<void>;
498
+ /** Query who currently holds mastership on a domain. Returns null if adapter doesn't support it. */
499
+ getMastershipStatus(domain?: 'rapid' | 'cfg' | 'motion'): Promise<{
500
+ mastership: string;
501
+ uid?: string;
502
+ application?: string;
503
+ } | null>;
504
+ /** Tracks whether motion mastership is currently held — avoids redundant requests on rapid jog clicks. */
505
+ private motionMastershipHeld;
506
+ private jogReleaseTimer;
507
+ /**
508
+ * Jog the robot. Wraps the adapter call with safety checks and mastership.
509
+ * Requests motion mastership on first call, releases 2s after the last call
510
+ * (so rapid successive jogs don't churn mastership).
511
+ */
512
+ jog(params: {
513
+ mode: 'Joint' | 'Cartesian';
514
+ axes: [number, number, number, number, number, number];
515
+ speed: number;
516
+ mechunit?: string;
517
+ }): Promise<void>;
518
+ /** Release motion mastership immediately (called by disconnect and the auto-release timer). */
519
+ private releaseJogMastership;
520
+ downloadModule(moduleName: string): Promise<string>;
521
+ /**
522
+ * Subscribe to state-change events for instant UI updates.
523
+ * Non-fatal: if subscriptions fail (e.g. controller doesn't support WS),
524
+ * polling covers all state at full frequency.
525
+ */
526
+ private startSubscriptions;
527
+ private handleSubscriptionEvent;
528
+ private loadSessionCookie;
529
+ private saveSessionCookie;
530
+ private fetchCount;
531
+ /** Consecutive poll failures — only disconnects after 3, so transient blips don't drop the connection. */
532
+ private consecutiveFails;
533
+ private fetchInFlight;
534
+ private fetchAll;
535
+ }
536
+ //# sourceMappingURL=RobotManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RobotManager.d.ts","sourceRoot":"","sources":["../src/RobotManager.ts"],"names":[],"mappings":"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"}