> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conare.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# TypeScript-SDK

> Typisiertes, dependency-freies TypeScript-SDK für die Conare-Partner-API – läuft in Node, Bun, Deno und Cloudflare Workers auf globaler fetch-Runtime.

```bash theme={null}
bun add @conare/sdk   # oder: npm i @conare/sdk
```

Läuft in Node 18+, Bun, Deno und Cloudflare Workers über das globale `fetch`. Keine Abhängigkeiten. Halte den `cint_...`-Key in einem serverseitigen Secret-Manager.

## Setup

```ts theme={null}
import { Conare, ConareError, hasAnswer } from "@conare/sdk";

const conare = new Conare({
  apiKey: process.env.CONARE_API_KEY!,
});

// Nebeneffektfreier Deploy-Smoke-Test: Key, Namespace-Konfig, Backend-Hop.
await conare.status();
```

## Recall beim Session-Start

```ts theme={null}
const recalled = await conare.recall({
  endUserId: "u_123",
  query: "what matters to this user right now",
});
if (hasAnswer(recalled)) {
  systemPrompt += `\n\nWhat we know about this user:\n${recalled.answer}`;
}
```

`hasAnswer` grenzt die Union ein: Pläne, deren Deep-Recall-Kontingent aufgebraucht ist, fallen auf rohe Ergebnisse zurück, statt einen Fehler zu werfen – dein Prompt-Aufbau bricht also nie.

## Beobachtungen speichern

```ts theme={null}
await conare.memories.save({
  endUserId: "u_123",
  content: "User prefers smaller islands and wants to avoid crowds.",
  containerTag: "conversation-observation",
});
```

## Client-Oberfläche

| Methode                                              | Zweck                                                 |
| ---------------------------------------------------- | ----------------------------------------------------- |
| `status`                                             | Authentifizierter, nebeneffektfreier Readiness-Check  |
| `memories.save`, `memories.saveBatch`                | Nur anfügende destillierte Beobachtungen              |
| `memories.search`                                    | Schnelles rohes hybrides Retrieval, ohne Synthese     |
| `memories.getSource`, `upsertSource`, `deleteSource` | [Source-owned Lifecycle](/memory/lifecycle)           |
| `memories.lifecycleBatch`                            | Versionierter Bulk-Bootstrap mit Ergebnissen pro Item |
| `recall`                                             | Zitatbasierte personalisierte Antwort                 |
| `suggestions`                                        | Bis zu fünf fundierte proaktive Aktionen              |
| `deleteContainer`                                    | Memories eines Containers löschen                     |
| `deleteUser`                                         | Vollständige Endnutzer-Löschung (DSGVO)               |

## Retrieval eingrenzen

`search`, `recall` und `suggestions` akzeptieren einen optionalen `containerTag`, der das Retrieval vor jeder Synthese auf einen Container beschränkt. Tagge jeden Schreibvorgang mit deiner Workspace-ID und scope jeden Lesevorgang mit demselben Tag – so tauchen Fakten eines Workspace niemals in den Antworten eines anderen auf.

## Observability

Jeder Request sendet eine sichere `X-Request-Id` (Retries behalten sie); jede Response gibt sie zurück, und `ConareError.requestId` macht sie für die Support-Korrelation zugänglich. Übergib einen `onResponse`-Hook, um deine Metriken zu speisen:

```ts theme={null}
const conare = new Conare({
  apiKey: process.env.CONARE_API_KEY!,
  onResponse(meta) {
    metrics.timing("conare.request", meta.durationMs, {
      status: String(meta.status),
      requestId: meta.requestId,
    });
  },
});
```
