## Installation

### npm

```
npm install @raindrop-ai/azure-openai openai
```

## Quick Start

### TypeScript

```
import { createRaindropAzureOpenAI } from "@raindrop-ai/azure-openai";
import { AzureOpenAI } from "openai";

const raindrop = createRaindropAzureOpenAI({
  writeKey: "your-write-key",
  userId: "user-123",
});

const client = new AzureOpenAI({
  endpoint: "https://your-resource.openai.azure.com",
  apiKey: "...",
  apiVersion: "2024-10-21",
});

const wrapped = raindrop.wrap(client);

const response = await wrapped.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [{ role: "user", content: "What is the capital of France?" }],
});

console.log(response.choices[0].message.content);
await raindrop.shutdown();
```

## What Gets Traced

- **Chat completions** — input messages (user text only), output text, model, token usage (prompt/completion)
- **Finish reason** — `azure_openai.finish_reason` (`stop`, `length`, `content_filter`, `tool_calls`)
- **Extended tokens** — `ai.usage.cached_tokens` (prompt cache hits) and `ai.usage.thoughts_tokens` (reasoning tokens for o1/o3 models)
- **Errors** — captured with error status, re-thrown to caller

## Configuration

### TypeScript

```
const raindrop = createRaindropAzureOpenAI({
  writeKey: "your-write-key",       // Optional: your Raindrop write key (omit to disable telemetry)
  endpoint: "...",          // Optional: custom Raindrop API endpoint
  userId: "user-123",      // Optional: associate events with a user
  convoId: "convo-456",    // Optional: conversation/thread ID
  debug: false,             // Optional: enable verbose logging
});
```

## Flushing and Shutdown

```
await raindrop.flush();     // flush pending data
await raindrop.shutdown();  // flush + release resources
```

## User Identification

```
raindrop.identify("user-123", { plan: "pro", name: "Alice" });
```

## Tracking Signals

```
raindrop.trackSignal({
  eventId: "evt-abc",
  name: "thumbs_up",
  signalType: "feedback",
  sentiment: "POSITIVE",
  comment: "Great response!",
});
```

## Factory Function (Backwards-Compatible)

```
from raindrop_azure_openai import create_raindrop_azure_openai

raindrop = create_raindrop_azure_openai(api_key="rk_...", user_id="user-123")
# Returns a RaindropAzureOpenAI instance
```
