Files
openprose__prose/packages/std/memory/project-memory.prose
irl-dan 63c8ce4b23 Migrate std and co into packages/ monorepo layout
Move the standard library (previously `github.com/openprose/std`) and
the company-as-prose library (previously local dir
`/Users/sl/code/openprose/company-as-prose`) into this repository
under `packages/std/` and `packages/co/` respectively.

Motivation: concentrate attention on one repository so stars,
discussions, and issues aggregate. `openprose/std` was a genuinely
useful asset nobody could find because ~50 stars on its own repo
told a much worse story than 1,106 stars on `openprose/prose`
would have. Same logic applies to co.

Layout choice: `packages/{std,co}/` rather than `std/` + `co/` at
the repo root. Root siblings accumulate over time, and a flat
top-level made future libraries (hub, kit, dev, etc.) compete with
spec infrastructure. `packages/` is bounded — new libraries land
there without cluttering root. Matches pnpm/Deno/monorepo tooling
conventions.

Changes:

- New: `packages/std/` (copied from openprose/std, `.git` excluded)
- New: `packages/co/` (copied from company-as-prose, README updated
  for new name and location)
- `packages/std/README.md`: updated shorthand expansion reference
- `packages/co/README.md`: renamed "company-as-prose" to "co" in
  self-references, added std-vs-co split heuristic, updated
  `prose run` examples to use `co/` shorthand
- `skills/open-prose/deps.md`:
  - `std/` shorthand now expands to
    `github.com/openprose/prose/packages/std/`
  - `co/` shorthand added, expands to
    `github.com/openprose/prose/packages/co/`
  - Both shorthands resolve into the same clone of
    `openprose/prose` under `.deps/github.com/openprose/prose/`;
    `packages/std/` and `packages/co/` are sibling subdirectories
  - `prose.lock` format row updated to `host/owner/repo sha`
    (matches the explicit-host resolution that landed in #35)
  - `.deps/` directory structure example redrawn to show the
    `{host}/{owner}/{repo}/packages/{std,co}/...` shape
  - Error message and Interaction tables refreshed accordingly
  - Resolution Algorithm step 1 now documents both shorthands
- `skills/open-prose/forme.md`: Step 2 resolution list updated to
  include co/ shorthand and the host-keyed `.deps/` layout
- `skills/open-prose/help.md`: Q&A "How do dependencies work?"
  rewritten to name both shorthands and the new explicit-host model
- `skills/open-prose/state/filesystem.md`: `.deps/` directory
  tree re-drawn to include the `{host}/` layer with std/co as
  sibling packages inside the clone
- `skills/open-prose/guidance/patterns.md`,
  `skills/open-prose/guidance/antipatterns.md`: examples now use
  the `std/` shorthand or explicit `github.com/...` rather than
  the deprecated bare `openprose/std/` form
- `skills/open-prose/examples/registry-import/index.md`: sample
  service reference switched to `std/evals/inspector`
- `README.md`: Stdlib badge replaced with internal `packages/std/`
  link plus new `packages/co/` link; "Standard Library" section
  rewritten as "Libraries" with both packages described

Out of scope for this PR (deliberately):
- Tooling changes to `prose install` and Forme's `.deps/` writer
  to adopt the `{host}/{owner}/{repo}/` layout in practice — this
  PR is spec-only. Existing tooling continues to work against
  whatever layout it currently implements; the spec now describes
  the target.
- Retiring the `openprose/std` GitHub repo. Delete that repo
  separately after this merges.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 14:14:31 -07:00

119 lines
3.5 KiB
Plaintext

# 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"