UNPKG

@devvai/devv-code-backend

Version:

Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities

64 lines (63 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DevvWebSearch = void 0; const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); /** * DevvWebSearch - Web search functionality using Jina SERP API * * Searches the web and returns top results in LLM-friendly format * * Usage: * ```typescript * const webSearch = new DevvWebSearch(); * const result = await webSearch.search({ * query: "artificial intelligence news" * }); * ``` */ class DevvWebSearch { async search(options) { if (!options.query) { throw new Error('Query is required for web search'); } // Format query string const query = this.formatQuery(options.query); // Get authentication info const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); // Build request headers const headers = { 'Accept': 'application/json', 'X-Respond-With': 'no-content', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } // Send request const response = await fetch(`${constants_1.BASE_URL}api/v1/jina-serp?q=${query}`, { method: 'POST', headers }); if (!response.ok) { const error = await response.json().catch(() => ({ error: 'Web search failed' })); throw new Error(error.error || `Failed to search (Status: ${response.status})`); } // Parse response const result = await response.json(); // Check business status codes if (result.code !== 200 || result.status !== 20000) { throw new Error(`Search failed with code ${result.code}`); } return result; } formatQuery(query) { if (Array.isArray(query)) { return encodeURIComponent(query.join(' ')); } return encodeURIComponent(query); } } exports.DevvWebSearch = DevvWebSearch;