abb-rws-client 0.5.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 (63) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +174 -15
  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 +9 -2
  27. package/dist/ResourceMapper.d.ts.map +1 -1
  28. package/dist/ResourceMapper.js +11 -3
  29. package/dist/ResourceMapper.js.map +1 -1
  30. package/dist/RobotManager.d.ts +536 -0
  31. package/dist/RobotManager.d.ts.map +1 -0
  32. package/dist/RobotManager.js +1523 -0
  33. package/dist/RobotManager.js.map +1 -0
  34. package/dist/RwsClient.d.ts +33 -3
  35. package/dist/RwsClient.d.ts.map +1 -1
  36. package/dist/RwsClient.js +74 -10
  37. package/dist/RwsClient.js.map +1 -1
  38. package/dist/RwsClient2.d.ts +438 -0
  39. package/dist/RwsClient2.d.ts.map +1 -0
  40. package/dist/RwsClient2.js +1672 -0
  41. package/dist/RwsClient2.js.map +1 -0
  42. package/dist/XhtmlParser.d.ts +24 -0
  43. package/dist/XhtmlParser.d.ts.map +1 -0
  44. package/dist/XhtmlParser.js +56 -0
  45. package/dist/XhtmlParser.js.map +1 -0
  46. package/dist/detect.d.ts +54 -0
  47. package/dist/detect.d.ts.map +1 -0
  48. package/dist/detect.js +187 -0
  49. package/dist/detect.js.map +1 -0
  50. package/dist/index.d.ts +29 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +30 -2
  53. package/dist/index.js.map +1 -1
  54. package/dist/types.d.ts +2 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js.map +1 -1
  57. package/examples/01-quickstart-auto.mjs +20 -0
  58. package/examples/02-rws1-explicit.mjs +30 -0
  59. package/examples/03-rws2-explicit.mjs +26 -0
  60. package/examples/04-multi-robot.mjs +35 -0
  61. package/examples/05-remote-control-rmmp.mjs +52 -0
  62. package/examples/06-pull-module-source.mjs +38 -0
  63. package/package.json +30 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,171 @@
