ATOM Documentation

← Back to App

Cognitive Architecture

The central brain system that enables human-like reasoning, attention allocation, memory recall, and problem-solving.

---

Overview

The Cognitive Architecture is the core reasoning engine that processes tasks, generates decisions, and coordinates all other brain systems. It implements a computational model of human cognition including:

  • **Attention Allocation** - Determining what information matters
  • **Memory Recall** - Retrieving relevant past experiences
  • **Reasoning Chains** - Multi-step logical reasoning
  • **Decision Making** - Selecting optimal approaches
  • **Metacognition** - Thinking about thinking

**Location:** src/lib/ai/cognitive-architecture.ts

---

Architecture

---

Core Algorithm

Cognitive Reasoning Process

ALGORITHM: Cognitive Reasoning Process

INPUT: task, context, agent_profile
OUTPUT: reasoning_result

1. ATTENTION ALLOCATION
   ============================================================================
   Determine what information is most important for the current task.

   INPUT: task, context, cognitive_profile
   OUTPUT: attention_allocation

   STEPS:
   a) Calculate task complexity score
      - Analyze task description
      - Count sub-problems
      - Identify required capabilities
      - complexity = 0-1 scale (0=simple, 1=complex)

   b) Determine available cognitive resources
      - Get current working_memory capacity
      - Check cognitive_load (current tasks)
      - available_capacity = max_capacity - cognitive_load

   c) Allocate attention budget
      - Assign attention weights to task aspects:
        * Task description: 40%
        * Context relevance: 30%
        * Past experiences: 20%
        * External data: 10%

   d) Generate attention allocation map
      - attention_map = {
          primary_focus: task_description,
          secondary_focus: [context_elements],
          background_monitoring: [external_factors]
        }

   RETURN attention_allocation


2. MEMORY RECALL
   ============================================================================
   Retrieve relevant past experiences to inform current reasoning.

   INPUT: task_description, agent_role, limit=5
   OUTPUT: relevant_experiences

   STEPS:
   a) Generate semantic embedding of task
      - Call embedding model on task description
      - Extract key entities and concepts
      - query_vector = embed(task_description)

   b) Query WorldModel for experiences
      - Search experiences by semantic similarity
      - Filter by agent_role
      - Apply canvas context filters
      - Apply feedback score filters (min_score=0.5)

   c) Rank experiences by relevance
      - Calculate semantic similarity score (0-1)
      - Apply recency boost: +0.1 for recent (< 7 days)
      - Apply feedback adjustment:
        * Positive feedback: +0.2
        * Negative feedback: -0.3
      - final_score = semantic + recency + feedback

   d) Select top-K experiences
      - Sort by final_score descending
      - Return top limit results

   RETURN relevant_experiences


3. REASONING CHAIN GENERATION
   ============================================================================
   Decompose task and generate step-by-step reasoning.

   INPUT: task, relevant_experiences, attention_allocation
   OUTPUT: reasoning_chain

   STEPS:
   a) Task decomposition
      - Identify sub-problems
      - Determine dependencies between sub-problems
      - Create execution graph

      FOR each sub_problem:
        - sub_problem.complexity = estimate_complexity()
        - sub_problem.required_capabilities = identify_capabilities()
        - sub_problem.dependencies = find_dependencies()

   b) Generate reasoning steps
      - FOR each sub_problem in topological_order:
        * Generate reasoning approach based on experiences
        * Identify alternative strategies
        * Select optimal reasoning pattern:
          - Deductive (general → specific)
          - Inductive (specific → general)
          - Abductive (best explanation)
          - Analogical (pattern matching)

   c) Build reasoning chain
      reasoning_chain = []
      FOR each step in execution_order:
        reasoning_step = {
          step_number: i,
          sub_problem: step.sub_problem,
          reasoning_pattern: step.pattern,
          approach_description: step.approach,
          alternatives: step.alternatives,
          confidence: step.confidence
        }
        reasoning_chain.append(reasoning_step)

   RETURN reasoning_chain


