@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.
- package/APP_CREATION_GUIDE.md +98 -0
- package/dist/lib/central-listener.d.ts +71 -0
- package/dist/lib/central-listener.d.ts.map +1 -0
- package/dist/lib/central-listener.js +277 -0
- package/dist/lib/central-listener.js.map +1 -0
- package/dist/lib/central-listener.test.d.ts +2 -0
- package/dist/lib/central-listener.test.d.ts.map +1 -0
- package/dist/lib/central-listener.test.js +378 -0
- package/dist/lib/central-listener.test.js.map +1 -0
- package/dist/lib/dc-watchdog.test.d.ts +2 -0
- package/dist/lib/dc-watchdog.test.d.ts.map +1 -0
- package/dist/lib/dc-watchdog.test.js +154 -0
- package/dist/lib/dc-watchdog.test.js.map +1 -0
- package/dist/lib/ensure-awake.test.d.ts +2 -0
- package/dist/lib/ensure-awake.test.d.ts.map +1 -0
- package/dist/lib/ensure-awake.test.js +117 -0
- package/dist/lib/ensure-awake.test.js.map +1 -0
- package/dist/lib/ice-grace.test.d.ts +2 -0
- package/dist/lib/ice-grace.test.d.ts.map +1 -0
- package/dist/lib/ice-grace.test.js +211 -0
- package/dist/lib/ice-grace.test.js.map +1 -0
- package/dist/lib/imu.test.d.ts +2 -0
- package/dist/lib/imu.test.d.ts.map +1 -0
- package/dist/lib/imu.test.js +78 -0
- package/dist/lib/imu.test.js.map +1 -0
- package/dist/lib/logger.d.ts +38 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/pending-replies.d.ts +127 -0
- package/dist/lib/pending-replies.d.ts.map +1 -0
- package/dist/lib/pending-replies.js +255 -0
- package/dist/lib/pending-replies.js.map +1 -0
- package/dist/lib/pending-replies.test.d.ts +2 -0
- package/dist/lib/pending-replies.test.d.ts.map +1 -0
- package/dist/lib/pending-replies.test.js +217 -0
- package/dist/lib/pending-replies.test.js.map +1 -0
- package/dist/lib/reachy-mini.d.ts +202 -88
- package/dist/lib/reachy-mini.d.ts.map +1 -1
- package/dist/lib/reachy-mini.js +651 -566
- package/dist/lib/reachy-mini.js.map +1 -1
- package/dist/lib/redial.test.d.ts +2 -0
- package/dist/lib/redial.test.d.ts.map +1 -0
- package/dist/lib/redial.test.js +206 -0
- package/dist/lib/redial.test.js.map +1 -0
- package/dist/lib/request.test.d.ts +2 -0
- package/dist/lib/request.test.d.ts.map +1 -0
- package/dist/lib/request.test.js +90 -0
- package/dist/lib/request.test.js.map +1 -0
- package/dist/lib/session-supervisor.d.ts +201 -0
- package/dist/lib/session-supervisor.d.ts.map +1 -0
- package/dist/lib/session-supervisor.js +520 -0
- package/dist/lib/session-supervisor.js.map +1 -0
- package/dist/lib/token-store.d.ts +50 -0
- package/dist/lib/token-store.d.ts.map +1 -0
- package/dist/lib/token-store.js +120 -0
- package/dist/lib/token-store.js.map +1 -0
- package/dist/lib/token-store.test.d.ts +2 -0
- package/dist/lib/token-store.test.d.ts.map +1 -0
- package/dist/lib/token-store.test.js +82 -0
- package/dist/lib/token-store.test.js.map +1 -0
- package/dist/lib/types.d.ts +280 -6
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/url-helpers.d.ts.map +1 -1
- package/dist/lib/url-helpers.js +3 -1
- package/dist/lib/url-helpers.js.map +1 -1
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +5 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/reachy-mini-sdk.d.ts +15 -1
- package/dist/reachy-mini-sdk.d.ts.map +1 -1
- package/dist/reachy-mini-sdk.js +12 -0
- package/dist/reachy-mini-sdk.js.map +1 -1
- package/host/dist/ReachyHost.d.ts.map +1 -1
- package/host/dist/chunks/centralRest-uXNMidlL.js +2315 -0
- package/host/dist/chunks/index-Beu4GNzi.js +821 -0
- package/host/dist/chunks/{mountHost-DjE5zE9R.js → mountHost-BTTF4Uu9.js} +24933 -27488
- package/host/dist/components/ConnectingView.d.ts.map +1 -1
- package/host/dist/components/DaemonUpdateGate.d.ts +65 -0
- package/host/dist/components/DaemonUpdateGate.d.ts.map +1 -0
- package/host/dist/components/ErrorView.d.ts.map +1 -1
- package/host/dist/components/HostErrorBoundary.d.ts +30 -0
- package/host/dist/components/HostErrorBoundary.d.ts.map +1 -0
- package/host/dist/components/LeavingView.d.ts.map +1 -1
- package/host/dist/components/PickerView.d.ts +16 -14
- package/host/dist/components/PickerView.d.ts.map +1 -1
- package/host/dist/components/PostOAuthSplash.d.ts +14 -9
- package/host/dist/components/PostOAuthSplash.d.ts.map +1 -1
- package/host/dist/components/ReachyHostShell.d.ts.map +1 -1
- package/host/dist/components/SignInView.d.ts.map +1 -1
- package/host/dist/components/TopBar.d.ts +5 -6
- package/host/dist/components/TopBar.d.ts.map +1 -1
- package/host/dist/components/WelcomeBackOverlay.d.ts.map +1 -1
- package/host/dist/embed/index.d.ts +68 -5
- package/host/dist/embed/index.d.ts.map +1 -1
- package/host/dist/entry/auto.js +2 -2
- package/host/dist/entry/embed.d.ts +5 -4
- package/host/dist/entry/embed.d.ts.map +1 -1
- package/host/dist/entry/embed.js +5 -4
- package/host/dist/hooks/useHostBridge.d.ts +35 -1
- package/host/dist/hooks/useHostBridge.d.ts.map +1 -1
- package/host/dist/hooks/useLatestDaemonVersion.d.ts +7 -0
- package/host/dist/hooks/useLatestDaemonVersion.d.ts.map +1 -0
- package/host/dist/hooks/useOAuth.d.ts +18 -0
- package/host/dist/hooks/useOAuth.d.ts.map +1 -1
- package/host/dist/hooks/useRobots.d.ts +0 -2
- package/host/dist/hooks/useRobots.d.ts.map +1 -1
- package/host/dist/index.d.ts +2 -2
- package/host/dist/index.d.ts.map +1 -1
- package/host/dist/index.js +11 -10
- package/host/dist/lib/daemonRelease.d.ts +84 -0
- package/host/dist/lib/daemonRelease.d.ts.map +1 -0
- package/host/dist/lib/protocol.d.ts +141 -7
- package/host/dist/lib/protocol.d.ts.map +1 -1
- package/host/dist/lib/rebootWatch.d.ts +51 -0
- package/host/dist/lib/rebootWatch.d.ts.map +1 -0
- package/host/dist/lib/sdk-types.d.ts +1 -1
- package/host/dist/lib/sdk-types.d.ts.map +1 -1
- package/host/dist/lib/sdkStaleness.d.ts +78 -0
- package/host/dist/lib/sdkStaleness.d.ts.map +1 -0
- package/host/dist/lib/settings.d.ts +16 -5
- package/host/dist/lib/settings.d.ts.map +1 -1
- package/package.json +11 -4
- package/host/dist/chunks/index-lMs2sCXG.js +0 -439
- package/host/dist/chunks/reachy-mini-CdsdQLIU.js +0 -1523
- package/host/dist/lib/centralListener.d.ts +0 -73
- 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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
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
|
-
|
|
122
|
+
setAutoReconnect(enabled: boolean): void;
|
|
113
123
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
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
|
|
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
|
|
243
|
-
*
|
|
244
|
-
*
|
|
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":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"reachy-mini.d.ts","sourceRoot":"","sources":["../../lib/reachy-mini.ts"],"names":[],"mappings":"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"}
|