Files
bDS2/lib/bds/desktop/shell_live/chat_surface.ex

39 lines
1.2 KiB
Elixir

defmodule BDS.Desktop.ShellLive.ChatSurface do
@moduledoc false
import Phoenix.Component, only: [assign: 3]
use Gettext, backend: BDS.Gettext
def assistant_turn(prompt, socket) do
[
%{role: "user", content: prompt},
%{role: "assistant", content: assistant_reply(socket)}
]
end
def assistant_project_name(nil), do: dgettext("ui", "Projects")
def assistant_project_name(project), do: project.name
def assistant_message_label("assistant"), do: dgettext("ui", "Assistant")
def assistant_message_label("user"), do: dgettext("ui", "You")
def assistant_message_label(_role), do: dgettext("ui", "Assistant")
def assistant_message_testid(role), do: "assistant-message-#{role}"
def update_shell_overlay(socket, updater) do
case socket.assigns[:shell_overlay] do
nil -> socket
overlay -> assign(socket, :shell_overlay, updater.(overlay))
end
end
defp assistant_reply(socket) do
if socket.assigns.offline_mode do
BDS.Gettext.lgettext(socket.assigns.page_language, "ui", "Automatic AI actions stay gated by airplane mode.")
else
BDS.Gettext.lgettext(socket.assigns.page_language, "ui", "The assistant sidebar chat surface is ready, but model execution is not connected yet.")
end
end
end