Introduce the project concept for conversations:
- Add nested project serializer for search results (`?title=` returns
project id, title, icon)
- Inject project-level custom LLM instructions into the AI agent systemprompt
- Document `title` and `project` query parameters in OpenAPI schema
- Fix ChatProjectFactory deprecation warning
- Add db compound indexes on ChatConversation for and ChatProject to speed
up sidebar queries
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
- Add search modal and modify left panel layout
- Fix result list flashing by keeping previous data during refetch
- Defer loader display to avoid search icon flickering on fast responses
- Add Cmd+K / Ctrl+K shortcut to toggle search modal
- Auto-focus search input on modal open
- Require minimum 3 characters before triggering search
- Only mount modal when authenticated and open
- Extract shared getRelativeTime utility
- Remove unused controlled selection state in QuickSearch
Co-Authored-By: Eléonore Voisin <elevoisin@gmail.com
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
Added user preference to disable automatic tool calls to internet.
Preference is stored in user model, can be changed via frontend setting and
prevents the tool from showing up unless
'Search on the web' is explicitly enabled
Signed-off-by: eliott07 <eliott07@gmail.com>
🐛(settings) fix smart web search default and improve settings layout
Updated default value of smart search, adjusted settings modal layout & spacing
Some identity providers might change the case, but in our
products we don't consider case variation to be consider as
different email addresses.
Next step would be to normalize the DB value of email to
be lower-case.
Extract large _run_agent method into smaller focused methods
Add comprehensive module and method documentation
Minor fixes
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
The liveness and readiness are reversed. The liveness was using the
heartbeat process that is cheking all django checks and the database
connection.
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
Split streaming content into independent memoized blocks to avoid
re-rendering all markdown/katex/syntax-highlighting on each update.
Add some tests for split functions and components.
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
Replace rehype-pretty-code with direct Shiki integration
Migrate syntax highlighting from rehype-pretty-code to @shikijs/rehype for
better bundle optimization. Create a centralized Shiki highlighter that
pre-loads only required languages.
Also remove unused dependencies: @ag-media/react-pdf-table,
@react-pdf/renderer, react-select.
Signed-off-by: Laurent Paoletti <lp@providenz.fr>
Find requires access and refresh tokens, but the current
beahavior using Albert API does not. We need to be able to
still use the completion endpoint without any stored
token.
Some architectures do not expose their S3, in such cases
it is only available through the backend.
This commit proposes two implementations to manage this:
- frontend can now upload files to the backend (no direct access
to S3)
- two new modes to send file to the LLM: a temporary URL on the
backend, or directly the file in b64.