40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import { getBackendBaseURL } from "../config";
|
|
import type { AgentThread } from "../threads";
|
|
|
|
export function urlOfArtifact({
|
|
filepath,
|
|
threadId,
|
|
download = false,
|
|
isMock = false,
|
|
publicShareCode,
|
|
}: {
|
|
filepath: string;
|
|
threadId: string;
|
|
download?: boolean;
|
|
isMock?: boolean;
|
|
publicShareCode?: string;
|
|
}) {
|
|
// A public read-only share has no auth-gated thread route — its referenced
|
|
// files are served by the unauthenticated public-share endpoint instead.
|
|
if (publicShareCode) {
|
|
const normalized = filepath.startsWith("/") ? filepath : `/${filepath}`;
|
|
return `${getBackendBaseURL()}/api/public/shares/${encodeURIComponent(
|
|
publicShareCode,
|
|
)}/files${normalized}`;
|
|
}
|
|
const normalized = filepath.startsWith("/") ? filepath : `/${filepath}`;
|
|
if (isMock) {
|
|
return `${getBackendBaseURL()}/mock/api/threads/${threadId}/artifacts${normalized}${download ? "?download=true" : ""}`;
|
|
}
|
|
return `${getBackendBaseURL()}/api/threads/${threadId}/artifacts${normalized}${download ? "?download=true" : ""}`;
|
|
}
|
|
|
|
export function extractArtifactsFromThread(thread: AgentThread) {
|
|
return thread.values.artifacts ?? [];
|
|
}
|
|
|
|
export function resolveArtifactURL(absolutePath: string, threadId: string) {
|
|
const normalized = absolutePath.startsWith("/") ? absolutePath : `/${absolutePath}`;
|
|
return `${getBackendBaseURL()}/api/threads/${threadId}/artifacts${normalized}`;
|
|
}
|