Spaces:
Sleeping
Sleeping
| // Use environment variable for API URL, fallback to localhost for development | |
| const API_BASE = import.meta.env.VITE_API_URL || 'http://localhost:8000/api'; | |
| /** | |
| * Run a query with zero-storage privacy | |
| * Requires Dropbox access token to re-fetch documents at query time | |
| */ | |
| export async function runQuery(query, accessToken, topK = 3) { | |
| const res = await fetch(`${API_BASE}/query-secure`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ | |
| query, | |
| access_token: accessToken, | |
| top_k: topK | |
| }) | |
| }); | |
| return res.json(); | |
| } | |
| export async function reindex(docsDir, outputPath = 'data/chunks.jsonl') { | |
| const res = await fetch(`${API_BASE}/ingest`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ docs_dir: docsDir, output_path: outputPath }) | |
| }); | |
| return res.json(); | |
| } | |
| export async function syncPinecone(chunksPath = 'data/chunks.jsonl') { | |
| const res = await fetch(`${API_BASE}/sync-pinecone`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ chunks_path: chunksPath }) | |
| }); | |
| return res.json(); | |
| } | |
| export async function getStatus(chunksPath = 'data/chunks.jsonl') { | |
| const res = await fetch(`${API_BASE}/status?chunks_path=${encodeURIComponent(chunksPath)}`); | |
| return res.json(); | |
| } | |
| export async function healthCheck() { | |
| const res = await fetch(`${API_BASE}/health`); | |
| return res.json(); | |
| } | |
| /** | |
| * Clear all vectors from Pinecone index | |
| */ | |
| export async function clearIndex() { | |
| const res = await fetch(`${API_BASE}/clear-index`, { | |
| method: 'DELETE' | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Send pre-chunked text to server for embedding | |
| * Text is discarded immediately after embedding | |
| */ | |
| export async function embedChunks(chunks) { | |
| const res = await fetch(`${API_BASE}/embed-chunks`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ chunks }) | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Exchange Dropbox authorization code for access token | |
| */ | |
| export async function exchangeDropboxCode(code, redirectUri) { | |
| const res = await fetch(`${API_BASE}/dropbox/token`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ code, redirect_uri: redirectUri }) | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Get Dropbox folder contents via backend proxy | |
| */ | |
| export async function getDropboxFolder(path, accessToken) { | |
| const res = await fetch(`${API_BASE}/dropbox/folder`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ path, access_token: accessToken }) | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Get Dropbox file content via backend proxy | |
| */ | |
| export async function getDropboxFile(filePath, accessToken) { | |
| const res = await fetch(`${API_BASE}/dropbox/file`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ path: filePath, access_token: accessToken }) | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Evaluate Docling parsing on a Dropbox file | |
| * Returns element breakdown and parsing metrics | |
| */ | |
| export async function evalParsing(filePath, accessToken) { | |
| const res = await fetch(`${API_BASE}/eval/parsing`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ path: filePath, access_token: accessToken }) | |
| }); | |
| return res.json(); | |
| } | |
| /** | |
| * Get supported document formats for Docling parsing | |
| */ | |
| export async function getSupportedFormats() { | |
| const res = await fetch(`${API_BASE}/eval/formats`); | |
| return res.json(); | |
| } | |
| /** | |
| * Parse files with Docling and return COMPLETE output | |
| * Returns all elements (not just samples) for full document preview | |
| */ | |
| export async function parseWithDocling(files, accessToken) { | |
| const res = await fetch(`${API_BASE}/parse-docling`, { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ files, access_token: accessToken }) | |
| }); | |
| return res.json(); | |
| } | |