4. DECISION MAKING
   ============================================================================
   Evaluate alternatives and select optimal approach.

   INPUT: reasoning_chain, agent_maturity_level, governance_constraints
   OUTPUT: decision

   STEPS:
   a) Apply reasoning style
      - reasoning_style = SELECT based on:
        * Logical: Analytical, data-driven
        * Intuitive: Pattern-based, heuristic
        * Creative: Exploratory, innovative

      - Style depends on:
        * Agent maturity (student → autonomous)
        * Task complexity
        * Domain knowledge
        * Time constraints

   b) Evaluate alternatives
      FOR each reasoning_step in reasoning_chain:
        FOR each alternative in reasoning_step.alternatives:
          - Calculate expected_outcome
          - Estimate resource_requirements
          - Assess risk_level (low/medium/high)
          - Check governance_compliance
          - Calculate utility_score

          utility = (
            expected_value * 0.4 +
            confidence * 0.3 +
            (1 - risk) * 0.2 +
            governance_compliance * 0.1
          )

   c) Select optimal approach
      - Find highest utility_score across all alternatives
      - Verify governance compliance
      - Check resource availability

      IF governance_compliance == FALSE:
        - Select next best alternative
        - Add governance_constraint to reasoning

      decision = {
        selected_approach: optimal_approach,
        reasoning_chain: reasoning_chain,
        expected_outcome: predicted_result,
        confidence: confidence_score,
        risk_assessment: risk_level,
        governance_notes: compliance_notes
      }

   RETURN decision


5. METACOGNITION
   ============================================================================
   Generate insights about the reasoning process itself.

   INPUT: reasoning_chain, decision, task_complexity
   OUTPUT: metacognitive_insights

   STEPS:
   a) Analyze reasoning quality
      - reasoning_depth = count(reasoning_chain)
      - reasoning_breadth = count(alternatives considered)
      - reasoning_coherence = check_logical_consistency()

   b) Assess confidence calibration
      - predicted_confidence = decision.confidence
      - historical_accuracy = get_past_accuracy(similar_tasks)
      - calibration_score = compare(predicted vs actual)

      IF calibration_score < threshold:
        - confidence_adjustment = "overconfident, reduce confidence"
      ELSE IF calibration_score > threshold:
        - confidence_adjustment = "underconfident, increase confidence"

   c) Identify learning opportunities
      - gaps_in_knowledge = find_unanswered_questions()
      - uncertain_assumptions = identify_assumptions(low_confidence)
      - future_improvements = suggest_enhancements()

   metacognitive_insights = {
      reasoning_quality: {
        depth: reasoning_depth,
        breadth: reasoning_breadth,
        coherence: reasoning_coherence
      },
      confidence_assessment: {
        predicted: decision.confidence,
        calibrated: calibration_score,
        adjustment: confidence_adjustment
      },
      learning_opportunities: {
        knowledge_gaps: gaps_in_knowledge,
        uncertain_assumptions: uncertain_assumptions,
        improvements: future_improvements
      }
   }

   RETURN metacognitive_insights


6. LEARNING INTEGRATION
   ============================================================================
   Record reasoning chain for future learning.

   INPUT: task, decision, metacognitive_insights, outcome
   OUTPUT: recorded

   STEPS:
   a) Extract learnings
      - successful_patterns = extract(decision.reasoning_chain)
      - failed_alternatives = extract(rejected_approaches)
      - metacognitive_patterns = extract(metacognitive_insights)

   b) Create experience record
      experience = {
        agent_id: agent_id,
        agent_role: agent_role,
        task_type: classify(task),
        task_description: summarize(task),
        reasoning_chain: decision.reasoning_chain,
        selected_approach: decision.selected_approach,
        outcome: outcome,
        success: outcome.success,
        confidence: decision.confidence,
        metacognitive_insights: metacognitive_insights,
        timestamp: now()
      }

   c) Record to WorldModel
      - Generate embedding of experience
      - Store in PostgreSQL (episodes table)
      - Index in LanceDB (semantic search)

   RETURN recorded


MAIN RETURN reasoning_result = {
  attention_allocation: attention_allocation,
  relevant_experiences: relevant_experiences,
  reasoning_chain: reasoning_chain,
  decision: decision,
  metacognitive_insights: metacognitive_insights
}

