Mercurial Hosting > lang
changeset 7:255c36830154
chat tools
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 18 Jul 2025 17:42:45 -0600 |
parents | 025bb19b65b1 |
children | 2b7dcf355a78 |
files | src/chat.html.luan src/lib/ai/chatgpt/Chat.luan src/lib/ai/claude/Chat.luan src/private/tools/chat.html.luan src/private/tools/chat_form.html src/private/tools/index.html.luan src/private/tools/tools.html |
diffstat | 7 files changed, 90 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/src/chat.html.luan Thu Jul 17 23:19:22 2025 -0600 +++ b/src/chat.html.luan Fri Jul 18 17:42:45 2025 -0600 @@ -57,10 +57,8 @@ </div> </span> </div> - <div scroll> - <div messages> -<% chat.output_messages_html() %> - </div> + <div messages> +<% chat.output_messages_html() %> </div> <div ask> <textarea autofocus oninput="fixTextarea(event)" onkeydown="textareaKey(event)"></textarea>
--- a/src/lib/ai/chatgpt/Chat.luan Thu Jul 17 23:19:22 2025 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -local Luan = require "luan:Luan.luan" -local error = Luan.error - - -local Chat = {} - -function Chat.output_messages_html(thread) -end - -function Chat.ask(thread,input) - return nil -end - -return Chat
--- a/src/lib/ai/claude/Chat.luan Thu Jul 17 23:19:22 2025 -0600 +++ b/src/lib/ai/claude/Chat.luan Fri Jul 18 17:42:45 2025 -0600 @@ -31,12 +31,10 @@ error(role) end local function output(text) - if not starts_with( text, "[INTERNAL_UPDATE]" ) then %> - <h3><%=who%></h3> - <div role="<%=role%>"><%=html_encode(text)%></div> + <h3><%=who%></h3> + <div role="<%=role%>"><%=html_encode(text)%></div> <% - end end local content = message.content or error() if type(content) == "string" then
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/chat.html.luan Fri Jul 18 17:42:45 2025 -0600 @@ -0,0 +1,52 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local Io = require "luan:Io.luan" +local Http = require "luan:http/Http.luan" +local Shared = require "site:/lib/Shared.luan" +local head = Shared.head or error() +local header = Shared.header or error() +local started = Shared.started or error() +local Chat = require "site:/lib/Chat.luan" +local get_chat_by_id = Chat.get_by_id or error() + + +return function() + local chat_id = Http.request.parameters.chat or error() + local process_markdown = Http.request.parameters.markdown ~= nil + local chat = get_chat_by_id(chat_id) or error() + Io.stdout = Http.response.text_writer() +%> +<!doctype html> +<html lang="en"> + <head> +<% head() %> + <style> + @import "/chat.css?s=<%=started%>"; + +<% if not process_markdown then %> + [ai_container] [role] { + white-space-collapse: preserve; + } +<% end %> + </style> + <script src="https://cdn.jsdelivr.net/npm/markdown-it@14.1.0/dist/markdown-it.min.js"></script> + <script src="/chat.js?s=<%=started%>"></script> + </head> + <body ai_container> +<% header() %> + <div content> + <h1>Chat <%=chat_id%></h1> + <h3 name><%= chat.name_html() %></h3> + <div messages> +<% chat.output_messages_html() %> + </div> + </div> +<% if process_markdown then %> + <script> + handleMarkdown(); + </script> +<% end %> + </body> +</html> +<% +end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/chat_form.html Fri Jul 18 17:42:45 2025 -0600 @@ -0,0 +1,17 @@ +<!doctype html> +<html lang="en"> + <head> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + @import "/site.css"; + </style> + </head> + <body> + <form content action="chat.html"> + <h1>Chat</h1> + <p>Chat ID: <input name=chat autofocus></p> + <p><label clickable><input type=checkbox name=markdown checked> Render markdown</label></p> + <p><input type=submit></p> + </form> + </body> +</html>
--- a/src/private/tools/index.html.luan Thu Jul 17 23:19:22 2025 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -local Luan = require "luan:Luan.luan" -local error = Luan.error -local Io = require "luan:Io.luan" -local Http = require "luan:http/Http.luan" -local Shared = require "site:/lib/Shared.luan" -local head = Shared.head or error() - - -return function() - Io.stdout = Http.response.text_writer() -%> -<!doctype html> -<html lang="en"> - <head> -<% head() %> - </head> - <body> - <div content> - <h1>Private Tools</h1> - <p><a href="lucene.html">lucene</a></p> - </div> - </body> -</html> -<% -end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/tools.html Fri Jul 18 17:42:45 2025 -0600 @@ -0,0 +1,17 @@ +<!doctype html> +<html lang="en"> + <head> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + @import "/site.css"; + </style> + </head> + <body> + <div content> + <h1>Private Tools</h1> + <p><a href="/">home</a></p> + <p><a href="chat_form.html">chat</a></p> + <p><a href="lucene.html">lucene</a></p> + </div> + </body> +</html>