Major changes:
- Replaced SentenceTransformer with Google Gemini embeddings (text-embedding-004, 768 dims)
- Implemented semantic chunking using cosine similarity between consecutive sentences
- Added provider-agnostic embedder abstraction layer
- Extracted Provider enum to shared utils/providers.py module
- Added permission-based filtering for RAG retrieval
RAG Manager improvements:
- Refactored all tools to return ToolResult instead of Dict[str, Any]
- Added @handle_tool_errors decorator for consistent error handling
- Re-enabled store_in_memory tool with workspace artifact integration
- Used file_handlers for document parsing during ingestion
Config & dependencies:
- Pinned Google ADK to 1.21.0 with compatible langchain versions
- Added langchain-google-genai for embedding support
- Added configurable embedding_model in ConfigManager
- Downgraded several dependencies for compatibility
Other fixes:
- Improved output formatting rules for file/folder listings (one item per line)
- Removed redundant metadata fields (Details/Notes) from social/catalogue ingestion
- Cleaned up dead code and imports across multiple files
Added central agent that manages "knowledge" in order to be more
modular. It combines both knowledge retrieved from the knowledge base
and general knowledge in a single, coherent answer.
- DocumentAnalyzer can now retrieve documents directly from the
workspace, breaking the layers but heavily simplifying the workflows
(and reducing easily-fixable errors)
- Gemini 3 has been set as PRO model (however, it's often overloaded...)
- First draft: question answering is done by integrating knowledge
retrieved from the knowledge base and general knowledge. Sentences are
labelled accordingly
- NOT USED (but potentially integrable): the main agent can be inserted
in a loop with an evaluation agent that analyzes the error (if any)
and suggests some solving strategies to attempt a retry
Parameters such as temperature, top-p and top-k are managed at
configuration level, giving the possibility to tune the behaviour of the
various agents in the system.
The path used by the Workspace Agent is now determined with a tool that
removes possible ambiguities by attempting resolution and falling back
to lower priority options.
For instance, if a given path seems relative, it resolves to the current
folder first and then, if nothing is found, it considers it as relative
to the root folder.
- Added an 'utils' class with directly-invocable LLMs to simplify
workflows
- Document analysis is now returned in a model to force a structure
- Other small refactors
In the refactor, DaveAgent's sub-agents have been changed into
AgentTool, so the control is never transferred to them and DaveAgent
acts as the only orchestrator in the system.