- Implemented entity card extraction from tool results in the chat API.
- Added new EntityCard interface to define the structure of entity cards.
- Enhanced chat panel to display navigable entity cards for projects, deliverables, and users.
- Introduced status color helper for better visual representation of entity statuses.
- Updated chat message structure to include extracted entities.
- Improved chat formatting guidelines to avoid markdown tables and utilize bullet points.
- Added Tailwind Typography plugin for improved text styling in the application.
Ollama can't use tools so it was never useful as a chat fallback — it
just caused confusing "both providers unavailable" errors. The chat
now uses Claude exclusively with clear error messages on failure.
- Remove chatWithOllama(), checkOllamaHealth()
- Simplify chat() to call Claude directly
- Remove Ollama UI indicators and "Limited mode" warning
- Clean up provider types (remove "ollama" union member)
Note: Ollama is still used for embedding generation (nomic-embed-text)
via the embedding service — only the LLM chat fallback is removed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace word-level text matching with pgvector cosine similarity search
for projects and deliverables. The search query is embedded via Ollama's
nomic-embed-text model and compared against stored 768-dim vectors, so
natural language queries like "manx beetroot mauve" match "[BPS] ManxR2 -
Beetroot Mauve" through semantic proximity.
- Primary: pgvector cosine similarity (projects + deliverables)
- Fallback: word-level text search when Ollama is unavailable
- Users: text search only (no embedding column on users table)
- Results filtered by relevance score > 0.3, sorted by similarity
- Stage details fetched for top deliverable matches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add SSE streaming to chat API so users see real-time tool call progress
instead of waiting for the full response
- Enrich system prompt with full data model, pipeline stages, enums, and
domain knowledge so Claude makes fewer errors
- Implement word-level fuzzy search in search_entities — splits queries into
individual terms and scores results by match count, so "manx beetroot mauve"
finds "[BPS] ManxR2 - Beetroot Mauve"
- Add clickable entity suggestion chips when search returns multiple candidates,
eliminating the need to retype exact names
- Move page context from fake conversation turns into the system prompt param
- Preserve structured content blocks (tool_use/tool_result) in client-side
message history for proper multi-turn context
- Remove dryRun confirmation pattern — mutations execute directly
- Increase Claude API timeout from 30s to 60s and max tool iterations from 5 to 10
- Show Ollama fallback warning ("Limited mode — no tool access") in UI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add event bus for dispatching automation events with handlers.
- Create rule engine to evaluate events against defined triggers.
- Introduce chat provider to interface with Claude API and Ollama fallback.
- Define tool schemas for Claude-compatible operations.
- Implement tool executor to map tool calls to service layer functions.
- Develop automation service for CRUD operations on rules and event handling.