121 lines
5.3 KiB
JavaScript
121 lines
5.3 KiB
JavaScript
/**
|
|
* Goalie Integration (Goal-Oriented AI Learning Engine)
|
|
*
|
|
* Goal-tracking graph DB with achievement trees
|
|
* Integration with goalie package
|
|
*
|
|
* Features:
|
|
* - Hierarchical goal decomposition
|
|
* - Subgoal dependency tracking
|
|
* - Achievement progress monitoring
|
|
* - Adaptive goal prioritization
|
|
*/
|
|
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: 'Goalie goal-oriented learning with achievement tree tracking',
|
|
async run(config) {
|
|
const { verbosity = 2 } = config;
|
|
if (verbosity >= 2) {
|
|
console.log(' 🎯 Initializing Goalie Integration (Goal-Oriented Learning)');
|
|
}
|
|
// Initialize goal-tracking 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', 'goalie.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 = {
|
|
primaryGoals: 0,
|
|
subgoals: 0,
|
|
achievements: 0,
|
|
avgProgress: 0,
|
|
totalTime: 0
|
|
};
|
|
const startTime = performance.now();
|
|
// Primary Goals
|
|
const primaryGoals = [
|
|
{ goal: 'build_production_system', priority: 0.95 },
|
|
{ goal: 'achieve_90_percent_test_coverage', priority: 0.88 },
|
|
{ goal: 'optimize_performance_10x', priority: 0.92 }
|
|
];
|
|
const goalIds = [];
|
|
for (const goal of primaryGoals) {
|
|
const id = await reflexion.storeEpisode({
|
|
sessionId: 'goalie-primary',
|
|
task: goal.goal,
|
|
reward: goal.priority,
|
|
success: false, // Not yet achieved
|
|
input: 'goal_definition',
|
|
output: 'in_progress'
|
|
});
|
|
goalIds.push(id);
|
|
results.primaryGoals++;
|
|
}
|
|
// Subgoals (decomposition)
|
|
const subgoalHierarchy = [
|
|
{ parent: 0, subgoals: ['setup_ci_cd', 'implement_logging', 'add_monitoring'] },
|
|
{ parent: 1, subgoals: ['write_unit_tests', 'write_integration_tests', 'add_e2e_tests'] },
|
|
{ parent: 2, subgoals: ['profile_bottlenecks', 'optimize_queries', 'add_caching'] }
|
|
];
|
|
for (const hierarchy of subgoalHierarchy) {
|
|
for (const subgoal of hierarchy.subgoals) {
|
|
const subgoalId = await reflexion.storeEpisode({
|
|
sessionId: 'goalie-subgoal',
|
|
task: subgoal,
|
|
reward: 0.70, // Partial progress
|
|
success: false,
|
|
input: `parent_goal_${hierarchy.parent}`,
|
|
output: 'started'
|
|
});
|
|
// Link subgoal to parent goal
|
|
await causal.addCausalEdge({
|
|
fromMemoryId: subgoalId,
|
|
fromMemoryType: 'episode',
|
|
toMemoryId: goalIds[hierarchy.parent],
|
|
toMemoryType: 'episode',
|
|
similarity: 0.90,
|
|
uplift: 0.30, // Completing subgoal improves parent goal
|
|
confidence: 0.95,
|
|
sampleSize: 100,
|
|
mechanism: 'subgoal_contributes_to_parent'
|
|
});
|
|
results.subgoals++;
|
|
}
|
|
}
|
|
// Achievements (completed subgoals)
|
|
const achievements = ['setup_ci_cd', 'write_unit_tests', 'profile_bottlenecks'];
|
|
for (const achievement of achievements) {
|
|
await skills.createSkill({
|
|
name: achievement,
|
|
description: 'Completed subgoal',
|
|
code: `// Achievement unlocked: ${achievement}`,
|
|
successRate: 1.0 // 100% completed
|
|
});
|
|
results.achievements++;
|
|
results.avgProgress += 1.0;
|
|
}
|
|
results.avgProgress /= results.subgoals;
|
|
const endTime = performance.now();
|
|
results.totalTime = endTime - startTime;
|
|
db.close();
|
|
if (verbosity >= 2) {
|
|
console.log(` 📊 Primary Goals: ${results.primaryGoals}`);
|
|
console.log(` 📊 Subgoals: ${results.subgoals}`);
|
|
console.log(` 📊 Achievements: ${results.achievements}`);
|
|
console.log(` 📊 Avg Progress: ${(results.avgProgress * 100).toFixed(1)}%`);
|
|
console.log(` ⏱️ Duration: ${results.totalTime.toFixed(2)}ms`);
|
|
}
|
|
return results;
|
|
}
|
|
};
|
|
//# sourceMappingURL=goalie-integration.js.map
|