trivium-cognitive-sdk
Version:
Cognitive Architecture SDK with 10 archetypal lenses for comprehensive text analysis
310 lines (266 loc) • 8.85 kB
JavaScript
/**
* Trivium Universal AI Middleware
* Intercepts and enhances ANY AI tool interaction with cognitive lenses
*/
const { TriviumCore, LensPatterns } = require('./standalone-core');
class TriviumMiddleware {
constructor(config = {}) {
this.trivium = new TriviumCore(config.sovereignties);
this.enabled = config.enabled !== false;
this.autoPatterns = config.autoPatterns !== false;
this.interceptors = new Map();
this.sessionCache = new Map();
// Initialize common AI service interceptors
this.initializeInterceptors();
}
/**
* Universal AI request interceptor
* Works with OpenAI, Claude, ChatGPT, Gemini, etc.
*/
async interceptRequest(request) {
if (!this.enabled) return request;
const { prompt, context, service } = this.parseRequest(request);
const pattern = this.selectOptimalPattern(prompt, context, service);
if (pattern) {
const enhancedPrompt = await this.enhancePrompt(prompt, pattern);
return this.rebuildRequest(request, enhancedPrompt);
}
return request;
}
/**
* Universal AI response interceptor
* Applies cognitive analysis to any AI response
*/
async interceptResponse(response, originalRequest) {
if (!this.enabled) return response;
const { content, metadata } = this.parseResponse(response);
const pattern = this.getPatternFromRequest(originalRequest);
if (pattern) {
const analysis = await this.trivium.processWithPattern(content, pattern);
return this.enhanceResponse(response, analysis);
}
return response;
}
/**
* Auto-detect optimal cognitive pattern based on request context
*/
selectOptimalPattern(prompt, context, service) {
// Code-related prompts
if (this.isCodeRelated(prompt)) {
return LensPatterns.CODE_REVIEW;
}
// Problem-solving prompts
if (this.isProblemSolving(prompt)) {
return LensPatterns.DEBUGGING;
}
// Creative/design prompts
if (this.isCreative(prompt)) {
return LensPatterns.UX_ANALYSIS;
}
// Security/sensitive prompts
if (this.isSecurityRelated(prompt)) {
return LensPatterns.SECURITY_AUDIT;
}
// Default comprehensive analysis
return LensPatterns.COMPLETE_ANALYSIS;
}
/**
* Enhance original prompt with cognitive lens guidance
*/
async enhancePrompt(prompt, pattern) {
const lensGuidance = pattern.lenses.map(lens => {
switch(lens) {
case 'ethical':
return 'Consider ethical implications and moral consequences.';
case 'logical':
return 'Apply systematic reasoning and logical analysis.';
case 'emotional':
return 'Consider emotional impact and user experience.';
case 'survival':
return 'Evaluate robustness, risks, and defensive measures.';
case 'symbolic':
return 'Identify patterns, abstractions, and deeper meanings.';
case 'temporal':
return 'Consider timing, evolution, and long-term implications.';
case 'aesthetic':
return 'Evaluate beauty, harmony, and design principles.';
case 'transcendent':
return 'Consider higher-order connections and universal principles.';
default:
return `Apply ${lens} perspective to the analysis.`;
}
}).join(' ');
return `${prompt}\n\n[Cognitive Enhancement: ${lensGuidance}]`;
}
/**
* Parse any AI service request format
*/
parseRequest(request) {
// OpenAI format
if (request.messages) {
return {
prompt: request.messages[request.messages.length - 1].content,
context: request.messages.slice(0, -1).map(m => m.content).join('\n'),
service: 'openai'
};
}
// Claude format
if (request.prompt) {
return {
prompt: request.prompt,
context: request.context || '',
service: 'claude'
};
}
// Generic format
return {
prompt: request.input || request.text || request.query || '',
context: request.context || '',
service: 'generic'
};
}
/**
* Initialize interceptors for common AI services
*/
initializeInterceptors() {
// OpenAI API interceptor
this.interceptors.set('openai', {
requestTransform: (req) => ({
...req,
messages: req.messages.map(msg => ({
...msg,
content: msg.role === 'user' ? this.enhancePrompt(msg.content, this.selectOptimalPattern(msg.content)) : msg.content
}))
}),
responseTransform: (res) => ({
...res,
choices: res.choices.map(choice => ({
...choice,
message: {
...choice.message,
content: this.addCognitiveInsights(choice.message.content)
}
}))
})
});
// Add more service interceptors as needed
}
/**
* Content analysis helpers
*/
isCodeRelated(prompt) {
const codeKeywords = ['function', 'class', 'code', 'bug', 'debug', 'algorithm', 'programming'];
return codeKeywords.some(keyword => prompt.toLowerCase().includes(keyword));
}
isProblemSolving(prompt) {
const problemKeywords = ['problem', 'issue', 'error', 'fix', 'solve', 'troubleshoot'];
return problemKeywords.some(keyword => prompt.toLowerCase().includes(keyword));
}
isCreative(prompt) {
const creativeKeywords = ['design', 'create', 'build', 'make', 'ui', 'ux', 'interface'];
return creativeKeywords.some(keyword => prompt.toLowerCase().includes(keyword));
}
isSecurityRelated(prompt) {
const securityKeywords = ['security', 'vulnerable', 'auth', 'permission', 'access', 'encrypt'];
return securityKeywords.some(keyword => prompt.toLowerCase().includes(keyword));
}
/**
* Monkey patch common AI libraries
*/
patchLibraries() {
// Patch OpenAI library
try {
const openai = require('openai');
if (openai && openai.OpenAI) {
this.patchOpenAI(openai.OpenAI);
}
} catch (e) {
// OpenAI not installed
}
// Patch other libraries as needed
}
patchOpenAI(OpenAIClass) {
const originalCreate = OpenAIClass.prototype.chat.completions.create;
const middleware = this;
OpenAIClass.prototype.chat.completions.create = async function(params) {
const enhancedParams = await middleware.interceptRequest(params);
const response = await originalCreate.call(this, enhancedParams);
return middleware.interceptResponse(response, params);
};
}
}
/**
* Global middleware instance
*/
let globalMiddleware = null;
/**
* Initialize Trivium middleware globally
*/
function initializeTrivium(config = {}) {
globalMiddleware = new TriviumMiddleware(config);
// Auto-patch common libraries
if (config.autoPatch !== false) {
globalMiddleware.patchLibraries();
}
return globalMiddleware;
}
/**
* Express/Node.js middleware for web applications
*/
function triviumExpressMiddleware(config = {}) {
const middleware = new TriviumMiddleware(config);
return async (req, res, next) => {
// Intercept AI API calls
if (req.path.includes('/api/ai') || req.path.includes('/chat')) {
try {
req.body = await middleware.interceptRequest(req.body);
// Intercept response
const originalSend = res.send;
res.send = function(body) {
if (typeof body === 'string') {
try {
const data = JSON.parse(body);
const enhanced = middleware.interceptResponse(data, req.body);
return originalSend.call(this, JSON.stringify(enhanced));
} catch (e) {
return originalSend.call(this, body);
}
}
return originalSend.call(this, body);
};
} catch (error) {
console.error('Trivium middleware error:', error);
}
}
next();
};
}
/**
* Browser/client-side middleware for web applications
*/
function triviumBrowserMiddleware(config = {}) {
const middleware = new TriviumMiddleware(config);
// Intercept fetch requests
const originalFetch = window.fetch;
window.fetch = async function(url, options = {}) {
if (url.includes('api.openai.com') || url.includes('claude.ai') || url.includes('chat')) {
try {
if (options.body) {
const data = JSON.parse(options.body);
const enhanced = await middleware.interceptRequest(data);
options.body = JSON.stringify(enhanced);
}
} catch (error) {
console.error('Trivium browser middleware error:', error);
}
}
return originalFetch.apply(this, arguments);
};
return middleware;
}
module.exports = {
TriviumMiddleware,
initializeTrivium,
triviumExpressMiddleware,
triviumBrowserMiddleware
};