docs+skills: add main UI/UX visual-truth PRD and skill links
This commit is contained in:
parent
1c36223e7f
commit
14a50ad4ae
289 changed files with 54463 additions and 0 deletions
170
.agents/skills/rlm-mem/bootstrap.py
Normal file
170
.agents/skills/rlm-mem/bootstrap.py
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
RLM-MEM Bootstrap Script
|
||||
Automates skill-local setup and verification of the memory system for a fresh agent.
|
||||
|
||||
Usage:
|
||||
python bootstrap.py
|
||||
|
||||
What this does:
|
||||
1. Validates Python/runtime prerequisites
|
||||
2. Runs verification against the vendored skill runtime
|
||||
3. Prints skill-local usage instructions
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
def run_command(cmd, cwd=None):
|
||||
"""Run a shell command and print output."""
|
||||
print(f"Running: {cmd}")
|
||||
result = subprocess.run(
|
||||
cmd, shell=True, check=False, cwd=cwd,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
|
||||
)
|
||||
if result.returncode != 0:
|
||||
print(f"Error running command: {result.stdout}")
|
||||
return False
|
||||
return True
|
||||
|
||||
def check_python_version():
|
||||
"""Ensure Python 3.11+."""
|
||||
if sys.version_info < (3, 11):
|
||||
print("Error: Python 3.11+ required.")
|
||||
return False
|
||||
return True
|
||||
|
||||
def validate_skill_runtime(skill_dir: Path):
|
||||
"""Validate required vendored runtime exists in the skill folder."""
|
||||
required = [
|
||||
skill_dir / "brain" / "scripts" / "__init__.py",
|
||||
skill_dir / "brain" / "scripts" / "layered_memory_store.py",
|
||||
skill_dir / "souls" / "linus_soul.md",
|
||||
skill_dir / "ACTIVE_SOUL.md",
|
||||
skill_dir / "scripts" / "manage_soul.py",
|
||||
skill_dir / "scripts" / "manage_user.py",
|
||||
]
|
||||
missing = [p for p in required if not p.exists()]
|
||||
if missing:
|
||||
print("Error: Missing required skill runtime files:")
|
||||
for path in missing:
|
||||
print(f" - {path}")
|
||||
return False
|
||||
return True
|
||||
|
||||
def verify_installation(skill_dir: Path):
|
||||
"""Run verification against skill-local runtime without repo-level install."""
|
||||
print("Verifying skill-local runtime...")
|
||||
# Create a temporary verification script
|
||||
verify_script = """
|
||||
import sys
|
||||
from pathlib import Path
|
||||
try:
|
||||
from brain.scripts import LayeredMemoryStore, LayeredChunkStoreAdapter, MemoryPolicy, RememberOperation
|
||||
print("Imports successful.")
|
||||
|
||||
policy = MemoryPolicy(project_root=Path.cwd())
|
||||
store = LayeredMemoryStore(policy=policy, agent_id="bootstrap-verify")
|
||||
adapter = LayeredChunkStoreAdapter(store)
|
||||
remember = RememberOperation(adapter)
|
||||
|
||||
res = remember.remember("Bootstrap verification", "bootstrap", tags=["setup"])
|
||||
if res['success']:
|
||||
print("Memory write successful.")
|
||||
else:
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"Verification failed: {e}")
|
||||
sys.exit(1)
|
||||
"""
|
||||
verify_path = skill_dir / "verify_bootstrap.py"
|
||||
verify_path.write_text(verify_script, encoding="utf-8")
|
||||
|
||||
env = os.environ.copy()
|
||||
env["PYTHONPATH"] = str(skill_dir)
|
||||
cmd = [sys.executable, "verify_bootstrap.py"]
|
||||
result = subprocess.run(
|
||||
cmd,
|
||||
cwd=skill_dir,
|
||||
env=env,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
)
|
||||
if result.returncode != 0:
|
||||
print(f"Error running verification: {result.stdout}")
|
||||
verify_path.unlink(missing_ok=True)
|
||||
return False
|
||||
|
||||
success = True
|
||||
if success:
|
||||
print("Verification passed (skill-local runtime).")
|
||||
verify_path.unlink(missing_ok=True)
|
||||
return success
|
||||
|
||||
def update_agents_md(target_dir: Path):
|
||||
"""Add blurb to AGENTS.md."""
|
||||
agents_md = target_dir / "AGENTS.md"
|
||||
blurb = """
|
||||
## 🧠 RLM-MEM Brain Protocol
|
||||
This project uses the RLM-MEM RLM Memory System (layered `.agents/memory/`).
|
||||
- **Usage:** Access memory via `brain.scripts` python modules.
|
||||
- **CLI:** Manage memory with `python -m brain.scripts.memory_cli`.
|
||||
- **Guide:** See `RLM-MEM/SKILL.md`.
|
||||
- **Identity:** Controlled by `RLM-MEM/ACTIVE_SOUL.md`.
|
||||
"""
|
||||
|
||||
if agents_md.exists():
|
||||
content = agents_md.read_text(encoding="utf-8")
|
||||
if "RLM-MEM Brain Protocol" not in content:
|
||||
print("Updating AGENTS.md...")
|
||||
with agents_md.open("a", encoding="utf-8") as f:
|
||||
f.write(f"\n{blurb}\n")
|
||||
else:
|
||||
print("AGENTS.md already contains memory protocol.")
|
||||
else:
|
||||
print("Creating AGENTS.md...")
|
||||
agents_md.write_text(f"# Project Agents\n{blurb}", encoding="utf-8")
|
||||
return True
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Bootstrap RLM-MEM skill-local runtime")
|
||||
parser.add_argument(
|
||||
"--integrate-root",
|
||||
action="store_true",
|
||||
help="Optionally update root AGENTS.md with RLM-MEM protocol blurb.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
print("=== RLM-MEM Bootstrap ===")
|
||||
|
||||
skill_dir = Path(__file__).parent.resolve()
|
||||
# RLM-MEM is expected at repo root.
|
||||
project_root = skill_dir.parent
|
||||
|
||||
if not check_python_version():
|
||||
sys.exit(1)
|
||||
|
||||
if not validate_skill_runtime(skill_dir):
|
||||
print("Failed runtime validation.")
|
||||
sys.exit(1)
|
||||
|
||||
if not verify_installation(skill_dir):
|
||||
print("Verification failed.")
|
||||
sys.exit(1)
|
||||
|
||||
if args.integrate_root:
|
||||
update_agents_md(project_root)
|
||||
else:
|
||||
print("Skipping AGENTS.md integration (use --integrate-root to enable).")
|
||||
|
||||
print("\n=== Bootstrap Complete ===")
|
||||
print("The skill-local memory system is ready.")
|
||||
print("Use this from the skill directory:")
|
||||
print(" python -m brain.scripts.memory_cli")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue