@nullplatform/llm-gateway-sdk
Version:
SDK for LLM Gateway plugin development
97 lines • 2.94 kB
JavaScript
;
// packages/sdk/src/base/plugin.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.MainProcessorPlugin = exports.PostProcessorPlugin = exports.PreProcessorPlugin = exports.BasePlugin = void 0;
class BasePlugin {
// Optional hooks with default implementations
async onLoad() {
// Override in subclass if needed
}
async onUnload() {
// Override in subclass if needed
}
async onConfigChange(newConfig) {
// Override in subclass if needed
}
async healthCheck() {
return true;
}
// Helper methods for common plugin tasks
shouldExecute(context) {
// Default: always execute
// Override for conditional execution
return true;
}
logDebug(context, message, extra) {
context.log('debug', `[${this.metadata.name}] ${message}`, extra);
}
logInfo(context, message, extra) {
context.log('info', `[${this.metadata.name}] ${message}`, extra);
}
logWarn(context, message, extra) {
context.log('warn', `[${this.metadata.name}] ${message}`, extra);
}
logError(context, message, extra) {
context.log('error', `[${this.metadata.name}] ${message}`, extra);
}
// Validation helpers
validateConfig(config) {
// Override in subclass for config validation
return true;
}
validateRequest(context) {
// Override in subclass for request validation
return true;
}
}
exports.BasePlugin = BasePlugin;
// Specialized base classes for common plugin types
class PreProcessorPlugin extends BasePlugin {
phase = 'pre';
async execute(context) {
if (!this.shouldExecute(context)) {
return context;
}
try {
return await this.preProcess(context);
}
catch (error) {
this.logError(context, 'Error in pre-processing', { error });
throw error;
}
}
}
exports.PreProcessorPlugin = PreProcessorPlugin;
class PostProcessorPlugin extends BasePlugin {
phase = 'post';
async execute(context) {
if (!this.shouldExecute(context)) {
return context;
}
try {
return await this.postProcess(context);
}
catch (error) {
this.logError(context, 'Error in post-processing', { error });
throw error;
}
}
}
exports.PostProcessorPlugin = PostProcessorPlugin;
class MainProcessorPlugin extends BasePlugin {
phase = 'main';
async execute(context) {
if (!this.shouldExecute(context)) {
return context;
}
try {
return await this.process(context);
}
catch (error) {
this.logError(context, 'Error in main processing', { error });
throw error;
}
}
}
exports.MainProcessorPlugin = MainProcessorPlugin;
//# sourceMappingURL=plugin.js.map