comparison src/lib/claude/Ai_chat.luan @ 79:d4473741142c

chat UI
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 02 Sep 2025 16:33:45 -0600
parents 2be9ea450de3
children
comparison
equal deleted inserted replaced
78:2be9ea450de3 79:d4473741142c
40 for i, message in ipairs(messages) do 40 for i, message in ipairs(messages) do
41 if i <= n then 41 if i <= n then
42 continue 42 continue
43 end 43 end
44 local role = message.role or error() 44 local role = message.role or error()
45 local who
46 if role=="assistant" then
47 who = "Claude"
48 elseif role=="user" then
49 who = "You"
50 else
51 error(role)
52 end
53 local function output(text) 45 local function output(text)
54 text = html_encode(text) 46 text = html_encode(text)
47 if role=="user" then
55 %> 48 %>
56 <div role="<%=role%>" msg="<%=i%>"> 49 <div role="user" msg="<%=i%>">
57 <h3><%=who%></h3> 50 <div flex><div bubble>
58 <div message markdown><%=text%></div> 51 <div message markdown><%=text%></div>
59 <% if role=="assistant" then %> 52 </div></div>
60 <%= assistant_controls %> 53 </div>
61 <% end %>
62 </div>
63 <% 54 <%
55 elseif role=="assistant" then
56 %>
57 <div role="assistant" msg="<%=i%>">
58 <div flex><div bubble>
59 <div message markdown><%=text%></div>
60 <div trans=needed>Translating...</div>
61 </div></div>
62 <%= assistant_controls %>
63 </div>
64 <%
65 else error(role) end
64 end 66 end
65 local content = message.content or error() 67 local content = message.content or error()
66 if type(content) == "string" then 68 if type(content) == "string" then
67 output(content) 69 output(content)
68 else 70 else