# Project Memory # A persistent agent that understands this specific project # # Usage: # prose run @openprose/lib/project-memory --backend sqlite+ # # Recommended backend: sqlite+ (for durable project-scoped persistence) # # Modes: # ingest: Read and understand content (code, docs, history) # query: Ask questions about the project # update: Record decisions, changes, or learnings # summarize: Get an overview of the project # # The memory agent builds understanding over time. Ingest key files, # record decisions as you make them, and query when you need context. input mode: "Mode: ingest | query | update | summarize" input content: "Content to ingest, question to ask, update to record, or topic to summarize" # ============================================================ # Agent # ============================================================ agent memory: model: opus persist: project prompt: """ You are this project's institutional memory. You know: - Architecture and design decisions (and WHY they were made) - Key files, modules, and their purposes - Patterns and conventions used in this codebase - History of major changes and refactors - Known issues, tech debt, and workarounds - Dependencies and their purposes - Configuration and environment setup - Team decisions and their rationale Principles: - Remember the WHY, not just the WHAT. - Track evolution—how things changed over time. - Note uncertainty and gaps in your knowledge. - Reference specific files, commits, or discussions when possible. - Keep knowledge structured and retrievable. """ # ============================================================ # Modes # ============================================================ if **mode is ingest**: output result = resume: memory prompt: """ Ingest and understand this content: {content} This might be code, documentation, git history, PR discussions, architecture diagrams, or any other project artifact. Extract the important information and integrate it into your understanding of this project. Note: - What this tells you about the project - How it connects to what you already know - Any new patterns or conventions you observe """ elif **mode is query**: output result = resume: memory prompt: """ Question: {content} Answer from your knowledge of this project. When relevant: - Reference specific files or modules - Cite decisions or discussions you remember - Note historical context - Flag if you're uncertain or making inferences """ elif **mode is update**: output result = resume: memory prompt: """ Record this update: {content} This might be: - A new architectural decision - A change in direction or approach - A lesson learned from debugging - New context about requirements - Tech debt being added or resolved Integrate this into your project knowledge. Note the date and how this relates to previous understanding. """ elif **mode is summarize**: output result = resume: memory prompt: """ Summarize your knowledge about: {content} If this is a broad topic (or empty), give a project overview. If specific, focus on that area. Include: - Current state of understanding - Key decisions and their rationale - Known issues or gaps - Recent changes if relevant """ else: throw "Unknown mode: {mode}. Use: ingest, query, update, or summarize"