tasq/node_modules/agentdb/dist/simulation/scenarios/psycho-symbolic-reasoner.js

98 lines
4.3 KiB
JavaScript

/**
* Psycho-Symbolic-Reasoner Integration
*
* Hybrid symbolic/subsymbolic graph database
* Integration with psycho-symbolic-reasoner package
*
* Combines:
* - Psychological reasoning models
* - Symbolic logic
* - Subsymbolic pattern recognition
*/
import { createUnifiedDatabase } from '../../src/db-unified.js';
import { ReflexionMemory } from '../../src/controllers/ReflexionMemory.js';
import { CausalMemoryGraph } from '../../src/controllers/CausalMemoryGraph.js';
import { SkillLibrary } from '../../src/controllers/SkillLibrary.js';
import { EmbeddingService } from '../../src/controllers/EmbeddingService.js';
import * as path from 'path';
export default {
description: 'Psycho-symbolic reasoner with hybrid symbolic/subsymbolic processing',
async run(config) {
const { verbosity = 2 } = config;
if (verbosity >= 2) {
console.log(' 🧩 Initializing Psycho-Symbolic Reasoner');
}
// Initialize hybrid graph database
const embedder = new EmbeddingService({
model: 'Xenova/all-MiniLM-L6-v2',
dimension: 384,
provider: 'transformers'
});
await embedder.initialize();
const db = await createUnifiedDatabase(path.join(process.cwd(), 'simulation', 'data', 'advanced', 'psycho-symbolic.graph'), embedder, { forceMode: 'graph' });
const reflexion = new ReflexionMemory(db.getGraphDatabase(), embedder, undefined, undefined, db.getGraphDatabase());
const causal = new CausalMemoryGraph(db.getGraphDatabase(), db.getGraphDatabase());
const skills = new SkillLibrary(db.getGraphDatabase(), embedder, undefined, db.getGraphDatabase());
const results = {
psychologicalModels: 0,
symbolicRules: 0,
subsymbolicPatterns: 0,
hybridReasoning: 0,
totalTime: 0
};
const startTime = performance.now();
// Psychological reasoning models (cognitive biases, heuristics)
const psychModels = [
{ model: 'confirmation_bias', strength: 0.88 },
{ model: 'availability_heuristic', strength: 0.85 },
{ model: 'anchoring_effect', strength: 0.90 }
];
for (const model of psychModels) {
await reflexion.storeEpisode({
sessionId: 'psycho-model',
task: `psychological_model: ${model.model}`,
reward: model.strength,
success: true
});
results.psychologicalModels++;
}
// Symbolic rules (logical inference)
const symbolicRules = [
{ rule: 'IF bias_detected THEN adjust_confidence', confidence: 0.92 },
{ rule: 'IF heuristic_applied THEN verify_outcome', confidence: 0.88 }
];
for (const rule of symbolicRules) {
await skills.createSkill({
name: rule.rule,
description: 'Symbolic reasoning rule',
code: `function apply() { return "${rule.rule}"; }`,
successRate: rule.confidence
});
results.symbolicRules++;
}
// Subsymbolic patterns (neural activations)
for (let i = 0; i < 5; i++) {
await reflexion.storeEpisode({
sessionId: 'subsymbolic-pattern',
task: `neural_activation_pattern_${i}`,
reward: 0.80 + Math.random() * 0.15,
success: true
});
results.subsymbolicPatterns++;
}
// Hybrid reasoning (combine psychological + symbolic + subsymbolic)
results.hybridReasoning = psychModels.length + symbolicRules.length;
const endTime = performance.now();
results.totalTime = endTime - startTime;
db.close();
if (verbosity >= 2) {
console.log(` 📊 Psychological Models: ${results.psychologicalModels}`);
console.log(` 📊 Symbolic Rules: ${results.symbolicRules}`);
console.log(` 📊 Subsymbolic Patterns: ${results.subsymbolicPatterns}`);
console.log(` 📊 Hybrid Reasoning Instances: ${results.hybridReasoning}`);
console.log(` ⏱️ Duration: ${results.totalTime.toFixed(2)}ms`);
}
return results;
}
};
//# sourceMappingURL=psycho-symbolic-reasoner.js.map