diff --git a/CHANGELOG.md b/CHANGELOG.md index d9a87c1..57ed72b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,27 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/). -## [2.1.0] - 2026-03-30 — Production Cognition +## [2.1.0] - 2026-03-30 — Cognition Primitives -Dhee V2.1: All 10 cognition capabilities at production A-grade. Every self-improvement loop is closed and verified with 60 tests. +Dhee V2.1: Adds first-class cognitive primitives (episodes, tasks, policies, beliefs, triggers) and a 60-test suite that exercises them. These are internal building blocks — the public API remains the 4-operation surface (remember/recall/context/checkpoint). -### Added — Production Cognition Systems +### Added — Cognitive Primitives (internal, importable from `dhee.core`) -- **Episode System** (`dhee/core/episode.py`): First-class temporal unit of agent experience. Lifecycle: open→active→closed→archived→forgotten. Automatic boundary detection via time gap (>30min) and topic shift (Jaccard <20%). Utility-based selective forgetting with exponential recency decay (7-day half-life), access frequency, outcome value, and connection density scoring. Hard cap at 500 episodes/user. -- **Task State** (`dhee/core/task_state.py`): Structured task tracking with goal/plan/progress/blockers/outcome. Full lifecycle: created→in_progress→blocked→completed/failed. Step-level tracking with `advance_step()`. Blocker management (soft/hard severity). Plan success rate analysis for policy learning. -- **Policy Cases** (`dhee/core/policy.py`): Outcome-linked condition→action rules (not text reflections). Wilson score confidence at 95% interval. Laplace-smoothed win rate. Auto-promotion to VALIDATED (confidence≥0.5, win_rate≥0.6) and auto-deprecation (apply≥5, win_rate<0.4). Policy extraction from completed task patterns. -- **Belief Tracking** (`dhee/core/belief.py`): Bayesian-inspired confidence updates (lr=0.15×evidence_strength). Contradiction detection via keyword Jaccard overlap >0.4 + negation patterns. Revision history with stability metric. Status lifecycle: proposed→held→challenged→revised|retracted. Auto-creation from factual assertions in stored memories. -- **Trigger System** (`dhee/core/trigger.py`): 5 trigger types all returning `TriggerResult(fired, confidence, reason)`. Keyword (overlap scoring + required keywords), Time (after/before/recurring/window modes), Event (type + regex pattern), Composite (AND/OR/NOT with min/max confidence), Sequence (ordered events within time window, tightness-based confidence). Backwards-compatible bridge from legacy Intention format. -- **Test Suite** (`tests/test_cognition_v3.py`): 60 tests across 10 classes covering all capabilities + full pipeline integration. +- **Episode System** (`dhee/core/episode.py`): Temporal unit of agent experience. Lifecycle: open→active→closed→archived→forgotten. Boundary detection via time gap and topic shift. Utility-based selective forgetting. JSON-file-backed persistence (suitable for local-first use; production systems should own their own persistence). +- **Task State** (`dhee/core/task_state.py`): Structured task tracking with goal/plan/progress/blockers/outcome. Step-level tracking. Blocker management. Plan success rate analysis. +- **Policy Cases** (`dhee/core/policy.py`): Outcome-linked condition→action rules with Wilson score confidence. Auto-promotion and auto-deprecation based on win rate. +- **Belief Tracking** (`dhee/core/belief.py`): Confidence updates with evidence tracking. Contradiction detection via keyword overlap + negation patterns. Revision history. +- **Trigger System** (`dhee/core/trigger.py`): 5 trigger types (keyword, time, event, composite, sequence) returning `TriggerResult(fired, confidence, reason)`. Backwards-compatible bridge from legacy intentions. +- **Test Suite** (`tests/test_cognition_v3.py`): 60 tests covering cognition primitives, contrastive pairs, heuristic distillation, meta-learning, and Buddhi pipeline wiring. -### Changed — Closed Self-Improvement Loops +### Changed -- **Contrastive Pairs**: Upgraded from scaffolded to production. Retrieval-time integration in HyperContext, MaTTS scoring, DPO export for training. -- **Heuristic Distillation**: Upgraded from scaffolded to production. Outcome validation loop closed — `reflect()` validates heuristics used in the session and updates confidence. -- **Meta-Learning Gate**: Upgraded from scaffolded to production. Real evaluation via propose/evaluate/promote/rollback cycle verified. -- **Progressive Training**: Upgraded from theoretical to production. Real data flow from Samskara → SFT → DPO → RL pipeline. -- **Buddhi** (`dhee/core/buddhi.py`): HyperContext expanded with `episodes`, `task_states`, `policies`, `beliefs`. `reflect()` now creates contrastive pairs + distills heuristics + validates used heuristics + extracts policies + updates beliefs. `on_memory_stored()` auto-creates beliefs for factual assertions. -- **DheePlugin** (`dhee/adapters/base.py`): `checkpoint()` handles episode closure, task state lifecycle, selective forgetting. System prompt renderer includes Proven Strategies, Established Beliefs, Active Tasks, Recent Experience. New convenience methods: `add_belief()`, `challenge_belief()`, `create_task()`, `advance_task()`. +- **Buddhi**: HyperContext expanded with episodes, task_states, policies, beliefs. `reflect()` creates contrastive pairs, distills heuristics, extracts policies, updates beliefs. +- **DheePlugin**: `checkpoint()` handles episode closure and task lifecycle. System prompt renderer includes strategies, beliefs, tasks, experience. - **Version**: 2.0.0 → 2.1.0 --- @@ -73,7 +69,7 @@ Dhee V2: Self-Evolving Cognition Plugin. This release transforms Dhee from a mem - **Version**: 1.0.0 → 2.0.0 - **MCP server** (`dhee/mcp_slim.py`): Refactored to wrap `DheePlugin` as backing singleton. -- **pyproject.toml**: Updated description, keywords, classifier to Production/Stable. +- **pyproject.toml**: Updated description, keywords, classifiers. ### Research References diff --git a/dhee/__init__.py b/dhee/__init__.py index 119d440..b70585f 100644 --- a/dhee/__init__.py +++ b/dhee/__init__.py @@ -1,52 +1,45 @@ -"""dhee — Cognition as a Service. The memory layer that makes ANY agent intelligent. +"""dhee — The cognition layer that turns any agent into a HyperAgent. -- FadeMem: Dual-layer (SML/LML) with natural decay -- EchoMem: Multi-modal encoding for stronger retention -- CategoryMem: Dynamic hierarchical category organization -- Universal Engram: Structured facts + context anchoring -- Cognition Engine: Memory-grounded recursive reasoning -- Prospective Scenes: Memory-driven future anticipation +4 operations. Deferred enrichment. Minimal hot-path cost. +Your agent remembers, learns from outcomes, and predicts what you need next. -Quick Start (zero-config, no API key): - from dhee import Memory - m = Memory() - m.add("User prefers Python") - results = m.search("programming preferences") +Quick Start: + from dhee import Dhee -Tiered Memory Classes: + d = Dhee() + d.remember("User prefers dark mode") + d.recall("what theme does the user like?") + d.context("fixing auth bug") + d.checkpoint("Fixed it", what_worked="git blame first") + +Memory Classes: CoreMemory — lightweight: add/search/delete + decay (no LLM) SmartMemory — + echo encoding, categories, knowledge graph (needs LLM) - FullMemory — + scenes, profiles, tasks, cognition (everything) + FullMemory — + scenes, profiles, orchestration, cognition (everything) Memory — alias for CoreMemory (lightest default) """ from dhee.memory.core import CoreMemory from dhee.memory.smart import SmartMemory from dhee.memory.main import FullMemory -from dhee.simple import Engram, Dhee +from dhee.simple import Dhee from dhee.adapters.base import DheePlugin from dhee.core.category import CategoryProcessor, Category, CategoryType, CategoryMatch from dhee.core.echo import EchoProcessor, EchoDepth, EchoResult from dhee.configs.base import MemoryConfig, FadeMemConfig, EchoMemConfig, CategoryMemConfig, ScopeConfig -from dhee.core.belief import BeliefNode, BeliefStore, BeliefStatus -from dhee.core.policy import PolicyCase, PolicyStore, PolicyStatus -from dhee.core.task_state import TaskState, TaskStateStore, TaskStatus -from dhee.core.episode import Episode, EpisodeStore, EpisodeStatus -from dhee.core.trigger import TriggerManager, TriggerResult, TriggerContext # Default: CoreMemory (lightest, zero-config) Memory = CoreMemory __version__ = "2.2.0b1" __all__ = [ - # Tiered memory classes + # Memory classes "CoreMemory", "SmartMemory", "FullMemory", "Memory", - # Simplified interface + # Simplified interface (the 4-operation API) "Dhee", - "Engram", # Universal plugin "DheePlugin", # CategoryMem @@ -64,26 +57,4 @@ "EchoMemConfig", "CategoryMemConfig", "ScopeConfig", - # Cognitive subsystems - "BeliefNode", - "BeliefStore", - "BeliefStatus", - "PolicyCase", - "PolicyStore", - "PolicyStatus", - "TaskState", - "TaskStateStore", - "TaskStatus", - "Episode", - "EpisodeStore", - "EpisodeStatus", - "TriggerManager", - "TriggerResult", - "TriggerContext", ] - - -def _load_teaching(): - """Lazy-load teaching module to avoid import overhead when not needed.""" - from dhee.teaching import ConceptStore, StudentModel, TeachingMemory, TeachingConfig - return ConceptStore, StudentModel, TeachingMemory, TeachingConfig diff --git a/dhee/benchmarks/arc_agi.py b/dhee/benchmarks/arc_agi.py index 1b7f3d1..728f7f6 100644 --- a/dhee/benchmarks/arc_agi.py +++ b/dhee/benchmarks/arc_agi.py @@ -206,7 +206,7 @@ def run_arc_benchmark(args: argparse.Namespace) -> Dict[str, Any]: memory = None if args.mode == "memory": from dhee.configs.base import MemoryConfig - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory tmpdir = tempfile.mkdtemp(prefix="arc_bench_") config = MemoryConfig( @@ -221,7 +221,7 @@ def run_arc_benchmark(args: argparse.Namespace) -> Dict[str, Any]: scene={"enable_scenes": False}, profile={"enable_profiles": False}, ) - memory = Memory(config) + memory = FullMemory(config) print(f"Embedder: {args.embedder_provider}/{args.embedder_model}") print(f"Memory DB: {tmpdir}") print() diff --git a/dhee/cli.py b/dhee/cli.py index db1d436..6ee16a7 100644 --- a/dhee/cli.py +++ b/dhee/cli.py @@ -1,16 +1,16 @@ -"""engram CLI — memory layer for AI agents. +"""dhee CLI — cognition layer for AI agents. Usage: - engram setup Interactive setup wizard - engram add "text" Add a memory - engram search "query" Search memories - engram list List all memories - engram stats Memory statistics - engram decay Apply forgetting - engram categories List categories - engram export Export to JSON - engram import Import from JSON - engram status Version, config, DB info + dhee setup Interactive setup wizard + dhee add "text" Add a memory + dhee search "query" Search memories + dhee list List all memories + dhee stats Memory statistics + dhee decay Apply forgetting + dhee categories List categories + dhee export Export to JSON + dhee import Import from JSON + dhee status Version, config, DB info """ import argparse @@ -323,7 +323,7 @@ def cmd_benchmark(args: argparse.Namespace) -> None: from dhee import Memory print("=" * 60) - print(" engram benchmark") + print(" dhee benchmark") print("=" * 60) # Cold start diff --git a/dhee/cli_config.py b/dhee/cli_config.py index b958490..e6b44ce 100644 --- a/dhee/cli_config.py +++ b/dhee/cli_config.py @@ -84,7 +84,7 @@ def get_api_key(provider: str) -> Optional[str]: def get_memory_instance(config: Optional[Dict[str, Any]] = None): """Build a Memory instance from CLI config.""" - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory from dhee.configs.base import ( MemoryConfig, VectorStoreConfig, @@ -136,4 +136,4 @@ def get_memory_instance(config: Optional[Dict[str, Any]] = None): engram=FadeMemConfig(enable_forgetting=True), ) - return Memory(memory_config) + return FullMemory(memory_config) diff --git a/dhee/configs/base.py b/dhee/configs/base.py index 0205283..570963a 100644 --- a/dhee/configs/base.py +++ b/dhee/configs/base.py @@ -460,7 +460,7 @@ class EngramExtractionConfig(BaseModel): class SkillConfig(BaseModel): """Configuration for the skill-learning agent memory system.""" enable_skills: bool = True - skill_collection_name: str = "engram_skills" + skill_collection_name: str = "dhee_skills" min_confidence_for_auto_apply: float = 0.3 enable_mining: bool = True min_trajectory_steps: int = 3 diff --git a/dhee/configs/presets.py b/dhee/configs/presets.py index df46cbe..1a0d198 100644 --- a/dhee/configs/presets.py +++ b/dhee/configs/presets.py @@ -38,12 +38,12 @@ def minimal_config(): vector_store=VectorStoreConfig( provider="memory", config={ - "collection_name": "engram_memories", + "collection_name": "dhee_memories", "embedding_model_dims": 384, }, ), history_db_path=os.path.join(data_dir, "history.db"), - collection_name="engram_memories", + collection_name="dhee_memories", embedding_model_dims=384, engram=FadeMemConfig(enable_forgetting=True), echo=EchoMemConfig(enable_echo=False), @@ -99,7 +99,7 @@ def smart_config(): provider="zvec", config={ "path": os.path.join(data_dir, "zvec"), - "collection_name": "engram_memories", + "collection_name": "dhee_memories", "embedding_model_dims": dims, }, ) @@ -107,7 +107,7 @@ def smart_config(): vs = VectorStoreConfig( provider="memory", config={ - "collection_name": "engram_memories", + "collection_name": "dhee_memories", "embedding_model_dims": dims, }, ) @@ -120,7 +120,7 @@ def smart_config(): llm=LLMConfig(provider=llm_provider, config={}), vector_store=vs, history_db_path=os.path.join(data_dir, "history.db"), - collection_name="engram_memories", + collection_name="dhee_memories", embedding_model_dims=dims, engram=FadeMemConfig(enable_forgetting=True), echo=EchoMemConfig(enable_echo=has_llm), diff --git a/dhee/core/__init__.py b/dhee/core/__init__.py index d61136b..01c22f0 100644 --- a/dhee/core/__init__.py +++ b/dhee/core/__init__.py @@ -4,71 +4,19 @@ from dhee.core.fusion import fuse_memories from dhee.core.retrieval import composite_score from dhee.core.category import CategoryProcessor, Category, CategoryMatch, CategoryType -from dhee.core.belief import BeliefNode, BeliefStore, BeliefStatus, Evidence, BeliefRevision -from dhee.core.policy import PolicyCase, PolicyStore, PolicyStatus, PolicyCondition, PolicyAction -from dhee.core.task_state import TaskState, TaskStateStore, TaskStatus, TaskStep, Blocker -from dhee.core.episode import Episode, EpisodeStore, EpisodeStatus, EpisodeEvent -from dhee.core.trigger import ( - TriggerManager, - KeywordTrigger, - TimeTrigger, - EventTrigger, - CompositeTrigger, - SequenceTrigger, - TriggerResult, - TriggerContext, -) __all__ = [ - # Decay "calculate_decayed_strength", "should_forget", "should_promote", - # Conflict "resolve_conflict", - # Echo "EchoProcessor", "EchoDepth", "EchoResult", - # Fusion "fuse_memories", - # Retrieval "composite_score", - # Category "CategoryProcessor", "Category", "CategoryMatch", "CategoryType", - # Belief - "BeliefNode", - "BeliefStore", - "BeliefStatus", - "Evidence", - "BeliefRevision", - # Policy - "PolicyCase", - "PolicyStore", - "PolicyStatus", - "PolicyCondition", - "PolicyAction", - # Task State - "TaskState", - "TaskStateStore", - "TaskStatus", - "TaskStep", - "Blocker", - # Episode - "Episode", - "EpisodeStore", - "EpisodeStatus", - "EpisodeEvent", - # Trigger - "TriggerManager", - "KeywordTrigger", - "TimeTrigger", - "EventTrigger", - "CompositeTrigger", - "SequenceTrigger", - "TriggerResult", - "TriggerContext", ] diff --git a/dhee/core/consolidation.py b/dhee/core/consolidation.py index da4f480..00750e6 100644 --- a/dhee/core/consolidation.py +++ b/dhee/core/consolidation.py @@ -14,7 +14,7 @@ from dhee.core.active_memory import ActiveMemoryStore if TYPE_CHECKING: - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory logger = logging.getLogger(__name__) @@ -25,7 +25,7 @@ class ConsolidationEngine: def __init__( self, active_store: ActiveMemoryStore, - memory: "Memory", + memory: "FullMemory", config: ActiveMemoryConfig, ): self.active = active_store diff --git a/dhee/mcp_server.py b/dhee/mcp_server.py index 681ba8e..8fe7038 100644 --- a/dhee/mcp_server.py +++ b/dhee/mcp_server.py @@ -5,7 +5,7 @@ 2. search_memory — Semantic search 3. get_memory — Fetch by ID 4. get_all_memories — List with filters - 5. engram_context — HyperAgent session bootstrap (Buddhi-powered) + 5. dhee_context — HyperAgent session bootstrap (Buddhi-powered) 6. get_last_session — Handoff: load prior session 7. save_session_digest — Handoff: save current session 8. get_memory_stats — Quick health check @@ -36,7 +36,7 @@ from mcp.server.stdio import stdio_server from mcp.types import Tool, TextContent -from dhee.memory.main import FullMemory, Memory +from dhee.memory.main import FullMemory from dhee.configs.base import ( MemoryConfig, VectorStoreConfig, @@ -230,7 +230,7 @@ def get_buddhi(): ), Tool( name="search_memory", - description="Search engram for relevant memories by semantic query. The UserPromptSubmit hook handles background search automatically — call this tool only for explicit user recall requests such as 'what did we discuss about X?' or 'recall my preference for Y'.", + description="Search memory for relevant memories by semantic query. The UserPromptSubmit hook handles background search automatically — call this tool only for explicit user recall requests such as 'what did we discuss about X?' or 'recall my preference for Y'.", inputSchema={ "type": "object", "properties": { @@ -276,7 +276,7 @@ def get_buddhi(): }, ), Tool( - name="engram_context", + name="dhee_context", description="HyperAgent session bootstrap. Call at conversation start to get EVERYTHING: performance trends, synthesized insights from prior runs, relevant skills, pending intentions, proactive warnings, and top memories. This single call turns any agent into a HyperAgent with persistent memory and self-improvement awareness.", inputSchema={ "type": "object", @@ -324,7 +324,7 @@ def get_buddhi(): ), Tool( name="get_memory_stats", - description="Get statistics about the memory store including counts and layer distribution. Call when the user asks about memory health, wants an overview of what's stored, or runs /engram:status.", + description="Get statistics about the memory store including counts and layer distribution. Call when the user asks about memory health, wants an overview of what's stored, or runs /dhee:status.", inputSchema={ "type": "object", "properties": { @@ -673,7 +673,7 @@ def _handle_get_all_memories(memory, args): return result -def _handle_engram_context(memory, args): +def _handle_dhee_context(memory, args): """HyperAgent session bootstrap — Buddhi-powered. Returns performance trends, synthesized insights, relevant skills, @@ -961,7 +961,7 @@ def _handle_store_intention(_memory, arguments: Dict[str, Any]) -> Dict[str, Any "search_memory": _handle_search_memory, "get_memory": _handle_get_memory, "get_all_memories": _handle_get_all_memories, - "engram_context": _handle_engram_context, + "dhee_context": _handle_dhee_context, "get_last_session": _handle_get_last_session, "save_session_digest": _handle_save_session_digest, "get_memory_stats": _handle_get_memory_stats, diff --git a/dhee/memory/__init__.py b/dhee/memory/__init__.py index 602db46..e97ef71 100644 --- a/dhee/memory/__init__.py +++ b/dhee/memory/__init__.py @@ -1,6 +1,6 @@ from dhee.memory.core import CoreMemory from dhee.memory.smart import SmartMemory -from dhee.memory.main import FullMemory, Memory +from dhee.memory.main import FullMemory from dhee.memory.tasks import TaskManager from dhee.memory.projects import ProjectManager @@ -8,7 +8,6 @@ "CoreMemory", "SmartMemory", "FullMemory", - "Memory", "TaskManager", "ProjectManager", ] diff --git a/dhee/memory/main.py b/dhee/memory/main.py index 11779e5..af6ee1c 100644 --- a/dhee/memory/main.py +++ b/dhee/memory/main.py @@ -33,14 +33,6 @@ from dhee.core.graph import KnowledgeGraph from dhee.core.scene import SceneProcessor from dhee.core.profile import ProfileProcessor -from dhee.core.answer_orchestration import should_override_with_reducer -from dhee.core.episodic_index import ( - extract_entity_aggregates, - extract_episodic_events, - intent_event_types, - score_event_match, - tokenize_query_terms, -) from dhee.db.sqlite import SQLiteManager from dhee.exceptions import FadeMemValidationError from dhee.memory.base import MemoryBase @@ -3128,6 +3120,3 @@ def get_decay_log(self, limit: int = 20) -> List[Dict[str, Any]]: """Get recent decay history for dashboard sparkline.""" return self.db.get_decay_log_entries(limit=limit) - -# Backward-compatible alias — existing code that imports Memory still works. -Memory = FullMemory diff --git a/dhee/observability.py b/dhee/observability.py index 94e8ce2..76b6054 100644 --- a/dhee/observability.py +++ b/dhee/observability.py @@ -11,7 +11,7 @@ from contextlib import contextmanager from typing import Any, Dict, Iterator -logger = logging.getLogger("engram") +logger = logging.getLogger("dhee") class _NoOpMetrics: diff --git a/dhee/simple.py b/dhee/simple.py index 41f1071..21c07d6 100644 --- a/dhee/simple.py +++ b/dhee/simple.py @@ -1,14 +1,14 @@ """Simplified Dhee interface for 3-line integration. -This module provides the Engram class - a simplified, batteries-included -interface for the Dhee memory layer. +This module provides the Dhee class — a batteries-included interface +for the 4-operation cognition API (remember/recall/context/checkpoint). Usage: - from dhee import Engram + from dhee import Dhee - memory = Engram() # Auto-configures based on environment - memory.add("User prefers Python over JavaScript", user_id="u123") - results = memory.search("programming preferences", user_id="u123") + d = Dhee() + d.remember("User prefers Python over JavaScript") + d.recall("programming preferences") Environment Variables: OPENAI_API_KEY: OpenAI API key (recommended) @@ -32,7 +32,7 @@ MemoryConfig, VectorStoreConfig, ) -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory def _detect_provider() -> str: @@ -91,7 +91,7 @@ def __init__( enable_echo: bool = True, enable_categories: bool = True, enable_decay: bool = True, - collection_name: str = "engram", + collection_name: str = "dhee", in_memory: bool = False, ): # Auto-detect provider @@ -144,12 +144,12 @@ def __init__( category=CategoryMemConfig( enable_categories=enable_categories, ), - history_db_path=str(self._data_dir / "engram.db"), + history_db_path=str(self._data_dir / "history.db"), collection_name=collection_name, embedding_model_dims=embedding_dims, ) - self._memory = Memory(config) + self._memory = FullMemory(config) def add( self, diff --git a/dhee/skills/store.py b/dhee/skills/store.py index 35653c1..df91767 100644 --- a/dhee/skills/store.py +++ b/dhee/skills/store.py @@ -23,7 +23,7 @@ def __init__( skill_dirs: List[str], embedder: Any = None, vector_store: Any = None, - collection_name: str = "engram_skills", + collection_name: str = "dhee_skills", ): self._skill_dirs = skill_dirs self._embedder = embedder diff --git a/tests/test_batch.py b/tests/test_batch.py index 304801d..1c88023 100644 --- a/tests/test_batch.py +++ b/tests/test_batch.py @@ -9,7 +9,7 @@ import pytest from dhee.configs.base import BatchConfig, MemoryConfig -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory def _make_memory(tmpdir, batch_enabled=True, echo_enabled=True, categories_enabled=True): diff --git a/tests/test_e2e_all_features.py b/tests/test_e2e_all_features.py index 53d46eb..8d2a50d 100644 --- a/tests/test_e2e_all_features.py +++ b/tests/test_e2e_all_features.py @@ -41,7 +41,7 @@ MemoryConfig, LLMConfig, EmbedderConfig, VectorStoreConfig, EchoMemConfig, CategoryMemConfig, ProfileConfig, ) -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory def create_memory(): diff --git a/tests/test_openclaw.py b/tests/test_openclaw.py index 6e94e4b..2cd8c50 100644 --- a/tests/test_openclaw.py +++ b/tests/test_openclaw.py @@ -6,7 +6,7 @@ import pytest from dhee.configs.base import MemoryConfig -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory from dhee.memory.projects import ProjectManager from dhee.memory.tasks import TaskManager from engram_bus import Bus diff --git a/tests/test_parallel.py b/tests/test_parallel.py index 54fd7a1..faff06e 100644 --- a/tests/test_parallel.py +++ b/tests/test_parallel.py @@ -145,7 +145,7 @@ class TestParallelMemoryIntegration: def test_memory_no_executor_by_default(self): """With default config, no executor is created.""" from dhee.configs.base import MemoryConfig - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory as Memory import tempfile, os with tempfile.TemporaryDirectory() as tmpdir: config = MemoryConfig( @@ -165,7 +165,7 @@ def test_memory_no_executor_by_default(self): def test_memory_creates_executor_when_enabled(self): """With enable_parallel=True, executor is created.""" from dhee.configs.base import MemoryConfig, ParallelConfig - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory as Memory import tempfile, os with tempfile.TemporaryDirectory() as tmpdir: config = MemoryConfig( @@ -187,7 +187,7 @@ def test_memory_creates_executor_when_enabled(self): def test_memory_close_shuts_down_executor(self): """close() cleanly shuts down the executor.""" from dhee.configs.base import MemoryConfig, ParallelConfig - from dhee.memory.main import Memory + from dhee.memory.main import FullMemory as Memory import tempfile, os with tempfile.TemporaryDirectory() as tmpdir: config = MemoryConfig( diff --git a/tests/test_power_packages.py b/tests/test_power_packages.py index 380af66..2cc9eeb 100644 --- a/tests/test_power_packages.py +++ b/tests/test_power_packages.py @@ -9,7 +9,7 @@ import pytest from dhee.configs.base import MemoryConfig, LLMConfig, EmbedderConfig, VectorStoreConfig -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory # Load keys from .env file in project root _ENV_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), ".env") diff --git a/tests/test_projects.py b/tests/test_projects.py index df07240..88a9bf0 100644 --- a/tests/test_projects.py +++ b/tests/test_projects.py @@ -6,7 +6,7 @@ import pytest from dhee.configs.base import MemoryConfig -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory from dhee.memory.projects import ProjectManager, DEFAULT_STATUSES diff --git a/tests/test_tasks.py b/tests/test_tasks.py index b3a88bc..5a3de33 100644 --- a/tests/test_tasks.py +++ b/tests/test_tasks.py @@ -10,7 +10,7 @@ import pytest from dhee.configs.base import MemoryConfig, TaskConfig -from dhee.memory.main import Memory +from dhee.memory.main import FullMemory as Memory from dhee.memory.tasks import TaskManager, TASK_STATUSES, ACTIVE_STATUSES