search-context.ts and search-issues.ts now check payload.type and
branch formatting for project points (slug, name, status, summary)
vs chunk points (source, section, text). Casts to Record<string,
unknown> first instead of blindly casting to ChunkPayload.
Replace chunk-based project tools with dedicated structured project
tools that store projects as single Qdrant points with rich JSON
payloads. Adds list_projects, get_project, upsert_project,
update_project, and delete_project tools with Zod discriminated
union validation for per-category relationship operations.
Add upsert_context, update_context, and delete_context tools to
complete CRUD functionality. Upserts use deterministic IDs based on
source+section+host for idempotency. Updates support metadata-only
patches or full re-embedding when text changes.