1
+ # Changelog
2
+
3
+ All notable changes to `abb-rws-client` are documented here.
4
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.7.1] — 2026-05-07
8
+
9
+ ### Added
10
+
11
+ - **RMMP (Remote Mastership Privilege)** is now part of the public `RobotManager`
12
+ surface — `getRmmpPrivilege()` and `requestRmmp(level)`. The `withMastership()`
13
+ helper now also gates on RMMP, so any modify operation in AUTO mode will
14
+ automatically request RMMP and surface an actionable error ("approve the
15
+ popup on the FlexPendant") when the operator hasn't granted remote control
16
+ yet. This matches RobotStudio Online's behaviour and removes the most common
17
+ cause of mastership-acquired-but-403 failures.
18
+ - **Service-routine / arbitrary PROC call** — `callServiceRoutine(task, name,
19
+ args?)` lets a remote client kick off a service routine (calibration, brake
20
+ check, custom service procs) without going through the FlexPendant's
21
+ Service Routine menu.
22
+ - **Tool / Work-object activation** — `setActiveTool(mechunit, name)` and
23
+ `setActiveWobj(mechunit, name)` switch the active persistent tooldata /
24
+ wobjdata mid-session.
25
+ - **Module metadata** — `getModuleInfo(task, module)` exposed publicly (was
26
+ adapter-only). Returns path, attributes, type, line count.
27
+ - **Backup restore** — `restoreBackup(name)` exposed publicly (was adapter-only).
28
+ - **Backup status** type-narrowed — `getBackupStatus()` now returns the full
29
+ `{ active; progress?; phase? }` shape on every code path (no more union
30
+ with bare `{ active }`).
31
+ - **CFG write surface** exposed publicly with mastership wrapping —
32
+ `setCfgInstance`, `createCfgInstance`, `removeCfgInstance`, `loadCfgFile`,
33
+ `saveCfgFile`. Each acquires `'edit'` mastership for the duration of the
34
+ call.
35
+ - **DIPC public API** — `listDipcQueues`, `createDipcQueue`, `sendDipcMessage`,
36
+ `readDipcMessage`, `removeDipcQueue` exposed on `RobotManager`.
37
+ - **File volumes** — `listFileVolumes()` returns the controller's available
38
+ volumes (HOME, BACKUP, DATA, ADDINDATA, PRODUCTS, RAMDISK, TEMP).
39
+ - **Compress** — `compressPath(source, destination)` for archiving controller
40
+ files in-place.
41
+ - **Mastership status** — `getMastershipStatus(domain)` returns
42
+ `{ mastership; uid?; application? }`. Useful for diagnosing 403s ("which
43
+ client / FlexPendant is currently holding the lock?").
44
+
45
+ ### Improved
46
+
47
+ - `getRobotType`, `getProgramPointer`, `getMotionPointer` now have explicit
48
+ return-type annotations on the `RobotManager` wrappers — TypeScript no
49
+ longer collapses the empty-default into a property-less union.
50
+
51
+ ### No breaking changes
52
+
53
+ - All additions are new methods or default-no-op widening. Existing callers
54
+ using `RobotManager` keep working without any changes.
55
+
56
+ ## [0.7.0] — 2026-05-06
57
+
58
+ This release adds RWS 2.0 (OmniCore / RobotWare 7) support, multi-robot
59
+ management, auto-detection helpers, and a full set of higher-level building
60
+ blocks. The package now legitimately covers BOTH RWS protocols ABB ships,
61
+ including the long-tail endpoints (devices, all-IO-devices, mastership
62
+ extras, forward kinematics) that were missing from prior versions.
63
+
64
+ ### Added
65
+
66
+ - **`RwsClient2`** — RWS 2.0 protocol client for OmniCore controllers.
67
+ HTTP Basic auth, XHTML responses (`Accept: application/xhtml+xml;v=2.0`),
68
+ path-based actions (`/rw/rapid/execution/stop`), `'edit'` mastership
69
+ domain, `HOME` file-service prefix, self-signed-TLS tolerance for VCs,
70
+ WebSocket subscriptions via `robapi2_subscription` subprotocol.
71
+
72
+ - **`IRWSAdapter`** — common interface implemented by both RWS 1.0 and 2.0
73
+ adapters. ~140 methods covering panel, RAPID exec, modules, variables,
74
+ motion, system, event log, I/O, file service, CFG database, mastership,
75
+ backup, DIPC, vision, safety, virtual time, certs, registry, jog, IK/FK.
76
+
77
+ - **`RWS1Adapter`** / **`RWS2Adapter`** — wrappers that satisfy `IRWSAdapter`
78
+ on top of `RwsClient` and `RwsClient2` respectively. Use these when you
79
+ want a single typed handle that works across both protocols.
80
+
81
+ - **`RobotManager`** — high-level connection lifecycle: auto port discovery,
82
+ protocol auto-detection, polling, WebSocket subscriptions with polling
83
+ fallback, reconnect-on-failure, state events. `onError` listener lets the
84
+ host (CLI / UI) decide how to surface failures.
85
+
86
+ - **`MultiRobotManager`** — orchestrates several `RobotManager` instances.
87
+ Tracks an "active" robot for UIs that show one at a time, while polling
88
+ state for all. `onError` cascades to every existing and future robot.
89
+
90
+ - **`createClient(opts)`** / **`createAdapter(opts)`** — auto-detect helpers
91
+ that probe the WWW-Authenticate header and return the matching client
92
+ (or `IRWSAdapter`) already connected. Probes common RWS ports if `port`
93
+ is omitted (5466, 9403, 443, 80, 11811).
94
+
95
+ - **`probeProtocol(host, port, https)`** / **`probeHost(host)`** — lower-level
96
+ protocol detection for callers that want explicit control.
97
+
98
+ - **Mastership extras** (RWS 2.0 + partial RWS 1.0):
99
+ - `requestMastershipAll()` / `releaseMastershipAll()` — all-domains in one call
100
+ - `requestMastershipWithId(domain)` / `releaseMastershipWithId(domain, id)` —
101
+ token-based mastership that survives session loss; useful for clients
102
+ that periodically reconnect (RWS 2.0 only)
103
+ - `resetMastershipWatchdog()` — heartbeat for RobotWare 7.8+ during long
104
+ RAPID runs
105
+ - `getMastershipStatus(domain)` / `listMastershipDomains()` — read state
106
+
107
+ - **Devices** — both `/rw/devices` (system hardware/software inventory) and
108
+ `/rw/iosystem/devices` (all configured I/O devices across networks):
109
+ - `listSystemDevices()` — top-level groupings (HW_DEVICES, SW_RESOURCES)
110
+ - `getDeviceTree(group)` — drill into a group
111
+ - `listAllIoDevices()` — flat list of every I/O device with state
112
+
113
+ - **Forward Kinematics** — `calcCartesianFromJoints(joints, mechunit?, tool?, wobj?)`,
114
+ the missing mirror of `calcJointsFromCartesian`. Same VC-license caveat as IK:
115
+ virtual controllers without PC Interface 616-1 reject the call (clean error
116
+ message; no NaN leakage).
117
+
118
+ - **`XhtmlParser`** — exported for advanced users parsing RWS 2.0 responses
119
+ manually. Handles span / li / state extraction with regex.
120
+
121
+ - **`setLogger(impl)`** — pluggable logging interface. The lib ships with a
122
+ no-op default; hosts (e.g. the VS Code extension) install their own
123
+ backend (output channel, console, file, etc.).
124
+
125
+ - **`RwsErrorCode`**: new value `'PROTOCOL_DETECT_FAILED'` for cases where
126
+ no RWS endpoint answers on the probed port(s).
127
+
128
+ - `examples/` directory with four scripts: quickstart-auto, rws1-explicit,
129
+ rws2-explicit, multi-robot.
130
+
131
+ ### Changed
132
+
133
+ - **README** rewritten for dual-protocol support. Quick Start now uses
134
+ `createClient` for the typical case; explicit-protocol usage documented.
135
+
136
+ - **`RwsClient.disconnect()`** now calls `GET /logout` server-side before
137
+ clearing the local session. Without this, the controller-side session
138
+ lingered for several minutes, holding any acquired mastership and
139
+ filling the controller's session pool. Live-verified.
140
+
141
+ - **`RwsClient` createDirectory**: params now in body (`fs-action=create`
142
+ in body, not URL query). Live-verified — RWS 1.0 fileservice returns
143
+ HTTP 400 "Invalid/No Query Parameter" for the URL-query form.
144
+
145
+ - **`RwsClient` copyFile**: `fs-newname` now sends only the basename of the
146
+ destination path. RWS 1.0 fileservice copy operates within the source's
147
+ directory — passing a full path returns 400 "Invalid". Cross-directory
148
+ copy must use read+upload.
149
+
150
+ - `package.json`: added `description`, `keywords`, `homepage`, `repository`,
151
+ `engines.node`, `prepublishOnly` script. Removed invalid self-reference
152
+ in `dependencies`. Added `@types/ws` to devDependencies.
153
+
154
+ ### Compatibility
155
+
156
+ - **Node.js 18+** required (matches existing minimum).
157
+ - **No breaking changes for existing RWS 1.0 users.** `RwsClient` and its
158
+ type exports are unchanged in behavior except for the bug fixes above.
159
+ - New names (`RwsClient2`, `RobotManager`, etc.) sit alongside the old API.
160
+
161
+ ## [0.6.0] — 2026-04-30
162
+
163
+ - WebSocket subscriptions via `subscribe(resources, handler)`.
164
+ - Generic `request(method, path, body?)` escape hatch for RWS endpoints
165
+ not covered by typed methods.
166
+ - ~57 typed RWS 1.0 methods.
167
+
168
+ ## [0.5.0] and earlier
169
+
170
+ - Initial RWS 1.0 client: HTTP Digest auth, session cookie management,
171
+ request rate limiting, automatic re-authentication, typed `RwsError`.
package/README.md CHANGED
@@ -1,15 +1,17 @@
1
1
  # abb-rws-client
2
2
 
3
- A typed TypeScript/Node.js HTTP and WebSocket client for **ABB IRC5 robot controllers** using [Robot Web Services (RWS) 1.0](https://developercenter.robotstudio.com/api/rwsApi/).
3
+ A typed TypeScript/Node.js client for **ABB Robot Web Services** both protocols ABB ships:
4
4
 
5
- > **Compatibility:** RWS 1.0 / RobotWare 6.x only.
6
- > Not compatible with OmniCore, RobotWare 7.x, or RWS 2.0.
5
+ - **RWS 1.0** — IRC5 / RobotWare 6.x → `RwsClient`
6
+ - **RWS 2.0** OmniCore / RobotWare 7.x `RwsClient2`
7
+
8
+ > **Compatibility:** dual-protocol since v0.7.0. Single-line auto-detection via `createClient()` if you don't know which one your controller speaks.
7
9
 
8
10
  ---
9
11
 
10
12
  ## VS Code Extension
11
13
 
12
- Prefer a GUI? The companion VS Code extension gives you live status, motion data, RAPID control, I/O signals, event log, and file management directly from the sidebar — no code required.
14
+ Prefer a GUI? The companion VS Code extension gives you live status, motion data, RAPID control, I/O signals, event log, file management, and CFG database editing directly from the sidebar — no code required. Works against both IRC5 and OmniCore.
13
15
 
14
16
  **[ABB Robot (RWS) — VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=merajsafari.abb-rws)**
15
17
 
@@ -17,14 +19,17 @@ Prefer a GUI? The companion VS Code extension gives you live status, motion data
17
19
 
18
20
  ## Features
19
21
 
20
- - HTTP Digest Authentication (RFC 2617) no external auth libraries
21
- - Session cookie management (`ABBCX`, `-http-session-`) with automatic reuse
22
- - Request rate limiting (< 20 req/sec, configurable)
23
- - Automatic re-authentication after session expiry
24
- - WebSocket subscriptions for real-time events
25
- - Auto-reconnect on WebSocket disconnect (3 retries, exponential backoff)
22
+ - **Dual-protocol** RWS 1.0 (Digest, JSON) and RWS 2.0 (Basic, XHTML;v=2.0)
23
+ - **Auto-detection** `createClient(host)` probes the auth challenge and returns the right client
24
+ - **Multi-robot** `MultiRobotManager` for orchestrating several controllers in one process
25
+ - **Connection lifecycle** `RobotManager` handles port discovery, polling, WebSocket subscriptions with polling fallback, reconnect-on-failure
26
+ - **Typed adapter pattern** `IRWSAdapter` lets you write code that works across both protocols
27
+ - **WebSocket subscriptions** for real-time events (panel state, RAPID exec, signals, persvar, elog, jointtarget, …)
28
+ - Session cookie management (avoids the controller's 70-session pool fill)
29
+ - Automatic `/logout` on disconnect to release server-side mastership and free the session slot
30
+ - Request rate limiting (< 20 req/sec)
26
31
  - Fully typed public API — every method throws `RwsError` with a typed `code`
27
- - Zero runtime dependencies Node.js built-ins only
32
+ - Single dependency: `ws` (only one we don't reimplement)
28
33
 
29
34
  ---
30
35
 
@@ -34,18 +39,63 @@ Prefer a GUI? The companion VS Code extension gives you live status, motion data
34
39
  npm install abb-rws-client
35
40
  ```
36
41
 
37
- **Requirements:** Node.js 18+ (WebSocket subscriptions require Node 21+ or Node 18 with `--experimental-websocket`).
42
+ **Requirements:** Node.js 18+.
38
43
 
39
44
  ---
40
45
 
41
- ## Quick Start
46
+ ## Quick Start (auto-detect)
47
+
48
+ The simplest path: `createClient` probes the controller and returns the right protocol's client.
49
+
50
+ ```ts
51
+ import { createClient, RwsClient2 } from 'abb-rws-client';
52
+
53
+ const client = await createClient({
54
+ host: '192.168.125.1',
55
+ // username/password default to 'Admin' / 'robotics' (built-in admin account, full UAS grants)
56
+ });
57
+
58
+ console.log(`Connected via ${client instanceof RwsClient2 ? 'RWS 2.0' : 'RWS 1.0'}`);
59
+
60
+ const state = await client.getControllerState(); // 'motoron' | 'motoroff' | …
61
+ const mode = await client.getOperationMode(); // 'AUTO' | 'MANR' | 'MANF'
62
+ const joints = await client.getJointPositions(); // { rax_1, …, rax_6 }
63
+
64
+ await client.disconnect();
65
+ ```
66
+
67
+ If you only target one protocol, skip the helper and instantiate the client directly. See [`examples/`](./examples/) for runnable scripts.
68
+
69
+ ---
70
+
71
+ ## Choosing a client
72
+
73
+ | Controller | Protocol | Class | Auth | Default port |
74
+ |---|---|---|---|---|
75
+ | **IRC5** (RobotWare 6.x) | RWS 1.0 | `RwsClient` | HTTP Digest | 80 (real), 80 / 11811 (VC) |
76
+ | **OmniCore** (RobotWare 7.x) | RWS 2.0 | `RwsClient2` | HTTP Basic | 443 (real), 5466 (VC HTTPS) |
77
+
78
+ Both classes expose **the same method names** for ~140 endpoints (controller state, RAPID execution, modules, variables, motion, I/O, file service, CFG database, mastership, event log, etc.). The protocol differences (URL shapes, response format, mastership-domain naming, `$HOME` vs `HOME`) are handled internally — your code looks the same.
79
+
80
+ If you need a single typed reference that holds either:
81
+
82
+ ```ts
83
+ import { createAdapter, type IRWSAdapter } from 'abb-rws-client';
84
+
85
+ const adapter: IRWSAdapter = await createAdapter({ host: '192.168.125.1' });
86
+ // adapter is RWS1Adapter or RWS2Adapter — both implement IRWSAdapter
87
+ ```
88
+
89
+ ---
90
+
91
+ ## RWS 1.0 explicit usage
42
92
 
43
93
  ```ts
44
94
  import { RwsClient, RwsError } from 'abb-rws-client';
45
95
 
46
96
  const client = new RwsClient({
47
97
  host: '192.168.125.1',
48
- username: 'Default User',
98
+ username: 'Admin',
49
99
  password: 'robotics',
50
100
  });
51
101
 
@@ -85,6 +135,115 @@ await client.disconnect();
85
135
 
86
136
  ---
87
137
 
138
+ ## RWS 2.0 explicit usage
139
+
140
+ ```ts
141
+ import { RwsClient2 } from 'abb-rws-client';
142
+
143
+ // RWS 2.0 takes a base URL (scheme + host + port).
144
+ // Real OmniCore: https://<host>:443
145
+ // OmniCore VC: https://127.0.0.1:5466
146
+ const client = new RwsClient2(
147
+ 'https://127.0.0.1:5466',
148
+ 'Admin',
149
+ 'robotics',
150
+ );
151
+
152
+ await client.connect();
153
+
154
+ // Same method names as RWS 1.0 — only the underlying protocol differs.
155
+ console.log('state:', await client.getControllerState());
156
+ console.log('joints:', await client.getJointPositions());
157
+
158
+ // RAPID variable read — RWS 2.0 symbol API uses suffix-style URLs internally
159
+ // (`/rw/rapid/symbol/{symburl}/data`); the method shape is the same.
160
+ const tool0 = await client.getRapidVariable('T_ROB1', 'BASE', 'tool0');
161
+
162
+ // WebSocket subscriptions over `robapi2_subscription` subprotocol.
163
+ const unsubscribe = await client.subscribe(
164
+ ['controllerstate', 'execution'],
165
+ (event) => console.log(event.resource, '=', event.value),
166
+ );
167
+
168
+ await unsubscribe();
169
+ await client.disconnect();
170
+ ```
171
+
172
+ ### Notable RWS 2.0 quirks (handled automatically)
173
+
174
+ These are documented because they bite anyone who tries to write an RWS 2.0 client from scratch:
175
+
176
+ - **HTTP Basic auth**, not Digest (RWS 1.0).
177
+ - **XHTML responses only** — `Accept: application/json` returns 406. Library uses `Accept: application/xhtml+xml;v=2.0`.
178
+ - **Path-based actions** — `/rw/rapid/execution/stop`, not `?action=stop`.
179
+ - **Mastership domains collapsed** — both `'rapid'` and `'cfg'` map to `'edit'`. The adapter maps internally so either name works.
180
+ - **File service home** is `'HOME'`, not `'$HOME'`.
181
+ - **Symbol API path is suffix-style** — `/rw/rapid/symbol/{symburl}/data` (RWS 1.0 puts `/data` at the front).
182
+ - **Module unload** is `POST /rw/rapid/tasks/{task}/unloadmod` with body, NOT `DELETE` on the module URL (returns 405).
183
+ - **Self-signed TLS** on virtual controllers — library uses `rejectUnauthorized: false` for HTTPS.
184
+ - **WebSocket subscription URL** comes from the `Location` header (real hardware) or the XHTML body (VC). Subprotocol: `robapi2_subscription`.
185
+
186
+ ---
187
+
188
+ ## Multi-robot orchestration
189
+
190
+ For applications that talk to several controllers, use `MultiRobotManager`:
191
+
192
+ ```ts
193
+ import { MultiRobotManager } from 'abb-rws-client';
194
+
195
+ const multi = MultiRobotManager.fromConfigs([
196
+ { id: 'cell-A', name: 'Cell A IRB120', host: '192.168.125.1', port: 80, useHttps: false, username: 'Admin', password: 'robotics' },
197
+ { id: 'cell-B', name: 'Cell B IRB1200', host: '192.168.125.2', port: 443, useHttps: true, username: 'Admin', password: 'robotics' },
198
+ ]);
199
+
200
+ multi.onError((msg, actions) => {
201
+ console.error(`Robot error: ${msg}`);
202
+ return Promise.resolve(undefined); // headless: just log
203
+ });
204
+
205
+ multi.onDidChange(() => {
206
+ console.log(`active=${multi.activeId} state=${multi.state.ctrlstate}`);
207
+ });
208
+
209
+ for (const { id } of multi.entries) {
210
+ await multi.connectRobot(id);
211
+ }
212
+ // One robot is "active" at a time (handy for UIs); state for all is polled.
213
+ multi.setActive('cell-B');
214
+ ```
215
+
216
+ `MultiRobotManager` wraps individual `RobotManager` instances. Each `RobotManager` handles its own:
217
+ - Auto port discovery (probes 5466/9403/443/80/11811, plus a wide-scan fallback)
218
+ - Protocol auto-detection (Digest vs Basic challenge)
219
+ - 5-second polling for non-subscription state
220
+ - WebSocket subscriptions with automatic polling fallback
221
+ - Reconnect-on-failure (3-strike)
222
+ - Clean `/logout` on disconnect (avoids orphan mastership locks)
223
+
224
+ You can also create a `RobotManager` directly if you only have one robot.
225
+
226
+ ---
227
+
228
+ ## Logging
229
+
230
+ The lib ships a no-op logger by default. Hosts (CLIs, services, the VS Code extension) install their own:
231
+
232
+ ```ts
233
+ import { setLogger } from 'abb-rws-client';
234
+
235
+ setLogger({
236
+ info: (msg) => console.log(`[info] ${msg}`),
237
+ warn: (msg) => console.warn(`[warn] ${msg}`),
238
+ error: (msg, err) => console.error(`[error] ${msg}`, err),
239
+ show: () => { /* bring log surface to front; no-op for CLIs */ },
240
+ });
241
+ ```
242
+
243
+ Internal lifecycle events (connect/disconnect, polling cycles, subscription state, error recovery) flow through this.
244
+
245
+ ---
246
+
88
247
  ## API Reference
89
248
 
90
249
  ### Constructor
@@ -97,7 +256,7 @@ new RwsClient(options: RwsClientOptions)
97
256
  |--------|------|---------|-------------|
98
257
  | `host` | `string` | — | Controller IP or hostname |
99
258
  | `port` | `number` | `80` | HTTP port |
100
- | `username` | `string` | `'Default User'` | RWS username |
259
+ | `username` | `string` | `'Admin'` | RWS username |
101
260
  | `password` | `string` | `'robotics'` | RWS password |
102
261
  | `requestIntervalMs` | `number` | `55` | Min ms between requests (enforces < 20 req/sec) |
103
262
  | `timeout` | `number` | `5000` | Request timeout in ms |
@@ -1 +1 @@
1
- {"version":3,"file":"HttpSession.d.ts","sourceRoot":"","sources":["../src/HttpSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,YAAY,CAAC;AAchE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,2DAA2D;IAC3D,OAAO,CAAC,OAAO,CAAkC;IAEjD,yDAAyD;IACzD,OAAO,CAAC,eAAe,CAAgC;IAEvD,sEAAsE;IACtE,OAAO,CAAC,UAAU,CAAK;IAEvB,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAK;IAE5B,iFAAiF;IACjF,OAAO,CAAC,gBAAgB,CAAK;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAoC;IAExD,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAE/C,OAAO,EAAE,kBAAkB;IAqBvC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3C,yEAAyE;IACzE,eAAe,IAAI,MAAM;IAIzB,yFAAyF;IACzF,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAKjC;;;;;;;;OAQG;IACH,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACH,OAAO,CAAC,OAAO;YAsBD,OAAO;IA2DrB,iFAAiF;YACnE,QAAQ;IAoDtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IAwCvB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,aAAa;CAetB"}
1
+ {"version":3,"file":"HttpSession.d.ts","sourceRoot":"","sources":["../src/HttpSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,YAAY,CAAC;AAchE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,2DAA2D;IAC3D,OAAO,CAAC,OAAO,CAAkC;IAEjD,yDAAyD;IACzD,OAAO,CAAC,eAAe,CAAgC;IAEvD,sEAAsE;IACtE,OAAO,CAAC,UAAU,CAAK;IAEvB,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAK;IAE5B,iFAAiF;IACjF,OAAO,CAAC,gBAAgB,CAAK;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAoC;IAExD,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAE/C,OAAO,EAAE,kBAAkB;IAqBvC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3C,yEAAyE;IACzE,eAAe,IAAI,MAAM;IAIzB,yFAAyF;IACzF,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAKjC;;;;;;;;OAQG;IACH,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACH,OAAO,CAAC,OAAO;YAsBD,OAAO;IA4ErB,iFAAiF;YACnE,QAAQ;IAoDtB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IAwCvB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,aAAa;CAetB"}
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { createHash, randomBytes } from 'node:crypto';
15
15
  import { RwsError } from './types.js';
16
+ import { Logger } from './Logger.js';
16
17
  // ─── Helpers ─────────────────────────────────────────────────────────────────
17
18
  function md5(s) {
18
19
  return createHash('md5').update(s).digest('hex');
@@ -117,6 +118,11 @@ export class HttpSession {
117
118
  }
118
119
  // ─── Core request execution ─────────────────────────────────────────────────
119
120
  async execute(method, path, body) {
121
+ const startedAt = Date.now();
122
+ const bodyPreview = body
123
+ ? (typeof body === 'string' ? body : Buffer.from(body).toString('utf8')).slice(0, 200)
124
+ : undefined;
125
+ Logger.trace?.('http.req', `RWS1 ${method} ${path}`, { protocol: 'rws1', method, path, bodyPreview });
120
126
  // Auto re-authenticate if the session may have expired.
121
127
  // Only clear digest auth state — keep the session cookie so the controller
122
128
  // reuses the same session slot instead of creating a new one.
@@ -129,13 +135,14 @@ export class HttpSession {
129
135
  if (response.status === 401) {
130
136
  const wwwAuth = response.headers.get('www-authenticate');
131
137
  if (!wwwAuth) {
138
+ Logger.trace?.('http.err', `RWS1 ${method} ${path} → 401 (no auth header)`, { protocol: 'rws1', method, path });
132
139
  throw new RwsError('401 without WWW-Authenticate header', 'AUTH_FAILED', 401);
133
140
  }
134
141
  this.digestChallenge = this.parseDigestChallenge(wwwAuth);
135
142
  this.nonceCount = 0;
136
143
  response = await this.rawFetch(method, path, body);
137
144
  if (response.status === 401) {
138
- // Second 401 credentials are wrong
145
+ Logger.trace?.('http.err', `RWS1 ${method} ${path} → 401 (auth failed)`, { protocol: 'rws1', method, path });
139
146
  throw new RwsError('Authentication failed — check username and password', 'AUTH_FAILED', 401);
140
147
  }
141
148
  }
@@ -144,13 +151,23 @@ export class HttpSession {
144
151
  await sleep(200);
145
152
  response = await this.rawFetch(method, path, body);
146
153
  if (response.status === 503) {
154
+ Logger.trace?.('http.err', `RWS1 ${method} ${path} → 503 busy`, { protocol: 'rws1', method, path });
147
155
  throw new RwsError('Controller busy (503) — retry later', 'CONTROLLER_BUSY', 503);
148
156
  }
149
157
  }
150
158
  if (!this.isOk(response.status)) {
151
159
  const bodyText = await response.text().catch(() => '');
160
+ Logger.trace?.('http.err', `RWS1 ${method} ${path} → ${response.status}`, {
161
+ protocol: 'rws1', method, path, status: response.status,
162
+ durationMs: Date.now() - startedAt,
163
+ bodyPreview: bodyText.slice(0, 300),
164
+ });
152
165
  throw new RwsError(`HTTP ${response.status} from ${method} ${path}`, this.mapHttpStatus(response.status), response.status, bodyText);
153
166
  }
167
+ Logger.trace?.('http.res', `RWS1 ${method} ${path} → ${response.status}`, {
168
+ protocol: 'rws1', method, path, status: response.status,
169
+ durationMs: Date.now() - startedAt,
170
+ });
154
171
  // Store cookies from response
155
172
  this.storeCookies(response.headers);
156
173
  this.lastActivityTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"HttpSession.js","sourceRoot":"","sources":["../src/HttpSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpSession.js","sourceRoot":"","sources":["../src/HttpSession.ts"],"names":[],"mappings":"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"}