# @orchard9/rdev-sdk

TypeScript SDK for the [rdev Remote Developer API](https://rdev.masq-ops.orchard9.ai/docs) — run Claude Code instances in isolated Kubernetes pods via REST.

## Prerequisites

- Go 1.25+ (to export the spec)
- [Speakeasy CLI](https://www.speakeasy.com/docs/speakeasy-cli/getting-started)
- Node.js 20+

## Regenerating the SDK

The SDK is generated from the live OpenAPI spec embedded in the rdev binary. No server required.

```bash
./scripts/generate-sdk.sh
```

This will:
1. Export the OpenAPI spec from the Go binary (pure, no DB/K8s needed)
2. Validate the spec with Speakeasy
3. Generate the TypeScript SDK into `sdk/typescript/`
4. Build and type-check the SDK

The generated `sdk/openapi.json` is gitignored (regenerated each time). The `sdk/typescript/` output is committed.

## Installation

Until published to npm, install directly from git:

```bash
npm install github:orchard9/rdev#main --workspace sdk/typescript
```

Or copy `sdk/typescript/` into your project.

## Usage

```typescript
import { Rdev } from "@orchard9/rdev-sdk";

const client = new Rdev({
  apiKey: process.env.RDEV_API_KEY,
  serverURL: "https://rdev.masq-ops.orchard9.ai",
});

// List projects
const projects = await client.projects.list();
console.log(projects);

// Run a Claude command
const cmd = await client.projects.runClaude("my-project", {
  prompt: "fix the bug in auth handler",
});
console.log(cmd.streamUrl);

// Stream events
const events = new EventSource(
  `https://rdev.masq-ops.orchard9.ai${cmd.streamUrl}`,
  { headers: { "X-API-Key": process.env.RDEV_API_KEY } }
);
events.addEventListener("complete", (e) => {
  console.log("Done:", JSON.parse(e.data));
  events.close();
});
```

## Authentication

All endpoints (except `/health`, `/ready`, `/docs`) require an API key.

```typescript
const client = new Rdev({
  apiKey: "rdev_sk_xxxxxxxx_...",
});
```

Or set `RDEV_API_KEY` environment variable.

## API Reference

See the [API docs](https://rdev.masq-ops.orchard9.ai/docs) for full endpoint documentation.
