UNPKG

@devvai/devv-code-backend

Version:

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

57 lines (56 loc) 1.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DevvAI = void 0; const openai_1 = __importDefault(require("openai")); const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); /** * DevvAI extends OpenAI client with pre-configured authentication * * Usage: * ```typescript * const ai = new DevvAI(); * const response = await ai.chat.completions.create({ * model: 'gpt-3.5-turbo', // Model parameter is provided by backend * messages: [{ role: 'user', content: 'Hello!' }] * }); * ``` * * Note: The model parameter is required in requests but will be overridden by backend. * The actual model used is determined by your Devv project configuration. */ class DevvAI extends openai_1.default { constructor() { const sid = (0, session_1.getSid)(); const deviceId = (0, device_1.getEncryptedDeviceId)(); super({ apiKey: sid || '', // OpenAI SDK requires an API key, but we use session-based auth baseURL: `${constants_1.BASE_URL}openai/v1`, dangerouslyAllowBrowser: true, defaultHeaders: { 'Device-Id': deviceId } }); } async prepareRequest(request) { const sid = (0, session_1.getSid)(); if (!request.headers) { request.headers = {}; } if (request.headers instanceof Headers) { if (sid) { request.headers.set('sid', sid); } } else { if (sid) { request.headers['sid'] = sid; } } } } exports.DevvAI = DevvAI;