| from helpers.api import ApiHandler, Input, Output, Request, Response |
|
|
|
|
| from helpers import settings, projects, guids |
| from agent import AgentContext |
|
|
|
|
| class CreateChat(ApiHandler): |
| async def process(self, input: Input, request: Request) -> Output: |
| current_ctxid = input.get("current_context", "") |
| new_ctxid = input.get("new_context", guids.generate_id()) |
|
|
| |
| current_context = AgentContext.get(current_ctxid) |
|
|
| |
| new_context = self.use_context(new_ctxid) |
|
|
| |
| if current_context and settings.get_settings().get("chat_inherit_project", True): |
| current_data_1 = current_context.get_data(projects.CONTEXT_DATA_KEY_PROJECT) |
| if current_data_1: |
| new_context.set_data(projects.CONTEXT_DATA_KEY_PROJECT, current_data_1) |
| current_data_2 = current_context.get_output_data(projects.CONTEXT_DATA_KEY_PROJECT) |
| if current_data_2: |
| new_context.set_output_data(projects.CONTEXT_DATA_KEY_PROJECT, current_data_2) |
|
|
| |
| if current_context: |
| model_override = current_context.get_data("chat_model_override") |
| if model_override: |
| from plugins._model_config.helpers.model_config import is_chat_override_allowed |
| if is_chat_override_allowed(new_context.agent0): |
| new_context.set_data("chat_model_override", model_override) |
|
|
| |
| from helpers.state_monitor_integration import mark_dirty_all |
| mark_dirty_all(reason="api.chat_create.CreateChat") |
|
|
| return { |
| "ok": True, |
| "ctxid": new_context.id, |
| "message": "Context created.", |
| } |
|
|