@pollen-robotics/reachy-mini-sdk 1.10.0-dev.0.main.b50d97e → 1.10.0-dev.0.main.c8367cd

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 (128) hide show
  1. package/APP_CREATION_GUIDE.md +98 -0
  2. package/dist/lib/central-listener.d.ts +71 -0
  3. package/dist/lib/central-listener.d.ts.map +1 -0
  4. package/dist/lib/central-listener.js +277 -0
  5. package/dist/lib/central-listener.js.map +1 -0
  6. package/dist/lib/central-listener.test.d.ts +2 -0
  7. package/dist/lib/central-listener.test.d.ts.map +1 -0
  8. package/dist/lib/central-listener.test.js +378 -0
  9. package/dist/lib/central-listener.test.js.map +1 -0
  10. package/dist/lib/dc-watchdog.test.d.ts +2 -0
  11. package/dist/lib/dc-watchdog.test.d.ts.map +1 -0
  12. package/dist/lib/dc-watchdog.test.js +154 -0
  13. package/dist/lib/dc-watchdog.test.js.map +1 -0
  14. package/dist/lib/ensure-awake.test.d.ts +2 -0
  15. package/dist/lib/ensure-awake.test.d.ts.map +1 -0
  16. package/dist/lib/ensure-awake.test.js +117 -0
  17. package/dist/lib/ensure-awake.test.js.map +1 -0
  18. package/dist/lib/ice-grace.test.d.ts +2 -0
  19. package/dist/lib/ice-grace.test.d.ts.map +1 -0
  20. package/dist/lib/ice-grace.test.js +211 -0
  21. package/dist/lib/ice-grace.test.js.map +1 -0
  22. package/dist/lib/imu.test.d.ts +2 -0
  23. package/dist/lib/imu.test.d.ts.map +1 -0
  24. package/dist/lib/imu.test.js +78 -0
  25. package/dist/lib/imu.test.js.map +1 -0
  26. package/dist/lib/logger.d.ts +38 -0
  27. package/dist/lib/logger.d.ts.map +1 -0
  28. package/dist/lib/logger.js +81 -0
  29. package/dist/lib/logger.js.map +1 -0
  30. package/dist/lib/pending-replies.d.ts +127 -0
  31. package/dist/lib/pending-replies.d.ts.map +1 -0
  32. package/dist/lib/pending-replies.js +255 -0
  33. package/dist/lib/pending-replies.js.map +1 -0
  34. package/dist/lib/pending-replies.test.d.ts +2 -0
  35. package/dist/lib/pending-replies.test.d.ts.map +1 -0
  36. package/dist/lib/pending-replies.test.js +217 -0
  37. package/dist/lib/pending-replies.test.js.map +1 -0
  38. package/dist/lib/reachy-mini.d.ts +202 -88
  39. package/dist/lib/reachy-mini.d.ts.map +1 -1
  40. package/dist/lib/reachy-mini.js +651 -566
  41. package/dist/lib/reachy-mini.js.map +1 -1
  42. package/dist/lib/redial.test.d.ts +2 -0
  43. package/dist/lib/redial.test.d.ts.map +1 -0
  44. package/dist/lib/redial.test.js +206 -0
  45. package/dist/lib/redial.test.js.map +1 -0
  46. package/dist/lib/request.test.d.ts +2 -0
  47. package/dist/lib/request.test.d.ts.map +1 -0
  48. package/dist/lib/request.test.js +90 -0
  49. package/dist/lib/request.test.js.map +1 -0
  50. package/dist/lib/session-supervisor.d.ts +201 -0
  51. package/dist/lib/session-supervisor.d.ts.map +1 -0
  52. package/dist/lib/session-supervisor.js +520 -0
  53. package/dist/lib/session-supervisor.js.map +1 -0
  54. package/dist/lib/token-store.d.ts +50 -0
  55. package/dist/lib/token-store.d.ts.map +1 -0
  56. package/dist/lib/token-store.js +120 -0
  57. package/dist/lib/token-store.js.map +1 -0
  58. package/dist/lib/token-store.test.d.ts +2 -0
  59. package/dist/lib/token-store.test.d.ts.map +1 -0
  60. package/dist/lib/token-store.test.js +82 -0
  61. package/dist/lib/token-store.test.js.map +1 -0
  62. package/dist/lib/types.d.ts +280 -6
  63. package/dist/lib/types.d.ts.map +1 -1
  64. package/dist/lib/url-helpers.d.ts.map +1 -1
  65. package/dist/lib/url-helpers.js +3 -1
  66. package/dist/lib/url-helpers.js.map +1 -1
  67. package/dist/lib/version.d.ts +2 -0
  68. package/dist/lib/version.d.ts.map +1 -0
  69. package/dist/lib/version.js +5 -0
  70. package/dist/lib/version.js.map +1 -0
  71. package/dist/reachy-mini-sdk.d.ts +15 -1
  72. package/dist/reachy-mini-sdk.d.ts.map +1 -1
  73. package/dist/reachy-mini-sdk.js +12 -0
  74. package/dist/reachy-mini-sdk.js.map +1 -1
  75. package/host/dist/ReachyHost.d.ts.map +1 -1
  76. package/host/dist/chunks/centralRest-uXNMidlL.js +2315 -0
  77. package/host/dist/chunks/index-Beu4GNzi.js +821 -0
  78. package/host/dist/chunks/{mountHost-DjE5zE9R.js → mountHost-BTTF4Uu9.js} +24933 -27488
  79. package/host/dist/components/ConnectingView.d.ts.map +1 -1
  80. package/host/dist/components/DaemonUpdateGate.d.ts +65 -0
  81. package/host/dist/components/DaemonUpdateGate.d.ts.map +1 -0
  82. package/host/dist/components/ErrorView.d.ts.map +1 -1
  83. package/host/dist/components/HostErrorBoundary.d.ts +30 -0
  84. package/host/dist/components/HostErrorBoundary.d.ts.map +1 -0
  85. package/host/dist/components/LeavingView.d.ts.map +1 -1
  86. package/host/dist/components/PickerView.d.ts +16 -14
  87. package/host/dist/components/PickerView.d.ts.map +1 -1
  88. package/host/dist/components/PostOAuthSplash.d.ts +14 -9
  89. package/host/dist/components/PostOAuthSplash.d.ts.map +1 -1
  90. package/host/dist/components/ReachyHostShell.d.ts.map +1 -1
  91. package/host/dist/components/SignInView.d.ts.map +1 -1
  92. package/host/dist/components/TopBar.d.ts +5 -6
  93. package/host/dist/components/TopBar.d.ts.map +1 -1
  94. package/host/dist/components/WelcomeBackOverlay.d.ts.map +1 -1
  95. package/host/dist/embed/index.d.ts +68 -5
  96. package/host/dist/embed/index.d.ts.map +1 -1
  97. package/host/dist/entry/auto.js +2 -2
  98. package/host/dist/entry/embed.d.ts +5 -4
  99. package/host/dist/entry/embed.d.ts.map +1 -1
  100. package/host/dist/entry/embed.js +5 -4
  101. package/host/dist/hooks/useHostBridge.d.ts +35 -1
  102. package/host/dist/hooks/useHostBridge.d.ts.map +1 -1
  103. package/host/dist/hooks/useLatestDaemonVersion.d.ts +7 -0
  104. package/host/dist/hooks/useLatestDaemonVersion.d.ts.map +1 -0
  105. package/host/dist/hooks/useOAuth.d.ts +18 -0
  106. package/host/dist/hooks/useOAuth.d.ts.map +1 -1
  107. package/host/dist/hooks/useRobots.d.ts +0 -2
  108. package/host/dist/hooks/useRobots.d.ts.map +1 -1
  109. package/host/dist/index.d.ts +2 -2
  110. package/host/dist/index.d.ts.map +1 -1
  111. package/host/dist/index.js +11 -10
  112. package/host/dist/lib/daemonRelease.d.ts +84 -0
  113. package/host/dist/lib/daemonRelease.d.ts.map +1 -0
  114. package/host/dist/lib/protocol.d.ts +141 -7
  115. package/host/dist/lib/protocol.d.ts.map +1 -1
  116. package/host/dist/lib/rebootWatch.d.ts +51 -0
  117. package/host/dist/lib/rebootWatch.d.ts.map +1 -0
  118. package/host/dist/lib/sdk-types.d.ts +1 -1
  119. package/host/dist/lib/sdk-types.d.ts.map +1 -1
  120. package/host/dist/lib/sdkStaleness.d.ts +78 -0
  121. package/host/dist/lib/sdkStaleness.d.ts.map +1 -0
  122. package/host/dist/lib/settings.d.ts +16 -5
  123. package/host/dist/lib/settings.d.ts.map +1 -1
  124. package/package.json +11 -4
  125. package/host/dist/chunks/index-lMs2sCXG.js +0 -439
  126. package/host/dist/chunks/reachy-mini-CdsdQLIU.js +0 -1523
  127. package/host/dist/lib/centralListener.d.ts +0 -73
  128. package/host/dist/lib/centralListener.d.ts.map +0 -1
