SYMBOL INDEX (2029 symbols across 418 files) FILE: .erb/configs/webpack.config.renderer.dev.dll.ts constant EXCLUDE_MODULES (line 15) | const EXCLUDE_MODULES = new Set([ FILE: .erb/configs/webpack.config.renderer.dev.ts constant DEV_WEB_ONLY (line 28) | const DEV_WEB_ONLY = process.env.DEV_WEB_ONLY === 'true' method setupMiddlewares (line 204) | setupMiddlewares(middlewares) { FILE: .erb/scripts/check-native-dep.cjs function findNodeFiles (line 17) | function findNodeFiles(dir) { function getAllPackages (line 39) | function getAllPackages(nodeModulesDir) { FILE: .erb/scripts/check-native-dep.js function findNodeFiles (line 8) | function findNodeFiles(dir) { function getAllPackages (line 30) | function getAllPackages(nodeModulesDir) { FILE: .erb/scripts/check-node-env.js function checkNodeEnv (line 3) | function checkNodeEnv(expectedEnv) { FILE: .erb/scripts/delete-source-maps.js function deleteSourceMaps (line 6) | function deleteSourceMaps() { FILE: .erb/scripts/patch-libsql.cjs function patchLibsqlFile (line 36) | function patchLibsqlFile(filePath) { function getCandidateLibsqlDirs (line 73) | function getCandidateLibsqlDirs(context) { FILE: assets/assets.d.ts type Styles (line 1) | type Styles = Record FILE: electron.vite.config.ts function injectBaseTag (line 13) | function injectBaseTag(): Plugin { function dvhToVh (line 32) | function dvhToVh(): Plugin { method manualChunks (line 202) | manualChunks(id) { FILE: script/translate.mjs function translateMessage (line 6) | async function translateMessage(message, target, keysToTrans, instructio... function translateFile (line 28) | async function translateFile(locale, instruction) { FILE: src/main/adapters/index.ts function createModelDependencies (line 9) | async function createModelDependencies(): Promise { FILE: src/main/adapters/sentry.ts function initSentry (line 6) | function initSentry() { class MainSentryAdapter (line 49) | class MainSentryAdapter implements SentryAdapter { method captureException (line 50) | captureException(error: any): void { method withScope (line 54) | withScope(callback: (scope: SentryScope) => void): void { FILE: src/main/analystic-node.ts function event (line 14) | async function event(name: string, params: any = {}) { FILE: src/main/app-updater.ts class AppUpdater (line 7) | class AppUpdater { method constructor (line 8) | constructor(onUpdateDownloaded: () => void) { method tryUpdate (line 33) | async tryUpdate() { FILE: src/main/autoLauncher.ts function get (line 7) | function get() { function sync (line 14) | async function sync() { function ensure (line 28) | async function ensure(enable: boolean) { FILE: src/main/cache.ts type CacheItem (line 1) | interface CacheItem { function cache (line 9) | async function cache( FILE: src/main/deeplinks.ts function handleDeepLink (line 4) | function handleDeepLink(mainWindow: BrowserWindow, link: string) { FILE: src/main/file-parser.ts function decodeHtmlEntities (line 11) | function decodeHtmlEntities(text: string): string { function concurrentMap (line 42) | async function concurrentMap( function parseFile (line 69) | async function parseFile(filePath: string) { function parseEpub (line 113) | async function parseEpub(filePath: string): Promise { FILE: src/main/knowledge-base/db.ts function initDB (line 28) | async function initDB(db: Client) { function initializeDatabase (line 114) | async function initializeDatabase() { function getDatabase (line 138) | function getDatabase(): Client { function getVectorStore (line 152) | function getVectorStore(): LibSQLVector { function parseSQLiteTimestamp (line 167) | function parseSQLiteTimestamp(sqliteTimestamp: string): number { function withTransaction (line 193) | async function withTransaction(operation: () => Promise): Promise<... function cleanupProcessingFiles (line 233) | async function cleanupProcessingFiles() { function checkProcessingTimeouts (line 255) | async function checkProcessingTimeouts() { FILE: src/main/knowledge-base/file-loaders.ts function parseErrorMessage (line 20) | function parseErrorMessage(errorMessage: string): string { function parseFileToDocumentWithRouter (line 51) | async function parseFileToDocumentWithRouter( function processFileWithMastra (line 69) | async function processFileWithMastra( function processPendingFiles (line 263) | async function processPendingFiles() { function startWorkerLoop (line 358) | async function startWorkerLoop() { function searchKnowledgeBase (line 380) | async function searchKnowledgeBase(kbId: number, query: string) { function readChunks (line 444) | async function readChunks(kbId: number, chunks: { fileId: number; chunkI... FILE: src/main/knowledge-base/index.ts function initializeKnowledgeBase (line 11) | async function initializeKnowledgeBase() { function getInitPromise (line 47) | function getInitPromise() { FILE: src/main/knowledge-base/ipc-handlers.ts function registerKnowledgeBaseHandlers (line 16) | function registerKnowledgeBaseHandlers() { FILE: src/main/knowledge-base/model-providers.ts function getMergedSettings (line 15) | function getMergedSettings(providerId: string, modelId: string) { function getEmbeddingProvider (line 53) | async function getEmbeddingProvider(kbId: number) { function getVisionProvider (line 128) | async function getVisionProvider(kbId: number) { function getRerankProvider (line 185) | async function getRerankProvider(kbId: number) { FILE: src/main/knowledge-base/parsers/chatbox-parser.ts class ChatboxParser (line 10) | class ChatboxParser implements DocumentParser { method parse (line 13) | async parse(filePath: string, meta: ParserFileMeta): Promise { FILE: src/main/knowledge-base/parsers/index.ts function createParser (line 19) | function createParser(config: DocumentParserConfig, kbId?: number): Docu... function getEffectiveParserConfig (line 40) | function getEffectiveParserConfig( function parseFileWithRouter (line 63) | async function parseFileWithRouter( function getParserDisplayName (line 87) | function getParserDisplayName(type: DocumentParserType): string { FILE: src/main/knowledge-base/parsers/local-parser.ts class LocalParser (line 19) | class LocalParser implements DocumentParser { method constructor (line 22) | constructor(private kbId?: number) {} method parse (line 24) | async parse(filePath: string, meta: ParserFileMeta): Promise { method parseImage (line 53) | private async parseImage(filePath: string, meta: ParserFileMeta): Prom... FILE: src/main/knowledge-base/parsers/mineru-parser.ts constant MINERU_API_BASE (line 19) | const MINERU_API_BASE = 'https://mineru.net/api/v4' constant POLL_INTERVAL_MS (line 20) | const POLL_INTERVAL_MS = 10000 // 10 seconds constant MAX_POLL_ATTEMPTS (line 21) | const MAX_POLL_ATTEMPTS = 30 // 5 minutes total timeout constant MAX_FILE_SIZE (line 22) | const MAX_FILE_SIZE = 200 * 1024 * 1024 // 200MB function mapErrorCode (line 27) | function mapErrorCode(code: string | number): MineruErrorCode { function sleep (line 47) | function sleep(ms: number, signal?: AbortSignal): Promise { class MineruParser (line 78) | class MineruParser implements DocumentParser { method constructor (line 81) | constructor(private apiToken: string) {} method parse (line 83) | async parse(filePath: string, meta: ParserFileMeta, signal?: AbortSign... method getBatchUploadUrl (line 133) | private async getBatchUploadUrl(filename: string, dataId: string): Pro... method uploadFile (line 163) | private async uploadFile(filePath: string, uploadUrl: string): Promise... method pollBatchResult (line 180) | private async pollBatchResult(batchId: string, dataId: string, signal?... method downloadAndExtract (line 233) | private async downloadAndExtract(zipUrl: string): Promise { method findMarkdownFiles (line 272) | private async findMarkdownFiles(dir: string): Promise { function testMineruConnection (line 294) | async function testMineruConnection(apiToken: string): Promise<{ success... FILE: src/main/knowledge-base/parsers/types.ts type ParserFileMeta (line 6) | interface ParserFileMeta { type DocumentParser (line 15) | interface DocumentParser { type ParserResult (line 30) | interface ParserResult { type MineruErrorCode (line 38) | type MineruErrorCode = class MineruError (line 51) | class MineruError extends Error { method constructor (line 52) | constructor( type MineruBatchUploadResponse (line 64) | interface MineruBatchUploadResponse { type MineruExtractResult (line 73) | interface MineruExtractResult { type MineruBatchResultResponse (line 86) | interface MineruBatchResultResponse { FILE: src/main/knowledge-base/remote-file-parser.ts constant MAX_FILE_SIZE (line 12) | const MAX_FILE_SIZE = 50 * 1024 * 1024 function getPlatformInfo (line 15) | function getPlatformInfo() { function getAfetch (line 25) | function getAfetch() { function getChatboxHeaders (line 30) | function getChatboxHeaders() { function getLicenseKey (line 43) | function getLicenseKey(): string | undefined { function generateUploadUrl (line 50) | async function generateUploadUrl(licenseKey: string, filename: string): ... function uploadFileFromPath (line 80) | async function uploadFileFromPath(filePath: string, uploadUrl: string, m... function createAndParseFile (line 100) | async function createAndParseFile( function parseFileRemotely (line 144) | async function parseFileRemotely(filePath: string, filename: string, mim... FILE: src/main/locales.ts class Locale (line 3) | class Locale { method constructor (line 6) | constructor() { method isCN (line 14) | isCN(): boolean { method t (line 18) | t(key: TranslationKey): string { type TranslationKey (line 23) | type TranslationKey = keyof typeof translations FILE: src/main/main.ts constant RESOURCES_PATH (line 52) | const RESOURCES_PATH = app.isPackaged constant PROTOCOL_SCHEME (line 61) | const PROTOCOL_SCHEME = process.defaultApp ? 'chatbox-dev' : 'chatbox' function normalizeShortcut (line 85) | function normalizeShortcut(shortcut: string) { function isValidShortcut (line 110) | function isValidShortcut(shortcut: string): boolean { function registerShortcuts (line 134) | function registerShortcuts(shortcutSetting?: ShortcutSetting) { function unregisterShortcuts (line 151) | function unregisterShortcuts() { function createTray (line 157) | function createTray() { function ensureTray (line 188) | function ensureTray() { function destroyTray (line 201) | function destroyTray() { function createWindow (line 242) | async function createWindow() { function showOrHideWindow (line 355) | async function showOrHideWindow() { FILE: src/main/mcp/ipc-stdio-transport.ts function enhanceEnv (line 13) | async function enhanceEnv(configEnv?: Record) { function getTransport (line 28) | function getTransport(transportId: string) { function closeAllTransports (line 101) | function closeAllTransports() { FILE: src/main/mcp/shell-env.cjs function checkPathExt (line 48) | function checkPathExt(path, options) { function checkStat (line 65) | function checkStat(stat, path, options) { function isexe (line 71) | function isexe(path, options, cb) { function sync (line 76) | function sync(path, options) { function isexe (line 86) | function isexe(path, options, cb) { function sync (line 91) | function sync(path, options) { function checkStat (line 94) | function checkStat(stat, options) { function checkMode (line 97) | function checkMode(stat, options) { function isexe (line 123) | function isexe(path, options, cb) { function sync (line 152) | function sync(path, options) { function resolveCommandAttempt (line 275) | function resolveCommandAttempt(parsed, withoutPathExt) { function resolveCommand (line 301) | function resolveCommand(parsed) { function escapeCommand (line 310) | function escapeCommand(arg) { function escapeArgument (line 314) | function escapeArgument(arg, doubleEscapeMetaChars) { function readShebang (line 355) | function readShebang(command) { function detectShebang (line 378) | function detectShebang(parsed) { function parseNonShell (line 388) | function parseNonShell(parsed) { function parse (line 406) | function parse(command, args, options) { function notFoundError (line 431) | function notFoundError(original, syscall) { function hookChildProcess (line 440) | function hookChildProcess(cp, parsed) { function verifyENOENT (line 455) | function verifyENOENT(status, parsed) { function verifyENOENTSync (line 461) | function verifyENOENTSync(status, parsed) { function spawn (line 480) | function spawn(command, args, options) { function spawnSync (line 486) | function spawnSync(command, args, options) { class MaxBufferError (line 1418) | class MaxBufferError extends Error { method constructor (line 1419) | constructor() { function getStream (line 1424) | async function getStream(inputStream, options) { function add (line 1475) | function add(source) { function isEmpty (line 1486) | function isEmpty() { function remove (line 1489) | function remove(source) { function ansiRegex (line 1885) | function ansiRegex({ onlyFirst = false } = {}) { function stripAnsi (line 1896) | function stripAnsi(string) { function shellEnv (line 1943) | async function shellEnv(shell) { function shellEnvSync (line 1958) | function shellEnvSync(shell) { FILE: src/main/menu.ts type DarwinMenuItemConstructorOptions (line 4) | interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOp... class MenuBuilder (line 9) | class MenuBuilder { method constructor (line 12) | constructor(mainWindow: BrowserWindow) { method buildMenu (line 16) | buildMenu(): Menu { method buildDarwinTemplate (line 57) | buildDarwinTemplate(): MenuItemConstructorOptions[] { method buildDefaultTemplate (line 231) | buildDefaultTemplate() { FILE: src/main/proxy.ts function init (line 4) | function init() { function ensure (line 11) | function ensure(proxy?: string) { FILE: src/main/store-node.ts type StoreType (line 33) | interface StoreType { function autoBackup (line 54) | async function autoBackup() { function getSettings (line 68) | function getSettings(): Settings { function getConfig (line 73) | function getConfig(): Config { function backup (line 85) | async function backup() { function getBackups (line 110) | function getBackups() { function needBackup (line 134) | function needBackup() { function clearBackups (line 146) | async function clearBackups() { function checkConfigValid (line 212) | function checkConfigValid(filepath: string) { function getStoreBlob (line 221) | async function getStoreBlob(key: string) { function setStoreBlob (line 230) | async function setStoreBlob(key: string, value: string) { function delStoreBlob (line 236) | async function delStoreBlob(key: string) { function listStoreBlobKeys (line 245) | async function listStoreBlobKeys() { FILE: src/main/util.ts function resolveHtmlPath (line 5) | function resolveHtmlPath(htmlFileName: string) { function sliceTextWithEllipsis (line 12) | function sliceTextWithEllipsis(text: string, maxLength: number) { function getLogger (line 28) | function getLogger(logId: string) { FILE: src/main/window_state.ts type IWindowState (line 7) | interface IWindowState { type WindowMode (line 16) | enum WindowMode { function defaultWindowState (line 27) | function defaultWindowState(mode = WindowMode.Normal): IWindowState { function getState (line 37) | function getState(): [IWindowState, boolean? /* has multiple displays */] { function saveState (line 42) | function saveState(win: Electron.BrowserWindow): void { function restoreWindowState (line 68) | function restoreWindowState(state?: IWindowState): [IWindowState, boolea... function validateWindowState (line 84) | function validateWindowState(state: IWindowState, displays: Display[]): ... function getWorkingArea (line 216) | function getWorkingArea(display: Display): Rectangle | undefined { function setCache (line 233) | function setCache(state: IWindowState) { function getCache (line 237) | function getCache(): IWindowState { FILE: src/renderer/Sidebar.tsx function Sidebar (line 32) | function Sidebar() { FILE: src/renderer/adapters/index.ts function createModelDependencies (line 11) | async function createModelDependencies(): Promise { FILE: src/renderer/adapters/sentry.ts class RendererSentryAdapter (line 7) | class RendererSentryAdapter implements SentryAdapter { method captureException (line 8) | captureException(error: any): void { method withScope (line 12) | withScope(callback: (scope: SentryScope) => void): void { FILE: src/renderer/components/ActionMenu.tsx type ActionMenuItemProps (line 10) | type ActionMenuItemProps = type ActionMenuProps (line 30) | type ActionMenuProps = { FILE: src/renderer/components/AdaptiveSelect.tsx type AdaptiveSelectProps (line 7) | interface AdaptiveSelectProps extends Omit = { function getAvailableImageModels (line 44) | function getAvailableImageModels(provider: ProviderInfo, imageModelIds: ... type ImageModelSelectProps (line 61) | type ImageModelSelectProps = PropsWithChildren< FILE: src/renderer/components/ImageStyleSelect.tsx type Props (line 5) | interface Props { function ImageStyleSelect (line 11) | function ImageStyleSelect(props: Props) { FILE: src/renderer/components/InputBox/Attachments.tsx function getTranslatedErrorMessage (line 11) | function getTranslatedErrorMessage(errorCode: string | undefined, t: (ke... function ImageMiniCard (line 23) | function ImageMiniCard(props: { storageKey: string; onDelete: () => void... function FileMiniCard (line 47) | function FileMiniCard(props: { function formatFileSize (line 106) | function formatFileSize(bytes: number | undefined): string { function getFileTypeLabel (line 113) | function getFileTypeLabel(filename: string, fileType?: string): string { function MessageAttachment (line 120) | function MessageAttachment(props: { function LinkMiniCard (line 185) | function LinkMiniCard(props: { FILE: src/renderer/components/InputBox/ImageUploadButton.tsx type ImageUploadButtonProps (line 6) | interface ImageUploadButtonProps { FILE: src/renderer/components/InputBox/ImageUploadInput.tsx type ImageUploadInputProps (line 4) | interface ImageUploadInputProps { FILE: src/renderer/components/InputBox/InputBox.tsx type InputBoxPayload (line 110) | type InputBoxPayload = { type InputBoxRef (line 116) | type InputBoxRef = { type InputBoxProps (line 120) | type InputBoxProps = { FILE: src/renderer/components/InputBox/SessionSettingsButton.tsx type SessionSettingsButtonProps (line 7) | interface SessionSettingsButtonProps { FILE: src/renderer/components/InputBox/TokenCountMenu.tsx type Props (line 9) | type Props = { FILE: src/renderer/components/InputBox/WebBrowsingButton.tsx type WebBrowsingButtonProps (line 7) | interface WebBrowsingButtonProps { FILE: src/renderer/components/InputBox/preprocessState.ts function markLinkProcessing (line 7) | function markLinkProcessing(prev: PreConstructedMessageState, url: strin... function storeLinkPromise (line 21) | function storeLinkPromise( function onLinkProcessed (line 38) | function onLinkProcessed( function cleanupLink (line 67) | function cleanupLink(prev: PreConstructedMessageState, url: string): Pre... function markFileProcessing (line 91) | function markFileProcessing(prev: PreConstructedMessageState, file: File... function storeFilePromise (line 105) | function storeFilePromise( function onFileProcessed (line 122) | function onFileProcessed( function cleanupFile (line 151) | function cleanupFile(prev: PreConstructedMessageState, file: File): PreC... FILE: src/renderer/components/Markdown.tsx constant CODE_BLOCK_COLLAPSE_LINE_THRESHOLD (line 68) | const CODE_BLOCK_COLLAPSE_LINE_THRESHOLD = 7 function remarkAddCodeIndex (line 70) | function remarkAddCodeIndex() { function Markdown (line 82) | function Markdown(props: { type BlockCodeCollapsedStateContextType (line 212) | interface BlockCodeCollapsedStateContextType { type BlockCodeCollapsedStateProviderProps (line 224) | interface BlockCodeCollapsedStateProviderProps { type BlockCodeProps (line 299) | type BlockCodeProps = { FILE: src/renderer/components/Mermaid.tsx function MessageMermaid (line 15) | function MessageMermaid(props: { source: string; theme: 'light' | 'dark'... function Loading (line 43) | function Loading() { function MermaidSVGPreviewDangerous (line 57) | function MermaidSVGPreviewDangerous(props: { function SVGPreview (line 103) | function SVGPreview(props: { xmlCode: string; className?: string; genera... function mermaidCodeToSvgCode (line 188) | async function mermaidCodeToSvgCode(source: string, theme: 'light' | 'da... FILE: src/renderer/components/ModelList.tsx type ModelListProps (line 20) | interface ModelListProps { function ModelList (line 32) | function ModelList({ FILE: src/renderer/components/ModelSelector/DesktopModelSelector.tsx type FilteredProvider (line 26) | type FilteredProvider = { type DesktopModelSelectorProps (line 33) | interface DesktopModelSelectorProps { FILE: src/renderer/components/ModelSelector/MobileModelSelector.tsx type FilteredProvider (line 16) | type FilteredProvider = { type MobileModelSelectorProps (line 23) | interface MobileModelSelectorProps { FILE: src/renderer/components/ModelSelector/ProviderHeader.tsx type ProviderHeaderProps (line 8) | interface ProviderHeaderProps { FILE: src/renderer/components/ModelSelector/SimplePreview.tsx function SimplePreview (line 12) | function SimplePreview() { FILE: src/renderer/components/ModelSelector/index.tsx type ModelSelectorProps (line 13) | type ModelSelectorProps = PropsWithChildren< FILE: src/renderer/components/ModelSelector/shared.tsx constant SELECTED_BG_CLASS (line 10) | const SELECTED_BG_CLASS = '!bg-chatbox-background-brand-secondary' constant TRANSITION_DURATION (line 11) | const TRANSITION_DURATION = 200 type FavoriteModel (line 14) | type FavoriteModel = { provider?: { id: string; name: string; isCustom?:... FILE: src/renderer/components/Shortcut.tsx function formatKey (line 16) | function formatKey(key: string) { function Keys (line 69) | function Keys(props: { type ShortcutDataItem (line 91) | type ShortcutDataItem = { function ShortcutConfig (line 98) | function ShortcutConfig(props: { function ShortcutText (line 238) | function ShortcutText(props: { shortcut: string; isConflict?: boolean; c... function ShortcutSelect (line 252) | function ShortcutSelect({ FILE: src/renderer/components/SponsorChip.tsx function SponsorChip (line 10) | function SponsorChip(props: {}) { FILE: src/renderer/components/chat/CompactionStatus.tsx constant MAX_CHARS (line 19) | const MAX_CHARS = 200 constant MAX_LINES (line 20) | const MAX_LINES = 3 function shouldTruncate (line 22) | function shouldTruncate(text: string): boolean { function getTruncatedText (line 28) | function getTruncatedText(text: string): string { type CompactionStatusProps (line 39) | interface CompactionStatusProps { FILE: src/renderer/components/chat/Message.tsx type Props (line 55) | interface Props { function getBase64ImageSize (line 595) | function getBase64ImageSize(base64: string): Promise<{ width: number; he... type PictureGalleryProps (line 608) | type PictureGalleryProps = { FILE: src/renderer/components/chat/MessageAttachmentGrid.tsx constant COLLAPSED_MAX (line 7) | const COLLAPSED_MAX = 4 type MessageAttachmentGridProps (line 9) | interface MessageAttachmentGridProps { function MessageAttachmentGrid (line 14) | function MessageAttachmentGrid({ files, links }: MessageAttachmentGridPr... FILE: src/renderer/components/chat/MessageErrTips.tsx constant MAX_CHARS (line 18) | const MAX_CHARS = 200 constant MAX_LINES (line 19) | const MAX_LINES = 3 function shouldTruncate (line 21) | function shouldTruncate(text: string): boolean { function getTruncatedText (line 27) | function getTruncatedText(text: string): string { function isContextLengthError (line 41) | function isContextLengthError(errorText: string | null | undefined): boo... function MessageErrTips (line 55) | function MessageErrTips(props: { msg: Message }) { FILE: src/renderer/components/chat/MessageList.tsx constant MAX_SCROLL_CACHE_SIZE (line 59) | const MAX_SCROLL_CACHE_SIZE = 100 function setScrollPosition (line 62) | function setScrollPosition(sessionId: string, snapshot: StateSnapshot) { function clearScrollPositionCache (line 77) | function clearScrollPositionCache(sessionId: string) { type MessageListRef (line 81) | interface MessageListRef { type MessageListProps (line 86) | interface MessageListProps { function ForkNav (line 399) | function ForkNav(props: { sessionId: string; msgId: string; forks: NonNu... type ThreadLabelProps (line 461) | type ThreadLabelProps = { FILE: src/renderer/components/chat/MessageLoading.tsx function MessageStatuses (line 9) | function MessageStatuses(props: { statuses: Message['status'] }) { function MessageStatus (line 23) | function MessageStatus(props: { status: NonNullable[n... function RetryingIndicator (line 89) | function RetryingIndicator(props: { attempt: number; maxAttempts: number... function LoadingBubble (line 100) | function LoadingBubble(props: { children: React.ReactNode }) { FILE: src/renderer/components/chat/MessageNavigation.tsx type MessageNavigationProps (line 6) | type MessageNavigationProps = { FILE: src/renderer/components/chat/SummaryMessage.tsx type SummaryMessageProps (line 14) | interface SummaryMessageProps { FILE: src/renderer/components/common/AdaptiveModal.tsx type AdaptiveModalProps (line 9) | interface AdaptiveModalProps extends Omit & { FILE: src/renderer/components/common/SegmentedControl.tsx function SegmentedControl (line 3) | function SegmentedControl({ FILE: src/renderer/components/common/SliderWithInput.tsx type Props (line 6) | type Props = { function SliderWithInput (line 16) | function SliderWithInput({ value, onChange, min = 0, max = 1, step = 0.0... FILE: src/renderer/components/common/TemperatureSlider.tsx type Props (line 5) | interface Props { function TemperatureSlider (line 11) | function TemperatureSlider(props: Props) { FILE: src/renderer/components/common/TextFieldReset.tsx function TextFieldReset (line 5) | function TextFieldReset( FILE: src/renderer/components/common/Toasts.tsx function Toasts (line 7) | function Toasts() { FILE: src/renderer/components/common/TopPSlider.tsx type Props (line 5) | interface Props { function TopPSlider (line 11) | function TopPSlider(props: Props) { FILE: src/renderer/components/dev/DevHeader.tsx type DevHeaderProps (line 7) | interface DevHeaderProps { function DevHeader (line 11) | function DevHeader({ title }: DevHeaderProps) { FILE: src/renderer/components/icons/ArrowRightIcon.tsx function ArrowRightIcon (line 3) | function ArrowRightIcon(props: { className?: string; onClick?: MouseEven... FILE: src/renderer/components/icons/BrandGithub.tsx function BrandGithub (line 3) | function BrandGithub(props: React.SVGProps) { FILE: src/renderer/components/icons/BrandRedNote.tsx function BrandRedNote (line 3) | function BrandRedNote(props: { className?: string; onClick?: MouseEventH... FILE: src/renderer/components/icons/BrandWechat.tsx function BrandWechat (line 3) | function BrandWechat(props: { className?: string; onClick?: MouseEventHa... FILE: src/renderer/components/icons/BrandX.tsx function BrandX (line 3) | function BrandX(props: { className?: string; onClick?: MouseEventHandler... FILE: src/renderer/components/icons/Broom.tsx function Broom (line 3) | function Broom(props: IconProps) { FILE: src/renderer/components/icons/Dart.tsx function Dart (line 3) | function Dart(props: IconProps) { FILE: src/renderer/components/icons/FullscreenIcon.tsx function FullscreenIcon (line 3) | function FullscreenIcon(props: { className?: string; onClick?: MouseEven... FILE: src/renderer/components/icons/HomepageIcon.tsx function HomepageIcon (line 4) | function HomepageIcon(props: React.SVGProps) { FILE: src/renderer/components/icons/Java.tsx function Java (line 3) | function Java(props: IconProps) { FILE: src/renderer/components/icons/LayoutExpand.tsx function LayoutExpand (line 3) | function LayoutExpand(props: IconProps) { FILE: src/renderer/components/icons/LayoutShrink.tsx function LayoutShrink (line 3) | function LayoutShrink(props: IconProps) { FILE: src/renderer/components/icons/Loading.tsx function Loading (line 3) | function Loading(props: React.SVGProps) { FILE: src/renderer/components/icons/ModelIcon.tsx type ModelIconProps (line 6) | interface ModelIconProps { function ModelIcon (line 22) | function ModelIcon({ modelId, providerId, size = 16, className }: ModelI... FILE: src/renderer/components/icons/ProviderIcon.tsx function ProviderIcon (line 3) | function ProviderIcon(props: { className?: string; size?: number; provid... FILE: src/renderer/components/icons/ProviderImageIcon.tsx function ProviderImageIcon (line 22) | function ProviderImageIcon(props: { FILE: src/renderer/components/icons/Robot.tsx function Robot (line 3) | function Robot(props: IconProps) { FILE: src/renderer/components/knowledge-base/ChunksPreviewModal.tsx type FileChunk (line 8) | interface FileChunk { type ChunksPreviewModalProps (line 15) | interface ChunksPreviewModalProps { type ChunkCardProps (line 111) | interface ChunkCardProps { FILE: src/renderer/components/knowledge-base/KnowledgeBase.tsx type ModelPillProps (line 31) | interface ModelPillProps { function formatModelName (line 215) | function formatModelName(model: string) { function formatParserType (line 224) | function formatParserType(parserType?: DocumentParserType): string { FILE: src/renderer/components/knowledge-base/KnowledgeBaseDocuments.tsx type KnowledgeBaseDocumentsProps (line 49) | interface KnowledgeBaseDocumentsProps { FILE: src/renderer/components/knowledge-base/KnowledgeBaseForm.tsx type ModelSelectorsProps (line 11) | interface ModelSelectorsProps { type KnowledgeBaseChatboxAIInfoProps (line 80) | interface KnowledgeBaseChatboxAIInfoProps { type KnowledgeBaseProviderModeSelectProps (line 110) | interface KnowledgeBaseProviderModeSelectProps { type KnowledgeBaseFormActionsProps (line 137) | interface KnowledgeBaseFormActionsProps { type KnowledgeBaseNameInputProps (line 186) | interface KnowledgeBaseNameInputProps { constant PARSER_OPTIONS (line 215) | const PARSER_OPTIONS: { value: DocumentParserType; label: string; descri... type DocumentParserSelectorProps (line 235) | interface DocumentParserSelectorProps { type DocumentParserDisplayProps (line 374) | interface DocumentParserDisplayProps { FILE: src/renderer/components/knowledge-base/KnowledgeBaseMenu.tsx type Props (line 10) | type Props = { FILE: src/renderer/components/knowledge-base/RemoteRetryModal.tsx function parseErrorMessage (line 16) | function parseErrorMessage(errorMessage: string): string { type RemoteRetryModalProps (line 44) | interface RemoteRetryModalProps { function RemoteRetryModal (line 51) | function RemoteRetryModal({ opened, onClose, failedFiles, onSuccess }: R... FILE: src/renderer/components/layout/ExitFullscreenButton.tsx function ExitFullscreenButton (line 9) | function ExitFullscreenButton() { FILE: src/renderer/components/layout/Header.tsx function Header (line 18) | function Header(props: { session: Session }) { FILE: src/renderer/components/layout/Overlay.tsx function withOverlayManager (line 28) | function withOverlayManager

= { type DocumentParserSettingsProps (line 30) | interface DocumentParserSettingsProps { function DocumentParserSettings (line 34) | function DocumentParserSettings({ showTitle = true }: DocumentParserSett... FILE: src/renderer/components/settings/mcp/ConfigModal.tsx type ConnectionTestingResult (line 25) | interface ConnectionTestingResult { type Props (line 201) | interface Props { FILE: src/renderer/components/settings/mcp/CustomServersSection.tsx type Props (line 50) | type Props = { FILE: src/renderer/components/settings/mcp/registries.ts function getIcon (line 19) | function getIcon(filename: string): string { type MCPRegistryEntry (line 23) | interface MCPRegistryEntry { constant MCP_ENTRIES_OFFICIAL (line 36) | const MCP_ENTRIES_OFFICIAL: MCPRegistryEntry[] = [ constant MCP_ENTRIES_COMMUNITY (line 433) | const MCP_ENTRIES_COMMUNITY: MCPRegistryEntry[] = [ FILE: src/renderer/components/settings/mcp/utils.ts type MCPServerConfigFormValues (line 28) | type MCPServerConfigFormValues = MCPServerConfig< function getConfigFromFormValues (line 41) | function getConfigFromFormValues(values: MCPServerConfigFormValues): MCP... function getFormValuesFromConfig (line 66) | function getFormValuesFromConfig(config: MCPServerConfig): MCPServerConf... function parseServerFromJson (line 107) | function parseServerFromJson(text: string): MCPServerConfig | undefined { function parseServersFromJson (line 118) | function parseServersFromJson(text: string): MCPServerConfig[] { FILE: src/renderer/components/settings/provider/AddProviderModal.tsx type AddProviderModalProps (line 11) | interface AddProviderModalProps { function AddProviderModal (line 16) | function AddProviderModal({ opened, onClose }: AddProviderModalProps) { FILE: src/renderer/components/settings/provider/ImportProviderModal.tsx type ImportProviderModalProps (line 14) | interface ImportProviderModalProps { function ImportProviderModal (line 40) | function ImportProviderModal({ opened, onClose, importedConfig, existing... FILE: src/renderer/components/settings/provider/ProviderList.tsx type ProviderListProps (line 31) | interface ProviderListProps { function ProviderList (line 38) | function ProviderList({ providers, onAddProvider, onImportProvider, isIm... FILE: src/renderer/components/ui/command.tsx type CommandDialogProps (line 24) | interface CommandDialogProps extends DialogProps {} FILE: src/renderer/dev/devToolsConfig.ts constant FORCE_ENABLE_DEV_PAGES (line 3) | const FORCE_ENABLE_DEV_PAGES = process.env.NODE_ENV === 'development' FILE: src/renderer/hooks/dom.ts function getInputBoxHeight (line 7) | function getInputBoxHeight(): number { function setMessageInputCursorToEnd (line 24) | function setMessageInputCursorToEnd() { FILE: src/renderer/hooks/mcp.ts function useMCPServerStatus (line 9) | function useMCPServerStatus(id: string) { function useToggleMCPServer (line 17) | function useToggleMCPServer() { FILE: src/renderer/hooks/useAppTheme.ts function useAppTheme (line 25) | function useAppTheme() { function getThemeDesign (line 60) | function getThemeDesign(realTheme: 'light' | 'dark', fontSize: number, l... FILE: src/renderer/hooks/useCopilots.ts function useMyCopilots (line 11) | function useMyCopilots() { function useRemoteCopilots (line 46) | function useRemoteCopilots() { FILE: src/renderer/hooks/useDefaultSystemLanguage.ts function useSystemLanguageWhenInit (line 5) | function useSystemLanguageWhenInit() { FILE: src/renderer/hooks/useI18nEffect.ts function useI18nEffect (line 5) | function useI18nEffect() { FILE: src/renderer/hooks/useInputBoxHistory.ts constant MAX_HISTORY_LENGTH (line 6) | const MAX_HISTORY_LENGTH = 20 FILE: src/renderer/hooks/useKnowledgeBase.ts function useKnowledgeBase (line 7) | function useKnowledgeBase({ isNewSession }: { isNewSession: boolean }) { FILE: src/renderer/hooks/useMessageInput.ts constant DEFAULT_OPTIONS (line 6) | const DEFAULT_OPTIONS = { saveDraft: true, timeout: 300, isNewSession: f... type Options (line 7) | type Options = typeof DEFAULT_OPTIONS function useMessageInput (line 8) | function useMessageInput(initialMessage = '', _options: Partial... FILE: src/renderer/hooks/useProviderImport.ts function useProviderImport (line 6) | function useProviderImport(providers: ProviderInfo[]) { FILE: src/renderer/hooks/useScreenChange.ts function useScreenChange (line 6) | function useScreenChange() { function useIsSmallScreen (line 14) | function useIsSmallScreen() { function useScreenDownToMD (line 20) | function useScreenDownToMD() { function useIsLargeScreen (line 25) | function useIsLargeScreen() { function useSidebarWidth (line 30) | function useSidebarWidth() { function useInputBoxHeight (line 61) | function useInputBoxHeight(): { min: number; max: number } { FILE: src/renderer/hooks/useShortcut.tsx function useShortcut (line 13) | function useShortcut() { FILE: src/renderer/hooks/useThinkingTimer.ts function useThinkingTimer (line 10) | function useThinkingTimer(startTime: number | undefined, isActive: boole... function formatElapsedTime (line 42) | function formatElapsedTime(milliseconds: number): string { FILE: src/renderer/hooks/useVersion.ts function getInitialTime (line 10) | function getInitialTime() { function isFirstDay (line 20) | function isFirstDay(): boolean { function useVersion (line 31) | function useVersion() { FILE: src/renderer/i18n/for-key-scan.ts function _errorI18nKeys (line 11) | function _errorI18nKeys(t: (key: string) => string) { FILE: src/renderer/i18n/index.ts function changelog (line 81) | function changelog() { FILE: src/renderer/i18n/parser.ts function parseLocale (line 4) | function parseLocale(locale: string): Language { FILE: src/renderer/index.tsx function initializeApp (line 57) | async function initializeApp() { function InitPage (line 78) | function InitPage() { FILE: src/renderer/lib/format-chat.tsx type ToolCallSummary (line 10) | type ToolCallSummary = { function collectToolCallSummaries (line 18) | function collectToolCallSummaries(message: Message): Map { function runCompactionWithUIState (line 124) | async function runCompactionWithUIState( function runCompactionWithStreaming (line 152) | async function runCompactionWithStreaming(sessionId: string): Promise { function httpPost (line 31) | async function httpPost( function fetchBaseUrl (line 44) | async function fetchBaseUrl(): Promise { function getEdgeOneBaseUrl (line 57) | function getEdgeOneBaseUrl(force = false): Promise { function deployHtmlToEdgeOne (line 64) | async function deployHtmlToEdgeOne(value: string): Promise { FILE: src/renderer/packages/event.ts function trackingEvent (line 4) | function trackingEvent(name: string, params: { [key: string]: string } =... FILE: src/renderer/packages/filetype.ts function isTextFile (line 4) | function isTextFile(file: File) { function isPdf (line 17) | function isPdf(file: File) { function isWord (line 21) | function isWord(file: File) { function isPPT (line 28) | function isPPT(file: File) { function isExcel (line 35) | function isExcel(file: File) { FILE: src/renderer/packages/latex.ts function processLaTeX (line 9) | function processLaTeX(content: string): string { function escapeBrackets (line 40) | function escapeBrackets(text: string): string { function escapeMhchem (line 62) | function escapeMhchem(text: string) { FILE: src/renderer/packages/lemonsqueezy.ts type ActivateResponse (line 4) | type ActivateResponse = function activateLicense (line 26) | async function activateLicense( function deactivateLicense (line 63) | async function deactivateLicense(key: string, instanceId: string) { type ValidateLicenseKeyResponse (line 74) | type ValidateLicenseKeyResponse = { function validateLicense (line 78) | async function validateLicense(key: string, instanceId: string): Promise... FILE: src/renderer/packages/local-parser.ts function parseTextFile (line 5) | async function parseTextFile(file: File, options: { maxLength?: number }... function parseUrl (line 15) | async function parseUrl(url: string) { FILE: src/renderer/packages/mcp/builtin.ts type BuildinMCPServerConfig (line 5) | interface BuildinMCPServerConfig { constant BUILTIN_MCP_SERVERS (line 12) | const BUILTIN_MCP_SERVERS: BuildinMCPServerConfig[] = [ function getBuiltinServerConfig (line 49) | function getBuiltinServerConfig(id: string, licenseKey?: string): MCPSer... FILE: src/renderer/packages/mcp/controller.ts type TransportConfig (line 9) | type TransportConfig = MCPServerConfig['transport'] type MCPClient (line 10) | type MCPClient = Awaited> function createClient (line 12) | async function createClient(transportConfig: TransportConfig, name = 'ch... class MCPServer (line 64) | class MCPServer extends Emittery<{ status: MCPServerStatus }> { method constructor (line 69) | constructor(private readonly transportConfig: TransportConfig) { method status (line 73) | get status() { method status (line 77) | set status(status: MCPServerStatus) { method start (line 82) | async start() { method stop (line 98) | async stop() { method getAvailableTools (line 108) | getAvailableTools(): ToolSet { method bootstrap (line 121) | bootstrap(serverConfigs: MCPServerConfig[]) { method startServer (line 129) | async startServer(serverConfig: MCPServerConfig) { method stopServer (line 147) | async stopServer(id: string) { method updateServer (line 154) | async updateServer(serverConfig: MCPServerConfig) { method getServer (line 172) | getServer(id: string): MCPServer | undefined { method subscribeToServerStatus (line 177) | subscribeToServerStatus(id: string, callback: (status: MCPServerStatus) ... method getAvailableTools (line 197) | getAvailableTools(): ToolSet { constant SERVER_NAME_REGEX (line 220) | const SERVER_NAME_REGEX = /^[A-Za-z0-9_-]+$/ function normalizeToolName (line 222) | function normalizeToolName(serverName: string, toolName: string) { FILE: src/renderer/packages/mcp/ipc-stdio-transport.ts class IPCStdioTransport (line 7) | class IPCStdioTransport implements Transport { method create (line 8) | static async create(serverParams: StdioServerParameters) { method constructor (line 17) | constructor(private readonly ipcTransportId: string) { method start (line 36) | async start(): Promise { method send (line 40) | async send(message: JSONRPCMessage): Promise { method close (line 44) | async close(): Promise { FILE: src/renderer/packages/model-calls/generate-image.ts function generateImage (line 6) | async function generateImage( FILE: src/renderer/packages/model-calls/index.ts function generateText (line 8) | async function generateText(model: ModelInterface, messages: Message[]) { FILE: src/renderer/packages/model-calls/message-utils.ts function convertContentParts (line 9) | async function convertContentParts(result: { function searchByPromptEngineering (line 41) | async function searchByPromptEngineering(model: ModelInterface, messages... function knowledgeBaseSearchByPromptEngineering (line 69) | async function knowledgeBaseSearchByPromptEngineering( function combinedSearchByPromptEngineering (line 102) | async function combinedSearchByPromptEngineering( function constructMessagesWithSearchResults (line 142) | function constructMessagesWithSearchResults( function constructMessagesWithKnowledgeBaseResults (line 179) | function constructMessagesWithKnowledgeBaseResults( FILE: src/renderer/packages/model-calls/toolsets/file.ts constant DEFAULT_LINES (line 6) | const DEFAULT_LINES = 200 constant MAX_LINES (line 7) | const MAX_LINES = MAX_INLINE_FILE_LINES constant MAX_LINE_LENGTH (line 8) | const MAX_LINE_LENGTH = 2000 constant GREP_MAX_RESULTS (line 27) | const GREP_MAX_RESULTS = 100 FILE: src/renderer/packages/model-calls/toolsets/knowledge-base.ts function getFilesMetaTool (line 25) | function getFilesMetaTool(knowledgeBaseId: number) { function readFileChunksTool (line 41) | function readFileChunksTool(knowledgeBaseId: number) { function listFilesTool (line 64) | function listFilesTool(knowledgeBaseId: number) { function getToolSetDescription (line 84) | async function getToolSetDescription(knowledgeBaseId: number, knowledgeB... function getToolSet (line 113) | async function getToolSet(knowledgeBaseId: number, knowledgeBaseName: st... FILE: src/renderer/packages/model-calls/toolsets/web-search.ts constant DEFAULT_PARSE_LINK_MAX_CHARS (line 30) | const DEFAULT_PARSE_LINK_MAX_CHARS = 12_000 FILE: src/renderer/packages/model-context/builtin-data.ts constant BUILTIN_MODEL_CONTEXT (line 17) | const BUILTIN_MODEL_CONTEXT: Record = { FILE: src/renderer/packages/model-context/index.ts constant CACHE_KEY (line 3) | const CACHE_KEY = 'model-context-cache' constant CACHE_EXPIRY_MS (line 4) | const CACHE_EXPIRY_MS = 7 * 24 * 60 * 60 * 1000 constant API_URL (line 5) | const API_URL = 'https://models.dev/api.json' constant DEFAULT_CONTEXT_WINDOW (line 6) | const DEFAULT_CONTEXT_WINDOW = 96_000 type CacheEntry (line 8) | interface CacheEntry { type ModelsDevResponse (line 13) | interface ModelsDevResponse { function getCache (line 28) | function getCache(): CacheEntry | null { function setCache (line 38) | function setCache(data: Record): void { function isCacheValid (line 50) | function isCacheValid(entry: CacheEntry): boolean { function parseModelsDevResponse (line 54) | function parseModelsDevResponse(response: ModelsDevResponse): Record> { function getModelContextData (line 82) | function getModelContextData(): Promise> { function findExactMatch (line 112) | function findExactMatch(modelId: string, data: Record): ... function findPrefixMatch (line 122) | function findPrefixMatch(modelId: string, data: Record):... function getModelContextWindow (line 138) | async function getModelContextWindow(modelId: string): Promise { method getMergeOptionGroups (line 37) | public async getMergeOptionGroups(providerSettings: ProviderSettings): P... method mergeOptionGroups (line 67) | protected mergeOptionGroups(localOptionGroups: ProviderModelInfo[], remo... method enrichModelsWithInfo (line 95) | private async enrichModelsWithInfo(models: ProviderModelInfo[]): Promise... FILE: src/renderer/packages/model-setting-utils/custom-provider-setting-util.ts class CustomProviderSettingUtil (line 21) | class CustomProviderSettingUtil extends BaseConfig implements ModelSetti... method constructor (line 25) | constructor(provider: ModelProvider, customProviderType?: ModelProvide... method getCurrentModelDisplayName (line 31) | async getCurrentModelDisplayName( method getDefaultProviderName (line 42) | private getDefaultProviderName(): string { method getDefaultModelId (line 56) | private getDefaultModelId(): string { method listProviderModels (line 69) | protected async listProviderModels(settings: ProviderSettings): Promis... FILE: src/renderer/packages/model-setting-utils/index.ts function getModelSettingUtil (line 14) | function getModelSettingUtil( function getModelDisplayName (line 24) | function getModelDisplayName(settings: SessionSettings, globalSettings: ... FILE: src/renderer/packages/model-setting-utils/interface.ts type ModelSettingUtil (line 3) | interface ModelSettingUtil { FILE: src/renderer/packages/model-setting-utils/registry-setting-util.ts class RegistrySettingUtil (line 7) | class RegistrySettingUtil extends BaseConfig implements ModelSettingUtil { method constructor (line 10) | constructor(provider: ModelProvider) { method getCurrentModelDisplayName (line 15) | async getCurrentModelDisplayName( method listProviderModels (line 32) | protected async listProviderModels(settings: ProviderSettings): Promis... FILE: src/renderer/packages/model-setting-utils/util.ts function updateModelInfo (line 6) | function updateModelInfo(localModel: ProviderModelInfo, newModelInfo: Pr... function updateLocalModels (line 13) | function updateLocalModels(providerId: string, latestModels: ProviderMod... function updateAllLocalModels (line 38) | function updateAllLocalModels() { FILE: src/renderer/packages/navigator.ts function copyToClipboard (line 4) | function copyToClipboard(text: string) { FILE: src/renderer/packages/pic_utils.ts function getImageBase64AndResize (line 6) | async function getImageBase64AndResize(file: File) { function svgCodeToBase64 (line 66) | function svgCodeToBase64(svgCode: string) { function svgToPngBase64 (line 70) | async function svgToPngBase64(svgBase64: string): Promise { FILE: src/renderer/packages/prompts.ts function nameConversation (line 4) | function nameConversation(msgs: Message[], language: string): Message[] { function answerWithSearchResults (line 37) | function answerWithSearchResults(): string { function contructSearchAction (line 64) | function contructSearchAction(language: string) { function constructKnowledgeBaseSearchAction (line 80) | function constructKnowledgeBaseSearchAction(language: string) { function constructCombinedSearchAction (line 95) | function constructCombinedSearchAction(language: string, hasKnowledgeBas... function answerWithKnowledgeBaseResults (line 119) | function answerWithKnowledgeBaseResults(): string { function summarizeConversation (line 146) | function summarizeConversation(msgs: Message[], language: string): Messa... FILE: src/renderer/packages/remote.ts function initAfetch (line 26) | async function initAfetch(): Promise> { function getAfetch (line 42) | async function getAfetch() { function initAuthenticatedAfetch (line 54) | async function initAuthenticatedAfetch(): Promise(params: { function uploadAndCreateUserFile (line 340) | async function uploadAndCreateUserFile(licenseKey: string, file: File) { function parseUserLinkPro (line 361) | async function parseUserLinkPro(params: { licenseKey: string; url: strin... function parseUserLinkFree (line 401) | async function parseUserLinkFree(params: { url: string }) { function webBrowsing (line 418) | async function webBrowsing(params: { licenseKey: string; query: string }) { function activateLicense (line 451) | async function activateLicense(params: { licenseKey: string; instanceNam... function deactivateLicense (line 479) | async function deactivateLicense(params: { licenseKey: string; instanceI... function validateLicense (line 497) | async function validateLicense(params: { licenseKey: string; instanceId:... function getModelManifest (line 541) | async function getModelManifest(params: { aiProvider: ModelProvider; lic... function reportContent (line 570) | async function reportContent(params: { id: string; type: string; details... function getProviderModelsInfo (line 587) | async function getProviderModelsInfo(params: { modelIds: string[] }) { function requestLoginTicketId (line 608) | async function requestLoginTicketId() { function checkLoginStatus (line 653) | async function checkLoginStatus(ticketId: string) { function refreshAccessToken (line 697) | async function refreshAccessToken(params: { refreshToken: string }) { function getUserProfile (line 738) | async function getUserProfile() { type UserLicense (line 765) | interface UserLicense { function listLicensesByUser (line 788) | async function listLicensesByUser(): Promise { FILE: src/renderer/packages/token-estimation/__tests__/analyzer.test.ts function createMessage (line 6) | function createMessage(overrides: Partial = {}): Message { function createFile (line 15) | function createFile(overrides: Partial = {}): MessageFile { function createLink (line 27) | function createLink(overrides: Partial = {}): MessageLink { FILE: src/renderer/packages/token-estimation/__tests__/computation-queue.test.ts type TaskInput (line 5) | type TaskInput = Omit function createMessageTextTask (line 7) | function createMessageTextTask(overrides: Partial = {}): Task... function createAttachmentTask (line 18) | function createAttachmentTask(overrides: Partial = {}): TaskI... FILE: src/renderer/packages/token-estimation/__tests__/result-persister.test.ts function createMessageTextResult (line 21) | function createMessageTextResult( function createAttachmentResult (line 35) | function createAttachmentResult( FILE: src/renderer/packages/token-estimation/__tests__/task-executor.test.ts function createMessage (line 23) | function createMessage(overrides: Partial = {}): Message { function createSession (line 32) | function createSession(overrides: Partial = {}): Session { function createMessageTextTask (line 42) | function createMessageTextTask(overrides: Partial = {})... function createAttachmentTask (line 55) | function createAttachmentTask(overrides: Partial = {}):... FILE: src/renderer/packages/token-estimation/__tests__/useTokenEstimation.test.ts function createMessage (line 10) | function createMessage(overrides: Partial = {}): Message { FILE: src/renderer/packages/token-estimation/analyzer.ts type AnalyzeTokenRequirementsOptions (line 23) | interface AnalyzeTokenRequirementsOptions { type AnalysisResult (line 37) | interface AnalysisResult { type MessageTextAnalysisResult (line 54) | interface MessageTextAnalysisResult { type MessageAttachmentsAnalysisResult (line 66) | interface MessageAttachmentsAnalysisResult { function analyzeTokenRequirements (line 88) | function analyzeTokenRequirements(options: AnalyzeTokenRequirementsOptio... function analyzeMessageText (line 165) | function analyzeMessageText( function getTokenModel (line 201) | function getTokenModel(tokenizerType: TokenizerType): { provider: string... function analyzeMessageAttachments (line 218) | function analyzeMessageAttachments( FILE: src/renderer/packages/token-estimation/cache-keys.ts function getTokenCacheKey (line 22) | function getTokenCacheKey(params: { tokenizerType: TokenizerType; conten... function isMessageTextCacheValid (line 58) | function isMessageTextCacheValid( function isAttachmentCacheValid (line 95) | function isAttachmentCacheValid(attachment: MessageFile | MessageLink, c... FILE: src/renderer/packages/token-estimation/computation-queue.ts function generateTaskId (line 25) | function generateTaskId(task: Omit)... constant PRIORITY (line 40) | const PRIORITY = { function getPriority (line 59) | function getPriority( class ComputationQueue (line 85) | class ComputationQueue { method setExecutor (line 105) | setExecutor(executor: (task: ComputationTask) => Promise):... method enqueue (line 116) | enqueue(task: Omit): void { method enqueueBatch (line 142) | enqueueBatch(tasks: Omit[]): void { method cancelBySession (line 196) | cancelBySession(sessionId: string): void { method retainOnlyMessages (line 214) | retainOnlyMessages(sessionId: string, allowedMessageIds: Set):... method retainOnlyTokenizerType (line 229) | retainOnlyTokenizerType(sessionId: string, tokenizerType: string): void { method isSessionCancelled (line 244) | isSessionCancelled(sessionId: string): boolean { method getStatus (line 251) | getStatus(): { pending: number; running: number } { method getStatusForSession (line 261) | getStatusForSession(sessionId: string): { pending: number; running: nu... method getPendingTasks (line 275) | getPendingTasks(): ComputationTask[] { method invalidateCompletedTasks (line 282) | invalidateCompletedTasks(taskIds: string[]): void { method subscribe (line 299) | subscribe(listener: () => void): () => void { method clearCompletedBySession (line 310) | clearCompletedBySession(sessionId: string): void { method processQueue (line 328) | private processQueue(): void { method executeTask (line 347) | private async executeTask(task: ComputationTask): Promise { method sortPending (line 376) | private sortPending(): void { method notifyListeners (line 388) | private notifyListeners(): void { method startCleanup (line 402) | startCleanup(): void { method stopCleanup (line 418) | stopCleanup(): void { method _reset (line 433) | _reset(): void { method _getState (line 447) | _getState(): QueueState { FILE: src/renderer/packages/token-estimation/hooks/useTokenEstimation.ts type UseTokenEstimationOptions (line 8) | interface UseTokenEstimationOptions { function useTokenEstimation (line 16) | function useTokenEstimation(options: UseTokenEstimationOptions): TokenEs... FILE: src/renderer/packages/token-estimation/result-persister.ts type AttachmentUpdate (line 9) | interface AttachmentUpdate { type PendingUpdate (line 18) | interface PendingUpdate { function applyAttachmentUpdate (line 28) | function applyAttachmentUpdate(atta... function applyUpdates (line 44) | function applyUpdates(msg: Message, updates: PendingUpdate['updates']): ... function buildCacheKey (line 74) | function buildCacheKey(tokenizerType: TokenizerType, contentMode?: Conte... class ResultPersister (line 81) | class ResultPersister { method addResult (line 89) | addResult(result: NonNullable): void { method getPendingCount (line 147) | getPendingCount(): number { method subscribe (line 151) | subscribe(listener: () => void): () => void { method flushNow (line 158) | async flushNow(): Promise { method cancel (line 173) | cancel(): void { method scheduleFlush (line 181) | private scheduleFlush(): void { method doFlush (line 198) | private doFlush(): void { method flush (line 206) | private async flush(): Promise { method notifyListeners (line 241) | private notifyListeners(): void { FILE: src/renderer/packages/token-estimation/task-executor.ts type ResultPersister (line 16) | interface ResultPersister { function setResultPersister (line 22) | function setResultPersister(persister: ResultPersister): void { function executeTask (line 26) | async function executeTask(task: ComputationTask): Promise { function executeMessageTextTask (line 40) | async function executeMessageTextTask(task: ComputationTask): Promise> type TokenEstimationConfig (line 198) | interface TokenEstimationConfig { FILE: src/renderer/packages/token.test.ts function createMessage (line 17) | function createMessage(overrides: Partial & { text?: string } =... FILE: src/renderer/packages/token.tsx function getTokenCacheKey (line 20) | function getTokenCacheKey(model?: TokenModel): TokenCacheKey { function getTokenCountForModel (line 27) | function getTokenCountForModel(item: { tokenCountMap?: Record { FILE: src/renderer/packages/web-search/duckduckgo.ts class DuckDuckGoSearch (line 4) | class DuckDuckGoSearch extends WebSearch { method search (line 5) | async search(query: string, signal?: AbortSignal): Promise void }) { function AnalyticsSetting (line 322) | function AnalyticsSetting() { function AllowReportingAndTrackingCheckbox (line 340) | function AllowReportingAndTrackingCheckbox(props: { className?: string }) { FILE: src/renderer/platform/desktop_platform.ts class DesktopPlatform (line 21) | class DesktopPlatform implements Platform { method constructor (line 30) | constructor(ipc: ElectronIPC) { method getStorageType (line 34) | public getStorageType(): string { method getVersion (line 38) | public async getVersion() { method getPlatform (line 41) | public async getPlatform() { method getArch (line 44) | public async getArch() { method shouldUseDarkColors (line 47) | public async shouldUseDarkColors(): Promise { method onSystemThemeChange (line 50) | public onSystemThemeChange(callback: () => void): () => void { method onWindowShow (line 53) | public onWindowShow(callback: () => void): () => void { method onWindowFocused (line 56) | public onWindowFocused(callback: () => void): () => void { method onUpdateDownloaded (line 59) | public onUpdateDownloaded(callback: () => void): () => void { method onNavigate (line 62) | public onNavigate(callback: (path: string) => void): () => void { method openLink (line 65) | public async openLink(url: string): Promise { method getDeviceName (line 68) | public async getDeviceName(): Promise { method getInstanceName (line 74) | public async getInstanceName(): Promise { method getLocale (line 78) | public async getLocale() { method ensureShortcutConfig (line 82) | public async ensureShortcutConfig(config: ShortcutSetting): Promise { method getConfig (line 92) | public async getConfig(): Promise { method getSettings (line 95) | public async getSettings(): Promise { method needStoreInFile (line 99) | private needStoreInFile(key: string): boolean { method setStoreValue (line 103) | public async setStoreValue(key: string, value: any) { method getStoreValue (line 118) | public async getStoreValue(key: string) { method delStoreValue (line 132) | public async delStoreValue(key: string) { method getAllStoreValues (line 139) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 153) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 158) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... method getStoreBlob (line 164) | public async getStoreBlob(key: string): Promise { method setStoreBlob (line 167) | public async setStoreBlob(key: string, value: string) { method delStoreBlob (line 170) | public async delStoreBlob(key: string) { method listStoreBlobKeys (line 173) | public async listStoreBlobKeys(): Promise { method initTracking (line 177) | public initTracking(): void { method trackingEvent (line 182) | public trackingEvent(name: string, params: { [key: string]: string }) { method shouldShowAboutDialogWhenStartUp (line 187) | public async shouldShowAboutDialogWhenStartUp(): Promise { method appLog (line 193) | public async appLog(level: string, message: string) { method exportLogs (line 197) | public async exportLogs(): Promise { method clearLogs (line 201) | public async clearLogs(): Promise { method ensureAutoLaunch (line 205) | public async ensureAutoLaunch(enable: boolean) { method parseFileLocally (line 209) | async parseFileLocally(file: File): Promise<{ key?: string; isSupporte... method parseFileWithMineru (line 227) | async parseFileWithMineru( method cancelMineruParse (line 244) | async cancelMineruParse(filePath: string): Promise<{ success: boolean;... method parseUrl (line 248) | public async parseUrl(url: string): Promise<{ key: string; title: stri... method isFullscreen (line 253) | public async isFullscreen() { method setFullscreen (line 257) | public async setFullscreen(enabled: boolean) { method installUpdate (line 261) | public async installUpdate() { method switchTheme (line 265) | public async switchTheme(theme: 'dark' | 'light') { method getKnowledgeBaseController (line 269) | public getKnowledgeBaseController() { method getImageGenerationStorage (line 276) | public getImageGenerationStorage(): ImageGenerationStorage { method minimize (line 283) | public minimize() { method maximize (line 287) | public maximize() { method unmaximize (line 291) | public unmaximize() { method closeWindow (line 295) | public closeWindow() { method isMaximized (line 299) | public isMaximized() { method onMaximizedChange (line 303) | public onMaximizedChange(callback: (isMaximized: boolean) => void): ()... FILE: src/renderer/platform/index.ts function initPlatform (line 7) | function initPlatform(): Platform { FILE: src/renderer/platform/interfaces.ts type PlatformType (line 6) | type PlatformType = 'web' | 'desktop' | 'mobile' type Storage (line 8) | interface Storage { type Platform (line 18) | interface Platform extends Storage { type Exporter (line 105) | interface Exporter { FILE: src/renderer/platform/knowledge-base/desktop-controller.ts class DesktopKnowledgeBaseController (line 6) | class DesktopKnowledgeBaseController implements KnowledgeBaseController { method constructor (line 7) | constructor(private ipc: ElectronIPC) {} method list (line 9) | async list() { method create (line 14) | async create(createParams: { method delete (line 25) | async delete(id: number) { method listFiles (line 29) | async listFiles(kbId: number) { method countFiles (line 34) | async countFiles(kbId: number) { method listFilesPaginated (line 38) | async listFilesPaginated(kbId: number, offset = 0, limit = 20) { method uploadFile (line 42) | async uploadFile(kbId: number, file: FileMeta) { method deleteFile (line 46) | async deleteFile(fileId: number) { method retryFile (line 50) | async retryFile(fileId: number, useRemoteParsing = false) { method pauseFile (line 54) | async pauseFile(fileId: number) { method resumeFile (line 58) | async resumeFile(fileId: number) { method search (line 62) | async search(kbId: number, query: string) { method update (line 67) | async update(updateParams: { id: number; name?: string; rerankModel?: ... method getFilesMeta (line 71) | async getFilesMeta(kbId: number, fileIds: number[]) { method readFileChunks (line 75) | async readFileChunks(kbId: number, chunks: { fileId: number; chunkInde... method testMineruConnection (line 79) | async testMineruConnection(apiToken: string): Promise<{ success: boole... FILE: src/renderer/platform/knowledge-base/interface.ts type KnowledgeBaseController (line 10) | interface KnowledgeBaseController { FILE: src/renderer/platform/storages.ts class DesktopFileStorage (line 7) | class DesktopFileStorage implements Storage { method getStorageType (line 10) | public getStorageType(): string { method setStoreValue (line 14) | public async setStoreValue(key: string, value: any) { method getStoreValue (line 23) | public async getStoreValue(key: string) { method delStoreValue (line 26) | public delStoreValue(key: string) { method getAllStoreValues (line 29) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 33) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 36) | public async setAllStoreValues(data: { [key: string]: any }) { class LocalStorage (line 41) | class LocalStorage implements Storage { method getStorageType (line 51) | public getStorageType(): string { method setStoreValue (line 55) | public async setStoreValue(key: string, value: any) { method getStoreValue (line 60) | public async getStoreValue(key: string) { method delStoreValue (line 64) | public async delStoreValue(key: string) { method getAllStoreValues (line 67) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 84) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 88) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... class SQLiteStorage (line 95) | class SQLiteStorage { method constructor (line 100) | constructor() { method initialize (line 106) | private async initialize(): Promise { method ensureInitialized (line 128) | private async ensureInitialized(): Promise { method setItem (line 133) | async setItem(key: string, value: string): Promise { method getItem (line 149) | async getItem(key: string): Promise { method removeItem (line 166) | async removeItem(key: string): Promise { method getAllItems (line 182) | async getAllItems(): Promise<{ [key: string]: any }> { method getAllKeys (line 205) | async getAllKeys(): Promise { method closeDatabase (line 228) | async closeDatabase(): Promise { class MobileSQLiteStorage (line 237) | class MobileSQLiteStorage implements Storage { method getStorageType (line 238) | public getStorageType(): string { method setStoreValue (line 243) | public async setStoreValue(key: string, value: any) { method getStoreValue (line 246) | public async getStoreValue(key: string) { method delStoreValue (line 250) | public async delStoreValue(key: string) { method getAllStoreValues (line 253) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 266) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 269) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... class IndexedDBStorage (line 276) | class IndexedDBStorage implements Storage { method getStorageType (line 279) | public getStorageType(): string { method setStoreValue (line 283) | public async setStoreValue(key: string, value: any) { method getStoreValue (line 292) | public async getStoreValue(key: string) { method delStoreValue (line 302) | public async delStoreValue(key: string) { method getAllStoreValues (line 305) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 321) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 324) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... function getOldVersionStorages (line 331) | function getOldVersionStorages(): Storage[] { FILE: src/renderer/platform/test_platform.ts class InMemoryStorage (line 20) | class InMemoryStorage implements Storage { method getStorageType (line 23) | public getStorageType(): string { method setStoreValue (line 27) | public async setStoreValue(key: string, value: any): Promise { method getStoreValue (line 31) | public async getStoreValue(key: string): Promise { method delStoreValue (line 36) | public async delStoreValue(key: string): Promise { method getAllStoreValues (line 40) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 48) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 52) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... method clear (line 58) | public clear(): void { class TestExporter (line 66) | class TestExporter implements Exporter { method exportBlob (line 69) | async exportBlob(filename: string, blob: Blob, encoding?: 'utf8' | 'as... method exportTextFile (line 74) | async exportTextFile(filename: string, content: string): Promise { method exportImageFile (line 78) | async exportImageFile(basename: string, base64: string): Promise { method exportByUrl (line 82) | async exportByUrl(filename: string, url: string): Promise { method exportStreamingJson (line 86) | async exportStreamingJson( method getExport (line 97) | getExport(filename: string): any { method getAllExports (line 101) | getAllExports(): Map { method clear (line 105) | clear(): void { class TestPlatform (line 113) | class TestPlatform implements Platform { method constructor (line 122) | constructor() { method getStorageType (line 130) | public getStorageType(): string { method setStoreValue (line 134) | public async setStoreValue(key: string, value: any): Promise { method getStoreValue (line 138) | public async getStoreValue(key: string): Promise { method delStoreValue (line 142) | public async delStoreValue(key: string): Promise { method getAllStoreValues (line 146) | public async getAllStoreValues(): Promise<{ [key: string]: any }> { method getAllStoreKeys (line 150) | public async getAllStoreKeys(): Promise { method setAllStoreValues (line 154) | public async setAllStoreValues(data: { [key: string]: any }): Promise<... method getStoreBlob (line 160) | public async getStoreBlob(key: string): Promise { method setStoreBlob (line 164) | public async setStoreBlob(key: string, value: string): Promise { method delStoreBlob (line 168) | public async delStoreBlob(key: string): Promise { method listStoreBlobKeys (line 172) | public async listStoreBlobKeys(): Promise { method getVersion (line 178) | public async getVersion(): Promise { method getPlatform (line 182) | public async getPlatform(): Promise { method getArch (line 186) | public async getArch(): Promise { method shouldUseDarkColors (line 190) | public async shouldUseDarkColors(): Promise { method onSystemThemeChange (line 194) | public onSystemThemeChange(callback: () => void): () => void { method onWindowShow (line 198) | public onWindowShow(callback: () => void): () => void { method onWindowFocused (line 202) | public onWindowFocused(callback: () => void): () => void { method onUpdateDownloaded (line 206) | public onUpdateDownloaded(callback: () => void): () => void { method openLink (line 210) | public async openLink(url: string): Promise { method getDeviceName (line 214) | public async getDeviceName(): Promise { method getInstanceName (line 218) | public async getInstanceName(): Promise { method getLocale (line 222) | public async getLocale(): Promise { method ensureShortcutConfig (line 226) | public async ensureShortcutConfig(config: ShortcutSetting): Promise { method getConfig (line 240) | public async getConfig(): Promise { method getSettings (line 247) | public async getSettings(): Promise { method initTracking (line 256) | public initTracking(): void { method trackingEvent (line 260) | public trackingEvent(name: string, params: { [key: string]: string }):... method shouldShowAboutDialogWhenStartUp (line 266) | public async shouldShowAboutDialogWhenStartUp(): Promise { method appLog (line 270) | public async appLog(level: string, message: string): Promise { method exportLogs (line 274) | public async exportLogs(): Promise { method clearLogs (line 278) | public async clearLogs(): Promise { method ensureAutoLaunch (line 282) | public async ensureAutoLaunch(enable: boolean): Promise { method parseFileLocally (line 286) | public async parseFileLocally(file: File): Promise<{ key?: string; isS... method isFullscreen (line 298) | public async isFullscreen(): Promise { method setFullscreen (line 302) | public async setFullscreen(enabled: boolean): Promise { method installUpdate (line 306) | public async installUpdate(): Promise { method getKnowledgeBaseController (line 310) | public getKnowledgeBaseController(): KnowledgeBaseController { method getImageGenerationStorage (line 314) | public getImageGenerationStorage(): ImageGenerationStorage { method minimize (line 318) | public async minimize(): Promise { method maximize (line 322) | public async maximize(): Promise { method unmaximize (line 326) | public async unmaximize(): Promise { method closeWindow (line 330) | public async closeWindow(): Promise { method isMaximized (line 334) | public async isMaximized(): Promise { method onMaximizedChange (line 338) | public onMaximizedChange(callback: (isMaximized: boolean) => void): ()... method loadFile (line 349) | public loadFile(storageKey: string, content: string): void { method loadFiles (line 357) | public loadFiles(files: Record): void { method getAllBlobs (line 366) | public getAllBlobs(): Record { method clear (line 377) | public clear(): void { method setSettings (line 388) | public setSettings(settings: Partial): void { method setConfig (line 395) | public setConfig(config: Partial): void { method getInternalStorage (line 402) | public getInternalStorage(): InMemoryStorage { FILE: src/renderer/platform/web_exporter.ts class WebExporter (line 4) | class WebExporter implements Exporter { method constructor (line 5) | constructor() {} method exportBlob (line 7) | async exportBlob(filename: string, blob: Blob, encoding?: 'utf8' | 'as... method exportTextFile (line 17) | async exportTextFile(filename: string, content: string) { method exportImageFile (line 28) | async exportImageFile(basename: string, base64Data: string) { method exportByUrl (line 54) | async exportByUrl(filename: string, url: string) { method exportStreamingJson (line 64) | async exportStreamingJson(filename: string, dataCallback: () => AsyncG... FILE: src/renderer/platform/web_logger.ts constant LOG_STORAGE_KEY (line 4) | const LOG_STORAGE_KEY = 'chatbox-app-logs' constant MAX_LOG_ENTRIES (line 5) | const MAX_LOG_ENTRIES = 1000 // 最大日志条数 constant MAX_LOG_AGE_DAYS (line 6) | const MAX_LOG_AGE_DAYS = 30 // 日志保留天数 type LogEntry (line 8) | interface LogEntry { class WebLogger (line 18) | class WebLogger { method constructor (line 24) | private constructor() {} method getInstance (line 26) | public static getInstance(): WebLogger { method init (line 36) | public async init(): Promise { method cleanupOldLogs (line 51) | private async cleanupOldLogs(): Promise { method getStoredLogs (line 76) | private async getStoredLogs(): Promise { method log (line 88) | public log(level: string, message: string): void { method scheduleFlush (line 104) | private scheduleFlush(): void { method flush (line 116) | private async flush(): Promise { method flushNow (line 140) | public async flushNow(): Promise { method exportLogs (line 152) | public async exportLogs(): Promise { method clearLogs (line 168) | public async clearLogs(): Promise { FILE: src/renderer/platform/web_platform.ts class WebPlatform (line 15) | class WebPlatform extends IndexedDBStorage implements Platform { method constructor (line 22) | constructor() { method getVersion (line 27) | public async getVersion(): Promise { method getPlatform (line 30) | public async getPlatform(): Promise { method getArch (line 33) | public async getArch(): Promise { method shouldUseDarkColors (line 36) | public async shouldUseDarkColors(): Promise { method onSystemThemeChange (line 39) | public onSystemThemeChange(callback: () => void): () => void { method onWindowShow (line 45) | public onWindowShow(callback: () => void): () => void { method onWindowFocused (line 48) | public onWindowFocused(callback: () => void): () => void { method onUpdateDownloaded (line 51) | public onUpdateDownloaded(callback: () => void): () => void { method openLink (line 54) | public async openLink(url: string): Promise { method getDeviceName (line 57) | public async getDeviceName(): Promise { method getInstanceName (line 61) | public async getInstanceName(): Promise { method getLocale (line 64) | public async getLocale() { method ensureShortcutConfig (line 68) | public async ensureShortcutConfig(config: ShortcutSetting): Promise { method getConfig (line 78) | public async getConfig(): Promise { method getSettings (line 86) | public async getSettings(): Promise { method getStoreBlob (line 95) | public async getStoreBlob(key: string): Promise { method setStoreBlob (line 98) | public async setStoreBlob(key: string, value: string): Promise { method delStoreBlob (line 101) | public async delStoreBlob(key: string) { method listStoreBlobKeys (line 104) | public async listStoreBlobKeys(): Promise { method initTracking (line 108) | public async initTracking() { method trackingEvent (line 128) | public trackingEvent(name: string, params: { [key: string]: string }) { method shouldShowAboutDialogWhenStartUp (line 132) | public async shouldShowAboutDialogWhenStartUp(): Promise { method appLog (line 136) | public async appLog(level: string, message: string): Promise { method exportLogs (line 140) | public async exportLogs(): Promise { method clearLogs (line 144) | public async clearLogs(): Promise { method ensureAutoLaunch (line 148) | public async ensureAutoLaunch(enable: boolean) { method parseFileLocally (line 152) | async parseFileLocally(file: File): Promise<{ key?: string; isSupporte... method parseUrl (line 162) | public async parseUrl(url: string): Promise<{ key: string; title: stri... method isFullscreen (line 166) | public async isFullscreen() { method setFullscreen (line 170) | public async setFullscreen(enabled: boolean): Promise { method installUpdate (line 174) | installUpdate(): Promise { method getKnowledgeBaseController (line 178) | public getKnowledgeBaseController(): KnowledgeBaseController { method getImageGenerationStorage (line 182) | public getImageGenerationStorage(): ImageGenerationStorage { method minimize (line 189) | public minimize() { method maximize (line 193) | public maximize() { method unmaximize (line 197) | public unmaximize() { method closeWindow (line 201) | public closeWindow() { method isMaximized (line 205) | public isMaximized() { method onMaximizedChange (line 209) | public onMaximizedChange() { FILE: src/renderer/platform/web_platform_utils.ts function parseTextFileLocally (line 6) | async function parseTextFileLocally(file: File): Promise<{ text: string;... function parseUrlContentFree (line 15) | async function parseUrlContentFree(url: string) { FILE: src/renderer/preload.d.ts type Window (line 5) | interface Window { FILE: src/renderer/router.tsx type Register (line 23) | interface Register { FILE: src/renderer/routes/__root.tsx function Root (line 60) | function Root() { type ExtendedCustomColors (line 504) | type ExtendedCustomColors = type MantineThemeColorsOverride (line 516) | interface MantineThemeColorsOverride { FILE: src/renderer/routes/about.tsx function RouteComponent (line 32) | function RouteComponent() { function WechatQRCode (line 168) | function WechatQRCode() { function List (line 185) | function List(props: { children: ReactElement[] }) { function ListItem (line 198) | function ListItem({ FILE: src/renderer/routes/copilots.tsx function Copilots (line 42) | function Copilots() { type MiniItemProps (line 190) | type MiniItemProps = function MiniItem (line 205) | function MiniItem(props: MiniItemProps) { type CopilotFormProps (line 359) | interface CopilotFormProps { function CopilotForm (line 367) | function CopilotForm(props: CopilotFormProps) { function getEmptyCopilot (line 471) | async function getEmptyCopilot(): Promise { FILE: src/renderer/routes/dev/context-generator.tsx type GeneratedMessage (line 32) | type GeneratedMessage = Message & { type MessageLengthPreset (line 36) | type MessageLengthPreset = 'short' | 'medium' | 'long' | 'mixed' constant MESSAGE_LENGTH_PRESETS (line 38) | const MESSAGE_LENGTH_PRESETS: Record = { constant CHATBOXAI_IMAGE_MODEL_IDS (line 14) | const CHATBOXAI_IMAGE_MODEL_IDS = [ constant OPENAI_IMAGE_MODEL_IDS (line 21) | const OPENAI_IMAGE_MODEL_IDS = ['gpt-image-1', 'gpt-image-1.5'] constant GEMINI_IMAGE_MODEL_IDS (line 22) | const GEMINI_IMAGE_MODEL_IDS = [ type ImageModelFamily (line 30) | type ImageModelFamily = 'gpt' | 'gemini' | 'default' constant RATIO_OPTIONS (line 32) | const RATIO_OPTIONS: Record = { function getRatioOptionsForModel (line 38) | function getRatioOptionsForModel(modelId: string): string[] { function blobToDataUrl (line 61) | function blobToDataUrl(blob: string): string { function getBase64ImageSize (line 69) | function getBase64ImageSize(base64: string): Promise<{ width: number; he... FILE: src/renderer/routes/image-creator/index.tsx type InputToolbarProps (line 77) | interface InputToolbarProps { function InputToolbar (line 90) | function InputToolbar({ function ImageCreatorPage (line 207) | function ImageCreatorPage() { FILE: src/renderer/routes/index.tsx function Index (line 35) | function Index() { constant MAX_COPILOTS_TO_SHOW (line 270) | const MAX_COPILOTS_TO_SHOW = 10 FILE: src/renderer/routes/session/$sessionId.tsx function RouteComponent (line 23) | function RouteComponent() { FILE: src/renderer/routes/settings/chat.tsx constant MAX_IMAGE_SIZE (line 17) | const MAX_IMAGE_SIZE = 5 * 1024 * 1024 // 5MB function RouteComponent (line 23) | function RouteComponent() { function ContextManagementSection (line 385) | function ContextManagementSection() { FILE: src/renderer/routes/settings/chatbox-ai.tsx function RouteComponent (line 20) | function RouteComponent() { FILE: src/renderer/routes/settings/default-models.tsx function RouteComponent (line 16) | function RouteComponent() { FILE: src/renderer/routes/settings/document-parser.tsx function RouteComponent (line 8) | function RouteComponent() { FILE: src/renderer/routes/settings/general.tsx function RouteComponent (line 37) | function RouteComponent() { type ExportDataItem (line 493) | enum ExportDataItem { FILE: src/renderer/routes/settings/hotkeys.tsx function RouteComponent (line 10) | function RouteComponent() { FILE: src/renderer/routes/settings/index.tsx function RouteComponent (line 16) | function RouteComponent() { FILE: src/renderer/routes/settings/mcp.tsx function RouteComponent (line 22) | function RouteComponent() { FILE: src/renderer/routes/settings/provider/$providerId.tsx type ModelTestResult (line 56) | type ModelTestResult = ModelTestState & { function normalizeAPIHost (line 61) | function normalizeAPIHost( function RouteComponent (line 87) | function RouteComponent() { function ProviderSettings (line 92) | function ProviderSettings({ providerId }: { providerId: string }) { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/LicenseDetailCard.tsx type LicenseDetailCardProps (line 9) | interface LicenseDetailCardProps { function LicenseDetailCard (line 15) | function LicenseDetailCard({ licenseDetail, language, utmContent }: Lice... FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/LicenseKeyView.tsx type LicenseKeyViewProps (line 19) | interface LicenseKeyViewProps { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/LicenseSelectionModal.tsx type LicenseSelectionModalProps (line 6) | interface LicenseSelectionModalProps { function LicenseSelectionModal (line 13) | function LicenseSelectionModal({ opened, licenses, onConfirm, onCancel }... FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/LoggedInView.tsx type LoggedInViewProps (line 14) | interface LoggedInViewProps { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/LoginView.tsx type LoginViewProps (line 26) | interface LoginViewProps { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/ModelManagement.tsx type ModelManagementProps (line 10) | interface ModelManagementProps { function ModelManagement (line 20) | function ModelManagement({ FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/constants.ts constant LOGIN_POLLING_INTERVAL (line 2) | const LOGIN_POLLING_INTERVAL = 1000 constant LOGIN_POLLING_TIMEOUT (line 3) | const LOGIN_POLLING_TIMEOUT = 3 * 60 * 1000 constant VIEW_TRANSITION_DURATION (line 6) | const VIEW_TRANSITION_DURATION = 300 constant VIEW_TRANSITION_TIMING (line 7) | const VIEW_TRANSITION_TIMING = 'ease' FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/types.ts type ViewMode (line 1) | type ViewMode = 'login' | 'licenseKey' type LoginState (line 3) | type LoginState = 'idle' | 'requesting' | 'polling' | 'success' | 'error... type AuthTokens (line 5) | interface AuthTokens { type UserProfile (line 10) | interface UserProfile { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/useAuthTokens.ts function useAuthTokens (line 8) | function useAuthTokens() { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/useLicenseActivation.ts type Settings (line 7) | interface Settings { type UseLicenseActivationParams (line 14) | interface UseLicenseActivationParams { function useLicenseActivation (line 19) | function useLicenseActivation({ settings, onActivationSuccess }: UseLice... FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/useLogin.ts type UseLoginParams (line 10) | interface UseLoginParams { function useLogin (line 19) | function useLogin({ language, onLoginSuccess }: UseLoginParams) { FILE: src/renderer/routes/settings/provider/chatbox-ai/-components/useUserLicenses.ts type UseUserLicensesParams (line 6) | interface UseUserLicensesParams { function useUserLicenses (line 10) | function useUserLicenses({ loginState }: UseUserLicensesParams) { FILE: src/renderer/routes/settings/provider/chatbox-ai/index.tsx function RouteComponent (line 24) | function RouteComponent() { FILE: src/renderer/routes/settings/provider/index.tsx function RouteComponent (line 9) | function RouteComponent() { FILE: src/renderer/routes/settings/provider/route.tsx function RouteComponent (line 30) | function RouteComponent() { FILE: src/renderer/routes/settings/route.tsx constant ITEMS (line 28) | const ITEMS = [ function RouteComponent (line 97) | function RouteComponent() { function SettingsRoot (line 128) | function SettingsRoot() { FILE: src/renderer/routes/settings/web-search.tsx function RouteComponent (line 14) | function RouteComponent() { FILE: src/renderer/setup/init_data.ts function initData (line 8) | async function initData() { function initSessionsIfNeeded (line 12) | async function initSessionsIfNeeded() { function initPresetSessions (line 26) | async function initPresetSessions() { FILE: src/renderer/setup/mcp_bootstrap.ts function monitorServerStatus (line 6) | function monitorServerStatus() { FILE: src/renderer/setup/protect.ts function protect (line 16) | function protect() { function toHomePage (line 28) | function toHomePage() { function simpleEncrypt (line 42) | function simpleEncrypt(text: string): string { function simpleDecrypt (line 52) | function simpleDecrypt(text: string): string { FILE: src/renderer/setup/sentry_init.ts method beforeSend (line 33) | beforeSend(event) { FILE: src/renderer/setup/storage_clear.ts function tickStorageTask (line 19) | async function tickStorageTask() { FILE: src/renderer/storage/BaseStorage.ts class BaseStorage (line 6) | class BaseStorage { method constructor (line 7) | constructor() {} method getStorageType (line 9) | public getStorageType() { method setItem (line 13) | public async setItem(key: string, value: T): Promise { method setItemNow (line 17) | public async setItemNow(key: string, value: T): Promise { method getItem (line 37) | public async getItem(key: string, initialValue: T): Promise { method removeItem (line 61) | public async removeItem(key: string): Promise { method getAll (line 65) | public async getAll(): Promise<{ [key: string]: any }> { method getAllKeys (line 74) | public async getAllKeys(): Promise { method setAll (line 83) | public async setAll(data: { [key: string]: any }) { method setBlob (line 88) | public async setBlob(key: string, value: string) { method getBlob (line 91) | public async getBlob(key: string): Promise { method delBlob (line 99) | public async delBlob(key: string) { method getBlobKeys (line 102) | public async getBlobKeys(): Promise { FILE: src/renderer/storage/ImageGenerationStorage.ts constant PAGE_SIZE (line 3) | const PAGE_SIZE = 20 constant DB_NAME (line 4) | const DB_NAME = 'chatbox-image-generation' constant STORE_NAME (line 5) | const STORE_NAME = 'records' type ImageGenerationStorage (line 7) | interface ImageGenerationStorage { class IndexedDBImageGenerationStorage (line 17) | class IndexedDBImageGenerationStorage implements ImageGenerationStorage { method initialize (line 21) | initialize(): Promise { method openDatabase (line 29) | private openDatabase(): Promise { method getStore (line 50) | private getStore(mode: IDBTransactionMode): IDBObjectStore { method create (line 56) | async create(record: ImageGeneration): Promise { method update (line 66) | async update(id: string, updates: Partial): Promise { method delete (line 90) | async delete(id: string): Promise { method getPage (line 100) | async getPage(cursor: number = 0, limit: number = PAGE_SIZE): Promise<... method getTotal (line 139) | async getTotal(): Promise { FILE: src/renderer/storage/SQLiteImageGenerationStorage.ts constant PAGE_SIZE (line 5) | const PAGE_SIZE = 20 constant DB_NAME (line 6) | const DB_NAME = 'chatbox-image-generation' class SQLiteImageGenerationStorage (line 8) | class SQLiteImageGenerationStorage implements ImageGenerationStorage { method constructor (line 13) | constructor() { method initialize (line 17) | initialize(): Promise { method openDatabase (line 25) | private async openDatabase(): Promise { method recordToRow (line 59) | private recordToRow(record: ImageGeneration): Record { method rowToRecord (line 77) | private rowToRecord(row: Record): ImageGeneration { method create (line 97) | async create(record: ImageGeneration): Promise { method update (line 123) | async update(id: string, updates: Partial): Promise { method delete (line 164) | async delete(id: string): Promise { method getPage (line 169) | async getPage(cursor: number = 0, limit: number = PAGE_SIZE): Promise<... method getTotal (line 186) | async getTotal(): Promise { FILE: src/renderer/storage/StoreStorage.ts type StorageKey (line 6) | enum StorageKey { method session (line 20) | session(id: string) { method picture (line 23) | picture(category: string) { method file (line 26) | file(sessionId: string, msgId: string) { class StoreStorage (line 31) | class StoreStorage extends BaseStorage { method constructor (line 32) | constructor() { method getItem (line 35) | public async getItem(key: string, initialValue: T): Promise { method setItem (line 47) | public async setItem(key: string, value: T): Promise { FILE: src/renderer/stores/atoms/compactionAtoms.ts type CompactionStatus (line 3) | type CompactionStatus = 'idle' | 'running' | 'failed' type CompactionUIState (line 5) | interface CompactionUIState { function getCompactionUIState (line 19) | function getCompactionUIState(sessionId: string): CompactionUIState { function setCompactionUIState (line 25) | function setCompactionUIState(sessionId: string, state: Partial) { function createSessionAtom (line 74) | function createSessionAtom(sessionId: string) { function cleanupSessionAtomCache (line 97) | function cleanupSessionAtomCache(sessionId: string) { FILE: src/renderer/stores/authInfoStore.ts type AuthTokensState (line 6) | interface AuthTokensState { type AuthTokensActions (line 11) | interface AuthTokensActions { function useAuthInfoStore (line 65) | function useAuthInfoStore(selector: Parameters { function listSessionsMeta (line 64) | async function listSessionsMeta() { function useSessionList (line 68) | function useSessionList() { function updateSessionList (line 75) | async function updateSessionList(updater: UpdaterFn) { function _getSessionById (line 92) | async function _getSessionById(id: string): Promise { function getSession (line 114) | async function getSession(sessionId: string) { function useSession (line 118) | function useSession(sessionId: string | null) { function _setSessionCache (line 126) | function _setSessionCache(sessionId: string, updated: Session | null) { function createSession (line 132) | async function createSession(newSession: Omit, previousId... function updateSessionWithMessages (line 163) | async function updateSessionWithMessages(sessionId: string, updater: Upd... function updateSession (line 204) | async function updateSession(sessionId: string, updater: Updater { FILE: src/renderer/stores/imageGenerationStore.ts type ImageGenerationUIState (line 11) | interface ImageGenerationUIState { type ImageGenerationUIActions (line 17) | interface ImageGenerationUIActions { function getStorage (line 35) | function getStorage(): ImageGenerationStorage { function initializeStore (line 42) | async function initializeStore(): Promise { constant IMAGE_GEN_QUERY_KEY (line 56) | const IMAGE_GEN_QUERY_KEY = 'image-generation' constant IMAGE_GEN_LIST_QUERY_KEY (line 57) | const IMAGE_GEN_LIST_QUERY_KEY = 'image-generation-list' function useImageGenerationHistory (line 59) | function useImageGenerationHistory(pageSize: number = 20) { function useImageGenerationRecord (line 75) | function useImageGenerationRecord(id: string | null) { function createRecord (line 87) | async function createRecord( function updateRecord (line 107) | async function updateRecord(id: string, updates: Partial { function useCurrentGeneratingId (line 142) | function useCurrentGeneratingId() { function useCurrentRecordId (line 146) | function useCurrentRecordId() { FILE: src/renderer/stores/lastUsedModelStore.ts type State (line 5) | type State = { FILE: src/renderer/stores/migration.test.ts type StorageData (line 43) | type StorageData = { [key: string]: string } function createOldStorageMock (line 63) | function createOldStorageMock( method default (line 224) | get default() { method getStorageType (line 261) | getStorageType() { method setStoreValue (line 264) | setStoreValue(key: string, value: unknown) { method getStoreValue (line 268) | getStoreValue(key: string) { method delStoreValue (line 272) | delStoreValue(key: string) { method getAllStoreValues (line 276) | getAllStoreValues() { method getAllStoreKeys (line 287) | getAllStoreKeys() { method setAllStoreValues (line 290) | async setAllStoreValues(data: { [key: string]: unknown }) { FILE: src/renderer/stores/migration.ts function migrate (line 40) | async function migrate() { type MigrateStore (line 53) | type MigrateStore = { function doMigrateStorage (line 62) | async function doMigrateStorage(oldStorage: Storage) { function findNewestStorage (line 106) | async function findNewestStorage(oldStorages: Storage[]): Promise<[numbe... function migrateStorage (line 120) | async function migrateStorage() { function migrateOnData (line 179) | async function migrateOnData(dataStore: MigrateStore, canRelaunch = true) { function migrate_0_to_1 (line 222) | async function migrate_0_to_1(dataStore: MigrateStore) { function migrate_1_to_2 (line 233) | async function migrate_1_to_2(dataStore: MigrateStore) { function migrate_2_to_3 (line 249) | async function migrate_2_to_3(dataStore: MigrateStore) { function migrate_3_to_4 (line 269) | async function migrate_3_to_4(dataStore: MigrateStore) { function migrate_4_to_5 (line 280) | async function migrate_4_to_5(dataStore: MigrateStore): Promise { function migrate_5_to_6 (line 299) | async function migrate_5_to_6(dataStore: MigrateStore) { function migrate_6_to_7 (line 312) | async function migrate_6_to_7(dataStore: MigrateStore): Promise { function migrate_7_to_8 (line 332) | async function migrate_7_to_8(dataStore: MigrateStore): Promise { function migrate_8_to_9 (line 351) | async function migrate_8_to_9(dataStore: MigrateStore): Promise { function setInitProcess (line 395) | function setInitProcess(process: string) { function migrate_9_to_10 (line 401) | async function migrate_9_to_10(dataStore: MigrateStore): Promise { function migrate_10_to_11 (line 696) | async function migrate_10_to_11(dataStore: MigrateStore) { function migrate_11_to_12 (line 716) | async function migrate_11_to_12(dataStore: MigrateStore) { function migrate_12_to_13 (line 721) | async function migrate_12_to_13(dataStore: MigrateStore) { function migrate_13_to_14 (line 725) | async function migrate_13_to_14(dataStore: MigrateStore) { FILE: src/renderer/stores/premiumActions.ts function useAutoValidate (line 17) | function useAutoValidate(): boolean { function deactivate (line 69) | async function deactivate(clearLoginState = true) { function activate (line 111) | async function activate(licenseKey: string, method: 'login' | 'manual' =... FILE: src/renderer/stores/scrollActions.ts function scrollToMessage (line 6) | async function scrollToMessage( function scrollToIndex (line 28) | function scrollToIndex( function scrollToTop (line 37) | function scrollToTop(behavior: 'auto' | 'smooth' = 'auto') { function scrollToBottom (line 42) | function scrollToBottom(behavior: 'auto' | 'smooth' = 'auto') { function startAutoScroll (line 56) | function startAutoScroll( function clearAutoScroll (line 77) | function clearAutoScroll(id?: string) { function getMessageListViewportHeight (line 88) | function getMessageListViewportHeight() { FILE: src/renderer/stores/session/crud.ts function create (line 15) | async function create(newSession: Omit) { function createEmpty (line 24) | async function createEmpty(type: 'chat' | 'picture') { function copySession (line 42) | async function copySession( function copyAndSwitchSession (line 98) | async function copyAndSwitchSession(source: SessionMeta) { function switchCurrentSession (line 106) | function switchCurrentSession(sessionId: string) { function reorderSessions (line 118) | async function reorderSessions(oldIndex: number, newIndex: number) { function switchToIndex (line 134) | async function switchToIndex(index: number) { function switchToNext (line 146) | async function switchToNext(reversed?: boolean) { function clearSessionList (line 172) | async function clearSessionList(keepNum: number) { function clearConversationList (line 192) | async function clearConversationList(keepNum: number) { function clear (line 199) | async function clear(sessionId: string) { FILE: src/renderer/stores/session/export.ts function exportSessionChat (line 5) | async function exportSessionChat(sessionId: string, content: ExportChatS... FILE: src/renderer/stores/session/forks.ts function findMessageLocation (line 9) | function findMessageLocation(session: Session, messageId: string): Messa... function createNewFork (line 29) | async function createNewFork(sessionId: string, forkMessageId: string) { function switchFork (line 48) | async function switchFork(sessionId: string, forkMessageId: string, dire... function deleteFork (line 67) | async function deleteFork(sessionId: string, forkMessageId: string) { function expandFork (line 87) | async function expandFork(sessionId: string, forkMessageId: string) { function buildSwitchForkPatch (line 105) | function buildSwitchForkPatch( function switchForkInMessages (line 161) | function switchForkInMessages( function buildCreateForkPatch (line 231) | function buildCreateForkPatch(session: Session, forkMessageId: string): ... function buildDeleteForkPatch (line 288) | function buildDeleteForkPatch(session: Session, forkMessageId: string): ... function buildExpandForkPatch (line 332) | function buildExpandForkPatch(session: Session, forkMessageId: string): ... type ForkTransformResult (line 358) | type ForkTransformResult = { messages: Message[]; forkEntry: MessageFork... type ForkTransform (line 359) | type ForkTransform = (messages: Message[], forkEntry: MessageForkEntry) ... function applyForkTransform (line 361) | function applyForkTransform( function computeNextMessageForksHash (line 415) | function computeNextMessageForksHash( FILE: src/renderer/stores/session/generation.ts function getSessionWebBrowsing (line 44) | function getSessionWebBrowsing(sessionId: string, provider: string | und... function trackGenerateEvent (line 56) | function trackGenerateEvent( function createLoadingPictures (line 96) | function createLoadingPictures(n: number): MessagePicture[] { function generate (line 110) | async function generate( function generateMore (line 323) | async function generateMore(sessionId: string, msgId: string) { function generateMoreInNewFork (line 330) | async function generateMoreInNewFork(sessionId: string, msgId: string) { type GenerateMoreFn (line 335) | type GenerateMoreFn = (sessionId: string, msgId: string) => Promise function regenerateInNewFork (line 337) | async function regenerateInNewFork( function genMessageContext (line 379) | async function genMessageContext( function getMessageThreadContext (line 560) | async function getMessageThreadContext(sessionId: string, messageId: str... FILE: src/renderer/stores/session/messages.ts function getSessionWebBrowsing (line 26) | function getSessionWebBrowsing(sessionId: string, provider: string | und... function insertMessage (line 40) | async function insertMessage(sessionId: string, msg: Message) { function insertMessageAfter (line 56) | async function insertMessageAfter(sessionId: string, msg: Message, after... function modifyMessage (line 73) | async function modifyMessage( function removeMessage (line 103) | async function removeMessage(sessionId: string, messageId: string) { function submitNewUserMessage (line 111) | async function submitNewUserMessage( FILE: src/renderer/stores/session/naming.ts function modifyNameAndThreadName (line 17) | async function modifyNameAndThreadName(sessionId: string, name: string) { function modifyThreadName (line 24) | async function modifyThreadName(sessionId: string, threadName: string) { function _generateName (line 31) | async function _generateName(sessionId: string, modifyName: (sessionId: ... function generateNameAndThreadName (line 80) | async function generateNameAndThreadName(sessionId: string) { function generateThreadName (line 87) | async function generateThreadName(sessionId: string) { function scheduleGenerateNameAndThreadName (line 94) | function scheduleGenerateNameAndThreadName(sessionId: string) { function scheduleGenerateThreadName (line 123) | function scheduleGenerateThreadName(sessionId: string) { FILE: src/renderer/stores/session/threads.ts function editThread (line 16) | async function editThread(sessionId: string, threadId: string, newThread... function removeThread (line 42) | async function removeThread(sessionId: string, threadId: string) { function switchThread (line 61) | async function switchThread(sessionId: string, threadId: string) { function refreshContextAndCreateNewThread (line 93) | async function refreshContextAndCreateNewThread(sessionId: string) { function startNewThread (line 120) | async function startNewThread(sessionId: string) { function removeCurrentThread (line 132) | async function removeCurrentThread(sessionId: string) { function compressAndCreateThread (line 156) | async function compressAndCreateThread(sessionId: string, summary: strin... function moveThreadToConversations (line 210) | async function moveThreadToConversations(sessionId: string, threadId: st... function moveCurrentThreadToConversations (line 235) | async function moveCurrentThreadToConversations(sessionId: string) { FILE: src/renderer/stores/session/types.ts type MessageForkEntry (line 3) | type MessageForkEntry = NonNullable[string] type MessageLocation (line 4) | type MessageLocation = { list: Message[]; index: number } FILE: src/renderer/stores/sessionActions.test.ts function makeMessage (line 140) | function makeMessage(id: string, role: Message['role'] = 'user'): Message { function cloneSession (line 148) | function cloneSession(session: Session): Session { FILE: src/renderer/stores/sessionHelpers.ts function getCurrentTokenizerType (line 34) | function getCurrentTokenizerType(): 'default' | 'deepseek' { function computePreviewMetadata (line 39) | function computePreviewMetadata( function getEffectiveDocumentParserConfig (line 79) | function getEffectiveDocumentParserConfig(): DocumentParserConfig { function parseFileWithLocalParser (line 87) | async function parseFileWithLocalParser( function parseFileWithChatboxAI (line 123) | async function parseFileWithChatboxAI( function parseFileWithMineruService (line 156) | async function parseFileWithMineruService( function preprocessFile (line 200) | async function preprocessFile( function preprocessLink (line 350) | async function preprocessLink( function constructUserMessage (line 481) | function constructUserMessage( function exportChat (line 538) | async function exportChat(session: Session, scope: ExportChatScope, form... function mergeSettings (line 559) | function mergeSettings( function initEmptyChatSession (line 581) | function initEmptyChatSession(): Omit { function initEmptyPictureSession (line 606) | function initEmptyPictureSession(): Omit { function getSessionMeta (line 619) | function getSessionMeta(session: SessionMeta) { function _searchSessions (line 623) | function _searchSessions(regexp: RegExp, s: Session) { function searchSessions (line 647) | async function searchSessions(searchInput: string, sessionId?: string, o... function getCurrentThreadHistoryHash (line 685) | function getCurrentThreadHistoryHash(s: Session) { function getAllMessageList (line 713) | function getAllMessageList(s: Session) { FILE: src/renderer/stores/settingActions.ts function needEditSetting (line 6) | function needEditSetting() { function getLanguage (line 37) | function getLanguage() { function getProxy (line 41) | function getProxy() { function getLicenseKey (line 45) | function getLicenseKey() { function getLicenseDetail (line 49) | function getLicenseDetail() { function isPaid (line 53) | function isPaid() { function isPro (line 57) | function isPro() { function getRemoteConfig (line 61) | function getRemoteConfig() { function getAutoGenerateTitle (line 66) | function getAutoGenerateTitle() { function getExtensionSettings (line 70) | function getExtensionSettings() { FILE: src/renderer/stores/settingsStore.ts function getPlatformDefaultDocumentParser (line 23) | function getPlatformDefaultDocumentParser(): DocumentParserConfig { type Action (line 27) | type Action = { function useSettingsStore (line 147) | function useSettingsStore(selector: Parameters(selector: Parameters = { class UpdateQueue (line 9) | class UpdateQueue { method constructor (line 14) | constructor( method set (line 19) | set(update: UpdaterFn): Promise { method flush (line 32) | async flush(): Promise { method settleQueue (line 86) | private settleQueue(resolved: { u: QueueItem; s: T }[], rejected: {... FILE: src/renderer/test.tsx function Test (line 1) | function Test(): React.JSX.Element { FILE: src/renderer/utils/base64.ts function decodeBase64 (line 3) | function decodeBase64(str: string) { FILE: src/renderer/utils/image.ts function saveImage (line 4) | async function saveImage(category: string, picBase64: string) { FILE: src/renderer/utils/index.ts function delay (line 1) | function delay(ms: number): Promise { FILE: src/renderer/utils/message.ts function getMessageText (line 5) | function getMessageText(message: Message, includeImagePlaceHolder = true... function migrateMessage (line 27) | function migrateMessage( function cloneMessage (line 76) | function cloneMessage(message: Message): Message { function isEmptyMessage (line 80) | function isEmptyMessage(message: Message): boolean { function countMessageWords (line 84) | function countMessageWords(message: Message): number { function mergeMessages (line 88) | function mergeMessages(a: Message, b: Message): Message { function fixMessageRoleSequence (line 96) | function fixMessageRoleSequence(messages: Message[]): Message[] { function sequenceMessages (line 134) | function sequenceMessages(msgs: Message[]): Message[] { FILE: src/renderer/utils/mobile-request.ts function handleMobileRequest (line 5) | async function handleMobileRequest( FILE: src/renderer/utils/model-tester.ts type TestResult (line 8) | type TestResult = { type ModelTestState (line 13) | type ModelTestState = { type TestModelOptions (line 20) | type TestModelOptions = { constant TEST_IMAGE_BASE64 (line 29) | const TEST_IMAGE_BASE64 = function testModelCapabilities (line 36) | async function testModelCapabilities(options: TestModelOptions): Promise... function testBasicRequest (line 75) | async function testBasicRequest(modelInstance: ModelInterface, state: Mo... function testVisionRequest (line 92) | async function testVisionRequest(modelInstance: ModelInterface, state: M... function testToolUseRequest (line 123) | async function testToolUseRequest(modelInstance: ModelInterface, state: ... FILE: src/renderer/utils/modelLogo.tsx type IconProps (line 25) | interface IconProps { type IconComponent (line 31) | type IconComponent = ComponentType type ModelLogoConfig (line 33) | interface ModelLogoConfig { function getModelLogoConfig (line 110) | function getModelLogoConfig(modelId: string): ModelLogoConfig | undefined { function renderModelIcon (line 130) | function renderModelIcon( FILE: src/renderer/utils/provider-config.ts type ProviderConfig (line 46) | type ProviderConfig = z.infer function parseProviderConfig (line 48) | function parseProviderConfig(json: unknown): ProviderInfo | (ProviderSet... function parseProviderFromJson (line 85) | function parseProviderFromJson( function validateProviderConfig (line 100) | function validateProviderConfig(config: unknown): ProviderConfig | undef... FILE: src/renderer/utils/request.ts type RequestOptions (line 6) | interface RequestOptions { function retryRequest (line 15) | async function retryRequest(fn: () => Promise, retry: number, url:... function buildHeaders (line 41) | function buildHeaders(options: RequestOptions, url: string): Headers { function doRequest (line 53) | async function doRequest(url: string, options: RequestOptions): Promise<... method post (line 81) | async post( method get (line 90) | async get(url: string, headers: Record, options?: Partia... function fetchWithProxy (line 95) | async function fetchWithProxy(input: RequestInfo | URL, init?: RequestIn... FILE: src/renderer/utils/session-utils.ts function migrateSession (line 5) | function migrateSession(session: Session): Session { function sortSessions (line 29) | function sortSessions(sessions: SessionMeta[]): SessionMeta[] { FILE: src/renderer/utils/track.ts function trackEvent (line 1) | function trackEvent(event: string, props: Record = {}) { FILE: src/renderer/variables.ts constant CHATBOX_BUILD_TARGET (line 4) | const CHATBOX_BUILD_TARGET = (process.env.CHATBOX_BUILD_TARGET || 'unkno... constant CHATBOX_BUILD_PLATFORM (line 5) | const CHATBOX_BUILD_PLATFORM = (process.env.CHATBOX_BUILD_PLATFORM || 'u... constant USE_LOCAL_API (line 12) | const USE_LOCAL_API = process.env.USE_LOCAL_API || '' constant USE_BETA_API (line 13) | const USE_BETA_API = process.env.USE_BETA_API || '' constant USE_LOCAL_CHATBOX (line 16) | const USE_LOCAL_CHATBOX = process.env.USE_LOCAL_CHATBOX || '' constant USE_BETA_CHATBOX (line 17) | const USE_BETA_CHATBOX = process.env.USE_BETA_CHATBOX || '' constant NODE_ENV (line 19) | const NODE_ENV = process.env.NODE_ENV || 'development' FILE: src/shared/constants.ts type ContextWindowSize (line 1) | enum ContextWindowSize { FILE: src/shared/defaults.ts function settings (line 4) | function settings(): Settings { function newConfigs (line 144) | function newConfigs(): Config { function getDefaultPrompt (line 148) | function getDefaultPrompt() { function chatSessionSettings (line 152) | function chatSessionSettings(): SessionSettings { function pictureSessionSettings (line 160) | function pictureSessionSettings(): SessionSettings { FILE: src/shared/electron-types.ts type ElectronIPC (line 1) | interface ElectronIPC { FILE: src/shared/file-extensions.ts function isOfficeFilePath (line 3) | function isOfficeFilePath(filePath: string) { function isLegacyOfficeFilePath (line 9) | function isLegacyOfficeFilePath(filePath: string) { function isTextFilePath (line 108) | function isTextFilePath(filePath: string) { function isEpubFilePath (line 114) | function isEpubFilePath(filePath: string) { function isSupportedFile (line 143) | function isSupportedFile(fileName: string): boolean { function getUnsupportedFileType (line 157) | function getUnsupportedFileType(fileName: string): string | null { function getFileAcceptString (line 172) | function getFileAcceptString(): string { function getFileAcceptConfig (line 182) | function getFileAcceptConfig(): Record { FILE: src/shared/models/abstract-ai-sdk.ts constant RETRY_CONFIG (line 35) | const RETRY_CONFIG = { function is5xxError (line 41) | function is5xxError(error: unknown): boolean { type CallSettings (line 61) | interface CallSettings { type ToolExecutionResult (line 68) | interface ToolExecutionResult { method isSupportToolUse (line 79) | public isSupportToolUse() { method isSupportVision (line 82) | public isSupportVision() { method isSupportReasoning (line 85) | public isSupportReasoning() { method isSupportTextEmbedding (line 89) | static isSupportTextEmbedding() { method constructor (line 93) | public constructor( method getImageModel (line 106) | protected getImageModel(): ImageModel | null { method getTextEmbeddingModel (line 110) | protected getTextEmbeddingModel(options: CallChatCompletionOptions): Emb... method isSupportSystemMessage (line 118) | public isSupportSystemMessage() { method getCallSettings (line 122) | protected getCallSettings(_options: CallChatCompletionOptions): CallSett... method chat (line 126) | public async chat(messages: ModelMessage[], options: CallChatCompletionO... method paint (line 158) | public async paint( method addContentPart (line 192) | private addContentPart( method processToolCalls (line 210) | private processToolCalls( method processToolResults (line 231) | private processToolResults( method processToolErrors (line 247) | private processToolErrors( method updateToolResultPart (line 275) | private updateToolResultPart(toolResult: ToolExecutionResult, contentPar... method createOrUpdateContentPart (line 305) | private createOrUpdateContentPart( method handleError (line 435) | private handleError(error: unknown, context: string = ''): never { method finalizeResult (line 456) | private finalizeResult( method handleStreamingCompletion (line 482) | private async handleStreamingCompletion( method _callChatCompletion (line 540) | private async _callChatCompletion( FILE: src/shared/models/errors.ts class BaseError (line 1) | class BaseError extends Error { method constructor (line 3) | constructor(message: string) { class ApiError (line 10) | class ApiError extends BaseError { method constructor (line 13) | constructor(message: string, responseBody?: string) { class NetworkError (line 19) | class NetworkError extends BaseError { method constructor (line 22) | constructor(message: string, host: string) { class AIProviderNoImplementedPaintError (line 28) | class AIProviderNoImplementedPaintError extends BaseError { method constructor (line 30) | constructor(aiProvider: string) { class AIProviderNoImplementedChatError (line 35) | class AIProviderNoImplementedChatError extends BaseError { method constructor (line 37) | constructor(aiProvider: string) { class OCRError (line 42) | class OCRError extends BaseError { method constructor (line 46) | constructor(ocrProvider: string, cause: Error) { class ChatboxAIAPIError (line 58) | class ChatboxAIAPIError extends BaseError { method fromCodeName (line 279) | static fromCodeName(response: string, codeName: string) { method getDetail (line 288) | static getDetail(code: number) { method constructor (line 301) | constructor(message: string, detail: ChatboxAIAPIErrorDetail) { type ChatboxAIAPIErrorDetail (line 308) | interface ChatboxAIAPIErrorDetail { FILE: src/shared/models/openai-compatible.ts type OpenAICompatibleSettings (line 10) | interface OpenAICompatibleSettings { method constructor (line 24) | constructor( method getCallSettings (line 31) | protected getCallSettings() { method isSupportTextEmbedding (line 39) | static isSupportTextEmbedding() { method isSupportToolUse (line 42) | isSupportToolUse(scope?: ToolUseScope) { method getProvider (line 53) | protected getProvider() { method getChatModel (line 62) | protected getChatModel() { method listModels (line 70) | public async listModels(): Promise { type ListModelsResponse (line 85) | interface ListModelsResponse { function fetchRemoteModels (line 118) | async function fetchRemoteModels( FILE: src/shared/models/rerank.ts function rerank (line 6) | async function rerank( FILE: src/shared/models/types.ts type ModelInterface (line 12) | interface ModelInterface { type CallChatCompletionOptions (line 39) | interface CallChatCompletionOptions { type ResultChange (line 49) | interface ResultChange { type OnResultChangeWithCancel (line 58) | type OnResultChangeWithCancel = (data: ResultChange & { cancel?: () => v... type OnResultChange (line 59) | type OnResultChange = (data: ResultChange) => void type OnStatusChange (line 60) | type OnStatusChange = (status: MessageStatus | null) => void FILE: src/shared/models/utils/fetch-proxy.ts function createFetchWithProxy (line 8) | function createFetchWithProxy(useProxy: boolean | undefined, dependencie... FILE: src/shared/providers/definitions/models/azure.ts type Options (line 8) | interface Options { class AzureOpenAI (line 27) | class AzureOpenAI extends AbstractAISDKModel { method constructor (line 30) | constructor(public options: Options, dependencies: ModelDependencies) { method isSupportTextEmbedding (line 34) | static isSupportTextEmbedding() { method getProvider (line 38) | protected getProvider() { method getCallSettings (line 46) | protected getCallSettings() { method getChatModel (line 54) | protected getChatModel() { method getImageModel (line 62) | protected getImageModel() { FILE: src/shared/providers/definitions/models/chatboxai.ts type Options (line 14) | interface Options { type Config (line 29) | interface Config { class ChatboxAI (line 35) | class ChatboxAI extends AbstractAISDKModel implements ModelInterface { method constructor (line 38) | constructor( method chatboxAIFetch (line 47) | private async chatboxAIFetch(url: RequestInfo | URL, options?: Request... method isSupportTextEmbedding (line 51) | static isSupportTextEmbedding() { method getProvider (line 55) | protected getProvider(options: CallChatCompletionOptions) { method getCallSettings (line 85) | protected getCallSettings() { method getChatModel (line 93) | getChatModel(options: CallChatCompletionOptions) { method paint (line 102) | public async paint( method paintWithGemini (line 118) | private async paintWithGemini( method getGoogleProvider (line 168) | private getGoogleProvider(): GoogleGenerativeAIProvider { method paintWithChatboxAPI (line 182) | private async paintWithChatboxAPI( method callImageGeneration (line 206) | private async callImageGeneration( method isSupportSystemMessage (line 241) | isSupportSystemMessage() { method isSupportToolUse (line 250) | public isSupportToolUse() { FILE: src/shared/providers/definitions/models/chatglm.ts type Options (line 4) | interface Options extends OpenAICompatibleSettings {} class ChatGLM (line 6) | class ChatGLM extends OpenAICompatible { method constructor (line 10) | constructor(options: Omit, dependencies: ModelDepe... method listModels (line 30) | public async listModels() { FILE: src/shared/providers/definitions/models/claude.ts type Options (line 9) | interface Options { class Claude (line 19) | class Claude extends AbstractAISDKModel { method constructor (line 22) | constructor(public options: Options, dependencies: ModelDependencies) { method getProvider (line 26) | protected getProvider() { method getChatModel (line 36) | protected getChatModel() { method getCallSettings (line 41) | protected getCallSettings(options: CallChatCompletionOptions): CallSet... method listModels (line 70) | public async listModels(): Promise { FILE: src/shared/providers/definitions/models/custom-claude.ts type Options (line 10) | interface Options { class CustomClaude (line 20) | class CustomClaude extends AbstractAISDKModel { method constructor (line 23) | constructor( method getProvider (line 33) | protected getProvider() { method getChatModel (line 43) | protected getChatModel(_options: CallChatCompletionOptions): LanguageM... method getCallSettings (line 48) | protected getCallSettings(options: CallChatCompletionOptions): CallSet... method listModels (line 73) | public async listModels(): Promise { FILE: src/shared/providers/definitions/models/custom-gemini.ts constant GEMINI_IMAGE_MODELS (line 11) | const GEMINI_IMAGE_MODELS = [ type Options (line 18) | interface Options { class CustomGemini (line 28) | class CustomGemini extends AbstractAISDKModel { method constructor (line 31) | constructor( method isSupportSystemMessage (line 39) | isSupportSystemMessage() { method getProvider (line 48) | protected getProvider() { method getChatModel (line 55) | protected getChatModel(_options: CallChatCompletionOptions): LanguageM... method getCallSettings (line 60) | protected getCallSettings(options: CallChatCompletionOptions): CallSet... method paint (line 106) | public async paint( method listModels (line 152) | async listModels(): Promise { FILE: src/shared/providers/definitions/models/custom-openai-responses.ts type Options (line 11) | interface Options { type FetchFunction (line 23) | type FetchFunction = typeof globalThis.fetch class CustomOpenAIResponses (line 25) | class CustomOpenAIResponses extends AbstractAISDKModel { method constructor (line 28) | constructor( method getCallSettings (line 37) | protected getCallSettings() { method isSupportTextEmbedding (line 46) | static isSupportTextEmbedding() { method getProvider (line 50) | protected getProvider(_options: CallChatCompletionOptions, fetchFuncti... method getChatModel (line 68) | protected getChatModel(options: CallChatCompletionOptions) { method listModels (line 79) | public listModels() { method getImageModel (line 90) | protected getImageModel() { FILE: src/shared/providers/definitions/models/custom-openai.ts type Options (line 11) | interface Options { type FetchFunction (line 23) | type FetchFunction = typeof globalThis.fetch class CustomOpenAI (line 25) | class CustomOpenAI extends AbstractAISDKModel { method constructor (line 28) | constructor(public options: Options, dependencies: ModelDependencies) { method getCallSettings (line 34) | protected getCallSettings() { method isSupportTextEmbedding (line 43) | static isSupportTextEmbedding() { method getProvider (line 47) | protected getProvider(_options: CallChatCompletionOptions, fetchFuncti... method getChatModel (line 66) | protected getChatModel(options: CallChatCompletionOptions) { method listModels (line 77) | public listModels() { method getImageModel (line 88) | protected getImageModel() { FILE: src/shared/providers/definitions/models/deepseek.ts type Options (line 9) | interface Options { class DeepSeek (line 18) | class DeepSeek extends AbstractAISDKModel { method constructor (line 21) | constructor( method getProvider (line 28) | protected getProvider() { method getChatModel (line 34) | protected getChatModel(_options: CallChatCompletionOptions): LanguageM... method getCallSettings (line 39) | protected getCallSettings(_options: CallChatCompletionOptions): CallSe... method isSupportToolUse (line 65) | isSupportToolUse(scope?: ToolUseScope) { method listModels (line 76) | async listModels(): Promise { FILE: src/shared/providers/definitions/models/gemini.ts constant GEMINI_IMAGE_MODELS (line 11) | const GEMINI_IMAGE_MODELS = [ type Options (line 18) | interface Options { class Gemini (line 28) | class Gemini extends AbstractAISDKModel { method constructor (line 31) | constructor(public options: Options, dependencies: ModelDependencies) { method isSupportSystemMessage (line 36) | isSupportSystemMessage() { method getProvider (line 45) | protected getProvider() { method getChatModel (line 52) | protected getChatModel(_options: CallChatCompletionOptions): LanguageM... method getCallSettings (line 58) | protected getCallSettings(options: CallChatCompletionOptions): CallSet... method paint (line 100) | public async paint( method listModels (line 146) | async listModels(): Promise { FILE: src/shared/providers/definitions/models/groq.ts type Options (line 4) | interface Options extends OpenAICompatibleSettings {} class Groq (line 6) | class Groq extends OpenAICompatible { method constructor (line 9) | constructor(options: Omit, dependencies: ModelDepe... FILE: src/shared/providers/definitions/models/lmstudio.ts type Options (line 5) | interface Options extends OpenAICompatibleSettings {} class LMStudio (line 7) | class LMStudio extends OpenAICompatible { method constructor (line 11) | constructor(options: Omit, dependencies: ModelDepen... FILE: src/shared/providers/definitions/models/mistral-ai.ts type Options (line 8) | interface Options { class MistralAI (line 17) | class MistralAI extends AbstractAISDKModel { method constructor (line 20) | constructor( method getCallSettings (line 27) | protected getCallSettings() { method isSupportTextEmbedding (line 41) | static isSupportTextEmbedding() { method getProvider (line 45) | protected getProvider() { method getChatModel (line 57) | protected getChatModel() { method listModels (line 65) | public async listModels(): Promise { FILE: src/shared/providers/definitions/models/ollama.ts type OllamaOptions (line 41) | interface OllamaOptions extends OpenAICompatibleSettings { class Ollama (line 45) | class Ollama extends OpenAICompatible { method constructor (line 49) | constructor(options: Omit, depend... method isSupportToolUse (line 70) | public isSupportToolUse(): boolean { method isSupportVision (line 73) | public isSupportVision(): boolean { FILE: src/shared/providers/definitions/models/openai-responses.ts type Options (line 11) | interface Options { type FetchFunction (line 23) | type FetchFunction = typeof globalThis.fetch class OpenAIResponses (line 25) | class OpenAIResponses extends AbstractAISDKModel { method constructor (line 28) | constructor( method getCallSettings (line 37) | protected getCallSettings() { method isSupportTextEmbedding (line 46) | static isSupportTextEmbedding() { method getProvider (line 50) | protected getProvider(_options: CallChatCompletionOptions, fetchFuncti... method getChatModel (line 68) | protected getChatModel(options: CallChatCompletionOptions) { method listModels (line 79) | public listModels() { method getImageModel (line 90) | protected getImageModel() { FILE: src/shared/providers/definitions/models/openai.ts type Options (line 11) | interface Options { class OpenAI (line 24) | class OpenAI extends AbstractAISDKModel { method constructor (line 28) | constructor(options: Options, dependencies: ModelDependencies) { method isSupportTextEmbedding (line 34) | static isSupportTextEmbedding() { method getProvider (line 38) | protected getProvider() { method getChatModel (line 52) | protected getChatModel() { method getImageModel (line 60) | protected getImageModel(modelId?: string) { method getCallSettings (line 66) | protected getCallSettings(options: CallChatCompletionOptions) { method listModels (line 83) | public listModels() { FILE: src/shared/providers/definitions/models/openrouter.ts type Options (line 8) | interface Options { class OpenRouter (line 17) | class OpenRouter extends AbstractAISDKModel { method constructor (line 20) | constructor( method getCallSettings (line 27) | protected getCallSettings() { method getProvider (line 35) | protected getProvider() { method getChatModel (line 45) | protected getChatModel() { method listModels (line 53) | public async listModels(): Promise { FILE: src/shared/providers/definitions/models/perplexity.ts type Options (line 7) | interface Options { class Perplexity (line 16) | class Perplexity extends AbstractAISDKModel { method constructor (line 19) | constructor(public options: Options, dependencies: ModelDependencies) { method getProvider (line 23) | protected getProvider() { method getChatModel (line 29) | protected getChatModel() { FILE: src/shared/providers/definitions/models/siliconflow.ts type Options (line 5) | interface Options extends OpenAICompatibleSettings {} class SiliconFlow (line 7) | class SiliconFlow extends OpenAICompatible { method constructor (line 10) | constructor(options: Omit, dependencies: ModelDepe... method isSupportToolUse (line 30) | isSupportToolUse(scope?: ToolUseScope) { FILE: src/shared/providers/definitions/models/volcengine.ts type FetchFunction (line 6) | type FetchFunction = typeof globalThis.fetch type Options (line 8) | interface Options { class VolcEngine (line 20) | class VolcEngine extends AbstractAISDKModel { method constructor (line 23) | constructor(public options: Options, dependencies: ModelDependencies) { method getCallSettings (line 27) | protected getCallSettings() { method isSupportTextEmbedding (line 35) | static isSupportTextEmbedding() { method getProvider (line 39) | protected getProvider() { method getChatModel (line 49) | protected getChatModel() { method isSupportToolUse (line 54) | isSupportToolUse(scope?: ToolUseScope) { FILE: src/shared/providers/definitions/models/xai.ts type Options (line 4) | interface Options extends OpenAICompatibleSettings {} class XAI (line 6) | class XAI extends OpenAICompatible { method constructor (line 9) | constructor(options: Omit, dependencies: ModelDepe... FILE: src/shared/providers/index.ts function getProviderSettings (line 48) | function getProviderSettings(setting: SessionSettings, globalSettings: S... function getModelConfig (line 75) | function getModelConfig(settings: SessionSettings, globalSettings: Setti... function getModel (line 103) | function getModel( FILE: src/shared/providers/registry.ts function defineProvider (line 6) | function defineProvider(definition: ProviderDefinitionInput): ProviderDe... function getProviderDefinition (line 14) | function getProviderDefinition(id: string): ProviderDefinition | undefin... function getAllProviders (line 18) | function getAllProviders(): ProviderDefinition[] { function hasProvider (line 22) | function hasProvider(id: string): boolean { function clearProviderRegistry (line 26) | function clearProviderRegistry(): void { function getSystemProviders (line 30) | function getSystemProviders(): BuiltinProviderBaseInfo[] { FILE: src/shared/providers/types.ts type CreateModelConfig (line 10) | interface CreateModelConfig { type ProviderDefinition (line 33) | interface ProviderDefinition { type ProviderDefinitionInput (line 71) | type ProviderDefinitionInput = Omit & { FILE: src/shared/providers/utils.ts function createCustomProviderModel (line 10) | function createCustomProviderModel( FILE: src/shared/request/chatboxai_pool.ts constant API_ORIGIN (line 5) | let API_ORIGIN = 'https://api.chatboxai.app' constant POOL (line 7) | let POOL = [ function isChatboxAPI (line 14) | function isChatboxAPI(input: RequestInfo | URL) { function getChatboxAPIOrigin (line 19) | function getChatboxAPIOrigin() { function testApiOrigins (line 30) | async function testApiOrigins() { FILE: src/shared/request/request.ts type PlatformInfo (line 5) | interface PlatformInfo { function createAfetch (line 12) | function createAfetch(platformInfo: PlatformInfo) { function uploadFile (line 75) | async function uploadFile(file: File, url: string) { type AuthTokens (line 101) | interface AuthTokens { type AuthenticatedAfetchConfig (line 106) | interface AuthenticatedAfetchConfig { function createAuthenticatedAfetch (line 113) | function createAuthenticatedAfetch(config: AuthenticatedAfetchConfig) { FILE: src/shared/types.ts type Updater (line 13) | type Updater = Partial | UpdaterFn type UpdaterFn (line 14) | type UpdaterFn = (data: T | null | undefined) => T type MessageTokenCountResult (line 16) | type MessageTokenCountResult = { id: string; tokenCountMap: TokenCountMa... type SettingWindowTab (line 18) | type SettingWindowTab = 'ai' | 'display' | 'chat' | 'advanced' | 'extens... type ExportChatScope (line 20) | type ExportChatScope = 'all_threads' | 'current_thread' type ExportChatFormat (line 22) | type ExportChatFormat = 'Markdown' | 'TXT' | 'HTML' function isChatSession (line 24) | function isChatSession(session: Session) { function isPictureSession (line 27) | function isPictureSession(session: Session) { function createMessage (line 31) | function createMessage(role: MessageRole = MessageRoleEnum.User, content... type Language (line 40) | type Language = type Config (line 56) | interface Config { type SponsorAd (line 60) | interface SponsorAd { type SponsorAboutBanner (line 65) | interface SponsorAboutBanner { type CopilotDetail (line 74) | interface CopilotDetail { type Toast (line 86) | interface Toast { type RemoteConfig (line 92) | interface RemoteConfig { type ChatboxAIModel (line 103) | type ChatboxAIModel = 'chatboxai-3.5' | 'chatboxai-4' | string function copyMessage (line 105) | function copyMessage(source: Message): Message { function copyMessagesWithMapping (line 113) | function copyMessagesWithMapping(messages: Message[]): { function copyThreads (line 126) | function copyThreads(source?: SessionThread[], idMapping?: Map type ImageGenerationModel (line 12) | type ImageGenerationModel = z.infer type ImageGeneration (line 29) | type ImageGeneration = z.infer type ImageGenerationPage (line 32) | interface ImageGenerationPage { FILE: src/shared/types/mcp.ts type MCPServerConfig (line 1) | type MCPServerConfig = { type MCPTransportConfig (line 8) | type MCPTransportConfig = type MCPServerStatus (line 21) | type MCPServerStatus = { FILE: src/shared/types/provider.ts type ModelProviderEnum (line 4) | enum ModelProviderEnum { type ModelProviderType (line 25) | enum ModelProviderType { FILE: src/shared/types/session.ts type TokenCacheKey (line 11) | type TokenCacheKey = z.infer constant TOKEN_CACHE_KEYS (line 14) | const TOKEN_CACHE_KEYS = TokenCacheKeySchema.enum type TokenCountMap (line 19) | type TokenCountMap = z.infer type TokenCalculatedAt (line 31) | type TokenCalculatedAt = z.infer type MessageRole (line 84) | type MessageRole = (typeof MessageRoleEnum)[keyof typeof MessageRoleEnum] type SearchResultItem (line 286) | type SearchResultItem = z.infer type SearchResult (line 287) | type SearchResult = z.infer type MessageFile (line 288) | type MessageFile = z.infer type MessageLink (line 289) | type MessageLink = z.infer type MessagePicture (line 290) | type MessagePicture = z.infer type MessageTextPart (line 291) | type MessageTextPart = z.infer type MessageImagePart (line 292) | type MessageImagePart = z.infer type MessageInfoPart (line 293) | type MessageInfoPart = z.infer type MessageReasoningPart (line 294) | type MessageReasoningPart = z.infer type MessageToolCallPart (line 295) | type MessageToolCallPart = z.infer type StreamTextResult (line 300) | type StreamTextResult = z.infer type ToolUseScope (line 301) | type ToolUseScope = z.infer type ModelProvider (line 302) | type ModelProvider = z.infer type MessageStatus (line 303) | type MessageStatus = z.infer type Message (line 304) | type Message = z.infer type SessionType (line 305) | type SessionType = z.infer type CompactionPoint (line 306) | type CompactionPoint = z.infer type Session (line 307) | type Session = z.infer type SessionMeta (line 308) | type SessionMeta = z.infer type SessionThread (line 309) | type SessionThread = z.infer type SessionThreadBrief (line 310) | type SessionThreadBrief = z.infer FILE: src/shared/types/settings.ts type DocumentParserType (line 16) | type DocumentParserType = 'none' | 'local' | 'chatbox-ai' | 'mineru' type DocumentParserConfig (line 27) | type DocumentParserConfig = z.infer constant DEFAULT_DOCUMENT_PARSER_CONFIG (line 29) | const DEFAULT_DOCUMENT_PARSER_CONFIG: DocumentParserConfig = { type Theme (line 259) | enum Theme { type ProviderInfo (line 383) | type ProviderInfo = (ProviderBaseInfo | CustomProviderBaseInfo) & Provid... type SessionSettings (line 385) | type SessionSettings = z.infer type Settings (line 386) | type Settings = z.infer type ProviderModelInfo (line 387) | type ProviderModelInfo = z.infer type ProviderBaseInfo (line 388) | type ProviderBaseInfo = z.infer type ProviderSettings (line 389) | type ProviderSettings = z.infer type BuiltinProviderBaseInfo (line 390) | type BuiltinProviderBaseInfo = z.infer type ClaudeParams (line 392) | type ClaudeParams = z.infer type OpenAIParams (line 393) | type OpenAIParams = z.infer type GoogleParams (line 394) | type GoogleParams = z.infer type ProviderOptions (line 395) | type ProviderOptions = z.infer type GlobalSessionSettings (line 396) | type GlobalSessionSettings = z.infer type ChatboxAILicenseDetail (line 397) | type ChatboxAILicenseDetail = z.infer type UnifiedTokenUsageDetail (line 398) | type UnifiedTokenUsageDetail = z.infer type ShortcutToggleWindowValue (line 400) | type ShortcutToggleWindowValue = z.infer type ExtensionSettings (line 403) | type ExtensionSettings = z.infer type MCPTransportConfig (line 404) | type MCPTransportConfig = z.infer type MCPServerConfig (line 405) | type MCPServerConfig = z.infer type MCPSettings (line 406) | type MCPSettings = z.infer FILE: src/shared/utils/cache.ts type CacheItem (line 2) | interface CacheItem { class CrossPlatformStorage (line 14) | class CrossPlatformStorage { method constructor (line 18) | constructor(name: string) { method getItem (line 22) | async getItem(key: string): Promise { method setItem (line 39) | async setItem(key: string, value: string): Promise { method removeItem (line 58) | async removeItem(key: string): Promise { function cacheWithStorage (line 80) | async function cacheWithStorage( function cache (line 145) | async function cache( FILE: src/shared/utils/index.ts function formatNumber (line 7) | function formatNumber(num: number, unit = ''): string { function formatFileSize (line 20) | function formatFileSize(bytes: number): string { FILE: src/shared/utils/json_utils.ts function parseJsonOrEmpty (line 6) | function parseJsonOrEmpty(json: string): any { FILE: src/shared/utils/knowledge-base-model-parser.ts function parseKnowledgeBaseModelString (line 5) | function parseKnowledgeBaseModelString(modelString: string): { providerI... FILE: src/shared/utils/llm_utils.ts function normalizeOpenAIApiHostAndPath (line 3) | function normalizeOpenAIApiHostAndPath( function normalizeOpenAIResponsesHostAndPath (line 69) | function normalizeOpenAIResponsesHostAndPath(options: { apiHost?: string... function normalizeClaudeHost (line 84) | function normalizeClaudeHost(apiHost: string) { function normalizeGeminiHost (line 98) | function normalizeGeminiHost(apiHost: string) { function normalizeAzureEndpoint (line 110) | function normalizeAzureEndpoint(endpoint: string) { function isOpenAICompatible (line 123) | function isOpenAICompatible(providerId: string, _modelId: string) { FILE: src/shared/utils/message.ts function getMessageText (line 5) | function getMessageText(message: Message, includeImagePlaceHolder = true... function migrateMessage (line 27) | function migrateMessage( function cloneMessage (line 76) | function cloneMessage(message: Message): Message { function isEmptyMessage (line 80) | function isEmptyMessage(message: Message): boolean { function countMessageWords (line 84) | function countMessageWords(message: Message): number { function mergeMessages (line 88) | function mergeMessages(a: Message, b: Message): Message { function fixMessageRoleSequence (line 96) | function fixMessageRoleSequence(messages: Message[]): Message[] { function sequenceMessages (line 134) | function sequenceMessages(msgs: Message[]): Message[] { FILE: src/shared/utils/model_settings.ts function getModelSettings (line 3) | function getModelSettings(globalSettings: Settings, providerId: string, ... FILE: src/shared/utils/network_utils.ts function isLocalHost (line 6) | function isLocalHost(url: string): boolean { FILE: src/shared/utils/sentry_adapter.ts type SentryAdapter (line 5) | interface SentryAdapter { type SentryScope (line 10) | interface SentryScope { FILE: src/shared/utils/word_count.ts function countWord (line 18) | function countWord(data: string): number { FILE: test/cases/file-conversation/sample.ts type User (line 9) | interface User { type UserList (line 18) | type UserList = User[]; type OrderStatus (line 21) | enum OrderStatus { class Repository (line 30) | class Repository { method add (line 33) | add(item: T): void { method get (line 37) | get(id: string): T | undefined { method getAll (line 41) | getAll(): T[] { method delete (line 45) | delete(id: string): boolean { method count (line 49) | count(): number { function fetchUserData (line 55) | async function fetchUserData(userId: string): Promise { function createLogger (line 70) | function createLogger(prefix: string) { function calculateTotalPrice (line 77) | function calculateTotalPrice(items: { price: number; quantity: number }[... function formatCurrency (line 81) | function formatCurrency(amount: number, currency: string = 'USD'): string { FILE: test/integration/context-management/context-management.test.ts function createTestMessage (line 38) | function createTestMessage( function createToolCallPart (line 57) | function createToolCallPart(toolName: string, args: unknown = {}): Messa... function createCompactionPoint (line 68) | function createCompactionPoint( function createTestSession (line 80) | function createTestSession( function createTestThread (line 99) | function createTestThread( FILE: test/integration/file-conversation/file-conversation.test.ts constant LICENSE_KEY (line 21) | const LICENSE_KEY = process.env.CHATBOX_LICENSE_KEY || '' constant TEST_OUTPUT_DIR (line 22) | const TEST_OUTPUT_DIR = path.join(__dirname, '../../../test/output/file-... constant TEST_CASES_DIR (line 23) | const TEST_CASES_DIR = path.join(__dirname, '../../../test/cases/file-co... constant TEST_TIMEOUT (line 24) | const TEST_TIMEOUT = Number(process.env.CHATBOX_TEST_TIMEOUT) || 120000 constant DEFAULT_TEST_MODELS (line 28) | const DEFAULT_TEST_MODELS = [ function getTestModels (line 39) | function getTestModels() { constant TEST_MODELS (line 48) | const TEST_MODELS = getTestModels() constant DEFAULT_SYSTEM_PROMPT (line 50) | const DEFAULT_SYSTEM_PROMPT = `You are a helpful AI assistant that can r... type TestCase (line 55) | interface TestCase { type ModelTestResult (line 64) | interface ModelTestResult { type TestReport (line 84) | interface TestReport { function loadTestFile (line 97) | function loadTestFile(fileName: string, fileType: string = 'text/plain')... function getFileType (line 104) | function getFileType(fileName: string): string { constant TEST_CASES (line 116) | const TEST_CASES: TestCase[] = [ function getResponseText (line 196) | function getResponseText(result: TestResult): string { function generateMarkdownReport (line 205) | function generateMarkdownReport(report: TestReport): string { function generateHtmlReport (line 285) | function generateHtmlReport(report: TestReport): string { FILE: test/integration/file-conversation/setup.ts function getTestPlatform (line 79) | function getTestPlatform(): TestPlatform { function resetTestPlatform (line 83) | function resetTestPlatform(): void { FILE: test/integration/file-conversation/test-harness.ts type TestFile (line 23) | interface TestFile { type TestMessage (line 34) | interface TestMessage { type FileConversationTestCase (line 45) | interface FileConversationTestCase { type TestResult (line 60) | interface TestResult { function createUserMessageWithFiles (line 90) | function createUserMessageWithFiles(content: string, files: TestFile[]):... class FileConversationTestContext (line 108) | class FileConversationTestContext { method constructor (line 112) | constructor() { method createModelDependencies (line 121) | async createModelDependencies(): Promise { method loadFiles (line 128) | loadFiles(files: TestFile[]): void { method createMessage (line 137) | createMessage(msg: TestMessage): Message { method clear (line 160) | clear(): void { type TestRunnerOptions (line 168) | interface TestRunnerOptions { class FileConversationTestRunner (line 181) | class FileConversationTestRunner { method constructor (line 186) | constructor(options: TestRunnerOptions) { method runTest (line 199) | async runTest(testCase: FileConversationTestCase): Promise { method runTests (line 357) | async runTests(testCases: FileConversationTestCase[]): Promise { method buildGlobalSettings (line 440) | private buildGlobalSettings(): Settings { method buildSessionSettings (line 454) | private buildSessionSettings(overrides?: Partial): Se... method replacePlatformForTest (line 471) | private async replacePlatformForTest(): Promise { method restorePlatform (line 486) | private async restorePlatform(original: any): Promise { type RunConversationTestOptions (line 493) | interface RunConversationTestOptions { function runConversationTest (line 520) | async function runConversationTest(options: RunConversationTestOptions):... function createTestFile (line 692) | function createTestFile(fileName: string, content: string, fileType: str... function loadTestFileFromDisk (line 704) | function loadTestFileFromDisk(filePath: string, fileType?: string): Test... function detectFileType (line 715) | function detectFileType(fileName: string): string { FILE: test/integration/mocks/model-dependencies.ts function createMockModelDependencies (line 7) | async function createMockModelDependencies( FILE: test/integration/mocks/sentry.ts class MockSentryAdapter (line 2) | class MockSentryAdapter implements SentryAdapter { method captureException (line 5) | captureException(error: any): void { method withScope (line 10) | withScope(callback: (scope: SentryScope) => void): void { method getErrors (line 18) | getErrors(): any[] { method clear (line 22) | clear(): void { FILE: test/integration/model-provider/model-provider.test.ts function keyEnv (line 28) | function keyEnv(providerName: string): string { constant PROVIDER_TEST_MODELS (line 32) | const PROVIDER_TEST_MODELS: Record = { function runProviderTest (line 77) | function runProviderTest(providerName: ModelProviderEnum) {