Introduce a modern AI Chatbot frontend library
<!-- Please search existing work items before filing to avoid duplicates. -->
## Description
The current AI Chatbot module is tightly coupled to the DeepChat library. DeepChat does more than render the UI - it also handles the API communication, chat state, and message history. Functionality such as tool calling, conversation history, and thread management is implemented in a DeepChat-specific way, making it difficult to swap in alternative chat interfaces.
[assistant-ui](https://www.assistant-ui.com/) was identified as a promising alternative - a React-based component library that supports custom API endpoints and offers significantly easier customization than DeepChat. This would be built as a separate contrib module, keeping it out of AI Core.
This is also a priority for anonymous-focused chatbot use cases, since the existing Core solution is more targeted to Admin users
## Tasks
* [ ] Evaluate assistant-ui as a DeepChat replacement, specifically its [custom runtime](https://www.assistant-ui.com/docs/runtimes/custom/overview) for connecting to a Drupal-side API endpoint
* [ ] Audit what DeepChat-specific logic exists in the current chatbot (tool calling, history, thread IDs) and define an abstraction boundary
* [ ] Create a new contrib module
* [ ] Check the chat consumer / API endpoint that assistant-ui can talk to
* [ ] Port or re-implement thread ID handling, conversation history, and tool call support against the new interface
* [ ] Provide a basic working demo
## Acceptance criteria
* A new contrib module exists that renders a functional chat UI powered by assistant-ui.
* The module connects to Drupal's AI stack via a custom API endpoint — no direct provider keys required in the frontend.
* Thread IDs and conversation history are preserved across messages within a session.
* Tool calling works equivalently to the current DeepChat implementation.
* The module has no hard dependency on the DeepChat module.
* Anonymous chatbot use cases are supported (i.e. the chat works without a logged-in user, subject to configuration).
issue