UNPKG

@nomyx/assistant

Version:

A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)

76 lines (75 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AIProvider = void 0; const provider_1 = require("../types/provider"); class AIProvider { constructor() { this.middleware = []; this.plugins = []; } use(middleware) { this.middleware.push(middleware); } registerPlugin(plugin) { this.plugins.push(plugin); plugin.initialize(this); } async applyMiddleware(messages) { let processedMessages = messages; for (const mw of this.middleware) { processedMessages = await mw.preProcess(processedMessages); } return processedMessages; } async applyMiddlewareToResponse(response) { let processedResponse = response; for (const mw of this.middleware.slice().reverse()) { processedResponse = await mw.postProcess(processedResponse); } return processedResponse; } async notifyPluginsBeforeChat(messages, options) { for (const plugin of this.plugins) { if (plugin.onBeforeChat) { await plugin.onBeforeChat(messages, options); } } } async notifyPluginsAfterChat(response) { for (const plugin of this.plugins) { if (plugin.onAfterChat) { await plugin.onAfterChat(response); } } } async notifyPluginsOnError(error) { const aiProviderError = new provider_1.AIProviderError(error.message, 'UNKNOWN_ERROR', 'unknown', error, false); for (const plugin of this.plugins) { if (plugin.onError) { await plugin.onError(aiProviderError); } } } async notifyPluginsOnStreamStart() { for (const plugin of this.plugins) { if (plugin.onStreamStart) { await plugin.onStreamStart(); } } } async notifyPluginsOnStreamChunk(chunk) { for (const plugin of this.plugins) { if (plugin.onStreamChunk) { await plugin.onStreamChunk(chunk); } } } async notifyPluginsOnStreamEnd() { for (const plugin of this.plugins) { if (plugin.onStreamEnd) { await plugin.onStreamEnd(); } } } } exports.AIProvider = AIProvider;