makima-ts
Version:
Typescript SDK for Makima.
128 lines (127 loc) • 4.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.KnowledgeAPI = void 0;
class KnowledgeAPI {
constructor(baseUrl) {
this.baseUrl = baseUrl;
}
// Get all knowledge bases
async getKnowledgeBases() {
const response = await fetch(`${this.baseUrl}/knowledge/`);
if (!response.ok) {
throw new Error(`Failed to get knowledge bases: ${response.statusText}`);
}
return response.json();
}
// Get knowledge base by name
async getKnowledgeBaseByName(name) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}`);
if (!response.ok) {
throw new Error(`Failed to get knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Create a new knowledge base
async createKnowledgeBase(kb) {
const payload = {
...kb,
database_provider: kb.database_provider || "pgvector",
};
const response = await fetch(`${this.baseUrl}/knowledge/create`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
});
if (!response.ok) {
throw new Error(`Failed to create knowledge base: ${response.statusText}`);
}
return response.json();
}
// Update knowledge base
async updateKnowledgeBase(name, kb) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(kb),
});
if (!response.ok) {
throw new Error(`Failed to update knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Delete knowledge base
async deleteKnowledgeBase(name) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}`, {
method: "DELETE",
});
if (!response.ok) {
throw new Error(`Failed to delete knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Add document to knowledge base
async addDocumentToKnowledgeBase(name, document) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}/add-document`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(document),
});
if (!response.ok) {
throw new Error(`Failed to add document to knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Update document in knowledge base
async updateDocumentInKnowledgeBase(name, document) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}/update-document`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(document),
});
if (!response.ok) {
throw new Error(`Failed to update document in knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Remove document from knowledge base
async removeDocumentFromKnowledgeBase(name, documentId) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}/remove-document/${encodeURIComponent(documentId)}`, {
method: "DELETE",
});
if (!response.ok) {
throw new Error(`Failed to remove document from knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Get documents from knowledge base
async getDocumentsFromKnowledgeBase(name) {
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}/documents`);
if (!response.ok) {
throw new Error(`Failed to get documents from knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
// Search knowledge base
async searchKnowledgeBase(name, query, k, model) {
const params = new URLSearchParams();
params.append("q", query);
params.append("k", k.toString());
if (model) {
params.append("model", model);
}
const response = await fetch(`${this.baseUrl}/knowledge/${encodeURIComponent(name)}/search?${params.toString()}`);
if (!response.ok) {
throw new Error(`Failed to search knowledge base '${name}': ${response.statusText}`);
}
return response.json();
}
}
exports.KnowledgeAPI = KnowledgeAPI;