T2 complete: OODA loop skeleton with LLM integration, bounded actions, and 32 offline unit tests. Deliverables: - runtime/agent.py — CLI entry point (--domain/--all/--dry-run/--llm) - runtime/context.py — Observe: fetch_state + build_context - runtime/actions.py — Act: parse_plan + execute (3 sanctioned writes) - runtime/README.md — usage guide and architecture overview - runtime/tests/ — 32 tests, fully offline - runtime/pyproject.toml — standalone package with llm-connect dep - canon/architecture/adr-002-custodian-agent-runtime-design.md Key design decisions (ADR-002): - Lives in runtime/ (not a new repo) — tight canon/state-hub coupling - ClaudeCodeAdapter by default (local-first, no API key) - Single-pass synchronous OODA for v0.1 simplicity - Exactly 3 sanctioned write ops: add_progress_event, update_task_status, flag_for_human - LLM returns JSON block in markdown for structured+auditable output Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
393 B
TOML
20 lines
393 B
TOML
[project]
|
|
name = "custodian-agent-runtime"
|
|
version = "0.1.0"
|
|
description = "Custodian Agent Runtime — OODA loop bootstrap"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"httpx>=0.28.0",
|
|
"llm-connect",
|
|
]
|
|
|
|
[tool.uv.sources]
|
|
llm-connect = { path = "/home/worsch/llm-connect" }
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
pythonpath = ["."]
|
|
|
|
[dependency-groups]
|
|
dev = ["pytest>=8.0"]
|