[Phase 6.3.2] ProjectMemoryManager Core Implementation #85

Closed
opened 2026-04-07 03:13:30 +00:00 by Mark · 0 comments
Owner

Parent: #73 (Conversation/Project Memory)

Overview

Build core ProjectMemoryManager class for orchestrating project memory, episodes, and context.

Details

Create substrate/project_memory.py:

Project Management:

  • create_project(name, description, goals) -> ProjectContext
  • get_project(project_id) -> ProjectContext | None
  • list_projects(status) -> list[ProjectContext]
  • archive_project(project_id)

Conversation Management:

  • create_conversation(project_id, title, context_type) -> Conversation
  • add_turn(conversation_id, role, content, **metadata) -> Turn
  • get_recent_context(conversation_id, limit) -> list[Turn]

Episode Management:

  • compress_to_episode(conversation_id) -> Episode
  • get_episode_summary(episode_id) -> str
  • retrieve_relevant_episodes(project_id, query, limit) -> list[Episode]

Fact Management:

  • extract_facts(episode_id) -> list[Fact]
  • query_facts(project_id, fact_type, query) -> list[Fact]
  • deduplicate_facts(project_id)

TODO Management:

  • create_todo(project_id, title, **kwargs) -> TodoItem
  • update_todo(todo_id, status)
  • get_active_todos(project_id) -> list[TodoItem]
  • complete_todo(todo_id, turn_id)

Acceptance Criteria

  • All CRUD operations work correctly
  • Tests pass for core functionality
  • Integration with existing ledger
## Parent: #73 (Conversation/Project Memory) ## Overview Build core ProjectMemoryManager class for orchestrating project memory, episodes, and context. ## Details Create `substrate/project_memory.py`: **Project Management:** - create_project(name, description, goals) -> ProjectContext - get_project(project_id) -> ProjectContext | None - list_projects(status) -> list[ProjectContext] - archive_project(project_id) **Conversation Management:** - create_conversation(project_id, title, context_type) -> Conversation - add_turn(conversation_id, role, content, **metadata) -> Turn - get_recent_context(conversation_id, limit) -> list[Turn] **Episode Management:** - compress_to_episode(conversation_id) -> Episode - get_episode_summary(episode_id) -> str - retrieve_relevant_episodes(project_id, query, limit) -> list[Episode] **Fact Management:** - extract_facts(episode_id) -> list[Fact] - query_facts(project_id, fact_type, query) -> list[Fact] - deduplicate_facts(project_id) **TODO Management:** - create_todo(project_id, title, **kwargs) -> TodoItem - update_todo(todo_id, status) - get_active_todos(project_id) -> list[TodoItem] - complete_todo(todo_id, turn_id) ## Acceptance Criteria - [ ] All CRUD operations work correctly - [ ] Tests pass for core functionality - [ ] Integration with existing ledger
Mark closed this issue 2026-04-07 03:30:57 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/mesh-seed#85
No description provided.