@raindrop-ai/bedrock
v0.0.8
Published
Raindrop integration for AWS Bedrock
Downloads
1,334
Keywords
Readme
@raindrop-ai/bedrock
Raindrop integration for AWS Bedrock. Automatically captures Converse and InvokeModel calls by wrapping the BedrockRuntimeClient.
Installation
npm install @raindrop-ai/bedrock @aws-sdk/client-bedrock-runtimeUsage
import { createRaindropBedrock } from "@raindrop-ai/bedrock";
import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime";
const raindrop = createRaindropBedrock({
writeKey: "your-write-key",
userId: "user-123",
});
const client = new BedrockRuntimeClient({ region: "us-east-1" });
const wrapped = raindrop.wrap(client);
const response = await wrapped.send(
new ConverseCommand({
modelId: "anthropic.claude-3-5-sonnet-20241022-v2:0",
messages: [
{ role: "user", content: [{ text: "Hello!" }] },
],
}),
);
await raindrop.flush();What gets captured
- Converse API: input messages, output text, model ID, token usage (inputTokens/outputTokens)
- InvokeModel API: raw request/response bodies, model ID, token usage (Claude, Titan, and Llama formats)
- Errors: captured with OTLP error status, re-thrown to the caller
Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| writeKey | string | - | Raindrop API write key (omit to disable telemetry) |
| endpoint | string | https://api.raindrop.ai/v1/ | API endpoint |
| userId | string | - | Associate all events with a user |
| convoId | string | - | Group events into a conversation |
| projectId | string | - | Route events to a specific project (slug); omit for the default Production project |
| debug | boolean | false | Enable verbose logging |
| maxTextFieldChars | number | 1000000 | Per-field character cap for captured input/output text |
Projects
If your org has multiple projects, route events to a specific one by passing its slug as projectId:
const raindrop = createRaindropBedrock({
writeKey: "your-write-key",
projectId: "support-prod",
});This sets the X-Raindrop-Project-Id header on every event. Omit it (or pass "default") to use your org's default Production project — the existing behavior. Single-project orgs need nothing new.
Payload size limits
Captured input/output text is capped at 1,000,000 characters per field by
default and truncated with a ...[truncated by raindrop] marker (the
result, marker included, never exceeds the limit). The cap is enforced before
the text enters the event/span pipeline, so multi-MB prompts or responses
cost the cap — not the payload — on your calling thread, and oversized events
land truncated instead of being dropped at the ingest size limit. Tune it via
maxTextFieldChars.
Testing
pnpm testTests use MSW to intercept HTTP requests — no real AWS calls are made.
