Skip to Content
KnowledgeSDKAPI-Referenz (TypeScript)

API-Referenz

Vollstaendige Uebersicht aller exportierten Funktionen, Interfaces und Types.

Core

createSearchStore(config)

Erstellt einen neuen Search Store.

function createSearchStore(config: QmdSearchConfig): Promise<SearchStore>

QmdSearchConfig:

FeldTypDefaultBeschreibung
dbPathstring(Pflicht)Pfad zur SQLite-Datenbank
searchMode'fts' | 'hybrid''fts'Such-Modus
embedProviderEmbedProviderConfig—Embedding-Provider
collectionsCollectionDef[]—Collection-Definitionen
resultFormatterPartial<ResultFormatter>DefaultsErgebnis-Formatierung

SearchStore:

MethodeBeschreibung
search(query, options?)Suche ausfuehren → SearchResponse
getDocument(id, options?)Einzelnes Dokument im Volltext → DocumentResponse | null
listCollections()Collections mit Dokumentanzahl
isHybridSearch()Hybrid-Modus aktiv?
formatterZugriff auf den ResultFormatter
close()Store schliessen

createLimiter(config?)

Erstellt einen Backpressure-Limiter.

function createLimiter(config?: LimiterConfig): { withBackpressure, limit }
FeldTypDefaultBeschreibung
maxConcurrencynumber5Max. parallele Anfragen
maxPendingnumber20Max. wartende Anfragen (dann 429)

Indexer

createIndexer(config)

Erstellt einen Indexer.

function createIndexer(config: IndexerConfig): Indexer

IndexerConfig:

FeldTypBeschreibung
dbPathstringPfad zur SQLite-Datenbank
collectionsCollectionDef[]Collection-Definitionen
contentSourcesContentSourceEntry[]Plugin-basierte Quellen
pluginsContentSourcePlugin[]Registrierte Plugins
embedProviderEmbedProviderConfigEmbedding-Provider
skipEmbedbooleanEmbeddings ueberspringen
fetchOutputDirstringVerzeichnis fuer gefetchte Dateien

Indexer:

MethodeBeschreibung
run(callbacks?)Index erstellen/aktualisieren → IndexResult

IndexResult:

FeldTypBeschreibung
indexednumberNeu indexierte Dokumente
updatednumberAktualisierte Dokumente
unchangednumberUnveraenderte Dokumente
removednumberEntfernte Dokumente
needsEmbeddingnumberDokumente ohne Embedding
duration_snumberDauer in Sekunden

Adapter

createNextHandler(store, options?)

function createNextHandler(store: SearchStore, options?: NextHandlerOptions): (req: Request) => Promise<Response>

createNextDocumentHandler(store, options?)

function createNextDocumentHandler(store: SearchStore, options?: NextHandlerOptions): (req: Request) => Promise<Response>

Handler fuer GET /api/document?id=…. Gibt 501 zurueck, wenn der uebergebene Store kein getDocument anbietet.

createExpressMiddleware(store, options?)

function createExpressMiddleware(store: SearchStore, options?: ExpressMiddlewareOptions): ExpressMiddleware

createExpressDocumentMiddleware(store, options?)

function createExpressDocumentMiddleware(store: SearchStore, options?: ExpressMiddlewareOptions): ExpressMiddleware

Express-Middleware fuer GET /api/document?id=…&maxBytes=….

createHonoHandler(store, options?)

function createHonoHandler(store: SearchStore, options?: HonoHandlerOptions): HonoHandler

createHonoDocumentHandler(store, options?)

function createHonoDocumentHandler(store: SearchStore, options?: HonoHandlerOptions): HonoHandler

Hono-Handler fuer GET /api/document?id=…&maxBytes=….

startServer(store, options?)

function startServer(store: SearchStore, options?: StandaloneServerOptions): Promise<StandaloneServer>

StandaloneServerOptions:

FeldTypDefaultBeschreibung
portnumber3001Server-Port
hoststring'0.0.0.0'Server-Host
authAuthPlugin—Auth-Plugin
corsOriginstring'*'CORS-Origin
mcpMcpSearchServerConfig | boolean—MCP-Endpoint aktivieren

Der Standalone-Server stellt zusätzlich GET /api/document?id=…&maxBytes=… bereit. Die Dokument-ID muss aus einem SearchResponse stammen. Unterstützt der Store keinen Einzelabruf, antwortet der Endpunkt mit 501.

