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

49 lines
1.4 KiB
Elixir

defmodule BDS.Desktop.ShellLive.ChatSurface do
@moduledoc false
import Phoenix.Component, only: [assign: 3]
alias BDS.Desktop.ShellData
def assistant_turn(prompt, socket) do
[
%{role: "user", content: prompt},
%{role: "assistant", content: assistant_reply(socket)}
]
end
def assistant_project_name(nil), do: translated("Projects")
def assistant_project_name(project), do: project.name
def assistant_message_label("assistant"), do: translated("Assistant")
def assistant_message_label("user"), do: translated("You")
def assistant_message_label(_role), do: translated("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
ShellData.translate(
"Automatic AI actions stay gated by airplane mode.",
%{},
socket.assigns.page_language
)
else
ShellData.translate(
"The assistant sidebar chat surface is ready, but model execution is not connected yet.",
%{},
socket.assigns.page_language
)
end
end
defp translated(text), do: ShellData.translate(text, %{}, BDS.Desktop.UILocale.current())
end