---

Data Structures

CognitiveProfile

interface CognitiveProfile {
  // Core cognitive capabilities (0-1 scale)
  reasoning: number;        // Logical reasoning ability
  memory: number;           // Memory recall accuracy
  attention: number;        // Focus and concentration
  language: number;         // Natural language understanding
  problem_solving: number;  // Analytical problem solving
  learning: number;         // Learning from experience

  // Cognitive resources
  working_memory_capacity: number;  // Max concurrent thoughts
  cognitive_load: number;           // Current cognitive utilization

  // Metacognitive awareness
  self_awareness: number;    // Understanding own limitations
  confidence_calibration: number;  // Accuracy of confidence estimates

  // Learning patterns
  learning_style: 'logical' | 'intuitive' | 'creative' | 'mixed';
  adaptation_rate: number;   // How quickly agent adapts
}

ReasoningChain

interface ReasoningChain {
  steps: ReasoningStep[];
  overall_confidence: number;
  selected_approach: string;
  alternatives_rejected: string[];
  governance_notes: string[];
}

interface ReasoningStep {
  step_number: number;
  sub_problem: string;
  reasoning_pattern: 'deductive' | 'inductive' | 'abductive' | 'analogical';
  approach_description: string;
  alternatives: Alternative[];
  confidence: number;
  estimated_effort: number;
}

interface Alternative {
  approach: string;
  expected_value: number;
  risk_level: 'low' | 'medium' | 'high';
  resource_requirements: string[];
  governance_compliant: boolean;
  utility_score: number;
}

MetacognitiveInsights

interface MetacognitiveInsights {
  reasoning_quality: {
    depth: number;           // How many reasoning steps
    breadth: number;         // How many alternatives
    coherence: number;       // Logical consistency
  };
  confidence_assessment: {
    predicted: number;       // Original confidence
    calibrated: number;      // Historical accuracy
    adjustment: string;      // Recommendation
  };
  learning_opportunities: {
    knowledge_gaps: string[];     // What we don't know
    uncertain_assumptions: string[];  // Low-confidence assumptions
    improvements: string[];       // How to get better
  };
}

---

Integration Points

World Model Integration

// Recall relevant experiences
const worldModel = new WorldModelService(db);
const experiences = await worldModel.recallExperiences(
  tenantId,
  agentRole,
  taskDescription,
  5  // top-5 experiences
);

// Experiences include:
// - Similar tasks and outcomes
// - Successful approaches
// - Failed alternatives
// - Canvas context
// - Feedback scores

Learning Engine Integration

// Record experience for learning
const learning = new LearningAdaptationEngine(db, llmRouter);
await learning.recordExperience(tenantId, {
  agent_id: agentId,
  task_type: taskType,
  task_description: taskDescription,
  reasoning_chain: reasoningChain,
  selected_approach: decision.selected_approach,
  outcome: outcome,
  success: success,
  confidence: decision.confidence,
  metacognitive_insights: metacognitiveInsights
});

// Learning engine extracts patterns and generates adaptations

Agent Governance Integration

// Validate decision against governance
const governance = new AgentGovernanceService(db);
const decision = await governance.canPerformAction(
  tenantId,
  agentId,
  actionType
);

if (!decision.allowed) {
  // Adjust reasoning to comply with governance
  // Select alternative approach
  // Add governance notes to reasoning chain
}

---

Example Usage

Basic Reasoning

import { CognitiveArchitecture } from '@/lib/ai/cognitive-architecture';
import { WorldModelService } from '@/lib/ai/world-model';
import { LLMRouter } from '@/lib/ai/llm-router';

// Initialize cognitive architecture
const db = getDatabase();
const llmRouter = new LLMRouter(db);
const cognitive = new CognitiveArchitecture(db, llmRouter);

// Initialize agent
await cognitive.initializeAgent(tenantId, agentId);

// Process task with reasoning
const task = {
  description: "Analyze Q4 sales data and identify trends",
  context: {
    domain: "finance",
    data_sources: ["salesforce", "quickbooks"],
    constraints: ["read-only"]
  }
};

