39 lines
1.2 KiB
Elixir
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
|