Files
llama.cpp/tools/ui/src/lib/utils/index.ts
T

343 lines
9.1 KiB
TypeScript

/**
* Unified exports for all utility functions
* Import utilities from '$lib/utils' for cleaner imports
*
* For browser-only utilities (pdf-processing, audio-recording, svg-to-png,
* webp-to-png, process-uploaded-files, convert-files-to-extra), use:
* import { ... } from '$lib/utils/browser-only'
*/
// API utilities
export { getAuthHeaders, getJsonHeaders, sanitizeHeaders } from './api-headers';
export { ApiError, apiFetch, apiFetchWithParams, apiPost } from './api-fetch';
export { validateApiKey } from './api-key-validation';
// Attachment utilities
export { getAttachmentDisplayItems, isMcpPrompt, isMcpResource } from './attachment-display';
export { isTextFile, isImageFile, isPdfFile, isAudioFile, isVideoFile } from './attachment-type';
// Textarea utilities
export { default as autoResizeTextarea } from './autoresize-textarea';
// Branching utilities
export {
filterByLeafNodeId,
findMessageById,
findLeafNode,
findDescendantMessages,
getMessageSiblings,
buildSiblingInfoMap
} from './branching';
// Code
export {
highlightCode,
detectIncompleteCodeBlock,
splitGluedClosingCodeFences,
trimCodePadding,
type IncompleteCodeBlock
} from './code';
// Config helpers
export { setConfigValue, getConfigValue, configToParameterRecord } from './config-helpers';
// CORS Proxy
export { buildProxiedUrl, buildProxiedHeaders } from './cors-proxy';
// URL utilities
export { extractRootDomain, sanitizeExternalUrl, canonicalizeServerUrl } from './url';
// Progress helpers
export { modelLoadFraction, modelLoadProgressText } from './progress';
// Conversation utilities
export {
createMessageCountMap,
getMessageCount,
buildConversationTree,
type ConversationTreeItem
} from './conversation-utils';
// Clipboard utilities
export {
copyToClipboard,
copyCodeToClipboard,
formatMessageForClipboard,
parseClipboardContent,
hasClipboardAttachments
} from './clipboard';
// File preview utilities
export { getFileTypeLabel } from './file-preview';
export { getPreviewText, generateConversationTitle } from './text';
// File type utilities
export {
getFileTypeCategory,
getFileTypeCategoryByExtension,
getFileTypeByExtension,
isFileTypeSupported
} from './file-type';
// Formatting utilities
export {
formatFileSize,
formatParameters,
formatNumber,
formatJsonPretty,
formatTime,
formatPerformanceTime,
formatAttachmentText
} from './formatters';
// IME utilities
export { isIMEComposing } from './is-ime-composing';
// LaTeX utilities
export { maskInlineLaTeX, preprocessLaTeX } from './latex-protection';
// Modality file validation utilities
export {
isFileTypeSupportedByModel,
filterFilesByModalities,
generateModalityErrorMessage
} from './modality-file-validation';
// Model name utilities
export { normalizeModelName, isValidModelName } from './model-names';
// Portal utilities
export { portalToBody } from './portal-to-body';
// Precision utilities
export { normalizeFloatingPoint, normalizeNumber } from './precision';
// Syntax highlighting utilities
export { getLanguageFromFilename } from './syntax-highlight-language';
// Text file utilities
export { isTextFileByName, readFileAsText, isLikelyTextFile } from './text-files';
// Debounce utilities
export { debounce } from './debounce';
// Sanitization utilities
export { sanitizeKeyValuePairKey, sanitizeKeyValuePairValue } from './sanitize';
// Image error fallback utilities
export { getImageErrorFallbackHtml } from './image-error-fallback';
// SSE-with-JSON stream iterator (used by built-in tool streaming, decoupled
// from chat.service.ts which embeds its own SSE parser for resume support)
export { parseSseJsonStream } from './sse';
// Stream session identity (conversation-id based)
export { streamIdentity } from './stream-identity';
// MCP utilities
export {
detectMcpTransportFromUrl,
parseMcpServerSettings,
getMcpLogLevelIcon,
getMcpLogLevelClass,
isImageMimeType,
parseResourcePath,
getDisplayName,
getResourceDisplayName,
isCodeResource,
isImageResource,
getResourceIcon,
getResourceTextContent,
getResourceBlobContent,
downloadResourceContent
} from './mcp';
// URI Template utilities
export {
extractTemplateVariables,
expandTemplate,
isTemplateComplete,
normalizeResourceUri,
type UriTemplateVariable
} from './uri-template';
// Data URL utilities
export { createBase64DataUrl } from './data-url';
// Header utilities
export { parseHeadersToArray, serializeHeaders } from './headers';
// Working-directory display helpers (HOME-style tilde abbreviation)
export {
abbreviateWorkingDir,
abbreviateHome,
lastPathSegment,
formatCwdMessage,
parseCwdMessage,
CWD_CHANGED_PREFIX,
CWD_CLEARED_TEXT,
type CwdMessageInfo
} from './path-display';
// Working-directory picker search helpers
export {
splitPathQuery,
buildCaseInsensitiveGlob,
buildGlobSearchArgs,
rankEntries,
joinPath,
highlightMatch,
type PathQuery
} from './working-directory';
// Shared `file_glob_search` runner with a short-lived result cache
export { runGlobSearch, runGlobSearchWithChildren } from './glob-search';
// Mention-token detection (for the `@`-triggered file/folder mention picker)
export {
findMentionToken,
takeMentionDismissSnapshot,
type MentionDismissSnapshot
} from './mention-token';
// Slash-command token detection (for the `/`-triggered command picker)
export {
findCommandToken,
takeCommandDismissSnapshot,
type CommandDismissSnapshot
} from './command-token';
// Tokenization for the chat-form contenteditable (mention links + code spans <-> chip DOM)
export {
tokenizeContent,
containsCodeSpan,
isOffsetInCodeBlock,
domMatchesTokens,
syncCodeBlockHatches,
stripBlockBoundaryLineBreaks,
serializeContent,
buildFragment,
rangeToTextOffset,
textOffsetToRange,
badgeAwareWordJump,
leadingBadgeEdgeOffset
} from './chat-form-input-rich-tokenizer';
// Source-space undo/redo history for the chat-form contenteditable
export { SourceHistory, type SourceHistoryEntry } from './source-history';
// Mention-badge visual contract (used by the contenteditable / rehype
// DOM paths that build the same chip without a Svelte mount)
export {
containsFileMentionLink,
fileMentionLinkRe,
encodeFileLinkPath,
decodeFileLinkPath,
MENTION_BADGE_CLASSNAME,
MENTION_BADGE_ICON_CLASSNAME,
MENTION_BADGE_SVG_ATTRIBUTES,
MENTION_BADGE_FILE_ICON_PATHS,
MENTION_BADGE_FOLDER_ICON_PATHS,
getMentionBadgeIconPaths,
getMentionBadgeLabel,
splitMentionSegments,
buildMentionInsertion
} from './mention-badge';
// Chat template utilities
export {
detectThinkingSupport,
detectThinkingSupportWithReason
} from './chat-template-thinking-detector';
// Agentic content utilities (structured section derivation)
export {
deriveAgenticSections,
buildAssistantRawOutput,
parseToolResultWithMedia,
splitSearchSummaryList,
hasAgenticContent,
classifyToolResult,
classifyContinueIntent
} from './agentic';
// Line-level unified diff for tool result rendering (`edit_file` block)
export { computeLineDiff, prefixFor, renderUnifiedDiff, type DiffLine } from './compute-line-diff';
// Partial-incremental JSON parser for streaming tool arguments
export { parsePartialJsonArgs } from './parse-partial-json-args';
// `exec_shell_command` result parsing
export { parseExecShellCommandError } from './parse-exec-shell-error';
export {
parseExecShellCommandExitStatus,
isExitCodeSummaryLine,
type ExecShellExitStatus
} from './parse-exec-shell-status';
// Search-result parsing (web-search / fetch MCP tools)
export {
SUPPORTED_WEB_SEARCH_TOOL_NAMES,
extractSearchResults,
extractSearchQuery,
faviconForUrl,
isWebSearchToolName
} from './search-results';
// Cache utilities
export { TTLCache, ReactiveTTLMap } from './cache-ttl';
// Redaction utilities
export { redactValue } from './redact';
// Request inspection utilities
export {
getRequestUrl,
getRequestMethod,
getRequestBody,
summarizeRequestBody,
formatDiagnosticErrorMessage,
extractJsonRpcMethods,
type RequestBodySummary
} from './request-helpers';
// Abort signal utilities
export {
throwIfAborted,
isAbortError,
createLinkedController,
createTimeoutSignal,
withAbortSignal
} from './abort';
// Tool-call meta utilities. Parsers for each built-in tool live next to
// their renderer family under
// `src/lib/components/app/chat/ChatMessages/ChatMessage/ChatMessageToolCall/parsers/`.
// This module only carries the helpers that genuinely cross tool
// boundaries (currently: parsing the tool-result blob into a JSON
// object).
export { tryParseToolResultObject } from './tool-call-meta';
// Per-tool UI metadata (label + icon) used by the tool-call chrome.
// Re-exported through $lib/utils so renderer components can read the
// label without depending on $lib/constants directly.
export { getBuiltinToolUi } from './built-in-tools';
// Chat command picker
export { getChatCommands } from './chat-commands';
// Sandbox tool definition
// SANDBOX_TOOL_DEFINITION is deprecated; kept for backward compatibility.
export { buildSandboxToolDefinition, SANDBOX_TOOL_DEFINITION } from './sandbox-tool';
// Cryptography utilities
export { uuid } from './uuid';
// CSS utilities
export { remToPx } from './css';
// Audio format helper (used by agentic store and chat service)
export { getAudioInputFormat } from './audio-format';