- mcp_server.py: use shlex.quote() on all shell-interpolated values to
prevent command injection via ticket title/description/human_id
- corvid/router.py: add alphanumeric-only regex validation for environment
prefix; add full ancestor cycle detection before setting parent_id;
import re
- Add SECURITY_REVIEW.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Allows agents to set an explicit startup script without triggering a
title/description/type change. Auto-generation still fires when those
fields change and startup_script is not provided.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Allows reassigning tickets between environments (e.g. HOME → GAME).
create_ticket and list_tickets already supported environment_id.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extracts the ticket/attachment system into a reusable pip-installable package.
Centralises homelab MCP server (tickets, attachments, system logs) here.
- corvid package: models, router (make_router factory), config, standalone main
- Alembic migration chain for fresh standalone deployments
- Docker Compose for standalone deployment (port 8090)
- mcp_server.py: moved from homelab-dashboard, CORVID_REPO_PATH configurable
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>