Download apps/vscode/webview-ui/src/lib/content.ts from SaylorTwift/kimi-code: direct link, hf CLI and curl.
- Browser
- Download file 1.92 kB
-
https://huggingface.co/SaylorTwift/kimi-code/resolve/main/apps/vscode/webview-ui/src/lib/content.ts
- Command line
-
hf download hf://SaylorTwift/kimi-code/apps/vscode/webview-ui/src/lib/content.ts
-
curl -L -o content.ts https://huggingface.co/SaylorTwift/kimi-code/resolve/main/apps/vscode/webview-ui/src/lib/content.ts
1.92 kB
| import type { ContentPart } from "shared/legacy-sdk"; | |
| import { cleanSystemTags } from "shared/utils"; | |
| import { getMediaTypeFromDataUri } from "./media-utils"; | |
| export const Content = { | |
| getText(input: string | ContentPart[]): string { | |
| if (typeof input === "string") { | |
| return cleanSystemTags(input); | |
| } | |
| const texts = input.filter((p): p is ContentPart & { type: "text" } => p.type === "text").map((p) => p.text); | |
| return cleanSystemTags(texts.join("\n")); | |
| }, | |
| getImages(input: string | ContentPart[]): string[] { | |
| if (typeof input === "string") { | |
| return []; | |
| } | |
| return input.filter((p): p is ContentPart & { type: "image_url" } => p.type === "image_url").map((p) => p.image_url.url); | |
| }, | |
| getVideos(input: string | ContentPart[]): string[] { | |
| if (typeof input === "string") { | |
| return []; | |
| } | |
| return input.filter((p): p is ContentPart & { type: "video_url" } => p.type === "video_url").map((p) => p.video_url.url); | |
| }, | |
| hasImages(input: string | ContentPart[]): boolean { | |
| return Content.getImages(input).length > 0; | |
| }, | |
| hasVideos(input: string | ContentPart[]): boolean { | |
| return Content.getVideos(input).length > 0; | |
| }, | |
| hasMedia(input: string | ContentPart[]): boolean { | |
| return Content.hasImages(input) || Content.hasVideos(input); | |
| }, | |
| build(text: string, mediaUrls: string[]): ContentPart[] { | |
| const parts: ContentPart[] = []; | |
| if (text.trim()) { | |
| parts.push({ type: "text", text }); | |
| } | |
| for (const url of mediaUrls) { | |
| const mediaType = getMediaTypeFromDataUri(url); | |
| if (mediaType === "video") { | |
| parts.push({ type: "video_url", video_url: { url } }); | |
| } else { | |
| parts.push({ type: "image_url", image_url: { url } }); | |
| } | |
| } | |
| return parts; | |
| }, | |
| isEmpty(input: string | ContentPart[]): boolean { | |
| return !Content.getText(input).trim() && !Content.hasMedia(input); | |
| }, | |
| }; | |