SYMBOL INDEX (1297 symbols across 336 files) FILE: public/generate-icons.js function createIconSVG (line 8) | function createIconSVG(size) { FILE: public/sw.js constant CACHE_NAME (line 2) | const CACHE_NAME = 'claude-ui-v1'; FILE: scripts/fix-node-pty.js function fixSpawnHelper (line 38) | async function fixSpawnHelper() { FILE: server/claude-sdk.js constant TOOL_APPROVAL_TIMEOUT_MS (line 33) | const TOOL_APPROVAL_TIMEOUT_MS = parseInt(process.env.CLAUDE_TOOL_APPROV... constant TOOLS_REQUIRING_INTERACTION (line 35) | const TOOLS_REQUIRING_INTERACTION = new Set(['AskUserQuestion']); function createRequestId (line 37) | function createRequestId() { function waitForToolApproval (line 44) | function waitForToolApproval(requestId, options = {}) { function resolveToolApproval (line 100) | function resolveToolApproval(requestId, decision) { function matchesToolPermission (line 111) | function matchesToolPermission(entry, toolName, input) { function mapCliOptionsToSDK (line 146) | function mapCliOptionsToSDK(options = {}) { function addSession (line 225) | function addSession(sessionId, queryInstance, tempImagePaths = [], tempD... function removeSession (line 240) | function removeSession(sessionId) { function getSession (line 249) | function getSession(sessionId) { function getAllSessions (line 257) | function getAllSessions() { function transformMessage (line 266) | function transformMessage(sdkMessage) { function extractTokenBudget (line 282) | function extractTokenBudget(resultMessage) { function handleImages (line 325) | async function handleImages(command, images, cwd) { function cleanupTempFiles (line 378) | async function cleanupTempFiles(tempImagePaths, tempDir) { function loadMcpConfig (line 409) | async function loadMcpConfig(cwd) { function queryClaudeSDK (line 468) | async function queryClaudeSDK(command, options = {}, ws) { function abortClaudeSDKSession (line 723) | async function abortClaudeSDKSession(sessionId) { function isClaudeSDKSessionActive (line 758) | function isClaudeSDKSessionActive(sessionId) { function getActiveClaudeSDKSessions (line 767) | function getActiveClaudeSDKSessions() { function getPendingApprovalsForSession (line 776) | function getPendingApprovalsForSession(sessionId) { function reconnectSessionWriter (line 800) | function reconnectSessionWriter(sessionId, newRawWs) { FILE: server/cli.js function loadEnvFile (line 56) | function loadEnvFile() { function getDatabasePath (line 75) | function getDatabasePath() { function getInstallDir (line 81) | function getInstallDir() { function showStatus (line 86) | function showStatus() { function showHelp (line 141) | function showHelp() { function showVersion (line 187) | function showVersion() { function isNewerVersion (line 192) | function isNewerVersion(v1, v2) { function checkForUpdates (line 203) | async function checkForUpdates(silent = false) { function updatePackage (line 226) | async function updatePackage() { function startServer (line 248) | async function startServer() { function parseArgs (line 257) | function parseArgs(args) { function main (line 284) | async function main() { FILE: server/constants/config.js constant IS_PLATFORM (line 5) | const IS_PLATFORM = process.env.VITE_IS_PLATFORM === 'true'; FILE: server/cursor-cli.js constant WORKSPACE_TRUST_PATTERNS (line 12) | const WORKSPACE_TRUST_PATTERNS = [ function isWorkspaceTrustPrompt (line 19) | function isWorkspaceTrustPrompt(text = '') { function spawnCursor (line 27) | async function spawnCursor(command, options = {}, ws) { function abortCursorSession (line 311) | function abortCursorSession(sessionId) { function isCursorSessionActive (line 322) | function isCursorSessionActive(sessionId) { function getActiveCursorSessions (line 326) | function getActiveCursorSessions() { FILE: server/database/db.js constant DB_PATH (line 26) | const DB_PATH = process.env.DATABASE_PATH || path.join(__dirname, 'auth.... constant INIT_SQL_PATH (line 27) | const INIT_SQL_PATH = path.join(__dirname, 'init.sql'); constant LEGACY_DB_PATH (line 44) | const LEGACY_DB_PATH = path.join(__dirname, 'auth.db'); constant DEFAULT_NOTIFICATION_PREFERENCES (line 408) | const DEFAULT_NOTIFICATION_PREFERENCES = { function applyCustomSessionNames (line 558) | function applyCustomSessionNames(sessions, provider) { FILE: server/database/init.sql type users (line 5) | CREATE TABLE IF NOT EXISTS users ( type idx_users_username (line 18) | CREATE INDEX IF NOT EXISTS idx_users_username ON users(username) type idx_users_active (line 19) | CREATE INDEX IF NOT EXISTS idx_users_active ON users(is_active) type api_keys (line 22) | CREATE TABLE IF NOT EXISTS api_keys ( type idx_api_keys_key (line 33) | CREATE INDEX IF NOT EXISTS idx_api_keys_key ON api_keys(api_key) type idx_api_keys_user_id (line 34) | CREATE INDEX IF NOT EXISTS idx_api_keys_user_id ON api_keys(user_id) type idx_api_keys_active (line 35) | CREATE INDEX IF NOT EXISTS idx_api_keys_active ON api_keys(is_active) type user_credentials (line 38) | CREATE TABLE IF NOT EXISTS user_credentials ( type idx_user_credentials_user_id (line 50) | CREATE INDEX IF NOT EXISTS idx_user_credentials_user_id ON user_credenti... type idx_user_credentials_type (line 51) | CREATE INDEX IF NOT EXISTS idx_user_credentials_type ON user_credentials... type idx_user_credentials_active (line 52) | CREATE INDEX IF NOT EXISTS idx_user_credentials_active ON user_credentia... type user_notification_preferences (line 55) | CREATE TABLE IF NOT EXISTS user_notification_preferences ( type vapid_keys (line 63) | CREATE TABLE IF NOT EXISTS vapid_keys ( type push_subscriptions (line 71) | CREATE TABLE IF NOT EXISTS push_subscriptions ( type session_names (line 82) | CREATE TABLE IF NOT EXISTS session_names ( type idx_session_names_lookup (line 92) | CREATE INDEX IF NOT EXISTS idx_session_names_lookup ON session_names(ses... type app_config (line 95) | CREATE TABLE IF NOT EXISTS app_config ( FILE: server/gemini-cli.js function spawnGemini (line 16) | async function spawnGemini(command, options = {}, ws) { function abortGeminiSession (line 407) | function abortGeminiSession(sessionId) { function isGeminiSessionActive (line 440) | function isGeminiSessionActive(sessionId) { function getActiveGeminiSessions (line 444) | function getActiveGeminiSessions() { FILE: server/gemini-response-handler.js class GeminiResponseHandler (line 4) | class GeminiResponseHandler { method constructor (line 5) | constructor(ws, options = {}) { method processData (line 15) | processData(data) { method handleEvent (line 36) | handleEvent(event) { method forceFlush (line 65) | forceFlush() { method destroy (line 74) | destroy() { FILE: server/index.js constant VALID_PROVIDERS (line 77) | const VALID_PROVIDERS = ['claude', 'codex', 'cursor', 'gemini']; constant PROVIDER_WATCH_PATHS (line 80) | const PROVIDER_WATCH_PATHS = [ constant WATCHER_IGNORED_PATTERNS (line 87) | const WATCHER_IGNORED_PATTERNS = [ constant WATCHER_DEBOUNCE_MS (line 96) | const WATCHER_DEBOUNCE_MS = 300; function broadcastProgress (line 103) | function broadcastProgress(progress) { function setupProjectsWatcher (line 116) | async function setupProjectsWatcher() { constant PTY_SESSION_TIMEOUT (line 227) | const PTY_SESSION_TIMEOUT = 30 * 60 * 1000; constant SHELL_URL_PARSE_BUFFER_LIMIT (line 228) | const SHELL_URL_PARSE_BUFFER_LIMIT = 32768; constant ANSI_ESCAPE_SEQUENCE_REGEX (line 229) | const ANSI_ESCAPE_SEQUENCE_REGEX = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]... constant TRAILING_URL_PUNCTUATION_REGEX (line 230) | const TRAILING_URL_PUNCTUATION_REGEX = /[)\]}>.,;:!?]+$/; function stripAnsiSequences (line 232) | function stripAnsiSequences(value = '') { function normalizeDetectedUrl (line 236) | function normalizeDetectedUrl(url) { function extractUrlsFromText (line 253) | function extractUrlsFromText(value = '') { function shouldAutoOpenUrlFromOutput (line 281) | function shouldAutoOpenUrlFromOutput(value = '') { function validatePathInProject (line 958) | function validatePathInProject(projectRoot, targetPath) { function validateFilename (line 974) | function validateFilename(name) { function handlePluginWsProxy (line 1382) | function handlePluginWsProxy(clientWs, pathname) { class WebSocketWriter (line 1450) | class WebSocketWriter { method constructor (line 1451) | constructor(ws, userId = null) { method send (line 1458) | send(data) { method updateWebSocket (line 1464) | updateWebSocket(newRawWs) { method setSessionId (line 1468) | setSessionId(sessionId) { method getSessionId (line 1472) | getSessionId() { function handleChatConnection (line 1478) | function handleChatConnection(ws, request) { function handleShellConnection (line 1626) | function handleShellConnection(ws) { function permToRwx (line 2431) | function permToRwx(perm) { function getFileTree (line 2438) | async function getFileTree(dirPath, maxDepth = 3, currentDepth = 0, show... constant SERVER_PORT (line 2514) | const SERVER_PORT = process.env.SERVER_PORT || 3001; constant HOST (line 2515) | const HOST = process.env.HOST || '0.0.0.0'; constant DISPLAY_HOST (line 2516) | const DISPLAY_HOST = getConnectableHost(HOST); constant VITE_PORT (line 2517) | const VITE_PORT = process.env.VITE_PORT || 5173; function startServer (line 2520) | async function startServer() { FILE: server/middleware/auth.js constant JWT_SECRET (line 6) | const JWT_SECRET = process.env.JWT_SECRET || appConfigDb.getOrCreateJwtS... FILE: server/openai-codex.js function transformCodexEvent (line 29) | function transformCodexEvent(event) { function mapPermissionModeToCodexOptions (line 167) | function mapPermissionModeToCodexOptions(permissionMode) { function queryCodex (line 194) | async function queryCodex(command, options = {}, ws) { function abortCodexSession (line 339) | function abortCodexSession(sessionId) { function isCodexSessionActive (line 361) | function isCodexSessionActive(sessionId) { function getActiveCodexSessions (line 370) | function getActiveCodexSessions() { function sendMessage (line 391) | function sendMessage(ws, data) { FILE: server/projects.js function detectTaskMasterFolder (line 72) | async function detectTaskMasterFolder(projectPath) { function clearProjectDirectoryCache (line 203) | function clearProjectDirectoryCache() { function loadProjectConfig (line 208) | async function loadProjectConfig() { function saveProjectConfig (line 220) | async function saveProjectConfig(config) { function generateDisplayName (line 237) | async function generateDisplayName(projectName, actualProjectDir = null) { function extractProjectDirectory (line 266) | async function extractProjectDirectory(projectName) { function getProjects (line 384) | async function getProjects(progressCallback = null) { function getSessions (line 644) | async function getSessions(projectName, limit = 5, offset = 0) { function parseJsonlSessions (line 772) | async function parseJsonlSessions(filePath) { function parseAgentTools (line 926) | async function parseAgentTools(filePath) { function getSessionMessages (line 983) | async function getSessionMessages(projectName, sessionId, limit = null, ... function renameProject (line 1084) | async function renameProject(projectName, newDisplayName) { function deleteSession (line 1105) | async function deleteSession(projectName, sessionId) { function isProjectEmpty (line 1157) | async function isProjectEmpty(projectName) { function deleteProject (line 1168) | async function deleteProject(projectName, force = false) { function addProjectManually (line 1225) | async function addProjectManually(projectPath, displayName = null) { function getCursorSessions (line 1274) | async function getCursorSessions(projectPath) { function normalizeComparablePath (line 1385) | function normalizeComparablePath(inputPath) { function findCodexJsonlFiles (line 1403) | async function findCodexJsonlFiles(dir) { function buildCodexSessionsIndex (line 1423) | async function buildCodexSessionsIndex() { function getCodexSessions (line 1476) | async function getCodexSessions(projectPath, options = {}) { function isVisibleCodexUserMessage (line 1500) | function isVisibleCodexUserMessage(payload) { function parseCodexSessionFile (line 1518) | async function parseCodexSessionFile(filePath) { function getCodexSessionMessages (line 1590) | async function getCodexSessionMessages(sessionId, limit = null, offset =... function deleteCodexSession (line 1835) | async function deleteCodexSession(sessionId) { function searchConversations (line 1872) | async function searchConversations(query, limit = 50, onProjectResult = ... function searchCodexSessionsForProject (line 2142) | async function searchCodexSessionsForProject( function searchGeminiSessionsForProject (line 2247) | async function searchGeminiSessionsForProject( function getGeminiCliSessions (line 2411) | async function getGeminiCliSessions(projectPath) { function getGeminiCliSessionMessages (line 2487) | async function getGeminiCliSessionMessages(sessionId) { FILE: server/providers/claude/adapter.js constant PROVIDER (line 12) | const PROVIDER = 'claude'; function normalizeMessage (line 22) | function normalizeMessage(raw, sessionId) { method fetchHistory (line 213) | async fetchHistory(sessionId, opts = {}) { FILE: server/providers/codex/adapter.js constant PROVIDER (line 11) | const PROVIDER = 'codex'; function normalizeCodexHistoryEntry (line 19) | function normalizeCodexHistoryEntry(raw, sessionId) { function normalizeMessage (line 110) | function normalizeMessage(raw, sessionId) { method fetchHistory (line 203) | async fetchHistory(sessionId, opts = {}) { FILE: server/providers/cursor/adapter.js constant PROVIDER (line 13) | const PROVIDER = 'cursor'; function loadCursorBlobs (line 22) | async function loadCursorBlobs(sessionId, projectPath) { function normalizeMessage (line 143) | function normalizeMessage(raw, sessionId) { method fetchHistory (line 163) | async fetchHistory(sessionId, opts = {}) { method normalizeCursorBlobs (line 203) | normalizeCursorBlobs(blobs, sessionId) { FILE: server/providers/gemini/adapter.js constant PROVIDER (line 12) | const PROVIDER = 'gemini'; function normalizeMessage (line 21) | function normalizeMessage(raw, sessionId) { method fetchHistory (line 85) | async fetchHistory(sessionId, opts = {}) { FILE: server/providers/registry.js function getProvider (line 34) | function getProvider(name) { function getAllProviders (line 42) | function getAllProviders() { FILE: server/providers/types.js function generateMessageId (line 102) | function generateMessageId(prefix = 'msg') { function createNormalizedMessage (line 111) | function createNormalizedMessage(fields) { FILE: server/providers/utils.js constant INTERNAL_CONTENT_PREFIXES (line 11) | const INTERNAL_CONTENT_PREFIXES = Object.freeze([ function isInternalContent (line 27) | function isInternalContent(content) { FILE: server/routes/agent.js function getGitRemoteUrl (line 69) | async function getGitRemoteUrl(repoPath) { function normalizeGitHubUrl (line 106) | function normalizeGitHubUrl(url) { function parseGitHubUrl (line 121) | function parseGitHubUrl(url) { function autogenerateBranchName (line 139) | function autogenerateBranchName(message) { function validateBranchName (line 188) | function validateBranchName(branchName) { function getCommitMessages (line 227) | async function getCommitMessages(projectPath, limit = 5) { function createGitHubBranch (line 269) | async function createGitHubBranch(octokit, owner, repo, branchName, base... function createGitHubPR (line 309) | async function createGitHubPR(octokit, owner, repo, branchName, title, b... function cloneGitHubRepo (line 334) | async function cloneGitHubRepo(githubUrl, githubToken = null, projectPat... function cleanupProject (line 421) | async function cleanupProject(projectPath, sessionId = null) { class SSEStreamWriter (line 452) | class SSEStreamWriter { method constructor (line 453) | constructor(res, userId = null) { method send (line 460) | send(data) { method end (line 469) | end() { method setSessionId (line 476) | setSessionId(sessionId) { method getSessionId (line 480) | getSessionId() { class ResponseCollector (line 488) | class ResponseCollector { method constructor (line 489) | constructor(userId = null) { method send (line 495) | send(data) { method end (line 514) | end() { method setSessionId (line 518) | setSessionId(sessionId) { method getSessionId (line 522) | getSessionId() { method getMessages (line 526) | getMessages() { method getAssistantMessages (line 533) | getAssistantMessages() { method getTotalTokens (line 562) | getTotalTokens() { FILE: server/routes/cli-auth.js function loadClaudeSettingsEnv (line 99) | async function loadClaudeSettingsEnv() { function checkClaudeCredentials (line 136) | async function checkClaudeCredentials() { function checkCursorStatus (line 204) | function checkCursorStatus() { function checkCodexCredentials (line 297) | async function checkCodexCredentials() { function checkGeminiCredentials (line 360) | async function checkGeminiCredentials() { FILE: server/routes/codex.js function createCliResponder (line 12) | function createCliResponder(res) { function parseCodexListOutput (line 277) | function parseCodexListOutput(output) { function parseCodexGetOutput (line 307) | function parseCodexGetOutput(output) { FILE: server/routes/commands.js function scanCommandsDirectory (line 21) | async function scanCommandsDirectory(dir, baseDir, namespace) { FILE: server/routes/cursor.js function visit (line 657) | function visit(nodeId) { FILE: server/routes/git.js constant COMMIT_DIFF_CHARACTER_LIMIT (line 10) | const COMMIT_DIFF_CHARACTER_LIMIT = 500_000; function spawnAsync (line 12) | function spawnAsync(command, args, options = {}) { function validateCommitRef (line 50) | function validateCommitRef(commit) { function validateBranchName (line 58) | function validateBranchName(branch) { function validateFilePath (line 65) | function validateFilePath(file, projectPath) { function validateRemoteName (line 81) | function validateRemoteName(remote) { function validateProjectPath (line 88) | function validateProjectPath(projectPath) { function getActualProjectPath (line 105) | async function getActualProjectPath(projectName) { function stripDiffHeaders (line 117) | function stripDiffHeaders(diff) { function validateGitRepository (line 146) | async function validateGitRepository(projectPath) { function getGitErrorDetails (line 169) | function getGitErrorDetails(error) { function isMissingHeadRevisionError (line 173) | function isMissingHeadRevisionError(error) { function getCurrentBranchName (line 181) | async function getCurrentBranchName(projectPath) { function repositoryHasCommits (line 197) | async function repositoryHasCommits(projectPath) { function getRepositoryRootPath (line 209) | async function getRepositoryRootPath(projectPath) { function normalizeRepositoryRelativeFilePath (line 214) | function normalizeRepositoryRelativeFilePath(filePath) { function parseStatusFilePaths (line 222) | function parseStatusFilePaths(statusOutput) { function buildFilePathCandidates (line 235) | function buildFilePathCandidates(projectPath, repositoryRootPath, filePa... function resolveRepositoryFilePath (line 251) | async function resolveRepositoryFilePath(projectPath, filePath) { function generateCommitMessageWithAI (line 915) | async function generateCommitMessageWithAI(files, diffContext, provider,... function cleanCommitMessage (line 1015) | function cleanCommitMessage(text) { FILE: server/routes/mcp.js function parseClaudeListOutput (line 468) | function parseClaudeListOutput(output) { function parseClaudeGetOutput (line 520) | function parseClaudeGetOutput(output) { FILE: server/routes/projects.js function sanitizeGitError (line 10) | function sanitizeGitError(message, token) { constant WORKSPACES_ROOT (line 16) | const WORKSPACES_ROOT = process.env.WORKSPACES_ROOT || os.homedir(); constant FORBIDDEN_PATHS (line 19) | const FORBIDDEN_PATHS = [ function validateWorkspacePath (line 51) | async function validateWorkspacePath(requestedPath) { function getGithubTokenById (line 313) | async function getGithubTokenById(tokenId, userId) { function cloneGitHubRepository (line 484) | function cloneGitHubRepository(githubUrl, destinationPath, githubToken =... FILE: server/routes/taskmaster.js function checkTaskMasterInstallation (line 32) | async function checkTaskMasterInstallation() { function detectTaskMasterFolder (line 108) | async function detectTaskMasterFolder(projectPath) { function getAvailableTemplates (line 1924) | async function getAvailableTemplates() { FILE: server/routes/user.js function spawnAsync (line 9) | function spawnAsync(command, args, options = {}) { FILE: server/services/notification-orchestrator.js constant KIND_TO_PREF_KEY (line 4) | const KIND_TO_PREF_KEY = { constant PROVIDER_LABELS (line 10) | const PROVIDER_LABELS = { constant DEDUPE_WINDOW_MS (line 19) | const DEDUPE_WINDOW_MS = 20000; function shouldSendPush (line 30) | function shouldSendPush(preferences, event) { function isDuplicate (line 38) | function isDuplicate(event) { function createNotificationEvent (line 48) | function createNotificationEvent({ function normalizeErrorMessage (line 71) | function normalizeErrorMessage(error) { function normalizeSessionName (line 87) | function normalizeSessionName(sessionName) { function resolveSessionName (line 100) | function resolveSessionName(event) { function buildPushBody (line 113) | function buildPushBody(event) { function sendWebPush (line 140) | async function sendWebPush(userId, event) { function notifyUserIfEnabled (line 172) | function notifyUserIfEnabled({ userId, event }) { function notifyRunStopped (line 190) | function notifyRunStopped({ userId, provider, sessionId = null, stopReas... function notifyRunFailed (line 205) | function notifyRunFailed({ userId, provider, sessionId = null, error, se... FILE: server/services/vapid-keys.js function ensureVapidKeys (line 6) | function ensureVapidKeys() { function getPublicKey (line 21) | function getPublicKey() { function configureWebPush (line 25) | function configureWebPush() { FILE: server/sessionManager.js class SessionManager (line 5) | class SessionManager { method constructor (line 6) | constructor() { method init (line 14) | async init() { method initSessionsDir (line 19) | async initSessionsDir() { method createSession (line 28) | createSession(sessionId, projectPath) { method addMessage (line 50) | addMessage(sessionId, role, content) { method getSession (line 73) | getSession(sessionId) { method getProjectSessions (line 78) | getProjectSessions(projectPath) { method getSessionSummary (line 98) | getSessionSummary(session) { method buildConversationContext (line 114) | buildConversationContext(sessionId, maxMessages = 10) { method _safeFilePath (line 140) | _safeFilePath(sessionId) { method saveSession (line 146) | async saveSession(sessionId) { method loadSessions (line 159) | async loadSessions() { method deleteSession (line 195) | async deleteSession(sessionId) { method getSessionMessages (line 207) | getSessionMessages(sessionId) { FILE: server/utils/commandParser.js constant MAX_INCLUDE_DEPTH (line 11) | const MAX_INCLUDE_DEPTH = 3; constant BASH_TIMEOUT (line 12) | const BASH_TIMEOUT = 30000; constant BASH_COMMAND_ALLOWLIST (line 13) | const BASH_COMMAND_ALLOWLIST = [ function parseCommand (line 33) | function parseCommand(content) { function replaceArguments (line 52) | function replaceArguments(content, args) { function isPathSafe (line 80) | function isPathSafe(filePath, basePath) { function processFileIncludes (line 98) | async function processFileIncludes(content, basePath, depth = 0) { function validateCommand (line 150) | function validateCommand(commandString) { function isBashCommandAllowed (line 219) | function isBashCommandAllowed(command) { function sanitizeOutput (line 229) | function sanitizeOutput(output) { function processBashCommands (line 250) | async function processBashCommands(content, options = {}) { FILE: server/utils/frontmatter.js function parseFrontmatter (line 16) | function parseFrontmatter(content) { FILE: server/utils/gitConfig.js function spawnAsync (line 3) | function spawnAsync(command, args) { function getSystemGitConfig (line 20) | async function getSystemGitConfig() { FILE: server/utils/mcp-detector.js function detectTaskMasterMCPServer (line 18) | async function detectTaskMasterMCPServer() { function getAllMCPServers (line 152) | async function getAllMCPServers() { FILE: server/utils/plugin-loader.js constant PLUGINS_DIR (line 6) | const PLUGINS_DIR = path.join(os.homedir(), '.claude-code-ui', 'plugins'); constant PLUGINS_CONFIG_PATH (line 7) | const PLUGINS_CONFIG_PATH = path.join(os.homedir(), '.claude-code-ui', '... constant REQUIRED_MANIFEST_FIELDS (line 9) | const REQUIRED_MANIFEST_FIELDS = ['name', 'displayName', 'entry']; function sanitizeRepoUrl (line 12) | function sanitizeRepoUrl(raw) { constant ALLOWED_TYPES (line 23) | const ALLOWED_TYPES = ['react', 'module']; constant ALLOWED_SLOTS (line 24) | const ALLOWED_SLOTS = ['tab']; function getPluginsDir (line 26) | function getPluginsDir() { function getPluginsConfig (line 33) | function getPluginsConfig() { function savePluginsConfig (line 44) | function savePluginsConfig(config) { function validateManifest (line 52) | function validateManifest(manifest) { constant BUILD_TIMEOUT_MS (line 96) | const BUILD_TIMEOUT_MS = 60_000; function runBuildIfNeeded (line 99) | function runBuildIfNeeded(dir, packageJsonPath, onSuccess, onError) { function scanPlugins (line 145) | function scanPlugins() { function getPluginDir (line 225) | function getPluginDir(name) { function resolvePluginAssetPath (line 232) | function resolvePluginAssetPath(name, assetPath) { function installPluginFromGit (line 250) | function installPluginFromGit(url) { function updatePluginFromGit (line 370) | function updatePluginFromGit(name) { function uninstallPlugin (line 430) | async function uninstallPlugin(name) { FILE: server/utils/plugin-process-manager.js function startPluginServer (line 15) | function startPluginServer(name, pluginDir, serverEntry) { function stopPluginServer (line 111) | function stopPluginServer(name) { function getPluginPort (line 141) | function getPluginPort(name) { function isPluginRunning (line 148) | function isPluginRunning(name) { function stopAllPlugins (line 155) | function stopAllPlugins() { function startEnabledPluginServers (line 167) | async function startEnabledPluginServers() { FILE: server/utils/taskmaster-websocket.js function broadcastTaskMasterProjectUpdate (line 15) | function broadcastTaskMasterProjectUpdate(wss, projectName, taskMasterDa... function broadcastTaskMasterTasksUpdate (line 46) | function broadcastTaskMasterTasksUpdate(wss, projectName, tasksData) { function broadcastMCPStatusChange (line 76) | function broadcastMCPStatusChange(wss, mcpStatus) { function broadcastTaskMasterUpdate (line 106) | function broadcastTaskMasterUpdate(wss, updateType, data = {}) { FILE: shared/modelConstants.js constant CLAUDE_MODELS (line 13) | const CLAUDE_MODELS = { constant CURSOR_MODELS (line 29) | const CURSOR_MODELS = { constant CODEX_MODELS (line 58) | const CODEX_MODELS = { constant GEMINI_MODELS (line 75) | const GEMINI_MODELS = { FILE: shared/networkHosts.js function isWildcardHost (line 1) | function isWildcardHost(host) { function isLoopbackHost (line 5) | function isLoopbackHost(host) { function normalizeLoopbackHost (line 9) | function normalizeLoopbackHost(host) { function getConnectableHost (line 17) | function getConnectableHost(host) { FILE: src/App.tsx function App (line 12) | function App() { FILE: src/components/app/AppContent.tsx function AppContent (line 12) | function AppContent() { FILE: src/components/app/MobileNav.tsx constant PLUGIN_ICON_MAP (line 23) | const PLUGIN_ICON_MAP: Record = { type CoreTabId (line 27) | type CoreTabId = Exclude; type CoreNavItem (line 28) | type CoreNavItem = { type MobileNavProps (line 34) | type MobileNavProps = { function MobileNav (line 40) | function MobileNav({ activeTab, setActiveTab, isInputFocused }: MobileNa... FILE: src/components/auth/constants.ts constant AUTH_TOKEN_STORAGE_KEY (line 1) | const AUTH_TOKEN_STORAGE_KEY = 'auth-token'; constant AUTH_ERROR_MESSAGES (line 3) | const AUTH_ERROR_MESSAGES = { FILE: src/components/auth/context/AuthContext.tsx function useAuth (line 28) | function useAuth(): AuthContextValue { function AuthProvider (line 37) | function AuthProvider({ children }: AuthProviderProps) { FILE: src/components/auth/types.ts type AuthUser (line 3) | type AuthUser = { type AuthActionResult (line 9) | type AuthActionResult = { success: true } | { success: false; error: str... type AuthSessionPayload (line 11) | type AuthSessionPayload = { type AuthStatusPayload (line 18) | type AuthStatusPayload = { type AuthUserPayload (line 22) | type AuthUserPayload = { type OnboardingStatusPayload (line 26) | type OnboardingStatusPayload = { type ApiErrorPayload (line 30) | type ApiErrorPayload = { type AuthContextValue (line 35) | type AuthContextValue = { type AuthProviderProps (line 48) | type AuthProviderProps = { FILE: src/components/auth/utils.ts function parseJsonSafely (line 3) | async function parseJsonSafely(response: Response): Promise { function resolveApiErrorMessage (line 11) | function resolveApiErrorMessage(payload: ApiErrorPayload | null, fallbac... FILE: src/components/auth/view/AuthErrorAlert.tsx type AuthErrorAlertProps (line 1) | type AuthErrorAlertProps = { function AuthErrorAlert (line 5) | function AuthErrorAlert({ errorMessage }: AuthErrorAlertProps) { FILE: src/components/auth/view/AuthInputField.tsx type AuthInputFieldProps (line 1) | type AuthInputFieldProps = { function AuthInputField (line 19) | function AuthInputField({ FILE: src/components/auth/view/AuthLoadingScreen.tsx function AuthLoadingScreen (line 5) | function AuthLoadingScreen() { FILE: src/components/auth/view/AuthScreenLayout.tsx type AuthScreenLayoutProps (line 4) | type AuthScreenLayoutProps = { function AuthScreenLayout (line 12) | function AuthScreenLayout({ FILE: src/components/auth/view/LoginForm.tsx type LoginFormState (line 9) | type LoginFormState = { function LoginForm (line 24) | function LoginForm() { FILE: src/components/auth/view/ProtectedRoute.tsx type ProtectedRouteProps (line 9) | type ProtectedRouteProps = { function ProtectedRoute (line 13) | function ProtectedRoute({ children }: ProtectedRouteProps) { FILE: src/components/auth/view/SetupForm.tsx type SetupFormState (line 8) | type SetupFormState = { function validateSetupForm (line 25) | function validateSetupForm(formState: SetupFormState): string | null { function SetupForm (line 51) | function SetupForm() { FILE: src/components/chat/hooks/useChatComposerState.ts type PendingViewSession (line 27) | type PendingViewSession = { type UseChatComposerStateArgs (line 32) | interface UseChatComposerStateArgs { type MentionableFile (line 65) | interface MentionableFile { type CommandExecutionResult (line 70) | interface CommandExecutionResult { function useChatComposerState (line 104) | function useChatComposerState({ FILE: src/components/chat/hooks/useChatMessages.ts function normalizedToChatMessages (line 17) | function normalizedToChatMessages(messages: NormalizedMessage[]): ChatMe... FILE: src/components/chat/hooks/useChatProviderState.ts type UseChatProviderStateArgs (line 7) | interface UseChatProviderStateArgs { function useChatProviderState (line 11) | function useChatProviderState({ selectedSession }: UseChatProviderStateA... FILE: src/components/chat/hooks/useChatRealtimeHandlers.ts type PendingViewSession (line 7) | type PendingViewSession = { type LatestChatMessage (line 12) | type LatestChatMessage = { type UseChatRealtimeHandlersArgs (line 49) | interface UseChatRealtimeHandlersArgs { function useChatRealtimeHandlers (line 78) | function useChatRealtimeHandlers({ FILE: src/components/chat/hooks/useChatSessionState.ts constant MESSAGES_PER_PAGE (line 10) | const MESSAGES_PER_PAGE = 20; constant INITIAL_VISIBLE_MESSAGES (line 11) | const INITIAL_VISIBLE_MESSAGES = 100; type PendingViewSession (line 13) | type PendingViewSession = { type UseChatSessionStateArgs (line 18) | interface UseChatSessionStateArgs { type ScrollRestoreState (line 31) | interface ScrollRestoreState { function chatMessageToNormalized (line 40) | function chatMessageToNormalized( function useChatSessionState (line 91) | function useChatSessionState({ FILE: src/components/chat/hooks/useFileMentions.tsx type ProjectFileNode (line 7) | interface ProjectFileNode { type MentionableFile (line 14) | interface MentionableFile { type UseFileMentionsOptions (line 20) | interface UseFileMentionsOptions { function useFileMentions (line 49) | function useFileMentions({ selectedProject, input, setInput, textareaRef... FILE: src/components/chat/hooks/useSlashCommands.ts constant COMMAND_QUERY_DEBOUNCE_MS (line 8) | const COMMAND_QUERY_DEBOUNCE_MS = 150; type SlashCommand (line 10) | interface SlashCommand { type UseSlashCommandsOptions (line 20) | interface UseSlashCommandsOptions { function useSlashCommands (line 51) | function useSlashCommands({ FILE: src/components/chat/tools/ToolRenderer.tsx type DiffLine (line 7) | type DiffLine = { type ToolRendererProps (line 13) | interface ToolRendererProps { function getToolCategory (line 33) | function getToolCategory(toolName: string): string { FILE: src/components/chat/tools/components/CollapsibleDisplay.tsx type CollapsibleDisplayProps (line 4) | interface CollapsibleDisplayProps { FILE: src/components/chat/tools/components/CollapsibleSection.tsx type CollapsibleSectionProps (line 3) | interface CollapsibleSectionProps { FILE: src/components/chat/tools/components/ContentRenderers/FileListContent.tsx type FileListItem (line 3) | interface FileListItem { type FileListContentProps (line 8) | interface FileListContentProps { FILE: src/components/chat/tools/components/ContentRenderers/MarkdownContent.tsx type MarkdownContentProps (line 4) | interface MarkdownContentProps { FILE: src/components/chat/tools/components/ContentRenderers/QuestionAnswerContent.tsx type QuestionAnswerContentProps (line 4) | interface QuestionAnswerContentProps { FILE: src/components/chat/tools/components/ContentRenderers/TaskListContent.tsx type TaskItem (line 3) | interface TaskItem { type TaskListContentProps (line 11) | interface TaskListContentProps { function parseTaskContent (line 15) | function parseTaskContent(content: string): TaskItem[] { FILE: src/components/chat/tools/components/ContentRenderers/TextContent.tsx type TextContentProps (line 3) | interface TextContentProps { FILE: src/components/chat/tools/components/ContentRenderers/TodoList.tsx type TodoStatus (line 5) | type TodoStatus = 'completed' | 'in_progress' | 'pending'; type TodoPriority (line 6) | type TodoPriority = 'high' | 'medium' | 'low'; type TodoItem (line 8) | type TodoItem = { type NormalizedTodoItem (line 15) | type NormalizedTodoItem = { type StatusConfig (line 22) | type StatusConfig = { constant STATUS_CONFIG (line 30) | const STATUS_CONFIG: Record = { constant PRIORITY_BADGE_CLASS (line 54) | const PRIORITY_BADGE_CLASS: Record = { FILE: src/components/chat/tools/components/OneLineDisplay.tsx type ActionType (line 4) | type ActionType = 'copy' | 'open-file' | 'jump-to-results' | 'none'; type OneLineDisplayProps (line 6) | interface OneLineDisplayProps { FILE: src/components/chat/tools/components/SubagentContainer.tsx type SubagentContainerProps (line 5) | interface SubagentContainerProps { FILE: src/components/chat/tools/components/ToolDiffViewer.tsx type DiffLine (line 3) | type DiffLine = { type ToolDiffViewerProps (line 9) | interface ToolDiffViewerProps { FILE: src/components/chat/tools/configs/permissionPanelRegistry.ts type PermissionPanelProps (line 4) | interface PermissionPanelProps { function registerPermissionPanel (line 14) | function registerPermissionPanel( function getPermissionPanel (line 21) | function getPermissionPanel( FILE: src/components/chat/tools/configs/toolConfigs.ts type ToolDisplayConfig (line 6) | interface ToolDisplayConfig { constant TOOL_CONFIGS (line 44) | const TOOL_CONFIGS: Record = { function getToolConfig (line 585) | function getToolConfig(toolName: string): ToolDisplayConfig { function shouldHideToolResult (line 592) | function shouldHideToolResult(toolName: string, toolResult: any): boolean { FILE: src/components/chat/types/types.ts type Provider (line 3) | type Provider = SessionProvider; type PermissionMode (line 5) | type PermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions' | ... type ChatImage (line 7) | interface ChatImage { type ToolResult (line 12) | interface ToolResult { type SubagentChildTool (line 20) | interface SubagentChildTool { type ChatMessage (line 28) | interface ChatMessage { type ClaudeSettings (line 52) | interface ClaudeSettings { type ClaudePermissionSuggestion (line 61) | interface ClaudePermissionSuggestion { type PermissionGrantResult (line 67) | interface PermissionGrantResult { type PendingPermissionRequest (line 73) | interface PendingPermissionRequest { type QuestionOption (line 82) | interface QuestionOption { type Question (line 87) | interface Question { type ChatInterfaceProps (line 94) | interface ChatInterfaceProps { FILE: src/components/chat/utils/chatFormatting.ts function decodeHtmlEntities (line 1) | function decodeHtmlEntities(text: string) { function normalizeInlineCodeFences (line 11) | function normalizeInlineCodeFences(text: string) { function unescapeWithMathProtection (line 20) | function unescapeWithMathProtection(text: string) { function escapeRegExp (line 45) | function escapeRegExp(value: string) { function formatUsageLimitText (line 49) | function formatUsageLimitText(text: string) { FILE: src/components/chat/utils/chatPermissions.ts function buildClaudeToolPermissionEntry (line 5) | function buildClaudeToolPermissionEntry(toolName?: string, toolInput?: u... function formatToolInputForDisplay (line 22) | function formatToolInputForDisplay(input: unknown) { function getClaudePermissionSuggestion (line 32) | function getClaudePermissionSuggestion( function grantClaudeToolPermission (line 48) | function grantClaudeToolPermission(entry: string | null): PermissionGran... FILE: src/components/chat/utils/chatStorage.ts constant CLAUDE_SETTINGS_KEY (line 3) | const CLAUDE_SETTINGS_KEY = 'claude-settings'; function getClaudeSettings (line 46) | function getClaudeSettings(): ClaudeSettings { FILE: src/components/chat/utils/messageTransforms.ts type DiffLine (line 1) | interface DiffLine { type DiffCalculator (line 7) | type DiffCalculator = (oldStr: string, newStr: string) => DiffLine[]; FILE: src/components/chat/view/ChatInterface.tsx type PendingViewSession (line 16) | type PendingViewSession = { function ChatInterface (line 21) | function ChatInterface({ FILE: src/components/chat/view/subcomponents/AssistantThinkingIndicator.tsx type AssistantThinkingIndicatorProps (line 4) | type AssistantThinkingIndicatorProps = { function AssistantThinkingIndicator (line 9) | function AssistantThinkingIndicator({ selectedProvider }: AssistantThink... FILE: src/components/chat/view/subcomponents/ChatComposer.tsx type MentionableFile (line 22) | interface MentionableFile { type SlashCommand (line 27) | interface SlashCommand { type ChatComposerProps (line 37) | interface ChatComposerProps { function ChatComposer (line 97) | function ChatComposer({ FILE: src/components/chat/view/subcomponents/ChatInputControls.tsx type ChatInputControlsProps (line 7) | interface ChatInputControlsProps { function ChatInputControls (line 23) | function ChatInputControls({ FILE: src/components/chat/view/subcomponents/ChatMessagesPane.tsx type ChatMessagesPaneProps (line 11) | interface ChatMessagesPaneProps { function ChatMessagesPane (line 57) | function ChatMessagesPane({ FILE: src/components/chat/view/subcomponents/ClaudeStatus.tsx type ClaudeStatusProps (line 6) | type ClaudeStatusProps = { constant ACTION_KEYS (line 17) | const ACTION_KEYS = [ constant DEFAULT_ACTION_WORDS (line 25) | const DEFAULT_ACTION_WORDS = ['Thinking', 'Processing', 'Analyzing', 'Wo... constant ANIMATION_STEPS (line 26) | const ANIMATION_STEPS = 40; constant PROVIDER_LABEL_KEYS (line 28) | const PROVIDER_LABEL_KEYS: Record = { function formatElapsedTime (line 35) | function formatElapsedTime(totalSeconds: number, t: (key: string, option... function ClaudeStatus (line 50) | function ClaudeStatus({ FILE: src/components/chat/view/subcomponents/CommandMenu.tsx type CommandMenuCommand (line 4) | type CommandMenuCommand = { type CommandMenuProps (line 14) | type CommandMenuProps = { function CommandMenu (line 80) | function CommandMenu({ FILE: src/components/chat/view/subcomponents/ImageAttachment.tsx type ImageAttachmentProps (line 3) | interface ImageAttachmentProps { FILE: src/components/chat/view/subcomponents/Markdown.tsx type MarkdownProps (line 12) | type MarkdownProps = { type CodeBlockProps (line 17) | type CodeBlockProps = { function Markdown (line 146) | function Markdown({ children, className }: MarkdownProps) { FILE: src/components/chat/view/subcomponents/MessageComponent.tsx type DiffLine (line 17) | type DiffLine = { type MessageComponentProps (line 23) | type MessageComponentProps = { type InteractiveOption (line 37) | type InteractiveOption = { type PermissionGrantState (line 43) | type PermissionGrantState = 'idle' | 'granted' | 'error'; constant COPY_HIDDEN_TOOL_NAMES (line 44) | const COPY_HIDDEN_TOOL_NAMES = new Set(['Bash', 'Edit', 'Write', 'ApplyP... FILE: src/components/chat/view/subcomponents/MessageCopyControl.tsx constant COPY_SUCCESS_TIMEOUT_MS (line 5) | const COPY_SUCCESS_TIMEOUT_MS = 2000; type CopyFormat (line 7) | type CopyFormat = 'text' | 'markdown'; type CopyFormatOption (line 9) | type CopyFormatOption = { FILE: src/components/chat/view/subcomponents/PermissionRequestsBanner.tsx type PermissionRequestsBannerProps (line 10) | interface PermissionRequestsBannerProps { function PermissionRequestsBanner (line 19) | function PermissionRequestsBanner({ FILE: src/components/chat/view/subcomponents/ProviderSelectionEmptyState.tsx type ProviderSelectionEmptyStateProps (line 14) | type ProviderSelectionEmptyStateProps = { type ProviderDef (line 34) | type ProviderDef = { constant PROVIDERS (line 43) | const PROVIDERS: ProviderDef[] = [ function getModelConfig (line 78) | function getModelConfig(p: SessionProvider) { function getModelValue (line 85) | function getModelValue( function ProviderSelectionEmptyState (line 98) | function ProviderSelectionEmptyState({ FILE: src/components/chat/view/subcomponents/ThinkingModeSelector.tsx type ThinkingModeSelectorProps (line 6) | type ThinkingModeSelectorProps = { function ThinkingModeSelector (line 13) | function ThinkingModeSelector({ selectedMode, onModeChange, onClose, cla... FILE: src/components/chat/view/subcomponents/TokenUsagePie.tsx type TokenUsagePieProps (line 1) | type TokenUsagePieProps = { function TokenUsagePie (line 6) | function TokenUsagePie({ used, total }: TokenUsagePieProps) { FILE: src/components/code-editor/constants/settings.ts constant CODE_EDITOR_STORAGE_KEYS (line 1) | const CODE_EDITOR_STORAGE_KEYS = { constant CODE_EDITOR_DEFAULTS (line 9) | const CODE_EDITOR_DEFAULTS = { constant CODE_EDITOR_SETTINGS_CHANGED_EVENT (line 17) | const CODE_EDITOR_SETTINGS_CHANGED_EVENT = 'codeEditorSettingsChanged'; FILE: src/components/code-editor/hooks/useCodeEditorDocument.ts type UseCodeEditorDocumentParams (line 6) | type UseCodeEditorDocumentParams = { FILE: src/components/code-editor/hooks/useEditorKeyboardShortcuts.ts type UseEditorKeyboardShortcutsParams (line 3) | type UseEditorKeyboardShortcutsParams = { FILE: src/components/code-editor/hooks/useEditorSidebar.ts type UseEditorSidebarOptions (line 6) | type UseEditorSidebarOptions = { FILE: src/components/code-editor/types/types.ts type CodeEditorDiffInfo (line 1) | type CodeEditorDiffInfo = { type CodeEditorFile (line 7) | type CodeEditorFile = { type CodeEditorSettingsState (line 15) | type CodeEditorSettingsState = { FILE: src/components/code-editor/utils/binaryFile.ts constant BINARY_EXTENSIONS (line 2) | const BINARY_EXTENSIONS = [ FILE: src/components/code-editor/utils/editorExtensions.ts method token (line 15) | token(stream) { method constructor (line 122) | constructor(view: EditorView) { method update (line 136) | update() {} method destroy (line 138) | destroy() {} FILE: src/components/code-editor/utils/editorToolbarPanel.ts type EditorToolbarLabels (line 5) | type EditorToolbarLabels = { type CreateEditorToolbarPanelParams (line 15) | type CreateEditorToolbarPanelParams = { FILE: src/components/code-editor/view/CodeEditor.tsx type CodeEditorProps (line 19) | type CodeEditorProps = { function CodeEditor (line 29) | function CodeEditor({ FILE: src/components/code-editor/view/EditorSidebar.tsx type EditorSidebarProps (line 6) | type EditorSidebarProps = { constant MIN_LEFT_CONTENT_WIDTH (line 21) | const MIN_LEFT_CONTENT_WIDTH = 200; constant MIN_EDITOR_WIDTH (line 23) | const MIN_EDITOR_WIDTH = 280; function EditorSidebar (line 25) | function EditorSidebar({ FILE: src/components/code-editor/view/subcomponents/CodeEditorBinaryFile.tsx type CodeEditorBinaryFileProps (line 3) | type CodeEditorBinaryFileProps = { function CodeEditorBinaryFile (line 13) | function CodeEditorBinaryFile({ FILE: src/components/code-editor/view/subcomponents/CodeEditorFooter.tsx type CodeEditorFooterProps (line 1) | type CodeEditorFooterProps = { function CodeEditorFooter (line 8) | function CodeEditorFooter({ FILE: src/components/code-editor/view/subcomponents/CodeEditorHeader.tsx type CodeEditorHeaderProps (line 4) | type CodeEditorHeaderProps = { function CodeEditorHeader (line 33) | function CodeEditorHeader({ FILE: src/components/code-editor/view/subcomponents/CodeEditorLoadingState.tsx type CodeEditorLoadingStateProps (line 3) | type CodeEditorLoadingStateProps = { function CodeEditorLoadingState (line 9) | function CodeEditorLoadingState({ FILE: src/components/code-editor/view/subcomponents/CodeEditorSurface.tsx type CodeEditorSurfaceProps (line 6) | type CodeEditorSurfaceProps = { function CodeEditorSurface (line 17) | function CodeEditorSurface({ FILE: src/components/code-editor/view/subcomponents/markdown/MarkdownCodeBlock.tsx type MarkdownCodeBlockProps (line 7) | type MarkdownCodeBlockProps = { function MarkdownCodeBlock (line 12) | function MarkdownCodeBlock({ FILE: src/components/code-editor/view/subcomponents/markdown/MarkdownPreview.tsx type MarkdownPreviewProps (line 9) | type MarkdownPreviewProps = { function MarkdownPreview (line 39) | function MarkdownPreview({ content }: MarkdownPreviewProps) { FILE: src/components/file-tree/constants/constants.ts constant FILE_TREE_VIEW_MODE_STORAGE_KEY (line 3) | const FILE_TREE_VIEW_MODE_STORAGE_KEY = 'file-tree-view-mode'; constant FILE_TREE_DEFAULT_VIEW_MODE (line 5) | const FILE_TREE_DEFAULT_VIEW_MODE: FileTreeViewMode = 'detailed'; constant FILE_TREE_VIEW_MODES (line 7) | const FILE_TREE_VIEW_MODES: FileTreeViewMode[] = ['simple', 'compact', '... constant IMAGE_FILE_EXTENSIONS (line 9) | const IMAGE_FILE_EXTENSIONS = new Set([ FILE: src/components/file-tree/constants/fileIcons.ts constant ICON_SIZE_CLASS (line 41) | const ICON_SIZE_CLASS = 'w-4 h-4 flex-shrink-0'; constant FILE_ICON_MAP (line 43) | const FILE_ICON_MAP: FileIconMap = { constant FILENAME_ICON_MAP (line 156) | const FILENAME_ICON_MAP: FileIconMap = { function getFileIconData (line 209) | function getFileIconData(filename: string): FileIconData { FILE: src/components/file-tree/hooks/useExpandedDirectories.ts type UseExpandedDirectoriesResult (line 3) | type UseExpandedDirectoriesResult = { function useExpandedDirectories (line 10) | function useExpandedDirectories(): UseExpandedDirectoriesResult { FILE: src/components/file-tree/hooks/useFileTreeData.ts type UseFileTreeDataResult (line 6) | type UseFileTreeDataResult = { function useFileTreeData (line 12) | function useFileTreeData(selectedProject: Project | null): UseFileTreeDa... FILE: src/components/file-tree/hooks/useFileTreeOperations.ts constant INVALID_FILENAME_CHARS (line 9) | const INVALID_FILENAME_CHARS = /[<>:"/\\|?*\x00-\x1f]/; constant RESERVED_NAMES (line 10) | const RESERVED_NAMES = /^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])$/i; type ToastMessage (line 12) | type ToastMessage = { type DeleteConfirmation (line 17) | type DeleteConfirmation = { type UseFileTreeOperationsOptions (line 22) | type UseFileTreeOperationsOptions = { type UseFileTreeOperationsResult (line 28) | type UseFileTreeOperationsResult = { function useFileTreeOperations (line 64) | function useFileTreeOperations({ FILE: src/components/file-tree/hooks/useFileTreeSearch.ts type UseFileTreeSearchArgs (line 5) | type UseFileTreeSearchArgs = { type UseFileTreeSearchResult (line 10) | type UseFileTreeSearchResult = { function useFileTreeSearch (line 16) | function useFileTreeSearch({ FILE: src/components/file-tree/hooks/useFileTreeUpload.ts type UseFileTreeUploadOptions (line 5) | type UseFileTreeUploadOptions = { FILE: src/components/file-tree/hooks/useFileTreeViewMode.ts type UseFileTreeViewModeResult (line 9) | type UseFileTreeViewModeResult = { function useFileTreeViewMode (line 14) | function useFileTreeViewMode(): UseFileTreeViewModeResult { FILE: src/components/file-tree/types/types.ts type FileTreeViewMode (line 3) | type FileTreeViewMode = 'simple' | 'compact' | 'detailed'; type FileTreeItemType (line 5) | type FileTreeItemType = 'file' | 'directory'; type FileTreeNode (line 7) | interface FileTreeNode { type FileTreeImageSelection (line 18) | interface FileTreeImageSelection { type FileIconData (line 25) | interface FileIconData { type FileIconMap (line 30) | type FileIconMap = Record; FILE: src/components/file-tree/utils/fileTreeUtils.ts function filterFileTree (line 5) | function filterFileTree(items: FileTreeNode[], query: string): FileTreeN... function collectExpandedDirectoryPaths (line 23) | function collectExpandedDirectoryPaths(items: FileTreeNode[]): string[] { function formatFileSize (line 39) | function formatFileSize(bytes?: number): string { function formatRelativeTime (line 51) | function formatRelativeTime(date: string | undefined, t: TFunction): str... function isImageFile (line 79) | function isImageFile(filename: string): boolean { FILE: src/components/file-tree/view/FileContextMenu.tsx type FileContextItem (line 6) | type FileContextItem = { type ContextMenuAction (line 17) | type ContextMenuAction = { constant CONTEXT_MENU_WIDTH (line 28) | const CONTEXT_MENU_WIDTH = 200; constant CONTEXT_MENU_HEIGHT (line 29) | const CONTEXT_MENU_HEIGHT = 300; constant VIEWPORT_PADDING (line 30) | const VIEWPORT_PADDING = 10; function calculateViewportSafePosition (line 32) | function calculateViewportSafePosition(clientX: number, clientY: number) { function FileContextMenu (line 46) | function FileContextMenu({ FILE: src/components/file-tree/view/FileTree.tsx type FileTreeProps (line 23) | type FileTreeProps = { function FileTree (line 28) | function FileTree({ selectedProject, onFileOpen }: FileTreeProps) { FILE: src/components/file-tree/view/FileTreeBody.tsx type FileTreeBodyProps (line 8) | type FileTreeBodyProps = { function FileTreeBody (line 35) | function FileTreeBody({ FILE: src/components/file-tree/view/FileTreeDetailedColumns.tsx function FileTreeDetailedColumns (line 3) | function FileTreeDetailedColumns() { FILE: src/components/file-tree/view/FileTreeEmptyState.tsx type FileTreeEmptyStateProps (line 3) | type FileTreeEmptyStateProps = { function FileTreeEmptyState (line 9) | function FileTreeEmptyState({ icon: Icon, title, description }: FileTree... FILE: src/components/file-tree/view/FileTreeHeader.tsx type FileTreeHeaderProps (line 7) | type FileTreeHeaderProps = { function FileTreeHeader (line 22) | function FileTreeHeader({ FILE: src/components/file-tree/view/FileTreeList.tsx type FileTreeListProps (line 5) | type FileTreeListProps = { function FileTreeList (line 30) | function FileTreeList({ FILE: src/components/file-tree/view/FileTreeLoadingState.tsx function FileTreeLoadingState (line 3) | function FileTreeLoadingState() { FILE: src/components/file-tree/view/FileTreeNode.tsx type FileTreeNodeProps (line 8) | type FileTreeNodeProps = { type TreeItemIconProps (line 34) | type TreeItemIconProps = { function TreeItemIcon (line 40) | function TreeItemIcon({ item, isOpen, renderFileIcon }: TreeItemIconProp... function FileTreeNode (line 62) | function FileTreeNode({ FILE: src/components/file-tree/view/ImageViewer.tsx type ImageViewerProps (line 7) | type ImageViewerProps = { function ImageViewer (line 12) | function ImageViewer({ file, onClose }: ImageViewerProps) { FILE: src/components/git-panel/constants/constants.ts constant DEFAULT_BRANCH (line 3) | const DEFAULT_BRANCH = 'main'; constant RECENT_COMMITS_LIMIT (line 4) | const RECENT_COMMITS_LIMIT = 10; constant FILE_STATUS_GROUPS (line 6) | const FILE_STATUS_GROUPS: GitStatusGroupEntry[] = [ constant FILE_STATUS_LABELS (line 13) | const FILE_STATUS_LABELS: Record = { constant FILE_STATUS_BADGE_CLASSES (line 20) | const FILE_STATUS_BADGE_CLASSES: Record = { constant CONFIRMATION_TITLES (line 27) | const CONFIRMATION_TITLES: Record = { constant CONFIRMATION_ACTION_LABELS (line 38) | const CONFIRMATION_ACTION_LABELS: Record = { constant CONFIRMATION_BUTTON_CLASSES (line 49) | const CONFIRMATION_BUTTON_CLASSES: Record = { constant CONFIRMATION_ICON_CONTAINER_CLASSES (line 60) | const CONFIRMATION_ICON_CONTAINER_CLASSES: Record = { FILE: src/components/git-panel/hooks/useGitPanelController.ts function isAbortError (line 25) | function isAbortError(error: unknown): boolean { function readJson (line 29) | async function readJson(response: Response, signal?: AbortSignal): Pr... function useGitPanelController (line 43) | function useGitPanelController({ FILE: src/components/git-panel/hooks/useRevertLocalCommit.ts type UseRevertLocalCommitOptions (line 5) | type UseRevertLocalCommitOptions = { function readJson (line 10) | async function readJson(response: Response): Promise { function useRevertLocalCommit (line 14) | function useRevertLocalCommit({ projectName, onSuccess }: UseRevertLocal... FILE: src/components/git-panel/hooks/useSelectedProvider.ts function useSelectedProvider (line 3) | function useSelectedProvider() { FILE: src/components/git-panel/types/types.ts type GitPanelView (line 3) | type GitPanelView = 'changes' | 'history' | 'branches'; type FileStatusCode (line 4) | type FileStatusCode = 'M' | 'A' | 'D' | 'U'; type GitStatusFileGroup (line 5) | type GitStatusFileGroup = 'modified' | 'added' | 'deleted' | 'untracked'; type ConfirmActionType (line 6) | type ConfirmActionType = 'discard' | 'delete' | 'commit' | 'pull' | 'pus... type FileDiffInfo (line 8) | type FileDiffInfo = { type FileOpenHandler (line 13) | type FileOpenHandler = (filePath: string, diffInfo?: FileDiffInfo) => void; type GitPanelProps (line 15) | type GitPanelProps = { type GitStatusResponse (line 21) | type GitStatusResponse = { type GitRemoteStatus (line 32) | type GitRemoteStatus = { type GitCommitSummary (line 45) | type GitCommitSummary = { type GitDiffMap (line 54) | type GitDiffMap = Record; type GitStatusGroupEntry (line 56) | type GitStatusGroupEntry = { type ConfirmationRequest (line 61) | type ConfirmationRequest = { type UseGitPanelControllerOptions (line 67) | type UseGitPanelControllerOptions = { type GitPanelController (line 73) | type GitPanelController = { type GitApiErrorResponse (line 109) | type GitApiErrorResponse = { type GitDiffResponse (line 114) | type GitDiffResponse = GitApiErrorResponse & { type GitBranchesResponse (line 118) | type GitBranchesResponse = GitApiErrorResponse & { type GitCommitsResponse (line 124) | type GitCommitsResponse = GitApiErrorResponse & { type GitOperationResponse (line 128) | type GitOperationResponse = GitApiErrorResponse & { type GitGenerateMessageResponse (line 133) | type GitGenerateMessageResponse = GitApiErrorResponse & { type GitFileWithDiffResponse (line 137) | type GitFileWithDiffResponse = GitApiErrorResponse & { FILE: src/components/git-panel/utils/gitPanelUtils.ts function getAllChangedFiles (line 4) | function getAllChangedFiles(gitStatus: GitStatusResponse | null): string... function getChangedFileCount (line 12) | function getChangedFileCount(gitStatus: GitStatusResponse | null): number { function hasChangedFiles (line 16) | function hasChangedFiles(gitStatus: GitStatusResponse | null): boolean { function getStatusLabel (line 20) | function getStatusLabel(status: FileStatusCode): string { function getStatusBadgeClass (line 24) | function getStatusBadgeClass(status: FileStatusCode): string { type CommitFileChange (line 32) | type CommitFileChange = { type CommitFileSummary (line 41) | type CommitFileSummary = { function parseCommitFiles (line 48) | function parseCommitFiles(showOutput: string): CommitFileSummary { FILE: src/components/git-panel/view/GitPanel.tsx function GitPanel (line 14) | function GitPanel({ selectedProject, isMobile = false, onFileOpen }: Git... FILE: src/components/git-panel/view/GitPanelHeader.tsx type GitPanelHeaderProps (line 6) | type GitPanelHeaderProps = { function GitPanelHeader (line 31) | function GitPanelHeader({ FILE: src/components/git-panel/view/GitRepositoryErrorState.tsx type GitRepositoryErrorStateProps (line 3) | type GitRepositoryErrorStateProps = { function GitRepositoryErrorState (line 8) | function GitRepositoryErrorState({ error, details }: GitRepositoryErrorS... FILE: src/components/git-panel/view/GitViewTabs.tsx type GitViewTabsProps (line 4) | type GitViewTabsProps = { constant TABS (line 11) | const TABS: { id: GitPanelView; label: string; Icon: typeof FileText }[]... function GitViewTabs (line 17) | function GitViewTabs({ activeView, isHidden, changeCount, onChange }: Gi... FILE: src/components/git-panel/view/branches/BranchesView.tsx type BranchesViewProps (line 6) | type BranchesViewProps = { type BranchRowProps (line 24) | type BranchRowProps = { function BranchRow (line 35) | function BranchRow({ name, isCurrent, isRemote, aheadCount, behindCount,... function SectionHeader (line 114) | function SectionHeader({ label, count }: { label: string; count: number ... function BranchesView (line 127) | function BranchesView({ FILE: src/components/git-panel/view/changes/ChangesView.tsx type ChangesViewProps (line 9) | type ChangesViewProps = { function ChangesView (line 28) | function ChangesView({ FILE: src/components/git-panel/view/changes/CommitComposer.tsx type CommitComposerProps (line 9) | type CommitComposerProps = { function CommitComposer (line 19) | function CommitComposer({ FILE: src/components/git-panel/view/changes/FileChangeItem.tsx type FileChangeItemProps (line 6) | type FileChangeItemProps = { function FileChangeItem (line 21) | function FileChangeItem({ FILE: src/components/git-panel/view/changes/FileChangeList.tsx type FileChangeListProps (line 5) | type FileChangeListProps = { function FileChangeList (line 20) | function FileChangeList({ FILE: src/components/git-panel/view/changes/FileSelectionControls.tsx type FileSelectionControlsProps (line 1) | type FileSelectionControlsProps = { function FileSelectionControls (line 10) | function FileSelectionControls({ FILE: src/components/git-panel/view/changes/FileStatusLegend.tsx type FileStatusLegendProps (line 5) | type FileStatusLegendProps = { constant LEGEND_ITEMS (line 9) | const LEGEND_ITEMS = [ function FileStatusLegend (line 16) | function FileStatusLegend({ isMobile }: FileStatusLegendProps) { FILE: src/components/git-panel/view/history/CommitHistoryItem.tsx function formatDate (line 7) | function formatDate(dateString: string): string { type CommitHistoryItemProps (line 15) | type CommitHistoryItemProps = { function CommitHistoryItem (line 24) | function CommitHistoryItem({ FILE: src/components/git-panel/view/history/HistoryView.tsx type HistoryViewProps (line 6) | type HistoryViewProps = { function HistoryView (line 15) | function HistoryView({ FILE: src/components/git-panel/view/modals/ConfirmActionModal.tsx type ConfirmActionModalProps (line 11) | type ConfirmActionModalProps = { function renderConfirmActionIcon (line 17) | function renderConfirmActionIcon(actionType: ConfirmationRequest['type']) { function ConfirmActionModal (line 37) | function ConfirmActionModal({ action, onCancel, onConfirm }: ConfirmActi... FILE: src/components/git-panel/view/modals/NewBranchModal.tsx type NewBranchModalProps (line 4) | type NewBranchModalProps = { function NewBranchModal (line 12) | function NewBranchModal({ FILE: src/components/git-panel/view/shared/GitDiffViewer.tsx type GitDiffViewerProps (line 3) | type GitDiffViewerProps = { constant PREVIEW_CHARACTER_LIMIT (line 9) | const PREVIEW_CHARACTER_LIMIT = 200_000; constant PREVIEW_LINE_LIMIT (line 10) | const PREVIEW_LINE_LIMIT = 1_500; type DiffPreview (line 12) | type DiffPreview = { function buildDiffPreview (line 18) | function buildDiffPreview(diff: string): DiffPreview { function GitDiffViewer (line 31) | function GitDiffViewer({ diff, isMobile, wrapText }: GitDiffViewerProps) { FILE: src/components/llm-logo-provider/ClaudeLogo.tsx type ClaudeLogoProps (line 3) | type ClaudeLogoProps = { FILE: src/components/llm-logo-provider/CodexLogo.tsx type CodexLogoProps (line 4) | type CodexLogoProps = { FILE: src/components/llm-logo-provider/CursorLogo.tsx type CursorLogoProps (line 4) | type CursorLogoProps = { FILE: src/components/llm-logo-provider/SessionProviderLogo.tsx type SessionProviderLogoProps (line 7) | type SessionProviderLogoProps = { function SessionProviderLogo (line 12) | function SessionProviderLogo({ FILE: src/components/main-content/hooks/useMobileMenuHandlers.ts type MenuEvent (line 4) | type MenuEvent = MouseEvent | TouchEvent void) { FILE: src/components/main-content/types/types.ts type SessionLifecycleHandler (line 4) | type SessionLifecycleHandler = (sessionId?: string | null) => void; type TaskMasterTask (line 6) | type TaskMasterTask = { type TaskReference (line 20) | type TaskReference = { type TaskSelection (line 26) | type TaskSelection = TaskMasterTask | TaskReference; type PrdFile (line 28) | type PrdFile = { type MainContentProps (line 35) | type MainContentProps = { type MainContentHeaderProps (line 58) | type MainContentHeaderProps = { type MainContentStateViewProps (line 68) | type MainContentStateViewProps = { type MobileMenuButtonProps (line 74) | type MobileMenuButtonProps = { type TaskMasterPanelProps (line 79) | type TaskMasterPanelProps = { FILE: src/components/main-content/view/ErrorBoundary.tsx type ErrorFallbackProps (line 7) | type ErrorFallbackProps = FallbackProps & { type ErrorBoundaryProps (line 12) | type ErrorBoundaryProps = { function formatError (line 19) | function formatError(error: unknown): string { function ErrorFallback (line 27) | function ErrorFallback({ function ErrorBoundary (line 73) | function ErrorBoundary({ FILE: src/components/main-content/view/MainContent.tsx type TaskMasterContextValue (line 19) | type TaskMasterContextValue = { type TasksSettingsContextValue (line 24) | type TasksSettingsContextValue = { function MainContent (line 30) | function MainContent({ FILE: src/components/main-content/view/subcomponents/MainContentHeader.tsx function MainContentHeader (line 7) | function MainContentHeader({ FILE: src/components/main-content/view/subcomponents/MainContentStateView.tsx function MainContentStateView (line 6) | function MainContentStateView({ mode, isMobile, onMenuClick }: MainConte... FILE: src/components/main-content/view/subcomponents/MainContentTabSwitcher.tsx type MainContentTabSwitcherProps (line 9) | type MainContentTabSwitcherProps = { type BuiltInTab (line 15) | type BuiltInTab = { type PluginTab (line 22) | type PluginTab = { type TabDefinition (line 30) | type TabDefinition = BuiltInTab | PluginTab; constant BASE_TABS (line 32) | const BASE_TABS: BuiltInTab[] = [ constant TASKS_TAB (line 39) | const TASKS_TAB: BuiltInTab = { function MainContentTabSwitcher (line 46) | function MainContentTabSwitcher({ FILE: src/components/main-content/view/subcomponents/MainContentTitle.tsx type MainContentTitleProps (line 6) | type MainContentTitleProps = { function getTabTitle (line 13) | function getTabTitle(activeTab: AppTab, shouldShowTasksTab: boolean, t: ... function getSessionTitle (line 33) | function getSessionTitle(session: ProjectSession): string { function MainContentTitle (line 41) | function MainContentTitle({ FILE: src/components/main-content/view/subcomponents/MobileMenuButton.tsx function MobileMenuButton (line 4) | function MobileMenuButton({ onMenuClick, compact = false }: MobileMenuBu... FILE: src/components/mic-button/constants/constants.ts constant MIC_BUTTON_STATES (line 3) | const MIC_BUTTON_STATES = { constant MIC_TAP_DEBOUNCE_MS (line 10) | const MIC_TAP_DEBOUNCE_MS = 300; constant PROCESSING_STATE_DELAY_MS (line 11) | const PROCESSING_STATE_DELAY_MS = 2000; constant DEFAULT_WHISPER_MODE (line 13) | const DEFAULT_WHISPER_MODE = 'default'; constant ENHANCEMENT_WHISPER_MODES (line 16) | const ENHANCEMENT_WHISPER_MODES = new Set([ constant BUTTON_BACKGROUND_BY_STATE (line 23) | const BUTTON_BACKGROUND_BY_STATE: Record = { constant MIC_ERROR_BY_NAME (line 30) | const MIC_ERROR_BY_NAME = { constant MIC_NOT_AVAILABLE_ERROR (line 37) | const MIC_NOT_AVAILABLE_ERROR = constant MIC_NOT_SUPPORTED_ERROR (line 40) | const MIC_NOT_SUPPORTED_ERROR = constant MIC_SECURE_CONTEXT_ERROR (line 43) | const MIC_SECURE_CONTEXT_ERROR = FILE: src/components/mic-button/data/whisper.ts type WhisperStatus (line 3) | type WhisperStatus = 'transcribing'; type WhisperResponse (line 5) | type WhisperResponse = { function transcribeWithWhisper (line 10) | async function transcribeWithWhisper( FILE: src/components/mic-button/hooks/useMicButtonController.ts type UseMicButtonControllerArgs (line 17) | type UseMicButtonControllerArgs = { type UseMicButtonControllerResult (line 21) | type UseMicButtonControllerResult = { function useMicButtonController (line 44) | function useMicButtonController({ FILE: src/components/mic-button/types/types.ts type MicButtonState (line 1) | type MicButtonState = 'idle' | 'recording' | 'transcribing' | 'processing'; FILE: src/components/mic-button/view/MicButton.tsx type MicButtonProps (line 4) | type MicButtonProps = { function MicButton (line 10) | function MicButton({ FILE: src/components/mic-button/view/MicButtonView.tsx type MicButtonViewProps (line 6) | type MicButtonViewProps = { function MicButtonView (line 34) | function MicButtonView({ FILE: src/components/onboarding/view/Onboarding.tsx type OnboardingProps (line 17) | type OnboardingProps = { function Onboarding (line 21) | function Onboarding({ onComplete }: OnboardingProps) { FILE: src/components/onboarding/view/subcomponents/AgentConnectionCard.tsx type AgentConnectionCardProps (line 5) | type AgentConnectionCardProps = { function AgentConnectionCard (line 15) | function AgentConnectionCard({ FILE: src/components/onboarding/view/subcomponents/AgentConnectionsStep.tsx type AgentConnectionsStepProps (line 4) | type AgentConnectionsStepProps = { function AgentConnectionsStep (line 40) | function AgentConnectionsStep({ FILE: src/components/onboarding/view/subcomponents/GitConfigurationStep.tsx type GitConfigurationStepProps (line 3) | type GitConfigurationStepProps = { function GitConfigurationStep (line 11) | function GitConfigurationStep({ FILE: src/components/onboarding/view/subcomponents/OnboardingStepProgress.tsx type OnboardingStepProgressProps (line 3) | type OnboardingStepProgressProps = { function OnboardingStepProgress (line 12) | function OnboardingStepProgress({ currentStep }: OnboardingStepProgressP... FILE: src/components/onboarding/view/types.ts type ProviderAuthStatus (line 5) | type ProviderAuthStatus = { type ProviderStatusMap (line 12) | type ProviderStatusMap = Record; FILE: src/components/plugins/view/PluginIcon.tsx type Props (line 4) | type Props = { function PluginIcon (line 13) | function PluginIcon({ pluginName, iconFile, className }: Props) { FILE: src/components/plugins/view/PluginSettingsTab.tsx constant STARTER_PLUGIN_URL (line 8) | const STARTER_PLUGIN_URL = 'https://github.com/cloudcli-ai/cloudcli-plug... function ToggleSwitch (line 11) | function ToggleSwitch({ checked, onChange, ariaLabel }: { checked: boole... function ServerDot (line 36) | function ServerDot({ running, t }: { running: boolean; t: any }) { type PluginCardProps (line 52) | type PluginCardProps = { function PluginCard (line 64) | function PluginCard({ function StarterPluginCard (line 211) | function StarterPluginCard({ onInstall, installing }: { onInstall: () =>... function PluginSettingsTab (line 268) | function PluginSettingsTab() { FILE: src/components/plugins/view/PluginTabContent.tsx type PluginTabContentProps (line 7) | type PluginTabContentProps = { type PluginContext (line 13) | type PluginContext = { function buildContext (line 19) | function buildContext( function PluginTabContent (line 41) | function PluginTabContent({ FILE: src/components/prd-editor/PRDEditor.tsx type PRDEditorProps (line 13) | type PRDEditorProps = { function PRDEditor (line 23) | function PRDEditor({ FILE: src/components/prd-editor/constants.ts constant PRD_TEMPLATE (line 1) | const PRD_TEMPLATE = `# Product Requirements Document constant PRD_DOCS_URL (line 63) | const PRD_DOCS_URL = constant INVALID_FILE_NAME_CHARACTERS (line 66) | const INVALID_FILE_NAME_CHARACTERS = /[<>:"/\\|?*]/g; constant PRD_EXTENSION_PATTERN (line 67) | const PRD_EXTENSION_PATTERN = /\.(txt|md)$/i; FILE: src/components/prd-editor/hooks/usePrdDocument.ts type UsePrdDocumentArgs (line 7) | type UsePrdDocumentArgs = { type UsePrdDocumentResult (line 14) | type UsePrdDocumentResult = { function usePrdDocument (line 23) | function usePrdDocument({ FILE: src/components/prd-editor/hooks/usePrdKeyboardShortcuts.ts type UsePrdKeyboardShortcutsArgs (line 3) | type UsePrdKeyboardShortcutsArgs = { function usePrdKeyboardShortcuts (line 8) | function usePrdKeyboardShortcuts({ FILE: src/components/prd-editor/hooks/usePrdRegistry.ts type UsePrdRegistryArgs (line 5) | type UsePrdRegistryArgs = { type UsePrdRegistryResult (line 9) | type UsePrdRegistryResult = { function getPrdFiles (line 14) | function getPrdFiles(data: PrdListResponse): ExistingPrdFile[] { function usePrdRegistry (line 18) | function usePrdRegistry({ projectName }: UsePrdRegistryArgs): UsePrdRegi... FILE: src/components/prd-editor/hooks/usePrdSave.ts type UsePrdSaveArgs (line 6) | type UsePrdSaveArgs = { type UsePrdSaveResult (line 13) | type UsePrdSaveResult = { function usePrdSave (line 19) | function usePrdSave({ FILE: src/components/prd-editor/types.ts type PrdFile (line 1) | type PrdFile = { type ExistingPrdFile (line 9) | type ExistingPrdFile = { type PrdListResponse (line 16) | type PrdListResponse = { type SavePrdInput (line 21) | type SavePrdInput = { type SavePrdResult (line 27) | type SavePrdResult = FILE: src/components/prd-editor/utils/fileName.ts function sanitizeFileName (line 3) | function sanitizeFileName(value: string): string { function stripPrdExtension (line 7) | function stripPrdExtension(value: string): string { function ensurePrdExtension (line 11) | function ensurePrdExtension(value: string): string { function createDefaultPrdName (line 15) | function createDefaultPrdName(date: Date): string { FILE: src/components/prd-editor/view/GenerateTasksModal.tsx type GenerateTasksModalProps (line 4) | type GenerateTasksModalProps = { function GenerateTasksModal (line 10) | function GenerateTasksModal({ FILE: src/components/prd-editor/view/OverwriteConfirmModal.tsx type OverwriteConfirmModalProps (line 3) | type OverwriteConfirmModalProps = { function OverwriteConfirmModal (line 11) | function OverwriteConfirmModal({ FILE: src/components/prd-editor/view/PrdEditorBody.tsx type PrdEditorBodyProps (line 8) | type PrdEditorBodyProps = { function PrdEditorBody (line 16) | function PrdEditorBody({ FILE: src/components/prd-editor/view/PrdEditorFooter.tsx type PrdEditorFooterProps (line 3) | type PrdEditorFooterProps = { type ContentStats (line 7) | type ContentStats = { function getContentStats (line 13) | function getContentStats(content: string): ContentStats { function PrdEditorFooter (line 21) | function PrdEditorFooter({ content }: PrdEditorFooterProps) { FILE: src/components/prd-editor/view/PrdEditorHeader.tsx type PrdEditorHeaderProps (line 17) | type PrdEditorHeaderProps = { type HeaderIconButtonProps (line 38) | type HeaderIconButtonProps = { function HeaderIconButton (line 45) | function HeaderIconButton({ title, onClick, icon, active = false }: Head... function PrdEditorHeader (line 62) | function PrdEditorHeader({ FILE: src/components/prd-editor/view/PrdEditorLoadingState.tsx function PrdEditorLoadingState (line 1) | function PrdEditorLoadingState() { FILE: src/components/prd-editor/view/PrdEditorWorkspace.tsx type PrdEditorWorkspaceProps (line 9) | type PrdEditorWorkspaceProps = { function PrdEditorWorkspace (line 23) | function PrdEditorWorkspace({ FILE: src/components/project-creation-wizard/ProjectCreationWizard.tsx type ProjectCreationWizardProps (line 15) | type ProjectCreationWizardProps = { function ProjectCreationWizard (line 29) | function ProjectCreationWizard({ FILE: src/components/project-creation-wizard/components/ErrorBanner.tsx type ErrorBannerProps (line 3) | type ErrorBannerProps = { function ErrorBanner (line 7) | function ErrorBanner({ message }: ErrorBannerProps) { FILE: src/components/project-creation-wizard/components/FolderBrowserModal.tsx type FolderBrowserModalProps (line 8) | type FolderBrowserModalProps = { function FolderBrowserModal (line 15) | function FolderBrowserModal({ FILE: src/components/project-creation-wizard/components/GithubAuthenticationCard.tsx type GithubAuthenticationCardProps (line 6) | type GithubAuthenticationCardProps = { function GithubAuthenticationCard (line 27) | function GithubAuthenticationCard({ FILE: src/components/project-creation-wizard/components/StepConfiguration.tsx type StepConfigurationProps (line 8) | type StepConfigurationProps = { function StepConfiguration (line 27) | function StepConfiguration({ FILE: src/components/project-creation-wizard/components/StepReview.tsx type StepReviewProps (line 6) | type StepReviewProps = { function StepReview (line 13) | function StepReview({ FILE: src/components/project-creation-wizard/components/StepTypeSelection.tsx type StepTypeSelectionProps (line 5) | type StepTypeSelectionProps = { function StepTypeSelection (line 10) | function StepTypeSelection({ FILE: src/components/project-creation-wizard/components/WizardFooter.tsx type WizardFooterProps (line 6) | type WizardFooterProps = { function WizardFooter (line 16) | function WizardFooter({ FILE: src/components/project-creation-wizard/components/WizardProgress.tsx type WizardProgressProps (line 6) | type WizardProgressProps = { function WizardProgress (line 10) | function WizardProgress({ step }: WizardProgressProps) { FILE: src/components/project-creation-wizard/components/WorkspacePathField.tsx type WorkspacePathFieldProps (line 9) | type WorkspacePathFieldProps = { function WorkspacePathField (line 17) | function WorkspacePathField({ FILE: src/components/project-creation-wizard/data/workspaceApi.ts type CloneWorkspaceParams (line 13) | type CloneWorkspaceParams = { type CloneProgressHandlers (line 21) | type CloneProgressHandlers = { FILE: src/components/project-creation-wizard/hooks/useGithubTokens.ts type UseGithubTokensParams (line 5) | type UseGithubTokensParams = { FILE: src/components/project-creation-wizard/types.ts type WizardStep (line 1) | type WizardStep = 1 | 2 | 3; type WorkspaceType (line 3) | type WorkspaceType = 'existing' | 'new'; type TokenMode (line 5) | type TokenMode = 'stored' | 'new' | 'none'; type FolderSuggestion (line 7) | type FolderSuggestion = { type GithubTokenCredential (line 13) | type GithubTokenCredential = { type CredentialsResponse (line 19) | type CredentialsResponse = { type BrowseFilesystemResponse (line 24) | type BrowseFilesystemResponse = { type CreateFolderResponse (line 30) | type CreateFolderResponse = { type CreateWorkspacePayload (line 37) | type CreateWorkspacePayload = { type CreateWorkspaceResponse (line 42) | type CreateWorkspaceResponse = { type CloneProgressEvent (line 49) | type CloneProgressEvent = { type WizardFormState (line 55) | type WizardFormState = { FILE: src/components/project-creation-wizard/utils/pathUtils.ts constant SSH_PREFIXES (line 3) | const SSH_PREFIXES = ['git@', 'ssh://']; constant WINDOWS_DRIVE_PATTERN (line 4) | const WINDOWS_DRIVE_PATTERN = /^[A-Za-z]:\\?$/; FILE: src/components/provider-auth/types.ts type CliProvider (line 1) | type CliProvider = 'claude' | 'cursor' | 'codex' | 'gemini'; FILE: src/components/provider-auth/view/ProviderLoginModal.tsx type LoginModalProject (line 6) | type LoginModalProject = { type ProviderLoginModalProps (line 14) | type ProviderLoginModalProps = { function ProviderLoginModal (line 74) | function ProviderLoginModal({ FILE: src/components/quick-settings-panel/constants.ts constant HANDLE_POSITION_STORAGE_KEY (line 17) | const HANDLE_POSITION_STORAGE_KEY = 'quickSettingsHandlePosition'; constant WHISPER_MODE_STORAGE_KEY (line 18) | const WHISPER_MODE_STORAGE_KEY = 'whisperMode'; constant WHISPER_MODE_CHANGED_EVENT (line 19) | const WHISPER_MODE_CHANGED_EVENT = 'whisperModeChanged'; constant DEFAULT_HANDLE_POSITION (line 21) | const DEFAULT_HANDLE_POSITION = 50; constant HANDLE_POSITION_MIN (line 22) | const HANDLE_POSITION_MIN = 10; constant HANDLE_POSITION_MAX (line 23) | const HANDLE_POSITION_MAX = 90; constant DRAG_THRESHOLD_PX (line 24) | const DRAG_THRESHOLD_PX = 5; constant SETTING_ROW_CLASS (line 26) | const SETTING_ROW_CLASS = constant TOGGLE_ROW_CLASS (line 29) | const TOGGLE_ROW_CLASS = `${SETTING_ROW_CLASS} cursor-pointer`; constant CHECKBOX_CLASS (line 31) | const CHECKBOX_CLASS = constant TOOL_DISPLAY_TOGGLES (line 34) | const TOOL_DISPLAY_TOGGLES: PreferenceToggleItem[] = [ constant VIEW_OPTION_TOGGLES (line 52) | const VIEW_OPTION_TOGGLES: PreferenceToggleItem[] = [ constant INPUT_SETTING_TOGGLES (line 60) | const INPUT_SETTING_TOGGLES: PreferenceToggleItem[] = [ constant WHISPER_OPTIONS (line 68) | const WHISPER_OPTIONS: WhisperOption[] = [ constant VIBE_MODE_ALIASES (line 89) | const VIBE_MODE_ALIASES: WhisperMode[] = [ FILE: src/components/quick-settings-panel/hooks/useQuickSettingsDrag.ts type UseQuickSettingsDragProps (line 12) | type UseQuickSettingsDragProps = { type StartDragEvent (line 16) | type StartDragEvent = ReactMouseEvent | ReactTouchEve... type MoveDragEvent (line 17) | type MoveDragEvent = MouseEvent | TouchEvent; type EventWithClientY (line 18) | type EventWithClientY = StartDragEvent | MoveDragEvent; function useQuickSettingsDrag (line 59) | function useQuickSettingsDrag({ isMobile }: UseQuickSettingsDragProps) { FILE: src/components/quick-settings-panel/hooks/useWhisperMode.ts constant ALL_VALID_MODES (line 9) | const ALL_VALID_MODES: WhisperMode[] = [ function useWhisperMode (line 34) | function useWhisperMode() { FILE: src/components/quick-settings-panel/types.ts type PreferenceToggleKey (line 4) | type PreferenceToggleKey = type QuickSettingsPreferences (line 11) | type QuickSettingsPreferences = Record; type PreferenceToggleItem (line 13) | type PreferenceToggleItem = { type WhisperMode (line 19) | type WhisperMode = type WhisperOptionValue (line 26) | type WhisperOptionValue = 'default' | 'prompt' | 'vibe'; type WhisperOption (line 28) | type WhisperOption = { type QuickSettingsHandleStyle (line 35) | type QuickSettingsHandleStyle = CSSProperties; FILE: src/components/quick-settings-panel/view/QuickSettingsContent.tsx type QuickSettingsContentProps (line 20) | type QuickSettingsContentProps = { function QuickSettingsContent (line 27) | function QuickSettingsContent({ FILE: src/components/quick-settings-panel/view/QuickSettingsHandle.tsx type QuickSettingsHandleProps (line 13) | type QuickSettingsHandleProps = { function QuickSettingsHandle (line 22) | function QuickSettingsHandle({ FILE: src/components/quick-settings-panel/view/QuickSettingsPanelHeader.tsx function QuickSettingsPanelHeader (line 4) | function QuickSettingsPanelHeader() { FILE: src/components/quick-settings-panel/view/QuickSettingsPanelView.tsx function QuickSettingsPanelView (line 12) | function QuickSettingsPanelView() { FILE: src/components/quick-settings-panel/view/QuickSettingsSection.tsx type QuickSettingsSectionProps (line 3) | type QuickSettingsSectionProps = { function QuickSettingsSection (line 9) | function QuickSettingsSection({ FILE: src/components/quick-settings-panel/view/QuickSettingsToggleRow.tsx type QuickSettingsToggleRowProps (line 5) | type QuickSettingsToggleRowProps = { function QuickSettingsToggleRow (line 12) | function QuickSettingsToggleRow({ FILE: src/components/quick-settings-panel/view/QuickSettingsWhisperSection.tsx function QuickSettingsWhisperSection (line 6) | function QuickSettingsWhisperSection() { FILE: src/components/settings/constants/constants.ts constant SETTINGS_MAIN_TABS (line 15) | const SETTINGS_MAIN_TABS: SettingsMainTab[] = [ constant AGENT_PROVIDERS (line 24) | const AGENT_PROVIDERS: AgentProvider[] = ['claude', 'cursor', 'codex']; constant AGENT_CATEGORIES (line 25) | const AGENT_CATEGORIES: AgentCategory[] = ['account', 'permissions', 'mc... constant DEFAULT_PROJECT_SORT_ORDER (line 27) | const DEFAULT_PROJECT_SORT_ORDER: ProjectSortOrder = 'name'; constant DEFAULT_SAVE_STATUS (line 28) | const DEFAULT_SAVE_STATUS = null; constant DEFAULT_CODE_EDITOR_SETTINGS (line 29) | const DEFAULT_CODE_EDITOR_SETTINGS: CodeEditorSettingsState = { constant DEFAULT_AUTH_STATUS (line 37) | const DEFAULT_AUTH_STATUS: AuthStatus = { constant DEFAULT_MCP_TEST_RESULT (line 44) | const DEFAULT_MCP_TEST_RESULT: McpTestResult = { constant DEFAULT_MCP_TOOLS_RESULT (line 51) | const DEFAULT_MCP_TOOLS_RESULT: McpToolsResult = { constant DEFAULT_CLAUDE_MCP_FORM (line 58) | const DEFAULT_CLAUDE_MCP_FORM: ClaudeMcpFormState = { constant DEFAULT_CODEX_MCP_FORM (line 75) | const DEFAULT_CODEX_MCP_FORM: CodexMcpFormState = { constant DEFAULT_CURSOR_PERMISSIONS (line 85) | const DEFAULT_CURSOR_PERMISSIONS: CursorPermissionsState = { constant AUTH_STATUS_ENDPOINTS (line 91) | const AUTH_STATUS_ENDPOINTS: Record = { FILE: src/components/settings/hooks/useCredentialsSettings.ts type UseCredentialsSettingsArgs (line 12) | type UseCredentialsSettingsArgs = { function useCredentialsSettings (line 21) | function useCredentialsSettings({ FILE: src/components/settings/hooks/useGitSettings.ts type GitConfigResponse (line 4) | type GitConfigResponse = { type SaveStatus (line 10) | type SaveStatus = 'success' | 'error' | null; function useGitSettings (line 12) | function useGitSettings() { FILE: src/components/settings/hooks/useSettingsController.ts type ThemeContextValue (line 29) | type ThemeContextValue = { type UseSettingsControllerArgs (line 34) | type UseSettingsControllerArgs = { type StatusApiResponse (line 41) | type StatusApiResponse = { type JsonResult (line 48) | type JsonResult = { type McpReadResponse (line 53) | type McpReadResponse = { type McpCliServer (line 58) | type McpCliServer = { type McpCliReadResponse (line 68) | type McpCliReadResponse = { type McpTestResponse (line 73) | type McpTestResponse = { type McpToolsResponse (line 78) | type McpToolsResponse = { type ClaudeSettingsStorage (line 83) | type ClaudeSettingsStorage = { type CursorSettingsStorage (line 90) | type CursorSettingsStorage = { type CodexSettingsStorage (line 96) | type CodexSettingsStorage = { type NotificationPreferencesResponse (line 100) | type NotificationPreferencesResponse = { type ActiveLoginProvider (line 105) | type ActiveLoginProvider = AgentProvider | ''; constant KNOWN_MAIN_TABS (line 107) | const KNOWN_MAIN_TABS: SettingsMainTab[] = ['agents', 'appearance', 'git... function useSettingsController (line 207) | function useSettingsController({ isOpen, initialTab, projects, onClose }... FILE: src/components/settings/types/types.ts type SettingsMainTab (line 3) | type SettingsMainTab = 'agents' | 'appearance' | 'git' | 'api' | 'tasks'... type AgentProvider (line 4) | type AgentProvider = 'claude' | 'cursor' | 'codex' | 'gemini'; type AgentCategory (line 5) | type AgentCategory = 'account' | 'permissions' | 'mcp'; type ProjectSortOrder (line 6) | type ProjectSortOrder = 'name' | 'date'; type SaveStatus (line 7) | type SaveStatus = 'success' | 'error' | null; type CodexPermissionMode (line 8) | type CodexPermissionMode = 'default' | 'acceptEdits' | 'bypassPermissions'; type GeminiPermissionMode (line 9) | type GeminiPermissionMode = 'default' | 'auto_edit' | 'yolo'; type McpImportMode (line 10) | type McpImportMode = 'form' | 'json'; type McpScope (line 11) | type McpScope = 'user' | 'local'; type McpTransportType (line 12) | type McpTransportType = 'stdio' | 'sse' | 'http'; type SettingsProject (line 14) | type SettingsProject = { type AuthStatus (line 21) | type AuthStatus = { type KeyValueMap (line 29) | type KeyValueMap = Record; type McpServerConfig (line 31) | type McpServerConfig = { type McpServer (line 40) | type McpServer = { type ClaudeMcpFormConfig (line 52) | type ClaudeMcpFormConfig = { type ClaudeMcpFormState (line 61) | type ClaudeMcpFormState = { type CodexMcpFormConfig (line 72) | type CodexMcpFormConfig = { type CodexMcpFormState (line 78) | type CodexMcpFormState = { type McpTestResult (line 84) | type McpTestResult = { type McpTool (line 91) | type McpTool = { type McpToolsResult (line 96) | type McpToolsResult = { type ClaudePermissionsState (line 103) | type ClaudePermissionsState = { type NotificationPreferencesState (line 109) | type NotificationPreferencesState = { type CursorPermissionsState (line 121) | type CursorPermissionsState = { type CodeEditorSettingsState (line 127) | type CodeEditorSettingsState = { type SettingsStoragePayload (line 135) | type SettingsStoragePayload = { type SettingsProps (line 141) | type SettingsProps = { type SetState (line 148) | type SetState = Dispatch>; FILE: src/components/settings/view/Settings.tsx function Settings (line 19) | function Settings({ isOpen, onClose, projects = [], initialTab = 'agents... FILE: src/components/settings/view/SettingsCard.tsx type SettingsCardProps (line 4) | type SettingsCardProps = { function SettingsCard (line 10) | function SettingsCard({ children, className, divided }: SettingsCardProp... FILE: src/components/settings/view/SettingsMainTabs.tsx type SettingsMainTabsProps (line 5) | type SettingsMainTabsProps = { type MainTabConfig (line 10) | type MainTabConfig = { constant TAB_CONFIG (line 17) | const TAB_CONFIG: MainTabConfig[] = [ function SettingsMainTabs (line 27) | function SettingsMainTabs({ activeTab, onChange }: SettingsMainTabsProps) { FILE: src/components/settings/view/SettingsRow.tsx type SettingsRowProps (line 4) | type SettingsRowProps = { function SettingsRow (line 11) | function SettingsRow({ label, description, children, className }: Settin... FILE: src/components/settings/view/SettingsSection.tsx type SettingsSectionProps (line 4) | type SettingsSectionProps = { function SettingsSection (line 11) | function SettingsSection({ title, description, children, className }: Se... FILE: src/components/settings/view/SettingsSidebar.tsx type SettingsSidebarProps (line 7) | type SettingsSidebarProps = { type NavItem (line 12) | type NavItem = { constant NAV_ITEMS (line 18) | const NAV_ITEMS: NavItem[] = [ function SettingsSidebar (line 28) | function SettingsSidebar({ activeTab, onChange }: SettingsSidebarProps) { FILE: src/components/settings/view/SettingsToggle.tsx type SettingsToggleProps (line 3) | type SettingsToggleProps = { function SettingsToggle (line 10) | function SettingsToggle({ checked, onChange, ariaLabel, disabled }: Sett... FILE: src/components/settings/view/modals/ClaudeMcpFormModal.tsx type ClaudeMcpFormModalProps (line 9) | type ClaudeMcpFormModalProps = { function ClaudeMcpFormModal (line 49) | function ClaudeMcpFormModal({ FILE: src/components/settings/view/modals/CodexMcpFormModal.tsx type CodexMcpFormModalProps (line 9) | type CodexMcpFormModalProps = { function CodexMcpFormModal (line 30) | function CodexMcpFormModal({ FILE: src/components/settings/view/tabs/AppearanceSettingsTab.tsx type AppearanceSettingsTabProps (line 10) | type AppearanceSettingsTabProps = { function AppearanceSettingsTab (line 21) | function AppearanceSettingsTab({ FILE: src/components/settings/view/tabs/NotificationsSettingsTab.tsx type NotificationsSettingsTabProps (line 5) | type NotificationsSettingsTabProps = { function NotificationsSettingsTab (line 15) | function NotificationsSettingsTab({ FILE: src/components/settings/view/tabs/agents-settings/AgentListItem.tsx type AgentListItemProps (line 5) | type AgentListItemProps = { type AgentConfig (line 13) | type AgentConfig = { function AgentListItem (line 52) | function AgentListItem({ FILE: src/components/settings/view/tabs/agents-settings/AgentsSettingsTab.tsx function AgentsSettingsTab (line 8) | function AgentsSettingsTab({ FILE: src/components/settings/view/tabs/agents-settings/sections/AgentCategoryContentSection.tsx function AgentCategoryContentSection (line 6) | function AgentCategoryContentSection({ FILE: src/components/settings/view/tabs/agents-settings/sections/AgentCategoryTabsSection.tsx constant AGENT_CATEGORIES (line 6) | const AGENT_CATEGORIES: AgentCategory[] = ['account', 'permissions', 'mc... function AgentCategoryTabsSection (line 8) | function AgentCategoryTabsSection({ FILE: src/components/settings/view/tabs/agents-settings/sections/AgentSelectorSection.tsx constant AGENT_PROVIDERS (line 6) | const AGENT_PROVIDERS: AgentProvider[] = ['claude', 'cursor', 'codex', '... constant AGENT_NAMES (line 8) | const AGENT_NAMES: Record = { function AgentSelectorSection (line 15) | function AgentSelectorSection({ FILE: src/components/settings/view/tabs/agents-settings/sections/content/AccountContent.tsx type AccountContentProps (line 7) | type AccountContentProps = { type AgentVisualConfig (line 13) | type AgentVisualConfig = { function AccountContent (line 59) | function AccountContent({ agent, authStatus, onLogin }: AccountContentPr... FILE: src/components/settings/view/tabs/agents-settings/sections/content/McpServersContent.tsx type ClaudeMcpServersProps (line 31) | type ClaudeMcpServersProps = { function ClaudeMcpServers (line 45) | function ClaudeMcpServers({ type CursorMcpServersProps (line 186) | type CursorMcpServersProps = { function CursorMcpServers (line 194) | function CursorMcpServers({ servers, onAdd, onEdit, onDelete }: Omit; type AgentsSettingsTabProps (line 21) | type AgentsSettingsTabProps = { type AgentCategoryTabsSectionProps (line 53) | type AgentCategoryTabsSectionProps = { type AgentSelectorSectionProps (line 58) | type AgentSelectorSectionProps = { type AgentCategoryContentSectionProps (line 64) | type AgentCategoryContentSectionProps = { FILE: src/components/settings/view/tabs/api-settings/CredentialsSettingsTab.tsx function CredentialsSettingsTab (line 9) | function CredentialsSettingsTab() { FILE: src/components/settings/view/tabs/api-settings/sections/ApiKeysSection.tsx type ApiKeysSectionProps (line 6) | type ApiKeysSectionProps = { function ApiKeysSection (line 18) | function ApiKeysSection({ FILE: src/components/settings/view/tabs/api-settings/sections/GithubCredentialsSection.tsx type GithubCredentialsSectionProps (line 6) | type GithubCredentialsSectionProps = { function GithubCredentialsSection (line 24) | function GithubCredentialsSection({ FILE: src/components/settings/view/tabs/api-settings/sections/NewApiKeyAlert.tsx type NewApiKeyAlertProps (line 6) | type NewApiKeyAlertProps = { function NewApiKeyAlert (line 13) | function NewApiKeyAlert({ FILE: src/components/settings/view/tabs/api-settings/sections/VersionInfoSection.tsx type VersionInfoSectionProps (line 5) | type VersionInfoSectionProps = { function VersionInfoSection (line 12) | function VersionInfoSection({ FILE: src/components/settings/view/tabs/api-settings/types.ts type ApiKeyItem (line 1) | type ApiKeyItem = { type CreatedApiKey (line 10) | type CreatedApiKey = { type GithubCredentialItem (line 17) | type GithubCredentialItem = { type ApiKeysResponse (line 25) | type ApiKeysResponse = { type GithubCredentialsResponse (line 32) | type GithubCredentialsResponse = { FILE: src/components/settings/view/tabs/git-settings/GitSettingsTab.tsx function GitSettingsTab (line 8) | function GitSettingsTab() { FILE: src/components/settings/view/tabs/tasks-settings/TasksSettingsTab.tsx type TasksSettingsContextValue (line 8) | type TasksSettingsContextValue = { function TasksSettingsTab (line 15) | function TasksSettingsTab() { FILE: src/components/shell/constants/constants.ts constant CODEX_DEVICE_AUTH_URL (line 3) | const CODEX_DEVICE_AUTH_URL = 'https://auth.openai.com/codex/device'; constant SHELL_RESTART_DELAY_MS (line 4) | const SHELL_RESTART_DELAY_MS = 200; constant TERMINAL_INIT_DELAY_MS (line 5) | const TERMINAL_INIT_DELAY_MS = 100; constant TERMINAL_RESIZE_DELAY_MS (line 6) | const TERMINAL_RESIZE_DELAY_MS = 50; constant PROMPT_DEBOUNCE_MS (line 9) | const PROMPT_DEBOUNCE_MS = 500; constant PROMPT_BUFFER_SCAN_LINES (line 10) | const PROMPT_BUFFER_SCAN_LINES = 20; constant PROMPT_OPTION_SCAN_LINES (line 11) | const PROMPT_OPTION_SCAN_LINES = 15; constant PROMPT_MAX_OPTIONS (line 12) | const PROMPT_MAX_OPTIONS = 5; constant PROMPT_MIN_OPTIONS (line 13) | const PROMPT_MIN_OPTIONS = 2; constant TERMINAL_OPTIONS (line 15) | const TERMINAL_OPTIONS: ITerminalOptions = { FILE: src/components/shell/hooks/useShellConnection.ts constant ANSI_ESCAPE_REGEX (line 9) | const ANSI_ESCAPE_REGEX = constant PROCESS_EXIT_REGEX (line 11) | const PROCESS_EXIT_REGEX = /Process exited with code (\d+)/; type UseShellConnectionOptions (line 13) | type UseShellConnectionOptions = { type UseShellConnectionResult (line 30) | type UseShellConnectionResult = { function useShellConnection (line 38) | function useShellConnection({ FILE: src/components/shell/hooks/useShellRuntime.ts function useShellRuntime (line 9) | function useShellRuntime({ FILE: src/components/shell/hooks/useShellTerminal.ts type UseShellTerminalOptions (line 19) | type UseShellTerminalOptions = { type UseShellTerminalResult (line 34) | type UseShellTerminalResult = { function useShellTerminal (line 40) | function useShellTerminal({ FILE: src/components/shell/types/types.ts type AuthCopyStatus (line 6) | type AuthCopyStatus = 'idle' | 'copied' | 'failed'; type ShellInitMessage (line 8) | type ShellInitMessage = { type ShellResizeMessage (line 20) | type ShellResizeMessage = { type ShellInputMessage (line 26) | type ShellInputMessage = { type ShellOutgoingMessage (line 31) | type ShellOutgoingMessage = ShellInitMessage | ShellResizeMessage | Shel... type ShellIncomingMessage (line 33) | type ShellIncomingMessage = type UseShellRuntimeOptions (line 39) | type UseShellRuntimeOptions = { type ShellSharedRefs (line 51) | type ShellSharedRefs = { type UseShellRuntimeResult (line 63) | type UseShellRuntimeResult = { FILE: src/components/shell/utils/auth.ts function isCodexLoginCommand (line 4) | function isCodexLoginCommand(command: string | null | undefined): boolean { function resolveAuthUrlForDisplay (line 8) | function resolveAuthUrlForDisplay(command: string | null | undefined, au... function getSessionDisplayName (line 16) | function getSessionDisplayName(session: ProjectSession | null | undefine... FILE: src/components/shell/utils/socket.ts function getShellWebSocketUrl (line 4) | function getShellWebSocketUrl(): string | null { function parseShellMessage (line 20) | function parseShellMessage(payload: string): ShellIncomingMessage | null { function sendSocketMessage (line 28) | function sendSocketMessage(ws: WebSocket | null, message: ShellOutgoingM... FILE: src/components/shell/utils/terminalStyles.ts constant XTERM_STYLE_ELEMENT_ID (line 1) | const XTERM_STYLE_ELEMENT_ID = 'shell-xterm-focus-style'; constant XTERM_FOCUS_STYLES (line 3) | const XTERM_FOCUS_STYLES = ` function ensureXtermFocusStyles (line 15) | function ensureXtermFocusStyles(): void { FILE: src/components/shell/view/Shell.tsx type CliPromptOption (line 22) | type CliPromptOption = { number: string; label: string }; type ShellProps (line 24) | type ShellProps = { function Shell (line 35) | function Shell({ FILE: src/components/shell/view/subcomponents/ShellConnectionOverlay.tsx type ShellConnectionOverlayProps (line 1) | type ShellConnectionOverlayProps = { function ShellConnectionOverlay (line 11) | function ShellConnectionOverlay({ FILE: src/components/shell/view/subcomponents/ShellEmptyState.tsx type ShellEmptyStateProps (line 1) | type ShellEmptyStateProps = { function ShellEmptyState (line 6) | function ShellEmptyState({ title, description }: ShellEmptyStateProps) { FILE: src/components/shell/view/subcomponents/ShellHeader.tsx type ShellHeaderProps (line 1) | type ShellHeaderProps = { function ShellHeader (line 19) | function ShellHeader({ FILE: src/components/shell/view/subcomponents/ShellMinimalView.tsx type ShellMinimalViewProps (line 6) | type ShellMinimalViewProps = { function ShellMinimalView (line 16) | function ShellMinimalView({ FILE: src/components/shell/view/subcomponents/TerminalShortcutsPanel.tsx constant SHORTCUTS (line 12) | const SHORTCUTS = [ type TerminalShortcutsPanelProps (line 20) | type TerminalShortcutsPanelProps = { function TerminalShortcutsPanel (line 28) | function TerminalShortcutsPanel({ FILE: src/components/sidebar/hooks/useSidebarController.ts type SnippetHighlight (line 23) | type SnippetHighlight = { type ConversationMatch (line 28) | type ConversationMatch = { type ConversationSession (line 37) | type ConversationSession = { type ConversationProjectResult (line 44) | type ConversationProjectResult = { type ConversationSearchResults (line 50) | type ConversationSearchResults = { type SearchProgress (line 56) | type SearchProgress = { type UseSidebarControllerArgs (line 61) | type UseSidebarControllerArgs = { function useSidebarController (line 78) | function useSidebarController({ FILE: src/components/sidebar/types/types.ts type ProjectSortOrder (line 3) | type ProjectSortOrder = 'name' | 'date'; type SessionWithProvider (line 5) | type SessionWithProvider = ProjectSession & { type AdditionalSessionsByProject (line 9) | type AdditionalSessionsByProject = Record; type LoadingSessionsByProject (line 10) | type LoadingSessionsByProject = Record; type DeleteProjectConfirmation (line 12) | type DeleteProjectConfirmation = { type SessionDeleteConfirmation (line 17) | type SessionDeleteConfirmation = { type SidebarProps (line 24) | type SidebarProps = { type SessionViewModel (line 43) | type SessionViewModel = { type MCPServerStatus (line 53) | type MCPServerStatus = { type SettingsProject (line 58) | type SettingsProject = Pick = { constant PRIORITY_ORDER (line 13) | const PRIORITY_ORDER: Record = { function toComparableIdParts (line 19) | function toComparableIdParts(taskId: string | number): number[] { function compareTaskIds (line 26) | function compareTaskIds(leftId: string | number, rightId: string | numbe... function getSortValue (line 42) | function getSortValue(task: TaskMasterTask, field: TaskBoardSortField): ... function sortTasks (line 63) | function sortTasks( function toggleSortOrder (line 90) | function toggleSortOrder( FILE: src/components/task-master/view/NextTaskBanner.tsx type NextTaskBannerProps (line 19) | type NextTaskBannerProps = { function PriorityIndicator (line 25) | function PriorityIndicator({ priority }: { priority?: string }) { function NextTaskBanner (line 49) | function NextTaskBanner({ onShowAllTasks = null, onStartTask = null, cla... FILE: src/components/task-master/view/TaskBoard.tsx type TaskBoardProps (line 14) | type TaskBoardProps = { function TaskBoard (line 27) | function TaskBoard({ FILE: src/components/task-master/view/TaskBoardContent.tsx type TaskBoardContentProps (line 7) | type TaskBoardContentProps = { function KanbanColumns (line 16) | function KanbanColumns({ function TaskBoardContent (line 85) | function TaskBoardContent({ FILE: src/components/task-master/view/TaskBoardToolbar.tsx type TaskBoardToolbarProps (line 19) | type TaskBoardToolbarProps = { function TaskBoardToolbar (line 48) | function TaskBoardToolbar({ FILE: src/components/task-master/view/TaskCard.tsx type TaskCardProps (line 17) | type TaskCardProps = { type TaskStatusStyle (line 24) | type TaskStatusStyle = { function getStatusStyle (line 31) | function getStatusStyle(status?: string): TaskStatusStyle { function renderPriorityIcon (line 85) | function renderPriorityIcon(priority?: string) { function getSubtaskProgress (line 125) | function getSubtaskProgress(task: TaskMasterTask): { completed: number; ... function TaskCard (line 134) | function TaskCard({ task, onClick = null, showParent = false, className ... FILE: src/components/task-master/view/TaskDetailModal.tsx type TaskDetailModalProps (line 22) | type TaskDetailModalProps = { constant STATUS_OPTIONS (line 32) | const STATUS_OPTIONS = [ function getStatusIcon (line 41) | function getStatusIcon(status?: string) { function getPriorityBadgeClass (line 50) | function getPriorityBadgeClass(priority?: string): string { function TaskDetailModal (line 57) | function TaskDetailModal({ FILE: src/components/task-master/view/TaskEmptyState.tsx type TaskEmptyStateProps (line 6) | type TaskEmptyStateProps = { function TaskEmptyState (line 15) | function TaskEmptyState({ FILE: src/components/task-master/view/TaskMasterPanel.tsx type TaskMasterPanelProps (line 9) | type TaskMasterPanelProps = { constant PRD_SAVE_MESSAGE (line 13) | const PRD_SAVE_MESSAGE = 'PRD saved successfully!'; function TaskMasterPanel (line 15) | function TaskMasterPanel({ isVisible }: TaskMasterPanelProps) { FILE: src/components/task-master/view/modals/CreateTaskModal.tsx type CreateTaskModalProps (line 3) | type CreateTaskModalProps = { function CreateTaskModal (line 8) | function CreateTaskModal({ isOpen, onClose }: CreateTaskModalProps) { FILE: src/components/task-master/view/modals/TaskHelpModal.tsx type TaskHelpModalProps (line 4) | type TaskHelpModalProps = { type HelpStep (line 10) | type HelpStep = { function TaskHelpModal (line 17) | function TaskHelpModal({ isOpen, onClose, onCreatePrd }: TaskHelpModalPr... FILE: src/components/task-master/view/modals/TaskMasterSetupModal.tsx type TaskMasterSetupModalProps (line 8) | type TaskMasterSetupModalProps = { function TaskMasterSetupModal (line 15) | function TaskMasterSetupModal({ isOpen, project, onClose, onAfterClose =... FILE: src/components/task-master/view/shared/TaskFiltersPanel.tsx type TaskFiltersPanelProps (line 4) | type TaskFiltersPanelProps = { function TaskFiltersPanel (line 20) | function TaskFiltersPanel({ FILE: src/components/task-master/view/shared/TaskQuickSortBar.tsx type TaskQuickSortBarProps (line 6) | type TaskQuickSortBarProps = { function getSortIcon (line 12) | function getSortIcon(field: TaskBoardSortField, currentField: TaskBoardS... function TaskQuickSortBar (line 20) | function TaskQuickSortBar({ sortField, sortOrder, onSortChange }: TaskQu... FILE: src/components/version-upgrade/view/VersionUpgradeModal.tsx type VersionUpgradeModalProps (line 8) | interface VersionUpgradeModalProps { function VersionUpgradeModal (line 17) | function VersionUpgradeModal({ FILE: src/constants/config.ts constant IS_PLATFORM (line 5) | const IS_PLATFORM = import.meta.env.VITE_IS_PLATFORM === 'true'; FILE: src/contexts/PluginsContext.tsx type Plugin (line 5) | type Plugin = { type PluginsContextValue (line 23) | type PluginsContextValue = { function usePlugins (line 36) | function usePlugins() { function PluginsProvider (line 44) | function PluginsProvider({ children }: { children: ReactNode }) { FILE: src/contexts/WebSocketContext.tsx type WebSocketContextType (line 5) | type WebSocketContextType = { FILE: src/hooks/useDeviceSettings.ts type UseDeviceSettingsOptions (line 3) | type UseDeviceSettingsOptions = { function useDeviceSettings (line 31) | function useDeviceSettings(options: UseDeviceSettingsOptions = {}) { FILE: src/hooks/useLocalStorage.jsx function useLocalStorage (line 10) | function useLocalStorage(key, initialValue) { FILE: src/hooks/useProjectsState.ts type UseProjectsStateArgs (line 13) | type UseProjectsStateArgs = { type FetchProjectsOptions (line 21) | type FetchProjectsOptions = { constant VALID_TABS (line 111) | const VALID_TABS: Set = new Set(['chat', 'files', 'shell', 'git'... function useProjectsState (line 129) | function useProjectsState({ FILE: src/hooks/useSessionProtection.ts function useSessionProtection (line 3) | function useSessionProtection() { FILE: src/hooks/useUiPreferences.ts type UiPreferences (line 3) | type UiPreferences = { type UiPreferenceKey (line 12) | type UiPreferenceKey = keyof UiPreferences; type SetPreferenceAction (line 14) | type SetPreferenceAction = { type SetManyPreferencesAction (line 20) | type SetManyPreferencesAction = { type ResetPreferencesAction (line 25) | type ResetPreferencesAction = { type UiPreferencesAction (line 30) | type UiPreferencesAction = constant DEFAULTS (line 35) | const DEFAULTS: UiPreferences = { constant PREFERENCE_KEYS (line 44) | const PREFERENCE_KEYS = Object.keys(DEFAULTS) as UiPreferenceKey[]; constant VALID_KEYS (line 45) | const VALID_KEYS = new Set(PREFERENCE_KEYS); constant SYNC_EVENT (line 46) | const SYNC_EVENT = 'ui-preferences:sync'; type SyncEventDetail (line 48) | type SyncEventDetail = { function reducer (line 109) | function reducer(state: UiPreferences, action: UiPreferencesAction): UiP... function useUiPreferences (line 149) | function useUiPreferences(storageKey = 'uiPreferences') { FILE: src/hooks/useVersionCheck.ts type InstallMode (line 24) | type InstallMode = 'git' | 'npm'; FILE: src/hooks/useWebPush.ts type WebPushState (line 4) | type WebPushState = { function urlBase64ToUint8Array (line 12) | function urlBase64ToUint8Array(base64String: string): Uint8Array { function useWebPush (line 23) | function useWebPush(): WebPushState { FILE: src/lib/utils.js function cn (line 4) | function cn(...inputs) { function safeJsonParse (line 8) | function safeJsonParse(value) { FILE: src/shared/view/ui/Badge.tsx type BadgeProps (line 23) | type BadgeProps = React.HTMLAttributes & VariantProps & FILE: src/shared/view/ui/DarkModeToggle.tsx type DarkModeToggleProps (line 5) | type DarkModeToggleProps = { function DarkModeToggle (line 11) | function DarkModeToggle({ FILE: src/shared/view/ui/Input.tsx type InputProps (line 4) | type InputProps = React.InputHTMLAttributes; FILE: src/shared/view/ui/LanguageSelector.tsx type LanguageSelectorProps (line 7) | type LanguageSelectorProps = { function LanguageSelector (line 20) | function LanguageSelector({ compact = false }: LanguageSelectorProps) { FILE: src/shared/view/ui/PillBar.tsx type PillBarProps (line 5) | type PillBarProps = { function PillBar (line 10) | function PillBar({ children, className }: PillBarProps) { type PillProps (line 19) | type PillProps = { function Pill (line 26) | function Pill({ isActive, onClick, children, className }: PillProps) { FILE: src/shared/view/ui/ScrollArea.tsx type ScrollAreaProps (line 4) | type ScrollAreaProps = React.HTMLAttributes; FILE: src/shared/view/ui/Tooltip.tsx type TooltipPosition (line 4) | type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'; type TooltipProps (line 6) | type TooltipProps = { function getPositionClasses (line 14) | function getPositionClasses(position: TooltipPosition): string { function getArrowClasses (line 29) | function getArrowClasses(position: TooltipPosition): string { function Tooltip (line 44) | function Tooltip({ FILE: src/stores/useSessionStore.ts type MessageKind (line 16) | type MessageKind = type NormalizedMessage (line 32) | interface NormalizedMessage { type SessionStatus (line 70) | type SessionStatus = 'idle' | 'loading' | 'streaming' | 'error'; type SessionSlot (line 72) | interface SessionSlot { constant EMPTY (line 87) | const EMPTY: NormalizedMessage[] = []; function createEmptySlot (line 89) | function createEmptySlot(): SessionSlot { function computeMerged (line 110) | function computeMerged(server: NormalizedMessage[], realtime: Normalized... function recomputeMergedIfNeeded (line 123) | function recomputeMergedIfNeeded(slot: SessionSlot): boolean { constant STALE_THRESHOLD_MS (line 135) | const STALE_THRESHOLD_MS = 30_000; constant MAX_REALTIME_MESSAGES (line 137) | const MAX_REALTIME_MESSAGES = 500; function useSessionStore (line 141) | function useSessionStore() { type SessionStore (line 455) | type SessionStore = ReturnType; FILE: src/types/app.ts type SessionProvider (line 1) | type SessionProvider = 'claude' | 'cursor' | 'codex' | 'gemini'; type AppTab (line 3) | type AppTab = 'chat' | 'files' | 'shell' | 'git' | 'tasks' | 'preview' |... type ProjectSession (line 5) | interface ProjectSession { type ProjectSessionMeta (line 20) | interface ProjectSessionMeta { type ProjectTaskmasterInfo (line 26) | interface ProjectTaskmasterInfo { type Project (line 33) | interface Project { type LoadingProgress (line 47) | interface LoadingProgress { type ProjectsUpdatedMessage (line 56) | interface ProjectsUpdatedMessage { type LoadingProgressMessage (line 63) | interface LoadingProgressMessage extends LoadingProgress { type AppSocketMessage (line 67) | type AppSocketMessage = FILE: src/types/global.d.ts type Window (line 4) | interface Window { type EventSourceEventMap (line 10) | interface EventSourceEventMap { FILE: src/types/sharedTypes.ts type ReleaseInfo (line 1) | type ReleaseInfo = { FILE: src/utils/clipboard.ts function fallbackCopyToClipboard (line 1) | function fallbackCopyToClipboard(text: string): boolean { function copyTextToClipboard (line 29) | async function copyTextToClipboard(text: string): Promise {