diff --git a/deno.lock b/deno.lock index 802da2d..b201f8c 100644 --- a/deno.lock +++ b/deno.lock @@ -49,6 +49,11 @@ "https://deno.land/std@0.224.0/streams/to_transform_stream.ts": "4c4836455ef89bab9ece55975ee3a819f07d3d8b0e43101ec7f4ed033c8a2b61", "https://deno.land/std@0.224.0/streams/writable_stream_from_writer.ts": "527fc1b136fc53a9f0b32641f04a4522c72617fa7ca3778d27ed064f9cd98932", "https://deno.land/std@0.224.0/streams/writer_from_stream_writer.ts": "22cba4e5162fc443c7e5ef62f2054674cd6a20f5d7519a62db8d201496463931", - "https://deno.land/std@0.224.0/streams/zip_readable_streams.ts": "53eb10d7557539b489bd858907aab6dd28247f074b3446573801de3150cb932e" + "https://deno.land/std@0.224.0/streams/zip_readable_streams.ts": "53eb10d7557539b489bd858907aab6dd28247f074b3446573801de3150cb932e", + "https://deno.land/x/crayon@3.3.3/mod.ts": "82ad225583a483c4837577971629cddaa22614093af8353da6426b9366de9780", + "https://deno.land/x/crayon@3.3.3/src/conversions.ts": "9bfd3b1fbe412bcba092890ac558b6beaad4c3aa399cd99d45fadb324d28afd6", + "https://deno.land/x/crayon@3.3.3/src/crayon.ts": "6b237baa08a31c903436e040afd2228a7fffaa5d11dddc58e3c402f79b3c1d04", + "https://deno.land/x/crayon@3.3.3/src/styles.ts": "aa588b57b2c0482dc5c6f53109b4287831a9827c0aeef9a88129beae1172c1ee", + "https://deno.land/x/crayon@3.3.3/src/util.ts": "af8884a917488de76ac0c2b92482093ade74514ece77a4c64e5eb5b0f6ed68e6" } } diff --git a/src/lib/session.ts b/src/lib/session.ts index eff7fd7..5ae234f 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -1,15 +1,16 @@ import { TextLineStream } from "https://deno.land/std@0.224.0/streams/mod.ts" import { writeAll } from "https://deno.land/std@0.224.0/io/write_all.ts" import ollama, { Message } from "npm:ollama@0.5.15" +import { crayon } from "https://deno.land/x/crayon@3.3.3/mod.ts" import { History } from "./history.ts" const header = (name: string) => ` - KUB + ${crayon.yellow("KUB")} Kub is a LLM running on TCP which includes all messages in the same context. -As Kub is having several discussions at once, he will know you as : ${name} -─────────────────────────────────────────────────────────────────────────────── +As Kub is having several discussions at once, he will know you as ${crayon.blue.bold(name)} +──────────────────────────────────────────────────────────────────────────────── ` @@ -17,7 +18,7 @@ export async function session(conn: Deno.TcpConn, name: string, history: History console.log("Opening session for", name, "at", conn.remoteAddr.hostname, conn.remoteAddr.port) conn.setNoDelay(true) await write_encoded(conn, header(name)) - await write_encoded(conn, "> ") + await prompt(conn, name) const lines = conn.readable .pipeThrough(new TextDecoderStream()) .pipeThrough(new TextLineStream()) @@ -28,10 +29,10 @@ export async function session(conn: Deno.TcpConn, name: string, history: History if (line.startsWith("/nick ")) { name = line.slice("/nick ".length) console.log("Changed name of", conn.remoteAddr.hostname, "to", name) - await write_encoded(conn, "\n> ") + await prompt(conn, name) continue } - await write_encoded(conn, "\n[kub]\n") + await write_encoded(conn, `\n ${crayon.yellow("kub")}\n\n`) const user_message = make_message(name, line) const response_parts = await get_response_parts(history, user_message) let content = "", role = "assistant" @@ -40,12 +41,17 @@ export async function session(conn: Deno.TcpConn, name: string, history: History content += part.message.content role = part.message.role } - await write_encoded(conn, "\n\n> ") + await write_encoded(conn, "\n\n") + await prompt(conn, name) await history.push(user_message) await history.push({ role, content }) } } +async function prompt(connection: Deno.TcpConn, name: string) { + await write_encoded(connection, ` ${crayon.blue.bold(name)}\n\n> `) +} + async function write_encoded(connection: Deno.TcpConn, text: string) { const encoded = new TextEncoder().encode(text) await writeAll(connection, encoded)