feat(capability-registry): CUST-WP-0031 domain capability registry

- Migration p3k4l5m6n7o8: nullable repo_id FK on capability_catalog
- PATCH /capability-catalog/{id} endpoint for back-filling repo attribution
- register_capability MCP tool accepts optional repo_slug
- get_domain_summary now includes compact capabilities list (type+title+repo_slug)
- New get_capability_profile MCP tool: domain → repos → capabilities tree
- 6 repo descriptions populated; 25 catalog entries attributed to repos
- 9 new capabilities registered for personhood, foerster_capabilities, coulomb_social
- TOOLS.md: Capability Catalog & Requests section with full tool reference

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-31 17:23:45 +02:00
parent 907e99e057
commit 09bbf62430
6 changed files with 220 additions and 1 deletions

View File

@@ -0,0 +1,28 @@
"""add repo_id to capability_catalog
Revision ID: p3k4l5m6n7o8
Revises: o2j3k4l5m6n7
Create Date: 2026-03-31
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects.postgresql import UUID
revision = "p3k4l5m6n7o8"
down_revision = "o2j3k4l5m6n7"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"capability_catalog",
sa.Column("repo_id", UUID(as_uuid=True), sa.ForeignKey("managed_repos.id", ondelete="SET NULL"), nullable=True),
)
op.create_index("ix_capability_catalog_repo_id", "capability_catalog", ["repo_id"])
def downgrade() -> None:
op.drop_index("ix_capability_catalog_repo_id", table_name="capability_catalog")
op.drop_column("capability_catalog", "repo_id")