const reasoning = await cognitive.reason(
  tenantId,
  agentId,
  task,
  { includeExperiences: true }
);

console.log('Selected Approach:', reasoning.decision.selected_approach);
console.log('Confidence:', reasoning.decision.confidence);
console.log('Reasoning Chain:', reasoning.reasoning_chain);
console.log('Metacognitive Insights:', reasoning.metacognitive_insights);

// Execute the selected approach
const result = await executeApproach(reasoning.decision.selected_approach);

// Record experience for learning
await cognitive.recordExperience(tenantId, agentId, {
  task: task,
  reasoning: reasoning,
  outcome: result,
  success: result.success
});

---

Performance Characteristics

Time Complexity

  • **Attention Allocation:** O(n) where n = task complexity
  • **Memory Recall:** O(k) where k = number of experiences retrieved
  • **Reasoning Generation:** O(m × a) where m = sub-problems, a = alternatives
  • **Decision Making:** O(m × a × g) where g = governance checks

Space Complexity

  • **Working Memory:** O(c) where c = cognitive capacity
  • **Experience Cache:** O(k) where k = cached experiences
  • **Reasoning Chain:** O(m) where m = reasoning steps

Optimization Strategies

  1. **Experience Caching**
  • Cache frequently accessed experiences
  • TTL: 5 minutes
  • Invalidation on new experiences
  1. **Parallel Reasoning**
  • Reason about independent sub-problems in parallel
  • Aggregate results at dependency points
  1. **Lazy Evaluation**
  • Don't generate all alternatives if first is sufficient
  • Stop reasoning when confidence threshold reached

---

Configuration

Cognitive Profile Initialization

// New agent starts with baseline profile
const baselineProfile: CognitiveProfile = {
  reasoning: 0.5,
  memory: 0.5,
  attention: 0.5,
  language: 0.5,
  problem_solving: 0.5,
  learning: 0.5,
  working_memory_capacity: 5,  // 5 concurrent thoughts
  cognitive_load: 0.0,
  self_awareness: 0.3,
  confidence_calibration: 0.3,
  learning_style: 'mixed',
  adaptation_rate: 0.5
};

// Profile improves through learning
// Each successful experience: +0.01 to relevant capabilities
// Each failed experience: -0.005 (with feedback)

Reasoning Parameters

interface CognitiveConfig {
  // Memory recall
  experience_recall_limit: number;        // Default: 5
  min_similarity_threshold: number;       // Default: 0.6
  recency_boost_days: number;             // Default: 7

  // Reasoning
  max_alternatives_per_step: number;      // Default: 3
  confidence_threshold: number;           // Default: 0.7
  reasoning_depth_limit: number;          // Default: 10

  // Learning
  learning_rate: number;                  // Default: 0.1
  experience_weight: number;              // Default: 0.3

  // Governance
  governance_compliance_required: boolean; // Default: true
  risk_tolerance: 'low' | 'medium' | 'high'; // Default: 'medium'
}

---

Troubleshooting

Common Issues

**1. Overconfidence Problem**

  • **Symptom:** Agent consistently confident but wrong
  • **Diagnosis:** Check confidence_calibration score
  • **Fix:** Reduce confidence by 20% until calibration improves

**2. Analysis Paralysis**

  • **Symptom:** Agent takes too long reasoning
  • **Diagnosis:** Check reasoning_depth_limit
  • **Fix:** Reduce alternatives, increase confidence threshold

**3. Poor Memory Recall**

  • **Symptom:** Agent doesn't learn from past experiences
  • **Diagnosis:** Check experience_recall_limit and similarity scores
  • **Fix:** Increase recall limit, lower similarity threshold

**4. Governance Violations**

  • **Symptom:** Selected approaches rejected by governance
  • **Diagnosis:** Check governance compliance during reasoning
  • **Fix:** Incorporate governance constraints earlier in reasoning

---

References

---

**Last Updated:** 2025-02-06

**Version:** 8.0

**Status:** Production Ready