wifi-densepose/vendor/sublinear-time-solver/dist/mcp/tools/psycho-symbolic.js

1283 lines
62 KiB
JavaScript

/**
* Complete Enhanced Psycho-Symbolic Reasoning with Full Learning Integration
* Includes: Domain Adaptation, Creative Reasoning, Enhanced Knowledge Base, Analogical Reasoning
*/
import * as crypto from 'crypto';
import { ReasoningCache } from './reasoning-cache.js';
// 1. Domain Adaptation Engine - Auto-detect and adapt reasoning styles
class DomainAdaptationEngine {
domainPatterns = new Map();
reasoningStyles = new Map();
crossDomainMappings = new Map();
semanticClusters = new Map();
constructor() {
this.initializeDomainPatterns();
this.initializeReasoningStyles();
this.initializeCrossDomainMappings();
this.buildSemanticClusters();
}
initializeDomainPatterns() {
this.domainPatterns.set('physics', {
keywords: ['quantum', 'particle', 'energy', 'field', 'force', 'wave', 'resonance', 'entanglement'],
reasoning_style: 'mathematical_modeling',
analogy_domains: ['information_theory', 'consciousness', 'computing']
});
this.domainPatterns.set('biology', {
keywords: ['cell', 'organism', 'evolution', 'genetic', 'ecosystem', 'neural', 'brain'],
reasoning_style: 'emergent_systems',
analogy_domains: ['computer_networks', 'social_systems', 'economics']
});
this.domainPatterns.set('computer_science', {
keywords: ['algorithm', 'data', 'network', 'system', 'computation', 'software', 'ai', 'machine', 'learning', 'neural', 'artificial'],
reasoning_style: 'systematic_analysis',
analogy_domains: ['biology', 'physics', 'cognitive_science']
});
this.domainPatterns.set('consciousness', {
keywords: ['consciousness', 'awareness', 'mind', 'experience', 'qualia', 'phi'],
reasoning_style: 'phenomenological',
analogy_domains: ['physics', 'information_theory', 'complexity_science']
});
this.domainPatterns.set('temporal', {
keywords: ['time', 'temporal', 'sequence', 'causality', 'evolution', 'dynamics'],
reasoning_style: 'temporal_analysis',
analogy_domains: ['physics', 'consciousness', 'systems_theory']
});
this.domainPatterns.set('art', {
keywords: ['art', 'artistic', 'painting', 'visual', 'aesthetic', 'creative', 'expression', 'pollock', 'drip', 'canvas', 'color', 'form', 'style', 'composition'],
reasoning_style: 'aesthetic_synthesis',
analogy_domains: ['mathematics', 'physics', 'psychology', 'philosophy']
});
this.domainPatterns.set('music', {
keywords: ['music', 'musical', 'sound', 'rhythm', 'melody', 'harmony', 'composition', 'jazz', 'improvisation', 'symphony', 'acoustic', 'tone', 'chord'],
reasoning_style: 'harmonic_analysis',
analogy_domains: ['mathematics', 'physics', 'emotion', 'language']
});
this.domainPatterns.set('narrative', {
keywords: ['story', 'narrative', 'plot', 'character', 'fiction', 'novel', 'literary', 'text', 'author', 'dialogue', 'scene', 'chapter'],
reasoning_style: 'narrative_analysis',
analogy_domains: ['psychology', 'philosophy', 'sociology', 'linguistics']
});
this.domainPatterns.set('philosophy', {
keywords: ['philosophy', 'philosophical', 'metaphysics', 'ontology', 'epistemology', 'ethics', 'logic', 'existence', 'reality', 'truth'],
reasoning_style: 'conceptual_analysis',
analogy_domains: ['logic', 'psychology', 'mathematics', 'consciousness']
});
this.domainPatterns.set('emotion', {
keywords: ['emotion', 'emotional', 'feeling', 'mood', 'sentiment', 'empathy', 'psychology', 'affect', 'resonance'],
reasoning_style: 'empathetic_reasoning',
analogy_domains: ['neuroscience', 'art', 'music', 'social_dynamics']
});
this.domainPatterns.set('mathematics', {
keywords: ['mathematical', 'equation', 'function', 'theorem', 'proof', 'geometry', 'algebra', 'calculus', 'topology', 'fractal', 'chaos', 'matrix', 'solving', 'optimization', 'linear', 'algorithm', 'sublinear', 'portfolio', 'finance', 'trading'],
reasoning_style: 'formal_reasoning',
analogy_domains: ['physics', 'art', 'music', 'nature']
});
// Add financial/economic domain with comprehensive financial terms
this.domainPatterns.set('finance', {
keywords: ['finance', 'financial', 'trading', 'portfolio', 'investment', 'market', 'economic', 'risk', 'return', 'asset', 'optimization', 'allocation', 'hedge', 'quant', 'stock', 'stocks', 'crypto', 'cryptocurrency', 'bitcoin', 'bonds', 'equity', 'derivative', 'futures', 'options', 'forex', 'currency', 'commodity', 'etf', 'mutual', 'fund', 'capital', 'valuation', 'pricing', 'yield', 'dividend', 'volatility', 'sharpe', 'alpha', 'beta', 'correlation', 'covariance', 'diversification', 'arbitrage', 'liquidity', 'leverage', 'margin', 'short', 'long', 'bull', 'bear', 'momentum', 'trend', 'technical', 'fundamental', 'analysis', 'backtesting', 'monte', 'carlo', 'black', 'scholes', 'var', 'credit', 'default', 'swap', 'spread', 'duration', 'convexity'],
reasoning_style: 'quantitative_analysis',
analogy_domains: ['mathematics', 'computer_science', 'statistics', 'game_theory']
});
// Add the missing creative_synthesis domain
this.domainPatterns.set('creative_synthesis', {
keywords: ['creative', 'synthesis', 'novel', 'innovation', 'interdisciplinary', 'cross-domain', 'emergent', 'hybrid'],
reasoning_style: 'creative_synthesis',
analogy_domains: ['art', 'music', 'philosophy', 'science']
});
}
initializeReasoningStyles() {
this.reasoningStyles.set('mathematical_modeling', 'Analyze through mathematical relationships and quantitative patterns');
this.reasoningStyles.set('emergent_systems', 'Focus on emergent properties and self-organization');
this.reasoningStyles.set('systematic_analysis', 'Break down into components and systematic interactions');
this.reasoningStyles.set('phenomenological', 'Examine subjective experience and qualitative aspects');
this.reasoningStyles.set('temporal_analysis', 'Consider temporal dynamics and causal sequences');
this.reasoningStyles.set('creative_synthesis', 'Generate novel connections across domains');
this.reasoningStyles.set('aesthetic_synthesis', 'Explore aesthetic relationships, visual harmony, and creative expression patterns');
this.reasoningStyles.set('harmonic_analysis', 'Analyze rhythmic patterns, melodic structures, and sonic relationships');
this.reasoningStyles.set('narrative_analysis', 'Follow story structures, character development, and plot dynamics');
this.reasoningStyles.set('conceptual_analysis', 'Examine abstract concepts, logical relationships, and philosophical implications');
this.reasoningStyles.set('empathetic_reasoning', 'Consider emotional resonance, human feelings, and psychological impact');
this.reasoningStyles.set('formal_reasoning', 'Apply logical structures, mathematical proofs, and formal methods');
this.reasoningStyles.set('quantitative_analysis', 'Apply mathematical models, statistical analysis, and data-driven optimization techniques');
this.reasoningStyles.set('creative_synthesis', 'Generate novel connections across domains and explore interdisciplinary insights');
}
initializeCrossDomainMappings() {
this.crossDomainMappings.set('physics', ['information_flow', 'energy_transfer', 'field_interactions']);
this.crossDomainMappings.set('biology', ['network_connectivity', 'adaptive_behavior', 'emergent_intelligence']);
this.crossDomainMappings.set('consciousness', ['information_integration', 'subjective_experience', 'awareness_levels']);
this.crossDomainMappings.set('temporal', ['causal_chains', 'temporal_ordering', 'dynamic_evolution']);
this.crossDomainMappings.set('art', ['visual_patterns', 'aesthetic_harmony', 'creative_expression', 'compositional_balance']);
this.crossDomainMappings.set('music', ['harmonic_resonance', 'rhythmic_patterns', 'melodic_flow', 'sonic_textures']);
this.crossDomainMappings.set('narrative', ['story_arcs', 'character_development', 'thematic_elements', 'dramatic_tension']);
this.crossDomainMappings.set('philosophy', ['conceptual_frameworks', 'logical_structures', 'ethical_implications', 'metaphysical_dimensions']);
this.crossDomainMappings.set('emotion', ['affective_resonance', 'emotional_dynamics', 'empathetic_connections', 'psychological_impact']);
this.crossDomainMappings.set('mathematics', ['formal_structures', 'logical_proofs', 'geometric_relationships', 'abstract_patterns']);
this.crossDomainMappings.set('finance', ['quantitative_models', 'risk_optimization', 'portfolio_theory', 'statistical_arbitrage']);
}
buildSemanticClusters() {
// Build semantic clusters for enhanced search
this.semanticClusters.set('consciousness', ['awareness', 'experience', 'mind', 'cognition', 'qualia']);
this.semanticClusters.set('quantum', ['probabilistic', 'superposition', 'entanglement', 'coherence']);
this.semanticClusters.set('neural', ['network', 'brain', 'neuron', 'synapse', 'learning']);
this.semanticClusters.set('temporal', ['time', 'sequence', 'causality', 'evolution', 'dynamics']);
this.semanticClusters.set('emergence', ['complexity', 'self-organization', 'phase-transition', 'novelty']);
// Creative domain clusters
this.semanticClusters.set('art', ['painting', 'visual', 'aesthetic', 'creative', 'expression', 'color', 'form', 'composition', 'style']);
this.semanticClusters.set('music', ['harmony', 'rhythm', 'melody', 'sound', 'tone', 'composition', 'resonance', 'frequency']);
this.semanticClusters.set('narrative', ['story', 'character', 'plot', 'theme', 'meaning', 'structure', 'narrative']);
this.semanticClusters.set('philosophy', ['concept', 'logic', 'ethics', 'metaphysics', 'knowledge', 'truth', 'reality']);
this.semanticClusters.set('emotion', ['feeling', 'affective', 'psychological', 'empathy', 'resonance', 'connection']);
this.semanticClusters.set('mathematics', ['formal', 'logical', 'proof', 'structure', 'pattern', 'relationship', 'abstract']);
}
detectDomains(query, concepts) {
const detectedDomains = [];
const queryLower = query.toLowerCase();
const allTerms = [queryLower, ...concepts.map(c => c.toLowerCase())];
console.log('DEBUG: Domain detection called with:', { query, concepts, allTerms });
console.log('DEBUG: Available domains:', Array.from(this.domainPatterns.keys()));
// Score-based domain detection for better accuracy
for (const [domain, pattern] of this.domainPatterns) {
let score = 0;
const matches = [];
pattern.keywords.forEach((keyword) => {
allTerms.forEach(term => {
const keywordLower = keyword.toLowerCase();
if (term.includes(keywordLower)) {
// Exact matches get higher score
if (term === keywordLower) {
score += 3.0; // Increased from 2.0
matches.push(`exact:${keyword}`);
}
else if (term.includes(keywordLower)) {
// Check for strong partial matches (keyword at word boundary)
const wordBoundaryMatch = term.split(/\W+/).some(word => word === keywordLower);
if (wordBoundaryMatch) {
score += 2.0; // Strong partial match
matches.push(`strong_partial:${keyword}`);
}
else {
score += 1.0; // Weak partial match
matches.push(`partial:${keyword}`);
}
}
}
});
});
// Boost score for domain-specific semantic clusters
const clusterTerms = this.semanticClusters.get(domain) || [];
clusterTerms.forEach(clusterTerm => {
allTerms.forEach(term => {
if (term.includes(clusterTerm.toLowerCase())) {
score += 1.2; // Increased from 0.8 to give semantic clusters more weight
matches.push(`cluster:${clusterTerm}`);
}
});
});
// Additional scoring for exact domain name matches
if (queryLower.includes(domain.toLowerCase()) || allTerms.some(term => term === domain.toLowerCase())) {
score += 3.0;
matches.push(`domain_name:${domain}`);
}
console.log(`DEBUG: Domain ${domain} - Score: ${score}, Matches: ${matches.join(', ')}`);
if (score > 0) {
detectedDomains.push({ domain, score });
}
}
console.log('DEBUG: Detected domains:', detectedDomains);
// Sort by score and extract domain names
const sortedDomains = detectedDomains
.sort((a, b) => b.score - a.score)
.map(d => d.domain);
// Default to art domain for creative queries if no specific domain detected
if (sortedDomains.length === 0) {
// Check if this might be a creative query
const creativeIndicators = ['painting', 'art', 'music', 'creative', 'aesthetic', 'visual', 'narrative', 'story'];
const hasCreativeIndicators = allTerms.some(term => creativeIndicators.some(indicator => term.includes(indicator.toLowerCase())));
if (hasCreativeIndicators) {
// Try to determine specific creative domain
if (allTerms.some(term => ['painting', 'visual', 'art', 'aesthetic', 'color', 'canvas'].some(art => term.includes(art)))) {
sortedDomains.push('art');
console.log('DEBUG: No specific domains detected but creative visual indicators found, defaulting to art');
}
else if (allTerms.some(term => ['music', 'sound', 'rhythm', 'melody', 'harmony'].some(music => term.includes(music)))) {
sortedDomains.push('music');
console.log('DEBUG: No specific domains detected but musical indicators found, defaulting to music');
}
else if (allTerms.some(term => ['story', 'narrative', 'character', 'plot'].some(narrative => term.includes(narrative)))) {
sortedDomains.push('narrative');
console.log('DEBUG: No specific domains detected but narrative indicators found, defaulting to narrative');
}
else {
sortedDomains.push('creative_synthesis');
console.log('DEBUG: Creative indicators found but no specific domain, defaulting to creative_synthesis');
}
}
else {
sortedDomains.push('creative_synthesis');
console.log('DEBUG: No domains detected and no creative indicators, defaulting to creative_synthesis');
}
}
const primaryDomain = sortedDomains[0];
const reasoningStyle = this.domainPatterns.get(primaryDomain)?.reasoning_style || 'creative_synthesis';
return {
domains: sortedDomains.slice(0, 3), // Limit to top 3 domains
primary_domain: primaryDomain,
reasoning_style: reasoningStyle,
cross_domain: sortedDomains.length > 1,
adaptation_strategy: sortedDomains.length > 1 ? 'multi_domain_synthesis' : 'single_domain_focus',
detection_scores: detectedDomains.filter(d => d.score > 0),
debug_info: {
query_lower: queryLower,
all_terms: allTerms,
available_domains: Array.from(this.domainPatterns.keys()),
all_detection_results: detectedDomains,
raw_domain_patterns: Object.fromEntries(this.domainPatterns)
}
};
}
getReasoningGuidance(domains) {
const guidance = [];
domains.forEach(domain => {
const pattern = this.domainPatterns.get(domain);
if (pattern) {
guidance.push(this.reasoningStyles.get(pattern.reasoning_style) || 'Apply systematic analysis');
// Add cross-domain connections
const crossDomain = this.crossDomainMappings.get(domain);
if (crossDomain) {
guidance.push(`Consider ${domain} patterns: ${crossDomain.join(', ')}`);
}
}
});
return guidance;
}
}
// 2. Creative Reasoning Engine - Generate novel connections for unknown concepts
class CreativeReasoningEngine {
analogyPatterns = new Map();
conceptBridges = new Map();
emergentPrinciples = [];
constructor() {
this.initializeAnalogies();
this.initializeConceptBridges();
this.initializeEmergentPrinciples();
}
initializeAnalogies() {
this.analogyPatterns.set('flow', ['current', 'stream', 'river', 'traffic', 'information', 'energy']);
this.analogyPatterns.set('network', ['web', 'grid', 'mesh', 'connections', 'graph', 'neural']);
this.analogyPatterns.set('resonance', ['harmony', 'frequency', 'synchronization', 'echo', 'vibration']);
this.analogyPatterns.set('emergence', ['evolution', 'development', 'growth', 'formation', 'crystallization']);
this.analogyPatterns.set('quantum', ['probabilistic', 'superposition', 'entangled', 'non-local', 'coherent']);
this.analogyPatterns.set('consciousness', ['awareness', 'experience', 'integration', 'unified', 'subjective']);
}
initializeConceptBridges() {
this.conceptBridges.set('quantum_consciousness', ['information_integration', 'coherent_states', 'measurement_problem']);
this.conceptBridges.set('neural_networks', ['distributed_processing', 'adaptive_learning', 'emergent_behavior']);
this.conceptBridges.set('temporal_dynamics', ['causal_flows', 'evolutionary_processes', 'dynamic_systems']);
}
initializeEmergentPrinciples() {
this.emergentPrinciples = [
'Information creates structure through selective constraints',
'Complexity emerges at phase transitions between order and chaos',
'Consciousness arises from integrated information processing',
'Temporal dynamics create causal efficacy in complex systems',
'Resonance patterns enable cross-scale synchronization',
'Networks exhibit emergent intelligence through connectivity'
];
}
generateCreativeConnections(concepts, context) {
const connections = [];
const analogies = [];
const bridgeConnections = [];
// Generate analogical connections
concepts.forEach(concept => {
const conceptAnalogies = this.findAnalogies(concept);
conceptAnalogies.forEach(analogy => {
analogies.push({
source: concept,
target: analogy,
type: 'analogical',
confidence: 0.7
});
connections.push(`${concept} exhibits ${analogy}-like properties`);
});
});
// Generate cross-concept bridges
for (let i = 0; i < concepts.length; i++) {
for (let j = i + 1; j < concepts.length; j++) {
const bridge = this.bridgeConcepts(concepts[i], concepts[j]);
if (bridge) {
bridgeConnections.push(bridge);
connections.push(bridge);
}
}
}
// Apply emergent principles
if (concepts.length >= 2) {
const emergentConnections = this.applyEmergentPrinciples(concepts);
connections.push(...emergentConnections);
}
return {
creative_connections: connections,
analogies,
bridges: bridgeConnections,
emergent_principles_applied: concepts.length >= 2 ? 2 : 0,
confidence: connections.length > 0 ? 0.75 : 0.4
};
}
findAnalogies(concept) {
const analogies = [];
const conceptLower = concept.toLowerCase();
// Direct pattern matching
for (const [pattern, analogs] of this.analogyPatterns) {
if (conceptLower.includes(pattern)) {
analogies.push(...analogs);
}
}
// Morphological analogies
if (conceptLower.endsWith('ium'))
analogies.push('crystalline', 'resonant', 'conductive');
if (conceptLower.includes('quantum'))
analogies.push('probabilistic', 'non-local', 'coherent');
if (conceptLower.includes('neural'))
analogies.push('networked', 'adaptive', 'learning');
if (conceptLower.includes('temporal'))
analogies.push('dynamic', 'evolutionary', 'causal');
// Domain-specific analogies
if (conceptLower.includes('matrix'))
analogies.push('structured', 'linear', 'computational', 'mathematical');
if (conceptLower.includes('trading'))
analogies.push('financial', 'economic', 'strategic', 'algorithmic');
if (conceptLower.includes('portfolio'))
analogies.push('diversified', 'balanced', 'optimized', 'financial');
if (conceptLower.includes('optimization'))
analogies.push('mathematical', 'algorithmic', 'efficient', 'optimal');
// Semantic analogies for novel concepts
if (analogies.length === 0) {
analogies.push('emergent', 'complex', 'adaptive', 'resonant', 'connected');
}
return [...new Set(analogies)];
}
bridgeConcepts(concept1, concept2) {
const bridges = [
`${concept1} and ${concept2} share information-theoretic foundations`,
`${concept1} influences ${concept2} through resonance coupling mechanisms`,
`${concept1} and ${concept2} exhibit complementary aspects of emergence`,
`${concept1} provides the structure for ${concept2} to manifest dynamics`,
`${concept1} and ${concept2} co-evolve through mutual information exchange`
];
return bridges[Math.floor(Math.random() * bridges.length)];
}
applyEmergentPrinciples(concepts) {
const applications = [];
const conceptStr = concepts.join(' + ');
applications.push(`${conceptStr} system exhibits emergent properties beyond individual components`);
applications.push(`${conceptStr} integration creates novel information patterns`);
applications.push(`${conceptStr} coupling generates higher-order organizational structures`);
return applications;
}
}
// 3. Enhanced Knowledge Base - Semantic search with analogy linking
class EnhancedSemanticKnowledgeBase {
triples = new Map();
conceptIndex = new Map();
domainIndex = new Map();
analogyIndex = new Map();
semanticClusters = new Map();
learningEvents = [];
constructor() {
this.initializeEnhancedKnowledge();
}
initializeEnhancedKnowledge() {
// Enhanced foundational knowledge with semantic metadata
this.addSemanticTriple('consciousness', 'emerges_from', 'neural_networks', 0.85, {
domain_tags: ['consciousness', 'biology', 'computer_science'],
analogy_links: ['emergence', 'network', 'information_integration'],
learning_source: 'foundational'
});
this.addSemanticTriple('consciousness', 'requires', 'integration', 0.9, {
domain_tags: ['consciousness', 'physics'],
analogy_links: ['unity', 'coherence', 'synthesis'],
learning_source: 'foundational'
});
this.addSemanticTriple('quantum_entanglement', 'exhibits', 'non_local_correlation', 0.95, {
domain_tags: ['physics', 'quantum'],
analogy_links: ['synchronization', 'connection', 'resonance'],
learning_source: 'foundational'
});
this.addSemanticTriple('neural_networks', 'implement', 'distributed_processing', 1.0, {
domain_tags: ['computer_science', 'biology'],
analogy_links: ['parallel', 'collective', 'emergent'],
learning_source: 'foundational'
});
this.addSemanticTriple('temporal_resonance', 'creates', 'causal_efficacy', 0.8, {
domain_tags: ['temporal', 'physics'],
analogy_links: ['rhythm', 'synchronization', 'influence'],
learning_source: 'foundational'
});
// Creative domain foundational knowledge
this.addSemanticTriple('art', 'expresses', 'visual_language', 0.9, {
domain_tags: ['art', 'communication'],
analogy_links: ['expression', 'meaning', 'symbolism'],
learning_source: 'foundational'
});
this.addSemanticTriple('pollock_drip_painting', 'demonstrates', 'controlled_chaos', 0.85, {
domain_tags: ['art', 'physics'],
analogy_links: ['emergence', 'pattern', 'complexity'],
learning_source: 'foundational'
});
this.addSemanticTriple('music', 'creates', 'harmonic_resonance', 0.9, {
domain_tags: ['music', 'physics'],
analogy_links: ['frequency', 'vibration', 'wave'],
learning_source: 'foundational'
});
this.addSemanticTriple('rhythm', 'establishes', 'temporal_pattern', 0.88, {
domain_tags: ['music', 'temporal'],
analogy_links: ['periodicity', 'cycle', 'structure'],
learning_source: 'foundational'
});
this.addSemanticTriple('narrative', 'constructs', 'meaning_framework', 0.9, {
domain_tags: ['narrative', 'philosophy'],
analogy_links: ['structure', 'coherence', 'understanding'],
learning_source: 'foundational'
});
this.addSemanticTriple('character_development', 'reflects', 'psychological_growth', 0.85, {
domain_tags: ['narrative', 'psychology'],
analogy_links: ['evolution', 'change', 'transformation'],
learning_source: 'foundational'
});
this.addSemanticTriple('aesthetic_beauty', 'emerges_from', 'mathematical_proportion', 0.8, {
domain_tags: ['art', 'mathematics'],
analogy_links: ['golden_ratio', 'symmetry', 'harmony'],
learning_source: 'foundational'
});
this.addSemanticTriple('emotion', 'influences', 'creative_expression', 0.9, {
domain_tags: ['emotion', 'art'],
analogy_links: ['inspiration', 'energy', 'motivation'],
learning_source: 'foundational'
});
this.addSemanticTriple('philosophical_inquiry', 'seeks', 'fundamental_truth', 0.9, {
domain_tags: ['philosophy', 'consciousness'],
analogy_links: ['questioning', 'understanding', 'knowledge'],
learning_source: 'foundational'
});
}
addSemanticTriple(subject, predicate, object, confidence, metadata = {}) {
const id = crypto.createHash('md5').update(`${subject}_${predicate}_${object}`).digest('hex').substring(0, 16);
const triple = {
subject,
predicate,
object,
confidence,
metadata,
timestamp: Date.now(),
usage_count: 0,
learning_source: metadata.learning_source || 'user_input',
domain_tags: metadata.domain_tags || [],
analogy_links: metadata.analogy_links || [],
related_concepts: this.findSemanticallySimilar(subject, object)
};
this.triples.set(id, triple);
this.updateAllIndices(id, triple);
return { id, status: 'added', triple };
}
findSemanticallySimilar(subject, object) {
const similar = [];
[subject, object].forEach(concept => {
for (const [cluster, terms] of this.semanticClusters) {
if (concept.toLowerCase().includes(cluster) || terms.some(term => concept.toLowerCase().includes(term))) {
similar.push(...terms);
}
}
});
return [...new Set(similar)].filter(s => s !== subject && s !== object);
}
updateAllIndices(id, triple) {
// Concept index
[triple.subject, triple.object].forEach(concept => {
if (!this.conceptIndex.has(concept))
this.conceptIndex.set(concept, new Set());
this.conceptIndex.get(concept).add(id);
});
// Domain index
if (triple.domain_tags) {
triple.domain_tags.forEach(domain => {
if (!this.domainIndex.has(domain))
this.domainIndex.set(domain, new Set());
this.domainIndex.get(domain).add(id);
});
}
// Analogy index
if (triple.analogy_links) {
triple.analogy_links.forEach(analogy => {
if (!this.analogyIndex.has(analogy))
this.analogyIndex.set(analogy, new Set());
this.analogyIndex.get(analogy).add(id);
});
}
}
advancedSemanticSearch(query, options = {}) {
const results = [];
const queryLower = query.toLowerCase();
const queryTerms = queryLower.split(/\s+/);
for (const [id, triple] of this.triples) {
let relevance = 0;
// Direct text matching (highest weight)
if (triple.subject.toLowerCase().includes(queryLower))
relevance += 3.0;
if (triple.object.toLowerCase().includes(queryLower))
relevance += 3.0;
if (triple.predicate.toLowerCase().includes(queryLower))
relevance += 2.0;
// Term-based matching
queryTerms.forEach(term => {
if (term.length > 2) {
if (triple.subject.toLowerCase().includes(term))
relevance += 1.5;
if (triple.object.toLowerCase().includes(term))
relevance += 1.5;
if (triple.predicate.toLowerCase().includes(term))
relevance += 0.8;
}
});
// Semantic similarity matching
if (triple.related_concepts) {
triple.related_concepts.forEach(concept => {
if (queryLower.includes(concept.toLowerCase()))
relevance += 0.6;
});
}
// Analogy-based matching
if (triple.analogy_links) {
triple.analogy_links.forEach(analogy => {
if (queryLower.includes(analogy.toLowerCase()))
relevance += 0.8;
});
}
// Domain relevance
if (options.domains && triple.domain_tags) {
const domainOverlap = triple.domain_tags.filter(d => options.domains.includes(d));
relevance += domainOverlap.length * 0.5;
}
// Usage-based learning boost
relevance += Math.log(triple.usage_count + 1) * 0.2;
// Confidence weighting
relevance *= triple.confidence;
if (relevance > 0.1) {
results.push({
...triple,
relevance,
id
});
}
}
return results
.sort((a, b) => b.relevance - a.relevance)
.slice(0, options.limit || 15);
}
getAllTriples() {
return Array.from(this.triples.values());
}
markTripleUsed(tripleId) {
const triple = this.triples.get(tripleId);
if (triple) {
triple.usage_count++;
}
}
findCrossDomainConnections(concept, domains) {
const connections = [];
domains.forEach(domain => {
const domainTriples = this.domainIndex.get(domain);
if (domainTriples) {
domainTriples.forEach(tripleId => {
const triple = this.triples.get(tripleId);
if (triple && (triple.subject.toLowerCase().includes(concept.toLowerCase()) ||
triple.object.toLowerCase().includes(concept.toLowerCase()))) {
connections.push(triple);
}
});
}
});
return connections;
}
recordLearningEvent(event) {
this.learningEvents.push(event);
// Auto-generate knowledge from successful patterns
if (event.confidence > 0.8 && event.concepts.length >= 2) {
this.generateKnowledgeFromEvent(event);
}
// Maintain event history
if (this.learningEvents.length > 1000) {
this.learningEvents = this.learningEvents.slice(-1000);
}
}
generateKnowledgeFromEvent(event) {
for (let i = 0; i < event.concepts.length - 1; i++) {
const subject = event.concepts[i];
const object = event.concepts[i + 1];
let predicate = 'relates_to';
if (event.tool === 'consciousness')
predicate = 'influences_consciousness';
if (event.tool === 'neural')
predicate = 'processes_through';
if (event.analogies && event.analogies.length > 0)
predicate = 'analogous_to';
this.addSemanticTriple(subject, predicate, object, event.confidence * 0.8, {
domain_tags: event.domains || ['learned'],
analogy_links: event.analogies || [],
learning_source: `${event.tool}_interaction`,
type: 'auto_generated'
});
}
}
}
// 4. Analogical Reasoning - Cross-domain concept bridging
class AnalogicalReasoningEngine {
analogyMappings = new Map();
crossDomainBridges = new Map();
structuralMappings = new Map();
constructor() {
this.initializeAnalogicalMappings();
this.initializeCrossDomainBridges();
this.initializeStructuralMappings();
}
initializeAnalogicalMappings() {
this.analogyMappings.set('quantum_consciousness', {
source_domain: 'quantum_mechanics',
target_domain: 'consciousness',
mappings: {
'superposition': 'multiple_states_of_awareness',
'entanglement': 'unified_conscious_experience',
'measurement': 'subjective_observation',
'coherence': 'integrated_consciousness'
}
});
this.analogyMappings.set('neural_network', {
source_domain: 'brain_biology',
target_domain: 'artificial_intelligence',
mappings: {
'neurons': 'processing_nodes',
'synapses': 'weighted_connections',
'plasticity': 'adaptive_learning',
'networks': 'computational_graphs'
}
});
this.analogyMappings.set('temporal_flow', {
source_domain: 'physics',
target_domain: 'information_processing',
mappings: {
'time_flow': 'information_propagation',
'causality': 'computational_dependencies',
'temporal_order': 'sequential_processing',
'synchronization': 'coordinated_operations'
}
});
}
initializeCrossDomainBridges() {
this.crossDomainBridges.set('physics_consciousness', [
'information_integration_principles',
'field_effects_and_awareness',
'quantum_coherence_and_unity'
]);
this.crossDomainBridges.set('biology_computing', [
'adaptive_algorithms',
'evolutionary_optimization',
'distributed_intelligence'
]);
this.crossDomainBridges.set('temporal_consciousness', [
'temporal_binding_of_experience',
'causal_efficacy_of_awareness',
'time_dependent_integration'
]);
}
initializeStructuralMappings() {
this.structuralMappings.set('resonance_systems', {
structure: 'oscillatory_coupling',
elements: ['frequency', 'amplitude', 'phase', 'synchronization'],
relations: ['resonant_coupling', 'harmonic_interaction', 'phase_locking']
});
this.structuralMappings.set('network_systems', {
structure: 'graph_connectivity',
elements: ['nodes', 'edges', 'clusters', 'paths'],
relations: ['connectivity', 'information_flow', 'emergent_behavior']
});
}
performAnalogicalReasoning(concepts, domains) {
const analogies = [];
const bridges = [];
const structuralMaps = [];
// Find direct analogical mappings
concepts.forEach(concept => {
for (const [key, mapping] of this.analogyMappings) {
if (concept.toLowerCase().includes(key.split('_')[0])) {
analogies.push({
concept,
analogy_type: key,
source_domain: mapping.source_domain,
target_domain: mapping.target_domain,
mappings: mapping.mappings,
confidence: 0.8
});
}
}
});
// Generate cross-domain bridges
if (domains.length > 1) {
for (let i = 0; i < domains.length; i++) {
for (let j = i + 1; j < domains.length; j++) {
const bridgeKey = `${domains[i]}_${domains[j]}`;
const reverseBridgeKey = `${domains[j]}_${domains[i]}`;
const bridgeData = this.crossDomainBridges.get(bridgeKey) ||
this.crossDomainBridges.get(reverseBridgeKey);
if (bridgeData) {
bridges.push(...bridgeData);
}
else {
// Generate novel cross-domain bridge
bridges.push(`${domains[i]} principles may inform ${domains[j]} understanding`);
}
}
}
}
// Apply structural mappings
concepts.forEach(concept => {
for (const [key, structure] of this.structuralMappings) {
if (concept.toLowerCase().includes(key.split('_')[0])) {
structuralMaps.push({
concept,
structure_type: key,
structure: structure.structure,
elements: structure.elements,
relations: structure.relations
});
}
}
});
return {
analogies,
cross_domain_bridges: bridges,
structural_mappings: structuralMaps,
confidence: analogies.length > 0 ? 0.85 : 0.6
};
}
generateNovelAnalogies(unknownConcept, knownDomains) {
const novelAnalogies = [];
// Generate analogies based on morphological structure
const conceptLower = unknownConcept.toLowerCase();
if (conceptLower.includes('quantum')) {
novelAnalogies.push({
source: unknownConcept,
target: 'probabilistic_system',
basis: 'quantum_behavior_patterns',
confidence: 0.7
});
}
if (conceptLower.includes('neural') || conceptLower.includes('network')) {
novelAnalogies.push({
source: unknownConcept,
target: 'distributed_processing_system',
basis: 'network_connectivity_patterns',
confidence: 0.75
});
}
if (conceptLower.includes('temporal') || conceptLower.includes('time')) {
novelAnalogies.push({
source: unknownConcept,
target: 'dynamic_flow_system',
basis: 'temporal_evolution_patterns',
confidence: 0.7
});
}
// Generate based on known domain principles
knownDomains.forEach(domain => {
novelAnalogies.push({
source: unknownConcept,
target: `${domain}_like_behavior`,
basis: `structural_similarity_to_${domain}`,
confidence: 0.6
});
});
return novelAnalogies;
}
}
// Complete Enhanced Psycho-Symbolic Reasoning Tool with Learning Hooks
export class PsychoSymbolicTools {
knowledgeBase;
domainEngine;
creativeEngine;
analogicalEngine;
performanceCache;
toolLearningHooks = new Map();
constructor() {
this.knowledgeBase = new EnhancedSemanticKnowledgeBase();
this.domainEngine = new DomainAdaptationEngine();
this.creativeEngine = new CreativeReasoningEngine();
this.analogicalEngine = new AnalogicalReasoningEngine();
this.performanceCache = new ReasoningCache();
}
getTools() {
return [
{
name: 'psycho_symbolic_reason',
description: 'Complete enhanced psycho-symbolic reasoning with domain adaptation, creative synthesis, and analogical reasoning',
inputSchema: {
type: 'object',
properties: {
query: { type: 'string', description: 'The reasoning query' },
context: { type: 'object', description: 'Additional context', default: {} },
depth: { type: 'number', description: 'Maximum reasoning depth', default: 7 },
use_cache: { type: 'boolean', description: 'Enable intelligent caching', default: true },
enable_learning: { type: 'boolean', description: 'Enable learning from this interaction', default: true },
creative_mode: { type: 'boolean', description: 'Enable creative reasoning for novel concepts', default: true },
domain_adaptation: { type: 'boolean', description: 'Enable automatic domain detection and adaptation', default: true },
analogical_reasoning: { type: 'boolean', description: 'Enable analogical reasoning across domains', default: true }
},
required: ['query']
}
},
{
name: 'knowledge_graph_query',
description: 'Advanced semantic knowledge search with analogy linking and domain filtering',
inputSchema: {
type: 'object',
properties: {
query: { type: 'string', description: 'Natural language query' },
domains: { type: 'array', description: 'Domain filters', default: [] },
include_analogies: { type: 'boolean', description: 'Include analogical connections', default: true },
limit: { type: 'number', description: 'Max results', default: 20 }
},
required: ['query']
}
},
{
name: 'add_knowledge',
description: 'Add knowledge with full semantic metadata, domain tags, and analogy links',
inputSchema: {
type: 'object',
properties: {
subject: { type: 'string' },
predicate: { type: 'string' },
object: { type: 'string' },
confidence: { type: 'number', default: 1.0 },
metadata: {
type: 'object',
description: 'Enhanced metadata with domain_tags, analogy_links, etc.',
default: {}
}
},
required: ['subject', 'predicate', 'object']
}
},
{
name: 'register_tool_interaction',
description: 'Register interaction with other tools for cross-tool learning',
inputSchema: {
type: 'object',
properties: {
tool_name: { type: 'string', description: 'Name of the interacting tool' },
query: { type: 'string', description: 'Query sent to the tool' },
result: { type: 'object', description: 'Result from the tool' },
concepts: { type: 'array', description: 'Concepts involved in the interaction' }
},
required: ['tool_name', 'query', 'result', 'concepts']
}
},
{
name: 'learning_status',
description: 'Get comprehensive learning system status with cross-tool insights',
inputSchema: {
type: 'object',
properties: {
detailed: { type: 'boolean', description: 'Include detailed learning metrics', default: false }
}
}
}
];
}
async handleToolCall(name, args) {
switch (name) {
case 'psycho_symbolic_reason':
return this.performCompleteReasoning(args);
case 'knowledge_graph_query':
return this.advancedKnowledgeQuery(args);
case 'add_knowledge':
return this.addEnhancedKnowledge(args);
case 'register_tool_interaction':
return this.registerToolInteraction(args);
case 'learning_status':
return this.getLearningStatus(args.detailed || false);
default:
throw new Error(`Unknown tool: ${name}`);
}
}
async performCompleteReasoning(args) {
const startTime = performance.now();
const { query, context = {}, depth = 7, use_cache = true, enable_learning = true, creative_mode = true, domain_adaptation = true, analogical_reasoning = true } = args;
// Cache check
if (use_cache) {
const cached = this.performanceCache.get(query, context, depth);
if (cached) {
return {
...cached.result,
cached: true,
cache_hit: true,
compute_time: performance.now() - startTime,
cache_metrics: this.performanceCache.getMetrics()
};
}
}
const reasoningSteps = [];
const insights = new Set();
// Step 1: Enhanced Entity Extraction
const entities = this.extractAdvancedEntities(query);
reasoningSteps.push({
type: 'enhanced_entity_extraction',
entities: entities.entities,
concepts: entities.concepts,
relationships: entities.relationships,
novel_concepts: entities.novel_concepts,
confidence: 0.9
});
// Step 2: Domain Adaptation
let domainInfo = { domains: ['general'], reasoning_style: 'exploratory' };
if (domain_adaptation) {
domainInfo = this.domainEngine.detectDomains(query, entities.concepts);
const guidance = this.domainEngine.getReasoningGuidance(domainInfo.domains);
reasoningSteps.push({
type: 'domain_adaptation',
detected_domains: domainInfo.domains,
reasoning_style: domainInfo.reasoning_style,
adaptation_strategy: domainInfo.adaptation_strategy,
reasoning_guidance: guidance,
confidence: 0.85,
debug_info: domainInfo.debug_info
});
guidance.forEach(g => insights.add(g));
}
// Step 3: Creative Reasoning for Novel Concepts
if (creative_mode && entities.novel_concepts.length > 0) {
const creativeResults = this.creativeEngine.generateCreativeConnections(entities.novel_concepts, context);
creativeResults.creative_connections.forEach(conn => insights.add(conn));
reasoningSteps.push({
type: 'creative_reasoning',
novel_concepts: entities.novel_concepts,
creative_connections: creativeResults.creative_connections,
analogies: creativeResults.analogies,
bridges: creativeResults.bridges,
confidence: creativeResults.confidence
});
}
// Step 4: Enhanced Knowledge Traversal
const knowledgeResults = await this.enhancedKnowledgeTraversal(entities.concepts, domainInfo.domains);
knowledgeResults.discoveries.forEach(d => insights.add(d));
reasoningSteps.push({
type: 'enhanced_knowledge_traversal',
paths: knowledgeResults.paths,
discoveries: knowledgeResults.discoveries,
cross_domain_connections: knowledgeResults.cross_domain_connections,
confidence: knowledgeResults.confidence
});
// Step 5: Analogical Reasoning
if (analogical_reasoning) {
const analogicalResults = this.analogicalEngine.performAnalogicalReasoning(entities.concepts, domainInfo.domains);
reasoningSteps.push({
type: 'analogical_reasoning',
analogies: analogicalResults.analogies,
cross_domain_bridges: analogicalResults.cross_domain_bridges,
structural_mappings: analogicalResults.structural_mappings,
confidence: analogicalResults.confidence
});
analogicalResults.cross_domain_bridges.forEach(bridge => insights.add(bridge));
// Generate novel analogies for unknown concepts
if (entities.novel_concepts.length > 0) {
const novelAnalogies = this.analogicalEngine.generateNovelAnalogies(entities.novel_concepts[0], domainInfo.domains);
reasoningSteps.push({
type: 'novel_analogical_reasoning',
novel_analogies: novelAnalogies,
confidence: 0.7
});
}
}
// Step 6: Cross-Tool Learning Integration
const toolInsights = this.getCrossToolInsights(entities.concepts);
if (toolInsights.length > 0) {
toolInsights.forEach(insight => insights.add(insight));
reasoningSteps.push({
type: 'cross_tool_learning',
tool_insights: toolInsights,
confidence: 0.8
});
}
// Step 7: Advanced Synthesis
const synthesis = this.synthesizeAdvancedAnswer(query, Array.from(insights), reasoningSteps, domainInfo, entities);
// Record learning event
if (enable_learning) {
this.knowledgeBase.recordLearningEvent({
tool: 'complete_psycho_symbolic_reasoner',
action: 'comprehensive_reasoning',
concepts: entities.concepts,
patterns: [domainInfo.reasoning_style],
outcome: synthesis.answer,
timestamp: Date.now(),
confidence: synthesis.confidence,
domains: domainInfo.domains,
analogies: reasoningSteps.find(s => s.type === 'analogical_reasoning')?.analogies?.map((a) => a.concept) || []
});
}
const result = {
answer: synthesis.answer,
confidence: synthesis.confidence,
reasoning: reasoningSteps,
insights: Array.from(insights),
detected_domains: domainInfo.domains,
reasoning_style: domainInfo.reasoning_style,
depth: depth,
entities: entities.entities,
concepts: entities.concepts,
novel_concepts: entities.novel_concepts,
triples_examined: knowledgeResults.triples_examined,
creative_connections: creative_mode ? reasoningSteps.find(s => s.type === 'creative_reasoning')?.creative_connections?.length || 0 : 0,
analogies_explored: analogical_reasoning ? reasoningSteps.find(s => s.type === 'analogical_reasoning')?.analogies?.length || 0 : 0,
cross_tool_insights: toolInsights.length
};
// Cache result
if (use_cache) {
this.performanceCache.set(query, context, depth, result, performance.now() - startTime);
}
return {
...result,
cached: false,
cache_hit: false,
compute_time: performance.now() - startTime,
cache_metrics: use_cache ? this.performanceCache.getMetrics() : null
};
}
extractAdvancedEntities(query) {
const words = query.split(/\s+/);
const entities = [];
const concepts = [];
const relationships = [];
const novel_concepts = [];
// Enhanced concept extraction with domain awareness
const domainTerms = [
'consciousness', 'neural', 'quantum', 'temporal', 'resonance', 'emergence',
'integration', 'plasticity', 'learning', 'information', 'complexity',
'synchronization', 'coherence', 'entanglement', 'superposition'
];
const commonWords = new Set([
'the', 'and', 'or', 'but', 'for', 'with', 'from', 'what', 'how', 'why',
'when', 'where', 'does', 'can', 'will', 'would', 'could', 'should'
]);
words.forEach(word => {
const wordLower = word.toLowerCase();
if (word.length > 3 && !commonWords.has(wordLower)) {
concepts.push(wordLower);
// Check if it's a known domain term
if (!domainTerms.some(term => wordLower.includes(term)) &&
!this.knowledgeBase.getAllTriples().some(t => t.subject.toLowerCase().includes(wordLower) ||
t.object.toLowerCase().includes(wordLower))) {
novel_concepts.push(wordLower);
}
}
// Extract named entities
if (/^[A-Z]/.test(word) && word.length > 2) {
entities.push(wordLower);
}
});
// Extract relationships
const relationshipPatterns = [
'relate', 'connect', 'influence', 'create', 'emerge', 'exhibit',
'require', 'enable', 'cause', 'affect', 'bridge', 'synchronize'
];
relationshipPatterns.forEach(pattern => {
if (query.toLowerCase().includes(pattern)) {
relationships.push(pattern);
}
});
return {
entities: [...new Set(entities)],
concepts: [...new Set(concepts)],
relationships: [...new Set(relationships)],
novel_concepts: [...new Set(novel_concepts)]
};
}
async enhancedKnowledgeTraversal(concepts, domains) {
const paths = [];
const discoveries = [];
const cross_domain_connections = [];
let triples_examined = 0;
for (const concept of concepts) {
const results = this.knowledgeBase.advancedSemanticSearch(concept, { domains, limit: 15 });
triples_examined += results.length;
results.forEach(result => {
this.knowledgeBase.markTripleUsed(result.id);
discoveries.push(`${result.subject} ${result.predicate} ${result.object}`);
paths.push([result.subject, result.object]);
});
// Find cross-domain connections
if (domains.length > 0) {
const crossDomain = this.knowledgeBase.findCrossDomainConnections(concept, domains);
cross_domain_connections.push(...crossDomain);
}
}
return {
paths,
discoveries,
cross_domain_connections,
confidence: discoveries.length > 0 ? 0.9 : 0.4,
triples_examined
};
}
synthesizeAdvancedAnswer(query, insights, reasoningSteps, domainInfo, entities) {
let answer = '';
let confidence = 0.8;
const hasNovelConcepts = entities.novel_concepts.length > 0;
const isMultiDomain = domainInfo.domains.length > 1;
const hasCreativeConnections = reasoningSteps.some(s => s.type === 'creative_reasoning');
const hasAnalogies = reasoningSteps.some(s => s.type === 'analogical_reasoning');
if (insights.length === 0) {
answer = `This query explores novel conceptual territory that transcends conventional knowledge boundaries. Through ${domainInfo.reasoning_style} analysis, emergent patterns suggest interdisciplinary synthesis opportunities.`;
confidence = 0.65;
}
else if (hasNovelConcepts && hasCreativeConnections) {
answer = `Through creative synthesis across ${domainInfo.domains.join(' and ')} domains: ${insights.slice(0, 4).join('. ')}.`;
confidence = 0.8;
}
else if (isMultiDomain && hasAnalogies) {
answer = `Analogical reasoning reveals: ${insights.slice(0, 5).join('. ')}.`;
confidence = 0.85;
}
else {
const primaryDomain = domainInfo.domains[0];
answer = `From a ${primaryDomain} perspective using ${domainInfo.reasoning_style}: ${insights.slice(0, 5).join('. ')}.`;
confidence = 0.9;
}
return { answer, confidence };
}
advancedKnowledgeQuery(args) {
const { query, domains = [], include_analogies = true, limit = 20 } = args;
const results = this.knowledgeBase.advancedSemanticSearch(query, { domains, limit });
let analogies = [];
if (include_analogies) {
results.forEach(result => {
if (result.analogy_links) {
result.analogy_links.forEach((analogy) => {
analogies.push({
source: result.subject,
analogy,
confidence: result.confidence * 0.8
});
});
}
});
}
return {
query,
results: results.map(r => ({
subject: r.subject,
predicate: r.predicate,
object: r.object,
confidence: r.confidence,
relevance: r.relevance,
domain_tags: r.domain_tags,
analogy_links: r.analogy_links,
usage_count: r.usage_count,
learning_source: r.learning_source
})),
analogies: include_analogies ? analogies : [],
domains_searched: domains,
total: results.length,
totalAvailable: this.knowledgeBase.getAllTriples().length
};
}
addEnhancedKnowledge(args) {
const { subject, predicate, object, confidence = 1.0, metadata = {} } = args;
return this.knowledgeBase.addSemanticTriple(subject, predicate, object, confidence, {
...metadata,
learning_source: metadata.learning_source || 'user_input'
});
}
registerToolInteraction(args) {
const { tool_name, query, result, concepts } = args;
if (!this.toolLearningHooks.has(tool_name)) {
this.toolLearningHooks.set(tool_name, []);
}
const interaction = {
tool: tool_name,
query,
result,
concepts,
timestamp: Date.now(),
success: result.confidence > 0.7
};
this.toolLearningHooks.get(tool_name).push(interaction);
// Learn from successful interactions
if (interaction.success) {
this.knowledgeBase.recordLearningEvent({
tool: tool_name,
action: 'external_interaction',
concepts,
patterns: result.patterns || [],
outcome: result.answer || 'success',
timestamp: Date.now(),
confidence: result.confidence,
domains: result.detected_domains || []
});
}
return {
status: 'registered',
tool: tool_name,
learning_active: interaction.success,
total_interactions: this.toolLearningHooks.get(tool_name).length
};
}
getCrossToolInsights(concepts) {
const insights = [];
for (const [tool, interactions] of this.toolLearningHooks) {
const relevantInteractions = interactions.filter((interaction) => concepts.some(concept => interaction.concepts.includes(concept) ||
interaction.query.toLowerCase().includes(concept.toLowerCase())));
if (relevantInteractions.length > 0) {
insights.push(`${tool} tool has processed ${relevantInteractions.length} similar concept interactions`);
const successfulInteractions = relevantInteractions.filter((i) => i.success);
if (successfulInteractions.length > 0) {
insights.push(`${tool} achieved ${Math.round(successfulInteractions.length / relevantInteractions.length * 100)}% success rate with similar concepts`);
}
}
}
return insights;
}
getLearningStatus(detailed) {
const totalTriples = this.knowledgeBase.getAllTriples().length;
const learnedTriples = this.knowledgeBase.getAllTriples().filter(t => t.learning_source !== 'foundational').length;
const totalToolInteractions = Array.from(this.toolLearningHooks.values()).reduce((sum, interactions) => sum + interactions.length, 0);
if (detailed) {
return {
knowledge_base: {
total_triples: totalTriples,
learned_triples: learnedTriples,
learning_ratio: totalTriples > 0 ? learnedTriples / totalTriples : 0
},
cross_tool_learning: {
registered_tools: this.toolLearningHooks.size,
total_interactions: totalToolInteractions,
tools: Array.from(this.toolLearningHooks.keys())
},
capabilities: {
domain_adaptation: true,
creative_reasoning: true,
analogical_reasoning: true,
semantic_search: true,
cross_tool_integration: true
},
cache_metrics: this.performanceCache.getMetrics()
};
}
return {
learning_active: true,
total_knowledge: totalTriples,
learned_concepts: learnedTriples,
tool_integrations: this.toolLearningHooks.size,
cross_tool_interactions: totalToolInteractions
};
}
}