6ede33ccdb
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Has been cancelled
Build and Push Docker Images / finalize_release (push) Has been cancelled
Obsidian Plugin Lint / lint (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / compute_version (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / verify_digests (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Has been cancelled
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
"use client";
|
|
|
|
import { type AppendMessage, useExternalStoreRuntime } from "@assistant-ui/react";
|
|
import { useCallback, useMemo } from "react";
|
|
import type { GetPublicChatResponse, PublicChatMessage } from "@/contracts/types/public-chat.types";
|
|
import { convertToThreadMessage } from "@/lib/chat/message-utils";
|
|
import type { MessageRecord } from "@/lib/chat/thread-persistence";
|
|
|
|
interface UsePublicChatRuntimeOptions {
|
|
data: GetPublicChatResponse | undefined;
|
|
}
|
|
|
|
/**
|
|
* Map PublicChatMessage to MessageRecord shape for reuse of convertToThreadMessage
|
|
*/
|
|
function toMessageRecord(msg: PublicChatMessage, idx: number): MessageRecord {
|
|
return {
|
|
id: idx,
|
|
thread_id: 0,
|
|
role: msg.role as "user" | "assistant" | "system",
|
|
content: msg.content,
|
|
created_at: msg.created_at,
|
|
author_id: msg.author ? "public" : null,
|
|
author_display_name: msg.author?.display_name ?? null,
|
|
author_avatar_url: msg.author?.avatar_url ?? null,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Creates a read-only runtime for public chat viewing.
|
|
*/
|
|
export function usePublicChatRuntime({ data }: UsePublicChatRuntimeOptions) {
|
|
const messages = useMemo(() => data?.messages ?? [], [data?.messages]);
|
|
|
|
// No-op - public chat is read-only
|
|
const onNew = useCallback(async (_message: AppendMessage) => {}, []);
|
|
|
|
const convertMessage = useCallback(
|
|
(msg: PublicChatMessage, idx: number) => convertToThreadMessage(toMessageRecord(msg, idx)),
|
|
[]
|
|
);
|
|
|
|
const runtime = useExternalStoreRuntime({
|
|
isRunning: false,
|
|
messages,
|
|
onNew,
|
|
convertMessage,
|
|
});
|
|
|
|
return runtime;
|
|
}
|