8c92e1c9631bd214e3fc398a4cae90142e511b6f
- Track.lookAt: was calling client.user.lookAtEntity (undefined), now correctly routes to client.behavior.lookAtEntity — fixes unhandled promise rejections on every face-detection event - connection: httpGet/httpGetStream had no socket timeout; added 15 s req.setTimeout so fetchBuffer/pipe reject instead of hanging forever - connection: _txSend silently dropped commands when session not yet ready and returned a dead txId, causing callers to hang for the full timeout; now throws immediately with code NOT_READY Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rom-control
Robust client for the Jibo ROM WebSocket API. Provides a discord.js-style OOP interface with promises, rich event objects, and automatic session management.
const { Client, AttentionMode } = require('rom-control');
const jibo = new Client({ host: '192.168.1.217' });
jibo.once('ready', async () => {
await jibo.behavior.setAttention(AttentionMode.Engaged);
await jibo.behavior.say('<anim cat="excited" nonBlocking="true"/> Hello!');
});
jibo.on('trackCreate', async (track) => {
await track.lookAt();
});
jibo.on('hotword', async (event) => {
const result = await jibo.audio.awaitSpeech();
console.log('Heard:', result.speech);
});
jibo.connect();
Install
npm install rom-control
Features
- Promise-based API — every action resolves when physically complete
- Manager classes:
client.behavior,client.audio,client.camera,client.display,client.assets - Rich event objects:
Track,Photo,SpeechResult,HotwordEvent,GestureEvent, and more - Live entity tracking map (
client.tracks) - Auto-reconnect, auto-heartbeat, and auto-subscribe
- Local ASR speech recognition (no cloud required)
- Wakeword detection via on-robot ASR service
- ESM and CJS exports
Documentation
See API.md for full reference.
Requirements
- Node.js ≥ 16
- A Jibo robot running ROM firmware on your local network
Description
Languages
JavaScript
100%