Spaces:
Sleeping
Sleeping
# RobotHub Inference Server TypeScript Client | |
A TypeScript client for the RobotHub Inference Server, providing ACT (Action Chunking Transformer) model inference and session management capabilities. | |
## Features | |
- β **Fully Generated**: Client is 100% generated from OpenAPI spec | |
- π **Type Safe**: Complete TypeScript support with generated types | |
- π **Modern**: Built with Bun and modern JavaScript features | |
- π¦ **Lightweight**: Minimal dependencies, uses fetch API | |
- π οΈ **Developer Friendly**: Comprehensive examples and documentation | |
## Installation | |
```bash | |
# Install dependencies | |
bun install | |
# Generate client from OpenAPI spec | |
bun run generate | |
# Build the client | |
bun run build | |
``` | |
## Quick Start | |
```typescript | |
import { RobotHubInferenceClient, CreateSessionRequest } from '@robothub/inference-server-client'; | |
// Create client | |
const client = new RobotHubInferenceClient('http://localhost:8001'); | |
// Check server health | |
const isHealthy = await client.isHealthy(); | |
if (!isHealthy) { | |
console.error('Server is not available'); | |
process.exit(1); | |
} | |
// Create and start a session | |
const sessionRequest: CreateSessionRequest = { | |
session_id: 'my-robot-session', | |
policy_path: 'LaetusH/act_so101_beyond', | |
camera_names: ['front', 'wrist'], | |
transport_server_url: 'http://localhost:8000' | |
}; | |
const session = await client.createSession(sessionRequest); | |
await client.startInference('my-robot-session'); | |
// Monitor session | |
const status = await client.getSessionStatus('my-robot-session'); | |
console.log(`Status: ${status.status}`); | |
// Clean up | |
await client.deleteSession('my-robot-session'); | |
``` | |
## API Reference | |
### Client Creation | |
```typescript | |
const client = new RobotHubInferenceClient(baseUrl: string); | |
``` | |
### Health Check Methods | |
- `isHealthy()`: Quick boolean health check | |
- `getHealth()`: Detailed health information | |
### Session Management | |
- `createSession(request: CreateSessionRequest)`: Create inference session | |
- `listSessions()`: List all active sessions | |
- `getSessionStatus(sessionId: string)`: Get session details | |
- `deleteSession(sessionId: string)`: Delete session and cleanup | |
### Inference Control | |
- `startInference(sessionId: string)`: Start model inference | |
- `stopInference(sessionId: string)`: Stop model inference | |
- `restartInference(sessionId: string)`: Restart model inference | |
### Utility Methods | |
- `waitForSessionStatus(sessionId, targetStatus, timeout)`: Wait for status change | |
- `createAndStartSession(request)`: Create session and start inference in one call | |
### Debug Methods | |
- `getSystemInfo()`: Get server system information | |
- `debugResetSession(sessionId: string)`: Reset session state | |
- `getSessionQueueInfo(sessionId: string)`: Get action queue details | |
## Generated Types | |
All types are generated from the OpenAPI specification: | |
```typescript | |
import type { | |
CreateSessionRequest, | |
CreateSessionResponse, | |
SessionStatusResponse, | |
// ... all other types | |
} from '@robothub/inference-server-client'; | |
``` | |
Key types: | |
- `CreateSessionRequest`: Session creation parameters | |
- `CreateSessionResponse`: Session creation result with room IDs | |
- `SessionStatusResponse`: Complete session status and statistics | |
## Examples | |
### Basic Usage | |
```bash | |
bun run examples/basic-usage.ts | |
``` | |
### Quick Example | |
```bash | |
bun run examples/basic-usage.ts --quick | |
``` | |
## Development | |
### Scripts | |
- `bun run generate`: Export OpenAPI schema and generate client | |
- `bun run build`: Build the client distribution | |
- `bun run typecheck`: Run TypeScript type checking | |
- `bun run test`: Run tests | |
- `bun run clean`: Clean generated files and dist | |
### Regenerating Client | |
The client is automatically regenerated when you run `bun run build`. To manually regenerate: | |
```bash | |
# Export latest OpenAPI schema from inference server | |
bun run export-openapi | |
# Generate TypeScript client from schema | |
bun run generate-client | |
``` | |
### File Structure | |
``` | |
client/ | |
βββ src/ | |
β βββ generated/ # Auto-generated from OpenAPI | |
β β βββ index.ts # Generated exports | |
β β βββ services.gen.ts # Generated API methods | |
β β βββ types.gen.ts # Generated TypeScript types | |
β β βββ schemas.gen.ts # Generated schemas | |
β βββ index.ts # Main client wrapper | |
βββ examples/ | |
β βββ basic-usage.ts # Usage examples | |
βββ dist/ # Built files | |
βββ openapi.json # Latest OpenAPI schema | |
βββ package.json | |
``` | |
## Requirements | |
- **Bun** >= 1.0.0 (for development and building) | |
- **RobotHub Inference Server** running on target URL | |
- **RobotHub Transport Server** for communication rooms | |
## Communication Architecture | |
The inference server uses the RobotHub communication system: | |
1. **Camera Rooms**: Receive video streams (supports multiple cameras) | |
2. **Joint Input Room**: Receives current robot joint positions (normalized -100 to +100) | |
3. **Joint Output Room**: Sends predicted joint commands (normalized -100 to +100) | |
All rooms are created in the same workspace for session isolation. | |
## Error Handling | |
All client methods throw descriptive errors on failure: | |
```typescript | |
try { | |
await client.createSession(request); | |
} catch (error) { | |
console.error('Session creation failed:', error.message); | |
} | |
``` | |
## Contributing | |
This client is auto-generated from the OpenAPI specification. To make changes: | |
1. Update the inference server's FastAPI endpoints | |
2. Regenerate the client: `bun run generate` | |
3. Update examples and documentation as needed | |
## License | |
Apache 2.0 - See LICENSE file for details. | |