cline-sdk
Version:
Comprehensive SDK for Cline - AI-powered development assistant with database integration, execution modes, and custom functions
962 lines (785 loc) • 27.7 kB
Markdown
# Cline SDK - Vollständige Dokumentation
Eine umfassende SDK für die Integration von KI-gestützter Entwicklungsautomatisierung mit PostgreSQL-Datenbankunterstützung, flexiblen Ausführungsmodi und benutzerdefinierten Funktionen.
## 🚀 Überblick
Die Cline SDK ermöglicht es Ihnen, KI-Assistenten nahtlos in Ihre Anwendungen zu integrieren. Mit Unterstützung für verschiedene Ausführungsmodi, Datenbankoperationen und benutzerdefinierte Funktionen können Sie alles von einfachen Frage-Antwort-Systemen bis hin zu vollständigen Automatisierungsworkflows erstellen.
### Hauptfunktionen
- **🤖 KI-Integration**: Anthropic Claude API mit vollem Funktionsumfang
- **🔧 Prompt-Optimierung**: Weltweit erste integrierte Prompt-Analyse und Verbesserung mit automatischer Bewertung (Klarheit, Spezifität, Vollständigkeit, Struktur)
- **🔄 Ausführungsmodi**: Ask/Plan/Act Modi für verschiedene Anwendungsfälle mit intelligenter Modusumschaltung
- **📡 Event-System**: Echtzeit-Events für KI-Denken, Chat-Antworten und Ausführungszustände (wie original Cline)
- **🔄 Auto-Retry**: Intelligente Wiederholungsmechanismen mit konfigurierbaren Verzögerungen und Fehlerklassifizierung
- **🐘 PostgreSQL Integration**: Vollständige Datenbankunterstützung mit Row Level Security (RLS)
- **📚 Tabellen-Wissen**: Registrierung von Geschäftskontext für Datenbanktabellen mit GDPR-Unterstützung
- **🎯 Benutzerdefinierte Funktionen**: Erweitern Sie die KI mit Ihren eigenen Geschäftsfunktionen
- **☁️ Cloud-Speicher**: Supabase Integration für verteilte Dateioperationen mit transparentem projectPath
- **🛡️ Sicherheit**: Umfassende Berechtigungen und Zugriffskontrollen mit feingranulärer Tool-Beschränkung
- **💰 Kostenüberwachung**: Integrierte API-Kostenüberwachung und -optimierung mit Real-time Tracking
## 📦 Installation
```bash
npm install cline-sdk
# oder
yarn add cline-sdk
```
### Abhängigkeiten
- Node.js 18+
- PostgreSQL 12+ (optional, für Datenbankfunktionen)
- Anthropic API Key
## 🎯 Schnellstart
### Grundlegende Verwendung
```javascript
const { CompleteClineSDK } = require('cline-sdk')
const sdk = new CompleteClineSDK({
apiProvider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY,
enabledTools: ["Write", "Read", "Bash"],
workingDirectory: process.cwd(),
storageType: "local"
})
// Einfache Aufgabe erstellen
await sdk.createTask("Erstelle eine README.md Datei für mein Projekt")
```
### Mit Datenbank
```javascript
const sdk = new CompleteClineSDK({
apiProvider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY,
enabledTools: ["Write", "Read"],
enableDatabase: true,
database: {
host: "localhost",
port: 5432,
database: "meine_db",
username: "user",
password: "password",
permissions: {
allowRead: true,
allowWrite: true,
allowDelete: false
}
}
})
```
## 🔄 Ausführungsmodi
Die SDK unterstützt drei verschiedene Ausführungsmodi für maximale Flexibilität:
### ASK-Modus ❓
**Nur Fragen beantworten - keine Aktionen ausführen**
```javascript
sdk.setExecutionMode("ask")
await sdk.createTask("Erkläre mir, wie REST APIs funktionieren")
```
**Anwendungsfälle:**
- Lernen und Erklärungen
- Beratung und Best Practices
- Sichere Umgebung für Fragen
- Code-Reviews ohne Änderungsrisiko
### PLAN-Modus 📋
**Analysieren und planen - nur Lese-Operationen**
```javascript
sdk.setExecutionMode("plan")
await sdk.createTask("Analysiere meine Datenbankstruktur und erstelle einen Optimierungsplan")
```
**Anwendungsfälle:**
- Code-Analyse und Reviews
- Refactoring-Planung
- Datenbankschema-Analyse
- Sicherheitsüberprüfungen
### ACT-Modus ⚡
**Vollständige Ausführung - alle Tools verfügbar**
```javascript
sdk.setExecutionMode("act")
await sdk.createTask("Implementiere die geplanten Datenbankoptimierungen")
```
**Anwendungsfälle:**
- Vollständige Automatisierung
- CI/CD-Integration
- Produktive Entwicklung
- Datenmigration
### Dynamischer Moduswechsel
```javascript
// Programmatisch
sdk.setExecutionMode("ask")
// Via Kommandos
await sdk.createTask("/plan") // Wechselt zu PLAN-Modus
// Natürliche Sprache
await sdk.createTask("Wechsle in den Ask-Modus und erkläre mir...")
// Automatische Erkennung
await sdk.createTask("Erkläre nur") // → ASK-Modus
await sdk.createTask("Erstelle einen Plan") // → PLAN-Modus
await sdk.createTask("Führe es aus") // → ACT-Modus
```
## 🎯 Benutzerdefinierte Funktionen
Erweitern Sie die KI mit Ihren eigenen Geschäftsfunktionen:
```javascript
// Funktion registrieren
sdk.registerFunction(
{
name: "validateEmail",
description: "Validiert E-Mail-Adressen nach Geschäftsregeln",
category: "validation",
parameters: [
{
name: "email",
type: "string",
required: true,
description: "E-Mail-Adresse zum Validieren"
},
{
name: "checkDomain",
type: "boolean",
optional: true,
default: false,
description: "Domain-Validierung aktivieren"
}
]
},
async (email, checkDomain = false) => {
// Ihre Validierungslogik
const isValid = /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/.test(email)
let domainCheck = null
if (checkDomain && isValid) {
const domain = email.split('@')[1]
domainCheck = await validateDomain(domain)
}
return {
email,
isValid,
domainCheck,
timestamp: new Date().toISOString()
}
}
)
// KI kann die Funktion nun verwenden
await sdk.createTask("Validiere die E-Mail 'test@beispiel.de' mit Domain-Check")
```
### Funktionskategorien
- **validation**: Datenvalidierung und Qualitätskontrolle
- **business**: Geschäftslogik und Berechnungen
- **external**: API-Aufrufe und externe Integrationen
- **utility**: Hilfsfunktionen und Tools
- **analysis**: Datenanalyse und Reporting
## 🐘 PostgreSQL Integration
### Datenbankverbindung
```javascript
const sdk = new CompleteClineSDK({
enableDatabase: true,
database: {
host: "localhost",
port: 5432,
database: "meine_app",
username: "app_user",
password: "sicheres_passwort",
ssl: true, // Für Produktionsumgebungen
maxConnections: 10,
permissions: {
allowRead: true,
allowWrite: true,
allowDelete: false,
allowSchemaChanges: false,
allowRLSManagement: true,
restrictedTables: ["admin_logs", "sensitive_data"],
allowedTables: ["users", "products", "orders"]
}
}
})
```
### Datenbankoperationen
```javascript
// Schema-Introspection
await sdk.createTask("Zeige mir alle Tabellen in der Datenbank")
// Sichere Abfragen
await sdk.createTask("Finde alle Benutzer mit mehr als 5 Bestellungen")
// Row Level Security
await sdk.createTask("Erstelle RLS-Richtlinien für die users-Tabelle")
```
### Berechtigungssystem
```javascript
const permissions = {
allowRead: true, // SELECT-Abfragen erlauben
allowWrite: true, // INSERT/UPDATE erlauben
allowDelete: false, // DELETE-Operationen verbieten
allowSchemaChanges: false, // DDL-Operationen verbieten
allowRLSManagement: true, // Row Level Security Management
// Tabellen-spezifische Kontrolle
restrictedTables: [ // Vollständig gesperrte Tabellen
"admin_logs",
"payment_details",
"sensitive_data"
],
allowedTables: [ // Explizit erlaubte Tabellen (leer = alle außer restricted)
"users",
"products",
"orders"
]
}
```
## 📚 Tabellen-Wissen System
Registrieren Sie Geschäftskontext für Ihre Datenbanktabellen:
```javascript
// Tabellenwissen registrieren
sdk.addTable({
schemaName: "public",
tableName: "customers",
businessName: "Kundendatenbank",
description: "Zentrale Kundenverwaltung für E-Commerce",
businessPurpose: "Speichert Kundendaten für Bestellungen und Marketing",
domain: "customer-management",
columns: [
{
name: "id",
dataType: "uuid",
description: "Eindeutige Kunden-ID",
businessPurpose: "Primärschlüssel für Kundenreferenzen",
validation: { required: true },
privacy: { isPII: false, accessLevel: "internal" },
businessRules: ["UUID v4 Format", "Unveränderlich nach Erstellung"],
examples: ["123e4567-e89b-12d3-a456-426614174000"]
},
{
name: "email",
dataType: "varchar",
description: "Kunden-E-Mail-Adresse",
businessPurpose: "Authentifizierung und Kommunikation",
validation: {
required: true,
pattern: "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$",
maxLength: 255
},
privacy: {
isPII: true,
accessLevel: "restricted",
gdprRelevant: true
},
businessRules: [
"Muss eindeutig sein",
"Für Login erforderlich",
"Für Passwort-Reset verwendet"
],
commonQueries: [
"SELECT * FROM customers WHERE email = ?",
"SELECT COUNT(*) FROM customers WHERE email = ?"
]
}
],
relationships: {
childTables: ["orders", "customer_addresses", "reviews"],
description: "Kunden haben Bestellungen, Adressen und Bewertungen"
},
businessRules: [
{
rule: "E-Mail-Eindeutigkeit",
description: "Jede E-Mail kann nur einem aktiven Konto zugeordnet sein",
sqlConstraint: "UNIQUE(email) WHERE active = true"
}
],
commonUseCases: [
{
useCase: "Kundensuche",
description: "Kunde für Support finden",
frequency: "täglich",
exampleQuery: "SELECT * FROM customers WHERE email = $1"
}
],
security: {
accessLevel: "restricted",
requiresRLS: true,
auditingRequired: true
},
tags: ["core", "pii", "gdpr", "customer-management"]
})
// Wissen durchsuchen
const piiTables = sdk.searchTableKnowledge({ tags: ["pii"] })
const customerTables = sdk.searchTableKnowledge({ domain: "customer-management" })
// KI-Kontext generieren
const context = sdk.generateKnowledgeContext()
```
### Datenschutz und Compliance
```javascript
// GDPR-relevante Spalten markieren
{
name: "personal_data",
privacy: {
isPII: true, // Personenbezogene Daten
gdprRelevant: true, // GDPR-relevant
accessLevel: "confidential", // Zugriffslevel
isEncrypted: true // Verschlüsselt gespeichert
}
}
```
## ☁️ Supabase Cloud-Speicher
```javascript
const sdk = new CompleteClineSDK({
storageType: "supabase",
supabase: {
url: process.env.SUPABASE_URL,
anonKey: process.env.SUPABASE_ANON_KEY,
bucket: "meine-dateien",
basePath: "sdk-files/"
}
})
// Dateien werden automatisch in die Cloud hochgeladen
await sdk.createTask("Erstelle eine Konfigurationsdatei und lade sie hoch")
```
## 🛡️ Sicherheit und Berechtigungen
### Tool-Beschränkungen
```javascript
// Tools pro Modus beschränken
const restrictions = sdk.getCurrentModeRestrictions()
console.log(restrictions)
// {
// canExecuteTools: true,
// canWriteFiles: false, // Im PLAN-Modus
// canRunCommands: false,
// canModifyDatabase: false,
// maxToolsPerTask: 5
// }
```
### Datenbankberechtigungen
```javascript
// Feingranuläre Kontrolle
const dbPermissions = {
allowRead: true,
allowWrite: true,
allowDelete: false, // Keine Löschungen erlauben
allowSchemaChanges: false, // Keine DDL-Operationen
allowRLSManagement: true, // RLS-Verwaltung erlauben
restrictedTables: [ // Gesperrte Tabellen
"admin_users",
"payment_logs",
"audit_trail"
]
}
```
## 🎨 Beispiele und Anwendungsfälle
### 1. Grundlegende Verwendung
```bash
npm run example:basic
```
Zeigt die grundlegenden SDK-Funktionen und einfache Dateioperationen.
### 2. Ausführungsmodi
```bash
npm run example:modes
```
Demonstriert Ask/Plan/Act-Modi und dynamisches Mode-Switching.
### 3. Benutzerdefinierte Funktionen
```bash
npm run example:functions
```
Zeigt die Registrierung und Verwendung eigener Geschäftsfunktionen.
### 4. Datenbankintegration
```bash
npm run example:database
```
PostgreSQL-Integration mit Schema-Exploration und sicheren Abfragen.
### 5. Tabellen-Wissen
```bash
npm run example:knowledge
```
Registrierung von Geschäftskontext für Datenbanktabellen.
### 6. Supabase Cloud-Speicher
```bash
npm run example:supabase
```
Cloud-basierte Dateioperationen mit Supabase.
### 7. Vollständiger Workflow
```bash
npm run example:workflow
```
End-to-End-Workflow: Ask → Plan → Act mit allen Funktionen.
### 8. Event-Überwachung
```bash
npm run example:events
```
Echzeit-Events für KI-Denken, Chat-Antworten und Ausführungszustände.
### 9. Auto-Retry System
```bash
npm run example:retry
```
Automatische Wiederholung bei Fehlern mit konfigurierbaren Verzögerungen.
### 10. Prompt-Optimierung
```bash
npm run example:optimization
```
Weltweit erste integrierte Prompt-Analyse und Verbesserungssystem.
## 📊 Event-System
```javascript
// Aufgaben-Events
sdk.on("task:created", (task) => {
console.log(`Neue Aufgabe: ${task.id}`)
})
sdk.on("task:completed", (task) => {
console.log(`Aufgabe abgeschlossen: ${task.id}`)
})
// KI-Denken Events (wie original Cline)
sdk.on("ai:thinking", (event) => {
console.log(`🧠 KI denkt: ${event.stage} - ${event.content}`)
})
// Chat-Antworten Events
sdk.on("chat:response", (event) => {
console.log(`💬 Antwort: ${event.content}`)
})
// Ausführungszustände Events
sdk.on("execution:state", (event) => {
console.log(`⚡ Zustand: ${event.state}`)
})
// Tool-Ausführung Events
sdk.on("tool:starting", (event) => {
console.log(`🔧 Starte: ${event.toolName}`)
})
sdk.on("tool:completed", (event) => {
console.log(`✅ Abgeschlossen: ${event.toolName} (${event.executionTime}ms)`)
})
// Retry-Events
sdk.on("retry:attempt", (event) => {
console.log(`🔄 Versuch ${event.attemptNumber}: ${event.error}`)
console.log(` Warte ${event.waitTime}ms vor nächstem Versuch...`)
})
// Prompt-Optimierung Events
sdk.on("prompt:optimization:started", (prompt) => {
console.log(`🔧 Optimiere: ${prompt.substring(0, 50)}...`)
})
sdk.on("prompt:optimization:completed", (result) => {
console.log(`✨ Optimierung fertig: ${result.analysis.overall}/10 Punkte`)
})
// Modus-Events
sdk.on("mode:changed", (newMode, oldMode) => {
console.log(`Modus geändert: ${oldMode} → ${newMode}`)
})
```
## 🔧 Prompt-Optimierung
**Weltweit erste SDK mit integrierter Prompt-Optimierung!**
### Automatische Prompt-Analyse
```javascript
const { PromptOptimizer } = require('cline-sdk')
const optimizer = new PromptOptimizer()
const result = optimizer.optimizePrompt("hilf mir das zu reparieren")
console.log(`Klarheit: ${result.analysis.clarity}/10`)
console.log(`Spezifität: ${result.analysis.specificity}/10`)
console.log(`Vollständigkeit: ${result.analysis.completeness}/10`)
console.log(`Struktur: ${result.analysis.structure}/10`)
console.log(`Gesamtbewertung: ${result.analysis.overall}/10`)
// Verbesserter Prompt
console.log(`Verbesserung: ${result.improvedPrompt}`)
// Konkrete Verbesserungsvorschläge
result.suggestions.forEach(suggestion => {
console.log(`💡 ${suggestion}`)
})
```
### SDK-Integration
```javascript
// Direkte Analyse mit dem SDK
const optimization = sdk.analyzePrompt("erstelle eine website")
console.log(sdk.formatOptimizationResults(optimization))
// Event-basierte Optimierung
sdk.on('prompt:optimization:started', (prompt) => {
console.log(`🔧 Analysiere: ${prompt.substring(0, 50)}...`)
})
sdk.on('prompt:optimization:completed', (result) => {
console.log(`✨ Optimierung abgeschlossen: ${result.analysis.overall}/10 Punkte`)
})
```
### Optimierungs-Kommandos
```javascript
// Kommandos für automatische Optimierung
await sdk.createTask("/optimize erstelle eine REST API")
await sdk.createTask("/improve hilf mir beim programmieren")
await sdk.createTask("optimize: mache eine datenbank")
await sdk.createTask("improve prompt: zeige mir den code")
```
**Unterstützte Kommandos:**
- **`/optimize <prompt>`** - Prompt analysieren und verbessern
- **`/improve <prompt>`** - Verbesserungsvorschläge erstellen
- **`optimize: <prompt>`** - Alternative Syntax
- **`improve prompt: <prompt>`** - Ausführliche Syntax
### Bewertungskriterien
Die Prompt-Optimierung bewertet folgende Kriterien (Skala 1-10):
**Klarheit (Clarity)**
- Sind die Anweisungen eindeutig und verständlich?
- Werden Fachbegriffe angemessen erklärt?
- Ist der gewünschte Kontext klar definiert?
**Spezifität (Specificity)**
- Sind die Anforderungen konkret und messbar?
- Werden gewünschte Ausgabeformate spezifiziert?
- Sind Einschränkungen und Parameter klar definiert?
**Vollständigkeit (Completeness)**
- Enthält der Prompt alle notwendigen Informationen?
- Sind Kontext und Hintergrundinformationen ausreichend?
- Werden Beispiele oder Referenzen bereitgestellt?
**Struktur (Structure)**
- Ist der Prompt logisch aufgebaut und organisiert?
- Werden wichtige Punkte hervorgehoben?
- Ist die Reihenfolge der Informationen sinnvoll?
### Praktische Beispiele
```javascript
// Schwacher Prompt
const weak = "hilf mir"
const result1 = optimizer.optimizePrompt(weak)
console.log(`Bewertung: ${result1.analysis.overall}/10`)
// Ausgabe: Bewertung: 2/10
// Verbesserter Prompt
console.log(result1.improvedPrompt)
// "Ich benötige Unterstützung bei einer spezifischen Aufgabe.
// Könnten Sie mir bitte helfen, indem Sie [spezifische Aufgabe]
// mit [gewünschtem Ausgabeformat] lösen?"
// Starker Prompt
const strong = "Erstelle eine REST API in Node.js mit Express für ein E-Commerce-System. Die API soll Endpunkte für Benutzer, Produkte und Bestellungen enthalten. Verwende TypeScript, implementiere Validierung mit Joi und erstelle Swagger-Dokumentation."
const result2 = optimizer.optimizePrompt(strong)
console.log(`Bewertung: ${result2.analysis.overall}/10`)
// Ausgabe: Bewertung: 9/10
```
### Event-System für Optimierung
```javascript
// Überwachung der Optimierungs-Pipeline
sdk.on('prompt:optimization:started', (prompt) => {
console.log(`🔍 Starte Analyse: "${prompt.substring(0, 100)}..."`)
})
sdk.on('prompt:optimization:completed', (result) => {
console.log(`📊 Analyse abgeschlossen:`)
console.log(` Klarheit: ${result.analysis.clarity}/10`)
console.log(` Spezifität: ${result.analysis.specificity}/10`)
console.log(` Vollständigkeit: ${result.analysis.completeness}/10`)
console.log(` Struktur: ${result.analysis.structure}/10`)
console.log(` Gesamt: ${result.analysis.overall}/10`)
if (result.analysis.overall < 7) {
console.log(`💡 Verbesserungsvorschläge:`)
result.suggestions.forEach(s => console.log(` - ${s}`))
}
})
// Automatische Verwendung verbesserter Prompts
sdk.on('prompt:optimization:completed', async (result) => {
if (result.analysis.overall < result.originalAnalysis?.overall) {
console.log(`✨ Verwende verbesserten Prompt automatisch`)
await sdk.createTask(result.improvedPrompt)
}
})
```
### Integration in Workflows
```javascript
// Prompt-Optimierung als Teil des Entwicklungsworkflows
class OptimizedWorkflow {
constructor(sdk) {
this.sdk = sdk
this.promptHistory = []
}
async executeWithOptimization(prompt) {
// Prompt analysieren
const optimization = this.sdk.analyzePrompt(prompt)
this.promptHistory.push({
original: prompt,
optimized: optimization.improvedPrompt,
score: optimization.analysis.overall,
timestamp: new Date()
})
// Verbesserten Prompt verwenden wenn Score zu niedrig
const finalPrompt = optimization.analysis.overall < 7
? optimization.improvedPrompt
: prompt
console.log(`📝 Verwende Prompt (Score: ${optimization.analysis.overall}/10)`)
return await this.sdk.createTask(finalPrompt)
}
getOptimizationStats() {
const improvements = this.promptHistory.filter(h =>
h.optimized !== h.original
).length
const avgScore = this.promptHistory.reduce((sum, h) =>
sum + h.score, 0
) / this.promptHistory.length
return {
totalPrompts: this.promptHistory.length,
optimized: improvements,
averageScore: avgScore.toFixed(1)
}
}
}
// Verwendung
const workflow = new OptimizedWorkflow(sdk)
await workflow.executeWithOptimization("mache mir eine app")
console.log(workflow.getOptimizationStats())
```
## 💰 Kosten-Tracking
```javascript
// Aktuelle Aufgabenkosten
const costs = sdk.getCurrentTaskCost()
console.log(`Kosten: $${costs.reduce((sum, c) => sum + c.total_cost_usd, 0)}`)
// Gesamtkosten
const totalCosts = sdk.getTotalCosts()
console.log(`Gesamtkosten: $${totalCosts.totalCost}`)
console.log(`Durchschnitt pro Aufgabe: $${totalCosts.averageCostPerTask}`)
// Preise anpassen
sdk.setCustomPricing(0.001, 0.002) // Input/Output pro 1k Tokens
```
## 🔧 Konfigurationsoptionen
### Vollständige Konfiguration
```javascript
const config = {
// API-Konfiguration
apiProvider: "anthropic", // "anthropic"
apiKey: "sk-ant-...", // API-Schlüssel
model: "claude-3-5-sonnet-20241022", // Modell-Name
// Tools
enabledTools: [ // Verfügbare Tools
"Write", // Dateien schreiben
"Read", // Dateien lesen
"Bash", // Kommandos ausführen
"CustomFunction" // Benutzerdefinierte Funktionen
],
// Ausführung
executionMode: "act", // "ask", "plan", "act"
workingDirectory: "/pfad/zum/projekt",
// Speicher
storageType: "local", // "local" oder "supabase"
// Supabase (optional)
supabase: {
url: "https://xyz.supabase.co",
anonKey: "eyJ...",
bucket: "dateien",
basePath: "uploads/"
},
// Datenbank (optional)
enableDatabase: true,
database: {
host: "localhost",
port: 5432,
database: "meine_db",
username: "user",
password: "pass",
ssl: true,
maxConnections: 10,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 5000,
permissions: {
allowRead: true,
allowWrite: true,
allowDelete: false,
allowSchemaChanges: false,
allowRLSManagement: true,
restrictedTables: ["admin_data"],
allowedTables: []
}
},
// Funktionen
enableCustomFunctions: true,
// Erweitert
customInstructions: "Zusätzliche Anweisungen für die KI...",
maxRetries: 3,
timeoutMs: 30000
}
```
## 🚨 Fehlerbehandlung
```javascript
try {
const task = await sdk.createTask("Aufgabe mit möglichem Fehler")
sdk.on("task:error", (task, error) => {
console.error(`Aufgabe ${task.id} fehlgeschlagen:`, error.message)
// Automatische Wiederholung oder Fallback-Logic
if (error.message.includes("Berechtigung")) {
sdk.setExecutionMode("plan") // Fallback zu Nur-Lesen
}
})
} catch (error) {
console.error("SDK-Fehler:", error.message)
}
```
## 🧪 Tests
```bash
# PostgreSQL-Tests
npm run test:postgres
# Integrationstests
npm run test:integration
# Testdatenbank einrichten
npm run db:setup
npm run db:cleanup
npm run db:reset
```
## 🔍 Debugging
```javascript
// Debug-Modus aktivieren
const sdk = new CompleteClineSDK({
debug: true,
logLevel: "verbose"
})
// Status-Informationen
console.log("Aktueller Status:", sdk.getState())
console.log("Datenbankstatus:", sdk.getDatabaseStatus())
console.log("Funktionsstatistiken:", sdk.getFunctionStats())
console.log("Tabellenwissen:", sdk.getTableKnowledgeStats())
```
## 🚀 Produktionsbereitschaft
### Umgebungsvariablen
```bash
# .env Datei
ANTHROPIC_API_KEY=sk-ant-...
DB_HOST=produktions-db.beispiel.com
DB_PORT=5432
DB_NAME=produktions_db
DB_USER=app_user
DB_PASSWORD=sicheres_passwort
SUPABASE_URL=https://xyz.supabase.co
SUPABASE_ANON_KEY=eyJ...
```
### Produktionskonfiguration
```javascript
const produktionsConfig = {
apiProvider: "anthropic",
apiKey: process.env.ANTHROPIC_API_KEY,
enabledTools: ["Write", "Read", "DatabaseQuery"],
executionMode: "act",
database: {
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
database: process.env.DB_NAME,
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
ssl: true,
maxConnections: 20,
permissions: {
allowRead: true,
allowWrite: true,
allowDelete: false, // Sicherheit: keine Löschungen
allowSchemaChanges: false, // Sicherheit: keine Schema-Änderungen
allowRLSManagement: false, // Sicherheit: keine RLS-Änderungen
restrictedTables: [ // Kritische Tabellen sperren
"admin_users",
"payment_logs",
"audit_trail"
]
}
},
// Monitoring
enableTelemetry: true,
errorReporting: true
}
```
## 📋 Best Practices
### 1. Sicherheit
- Verwenden Sie Umgebungsvariablen für Credentials
- Beschränken Sie Datenbankberechtigungen auf das Minimum
- Implementieren Sie Row Level Security (RLS)
- Überwachen Sie alle Datenbankoperationen
### 2. Performance
- Verwenden Sie Connection Pooling für Datenbanken
- Setzen Sie angemessene Timeouts
- Monitoren Sie API-Kosten
- Implementieren Sie Caching wo möglich
### 3. Wartbarkeit
- Dokumentieren Sie benutzerdefinierte Funktionen
- Registrieren Sie Tabellenwissen für bessere KI-Verständnis
- Verwenden Sie aussagekräftige Event-Handler
- Strukturieren Sie Konfiguration modular
### 4. Entwicklung
- Starten Sie mit ASK-Modus für Exploration
- Verwenden Sie PLAN-Modus für Code-Reviews
- Testen Sie in ACT-Modus vor Produktionsfreigabe
- Implementieren Sie umfassende Fehlerbehandlung
## 📖 Weitere Ressourcen
- [API-Referenz](./API_REFERENCE.md)
- [Beispielsammlung](./examples/)
- [Troubleshooting](./TROUBLESHOOTING.md)
- [Contributing](./CONTRIBUTING.md)
## 📞 Support
Bei Fragen oder Problemen:
1. Konsultieren Sie die Dokumentation
2. Prüfen Sie die Beispiele
3. Überprüfen Sie die Tests
4. Erstellen Sie ein Issue im Repository
---
*Die Cline SDK ist darauf ausgelegt, KI-Entwicklung zugänglich, sicher und produktiv zu machen. Von einfachen Automatisierungsaufgaben bis hin zu komplexen Datenbankoperationen - die SDK wächst mit Ihren Anforderungen.*