rebuild_host: wipe-and-replace for full host re-profiles. Deletes
all chunks for a hostname then bulk-ingests fresh sections. Supports
confirm: false for dry-run preview.
update_section: surgical in-place update with fuzzy section matching
(case-insensitive substring, then vector similarity fallback).
Preserves metadata, replaces text, re-embeds. Returns existing
section list on no match.
Addresses duplicate chunk problem caused by inconsistent section
naming across profiling runs.
Add concrete parameter examples, negative routing guidance, and
format conventions to tool descriptions. Helps Gemini with literal
tool selection and GPT with over-calling prevention.
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.