MCP

createMcpSearchServer(store, config?)

function createMcpSearchServer(store: SearchStore, config?: McpSearchServerConfig): Promise<McpServer>

McpSearchServerConfig:

FeldTypDefaultBeschreibung
namestring'knowledge-sdk'Server-Name
versionstring'1.0.0'Version
baseUrlstring''Basis-URL fuer Links
collectionDescriptionsRecord<string, string>{}Beschreibungen
searchToolDescriptionstring(generisch)Tool-Beschreibung
listCollectionsToolDescriptionstring(generisch)Tool-Beschreibung
getDocumentToolDescriptionstring(generisch)Tool-Beschreibung

Das Tool get_document wird nur registriert, wenn der Store getDocument anbietet — bei einem eigenen SearchStore ohne diese Methode bleibt die Tool-Liste unveraendert.

Seit v2.0.0 werden alle Tools ueber registerTool() registriert (die tool()-API des MCP-SDK ist deprecated) und deklarieren ein outputSchema. Siehe MCP-Server → Strukturierte Antworten.

Auth

createEnvAuth(config?)

function createEnvAuth(config?: EnvAuthConfig): AuthPlugin
FeldTypDefaultBeschreibung
headerNamestring'X-API-Key'HTTP-Header
envVarstring'QMD_API_KEY'Env-Var-Name
apiKeystring—Key direkt uebergeben

createOdooAuth(config)

function createOdooAuth(config: OdooAuthConfig): AuthPlugin
FeldTypDefaultBeschreibung
odooBaseUrlstring(Pflicht)Odoo-Basis-URL
validateEndpointstring'/api/validate-key'Endpoint
headerNamestring'X-API-Key'HTTP-Header
cacheTtlMsnumber300000Cache-TTL (5 Min.)
maxCacheSizenumber1000Max. Cache-Eintraege

Types

EmbedProviderConfig

FeldTypBeschreibung
provider'none' | 'local' | 'openai' | 'voyage'Provider-Typ
apiKeystringAPI-Key
modelstringEmbedding-Modell
dimensionsnumberVektor-Dimensionen
domainContextstringKontext fuer Query Expansion
maxRetriesnumberMax. Retries
retryBaseMsnumberBasis-Wartezeit

CollectionDef

FeldTypBeschreibung
namestringEindeutiger Name
pathstringQuellverzeichnis
patternstringGlob-Pattern
contextstringLLM-Kontext
groupstringGruppierung

SearchResponse

FeldTypBeschreibung
resultsSearchResult[]Suchergebnisse
querystringSuchbegriff
collectionstring | nullFilter
totalnumberAnzahl Ergebnisse
duration_msnumberDauer in ms

SearchResult

FeldTypBeschreibung
idstringStabile Dokument-ID (qmd-Virtual-Path) — Eingabe fuer getDocument()
titlestringSeitentitel
pathstringURL-Pfad
collectionstringCollection-Name
snippetstringTextauszug
scorenumberRelevanz-Score

path ist die Ziel-URL und muss nicht umkehrbar sein — ein pathToUrl darf mehrere Dokumente auf dieselbe URL abbilden (auf docs.processcube.io etwa alle Changelogs auf /release-notes#<produkt>). Fuer den Rueckweg zum Dokument ist deshalb id da, nicht path.

DocumentResponse

FeldTypBeschreibung
idstringDokument-ID (identisch zu SearchResult.id)
titlestringSeitentitel
pathstringURL-Pfad
collectionstringCollection-Name
bodystringVolltext (Markdown/MDX-Quelle)
body_lengthnumberLaenge des ungekuerzten Bodys in Zeichen
truncatedbooleantrue, wenn body wegen maxBytes gekuerzt wurde

ContentSourcePlugin

FeldTypBeschreibung
namestringPlugin-Name
fetch(config)Promise<FetchResult>Dateien laden
validate?(config)booleanConfig validieren

AuthPlugin

FeldTypBeschreibung
namestringPlugin-Name
resolve(req)Promise<AuthResult>Request authentifizieren

AuthResult

FeldTypBeschreibung
validbooleanAuthentifiziert?
customerIdstringKunden-ID
scopesstring[]Berechtigungen
errorstringFehlermeldung