@@ -3,16 +3,8 @@
3
3
  * See `../reachy-mini-sdk.ts` for the package's barrel and the README for
4
4
  * a quick-start guide.
5
5
  */
6
- import type { ApplyAudioConfigOptions, AudioConfigEntry, AutoConnectOptions, AutoConnectResult, FaceTarget, MotionAwaitOptions, MoveData, PlayMoveOptions, PlayMoveResult, PlayUploadedAudioOptions, ReachyMiniInstance, ReachyMiniOptions, RobotInfo, RobotState, SubscribeLogsOptions, UploadAudioOptions } from './types.js';
7
- /** One progress event from an in-flight `startDaemonUpdate()`. */
8
- export interface UpdateProgressEvent {
9
- status: 'in_progress' | 'done' | 'failed';
10
- /** A log line of the underlying update job (when `in_progress`). */
11
- line?: string;
12
- /** Set when `status === 'failed'`. */
13
- error?: string;
14
- }
15
- type UpdateProgressCallback = (event: UpdateProgressEvent) => void;
6
+ import type { ApplyAudioConfigOptions, AudioConfigEntry, AutoConnectOptions, AutoConnectResult, FaceTarget, ImuData, LoginOptions, MotionAwaitOptions, MoveData, PlayMoveOptions, PlayMoveResult, PlayUploadedAudioOptions, ReachyMiniInstance, ReachyMiniOptions, RequestOptions, RobotInfo, RobotState, StartDaemonUpdateOptions, SubscribeLogsOptions, UpdateProgressEvent, UploadAudioOptions } from './types.js';
7
+ export type { UpdateProgressEvent };
16
8
  export declare class ReachyMini extends EventTarget implements ReachyMiniInstance {
17
9
  private readonly _signalingUrl;
18
10
  private readonly _clientId;
@@ -23,6 +15,9 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
23
15
  private _state;
24
16
  private _robots;
25
17
  private _robotState;
18
+ private _lastPoseSeq;
19
+ private _lastPoseFrameAt;
20
+ private _poseSubRefs;
26
21
  private readonly _preselectedRobotId;
27
22
  private _token;
28
23
  private _username;
@@ -39,29 +34,17 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
39
34
  private _micSupported;
40
35
  private _latencyMonitorId;
41
36
  private _stateRefreshInterval;
42
- private _versionResolve;
43
- private _hardwareIdResolve;
44
- private _volumeResolve;
45
- private _micVolumeResolve;
46
- private _trackedFaceResolve;
47
- private _applyAudioConfigResolve;
48
- private _readAudioParameterResolve;
37
+ private readonly _pending;
49
38
  private readonly _logSubscribers;
50
39
  private readonly _updateProgressSubscribers;
51
- private _broadcastWaiters;
40
+ private readonly _rpcListeners;
52
41
  private _activeMoveUploadId;
53
42
  private _activeAudioUploadId;
54
43
  private _sessionResolve;
55
44
  private _sessionReject;
56
45
  private _iceConnected;
57
46
  private _dcOpen;
58
- private _iceGraceTimer;
59
- private _iceGraceReason;
60
- private _pendingVisibilityHandler;
61
- private _onlineHandler;
62
- private _offlineHandler;
63
- private _connectionChangeHandler;
64
- private readonly _pendingMotionCompletions;
47
+ private readonly _supervisor;
65
48
  private _videoElement;
66
49
  constructor(options?: ReachyMiniOptions);
67
50
  get state(): 'disconnected' | 'connected' | 'streaming';
@@ -74,6 +57,24 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
74
57
  get audioMuted(): boolean;
75
58
  get preselectedRobotId(): string | null;
76
59
  get isEmbedded(): boolean;
60
+ /**
61
+ * Live RTCPeerConnection, or `null` between sessions. Read-only escape
62
+ * hatch for stats sampling (`getStats()`); mutating it is unsupported.
63
+ * Auto-reconnect re-dials REPLACE this object, so re-read it on every
64
+ * use — never capture it across ticks.
65
+ */
66
+ get peerConnection(): RTCPeerConnection | null;
67
+ /**
68
+ * Build version of this SDK (npm package `version`), injected from
69
+ * package.json at build time. This is the JS SDK's OWN version and is
70
+ * distinct from `getVersion()`, which asks the DAEMON its version over
71
+ * the data channel. `0.0.0-managed-by-ci` means an unreleased/branch
72
+ * build (npm releases carry a real semver).
73
+ */
74
+ get sdkVersion(): string;
75
+ /** Same value as the instance `sdkVersion`, reachable without an
76
+ * instance: `ReachyMini.version`. */
77
+ static get version(): string;
77
78
  /**
78
79
  * Internal: try to honour the `autoStartFromUrl` constructor
79
80
  * option. Called from the signaling-message handler after every
@@ -82,65 +83,55 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
82
83
  */
83
84
  _maybeAutoStart(): void;
84
85
  authenticate(): Promise<boolean>;
85
- login(): Promise<void>;
86
+ login(options?: LoginOptions): Promise<void>;
86
87
  logout(): void;
87
88
  connect(token?: string): Promise<void>;
88
89
  autoConnect(options?: AutoConnectOptions): Promise<AutoConnectResult>;
89
90
  private _fetchOwnedRobots;
90
91
  private _waitForRobotInList;
91
92
  startSession(robotId: string): Promise<void>;
93
+ private _startSessionInternal;
94
+ /**
95
+ * Common transport teardown shared by every session-ending path
96
+ * (stopSession, disconnect, the auto-redial, a session rejection):
97
+ * settle the pending-reply ledger and the startSession() resolvers
98
+ * with `settleErr`, stand the resilience plumbing down, stop the
99
+ * session-scoped timers, release the mic placeholder and close the
100
+ * pc/dc. Returns the session id (already cleared on the instance)
101
+ * so each caller decides whether and how to send `endSession`.
102
+ * What else differs — events, subscriber wipes, where `_state`
103
+ * lands — stays with the callers.
104
+ */
105
+ private _closeTransport;
92
106
  private _failSessionRejected;
93
107
  stopSession(): Promise<void>;
94
108
  disconnect(): void;
95
109
  /**
96
- * Cancel any pending ICE grace timer and visibility handler. Called
97
- * on a healed `connected`/`completed` transition AND from the
98
- * lifecycle teardown paths so a callback can't fire after `_pc`
99
- * is closed.
100
- */
101
- private _clearIceGrace;
102
- /**
103
- * Start a grace window. After `ms`, re-check the live ICE state:
104
- * - If we healed back to `connected`/`completed`, the timer was
105
- * already cancelled in `oniceconnectionstatechange`, so we
106
- * never get here.
107
- * - If we're still in the originally-observed bad state (or
108
- * worse), surface the error and reject any pending session
109
- * promise. The original code path is preserved verbatim so
110
- * downstream consumers see the same `error` payload shape.
110
+ * Enable/disable the automatic session re-dial at runtime.
111
+ * Disabling also aborts any re-dial already in flight. Used by
112
+ * flows that EXPECT the transport to die — e.g. the daemon
113
+ * self-update, whose `systemctl restart` teardown must surface as
114
+ * `sessionStopped` immediately (it's the "install done, rebooting"
115
+ * signal), not get absorbed by ~22 s of doomed reconnect attempts
116
+ * against a robot that is rebooting anyway.
117
+ *
118
+ * Sharp edge: cancelling an in-flight re-dial leaves the session
119
+ * torn down without emitting `sessionStopped` or `error` — the
120
+ * caller owns the terminal event (see `ReachyMiniInstance`).
111
121
  */
112
- private _scheduleIceGrace;
122
+ setAutoReconnect(enabled: boolean): void;
113
123
  /**
114
- * `disconnected` while the tab is hidden. JS timers are throttled
115
- * in background tabs (Chrome clamps to ~1 Hz, Safari can pause
116
- * altogether), so a foreground grace timer would either miss the
117
- * window or fire long after the connection healed. Wait for the
118
- * tab to come back, then re-evaluate.
124
+ * Transport-only teardown: everything stopSession() does EXCEPT the
125
+ * user-facing state flip (`sessionStopped` is not emitted, `_state`
126
+ * falls back to 'connected' so the re-dial can start a session).
127
+ * Pending promises that ride the dead channel are settled just like
128
+ * stopSession() settles them — callers see the same failure shape a
129
+ * manual stop would produce; that includes a timed-out dial
130
+ * attempt's own startSession() promise (its resolvers were left
131
+ * armed, and a late signaling reply could otherwise settle them
132
+ * against a closed pc).
119
133
  */
120
- private _armIceGraceOnVisibility;
121
- /**
122
- * Install browser-level network listeners and forward them as
123
- * public `networkOnline` / `networkOffline` / `networkChange`
124
- * events on this instance. Idempotent: called from
125
- * `startSession()`, removed by `_uninstallNetworkListeners` on
126
- * teardown. Reachable only when there's a live `window`
127
- * (defensive guard for SSR / test environments).
128
- *
129
- * `online` / `offline` are semantically about CONNECTIVITY:
130
- * "does the OS think we can reach the internet". They flip
131
- * symmetrically.
132
- *
133
- * `connection.change` (NetworkInformation API, Chrome / Android
134
- * WebView only) is semantically about the TRANSPORT: it fires
135
- * on Wi-Fi → 4G swaps, AP roams, etc. without necessarily going
136
- * through `offline`. We forward it as its own `networkChange`
137
- * event rather than aliasing it onto `networkOnline`, so
138
- * consumers don't have to guess whether they're seeing a real
139
- * connectivity recovery or a silent transport swap.
140
- */
141
- private _installNetworkListeners;
142
- /** Counterpart to `_installNetworkListeners`. */
143
- private _uninstallNetworkListeners;
134
+ private _teardownForRedial;
144
135
  /**
145
136
  * Atomic raw-units pose update over the data channel. Channels you
146
137
  * omit are held at their last commanded value (per-axis, independent).
@@ -199,6 +190,31 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
199
190
  setAntennasDeg(rightDeg: number, leftDeg: number): boolean;
200
191
  setBodyYawDeg(yawDeg: number): boolean;
201
192
  playSound(file: string): boolean;
193
+ playRecordedMove(moveName: string, { dataset, initialGotoDuration, }?: {
194
+ dataset?: string;
195
+ initialGotoDuration?: number;
196
+ }): boolean;
197
+ /**
198
+ * Stop whatever move is currently playing on the daemon (recorded move,
199
+ * uploaded move, goto). Fire-and-forget and idempotent: the daemon acks
200
+ * ok with `stopped: false` when nothing was running. Returns `false` if
201
+ * the data channel is not open.
202
+ */
203
+ stopMove(): boolean;
204
+ preloadDataset(dataset: string): boolean;
205
+ /**
206
+ * Like `preloadDataset()`, but resolves once the daemon acks the preload
207
+ * (`{command: "preload_dataset", ...}` on the data channel), i.e. when the
208
+ * dataset is actually in the local HF cache. Resolves `true` on success,
209
+ * `false` when the daemon reports a download failure, and `null` on the
210
+ * fail-open timeout (download slower than `timeoutMs`, or a daemon that
211
+ * predates the command and never replies) - callers should proceed in all
212
+ * three cases, `playRecordedMove` still downloads on demand. Rejects when
213
+ * the data channel isn't open or the session tears down mid-flight.
214
+ */
215
+ preloadDatasetAndWait(dataset: string, { timeoutMs }?: {
216
+ timeoutMs?: number;
217
+ }): Promise<boolean | null>;
202
218
  clearIncomingAudio(): boolean;
203
219
  startHeadTracking(weight?: number): boolean;
204
220
  stopHeadTracking(): boolean;
@@ -217,44 +233,122 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
217
233
  *
218
234
  * Returns `false` if the data channel isn't open.
219
235
  */
220
- startDaemonUpdate({ preRelease, onProgress }?: {
221
- preRelease?: boolean;
222
- onProgress?: UpdateProgressCallback;
223
- }): boolean;
236
+ startDaemonUpdate({ preRelease, onProgress }?: StartDaemonUpdateOptions): boolean;
224
237
  setMotorMode(mode: 'enabled' | 'disabled' | 'gravity_compensation'): boolean;
225
238
  setMotorTorque(on: boolean, ids?: string[] | null): boolean;
226
239
  wakeUp({ timeoutMs }?: MotionAwaitOptions): Promise<void>;
227
240
  gotoSleep({ timeoutMs }?: MotionAwaitOptions): Promise<void>;
228
241
  private _sendCommandAwaitCompletion;
229
- private _rejectPendingMotionCompletions;
230
242
  isAwake(): boolean;
231
243
  ensureAwake(timeoutMs?: number): Promise<boolean>;
244
+ /**
245
+ * Query the daemon version. Resolves `null` when the daemon predates
246
+ * `get_version` (fail-open on the shared slot timeout) or the reply is
247
+ * superseded by session teardown.
248
+ */
232
249
  getVersion(): Promise<string | null>;
233
250
  getHardwareId(): Promise<string | null>;
251
+ /**
252
+ * One-shot IMU reading (BMI088, wireless version only). Resolves `null`
253
+ * when the robot has no IMU (Lite, simulation) or the daemon predates
254
+ * the `get_imu` command (fail-open on the shared slot timeout).
255
+ */
256
+ getImu(): Promise<ImuData | null>;
234
257
  getVolume(): Promise<number | null>;
235
258
  setVolume(volume: number): Promise<number | null>;
236
259
  getMicrophoneVolume(): Promise<number | null>;
237
260
  setMicrophoneVolume(volume: number): Promise<number | null>;
261
+ /**
262
+ * Query whether the first wake-up setup wizard has been completed.
263
+ * Robot-wide, persisted on the robot. Resolves `false` when pending,
264
+ * `true` when done, or `null` when the channel isn't open / the daemon
265
+ * predates the `get_first_wake_up` command (callers should fail-open
266
+ * and skip the wizard on `null`).
267
+ */
268
+ getFirstWakeUp(): Promise<boolean | null>;
269
+ /**
270
+ * Persist the first wake-up wizard completion flag on the robot.
271
+ * Resolves with the stored value (or `null` on channel-closed).
272
+ */
273
+ setFirstWakeUp(isCompleted: boolean): Promise<boolean | null>;
274
+ /**
275
+ * Query the persisted robot display name. Resolves the stored name,
276
+ * `null` when none is set / the channel isn't open / the daemon predates
277
+ * the `get_robot_name` command.
278
+ */
279
+ getRobotName(): Promise<string | null>;
280
+ /**
281
+ * Set and persist the robot display name on the robot. Resolves with the
282
+ * stored (trimmed) name, or `null` on error / channel-closed. Applied live
283
+ * by the daemon (status + central relay + mDNS), so it takes effect right
284
+ * away without a restart; the persisted name also overrides --robot-name
285
+ * on the next start.
286
+ */
287
+ setRobotName(name: string): Promise<string | null>;
288
+ /**
289
+ * Sign this robot out of Hugging Face: asks the daemon to delete its
290
+ * stored HF token, which de-registers the robot from the central
291
+ * signaling relay (it disappears from its owner's robot list until it
292
+ * is set up again). Works over the WebRTC data channel, so it reaches
293
+ * the robot remotely (no LAN HTTP path required).
294
+ *
295
+ * Resolves `true` when the daemon acked success, `false` on a daemon
296
+ * error, or `null` when no ack arrives before the timeout (e.g. a
297
+ * daemon that predates the `delete_hf_token` command silently drops
298
+ * it). Rejects if the data channel isn't open. Note the sign-out
299
+ * drops the central relay, so the session may tear down right after
300
+ * the ack - callers should treat a post-call session drop as expected,
301
+ * and a successful sign-out may surface as `null` if teardown races
302
+ * ahead of the ack.
303
+ */
304
+ signOut(): Promise<boolean | null>;
238
305
  applyAudioConfig(config: AudioConfigEntry[], { verify }?: ApplyAudioConfigOptions): Promise<boolean>;
239
306
  readAudioParameter(name: string): Promise<number[] | null>;
240
307
  /**
241
308
  * Internal: send a command and await the matching daemon response in a
242
- * named single-resolver slot. Used by the volume helpers and the
243
- * XVF3800 audio-config helpers — every one of them has a strict
244
- * request/response shape where a single in-flight call per slot is
245
- * sufficient. If a previous request on the same slot is still
246
- * pending when a new one comes in, the older promise is resolved to
247
- * `null` so its caller doesn't hang forever.
248
- *
249
- * Slot access is passed in as getter/setter closures rather than a
250
- * key into `this`: that keeps the helper fully generic-checked (T is
251
- * inferred from the slot's resolver type at each call site) with no
252
- * indexed-property casts.
309
+ * named single-resolver slot (see `PendingReplies.slotRoundtrip`).
310
+ * Every caller has a strict request/response shape where a single
311
+ * in-flight call per slot is sufficient.
253
312
  */
254
313
  private _slotRoundtrip;
255
314
  sendRaw(data: unknown): boolean;
315
+ /**
316
+ * Generic command round-trip for daemon commands the SDK has no typed
317
+ * wrapper for (yet). Escape hatch so an app can use a newer daemon
318
+ * feature without waiting for an SDK release: sends `command` and
319
+ * resolves with the first robot message whose `command` field equals
320
+ * the sent `type` - the daemon's reply convention - or with `null` on
321
+ * the fail-open timeout (daemon predates the command, or the command
322
+ * is fire-and-forget and never replies).
323
+ *
324
+ * Rejects when the data channel isn't open or the session tears down
325
+ * mid-flight, mirroring the typed wrappers.
326
+ *
327
+ * Replies the SDK already consumes internally (`get_imu`,
328
+ * `get_volume`, ...) are swallowed by their own handlers and never
329
+ * reach this matcher - use the typed wrappers for those. Pass `match`
330
+ * for replies that don't follow the `command` echo convention.
331
+ */
332
+ request(command: {
333
+ type: string;
334
+ } & Record<string, unknown>, { timeoutMs, match }?: RequestOptions): Promise<Record<string, unknown> | null>;
256
335
  subscribeLogs({ onLine, onError }: SubscribeLogsOptions): () => void;
257
336
  requestState(): boolean;
337
+ /**
338
+ * Ask the daemon to *push* the robot state (~30 Hz) over the dedicated
339
+ * unreliable/unordered `pose` data channel instead of polling get_state.
340
+ * Fires `state` events as frames arrive. No-op against an older daemon (no
341
+ * pose channel) - fall back to `requestState()` polling there.
342
+ *
343
+ * Refcounted: pair every `subscribePose()` with exactly one
344
+ * `unsubscribePose()`. Multiple consumers share a single daemon-side
345
+ * subscription; the daemon only stops pushing once the last one releases.
346
+ * If the channel isn't open yet (or the session later reconnects), the
347
+ * subscription is (re-)asserted from `_checkSessionReady`.
348
+ */
349
+ subscribePose(): boolean;
350
+ /** Release one pose-stream consumer; sends `unsubscribe_pose` on the last. */
351
+ unsubscribePose(): boolean;
258
352
  setAudioMuted(muted: boolean): void;
259
353
  setMicMuted(muted: boolean): void;
260
354
  attachVideo(videoElement: HTMLVideoElement): () => void;
@@ -270,13 +364,33 @@ export declare class ReachyMini extends EventTarget implements ReachyMiniInstanc
270
364
  private _awaitDataChannelDrain;
271
365
  private _sendToServer;
272
366
  private _sendCommand;
367
+ /**
368
+ * Call a JSON-RPC method on the robot/app over the DataChannel and await
369
+ * its result. This is the one way to drive an on-robot app (start/stop it
370
+ * via `apps.*`, or drive a running app via its own namespace, e.g.
371
+ * `conversation.say`). Rejects on the JSON-RPC error, a closed channel, or
372
+ * timeout.
373
+ */
374
+ rpcCall<T = unknown>(method: string, params?: Record<string, unknown>, opts?: {
375
+ timeoutMs?: number;
376
+ }): Promise<T>;
377
+ /**
378
+ * Subscribe to a JSON-RPC notification (one-way event) pushed by the
379
+ * robot/app, e.g. `conversation.turn`. Returns an unsubscribe function.
380
+ */
381
+ onNotification(method: string, cb: (params: Record<string, unknown>) => void): () => void;
382
+ private _handleRpcMessage;
273
383
  private _checkSessionReady;
274
384
  private _handleSignalingMessage;
275
385
  private _handleEndSession;
276
386
  private _handlePeerMessage;
387
+ /**
388
+ * @param fromPoseStream Frame came from the pushed `pose` channel rather
389
+ * than the reliable control channel. Only those may refresh the state
390
+ * mirror while the stream is live (see the `data.state` branch).
391
+ */
277
392
  private _handleRobotMessage;
278
393
  /** Snap video playback to live edge if buffered lag exceeds 0.5 s. */
279
394
  private _startLatencyMonitor;
280
395
  }
281
- export {};
282
396
  //# sourceMappingURL=reachy-mini.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reachy-mini.d.ts","sourceRoot":"","sources":["../../lib/reachy-mini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reachy-mini.d.ts","sourceRoot":"","sources":["../../lib/reachy-mini.ts"],"names":[],"mappings":"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"}