# @ductape/sdk

Connect your Node.js app to databases, message brokers, storage, sessions, scheduled jobs, and more — all through a single access key.

## Install

```sh
npm install @ductape/sdk@latest
```

## Quick start

```ts
import Ductape from '@ductape/sdk';

const ductape = new Ductape({
  accessKey: 'your-access-key',
  product: 'my-product',
  env: 'prd',
});
```

Pass `product` and `env` once at init; every service call inherits them automatically.

## Examples

### Sessions

```ts
const session = await ductape.sessions.start({
  tag: 'user-session',
  data: { userId: 'u1', email: 'user@example.com' },
});
// session.token, session.refreshToken, session.sessionId

await ductape.sessions.verify({ token: session.token });
await ductape.sessions.revoke({ token: session.token });
```

### Message brokers

```ts
await ductape.events.produce({
  event: 'order-events:order-created',
  message: { orderId: '123', amount: 99.99 },
});

await ductape.events.consume({
  event: 'order-events:order-created',
  callback: async (msg) => console.log(msg),
});
```

Supports Kafka, RabbitMQ, Redis, SQS, Google Pub/Sub, and NATS.

### Storage

```ts
await ductape.storage.upload({
  storage: 'main-storage',
  fileName: 'reports/q1.pdf',
  buffer: fileBuffer,
  mimeType: 'application/pdf',
});

const file = await ductape.storage.download({ storage: 'main-storage', fileName: 'reports/q1.pdf' });
const url  = await ductape.storage.getSignedUrl({ storage: 'main-storage', fileName: 'reports/q1.pdf' });
```

Supports AWS S3, Google Cloud Storage, and Azure Blob Storage.

### Databases

```ts
const rows = await ductape.databases.query({
  database: 'main-db',
  table: 'orders',
  where: { status: 'pending' },
});
```

Supports PostgreSQL, MySQL, MariaDB, and Cassandra.

### Features

```ts
await ductape.feature.execute({
  tag: 'process-order',
  data: { orderId: '123' },
});
```

## What's available

| Namespace | Description |
|---|---|
| `ductape.sessions` | JWT sessions — start, verify, refresh, revoke |
| `ductape.events` | Message brokers — produce, consume, manage topics |
| `ductape.storage` | File storage — upload, download, delete, signed URLs |
| `ductape.databases` | Relational databases — query, migrate |
| `ductape.graph` | Graph database — queries and transactions (Neo4j) |
| `ductape.vector` | Vector search — upsert and query (Pinecone, Qdrant, Weaviate) |
| `ductape.warehouse` | Unified query across relational, graph, and vector |
| `ductape.caches` | Cache — get, set, invalidate |
| `ductape.feature` | Features — execute multi-step product flows |
| `ductape.agents` | LLM agents with tools and memory |
| `ductape.models` | LLM inference (OpenAI, Anthropic, and others) |
| `ductape.jobs` | Background jobs — schedule and run |
| `ductape.notifications` | Email, SMS, push, and callback notifications |
| `ductape.secrets` | Secrets — store and resolve per environment |
| `ductape.quota` | Rate limiting and quota enforcement |
| `ductape.fallback` | Fallback policies |
| `ductape.health` | Healthcheck definitions and status |
| `ductape.cloud` | Cloud connection management |
| `ductape.api` | Call actions on integrated third-party apps |

## Requirements

Node.js 18+. Server-side only — browser environments are not supported.

## Documentation

[docs.ductape.app](https://docs.ductape.app)
