mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-05-23 08:25:57 +00:00
feat(frontend): support static website demo mode
This commit is contained in:
@@ -3,6 +3,13 @@
|
||||
import { Client as LangGraphClient } from "@langchain/langgraph-sdk/client";
|
||||
|
||||
import { getLangGraphBaseURL } from "../config";
|
||||
import { isStaticWebsiteOnly } from "../static-mode";
|
||||
import {
|
||||
loadStaticDemoThread,
|
||||
loadStaticDemoThreads,
|
||||
staticDemoThreadState,
|
||||
} from "../threads/static-demo";
|
||||
import type { AgentThreadState } from "../threads/types";
|
||||
|
||||
import { isStateChangingMethod, readCsrfCookie } from "./fetcher";
|
||||
import { sanitizeRunStreamOptions } from "./stream-mode";
|
||||
@@ -32,6 +39,10 @@ function injectCsrfHeader(_url: URL, init: RequestInit): RequestInit {
|
||||
}
|
||||
|
||||
function createCompatibleClient(isMock?: boolean): LangGraphClient {
|
||||
if (isStaticWebsiteOnly() && !isMock) {
|
||||
return createStaticClient();
|
||||
}
|
||||
|
||||
const apiUrl = getLangGraphBaseURL(isMock);
|
||||
console.log(`Creating API client with base URL: ${apiUrl}`);
|
||||
const client = new LangGraphClient({
|
||||
@@ -58,6 +69,41 @@ function createCompatibleClient(isMock?: boolean): LangGraphClient {
|
||||
return client;
|
||||
}
|
||||
|
||||
function createStaticClient(): LangGraphClient {
|
||||
const apiUrl =
|
||||
typeof window === "undefined"
|
||||
? "http://localhost:3000"
|
||||
: window.location.origin;
|
||||
const client = new LangGraphClient({ apiUrl });
|
||||
|
||||
client.threads.search = (async (query) => {
|
||||
return loadStaticDemoThreads(query);
|
||||
}) as typeof client.threads.search;
|
||||
|
||||
client.threads.get = (async (threadId) => {
|
||||
return loadStaticDemoThread(threadId);
|
||||
}) as typeof client.threads.get;
|
||||
|
||||
client.threads.getState = (async (threadId) => {
|
||||
return staticDemoThreadState(await loadStaticDemoThread(threadId));
|
||||
}) as typeof client.threads.getState;
|
||||
|
||||
client.threads.getHistory = (async (threadId) => {
|
||||
return [staticDemoThreadState(await loadStaticDemoThread(threadId))];
|
||||
}) as typeof client.threads.getHistory;
|
||||
|
||||
client.threads.update = (async (threadId) => {
|
||||
return loadStaticDemoThread(threadId);
|
||||
}) as typeof client.threads.update;
|
||||
|
||||
client.runs.list = (async () => []) as typeof client.runs.list;
|
||||
client.runs.stream = async function* () {} as typeof client.runs.stream;
|
||||
client.runs.joinStream =
|
||||
async function* () {} as typeof client.runs.joinStream;
|
||||
|
||||
return client as LangGraphClient<AgentThreadState>;
|
||||
}
|
||||
|
||||
const _clients = new Map<string, LangGraphClient>();
|
||||
export function getAPIClient(isMock?: boolean): LangGraphClient {
|
||||
const cacheKey = isMock ? "mock" : "default";
|
||||
|
||||
Reference in New Issue
Block a user