SYMBOL INDEX (3382 symbols across 437 files) FILE: VSIX/src/aceHandlers.ts type BroadcastFunction (line 8) | type BroadcastFunction = (message: string) => void; function handleGoToDefinition (line 13) | async function handleGoToDefinition( function handleFindReferences (line 62) | async function handleFindReferences( function handleGetSymbols (line 111) | async function handleGetSymbols( function handleGetDiagnostics (line 168) | function handleGetDiagnostics( FILE: VSIX/src/commitMessageGenerator.ts constant GENERATING_CONTEXT_KEY (line 7) | const GENERATING_CONTEXT_KEY = 'snow-cli.commitMessageGenerating'; constant CONFIG_DIR (line 8) | const CONFIG_DIR = join(homedir(), '.snow'); constant ACTIVE_PROFILE_FILE (line 9) | const ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.json'); constant LEGACY_ACTIVE_PROFILE_FILE (line 10) | const LEGACY_ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.txt'); constant PROFILES_DIR (line 11) | const PROFILES_DIR = join(CONFIG_DIR, 'profiles'); constant LEGACY_CONFIG_FILE (line 12) | const LEGACY_CONFIG_FILE = join(CONFIG_DIR, 'config.json'); constant CUSTOM_HEADERS_FILE (line 13) | const CUSTOM_HEADERS_FILE = join(CONFIG_DIR, 'custom-headers.json'); constant MAX_DIFF_CHARS (line 14) | const MAX_DIFF_CHARS = 120_000; constant API_MAX_RETRIES (line 15) | const API_MAX_RETRIES = 5; constant API_RETRY_BASE_DELAY_MS (line 16) | const API_RETRY_BASE_DELAY_MS = 1000; type GenerateCommitMessageOptions (line 20) | interface GenerateCommitMessageOptions { type RequestMethod (line 24) | type RequestMethod = 'chat' | 'responses' | 'gemini' | 'anthropic'; type SnowApiConfig (line 26) | interface SnowApiConfig { type SnowAppConfig (line 37) | interface SnowAppConfig { type GitExtension (line 41) | interface GitExtension { type GitAPI (line 45) | interface GitAPI { type GitRepository (line 49) | interface GitRepository { type DiffPayload (line 56) | interface DiffPayload { type CustomHeadersConfig (line 62) | interface CustomHeadersConfig { function registerCommitMessageCommands (line 70) | function registerCommitMessageCommands( function generateCommitMessageWithRequirements (line 94) | async function generateCommitMessageWithRequirements(): Promise { function generateCommitMessage (line 116) | async function generateCommitMessage( function cancelCommitMessageGeneration (line 189) | function cancelCommitMessageGeneration(): void { function getTargetRepository (line 193) | async function getTargetRepository(): Promise { function collectDiffPayload (line 223) | async function collectDiffPayload( function execGit (line 248) | function execGit( function requestCommitMessage (line 289) | async function requestCommitMessage( function loadActiveSnowConfig (line 319) | function loadActiveSnowConfig(): SnowApiConfig { function getActiveProfileName (line 334) | function getActiveProfileName(): string { function readJsonFile (line 350) | function readJsonFile(filePath: string): T | undefined { function buildPrompt (line 362) | function buildPrompt( function requestChatCommitMessage (line 385) | async function requestChatCommitMessage( function requestResponsesCommitMessage (line 410) | async function requestResponsesCommitMessage( function requestGeminiCommitMessage (line 432) | async function requestGeminiCommitMessage( function requestAnthropicCommitMessage (line 468) | async function requestAnthropicCommitMessage( function buildHeaders (line 500) | function buildHeaders( function loadCustomHeaders (line 524) | function loadCustomHeaders(config: SnowApiConfig): Record { function readResponseJson (line 542) | async function readResponseJson( class ApiRequestError (line 559) | class ApiRequestError extends Error { method constructor (line 560) | constructor( function withApiRetry (line 571) | async function withApiRetry( function isRetriableApiError (line 602) | function isRetriableApiError(error: unknown): boolean { function delay (line 628) | function delay(ms: number, signal: AbortSignal): Promise { function extractResponsesText (line 654) | function extractResponsesText(data: any): string { function normalizeCommitMessage (line 667) | function normalizeCommitMessage(message: string): string { function trimTrailingSlash (line 684) | function trimTrailingSlash(value: string): string { function createAbortError (line 688) | function createAbortError(): Error { function isAbortError (line 694) | function isAbortError(error: unknown): boolean { FILE: VSIX/src/diffHandlers.ts function ensureContentProvidersRegistered (line 23) | function ensureContentProvidersRegistered(): void { function disposeContentProviders (line 45) | function disposeContentProviders(): void { function showGitDiff (line 61) | async function showGitDiff(filePath: string): Promise { function registerDiffCommands (line 132) | function registerDiffCommands( FILE: VSIX/src/extension.ts function getConfig (line 26) | function getConfig(key: string, fallback: T): T { function refreshStartupCommandManager (line 30) | function refreshStartupCommandManager(): void { function applySidebarContext (line 36) | function applySidebarContext(): void { function getWorkspaceFolderForActiveEditor (line 45) | function getWorkspaceFolderForActiveEditor(): string | undefined { function getSplitTerminalShellFamily (line 55) | function getSplitTerminalShellFamily(): ShellFamily { function getExistingSplitSnowTerminal (line 59) | function getExistingSplitSnowTerminal(): vscode.Terminal | undefined { function openSplitTerminal (line 71) | async function openSplitTerminal(): Promise { function ensureSplitSnowTerminal (line 99) | async function ensureSplitSnowTerminal(): Promise { function sendFilePathsToSplitTerminal (line 108) | async function sendFilePathsToSplitTerminal(paths: string[]): Promise { function formatSelectionLocation (line 150) | function formatSelectionLocation( function checkExtensionVersionChange (line 176) | function checkExtensionVersionChange(context: vscode.ExtensionContext): ... function activate (line 205) | function activate(context: vscode.ExtensionContext) { function deactivate (line 405) | function deactivate() { FILE: VSIX/src/gitBlameProvider.ts type CommitMeta (line 5) | interface CommitMeta { type LineBlame (line 12) | interface LineBlame { type BlameCache (line 17) | interface BlameCache { constant UNCOMMITTED_HASH (line 22) | const UNCOMMITTED_HASH = '0000000000000000000000000000000000000000'; constant HASH_LINE_RE (line 23) | const HASH_LINE_RE = /^([0-9a-f]{40}) (\d+) (\d+)/; constant MAX_CACHE_FILES (line 24) | const MAX_CACHE_FILES = 10; constant MAX_BUFFER (line 25) | const MAX_BUFFER = 10 * 1024 * 1024; function createDecorationTypes (line 35) | function createDecorationTypes(): void { function formatRelativeTime (line 53) | function formatRelativeTime(timestamp: number): string { function formatBlameAnnotation (line 63) | function formatBlameAnnotation(blame: LineBlame): string { function formatFileAnnotation (line 71) | function formatFileAnnotation(blame: LineBlame, maxAuthorLen: number): s... function getRepoRoot (line 78) | function getRepoRoot(filePath: string): string | undefined { function cancelPendingBlame (line 84) | function cancelPendingBlame(): void { function runGitBlame (line 91) | function runGitBlame(filePath: string): Promise<(LineBlame | undefined)[... function parsePorcelainBlame (line 118) | function parsePorcelainBlame(output: string): (LineBlame | undefined)[] { function evictOldestCache (line 157) | function evictOldestCache(): void { function getBlameData (line 163) | async function getBlameData(document: vscode.TextDocument): Promise<(Lin... function updateCurrentLineBlame (line 183) | async function updateCurrentLineBlame(editor: vscode.TextEditor): Promis... function showFileAnnotations (line 207) | async function showFileAnnotations(editor: vscode.TextEditor): Promise; type EnsureOptions (line 28) | type EnsureOptions = {focus?: boolean}; type RestartOptions (line 29) | type RestartOptions = { type ReloadFrontendOptions (line 33) | type ReloadFrontendOptions = {focusAfterReady?: boolean}; type OutputLogLevel (line 35) | type OutputLogLevel = 'debug' | 'info' | 'warn' | 'error'; type LogScope (line 36) | type LogScope = 'SidebarTerminal' | 'Frontend'; type FrontendLogMessage (line 37) | type FrontendLogMessage = { type TerminalConfig (line 44) | type TerminalConfig = { type NormalizedFontConfig (line 52) | type NormalizedFontConfig = Omit; type RendererHealthStage (line 54) | type RendererHealthStage = type RendererHealthStats (line 60) | type RendererHealthStats = { type RendererHealthStatField (line 73) | type RendererHealthStatField = { constant RENDERER_HEALTH_STAT_FIELDS (line 79) | const RENDERER_HEALTH_STAT_FIELDS: readonly RendererHealthStatField[] = [ type BellSound (line 116) | type BellSound = 'beep' | 'ding' | 'chime' | 'pluck' | 'blip' | 'none'; type BellConfig (line 118) | type BellConfig = { type ExtensionToWebviewMessage (line 125) | type ExtensionToWebviewMessage = type WebviewToExtensionMessage (line 142) | type WebviewToExtensionMessage = constant RESOURCE_ROOT_SEGMENTS (line 157) | const RESOURCE_ROOT_SEGMENTS: readonly (readonly string[])[] = [ constant XTERM_SCRIPT_SEGMENTS (line 162) | const XTERM_SCRIPT_SEGMENTS: readonly (readonly string[])[] = [ constant XTERM_CSS_SEGMENTS (line 170) | const XTERM_CSS_SEGMENTS = [ constant SIDEBAR_STYLE_SEGMENTS (line 177) | const SIDEBAR_STYLE_SEGMENTS = ['res', 'sidebarTerminal.css'] as const; constant SIDEBAR_SCRIPT_SEGMENTS (line 178) | const SIDEBAR_SCRIPT_SEGMENTS = ['res', 'sidebarTerminal.js'] as const; constant OUTPUT_BUFFER_MAX_BYTES (line 180) | const OUTPUT_BUFFER_MAX_BYTES = 2 * 1024 * 1024; constant OUTPUT_TRUNCATION_NOTICE (line 181) | const OUTPUT_TRUNCATION_NOTICE = constant FOCUS_RETRY_DELAYS_MS (line 183) | const FOCUS_RETRY_DELAYS_MS = [0, 80, 240] as const; constant FONT_SIZE_MIN (line 185) | const FONT_SIZE_MIN = 8; constant FONT_SIZE_MAX (line 186) | const FONT_SIZE_MAX = 32; constant LINE_HEIGHT_MIN (line 187) | const LINE_HEIGHT_MIN = 0.8; constant LINE_HEIGHT_MAX (line 188) | const LINE_HEIGHT_MAX = 2.0; constant OUTPUT_CHANNEL_NAME (line 190) | const OUTPUT_CHANNEL_NAME = 'Snow CLI'; constant SIDEBAR_LOG_SCOPE (line 191) | const SIDEBAR_LOG_SCOPE: LogScope = 'SidebarTerminal'; constant FRONTEND_LOG_SCOPE (line 192) | const FRONTEND_LOG_SCOPE: LogScope = 'Frontend'; constant INVALID_MESSAGE_LOG_THROTTLE_MS (line 193) | const INVALID_MESSAGE_LOG_THROTTLE_MS = 5000; constant RESTART_SETTLE_DELAY_MS (line 194) | const RESTART_SETTLE_DELAY_MS = 150; constant RESTART_FRONTEND_FALLBACK_MS (line 195) | const RESTART_FRONTEND_FALLBACK_MS = 3000; constant MANUAL_RESTART_DEBOUNCE_MS (line 196) | const MANUAL_RESTART_DEBOUNCE_MS = 1500; constant MAX_SIDEBAR_TERMINAL_TABS (line 197) | const MAX_SIDEBAR_TERMINAL_TABS = 5; constant SHOW_RENDERER_TEST_CONTROLS (line 199) | const SHOW_RENDERER_TEST_CONTROLS = false; constant DEFAULT_ACTION (line 201) | const DEFAULT_ACTION: LifecycleActionTemplate = { constant TRIGGER_ACTIONS (line 209) | const TRIGGER_ACTIONS: Record = { function isRecord (line 245) | function isRecord(value: unknown): value is Record { function clampNumber (line 249) | function clampNumber(value: number, min: number, max: number): number { function asOptionalNonEmptyString (line 253) | function asOptionalNonEmptyString(value: unknown): string | undefined { function normalizeFrontendLogLevel (line 261) | function normalizeFrontendLogLevel(value: unknown): OutputLogLevel { function summarizeForLog (line 273) | function summarizeForLog(value: string, maxLength = 160): string { function describeWebviewMessage (line 280) | function describeWebviewMessage(rawMessage: unknown): string { function formatUnknownError (line 303) | function formatUnknownError(error: unknown): string { function asOptionalFiniteNumber (line 310) | function asOptionalFiniteNumber(value: unknown): number | undefined { function normalizeRendererHealthStage (line 316) | function normalizeRendererHealthStage( function parseRendererHealthStatValue (line 330) | function parseRendererHealthStatValue( function parseRendererHealthStats (line 339) | function parseRendererHealthStats( function parseWebviewMessage (line 358) | function parseWebviewMessage( function mergeActions (line 442) | function mergeActions( class PendingLifecycleQueue (line 468) | class PendingLifecycleQueue { method queue (line 471) | public queue(action: LifecycleAction): void { method mergeWithPending (line 477) | public mergeWithPending(current: LifecycleAction): LifecycleAction { method take (line 486) | public take(): LifecycleAction | undefined { method clear (line 492) | public clear(): void { class SidebarTerminalProvider (line 497) | class SidebarTerminalProvider implements vscode.WebviewViewProvider { method constructor (line 524) | constructor(private readonly extensionUri: vscode.Uri) { method writeOutputLog (line 531) | private writeOutputLog( method logSidebar (line 552) | private logSidebar( method logSidebarInfo (line 560) | private logSidebarInfo(message: string, details?: string): void { method logSidebarWarn (line 564) | private logSidebarWarn(message: string, details?: string): void { method logSidebarError (line 568) | private logSidebarError(message: string, details?: string): void { method logInvalidWebviewMessage (line 572) | private logInvalidWebviewMessage(rawMessage: unknown): void { method getTerminalConfig (line 587) | private getTerminalConfig(): TerminalConfig { method normalizeFontConfig (line 598) | private normalizeFontConfig(config: TerminalConfig): NormalizedFontCon... method applyShellProfile (line 611) | private applyShellProfile(): void { method sendFontConfig (line 619) | private sendFontConfig(): void { method getBellConfig (line 624) | private getBellConfig(): BellConfig { method sendBellConfig (line 646) | public sendBellConfig(): void { method updateRendererRecoveryState (line 650) | private updateRendererRecoveryState( method getWorkspaceFolderForActiveEditor (line 680) | private getWorkspaceFolderForActiveEditor(): string | undefined { method createTab (line 690) | public createTab(options?: EnsureOptions): void { method closeActiveTab (line 718) | public closeActiveTab(options?: EnsureOptions): void { method createSession (line 726) | private createSession(): SidebarTerminalSession { method getSessionById (line 743) | private getSessionById( method getOrderedSessions (line 752) | private getOrderedSessions(): SidebarTerminalSession[] { method getActiveSession (line 761) | private getActiveSession(): SidebarTerminalSession | undefined { method ensureActiveSessionExists (line 765) | private ensureActiveSessionExists(): SidebarTerminalSession { method resizeAllRunningSessions (line 773) | private resizeAllRunningSessions(cols: number, rows: number): void { method syncTabsToWebview (line 781) | private syncTabsToWebview(): void { method syncActiveSessionToWebview (line 794) | private syncActiveSessionToWebview(options?: { method switchActiveSession (line 816) | private switchActiveSession( method closeSession (line 836) | private closeSession( method ensureTerminal (line 901) | public ensureTerminal(options?: EnsureOptions): void { method restartTerminal (line 906) | public restartTerminal(options?: RestartOptions): void { method onViewReady (line 947) | public onViewReady(): void { method onViewRecreate (line 964) | public onViewRecreate(): void { method resolveWebviewView (line 969) | public resolveWebviewView( method configureWebview (line 991) | private configureWebview(webviewView: vscode.WebviewView): void { method registerWebviewEventHandlers (line 1005) | private registerWebviewEventHandlers(webviewView: vscode.WebviewView):... method teardownRuntimeState (line 1021) | private teardownRuntimeState(): void { method handleViewDisposed (line 1032) | private handleViewDisposed(): void { method isWebviewOperational (line 1053) | private isWebviewOperational(): boolean { method handleMessage (line 1057) | private handleMessage(rawMessage: unknown): void { method handleRendererHealthMessage (line 1127) | private handleRendererHealthMessage( method writeInputToTerminal (line 1225) | private writeInputToTerminal(data: string): void { method startTerminal (line 1231) | private startTerminal(sessionId?: string): void { method handleTerminalData (line 1280) | private handleTerminalData(sessionId: string, data: string): void { method handleTerminalExit (line 1292) | private handleTerminalExit( method scheduleEnsureRunning (line 1329) | private scheduleEnsureRunning(): void { method clearEnsureRunningTimer (line 1341) | private clearEnsureRunningTimer(): void { method clearRestartCompletionTimer (line 1345) | private clearRestartCompletionTimer(): void { method clearTimer (line 1349) | private clearTimer(timer: NodeJS.Timeout | undefined): undefined { method scheduleRestartCompletion (line 1356) | private scheduleRestartCompletion(delayMs: number): void { method clearRestartingSessionState (line 1364) | private clearRestartingSessionState(): void { method finishRestart (line 1378) | private finishRestart(drainPending = true): void { method ensureTerminalRunning (line 1394) | private ensureTerminalRunning(sessionId?: string): void { method runLifecycleAction (line 1404) | private runLifecycleAction(trigger: Trigger, options?: EnsureOptions):... method applyLifecycleAction (line 1414) | private applyLifecycleAction(action: LifecycleAction): void { method executeLifecycleAction (line 1431) | private executeLifecycleAction(action: LifecycleAction): void { method executeRestart (line 1443) | private executeRestart(action: LifecycleAction): void { method reloadWebviewFrontend (line 1482) | private reloadWebviewFrontend(options?: ReloadFrontendOptions): void { method clearFocusRetryTimers (line 1502) | private clearFocusRetryTimers(): void { method requestWebviewFocus (line 1512) | private requestWebviewFocus(): void { method postWebviewMessage (line 1529) | private postWebviewMessage(message: ExtensionToWebviewMessage): void { method getExtensionResourceUri (line 1536) | private getExtensionResourceUri(segments: readonly string[]): vscode.U... method getWebviewResourceUri (line 1540) | private getWebviewResourceUri( method getHtmlForWebview (line 1547) | private getHtmlForWebview( method handleDropPaths (line 1605) | private handleDropPaths(uris: string[]): void { method sendFilePaths (line 1627) | public sendFilePaths(paths: string[]): void { method dispose (line 1646) | public dispose(): void { FILE: VSIX/src/sidebarTerminalSession.ts type SidebarTerminalSize (line 3) | type SidebarTerminalSize = {cols: number; rows: number}; type SidebarTerminalTabState (line 5) | type SidebarTerminalTabState = { type SidebarTerminalSessionOptions (line 14) | type SidebarTerminalSessionOptions = { type SidebarTerminalSessionStartHandlers (line 21) | type SidebarTerminalSessionStartHandlers = { type StartupCommandProvider (line 30) | type StartupCommandProvider = () => string | undefined; class SidebarTerminalSession (line 32) | class SidebarTerminalSession { method constructor (line 48) | constructor(options: SidebarTerminalSessionOptions) { method setResolvedShell (line 55) | public setResolvedShell(shell: ResolvedShell): void { method getShellFamily (line 59) | public getShellFamily(): ShellFamily { method start (line 63) | public start( method write (line 100) | public write(data: string): void { method resize (line 104) | public resize(cols: number, rows: number): void { method kill (line 108) | public kill(): void { method isRunning (line 112) | public isRunning(): boolean { method isRestarting (line 116) | public isRestarting(): boolean { method setRestarting (line 120) | public setRestarting(restarting: boolean): void { method suppressCurrentExitBanner (line 127) | public suppressCurrentExitBanner(): void { method clearTranscript (line 133) | public clearTranscript(): void { method appendOutput (line 140) | public appendOutput(data: string): void { method appendExitBanner (line 156) | public appendExitBanner(code: number): void { method getTranscript (line 161) | public getTranscript(): string { method toTabState (line 168) | public toTabState(isActive: boolean): SidebarTerminalTabState { FILE: VSIX/src/startupCommandManager.ts constant DEFAULT_STARTUP_COMMAND (line 1) | const DEFAULT_STARTUP_COMMAND = 'snow'; function normalizeStartupCommand (line 3) | function normalizeStartupCommand(command: string): string | undefined { function parseStartupCommands (line 8) | function parseStartupCommands(rawConfig: string | undefined): string[] { class StartupCommandManager (line 19) | class StartupCommandManager { method setStartupCommandConfig (line 23) | public setStartupCommandConfig(rawConfig: string | undefined): void { method getNextStartupCommand (line 28) | public getNextStartupCommand(): string | undefined { FILE: VSIX/src/terminalPathFormatter.ts type TerminalPathFormatOptions (line 3) | type TerminalPathFormatOptions = { function quoteForPowerShell (line 8) | function quoteForPowerShell(path: string): string { function quoteForCmd (line 12) | function quoteForCmd(path: string): string { function quoteForBash (line 16) | function quoteForBash(path: string): string { function formatTerminalPathPayload (line 20) | function formatTerminalPathPayload( FILE: VSIX/src/terminalProxy.ts type TerminalProxyEnv (line 3) | type TerminalProxyEnv = Record; function asOptionalNonEmptyString (line 5) | function asOptionalNonEmptyString(value: string | undefined): string | u... function getConfiguredSnowTerminalProxyUrl (line 10) | function getConfiguredSnowTerminalProxyUrl(): string | undefined { function getVsCodeHttpProxyUrl (line 18) | function getVsCodeHttpProxyUrl(): string | undefined { function hasExplicitSnowTerminalProxyUrl (line 23) | function hasExplicitSnowTerminalProxyUrl(): boolean { function getSnowTerminalProxyUrl (line 27) | function getSnowTerminalProxyUrl(): string | undefined { function getSnowTerminalProxyEnv (line 31) | function getSnowTerminalProxyEnv(): TerminalProxyEnv | undefined { FILE: VSIX/src/webSocketServer.ts constant BASE_PORT (line 19) | const BASE_PORT = 9527; constant MAX_PORT (line 20) | const MAX_PORT = 9537; function normalizePath (line 34) | function normalizePath(filePath: string | undefined): string | undefined { function getWorkspaceFolderKeys (line 50) | function getWorkspaceFolderKeys(): string[] { function getWorkspaceFolderForEditor (line 68) | function getWorkspaceFolderForEditor( function broadcast (line 81) | function broadcast(message: string): void { function isTrackableEditor (line 89) | function isTrackableEditor( function getTrackableVisibleEditors (line 95) | function getTrackableVisibleEditors(): vscode.TextEditor[] { function getFallbackEditor (line 99) | function getFallbackEditor( function sendEditorContext (line 117) | function sendEditorContext(): void { function handleMessage (line 168) | function handleMessage(message: string): void { function startWebSocketServer (line 233) | function startWebSocketServer(): void { function stopWebSocketServer (line 324) | function stopWebSocketServer(): void { function getActualPort (line 363) | function getActualPort(): number { function getClientCount (line 370) | function getClientCount(): number { FILE: build.mjs method setup (line 9) | setup(build) { FILE: scripts/postinstall.cjs function detectRegion (line 22) | function detectRegion() { function getCurrentRegistry (line 48) | function getCurrentRegistry() { function checkNodeVersion (line 60) | function checkNodeVersion() { function tryInstallSharp (line 85) | function tryInstallSharp() { function main (line 111) | async function main() { FILE: source/agents/bashOutputSummaryAgent.ts class BashOutputSummaryAgent (line 14) | class BashOutputSummaryAgent { method initialize (line 19) | private async initialize(): Promise { method clearCache (line 36) | clearCache(): void { method isAvailable (line 42) | async isAvailable(): Promise { method callModel (line 49) | private async callModel( method summarizeCommandResult (line 124) | async summarizeCommandResult( FILE: source/agents/codebaseIndexAgent.ts type ProgressCallback (line 22) | type ProgressCallback = (progress: { class CodebaseIndexAgent (line 35) | class CodebaseIndexAgent { method constructor (line 102) | constructor(projectRoot: string) { method start (line 118) | async start(progressCallback?: ProgressCallback): Promise { method stop (line 282) | async stop(): Promise { method isIndexing (line 302) | isIndexing(): boolean { method getProgress (line 309) | async getProgress() { method clear (line 321) | clear(): void { method close (line 328) | close(): void { method isWatcherEnabled (line 336) | async isWatcherEnabled(): Promise { method startWatching (line 348) | startWatching(progressCallback?: ProgressCallback): void { method stopWatching (line 449) | stopWatching(): void { method waitForWatcherClose (line 472) | async waitForWatcherClose(): Promise { method debounceFileChange (line 482) | private debounceFileChange(filePath: string, relativePath: string): vo... method handleFileChange (line 501) | private async handleFileChange( method loadGitignore (line 533) | private loadGitignore(): void { method addDefaultIgnorePatterns (line 544) | private addDefaultIgnorePatterns(): void { method scanFiles (line 568) | public async scanFiles(): Promise { method countFiles (line 623) | public async countFiles(): Promise { method processFiles (line 631) | private async processFiles(files: string[]): Promise { method processFile (line 657) | private async processFile(filePath: string): Promise { method splitIntoChunks (line 824) | private splitIntoChunks(content: string, filePath: string): CodeChunk[] { method splitDocumentIntoChunks (line 881) | private splitDocumentIntoChunks( method extractDetailedError (line 971) | private extractDetailedError(error: unknown): string { method notifyProgress (line 994) | private notifyProgress(progress: { FILE: source/agents/codebaseReviewAgent.ts class CodebaseReviewAgent (line 16) | class CodebaseReviewAgent { method initialize (line 66) | private async initialize(): Promise { method clearCache (line 96) | clearCache(): void { method isAvailable (line 105) | async isAvailable(): Promise { method callModel (line 116) | private async callModel( method tryParseJSON (line 236) | private tryParseJSON(response: string): any | null { method reviewWithRetry (line 267) | private async reviewWithRetry( method sleep (line 428) | private sleep(ms: number): Promise { method reviewResults (line 441) | async reviewResults( FILE: source/agents/compactAgent.ts class CompactAgent (line 29) | class CompactAgent { method initialize (line 38) | private async initialize(): Promise { method clearCache (line 61) | clearCache(): void { method isAvailable (line 70) | async isAvailable(): Promise { method callCompactModel (line 85) | private async callCompactModel( method extractWebPageContent (line 279) | async extractWebPageContent( FILE: source/agents/reviewAgent.ts class ReviewAgent (line 15) | class ReviewAgent { method initialize (line 24) | private async initialize(): Promise { method clearCache (line 46) | clearCache(): void { method isAvailable (line 55) | async isAvailable(): Promise { method findGitRoot (line 67) | private findGitRoot(startDir: string): string | null { method checkGitRepository (line 86) | checkGitRepository(): {isGitRepo: boolean; gitRoot?: string; error?: s... method getWorkingTreeStatus (line 126) | getWorkingTreeStatus(gitRoot: string): { method getStagedDiff (line 188) | getStagedDiff(gitRoot: string): string { method getUnstagedDiff (line 216) | getUnstagedDiff(gitRoot: string): string { method getGitDiff (line 244) | getGitDiff(gitRoot: string): string { method runGit (line 283) | private runGit( method assertSafeCommitSha (line 300) | private assertSafeCommitSha(sha: string): void { method normalizeNonNegativeInt (line 306) | private normalizeNonNegativeInt(value: number, name: string): number { method listCommitsPaginated (line 313) | listCommitsPaginated( method getCommitPatch (line 373) | getCommitPatch(gitRoot: string, sha: string): string { method generateReviewPrompt (line 400) | private generateReviewPrompt(gitDiff: string): string { method callAdvancedModel (line 429) | private async *callAdvancedModel( method reviewChanges (line 508) | async *reviewChanges( FILE: source/agents/summaryAgent.ts class SummaryAgent (line 22) | class SummaryAgent { method initialize (line 31) | private async initialize(): Promise { method clearCache (line 61) | clearCache(): void { method isAvailable (line 70) | async isAvailable(): Promise { method callModel (line 84) | private async callModel( method generateSummary (line 184) | async generateSummary( method applyTerminalTitle (line 202) | private applyTerminalTitle(title: string | undefined): void { method generateSummaryInternal (line 218) | private async generateSummaryInternal( method generateFallbackSummary (line 310) | private generateFallbackSummary( method truncateString (line 332) | private truncateString(str: string, maxLength: number): string { FILE: source/api/anthropic.ts type AnthropicOptions (line 24) | interface AnthropicOptions { type AnthropicStreamChunk (line 43) | interface AnthropicStreamChunk { type AnthropicTool (line 70) | interface AnthropicTool { type AnthropicMessageParam (line 77) | interface AnthropicMessageParam { function toAnthropicImageSource (line 102) | function toAnthropicImageSource(image: { function resetAnthropicClient (line 140) | function resetAnthropicClient(): void { function getPersistentUserId (line 153) | function getPersistentUserId(): string { function convertToolsToAnthropic (line 174) | function convertToolsToAnthropic( function convertToAnthropicMessages (line 211) | function convertToAnthropicMessages( FILE: source/api/chat.ts type ChatCompletionOptions (line 34) | interface ChatCompletionOptions { type ChatCompletionChunk (line 58) | interface ChatCompletionChunk { type ChatCompletionMessageParam (line 82) | interface ChatCompletionMessageParam { function convertToOpenAIMessages (line 105) | function convertToOpenAIMessages( function resetApiClient (line 293) | function resetApiClient(): void { type StreamChunk (line 297) | interface StreamChunk { function validateChatOptions (line 752) | function validateChatOptions(options: ChatCompletionOptions): string[] { FILE: source/api/embedding.ts type EmbeddingOptions (line 6) | interface EmbeddingOptions { type EmbeddingResponse (line 15) | interface EmbeddingResponse { type OllamaEmbeddingsMode (line 29) | type OllamaEmbeddingsMode = 'openai' | 'ollama'; type OllamaEmbeddingResponse (line 31) | interface OllamaEmbeddingResponse { type GeminiEmbeddingResponse (line 39) | interface GeminiEmbeddingResponse { function isOpenAIEmbeddingsResponse (line 48) | function isOpenAIEmbeddingsResponse(data: any): data is EmbeddingResponse { function isOllamaEmbedResponse (line 63) | function isOllamaEmbedResponse(data: any): data is OllamaEmbeddingRespon... function isGeminiEmbedResponse (line 71) | function isGeminiEmbedResponse(data: any): data is GeminiEmbeddingRespon... function resolveOllamaEmbeddingsEndpoint (line 78) | function resolveOllamaEmbeddingsEndpoint(baseUrl: string): { function resolveOpenAICompatibleEmbeddingsEndpoint (line 113) | function resolveOpenAICompatibleEmbeddingsEndpoint(baseUrl: string): str... function warnOnDimensionMismatch (line 133) | function warnOnDimensionMismatch(params: { function normalizeOllamaResponse (line 162) | function normalizeOllamaResponse(params: { function normalizeGeminiResponse (line 224) | function normalizeGeminiResponse(params: { function createEmbeddings (line 304) | async function createEmbeddings( function createEmbedding (line 444) | async function createEmbedding( FILE: source/api/gemini.ts type GeminiOptions (line 20) | interface GeminiOptions { type GeminiStreamChunk (line 37) | interface GeminiStreamChunk { function resetGeminiClient (line 75) | function resetGeminiClient(): void { function toGeminiImagePart (line 86) | function toGeminiImagePart(image: { function convertToolsToGemini (line 130) | function convertToolsToGemini(tools?: ChatCompletionTool[]): any[] | und... function convertToGeminiMessages (line 163) | function convertToGeminiMessages( FILE: source/api/models.ts type Model (line 9) | interface Model { type ModelsResponse (line 16) | interface ModelsResponse { type GeminiModel (line 22) | interface GeminiModel { type GeminiModelsResponse (line 29) | interface GeminiModelsResponse { type AnthropicModel (line 34) | interface AnthropicModel { function fetchOpenAIModels (line 44) | async function fetchOpenAIModels( function fetchGeminiModels (line 79) | async function fetchGeminiModels( function fetchAnthropicModels (line 115) | async function fetchAnthropicModels( function fetchAvailableModels (line 175) | async function fetchAvailableModels( function filterModels (line 252) | function filterModels(models: Model[], searchTerm: string): Model[] { FILE: source/api/rerank.ts type RerankOptions (line 6) | interface RerankOptions { type RerankResult (line 16) | interface RerankResult { type RerankResponse (line 21) | interface RerankResponse { constant MAX_RETRIES (line 27) | const MAX_RETRIES = 3; constant RETRY_BASE_DELAY_MS (line 28) | const RETRY_BASE_DELAY_MS = 500; constant CONTEXT_RESERVE_RATIO (line 29) | const CONTEXT_RESERVE_RATIO = 0.95; constant SINGLE_DOC_MAX_RATIO (line 30) | const SINGLE_DOC_MAX_RATIO = 0.3; function countTokens (line 35) | async function countTokens(text: string): Promise { function truncateText (line 57) | async function truncateText( type FitResult (line 86) | interface FitResult { function fitDocumentsToContext (line 103) | async function fitDocumentsToContext( function resolveRerankEndpoint (line 168) | function resolveRerankEndpoint(baseUrl: string): string { function normalizeRerankResponse (line 187) | function normalizeRerankResponse(data: any): RerankResponse { function callRerankAPI (line 209) | async function callRerankAPI(options: { function rerankDocuments (line 264) | async function rerankDocuments( FILE: source/api/responses.ts type ResponseOptions (line 24) | interface ResponseOptions { function ensureStrictSchema (line 56) | function ensureStrictSchema( function convertToolsForResponses (line 112) | function convertToolsForResponses(tools?: ChatCompletionTool[]): type ResponseStreamChunk (line 134) | interface ResponseStreamChunk { function getResponsesReasoningConfig (line 155) | function getResponsesReasoningConfig(): { function getResponsesVerbosityConfig (line 172) | function getResponsesVerbosityConfig(): 'low' | 'medium' | 'high' { function resetApiClient (line 177) | function resetApiClient(): void { function toResponseImageUrl (line 181) | function toResponseImageUrl(image: {data: string; mimeType?: string}): s... function convertToResponseInput (line 194) | function convertToResponseInput( FILE: source/api/sse-server.ts type SSEEventType (line 7) | type SSEEventType = type SSEEvent (line 24) | interface SSEEvent { type ClientMessage (line 34) | interface ClientMessage { class SSEConnection (line 63) | class SSEConnection { method constructor (line 67) | constructor(response: ServerResponse, connectionId: string) { method sendEvent (line 90) | sendEvent(event: SSEEvent): void { method close (line 98) | close(): void { method getId (line 102) | getId(): string { class SSEServer (line 110) | class SSEServer { method constructor (line 125) | constructor(port: number = 3000) { method setLogCallback (line 132) | setLogCallback( method log (line 141) | private log( method setMessageHandler (line 155) | setMessageHandler( method start (line 168) | start(): Promise { method stop (line 190) | stop(): Promise { method bindSessionToConnection (line 213) | bindSessionToConnection(sessionId: string, connectionId: string): void { method sendToSession (line 221) | sendToSession(sessionId: string, event: SSEEvent): void { method sendToConnection (line 234) | sendToConnection(connectionId: string, event: SSEEvent): void { method readJsonBody (line 244) | private async readJsonBody(req: IncomingMessage): Promise { method getActiveConnectionId (line 263) | private getActiveConnectionId(preferred?: string): string | undefined { method handleRequest (line 276) | private handleRequest(req: IncomingMessage, res: ServerResponse): void { method handleSessionCreate (line 363) | private handleSessionCreate(req: IncomingMessage, res: ServerResponse)... method handleSessionLoad (line 397) | private handleSessionLoad(req: IncomingMessage, res: ServerResponse): ... method handleSessionRollbackPoints (line 443) | private handleSessionRollbackPoints( method handleSessionList (line 569) | private handleSessionList( method handleSessionDelete (line 627) | private handleSessionDelete( method handleContextCompress (line 669) | private handleContextCompress( method handleSSEConnection (line 789) | private handleSSEConnection(req: IncomingMessage, res: ServerResponse)... method handleMessage (line 809) | private handleMessage(req: IncomingMessage, res: ServerResponse): void { method broadcast (line 881) | broadcast(event: SSEEvent): void { method getConnectionCount (line 890) | getConnectionCount(): number { FILE: source/api/types.ts type ImageContent (line 5) | interface ImageContent { type ToolCall (line 11) | interface ToolCall { type ChatMessage (line 20) | interface ChatMessage { type ChatCompletionTool (line 57) | interface ChatCompletionTool { type UsageInfo (line 66) | interface UsageInfo { FILE: source/app.tsx type Props (line 34) | type Props = { function ShowTaskListWrapper (line 47) | function ShowTaskListWrapper() { function AppContent (line 126) | function AppContent({ function App (line 325) | function App({ FILE: source/cli.tsx constant MIN_NODE_VERSION (line 10) | const MIN_NODE_VERSION = 16; function sanitizeNodeOptions (line 33) | function sanitizeNodeOptions() { function isStreamDestroyedError (line 110) | function isStreamDestroyedError(err: unknown): boolean { constant VERSION (line 177) | const VERSION = packageJson.version; function loadDependencies (line 180) | async function loadDependencies() { function checkForUpdates (line 227) | async function checkForUpdates(currentVersion: string): Promise { FILE: source/hooks/conversation/chatLogic/types.ts type UseChatLogicProps (line 5) | interface UseChatLogicProps { FILE: source/hooks/conversation/chatLogic/useChatHandlers.ts type UseChatHandlersDeps (line 13) | interface UseChatHandlersDeps { function useChatHandlers (line 22) | function useChatHandlers( FILE: source/hooks/conversation/chatLogic/useMessageProcessing.ts type MessageTarget (line 21) | interface MessageTarget { function parseMessageTargets (line 33) | function parseMessageTargets(message: string): { function useMessageProcessing (line 71) | function useMessageProcessing(props: UseChatLogicProps) { FILE: source/hooks/conversation/chatLogic/useRemoteEvents.ts type UseRemoteEventsHandlers (line 8) | interface UseRemoteEventsHandlers { function useRemoteEvents (line 29) | function useRemoteEvents( FILE: source/hooks/conversation/chatLogic/useRollback.ts function resolveSnapshotIndex (line 43) | function resolveSnapshotIndex( function useRollback (line 76) | function useRollback(props: UseChatLogicProps) { FILE: source/hooks/conversation/core/autoCompressHandler.ts type AutoCompressOptions (line 14) | type AutoCompressOptions = { type AutoCompressResult (line 30) | type AutoCompressResult = { function handleAutoCompression (line 42) | async function handleAutoCompression( FILE: source/hooks/conversation/core/conversationSetup.ts type PreparedConversationSetup (line 14) | type PreparedConversationSetup = { function prepareConversationSetup (line 21) | async function prepareConversationSetup( function appendUserMessageAndSyncContext (line 62) | async function appendUserMessageAndSyncContext(options: { FILE: source/hooks/conversation/core/conversationTypes.ts type UserQuestionResult (line 6) | type UserQuestionResult = { type ConversationUsage (line 11) | type ConversationUsage = { type ConversationHandlerOptions (line 20) | type ConversationHandlerOptions = { type TokenEncoder (line 83) | type TokenEncoder = { type StreamRoundResult (line 87) | type StreamRoundResult = { type ToolCallRoundResult (line 99) | type ToolCallRoundResult = FILE: source/hooks/conversation/core/editorContextBuilder.ts type EditorContext (line 4) | interface EditorContext { function buildEditorContextContent (line 21) | function buildEditorContextContent( FILE: source/hooks/conversation/core/encoderManager.ts class EncoderManager (line 7) | class EncoderManager { method constructor (line 11) | constructor() { method encode (line 24) | encode(text: string): number[] { method free (line 34) | free(): void { method isFreed (line 49) | isFreed(): boolean { FILE: source/hooks/conversation/core/onStopHookHandler.ts type OnStopHookOptions (line 6) | type OnStopHookOptions = { type OnStopHookResult (line 12) | type OnStopHookResult = { function handleOnStopHooks (line 19) | async function handleOnStopHooks( FILE: source/hooks/conversation/core/pendingMessagesHandler.ts type PendingMessagesOptions (line 5) | type PendingMessagesOptions = { type PendingMessagesResult (line 17) | type PendingMessagesResult = { type BasicConversationMessage (line 25) | type BasicConversationMessage = { function isPendingSendTimingReady (line 35) | function isPendingSendTimingReady( function waitForPendingSendSignal (line 67) | async function waitForPendingSendSignal(options?: { function handlePendingMessages (line 116) | async function handlePendingMessages( FILE: source/hooks/conversation/core/sessionInitializer.ts function initializeConversationSession (line 15) | async function initializeConversationSession( FILE: source/hooks/conversation/core/streamFactory.ts type StreamFactoryOptions (line 10) | type StreamFactoryOptions = { function createStreamGenerator (line 25) | function createStreamGenerator(options: StreamFactoryOptions) { FILE: source/hooks/conversation/core/streamProcessor.ts constant TOKEN_UPDATE_INTERVAL (line 13) | const TOKEN_UPDATE_INTERVAL = 100; constant STREAM_FLUSH_INTERVAL (line 14) | const STREAM_FLUSH_INTERVAL = 80; constant THINKING_TAG_PATTERN (line 15) | const THINKING_TAG_PATTERN = /\s*<\/?think(?:ing)?>\s*/gi; constant LIST_ITEM_PATTERN (line 16) | const LIST_ITEM_PATTERN = /^\s*\d+[.)]\s|^\s*[-*+]\s/; constant LIST_CONTINUATION_PATTERN (line 17) | const LIST_CONTINUATION_PATTERN = /^\s{2,}/; function cleanThinkingContent (line 19) | function cleanThinkingContent(content: string): string { function isTableRow (line 23) | function isTableRow(line: string): boolean { function isListItemLine (line 28) | function isListItemLine(line: string): boolean { function processStreamRound (line 32) | async function processStreamRound(ctx: { FILE: source/hooks/conversation/core/subAgentMessageHandler.ts type TeammateCtxUsage (line 11) | interface TeammateCtxUsage { type TeammateStreamInfo (line 17) | interface TeammateStreamInfo { type SubAgentStreamInfo (line 25) | interface SubAgentStreamInfo { function notifyTeammateStreamListeners (line 44) | function notifyTeammateStreamListeners(): void { function notifySubAgentStreamListeners (line 50) | function notifySubAgentStreamListeners(): void { function rebuildTeammateSnapshot (line 56) | function rebuildTeammateSnapshot(): void { function rebuildSubAgentSnapshot (line 66) | function rebuildSubAgentSnapshot(): void { function setTeammateStreamEntry (line 76) | function setTeammateStreamEntry(agentId: string, agentName: string, toke... function removeTeammateStreamEntry (line 83) | function removeTeammateStreamEntry(agentId: string): void { function setSubAgentStreamEntry (line 89) | function setSubAgentStreamEntry( function removeSubAgentStreamEntry (line 115) | function removeSubAgentStreamEntry(agentId: string): void { function subscribeTeammateStream (line 121) | function subscribeTeammateStream(listener: () => void): () => void { function getTeammateStreamSnapshot (line 126) | function getTeammateStreamSnapshot(): TeammateStreamInfo[] { function subscribeSubAgentStream (line 130) | function subscribeSubAgentStream(listener: () => void): () => void { function getSubAgentStreamSnapshot (line 137) | function getSubAgentStreamSnapshot(): SubAgentStreamInfo[] { function clearAllTeammateStreamEntries (line 141) | function clearAllTeammateStreamEntries(): void { function clearAllSubAgentStreamEntries (line 148) | function clearAllSubAgentStreamEntries(): void { type CtxUsage (line 157) | type CtxUsage = {percentage: number; inputTokens: number; maxTokens: num... type StreamState (line 159) | type StreamState = { function formatTokenCount (line 179) | function formatTokenCount(tokens: number | undefined): string { function extractRejectionReason (line 187) | function extractRejectionReason(content: string): string | undefined { class SubAgentUIHandler (line 199) | class SubAgentUIHandler { method constructor (line 211) | constructor( method handleMessage (line 222) | handleMessage(prev: Message[], subAgentMessage: SubAgentMessage): Mess... method createInitialStreamState (line 265) | private createInitialStreamState(): StreamState { method getStreamState (line 284) | private getStreamState(agentId: string): StreamState { method clearStreamState (line 291) | private clearStreamState(agentId: string): void { method updateGlobalTokenCount (line 298) | private updateGlobalTokenCount(): void { method setAgentReasoning (line 320) | private setAgentReasoning(agentId: string, isReasoning: boolean): void { method addTokens (line 353) | private addTokens(agentId: string, text: string): void { method shouldFlush (line 363) | private shouldFlush(state: StreamState, now: number): boolean { method flushTokenCount (line 367) | private flushTokenCount(agentId: string, now: number): void { method emitStreamLine (line 373) | private emitStreamLine( method emitAgentTitle (line 421) | private emitAgentTitle(lines: Message[], subAgentMessage: SubAgentMess... method flushNextQueuedAgent (line 440) | private flushNextQueuedAgent(): Message[] { method cleanThinkingContent (line 473) | private cleanThinkingContent(content: string): string { method flushThinkingBuffer (line 477) | private flushThinkingBuffer( method isTableRow (line 494) | private isTableRow(line: string): boolean { method isListItemLine (line 503) | private isListItemLine(line: string): boolean { method processContentLine (line 507) | private processContentLine( method flushRemainingContentBuffers (line 605) | private flushRemainingContentBuffers( method persistCompletedResponse (line 651) | private persistCompletedResponse( method resetRoundState (line 684) | private resetRoundState(state: StreamState): void { method handleReasoningStarted (line 702) | private handleReasoningStarted( method handleReasoningDelta (line 713) | private handleReasoningDelta( method handleToolCallDelta (line 749) | private handleToolCallDelta( method handleContextUsage (line 768) | private handleContextUsage( method handleContextCompressing (line 822) | private handleContextCompressing( method handleContextCompressRetrying (line 842) | private handleContextCompressRetrying( method handleContextCompressed (line 863) | private handleContextCompressed( method handleInterAgentSent (line 889) | private handleInterAgentSent( method handleAgentSpawned (line 917) | private handleAgentSpawned( method handleSpawnedAgentCompleted (line 952) | private handleSpawnedAgentCompleted( method handleToolCalls (line 975) | private handleToolCalls( method handleToolResult (line 1124) | private handleToolResult( method handleTimeConsumingToolResult (line 1210) | private handleTimeConsumingToolResult( method handleContent (line 1332) | private handleContent( method handleDone (line 1375) | private handleDone( FILE: source/hooks/conversation/core/toolCallProcessor.ts type ProcessToolCallsOptions (line 8) | type ProcessToolCallsOptions = { function processToolCallsAfterStream (line 23) | async function processToolCallsAfterStream( FILE: source/hooks/conversation/core/toolCallRoundHandler.ts function handleToolCallRound (line 26) | async function handleToolCallRound(ctx: { FILE: source/hooks/conversation/core/toolConfirmationFlow.ts type ToolConfirmationFlowOptions (line 8) | type ToolConfirmationFlowOptions = { type ToolConfirmationFlowResult (line 28) | type ToolConfirmationFlowResult = function notifyAndRequestConfirmation (line 32) | async function notifyAndRequestConfirmation( function isRejection (line 78) | function isRejection(confirmation: ConfirmationResult): boolean { function resolveToolConfirmations (line 90) | async function resolveToolConfirmations( FILE: source/hooks/conversation/core/toolRejectionHandler.ts type ToolRejectionResult (line 6) | type ToolRejectionResult = { type ToolRejectionHandlerOptions (line 12) | type ToolRejectionHandlerOptions = { function handleToolRejection (line 25) | async function handleToolRejection( FILE: source/hooks/conversation/core/toolResultDisplay.ts function buildToolResultMessages (line 9) | function buildToolResultMessages( function extractEditDiffData (line 73) | function extractEditDiffData( FILE: source/hooks/conversation/useChatLogic.ts function useChatLogic (line 18) | function useChatLogic(props: UseChatLogicProps) { type UseChatLogicReturn (line 326) | type UseChatLogicReturn = ReturnType; FILE: source/hooks/conversation/useCommandHandler.ts function getExportMessages (line 27) | function getExportMessages() { function executeContextCompression (line 38) | async function executeContextCompression( type CommandHandlerOptions (line 384) | type CommandHandlerOptions = { function useCommandHandler (line 471) | function useCommandHandler(options: CommandHandlerOptions) { FILE: source/hooks/conversation/useConversation.ts function handleConversationWithTools (line 28) | async function handleConversationWithTools( function mergeUsage (line 230) | function mergeUsage( FILE: source/hooks/conversation/useStreamingState.ts type RetryStatus (line 4) | type RetryStatus = { type CodebaseSearchStatus (line 12) | type CodebaseSearchStatus = { type StreamStatus (line 23) | type StreamStatus = 'idle' | 'streaming' | 'stopping'; function useStreamingState (line 25) | function useStreamingState() { FILE: source/hooks/conversation/useToolConfirmation.ts type PendingConfirmation (line 12) | type PendingConfirmation = { function useToolConfirmation (line 23) | function useToolConfirmation(workingDirectory: string) { FILE: source/hooks/conversation/utils/messageCleanup.ts function cleanOrphanedToolCalls (line 15) | function cleanOrphanedToolCalls(messages: ChatMessage[]): void { FILE: source/hooks/conversation/utils/thinkingExtractor.ts type ReasoningData (line 4) | interface ReasoningData { type ThinkingData (line 13) | interface ThinkingData { function cleanThinkingContent (line 27) | function cleanThinkingContent(content: string): string { function extractThinkingContent (line 47) | function extractThinkingContent( FILE: source/hooks/execution/useBackgroundProcesses.ts type BackgroundProcess (line 4) | interface BackgroundProcess { function useBackgroundProcesses (line 24) | function useBackgroundProcesses() { function addBackgroundProcess (line 156) | function addBackgroundProcess(command: string, pid: number): string { function updateBackgroundProcessStatus (line 176) | function updateBackgroundProcessStatus( function showBackgroundPanel (line 200) | function showBackgroundPanel() { FILE: source/hooks/execution/useSchedulerExecutionState.ts type SchedulerExecutionState (line 3) | interface SchedulerExecutionState { function useSchedulerExecutionState (line 28) | function useSchedulerExecutionState() { function setSchedulerExecutionState (line 101) | function setSchedulerExecutionState(state: SchedulerExecutionState) { function startSchedulerTask (line 110) | function startSchedulerTask(description: string, duration: number) { function updateSchedulerRemainingTime (line 128) | function updateSchedulerRemainingTime(seconds: number) { function completeSchedulerTask (line 140) | function completeSchedulerTask() { function resetSchedulerState (line 156) | function resetSchedulerState() { function getSchedulerState (line 173) | function getSchedulerState(): SchedulerExecutionState | null { FILE: source/hooks/execution/useTerminalExecutionState.ts type TerminalExecutionState (line 3) | interface TerminalExecutionState { function useTerminalExecutionState (line 23) | function useTerminalExecutionState() { function setTerminalExecutionState (line 85) | function setTerminalExecutionState(state: TerminalExecutionState) { constant OUTPUT_BATCH_SIZE (line 94) | const OUTPUT_BATCH_SIZE = 10; constant OUTPUT_FLUSH_DELAY (line 95) | const OUTPUT_FLUSH_DELAY = 50; function flushOutputBuffer (line 101) | function flushOutputBuffer() { function appendTerminalOutput (line 123) | function appendTerminalOutput(line: string) { function setTerminalNeedsInput (line 147) | function setTerminalNeedsInput(needsInput: boolean, prompt?: string) { function registerInputCallback (line 164) | function registerInputCallback( function sendTerminalInput (line 174) | function sendTerminalInput(input: string) { FILE: source/hooks/input/keyboard/context.ts function createHelpers (line 11) | function createHelpers( function createContext (line 68) | function createContext( FILE: source/hooks/input/keyboard/handlers/arrowKeys.ts function arrowKeysHandler (line 3) | function arrowKeysHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/clipboard.ts function clipboardHandler (line 3) | function clipboardHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/deleteAndBackspace.ts function deleteAndBackspaceHandler (line 3) | function deleteAndBackspaceHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/editing.ts function editingHandler (line 5) | function editingHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/escape.ts function escapeHandler (line 4) | function escapeHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/focusFilter.ts function focusFilterHandler (line 3) | function focusFilterHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/modeToggle.ts function cycleModes (line 3) | function cycleModes(ctx: HandlerContext): void { function modeToggleHandler (line 44) | function modeToggleHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/newline.ts function newlineHandler (line 3) | function newlineHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/agentPicker.ts function agentPickerHandler (line 3) | function agentPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/argsPicker.ts function argsPickerHandler (line 4) | function argsPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/commandPanel.ts function commandPanelHandler (line 6) | function commandPanelHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/filePicker.ts function filePickerHandler (line 3) | function filePickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/gitLinePicker.ts function gitLinePickerHandler (line 3) | function gitLinePickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/historyMenu.ts function historyMenuHandler (line 3) | function historyMenuHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/profilePicker.ts function profilePickerHandler (line 3) | function profilePickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/runningAgentsPicker.ts function runningAgentsPickerHandler (line 3) | function runningAgentsPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/skillsPicker.ts function skillsPickerHandler (line 3) | function skillsPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/pickers/todoPicker.ts function todoPickerHandler (line 3) | function todoPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/profileShortcut.ts function profileShortcutHandler (line 3) | function profileShortcutHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/regularInput.ts function regularInputHandler (line 3) | function regularInputHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/submit.ts function submitHandler (line 5) | function submitHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/handlers/tabArgsPicker.ts function tabArgsPickerHandler (line 4) | function tabArgsPickerHandler(ctx: HandlerContext): boolean { FILE: source/hooks/input/keyboard/types.ts type KeyboardInputOptions (line 6) | type KeyboardInputOptions = { type HandlerRefs (line 196) | type HandlerRefs = { type HandlerHelpers (line 208) | type HandlerHelpers = { type HandlerContext (line 218) | type HandlerContext = { FILE: source/hooks/input/keyboard/utils/wordBoundary.ts function findWordBoundary (line 2) | function findWordBoundary( FILE: source/hooks/input/useBashMode.ts type BashCommand (line 5) | interface BashCommand { type CommandExecutionResult (line 13) | interface CommandExecutionResult { type BashModeState (line 22) | interface BashModeState { function useBashMode (line 30) | function useBashMode() { FILE: source/hooks/input/useClipboard.ts function useClipboard (line 7) | function useClipboard( FILE: source/hooks/input/useHistoryNavigation.ts type ChatMessage (line 9) | type ChatMessage = { function useHistoryNavigation (line 17) | function useHistoryNavigation( FILE: source/hooks/input/useInputBuffer.ts function useInputBuffer (line 4) | function useInputBuffer(viewport: Viewport) { FILE: source/hooks/input/useKeyboardInput.ts function useKeyboardInput (line 30) | function useKeyboardInput(options: KeyboardInputOptions) { FILE: source/hooks/integration/useGlobalExit.ts type ExitNotification (line 6) | interface ExitNotification { function useGlobalExit (line 11) | function useGlobalExit( FILE: source/hooks/integration/useGlobalNavigation.ts constant NAVIGATION_EVENT (line 8) | const NAVIGATION_EVENT = 'navigate'; type NavigationEvent (line 10) | interface NavigationEvent { function navigateTo (line 24) | function navigateTo(destination: NavigationEvent['destination']) { function onNavigate (line 29) | function onNavigate(handler: (event: NavigationEvent) => void) { FILE: source/hooks/integration/useVSCodeState.ts type VSCodeConnectionStatus (line 7) | type VSCodeConnectionStatus = function useVSCodeState (line 13) | function useVSCodeState() { FILE: source/hooks/picker/useAgentPicker.ts function useAgentPicker (line 8) | function useAgentPicker(buffer: TextBuffer, triggerUpdate: () => void) { FILE: source/hooks/picker/useFilePicker.ts type FilePickerState (line 5) | type FilePickerState = { type FilePickerAction (line 14) | type FilePickerAction = function filePickerReducer (line 26) | function filePickerReducer( function useFilePicker (line 71) | function useFilePicker(buffer: TextBuffer, triggerUpdate: () => void) { FILE: source/hooks/picker/useGitLinePicker.ts type GitLineCommit (line 5) | type GitLineCommit = { constant PAGE_SIZE (line 14) | const PAGE_SIZE = 30; constant STAGED_ENTRY_SHA (line 15) | const STAGED_ENTRY_SHA = 'staged'; function createStagedEntry (line 17) | function createStagedEntry(fileCount: number): GitLineCommit { function buildInjectedGitLineText (line 28) | function buildInjectedGitLineText( function useGitLinePicker (line 68) | function useGitLinePicker( FILE: source/hooks/picker/useProfilePicker.ts function useProfilePicker (line 5) | function useProfilePicker() { FILE: source/hooks/picker/useRunningAgentsPicker.ts type PickerAgent (line 19) | interface PickerAgent { function buildVisualTag (line 36) | function buildVisualTag(agent: PickerAgent): string { function findDoubleGreaterTrigger (line 63) | function findDoubleGreaterTrigger(beforeCursor: string): number { function useRunningAgentsPicker (line 101) | function useRunningAgentsPicker( FILE: source/hooks/picker/useSkillsPicker.ts type SkillsPickerFocus (line 5) | type SkillsPickerFocus = 'search' | 'append'; function buildInjectedSkillText (line 7) | function buildInjectedSkillText(skill: Skill, appendText: string): string { function useSkillsPicker (line 24) | function useSkillsPicker(buffer: TextBuffer, triggerUpdate: () => void) { FILE: source/hooks/picker/useTodoPicker.ts function useTodoPicker (line 5) | function useTodoPicker( FILE: source/hooks/session/useSessionManagement.ts function useSessionManagement (line 9) | function useSessionManagement( FILE: source/hooks/session/useSessionSave.ts function useSessionSave (line 8) | function useSessionSave() { FILE: source/hooks/session/useSnapshotState.ts function useSnapshotState (line 5) | function useSnapshotState(messagesLength: number) { FILE: source/hooks/ui/useCommandPanel.ts type CommandPanelCommand (line 21) | type CommandPanelCommand = { constant COMMAND_ARGS_HINTS (line 30) | const COMMAND_ARGS_HINTS: Record = { constant COMMAND_ARGS_OPTIONS (line 51) | const COMMAND_ARGS_OPTIONS: Record = { function useCommandPanel (line 63) | function useCommandPanel(buffer: TextBuffer, isProcessing = false) { FILE: source/hooks/ui/useCursorHide.ts function useCursorHide (line 19) | function useCursorHide(): void { FILE: source/hooks/ui/usePanelState.ts type PanelState (line 9) | type PanelState = { type PanelActions (line 43) | type PanelActions = { function usePanelState (line 93) | function usePanelState(): PanelState & PanelActions { FILE: source/hooks/ui/useTerminalFocus.ts function useTerminalFocus (line 31) | function useTerminalFocus(): { FILE: source/hooks/ui/useTerminalSize.ts type SizeListener (line 5) | type SizeListener = (size: {columns: number; rows: number}) => void; function handleResize (line 14) | function handleResize() { function subscribe (line 22) | function subscribe(listener: SizeListener): () => void { function useTerminalSize (line 43) | function useTerminalSize(): {columns: number; rows: number} { FILE: source/hooks/ui/useTerminalTitle.ts function useTerminalTitle (line 26) | function useTerminalTitle(title: string): void { FILE: source/i18n/I18nContext.tsx type I18nContextType (line 9) | type I18nContextType = { type Props (line 17) | type Props = { function I18nProvider (line 22) | function I18nProvider({children, defaultLanguage}: Props) { function useI18n (line 43) | function useI18n(): I18nContextType { FILE: source/i18n/types.ts type TranslationKeys (line 3) | type TranslationKeys = { type Translations (line 1760) | type Translations = { FILE: source/mcp/aceCodeSearch.ts class ACECodeSearchService (line 65) | class ACECodeSearchService { method constructor (line 100) | constructor( method withIndexBuildLock (line 121) | private async withIndexBuildLock(fn: () => Promise): Promise { method markIndexTruncated (line 130) | private markIndexTruncated(message: string): void { method ensureNotDisposed (line 138) | private ensureNotDisposed(): void { method scheduleIdleCleanup (line 144) | private scheduleIdleCleanup(): void { method markActivity (line 166) | private markActivity(): void { method removeFromContentCache (line 172) | private removeFromContentCache(filePath: string): void { method clearContentCache (line 180) | private clearContentCache(): void { method trimContentCacheByBytes (line 185) | private trimContentCacheByBytes(): void { method checkMemoryPressure (line 209) | private checkMemoryPressure(): void { method getMemoryStats (line 239) | getMemoryStats(): { method trimFileStatCache (line 264) | private trimFileStatCache(): void { method clearCaches (line 281) | private clearCaches(options?: { method dispose (line 307) | dispose(): void { method isSSHPath (line 322) | private isSSHPath(filePath: string): boolean { method getSSHConfigForPath (line 331) | private async getSSHConfigForPath(sshUrl: string): Promise { method loadExclusionPatterns (line 391) | private async loadExclusionPatterns(): Promise { method isCommandAvailableCached (line 400) | private async isCommandAvailableCached(command: string): Promise { method buildFzfIndex (line 604) | private buildFzfIndex(): void { method searchSymbols (line 632) | async searchSymbols( method searchSymbolsManual (line 728) | private async searchSymbolsManual( method findReferences (line 816) | async findReferences( method findDefinition (line 962) | async findDefinition( method gitGrepSearch (line 1005) | private async gitGrepSearch( method systemGrepSearch (line 1111) | private async systemGrepSearch( method globPatternToRegex (line 1235) | private globPatternToRegex(globPattern: string): RegExp { method jsTextSearch (line 1266) | private async jsTextSearch( method searchInLargeFile (line 1455) | private async searchInLargeFile( method textSearch (line 1542) | async textSearch( method executeTextSearch (line 1584) | private async executeTextSearch( method sortResultsByRecency (line 1667) | private async sortResultsByRecency( method estimateFileOutlinePayloadChars (line 1746) | private estimateFileOutlinePayloadChars(symbols: CodeSymbol[]): number { method constrainFileOutlinePayload (line 1750) | private constrainFileOutlinePayload( method getFileOutline (line 1784) | async getFileOutline( method semanticSearch (line 1870) | async semanticSearch( FILE: source/mcp/askUserQuestion.ts type AskUserQuestionArgs (line 3) | interface AskUserQuestionArgs { type AskUserQuestionResult (line 8) | interface AskUserQuestionResult { FILE: source/mcp/bash.ts function markCommandAsBackgrounded (line 34) | function markCommandAsBackgrounded() { function resetBackgroundFlag (line 41) | function resetBackgroundFlag() { class TerminalCommandService (line 49) | class TerminalCommandService { method constructor (line 53) | constructor( method maybeSummarizeCommandResult (line 61) | private async maybeSummarizeCommandResult( method isSSHPath (line 99) | private isSSHPath(dirPath: string): boolean { method getSSHConfigForPath (line 106) | private async getSSHConfigForPath(sshUrl: string): Promise = new Map( type SearchEngineModule (line 54) | type SearchEngineModule = { function isSearchEngine (line 60) | function isSearchEngine(candidate: unknown): candidate is SearchEngine { function isEngineEnabled (line 76) | function isEngineEnabled(engine: SearchEngine): boolean { function collectFromModule (line 80) | function collectFromModule(mod: SearchEngineModule): SearchEngine[] { function loadExternalEngines (line 92) | async function loadExternalEngines(): Promise { function ensureSearchEnginesLoaded (line 149) | function ensureSearchEnginesLoaded(): Promise { function getSearchEngine (line 166) | function getSearchEngine(id?: string | null): SearchEngine { function listSearchEngines (line 174) | function listSearchEngines(): SearchEngine[] { function listSearchEnginesAsync (line 182) | async function listSearchEnginesAsync(): Promise { FILE: source/mcp/engines/websearch/types.ts type SearchEngineId (line 25) | type SearchEngineId = string; type SearchEngine (line 30) | interface SearchEngine { FILE: source/mcp/filesystem.ts class FilesystemMCPService (line 56) | class FilesystemMCPService { method constructor (line 80) | constructor(basePath: string = process.cwd()) { method isSSHPath (line 89) | private isSSHPath(filePath: string): boolean { method getSSHConfigForPath (line 98) | private async getSSHConfigForPath(sshUrl: string): Promise { method writeRemoteFile (line 160) | private async writeRemoteFile( method isImageFile (line 192) | private isImageFile(filePath: string): boolean { method isOfficeFile (line 202) | private isOfficeFile(filePath: string): boolean { method getImageMimeType (line 212) | private getImageMimeType(filePath: string): string | undefined { method readImageAsBase64 (line 223) | private async readImageAsBase64( method extractRelevantSymbols (line 284) | private extractRelevantSymbols( method getNotebookEntries (line 372) | private getNotebookEntries(filePath: string): string { method getFileContent (line 412) | async getFileContent( method createFile (line 498) | async createFile( method listFiles (line 571) | private async listFiles(dirPath: string = '.'): Promise { method exists (line 601) | async exists(filePath: string): Promise { method getFileInfo (line 617) | async getFileInfo(filePath: string): Promise<{ method editFileBySearch (line 649) | async editFileBySearch( method editFileBySearchSingle (line 704) | private async editFileBySearchSingle( method editFile (line 742) | async editFile( method editFileSingle (line 775) | private async editFileSingle( method resolvePath (line 804) | private resolvePath(filePath: string, contextPath?: string): string { method validatePath (line 830) | private async validatePath(fullPath: string): Promise { FILE: source/mcp/ideDiagnostics.ts class IdeDiagnosticsMCPService (line 8) | class IdeDiagnosticsMCPService { method getDiagnostics (line 14) | async getDiagnostics(filePath: string): Promise { method formatDiagnostics (line 36) | formatDiagnostics(diagnostics: Diagnostic[], filePath: string): string { FILE: source/mcp/lsp/HybridCodeSearchService.ts class HybridCodeSearchService (line 7) | class HybridCodeSearchService { method constructor (line 13) | constructor(basePath: string = process.cwd()) { method findDefinition (line 18) | async findDefinition( method findDefinitionWithLSP (line 43) | private async findDefinitionWithLSP( method findReferences (line 146) | async findReferences( method getFileOutline (line 153) | async getFileOutline( method convertLSPSymbolsToCodeSymbols (line 202) | private convertLSPSymbolsToCodeSymbols( method uriToPath (line 249) | private uriToPath(uri: string): string { method detectLanguage (line 257) | private detectLanguage(filePath: string): string { method textSearch (line 274) | async textSearch( method semanticSearch (line 283) | async semanticSearch( method dispose (line 299) | async dispose(): Promise { FILE: source/mcp/lsp/LSPClient.ts type LSPClientConfig (line 29) | interface LSPClientConfig extends LSPServerConfig { class LSPClient (line 34) | class LSPClient { method canSendMessages (line 47) | private canSendMessages(): boolean { method markTransportClosed (line 60) | private markTransportClosed(): void { method constructor (line 80) | constructor(private config: LSPClientConfig) {} method findCsharpSolutionFile (line 82) | private async findCsharpSolutionFile( method start (line 110) | async start(): Promise { method shutdown (line 290) | async shutdown(): Promise { method cleanup (line 330) | private async cleanup(): Promise { method openDocument (line 357) | async openDocument(uri: string, text: string): Promise { method closeDocument (line 389) | async closeDocument(uri: string): Promise { method gotoDefinition (line 412) | async gotoDefinition(uri: string, position: Position): Promise { method completion (line 508) | async completion(uri: string, position: Position): Promise { method findDefinition (line 53) | async findDefinition( method findReferences (line 101) | async findReferences( method getDocumentSymbols (line 150) | async getDocumentSymbols(filePath: string) { method getHoverInfo (line 193) | async getHoverInfo(filePath: string, line: number, column: number) { method getDocumentContent (line 237) | private async getDocumentContent(filePath: string): Promise { method clearDocumentCache (line 268) | clearDocumentCache(): void { FILE: source/mcp/lsp/LSPServerRegistry.ts type LSPServerConfig (line 9) | interface LSPServerConfig { type LSPConfigFile (line 17) | interface LSPConfigFile { constant CONFIG_DIR (line 22) | const CONFIG_DIR = join(homedir(), '.snow'); constant LSP_CONFIG_FILE (line 23) | const LSP_CONFIG_FILE = join(CONFIG_DIR, 'lsp-config.json'); constant DEFAULT_LSP_SERVERS (line 25) | const DEFAULT_LSP_SERVERS: Record = { constant LSP_SERVERS (line 70) | const LSP_SERVERS = DEFAULT_LSP_SERVERS; function ensureConfigDirectory (line 72) | function ensureConfigDirectory(): void { function isRecord (line 78) | function isRecord(value: unknown): value is Record { function toStringArray (line 82) | function toStringArray(value: unknown): string[] | undefined { function parseServerConfig (line 90) | function parseServerConfig(value: unknown): LSPServerConfig | null { function parseServersConfig (line 128) | function parseServersConfig( function parseLspConfigFile (line 148) | function parseLspConfigFile( function getDefaultConfigFile (line 163) | function getDefaultConfigFile(): LSPConfigFile { function loadServersFromDisk (line 170) | function loadServersFromDisk(): Record { class LSPServerRegistry (line 199) | class LSPServerRegistry { method getServers (line 203) | private static getServers(): Record { method getServerForFile (line 211) | static getServerForFile(filePath: string): { method getConfig (line 226) | static getConfig(language: string): LSPServerConfig | null { method getInstallCommand (line 230) | static getInstallCommand(language: string): string | null { method isServerInstalled (line 234) | static async isServerInstalled(language: string): Promise { method clearCache (line 261) | static clearCache(): void { FILE: source/mcp/notebook.ts function executeNotebookTool (line 115) | async function executeNotebookTool( FILE: source/mcp/scheduler.ts type SchedulerTaskArgs (line 3) | interface SchedulerTaskArgs { type SchedulerTaskResult (line 14) | interface SchedulerTaskResult { FILE: source/mcp/skills.ts type SkillMetadata (line 8) | interface SkillMetadata { type Skill (line 14) | interface Skill { function readSkillFile (line 27) | async function readSkillFile(skillPath: string): Promise<{ function normalizeSkillId (line 89) | function normalizeSkillId(skillId: string): string { function loadSkillsFromDirectory (line 93) | async function loadSkillsFromDirectory( function loadAvailableSkills (line 176) | async function loadAvailableSkills( function generateSkillToolDescription (line 197) | function generateSkillToolDescription(skills: Map): string { function listAvailableSkills (line 241) | async function listAvailableSkills( function getMCPTools (line 249) | async function getMCPTools(projectRoot?: string) { function generateSkillTree (line 289) | async function generateSkillTree(skillPath: string): Promise { function executeSkillTool (line 349) | async function executeSkillTool( FILE: source/mcp/subagent.ts type SubAgentToolExecutionOptions (line 7) | interface SubAgentToolExecutionOptions { class SubAgentService (line 33) | class SubAgentService { method execute (line 37) | async execute(options: SubAgentToolExecutionOptions): Promise { method getTools (line 96) | getTools(): Array<{ function getMCPTools (line 244) | function getMCPTools(): Array<{ FILE: source/mcp/team.ts type TeamToolExecutionOptions (line 42) | interface TeamToolExecutionOptions { class TeamService (line 61) | class TeamService { method getOwnTeam (line 62) | private getOwnTeam(): import('../utils/team/teamConfig.js').TeamConfig... method aiResolveConflicts (line 75) | private async aiResolveConflicts( method execute (line 187) | async execute(options: TeamToolExecutionOptions): Promise { method spawnTeammate (line 226) | private async spawnTeammate(options: TeamToolExecutionOptions): Promis... method messageTeammate (line 299) | private messageTeammate(args: Record): any { method broadcastToTeam (line 333) | private broadcastToTeam(args: Record): any { method shutdownTeammate (line 346) | private shutdownTeammate(args: Record): any { method waitForTeammates (line 377) | private async waitForTeammates( method createTask (line 460) | private createTask(args: Record): any { method updateTask (line 488) | private updateTask(args: Record): any { method listTasks (line 513) | private listTasks(): any { method listTeammates (line 533) | private listTeammates(): any { method mergeTeammateWork (line 549) | private async mergeTeammateWork(args: Record): Promise): Promise... method resolveMergeConflicts (line 776) | private resolveMergeConflicts(): any { method abortMerge (line 800) | private abortMerge(): any { method cleanupTeam (line 815) | private async cleanupTeam(): Promise { method approvePlan (line 871) | private approvePlan(args: Record): any { method getTools (line 902) | getTools(): Array<{ function getTeamMCPTools (line 1084) | function getTeamMCPTools(): Array<{ FILE: source/mcp/todo.ts class TodoService (line 19) | class TodoService { method constructor (line 23) | constructor(baseDir: string, getCurrentSessionId: GetCurrentSessionId) { method initialize (line 30) | async initialize(): Promise { method getTodoPath (line 34) | private getTodoPath(sessionId: string, date?: Date): string { method ensureTodoDir (line 41) | private async ensureTodoDir(date?: Date): Promise { method saveTodoList (line 58) | async saveTodoList( method getTodoList (line 97) | async getTodoList(sessionId: string): Promise { method findTodoInDateFolders (line 118) | private async findTodoInDateFolders( method updateTodoItem (line 150) | async updateTodoItem( method updateTodoItems (line 178) | async updateTodoItems( method addTodoItem (line 211) | async addTodoItem( method deleteTodoItem (line 248) | async deleteTodoItem( method deleteTodoItems (line 266) | async deleteTodoItems( method createEmptyTodo (line 285) | async createEmptyTodo(sessionId: string): Promise { method copyTodoList (line 295) | async copyTodoList( method deleteTodoList (line 323) | async deleteTodoList(sessionId: string): Promise { method getTools (line 363) | getTools(): Tool[] { method executeTool (line 448) | async executeTool( FILE: source/mcp/types/aceCodeSearch.types.ts type SymbolType (line 8) | type SymbolType = type CodeSymbol (line 23) | interface CodeSymbol { type ReferenceType (line 40) | type ReferenceType = 'definition' | 'usage' | 'import' | 'type'; type CodeReference (line 45) | interface CodeReference { type SemanticSearchResult (line 57) | interface SemanticSearchResult { type ASTNode (line 68) | interface ASTNode { type TextSearchResult (line 81) | interface TextSearchResult { type LanguageConfig (line 91) | interface LanguageConfig { type IndexStats (line 106) | interface IndexStats { FILE: source/mcp/types/bash.types.ts type CommandExecutionResult (line 8) | interface CommandExecutionResult { FILE: source/mcp/types/filesystem.types.ts type MCPContentType (line 10) | type MCPContentType = 'text' | 'image' | 'document'; type TextContent (line 15) | interface TextContent { type ImageContent (line 23) | interface ImageContent { type DocumentContent (line 32) | interface DocumentContent { type MultimodalContent (line 47) | type MultimodalContent = Array< constant IMAGE_MIME_TYPES (line 54) | const IMAGE_MIME_TYPES: Record = { constant OFFICE_FILE_TYPES (line 67) | const OFFICE_FILE_TYPES: Record< type StructureAnalysis (line 83) | interface StructureAnalysis { type FileReadConfig (line 104) | interface FileReadConfig { type SingleFileReadResult (line 113) | interface SingleFileReadResult { type MultipleFilesReadResult (line 127) | interface MultipleFilesReadResult { type EditBySearchConfig (line 145) | interface EditBySearchConfig { type HashlineOperationType (line 155) | type HashlineOperationType = 'replace' | 'insert_after' | 'delete'; type HashlineOperation (line 161) | interface HashlineOperation { type EditByHashlineConfig (line 174) | interface EditByHashlineConfig { type EditByHashlineSingleResult (line 182) | interface EditByHashlineSingleResult extends SingleFileEditResult { type SingleFileEditResult (line 190) | interface SingleFileEditResult { type EditBySearchSingleResult (line 205) | interface EditBySearchSingleResult extends SingleFileEditResult { type BatchResultItem (line 213) | interface BatchResultItem { type EditBySearchBatchResultItem (line 222) | type EditBySearchBatchResultItem = BatchResultItem & type EditByHashlineBatchResultItem (line 228) | type EditByHashlineBatchResultItem = BatchResultItem & type BatchOperationResult (line 234) | interface BatchOperationResult { type EditByHashlineResult (line 245) | type EditByHashlineResult = type EditBySearchResult (line 252) | type EditBySearchResult = FILE: source/mcp/types/todo.types.ts type TodoItem (line 8) | interface TodoItem { type TodoList (line 20) | interface TodoList { type GetCurrentSessionId (line 30) | type GetCurrentSessionId = () => string | null; FILE: source/mcp/types/websearch.types.ts type SearchResult (line 8) | interface SearchResult { type SearchResponse (line 18) | interface SearchResponse { type WebPageContent (line 27) | interface WebPageContent { FILE: source/mcp/utils/aceCodeSearch/constants.utils.ts constant INDEX_CACHE_DURATION (line 8) | const INDEX_CACHE_DURATION = 60000; constant BATCH_SIZE (line 13) | const BATCH_SIZE = 10; constant BINARY_EXTENSIONS (line 19) | const BINARY_EXTENSIONS = new Set([ constant GREP_EXCLUDE_DIRS (line 56) | const GREP_EXCLUDE_DIRS = [ constant RECENT_FILE_THRESHOLD (line 71) | const RECENT_FILE_THRESHOLD = 24 * 60 * 60 * 1000; constant MAX_FILE_CACHE_SIZE (line 76) | const MAX_FILE_CACHE_SIZE = 50; constant MAX_FILE_STAT_CACHE_SIZE (line 82) | const MAX_FILE_STAT_CACHE_SIZE = 500; constant ACE_IDLE_CLEANUP_MS (line 88) | const ACE_IDLE_CLEANUP_MS = 2 * 60 * 1000; constant MAX_INDEXED_FILES (line 94) | const MAX_INDEXED_FILES = 2000; constant MAX_SYMBOLS_PER_FILE (line 100) | const MAX_SYMBOLS_PER_FILE = 100; constant MAX_FZF_SYMBOL_NAMES (line 106) | const MAX_FZF_SYMBOL_NAMES = 30000; constant MAX_FILE_OUTLINE_SYMBOLS (line 112) | const MAX_FILE_OUTLINE_SYMBOLS = 200; constant MAX_FILE_OUTLINE_PAYLOAD_CHARS (line 118) | const MAX_FILE_OUTLINE_PAYLOAD_CHARS = 120_000; constant LARGE_FILE_THRESHOLD (line 125) | const LARGE_FILE_THRESHOLD = 1024 * 1024; constant FILE_READ_CHUNK_SIZE (line 131) | const FILE_READ_CHUNK_SIZE = 512 * 1024; constant TEXT_SEARCH_TIMEOUT_MS (line 137) | const TEXT_SEARCH_TIMEOUT_MS = 30000; constant MAX_CONCURRENT_FILE_READS (line 143) | const MAX_CONCURRENT_FILE_READS = 20; constant MAX_REGEX_COMPLEXITY_SCORE (line 149) | const MAX_REGEX_COMPLEXITY_SCORE = 100; constant MAX_CONTENT_CACHE_BYTES (line 155) | const MAX_CONTENT_CACHE_BYTES = 50 * 1024 * 1024; constant MEMORY_PRESSURE_THRESHOLD_BYTES (line 161) | const MEMORY_PRESSURE_THRESHOLD_BYTES = 512 * 1024 * 1024; constant MEMORY_CHECK_INTERVAL_MS (line 167) | const MEMORY_CHECK_INTERVAL_MS = 10_000; FILE: source/mcp/utils/aceCodeSearch/filesystem.utils.ts constant DEFAULT_EXCLUDES (line 11) | const DEFAULT_EXCLUDES = [ function shouldExcludeDirectory (line 35) | function shouldExcludeDirectory( function shouldExcludeFile (line 91) | function shouldExcludeFile( function loadExclusionPatterns (line 165) | async function loadExclusionPatterns( type ContentCacheCallbacks (line 213) | interface ContentCacheCallbacks { function readFileWithCache (line 226) | async function readFileWithCache( function isGitRepository (line 265) | async function isGitRepository( FILE: source/mcp/utils/aceCodeSearch/language.utils.ts constant LANGUAGE_CONFIG (line 10) | const LANGUAGE_CONFIG: Record = { function detectLanguage (line 462) | function detectLanguage(filePath: string): string | null { FILE: source/mcp/utils/aceCodeSearch/search.utils.ts function isCommandAvailable (line 15) | function isCommandAvailable(command: string): Promise { function parseGrepOutput (line 47) | function parseGrepOutput( function globToRegex (line 94) | function globToRegex(glob: string): RegExp { function calculateFuzzyScore (line 120) | function calculateFuzzyScore(symbolName: string, query: string): number { function expandGlobBraces (line 159) | function expandGlobBraces(glob: string): string[] { function globPatternToRegex (line 184) | function globPatternToRegex(globPattern: string): RegExp { function calculateRegexComplexity (line 213) | function calculateRegexComplexity(pattern: string): number { function isSafeRegexPattern (line 258) | function isSafeRegexPattern( function processWithConcurrency (line 288) | async function processWithConcurrency( function createTimeoutPromise (line 319) | function createTimeoutPromise( function sortResultsByRecency (line 336) | async function sortResultsByRecency( FILE: source/mcp/utils/aceCodeSearch/symbol.utils.ts function getContext (line 16) | function getContext( type ParseFileSymbolsOptions (line 30) | interface ParseFileSymbolsOptions { function parseFileSymbols (line 43) | async function parseFileSymbols( FILE: source/mcp/utils/bash/security.utils.ts constant DANGEROUS_PATTERNS (line 8) | const DANGEROUS_PATTERNS = [ function isDangerousCommand (line 20) | function isDangerousCommand(command: string): boolean { function isSelfDestructiveCommand (line 31) | function isSelfDestructiveCommand(command: string): { function truncateOutput (line 102) | function truncateOutput(output: string, maxLength: number): string { FILE: source/mcp/utils/filesystem/backup.utils.ts type BackupFileParams (line 1) | type BackupFileParams = { function backupFileBeforeMutation (line 12) | async function backupFileBeforeMutation( FILE: source/mcp/utils/filesystem/batch-operations.utils.ts function parseFilePathParameter (line 15) | function parseFilePathParameter( function extractFilePath (line 27) | function extractFilePath( function parseEditBySearchParams (line 36) | function parseEditBySearchParams( function executeBatchOperation (line 72) | async function executeBatchOperation< FILE: source/mcp/utils/filesystem/code-analysis.utils.ts function analyzeCodeStructure (line 11) | function analyzeCodeStructure( function findSmartContextBoundaries (line 156) | function findSmartContextBoundaries( FILE: source/mcp/utils/filesystem/diagnostics.utils.ts function sleep (line 6) | function sleep(ms: number): Promise { function getDiagnosticFingerprint (line 10) | function getDiagnosticFingerprint(diagnostics: Diagnostic[]): string { function getFreshDiagnostics (line 28) | async function getFreshDiagnostics(filePath: string): Promise { function readFileLinesStreaming (line 116) | async function readFileLinesStreaming( function writeFileWithEncoding (line 198) | async function writeFileWithEncoding( FILE: source/mcp/utils/filesystem/hashline.utils.ts function lineHash (line 15) | function lineHash(content: string): string { function formatLineWithHash (line 32) | function formatLineWithHash(lineNum: number, content: string): string { function formatLineWithHashDisplay (line 43) | function formatLineWithHashDisplay( type ParsedAnchor (line 53) | interface ParsedAnchor { function parseAnchor (line 62) | function parseAnchor(anchor: string): ParsedAnchor | null { function validateAnchor (line 75) | function validateAnchor( function buildHashMap (line 100) | function buildHashMap(lines: string[]): string[] { FILE: source/mcp/utils/filesystem/match-finder.utils.ts type MatchCandidate (line 5) | interface MatchCandidate { function findClosestMatches (line 19) | async function findClosestMatches( function generateDiffMessage (line 100) | function generateDiffMessage( FILE: source/mcp/utils/filesystem/message-format.utils.ts type DiagnosticsSummaryOptions (line 4) | type DiagnosticsSummaryOptions = { function appendDiagnosticsSummary (line 13) | function appendDiagnosticsSummary( function getStructureWarnings (line 57) | function getStructureWarnings(structureAnalysis: StructureAnalysis): str... function appendStructureWarnings (line 115) | function appendStructureWarnings( FILE: source/mcp/utils/filesystem/office-parser.utils.ts function parseWordDocument (line 18) | async function parseWordDocument( function parsePDFDocument (line 44) | async function parsePDFDocument( function parseExcelDocument (line 80) | async function parseExcelDocument( function parsePowerPointDocument (line 121) | async function parsePowerPointDocument( function getOfficeFileType (line 150) | function getOfficeFileType( function readOfficeDocument (line 162) | async function readOfficeDocument( FILE: source/mcp/utils/filesystem/path-fixer.utils.ts function tryFixPath (line 10) | async function tryFixPath( FILE: source/mcp/utils/filesystem/read-tools.utils.ts type GetFileContentContext (line 17) | type GetFileContentContext = { function executeGetFileContentCore (line 43) | async function executeGetFileContentCore( FILE: source/mcp/utils/filesystem/similarity.utils.ts function calculateSimilarity (line 10) | function calculateSimilarity( function levenshteinDistance (line 51) | function levenshteinDistance( function levenshteinDistanceAsync (line 105) | async function levenshteinDistanceAsync( function calculateSimilarityAsync (line 165) | async function calculateSimilarityAsync( function normalizeForDisplay (line 204) | function normalizeForDisplay(line: string): string { FILE: source/mcp/utils/todo/date.utils.ts function formatDateForFolder (line 10) | function formatDateForFolder(date: Date): string { FILE: source/mcp/utils/websearch/browser.utils.ts function isWSL (line 14) | function isWSL(): boolean { function findWindowsBrowserInWSL (line 35) | function findWindowsBrowserInWSL(): string | null { function launchWindowsBrowserFromWSL (line 61) | async function launchWindowsBrowserFromWSL( function getRunningBrowserWSEndpoint (line 122) | async function getRunningBrowserWSEndpoint( function findBrowserExecutable (line 167) | function findBrowserExecutable(): string | null { FILE: source/mcp/utils/websearch/text.utils.ts function cleanText (line 12) | function cleanText(text: string): string { function formatSearchResults (line 29) | function formatSearchResults(searchResponse: SearchResponse): string { FILE: source/mcp/websearch.ts class WebSearchService (line 34) | class WebSearchService { method constructor (line 41) | constructor(maxResults: number = 10) { method launchBrowser (line 59) | private async launchBrowser(): Promise { method launchBrowserWSL (line 79) | private async launchBrowserWSL( method launchBrowserDirect (line 133) | private async launchBrowserDirect( method closeBrowser (line 190) | async closeBrowser(): Promise { method search (line 216) | async search(query: string, maxResults?: number): Promise { function usePickerWindow (line 13) | function usePickerWindow( type PickerListProps (line 61) | interface PickerListProps { function PickerListInner (line 76) | function PickerListInner({ FILE: source/ui/components/common/ScrollableSelectInput.tsx type SelectItem (line 4) | type SelectItem = { type IndicatorProps (line 11) | type IndicatorProps = { type RenderItemProps (line 15) | type RenderItemProps = T & { type Props (line 20) | type Props = { function DefaultIndicator (line 35) | function DefaultIndicator({isSelected}: IndicatorProps) { function DefaultItem (line 43) | function DefaultItem({ function ScrollableSelectInput (line 50) | function ScrollableSelectInput({ FILE: source/ui/components/common/ShimmerText.tsx type ShimmerTextProps (line 5) | interface ShimmerTextProps { function ShimmerText (line 12) | function ShimmerText({text}: ShimmerTextProps) { FILE: source/ui/components/common/StatusLine.tsx constant MEMORY_REFRESH_INTERVAL_MS (line 27) | const MEMORY_REFRESH_INTERVAL_MS = 5000; constant PROCESS_MEMORY_COMMAND_TIMEOUT_MS (line 28) | const PROCESS_MEMORY_COMMAND_TIMEOUT_MS = 1500; constant WINDOWS_POWERSHELL_CANDIDATES (line 30) | const WINDOWS_POWERSHELL_CANDIDATES = [ function getFallbackProcessMemoryUsageMb (line 41) | function getFallbackProcessMemoryUsageMb(): number { function parseMacosPhysicalFootprintMb (line 45) | function parseMacosPhysicalFootprintMb( function parseWindowsMemoryUsageMb (line 81) | function parseWindowsMemoryUsageMb(commandOutput: string): number | unde... function getMacosProcessMemoryUsageMb (line 95) | async function getMacosProcessMemoryUsageMb(): Promise { function formatMemoryUsage (line 159) | function formatMemoryUsage(memoryUsageMb: number): string { function useCurrentProcessMemoryUsage (line 167) | function useCurrentProcessMemoryUsage(): number { type Props (line 206) | type Props = { function calculateContextPercentage (line 242) | function calculateContextPercentage( function buildContextWindowState (line 261) | function buildContextWindowState( function StatusLine (line 284) | function StatusLine({ FILE: source/ui/components/common/UpdateNotice.tsx type UpdateNoticeProps (line 5) | type UpdateNoticeProps = { function UpdateNotice (line 11) | function UpdateNotice({ FILE: source/ui/components/common/statusline/builtinIds.ts constant BUILTIN_STATUSLINE_IDS (line 11) | const BUILTIN_STATUSLINE_IDS = { type BuiltinStatusLineId (line 30) | type BuiltinStatusLineId = constant BUILTIN_STATUSLINE_ID_VALUES (line 33) | const BUILTIN_STATUSLINE_ID_VALUES = new Set( function isBuiltinStatusLineId (line 37) | function isBuiltinStatusLineId(id: string): id is BuiltinStatusLineId { FILE: source/ui/components/common/statusline/gitBranch.ts constant GIT_BRANCH_REFRESH_INTERVAL_MS (line 5) | const GIT_BRANCH_REFRESH_INTERVAL_MS = 10000; function getGitBranch (line 8) | async function getGitBranch(cwd: string): Promise { method getItems (line 29) | async getItems(context) { FILE: source/ui/components/common/statusline/types.ts type VSCodeConnectionStatus (line 3) | type VSCodeConnectionStatus = type BackendConnectionStatus (line 9) | type BackendConnectionStatus = type StatusLineRenderItem (line 15) | interface StatusLineRenderItem { type StatusLineLabels (line 23) | interface StatusLineLabels { type StatusLineEditorContext (line 27) | interface StatusLineEditorContext { type StatusLineContextUsage (line 34) | interface StatusLineContextUsage { type StatusLineCodebaseProgress (line 42) | interface StatusLineCodebaseProgress { type StatusLineFileUpdateNotification (line 51) | interface StatusLineFileUpdateNotification { type StatusLineCopyStatusMessage (line 56) | interface StatusLineCopyStatusMessage { type StatusLineContextWindowMetrics (line 62) | interface StatusLineContextWindowMetrics { type StatusLineSystemState (line 70) | interface StatusLineSystemState { type StatusLineHookContext (line 139) | interface StatusLineHookContext { type StatusLineHookDefinition (line 148) | interface StatusLineHookDefinition { FILE: source/ui/components/common/statusline/useStatusLineHooks.ts constant DEFAULT_STATUSLINE_HOOK_REFRESH_INTERVAL_MS (line 14) | const DEFAULT_STATUSLINE_HOOK_REFRESH_INTERVAL_MS = 5000; constant SUPPORTED_STATUSLINE_HOOK_EXTENSIONS (line 15) | const SUPPORTED_STATUSLINE_HOOK_EXTENSIONS = new Set(['.js', '.mjs', '.c... constant BUILTIN_STATUSLINE_HOOKS (line 16) | const BUILTIN_STATUSLINE_HOOKS: StatusLineHookDefinition[] = [ type StatusLineHookModule (line 20) | type StatusLineHookModule = { function isStatusLineHookDefinition (line 26) | function isStatusLineHookDefinition( function isHookEnabled (line 37) | function isHookEnabled(hook: StatusLineHookDefinition): boolean { function normalizeStatusLineRenderItem (line 41) | function normalizeStatusLineRenderItem( function normalizeStatusLineItems (line 52) | function normalizeStatusLineItems( function normalizeStatusLineHookExports (line 68) | function normalizeStatusLineHookExports( function loadExternalStatusLineHooks (line 99) | async function loadExternalStatusLineHooks(): Promise< function mergeStatusLineHooks (line 143) | function mergeStatusLineHooks( function sortStatusLineItems (line 159) | function sortStatusLineItems( type UseStatusLineHookItemsResult (line 175) | type UseStatusLineHookItemsResult = { function useStatusLineHookItems (line 180) | function useStatusLineHookItems( FILE: source/ui/components/compression/CompressionStatus.tsx type CompressionStep (line 6) | type CompressionStep = type CompressionStatus (line 15) | type CompressionStatus = { type CompressionStatusProps (line 23) | interface CompressionStatusProps { function CompressionStatus (line 48) | function CompressionStatus({ FILE: source/ui/components/panels/AgentPickerPanel.tsx type Props (line 9) | interface Props { FILE: source/ui/components/panels/BranchPanel.tsx type BranchInfo (line 8) | interface BranchInfo { type Props (line 13) | interface Props { function getGitError (line 21) | function getGitError(error: unknown): string { function isGitRepo (line 41) | function isGitRepo(): boolean { function listBranches (line 56) | function listBranches(): BranchInfo[] { type CheckoutResult (line 75) | type CheckoutResult = { function checkoutBranch (line 84) | function checkoutBranch(branchName: string): CheckoutResult { function stashAndCheckout (line 105) | function stashAndCheckout( function createBranch (line 146) | function createBranch( function deleteBranch (line 166) | function deleteBranch( type PanelMode (line 199) | type PanelMode = 'list' | 'create' | 'confirmDelete' | 'confirmStash'; FILE: source/ui/components/panels/BtwPanel.tsx type Step (line 11) | type Step = 'streaming' | 'done' | 'error'; constant VISIBLE_ROWS (line 13) | const VISIBLE_ROWS = 8; constant DEBOUNCE_MS (line 14) | const DEBOUNCE_MS = 80; constant ANSI_REGEX (line 15) | const ANSI_REGEX = /\x1b\[[0-9;]*m/g; function stripAnsiCodes (line 17) | function stripAnsiCodes(input: string): string { function wrapLineToWidth (line 21) | function wrapLineToWidth(line: string, width: number): string[] { type Props (line 47) | interface Props { FILE: source/ui/components/panels/CommandArgsPanel.tsx type Props (line 7) | interface Props { FILE: source/ui/components/panels/CommandPanel.tsx type Command (line 7) | interface Command { type Props (line 12) | interface Props { FILE: source/ui/components/panels/ConnectionPanel.tsx type Props (line 13) | interface Props { FILE: source/ui/components/panels/CustomCommandConfigPanel.tsx type Props (line 12) | interface Props { FILE: source/ui/components/panels/DiffReviewPanel.tsx type Props (line 12) | type Props = { type MessageItem (line 24) | type MessageItem = { type ViewMode (line 30) | type ViewMode = 'messages' | 'files'; function DiffReviewPanel (line 32) | function DiffReviewPanel({ FILE: source/ui/components/panels/GitLinePickerPanel.tsx type Props (line 9) | interface Props { function formatShortSha (line 22) | function formatShortSha(sha: string): string { function formatDate (line 26) | function formatDate(isoDate: string): string { function truncateText (line 31) | function truncateText(text: string, maxLen: number): string { FILE: source/ui/components/panels/HelpPanel.tsx constant MAX_VISIBLE_LINES (line 5) | const MAX_VISIBLE_LINES = 10; type HelpLine (line 12) | type HelpLine = function HelpPanel (line 17) | function HelpPanel() { FILE: source/ui/components/panels/IdeSelectPanel.tsx type Props (line 11) | interface Props { type OptionItem (line 25) | interface OptionItem { FILE: source/ui/components/panels/MCPInfoPanel.tsx type ToolsListProps (line 24) | interface ToolsListProps { function ToolsList (line 34) | function ToolsList({ type ToolInfo (line 150) | interface ToolInfo { type MCPConnectionStatus (line 155) | interface MCPConnectionStatus { type SelectItem (line 166) | interface SelectItem { type Props (line 177) | interface Props { function MCPInfoPanel (line 181) | function MCPInfoPanel({onClose}: Props) { FILE: source/ui/components/panels/ModelsPanel.tsx type Props (line 20) | interface Props { type Tab (line 27) | type Tab = 'advanced' | 'basic' | 'thinking'; type ThinkingInputMode (line 29) | type ThinkingInputMode = null | 'anthropicBudgetTokens'; type ResponsesReasoningEffort (line 31) | type ResponsesReasoningEffort = 'none' | 'low' | 'medium' | 'high' | 'xh... type ResponsesVerbosity (line 32) | type ResponsesVerbosity = 'low' | 'medium' | 'high'; FILE: source/ui/components/panels/NewPromptPanel.tsx type Step (line 9) | type Step = 'input' | 'generating' | 'preview' | 'error'; type Props (line 11) | interface Props { constant VISIBLE_LINES (line 16) | const VISIBLE_LINES = 15; FILE: source/ui/components/panels/PanelsManager.tsx type PanelsManagerProps (line 32) | type PanelsManagerProps = { function PanelsManager (line 93) | function PanelsManager({ FILE: source/ui/components/panels/PermissionsPanel.tsx type Props (line 6) | type Props = { type PermissionsMessages (line 13) | type PermissionsMessages = { type ConfirmTarget (line 25) | type ConfirmTarget = number | 'clearAll' | null; function PermissionsPanel (line 27) | function PermissionsPanel({ FILE: source/ui/components/panels/ProfileEditPanel.tsx type Props (line 4) | type Props = { function ProfileEditPanel (line 21) | function ProfileEditPanel({profileName, onClose}: Props) { FILE: source/ui/components/panels/ProfilePanel.tsx type ProfileItem (line 7) | interface ProfileItem { type Props (line 13) | interface Props { FILE: source/ui/components/panels/ReviewCommitPanel.tsx type ReviewCommitSelection (line 8) | type ReviewCommitSelection = type CommitItem (line 13) | type CommitItem = { type Props (line 20) | type Props = { constant VISIBLE_ITEMS (line 27) | const VISIBLE_ITEMS = 6; constant PAGE_SIZE (line 28) | const PAGE_SIZE = 30; function formatShortSha (line 30) | function formatShortSha(sha: string): string { function formatDate (line 34) | function formatDate(isoDate: string): string { function truncateText (line 40) | function truncateText(text: string, maxLen: number): string { function ReviewCommitPanel (line 47) | function ReviewCommitPanel({ FILE: source/ui/components/panels/RoleCreationPanel.tsx type Step (line 10) | type Step = 'location' | 'confirm'; type Props (line 12) | interface Props { FILE: source/ui/components/panels/RoleDeletionPanel.tsx type Step (line 10) | type Step = 'location' | 'confirm'; type Props (line 12) | interface Props { FILE: source/ui/components/panels/RoleListPanel.tsx type Tab (line 15) | type Tab = 'global' | 'project'; type Props (line 17) | interface Props { FILE: source/ui/components/panels/RoleSubagentCreationPanel.tsx type Step (line 12) | type Step = 'location' | 'selectAgent' | 'confirm'; type Props (line 14) | interface Props { FILE: source/ui/components/panels/RoleSubagentDeletionPanel.tsx type Step (line 11) | type Step = 'location' | 'selectRole' | 'confirm'; type Props (line 13) | interface Props { FILE: source/ui/components/panels/RoleSubagentListPanel.tsx type Tab (line 12) | type Tab = 'global' | 'project'; type Props (line 14) | interface Props { FILE: source/ui/components/panels/RollbackMenuPanel.tsx type MessageItem (line 4) | type MessageItem = { type Translation (line 10) | type Translation = { type ThemeColors (line 18) | type ThemeColors = { type Props (line 25) | type Props = { constant MAX_VISIBLE_ITEMS (line 34) | const MAX_VISIBLE_ITEMS = 5; function RollbackMenuPanel (line 36) | function RollbackMenuPanel({ FILE: source/ui/components/panels/RunningAgentsPanel.tsx type Props (line 9) | interface Props { function truncatePrompt (line 17) | function truncatePrompt(prompt: string, maxLength: number): string { function formatElapsed (line 30) | function formatElapsed(startedAt: Date): string { FILE: source/ui/components/panels/SessionListPanel.tsx type Props (line 11) | type Props = { function SessionListPanel (line 16) | function SessionListPanel({onSelectSession, onClose}: Props) { FILE: source/ui/components/panels/SkillsCreationPanel.tsx type CreationMode (line 16) | type CreationMode = 'manual' | 'ai'; type Step (line 18) | type Step = type Props (line 31) | interface Props { FILE: source/ui/components/panels/SkillsListPanel.tsx type Props (line 11) | interface Props { constant NON_FOCUSED_SKILL_DESC_MAX_LEN (line 15) | const NON_FOCUSED_SKILL_DESC_MAX_LEN = 30; constant MAX_DISPLAY_ITEMS (line 16) | const MAX_DISPLAY_ITEMS = 8; function SkillsListPanel (line 18) | function SkillsListPanel({onClose}: Props) { FILE: source/ui/components/panels/SkillsPickerPanel.tsx type SkillsPickerFocus (line 7) | type SkillsPickerFocus = 'search' | 'append'; type SkillsPickerItem (line 9) | type SkillsPickerItem = { type Props (line 16) | interface Props { FILE: source/ui/components/panels/SubAgentDepthPanel.tsx type Props (line 11) | type Props = { function SubAgentDepthPanel (line 16) | function SubAgentDepthPanel({visible, onClose}: Props) { FILE: source/ui/components/panels/TodoListPanel.tsx type Props (line 11) | type Props = { type FlattenedTodoItem (line 15) | type FlattenedTodoItem = TodoItem & { function getStatusIcon (line 20) | function getStatusIcon(status: TodoItem['status']): string { function buildFlattenedTodos (line 26) | function buildFlattenedTodos(todos: TodoItem[]): FlattenedTodoItem[] { function isDescendantOf (line 72) | function isDescendantOf( function TodoListPanel (line 89) | function TodoListPanel({onClose}: Props) { FILE: source/ui/components/panels/TodoPickerPanel.tsx type Props (line 9) | interface Props { FILE: source/ui/components/panels/UsagePanel.tsx type UsageLogEntry (line 11) | interface UsageLogEntry { type ModelStats (line 21) | interface ModelStats { type AggregatedStats (line 29) | interface AggregatedStats { type Granularity (line 34) | type Granularity = 'hour' | 'day' | 'week' | 'month'; function getModelShortName (line 36) | function getModelShortName(modelName: string, maxLength = 20): string { function loadUsageData (line 153) | async function loadUsageData(): Promise { function filterByGranularity (line 199) | function filterByGranularity( function aggregateByModel (line 226) | function aggregateByModel(entries: UsageLogEntry[]): AggregatedStats { function formatTokens (line 256) | function formatTokens(tokens: number, compact = false): string { function renderStackedBarChart (line 270) | function renderStackedBarChart( function UsagePanel (line 514) | function UsagePanel() { FILE: source/ui/components/panels/WorkingDirectoryPanel.tsx type Props (line 17) | type Props = { type SSHAuthMethod (line 21) | type SSHAuthMethod = 'password' | 'privateKey' | 'agent'; type SSHFormState (line 23) | type SSHFormState = { type SSHFormField (line 33) | type SSHFormField = function WorkingDirectoryPanel (line 42) | function WorkingDirectoryPanel({onClose}: Props) { FILE: source/ui/components/pixel-editor/PixelEditor.tsx constant PALETTE (line 8) | const PALETTE = [ constant BLOCK_CHAR (line 21) | const BLOCK_CHAR = '\u2580'; function createEmptyGrid (line 23) | function createEmptyGrid(width: number, height: number): PixelGrid { function blendWithWhite (line 29) | function blendWithWhite(hex: string, ratio: number): string { function applyCursorEffect (line 42) | function applyCursorEffect(hex: string): string { type PixelEditorProps (line 61) | type PixelEditorProps = { function PixelEditor (line 70) | function PixelEditor({ FILE: source/ui/components/pixel-editor/types.ts type PixelColor (line 1) | type PixelColor = string; type PixelGrid (line 3) | type PixelGrid = PixelColor[][]; type PixelEditorProps (line 5) | interface PixelEditorProps { FILE: source/ui/components/scheduler/SchedulerCountdown.tsx type SchedulerCountdownProps (line 7) | interface SchedulerCountdownProps { function formatDuration (line 17) | function formatDuration(seconds: number): string { function getProgressBar (line 28) | function getProgressBar( function SchedulerCountdown (line 39) | function SchedulerCountdown({ FILE: source/ui/components/special/AskUserQuestion.tsx type AskUserQuestionResult (line 7) | interface AskUserQuestionResult { type Props (line 13) | interface Props { constant VISIBLE_OPTION_ROWS (line 21) | const VISIBLE_OPTION_ROWS = 5; constant NON_FOCUSED_OPTION_MAX_LEN (line 23) | const NON_FOCUSED_OPTION_MAX_LEN = 20; function AskUserQuestion (line 40) | function AskUserQuestion({question, options, onAnswer}: Props) { FILE: source/ui/components/special/ChatHeader.tsx type ChatHeaderProps (line 7) | type ChatHeaderProps = { function ChatHeader (line 13) | function ChatHeader({ function maskRevealedChars (line 89) | function maskRevealedChars(full: string, revealChars?: number): string { function ChatHeaderLogo (line 112) | function ChatHeaderLogo({ FILE: source/ui/components/special/HookErrorDisplay.tsx type HookErrorDisplayProps (line 5) | interface HookErrorDisplayProps { FILE: source/ui/components/special/TodoTree.tsx type TodoItem (line 6) | interface TodoItem { type TodoTreeProps (line 13) | interface TodoTreeProps { function TodoTree (line 20) | function TodoTree({todos}: TodoTreeProps) { FILE: source/ui/components/sse/SSEServerStatus.tsx type LogEntry (line 5) | interface LogEntry { type SSEServerStatusProps (line 11) | interface SSEServerStatusProps { FILE: source/ui/components/tools/DiffViewer.tsx type Props (line 11) | interface Props { type DiffHunk (line 20) | interface DiffHunk { function expandTabsForDisplay (line 31) | function expandTabsForDisplay(line: string, tabWidth = 2): string { function stripLineNumbers (line 50) | function stripLineNumbers(content: string): string { constant MIN_SIDE_BY_SIDE_WIDTH (line 74) | const MIN_SIDE_BY_SIDE_WIDTH = 120; constant LANGUAGE_BY_EXTENSION (line 76) | const LANGUAGE_BY_EXTENSION: Record = { function inferLanguageFromFilename (line 106) | function inferLanguageFromFilename(filename?: string): string | undefined { function highlightCodeContent (line 121) | function highlightCodeContent(content: string, language?: string): string { function normalizeHexColor (line 136) | function normalizeHexColor(hex: string): string | null { function blendHexColors (line 158) | function blendHexColors( function computeHunks (line 193) | function computeHunks( function DiffViewer (line 313) | function DiffViewer({ function formatUnified (line 449) | function formatUnified( function formatSideBySide (line 478) | function formatSideBySide( FILE: source/ui/components/tools/FileList.tsx type FileItem (line 23) | type FileItem = { type Props (line 34) | type Props = { type FileListRef (line 43) | type FileListRef = { type DisplayMode (line 52) | type DisplayMode = 'list' | 'tree'; type DisplayItem (line 54) | type DisplayItem = { constant SEARCH_RESULT_TTL_MS (line 66) | const SEARCH_RESULT_TTL_MS = 30_000; FILE: source/ui/components/tools/FileRollbackConfirmation.tsx type RollbackMode (line 8) | type RollbackMode = 'conversation' | 'both' | 'files'; type Props (line 10) | type Props = { function FileRollbackConfirmation (line 21) | function FileRollbackConfirmation({ FILE: source/ui/components/tools/ToolConfirmation.tsx type ConfirmationResult (line 14) | type ConfirmationResult = type ToolCall (line 20) | interface ToolCall { type Props (line 29) | interface Props { function formatArgumentValue (line 38) | function formatArgumentValue( function formatArgumentsAsTree (line 58) | function formatArgumentsAsTree( function ToolConfirmation (line 93) | function ToolConfirmation({ FILE: source/ui/components/tools/ToolResultPreview.tsx type ToolResultPreviewProps (line 6) | interface ToolResultPreviewProps { function removeAnsiCodes (line 16) | function removeAnsiCodes(text: string): string { function ToolResultPreview (line 24) | function ToolResultPreview({ function renderSubAgentPreview (line 79) | function renderSubAgentPreview(data: any, _maxLines: number, theme: Them... function renderTerminalExecutePreview (line 96) | function renderTerminalExecutePreview( function renderReadPreview (line 300) | function renderReadPreview( function renderACEPreview (line 340) | function renderACEPreview( function renderCreatePreview (line 475) | function renderCreatePreview(data: any, theme: Theme) { function renderEditSearchPreview (line 486) | function renderEditSearchPreview(data: any, theme: Theme) { function renderWebSearchPreview (line 509) | function renderWebSearchPreview(data: any, _maxLines: number, theme: The... function renderWebFetchPreview (line 530) | function renderWebFetchPreview(data: any, theme: Theme) { function renderGenericPreview (line 541) | function renderGenericPreview(data: any, maxLines: number, theme: Theme) { function renderTodoPreview (line 571) | function renderTodoPreview( function renderIdeDiagnosticsPreview (line 644) | function renderIdeDiagnosticsPreview(data: any, theme: Theme) { FILE: source/ui/contexts/ThemeContext.tsx type ThemeContextType (line 16) | interface ThemeContextType { type ThemeProviderProps (line 29) | interface ThemeProviderProps { function ThemeProvider (line 33) | function ThemeProvider({children}: ThemeProviderProps) { function useTheme (line 88) | function useTheme(): ThemeContextType { FILE: source/ui/pages/ChatScreen.tsx constant MIN_TERMINAL_HEIGHT (line 38) | const MIN_TERMINAL_HEIGHT = 10; type Props (line 40) | type Props = { function ChatScreen (line 47) | function ChatScreen({ FILE: source/ui/pages/CodeBaseConfigScreen.tsx type Props (line 16) | type Props = { type ConfigField (line 22) | type ConfigField = function CodeBaseConfigScreen (line 88) | function CodeBaseConfigScreen({ FILE: source/ui/pages/ConfigScreen.tsx function ConfigScreen (line 23) | function ConfigScreen({ FILE: source/ui/pages/CustomHeadersScreen.tsx type Props (line 16) | type Props = { type View (line 20) | type View = 'list' | 'add' | 'edit' | 'editHeaders' | 'confirmDelete'; type ListAction (line 21) | type ListAction = function CustomHeadersScreen (line 29) | function CustomHeadersScreen({onBack}: Props) { FILE: source/ui/pages/CustomThemeScreen.tsx type Props (line 18) | type Props = { type ColorKey (line 22) | type ColorKey = keyof ThemeColors; function CustomThemeScreen (line 55) | function CustomThemeScreen({onBack}: Props) { FILE: source/ui/pages/ExitScreen.tsx type Props (line 16) | type Props = { function dotLine (line 20) | function dotLine(width: number): string { constant EXIT_IMAGE_PATH (line 25) | const EXIT_IMAGE_PATH = join(homedir(), '.snow', 'exit-image.json'); constant BLOCK_CHAR (line 26) | const BLOCK_CHAR = '\u2580'; function ExitScreen (line 28) | function ExitScreen({version = '1.0.0'}: Props) { FILE: source/ui/pages/HeadlessModeScreen.tsx type Props (line 23) | type Props = { function renderConsoleMarkdown (line 30) | function renderConsoleMarkdown(content: string): string { function parseConsoleMarkdown (line 35) | function parseConsoleMarkdown(content: string): any[] { function renderConsoleBlock (line 131) | function renderConsoleBlock(block: any): string { function highlightConsoleCode (line 186) | function highlightConsoleCode(code: string, language: string): string { function renderInlineFormatting (line 240) | function renderInlineFormatting(text: string): string { function askHeadlessConfirmation (line 281) | async function askHeadlessConfirmation( function HeadlessModeScreen (line 351) | function HeadlessModeScreen({ FILE: source/ui/pages/HelpScreen.tsx type Props (line 9) | type Props = { function HelpScreen (line 14) | function HelpScreen({onBackDestination = 'chat'}: Props) { FILE: source/ui/pages/HooksConfigScreen.tsx type Props (line 23) | type Props = { type Screen (line 29) | type Screen = type RuleField (line 36) | type RuleField = 'description' | 'matcher'; type ActionField (line 37) | type ActionField = 'enabled' | 'type' | 'command' | 'prompt' | 'timeout'; function HooksConfigScreen (line 39) | function HooksConfigScreen({ FILE: source/ui/pages/LanguageSettingsScreen.tsx type Props (line 9) | type Props = { function LanguageSettingsScreen (line 14) | function LanguageSettingsScreen({ FILE: source/ui/pages/MCPConfigScreen.tsx type Props (line 18) | type Props = { function checkCommandExists (line 23) | function checkCommandExists(command: string): boolean { function getSystemEditor (line 53) | function getSystemEditor(): string | null { function getConfigFilePath (line 79) | function getConfigFilePath(scope: MCPConfigScope): string { function getConfigByScope (line 86) | function getConfigByScope(scope: MCPConfigScope) { type I18nMessages (line 90) | interface I18nMessages { function openEditorForScope (line 99) | function openEditorForScope( function MCPConfigScreen (line 200) | function MCPConfigScreen({onBack}: Props) { FILE: source/ui/pages/PixelEditorScreen.tsx constant DRAW_DIR (line 20) | const DRAW_DIR = join(homedir(), '.snow', 'draw'); constant EXIT_IMAGE_PATH (line 21) | const EXIT_IMAGE_PATH = join(homedir(), '.snow', 'exit-image.json'); function ensureDrawDir (line 23) | function ensureDrawDir(): void { function sanitizeFileName (line 29) | function sanitizeFileName(name: string): string { function cropGrid (line 33) | function cropGrid(grid: PixelGrid): PixelGrid { type DrawingFile (line 55) | interface DrawingFile { type View (line 61) | type View = 'menu' | 'editor' | 'manager'; type Props (line 63) | type Props = { function PixelEditorScreen (line 67) | function PixelEditorScreen({onBack}: Props) { FILE: source/ui/pages/ProxyConfigScreen.tsx type Props (line 21) | type Props = { function ProxyConfigScreen (line 27) | function ProxyConfigScreen({ FILE: source/ui/pages/SensitiveCommandConfigScreen.tsx type Props (line 49) | type Props = { type ViewMode (line 54) | type ViewMode = 'list' | 'scope-select' | 'add'; type ScopeSelectPurpose (line 55) | type ScopeSelectPurpose = 'add' | 'reset'; constant SCOPE_OPTIONS (line 57) | const SCOPE_OPTIONS: SensitiveCommandScope[] = ['project', 'global']; function SensitiveCommandConfigScreen (line 59) | function SensitiveCommandConfigScreen({ FILE: source/ui/pages/SubAgentConfigScreen.tsx type Props (line 65) | type Props = { type ToolCategory (line 72) | type ToolCategory = { type FormField (line 77) | type FormField = 'name' | 'description' | 'role' | 'configProfile' | 'to... function SubAgentConfigScreen (line 79) | function SubAgentConfigScreen({ FILE: source/ui/pages/SubAgentListScreen.tsx type Props (line 14) | type Props = { function SubAgentListScreen (line 23) | function SubAgentListScreen({ FILE: source/ui/pages/SystemPromptConfigScreen.tsx type Props (line 20) | type Props = { type View (line 24) | type View = 'list' | 'add' | 'edit' | 'confirmDelete' | 'editWithEditor'; type ListAction (line 25) | type ListAction = function checkCommandExists (line 33) | function checkCommandExists(command: string): boolean { function getSystemEditor (line 65) | function getSystemEditor(): string | null { function SystemPromptConfigScreen (line 94) | function SystemPromptConfigScreen({onBack}: Props) { FILE: source/ui/pages/TaskManagerScreen.tsx type Props (line 13) | type Props = { function TaskManagerScreen (line 18) | function TaskManagerScreen({onBack, onResumeTask}: Props) { FILE: source/ui/pages/ThemeSettingsScreen.tsx type Props (line 21) | type Props = { type Screen (line 26) | type Screen = 'main' | 'custom'; function ThemeSettingsScreen (line 38) | function ThemeSettingsScreen({ FILE: source/ui/pages/WelcomeScreen.tsx constant LOGO_REVEAL_MAX_CHARS (line 56) | const LOGO_REVEAL_MAX_CHARS = 63; constant LOGO_REVEAL_INTERVAL_MS (line 58) | const LOGO_REVEAL_INTERVAL_MS = 10; type Props (line 60) | type Props = { type InlineView (line 67) | type InlineView = function WelcomeScreen (line 83) | function WelcomeScreen({ FILE: source/ui/pages/chatScreen/ChatScreenConversationView.tsx type Props (line 26) | type Props = { function ChatScreenConversationView (line 47) | function ChatScreenConversationView({ FILE: source/ui/pages/chatScreen/ChatScreenPanels.tsx type SnapshotState (line 42) | type SnapshotState = { type Props (line 53) | type Props = { function ChatScreenPanels (line 77) | function ChatScreenPanels({ FILE: source/ui/pages/chatScreen/types.ts type PendingMessageInput (line 1) | type PendingMessageInput = { type InputImage (line 6) | type InputImage = { type RestoreInputContent (line 12) | type RestoreInputContent = { type DraftContent (line 17) | type DraftContent = RestoreInputContent; type BashSensitiveCommandState (line 19) | type BashSensitiveCommandState = { type CustomCommandExecutionState (line 24) | type CustomCommandExecutionState = { type PendingUserQuestionResult (line 33) | type PendingUserQuestionResult = { type PendingUserQuestionState (line 39) | type PendingUserQuestionState = { type CodebaseProgressState (line 46) | type CodebaseProgressState = { type FileUpdateNotificationState (line 55) | type FileUpdateNotificationState = { FILE: source/ui/pages/chatScreen/useBackgroundProcessSelection.ts function useBackgroundProcessSelection (line 4) | function useBackgroundProcessSelection(processes: BackgroundProcess[]) { FILE: source/ui/pages/chatScreen/useChatScreenCommands.ts function useChatScreenCommands (line 4) | function useChatScreenCommands(workingDirectory: string) { FILE: source/ui/pages/chatScreen/useChatScreenInputHandler.ts type InputKey (line 15) | type InputKey = { type BackgroundProcessesState (line 23) | type BackgroundProcessesState = { type Options (line 29) | type Options = { function useChatScreenInputHandler (line 47) | function useChatScreenInputHandler({ FILE: source/ui/pages/chatScreen/useChatScreenLocalState.ts function useChatScreenLocalState (line 15) | function useChatScreenLocalState() { FILE: source/ui/pages/chatScreen/useChatScreenModes.ts type Options (line 20) | type Options = { function useChatScreenModes (line 25) | function useChatScreenModes({enableYolo, enablePlan}: Options) { FILE: source/ui/pages/chatScreen/useChatScreenSessionLifecycle.ts type Options (line 13) | type Options = { function useChatScreenSessionLifecycle (line 25) | function useChatScreenSessionLifecycle({ FILE: source/ui/pages/chatScreen/useCodebaseIndexing.ts type ProgressData (line 11) | type ProgressData = NonNullable; function toProgressState (line 13) | function toProgressState(progressData: ProgressData): ProgressData { function useCodebaseIndexing (line 24) | function useCodebaseIndexing(workingDirectory: string) { FILE: source/ui/pages/configScreen/ConfigFieldRenderer.tsx type Props (line 9) | type Props = { function ConfigFieldRenderer (line 14) | function ConfigFieldRenderer({field, state}: Props) { FILE: source/ui/pages/configScreen/ConfigSelectPanel.tsx type Props (line 9) | type Props = { function ConfigSelectPanel (line 13) | function ConfigSelectPanel({state}: Props) { function ProfileSelect (line 259) | function ProfileSelect({state}: Props) { function SystemPromptSelect (line 360) | function SystemPromptSelect({state}: Props) { function ModelSelect (line 445) | function ModelSelect({state}: Props) { function ReasoningEffortSelect (line 505) | function ReasoningEffortSelect({state}: Props) { FILE: source/ui/pages/configScreen/ConfigSubViews.tsx type SubViewProps (line 9) | type SubViewProps = { type ProfileNameInputViewProps (line 14) | type ProfileNameInputViewProps = SubViewProps & { function ProfileNameInputView (line 24) | function ProfileNameInputView({ function ProfileCreateView (line 79) | function ProfileCreateView({state, inlineMode}: SubViewProps) { function ProfileRenameView (line 97) | function ProfileRenameView({state, inlineMode}: SubViewProps) { function ProfileDeleteView (line 115) | function ProfileDeleteView({state, inlineMode}: SubViewProps) { function LoadingView (line 169) | function LoadingView({state, inlineMode}: SubViewProps) { function ManualInputView (line 212) | function ManualInputView({state, inlineMode}: SubViewProps) { FILE: source/ui/pages/configScreen/types.ts type ConfigField (line 3) | type ConfigField = type ProfileMode (line 36) | type ProfileMode = 'normal' | 'creating' | 'renaming' | 'deleting'; type ConfigScreenProps (line 38) | type ConfigScreenProps = { constant MAX_VISIBLE_FIELDS (line 49) | const MAX_VISIBLE_FIELDS = 8; constant SELECT_FIELDS (line 93) | const SELECT_FIELDS: ConfigField[] = [ constant NUMERIC_FIELDS (line 112) | const NUMERIC_FIELDS: ConfigField[] = [ constant TOGGLE_FIELDS (line 121) | const TOGGLE_FIELDS: ConfigField[] = [ type RequestMethodOption (line 133) | type RequestMethodOption = { FILE: source/ui/pages/configScreen/useConfigInput.ts function useConfigInput (line 9) | function useConfigInput( FILE: source/ui/pages/configScreen/useConfigState.ts type UseConfigStateOptions (line 37) | type UseConfigStateOptions = { function useConfigState (line 47) | function useConfigState(options?: UseConfigStateOptions) { type ConfigStateReturn (line 991) | type ConfigStateReturn = ReturnType; FILE: source/ui/themes/index.ts type ThemeType (line 5) | type ThemeType = type ThemeColors (line 16) | interface ThemeColors { function loadCustomThemeColors (line 68) | function loadCustomThemeColors(): ThemeColors { type Theme (line 90) | interface Theme { function getCustomTheme (line 387) | function getCustomTheme(): Theme { FILE: source/utils/acp/acpManager.ts constant ACP_PROTOCOL_VERSION (line 57) | const ACP_PROTOCOL_VERSION: ProtocolVersion = 1; type AcpSession (line 60) | interface AcpSession { type ToolCallStatus (line 70) | type ToolCallStatus = 'pending' | 'running' | 'completed' | 'failed'; class AcpManager (line 76) | class AcpManager { method start (line 83) | async start(input: Readable, output: Writable): Promise { method createAgentHandler (line 104) | private createAgentHandler(conn: AgentSideConnection): Agent { method handlePrompt (line 286) | private async handlePrompt( method sendToolCallUpdate (line 649) | private async sendToolCallUpdate( method requestToolPermission (line 675) | private async requestToolPermission( method getVersion (line 758) | private getVersion(): string { method isConnected (line 771) | isConnected(): boolean { method stop (line 778) | async stop(): Promise { FILE: source/utils/codebase/codebaseDatabase.ts function getSqlJs (line 17) | async function getSqlJs(): Promise { type CodeChunk (line 39) | interface CodeChunk { type IndexProgress (line 54) | interface IndexProgress { class CodebaseDatabase (line 69) | class CodebaseDatabase { method constructor (line 74) | constructor(projectRoot: string) { method initialize (line 86) | async initialize(): Promise { method createTables (line 114) | private createTables(): void { method save (line 162) | private save(): void { method insertChunks (line 171) | insertChunks(chunks: CodeChunk[]): void { method deleteChunksByFile (line 204) | deleteChunksByFile(filePath: string): void { method getChunksByFile (line 214) | getChunksByFile(filePath: string): CodeChunk[] { method hasFileHash (line 231) | hasFileHash(fileHash: string): boolean { method getTotalChunks (line 248) | getTotalChunks(): number { method searchSimilar (line 261) | searchSimilar(queryEmbedding: number[], limit: number = 10): CodeChunk... method searchSimilarInFiles (line 290) | searchSimilarInFiles( method updateProgress (line 326) | updateProgress(progress: Partial): void { method getProgress (line 379) | getProgress(): IndexProgress { method setWatcherEnabled (line 410) | setWatcherEnabled(enabled: boolean): void { method isWatcherEnabled (line 422) | isWatcherEnabled(): boolean { method clear (line 437) | clear(): void { method close (line 461) | close(): void { method resultsToObjects (line 473) | private resultsToObjects(result: { method rowToChunk (line 489) | private rowToChunk(row: any): CodeChunk { method cosineSimilarity (line 516) | private cosineSimilarity(a: number[], b: number[]): number { FILE: source/utils/codebase/codebaseSearchEvents.ts type CodebaseSearchEvent (line 3) | type CodebaseSearchEvent = { class CodebaseSearchEventEmitter (line 16) | class CodebaseSearchEventEmitter extends EventEmitter { method emitSearchEvent (line 17) | emitSearchEvent(event: CodebaseSearchEvent) { method onSearchEvent (line 21) | onSearchEvent(callback: (event: CodebaseSearchEvent) => void) { method removeSearchEventListener (line 25) | removeSearchEventListener(callback: (event: CodebaseSearchEvent) => vo... FILE: source/utils/codebase/conversationContext.ts function setConversationContext (line 12) | function setConversationContext( function getConversationContext (line 24) | function getConversationContext(): function clearConversationContext (line 36) | function clearConversationContext(): void { FILE: source/utils/codebase/gitignoreValidator.ts function validateGitignore (line 11) | function validateGitignore(workingDirectory: string): { FILE: source/utils/codebase/hashBasedSnapshot.ts type FileBackup (line 11) | interface FileBackup { type SnapshotMetadata (line 21) | interface SnapshotMetadata { class HashBasedSnapshotManager (line 34) | class HashBasedSnapshotManager { method getRollbackPreviewForFile (line 41) | async getRollbackPreviewForFile( method constructor (line 155) | constructor() { method acquireLock (line 169) | private async acquireLock(filePath: string): Promise<() => void> { method ensureSnapshotsDir (line 192) | private async ensureSnapshotsDir(): Promise { method getSnapshotPath (line 199) | private getSnapshotPath(sessionId: string, messageIndex: number): stri... method backupFile (line 212) | async backupFile( method removeFileBackup (line 295) | async removeFileBackup( method saveSnapshotMetadata (line 358) | private async saveSnapshotMetadata( method listSnapshots (line 373) | async listSnapshots( method getFilesToRollback (line 409) | async getFilesToRollback( method rollbackToMessageIndex (line 447) | async rollbackToMessageIndex( method deleteSnapshotsFromIndex (line 539) | async deleteSnapshotsFromIndex( method clearAllSnapshots (line 579) | async clearAllSnapshots(sessionId: string): Promise { FILE: source/utils/codebase/reindexCodebase.ts function reindexCodebase (line 18) | async function reindexCodebase( FILE: source/utils/commands/autoformat.ts function getMessages (line 13) | function getMessages() { FILE: source/utils/commands/btwStream.ts constant BTW_SYSTEM_SUFFIX (line 8) | const BTW_SYSTEM_SUFFIX = ` function buildContextMessages (line 18) | function buildContextMessages(): ChatMessage[] { FILE: source/utils/commands/custom.ts type CommandLocation (line 12) | type CommandLocation = 'global' | 'project'; type CustomCommand (line 14) | interface CustomCommand { type CommandFileEntry (line 22) | type CommandFileEntry = { function isValidSlashCommandName (line 27) | function isValidSlashCommandName(name: string): boolean { function parseNamespacedCommandName (line 35) | function parseNamespacedCommandName(name: string): { function assertValidNamespacePath (line 54) | function assertValidNamespacePath(namespacePath: string): string[] { function getCommandJsonFilePath (line 79) | function getCommandJsonFilePath(commandsDir: string, name: string): stri... function listJsonCommandsRecursively (line 94) | async function listJsonCommandsRecursively( function loadCustomCommandFromFile (line 153) | async function loadCustomCommandFromFile( function loadCommandsFromDir (line 178) | async function loadCommandsFromDir( function getCustomCommandsDir (line 205) | function getCustomCommandsDir( function ensureCommandsDir (line 218) | async function ensureCommandsDir( function loadCustomCommands (line 229) | async function loadCustomCommands( function isCommandNameConflict (line 258) | function isCommandNameConflict(name: string): boolean { function checkCommandExists (line 264) | function checkCommandExists( function saveCustomCommand (line 279) | async function saveCustomCommand( function getCustomCommands (line 316) | function getCustomCommands(): CustomCommand[] { function deleteCustomCommand (line 325) | async function deleteCustomCommand( function registerCustomCommands (line 343) | async function registerCustomCommands( FILE: source/utils/commands/deepresearch.ts constant PROMPT_PREVIEW_MAX (line 12) | const PROMPT_PREVIEW_MAX = 120; function truncatePrompt (line 14) | function truncatePrompt(text: string): string { FILE: source/utils/commands/export.ts function getMessages (line 9) | function getMessages() { FILE: source/utils/commands/loop.ts function format (line 13) | function format(template: string, params: Record): string { FILE: source/utils/commands/newPrompt.ts function readFileSafe (line 25) | function readFileSafe(filePath: string, maxLen = 8192): string | null { function detectTechStack (line 43) | function detectTechStack(cwd: string, rootFileSet: Set): string { function gatherProjectContext (line 442) | function gatherProjectContext(): string { FILE: source/utils/commands/role.ts type RoleLocation (line 12) | type RoleLocation = 'global' | 'project'; type RoleConfig (line 14) | type RoleConfig = { constant DEFAULT_ACTIVE_ROLE_ID (line 19) | const DEFAULT_ACTIVE_ROLE_ID = 'active'; function getRoleConfigPath (line 21) | function getRoleConfigPath( function readRoleConfig (line 32) | function readRoleConfig( function writeRoleConfig (line 46) | async function writeRoleConfig( function resolveActiveRoleId (line 57) | function resolveActiveRoleId( function getRoleFilePath (line 79) | function getRoleFilePath( function checkRoleExists (line 93) | function checkRoleExists( function createRoleFile (line 104) | async function createRoleFile( function deleteRoleFile (line 136) | async function deleteRoleFile( type RoleItem (line 171) | interface RoleItem { function generateRoleHash (line 184) | function generateRoleHash(): string { function getRoleDirectory (line 191) | function getRoleDirectory( function parseRoleFilename (line 206) | function parseRoleFilename(filename: string): string | null { function listRoles (line 214) | function listRoles( function switchActiveRole (line 273) | async function switchActiveRole( function createInactiveRole (line 299) | async function createInactiveRole( function deleteRole (line 332) | async function deleteRole( function toggleRoleOverride (line 375) | async function toggleRoleOverride( FILE: source/utils/commands/roleSubagent.ts type RoleSubagentLocation (line 11) | type RoleSubagentLocation = 'global' | 'project'; type RoleSubagentItem (line 13) | interface RoleSubagentItem { function getRoleSubagentDirectory (line 21) | function getRoleSubagentDirectory( function buildRoleSubagentFilename (line 31) | function buildRoleSubagentFilename(agentName: string): string { function parseRoleSubagentFilename (line 35) | function parseRoleSubagentFilename(filename: string): string | null { function getRoleSubagentFilePath (line 40) | function getRoleSubagentFilePath( function checkRoleSubagentExists (line 49) | function checkRoleSubagentExists( function createRoleSubagentFile (line 57) | async function createRoleSubagentFile( function deleteRoleSubagentFile (line 87) | async function deleteRoleSubagentFile( function listRoleSubagents (line 114) | function listRoleSubagents( function loadSubAgentCustomRole (line 155) | function loadSubAgentCustomRole( function getAvailableSubAgents (line 191) | function getAvailableSubAgents(): Array<{ FILE: source/utils/commands/simple.ts function applySimpleMode (line 12) | function applySimpleMode(value: boolean): void { function getMessages (line 18) | function getMessages() { FILE: source/utils/commands/skills.ts type SkillMetadata (line 20) | interface SkillMetadata { type GeneratedSkillContent (line 25) | interface GeneratedSkillContent { type GeneratedSkillDraft (line 31) | interface GeneratedSkillDraft { type SkillLocation (line 38) | type SkillLocation = 'global' | 'project'; function validateSkillId (line 41) | function validateSkillId(name: string): { function validateSkillName (line 109) | function validateSkillName(name: string): { function stripLeadingFrontMatter (line 116) | function stripLeadingFrontMatter(markdown: string): string { function sanitizeSkillName (line 125) | function sanitizeSkillName(input: string): string { function makeUniqueSkillName (line 133) | function makeUniqueSkillName(baseName: string, projectRoot?: string): st... function extractTaggedJson (line 156) | function extractTaggedJson(text: string): string | null { function extractTaggedFiles (line 164) | function extractTaggedFiles(text: string): Map { function buildSkillGenerationSystemPrompt (line 178) | function buildSkillGenerationSystemPrompt(): string { function buildSkillGenerationUserPrompt (line 182) | function buildSkillGenerationUserPrompt(requirement: string): string { function callModelForText (line 211) | async function callModelForText( function generateSkillDraftWithAI (line 302) | async function generateSkillDraftWithAI( function generateSkillMarkdownWithFrontMatter (line 370) | function generateSkillMarkdownWithFrontMatter( function checkSkillExists (line 386) | function checkSkillExists( function getSkillDirectory (line 396) | function getSkillDirectory( function generateSkillTemplate (line 412) | function generateSkillTemplate(metadata: SkillMetadata): string { function generateReferenceTemplate (line 474) | function generateReferenceTemplate(): string { function generateExamplesTemplate (line 499) | function generateExamplesTemplate(): string { function createSkillFromGenerated (line 544) | async function createSkillFromGenerated( function createSkillTemplate (line 646) | async function createSkillTemplate( FILE: source/utils/config/apiConfig.ts type RequestMethod (line 11) | type RequestMethod = 'chat' | 'responses' | 'gemini' | 'anthropic'; type ThinkingConfig (line 12) | interface ThinkingConfig { type GeminiThinkingLevel (line 18) | type GeminiThinkingLevel = 'minimal' | 'low' | 'medium' | 'high'; type GeminiThinkingConfig (line 20) | interface GeminiThinkingConfig { type ResponsesReasoningConfig (line 25) | interface ResponsesReasoningConfig { type ChatReasoningEffort (line 30) | type ChatReasoningEffort = 'low' | 'medium' | 'high' | 'max'; type ChatThinkingConfig (line 32) | interface ChatThinkingConfig { type ApiConfig (line 37) | interface ApiConfig { type MCPServer (line 70) | interface MCPServer { type MCPConfig (line 82) | interface MCPConfig { type AppConfig (line 86) | interface AppConfig { type SystemPromptItem (line 93) | interface SystemPromptItem { type SystemPromptConfig (line 103) | interface SystemPromptConfig { type CustomHeadersItem (line 111) | interface CustomHeadersItem { type CustomHeadersConfig (line 121) | interface CustomHeadersConfig { constant DEFAULT_STREAM_IDLE_TIMEOUT_SEC (line 126) | const DEFAULT_STREAM_IDLE_TIMEOUT_SEC = 180; constant DEFAULT_AUTO_COMPRESS_THRESHOLD (line 127) | const DEFAULT_AUTO_COMPRESS_THRESHOLD = 80; constant DEFAULT_TOOL_RESULT_TOKEN_LIMIT_PERCENT (line 128) | const DEFAULT_TOOL_RESULT_TOKEN_LIMIT_PERCENT = 30; constant MAX_TOOL_RESULT_TOKEN_LIMIT_PERCENT (line 129) | const MAX_TOOL_RESULT_TOKEN_LIMIT_PERCENT = 80; constant MIN_TOOL_RESULT_TOKEN_LIMIT_PERCENT (line 130) | const MIN_TOOL_RESULT_TOKEN_LIMIT_PERCENT = 20; function normalizeStreamIdleTimeoutSec (line 131) | function normalizeStreamIdleTimeoutSec(value: unknown): number { constant DEFAULT_CONFIG (line 139) | const DEFAULT_CONFIG: AppConfig = { constant DEFAULT_MCP_CONFIG (line 154) | const DEFAULT_MCP_CONFIG: MCPConfig = { constant CONFIG_DIR (line 158) | const CONFIG_DIR = join(homedir(), '.snow'); constant PROXY_CONFIG_FILE (line 159) | const PROXY_CONFIG_FILE = join(CONFIG_DIR, 'proxy-config.json'); constant SYSTEM_PROMPT_FILE (line 161) | const SYSTEM_PROMPT_FILE = join(CONFIG_DIR, 'system-prompt.txt'); constant SYSTEM_PROMPT_JSON_FILE (line 162) | const SYSTEM_PROMPT_JSON_FILE = join(CONFIG_DIR, 'system-prompt.json'); constant CUSTOM_HEADERS_FILE (line 163) | const CUSTOM_HEADERS_FILE = join(CONFIG_DIR, 'custom-headers.json'); constant STATUSLINE_HOOKS_DIR (line 164) | const STATUSLINE_HOOKS_DIR = join(CONFIG_DIR, 'plugin', 'statusline'); constant SEARCH_ENGINES_DIR (line 165) | const SEARCH_ENGINES_DIR = join(CONFIG_DIR, 'plugin', 'search_engines'); type MCPConfigScope (line 167) | type MCPConfigScope = 'global' | 'project'; function getProjectMCPConfigDir (line 169) | function getProjectMCPConfigDir(): string { function getProjectMCPConfigFilePath (line 173) | function getProjectMCPConfigFilePath(): string { function getGlobalMCPConfigFilePath (line 177) | function getGlobalMCPConfigFilePath(): string { function migrateProxyConfigToNewFile (line 184) | function migrateProxyConfigToNewFile(legacyProxy: any): void { function normalizeRequestMethod (line 204) | function normalizeRequestMethod(method: unknown): RequestMethod { constant CONFIG_FILE (line 221) | const CONFIG_FILE = join(CONFIG_DIR, 'config.json'); constant MCP_CONFIG_FILE (line 222) | const MCP_CONFIG_FILE = join(CONFIG_DIR, 'mcp-config.json'); function ensureConfigDirectory (line 224) | function ensureConfigDirectory(): void { function cloneDefaultMCPConfig (line 230) | function cloneDefaultMCPConfig(): MCPConfig { function loadConfig (line 239) | function loadConfig(): AppConfig { function saveConfig (line 323) | function saveConfig(config: AppConfig): void { function clearConfigCache (line 339) | function clearConfigCache(): void { function reloadConfig (line 346) | function reloadConfig(): AppConfig { function updateSnowConfig (line 351) | async function updateSnowConfig( function getSnowConfig (line 385) | function getSnowConfig(): ApiConfig { function validateApiConfig (line 390) | function validateApiConfig(config: Partial): string[] { function isValidUrl (line 404) | function isValidUrl(url: string): boolean { function updateMCPConfig (line 413) | function updateMCPConfig( function getGlobalMCPConfig (line 441) | function getGlobalMCPConfig(): MCPConfig { function getProjectMCPConfig (line 461) | function getProjectMCPConfig(): MCPConfig { function getMCPConfig (line 479) | function getMCPConfig(): MCPConfig { function getMCPServerSource (line 495) | function getMCPServerSource(serviceName: string): MCPConfigScope | null { function getMCPConfigByScope (line 506) | function getMCPConfigByScope(scope: MCPConfigScope): MCPConfig { function validateMCPConfig (line 510) | function validateMCPConfig(config: Partial): string[] { function migrateSystemPromptFromTxt (line 590) | function migrateSystemPromptFromTxt(): void { function getSystemPromptConfig (line 633) | function getSystemPromptConfig(): SystemPromptConfig | undefined { function saveSystemPromptConfig (line 671) | function saveSystemPromptConfig(config: SystemPromptConfig): void { function getCustomSystemPrompt (line 692) | function getCustomSystemPrompt(): string[] | undefined { function getCustomSystemPromptForConfig (line 696) | function getCustomSystemPromptForConfig( function getCustomHeaders (line 738) | function getCustomHeaders(): Record { function getCustomHeadersForConfig (line 742) | function getCustomHeadersForConfig( function saveCustomHeaders (line 777) | function saveCustomHeaders(headers: Record): void { function getCustomHeadersConfig (line 799) | function getCustomHeadersConfig(): CustomHeadersConfig | null { function saveCustomHeadersConfig (line 864) | function saveCustomHeadersConfig(config: CustomHeadersConfig): void { FILE: source/utils/config/codebaseConfig.ts type CodebaseConfig (line 5) | interface CodebaseConfig { constant DEFAULT_CONFIG (line 35) | const DEFAULT_CONFIG: CodebaseConfig = { FILE: source/utils/config/configEvents.ts type ConfigChangeEvent (line 3) | type ConfigChangeEvent = { class ConfigEventEmitter (line 8) | class ConfigEventEmitter extends EventEmitter { method emitConfigChange (line 9) | emitConfigChange(event: ConfigChangeEvent) { method onConfigChange (line 13) | onConfigChange(callback: (event: ConfigChangeEvent) => void) { method removeConfigChangeListener (line 17) | removeConfigChangeListener(callback: (event: ConfigChangeEvent) => voi... FILE: source/utils/config/configManager.ts constant CONFIG_DIR (line 24) | const CONFIG_DIR = join(homedir(), '.snow'); constant PROFILES_DIR (line 25) | const PROFILES_DIR = join(CONFIG_DIR, 'profiles'); constant ACTIVE_PROFILE_FILE (line 26) | const ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.json'); constant LEGACY_ACTIVE_PROFILE_FILE (line 27) | const LEGACY_ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.txt'); constant LEGACY_CONFIG_FILE (line 28) | const LEGACY_CONFIG_FILE = join(CONFIG_DIR, 'config.json'); function clearAllAgentCaches (line 34) | function clearAllAgentCaches(): void { type ConfigProfile (line 42) | interface ConfigProfile { function ensureProfilesDirectory (line 52) | function ensureProfilesDirectory(): void { function getActiveProfileName (line 65) | function getActiveProfileName(): string { function setActiveProfileName (line 105) | function setActiveProfileName(profileName: string): void { function getProfilePath (line 119) | function getProfilePath(profileName: string): string { function migrateLegacyConfig (line 127) | function migrateLegacyConfig(): void { function normalizeStreamIdleTimeoutSec (line 156) | function normalizeStreamIdleTimeoutSec(value: unknown): number { function loadProfile (line 168) | function loadProfile(profileName: string): AppConfig | undefined { function saveProfile (line 203) | function saveProfile(profileName: string, config: AppConfig): void { function getAllProfiles (line 219) | function getAllProfiles(): ConfigProfile[] { function getProfileDisplayName (line 267) | function getProfileDisplayName(profileName: string): string { function switchProfile (line 276) | function switchProfile(profileName: string): void { function getNextProfileName (line 327) | function getNextProfileName(): string { function createProfile (line 342) | function createProfile(profileName: string, config?: AppConfig): void { function deleteProfile (line 368) | function deleteProfile(profileName: string): void { function renameProfile (line 397) | function renameProfile(oldName: string, newName: string): void { function initializeProfiles (line 445) | function initializeProfiles(): void { FILE: source/utils/config/disabledBuiltInTools.ts constant CONFIG_FILE (line 11) | const CONFIG_FILE = 'disabled-builtin-tools.json'; constant DEFAULT_DISABLED_SERVICES (line 14) | const DEFAULT_DISABLED_SERVICES: string[] = ['scheduler']; function getProjectConfigPath (line 16) | function getProjectConfigPath(): string { function getGlobalConfigPath (line 20) | function getGlobalConfigPath(): string { function getConfigPath (line 24) | function getConfigPath(): string { function getDisabledBuiltInServices (line 32) | function getDisabledBuiltInServices(): string[] { function isBuiltInServiceEnabled (line 59) | function isBuiltInServiceEnabled(serviceName: string): boolean { function toggleBuiltInService (line 66) | function toggleBuiltInService(serviceName: string): boolean { FILE: source/utils/config/disabledMCPTools.ts constant CONFIG_FILE (line 12) | const CONFIG_FILE = 'disabled-mcp-tools.json'; constant OPT_IN_CONFIG_FILE (line 13) | const OPT_IN_CONFIG_FILE = 'opt-in-mcp-tools.json'; type DisabledMCPToolsConfig (line 15) | interface DisabledMCPToolsConfig { type OptInMCPConfig (line 19) | interface OptInMCPConfig { constant DEFAULT_OPT_IN_DISABLED_KEYS (line 24) | const DEFAULT_OPT_IN_DISABLED_KEYS = new Set(['filesystem:edit']); function getProjectConfigPath (line 26) | function getProjectConfigPath(): string { function getGlobalConfigPath (line 30) | function getGlobalConfigPath(): string { function getProjectOptInPath (line 34) | function getProjectOptInPath(): string { function getGlobalOptInPath (line 38) | function getGlobalOptInPath(): string { function readOptInEnabled (line 42) | function readOptInEnabled(configPath: string): string[] { function writeOptInEnabled (line 54) | function writeOptInEnabled(configPath: string, enabledTools: string[]): ... function readConfig (line 66) | function readConfig(configPath: string): string[] { function writeConfig (line 78) | function writeConfig(configPath: string, disabledTools: string[]): void { function makeToolKey (line 90) | function makeToolKey(serviceName: string, toolName: string): string { function isDefaultOptInDisabledKey (line 94) | function isDefaultOptInDisabledKey(key: string): boolean { function getOptInEnabledMCPKeysMerged (line 101) | function getOptInEnabledMCPKeysMerged(): string[] { function getDisabledMCPTools (line 110) | function getDisabledMCPTools(): string[] { function getDisabledMCPToolsByScope (line 119) | function getDisabledMCPToolsByScope(scope: MCPConfigScope): string[] { function isMCPToolEnabled (line 128) | function isMCPToolEnabled( function toggleMCPTool (line 142) | function toggleMCPTool( function isMCPToolDisabledInScope (line 187) | function isMCPToolDisabledInScope( FILE: source/utils/config/disabledSkills.ts constant CONFIG_FILE (line 9) | const CONFIG_FILE = 'disabled-skills.json'; function getConfigPath (line 11) | function getConfigPath(): string { function getDisabledSkills (line 18) | function getDisabledSkills(): string[] { function isSkillEnabled (line 34) | function isSkillEnabled(skillId: string): boolean { function toggleSkill (line 41) | function toggleSkill(skillId: string): boolean { FILE: source/utils/config/hooksConfig.ts type HookType (line 15) | type HookType = type HookActionType (line 28) | type HookActionType = 'command' | 'prompt'; type HookAction (line 33) | interface HookAction { type HookRule (line 44) | interface HookRule { type HookConfig (line 53) | interface HookConfig { type OnUserMessageContext (line 60) | interface OnUserMessageContext { type BeforeToolCallContext (line 66) | interface BeforeToolCallContext { type AfterToolCallContext (line 71) | interface AfterToolCallContext { type ToolConfirmationContext (line 78) | interface ToolConfirmationContext { type OnSubAgentCompleteContext (line 87) | interface OnSubAgentCompleteContext { type BeforeCompressContext (line 95) | interface BeforeCompressContext { type OnSessionStartContext (line 100) | interface OnSessionStartContext { type OnStopContext (line 105) | interface OnStopContext { type HookContextMap (line 109) | type HookContextMap = { type HookScope (line 123) | type HookScope = 'global' | 'project'; function getGlobalHooksDir (line 128) | function getGlobalHooksDir(): string { function getProjectHooksDir (line 135) | function getProjectHooksDir(): string { function getHooksDir (line 142) | function getHooksDir(scope: HookScope): string { function ensureHooksDirectory (line 149) | function ensureHooksDirectory(scope: HookScope): void { function getHookFilePath (line 159) | function getHookFilePath(hookType: HookType, scope: HookScope): string { function loadHookConfig (line 166) | function loadHookConfig( function saveHookConfig (line 201) | function saveHookConfig( function deleteHookConfig (line 224) | function deleteHookConfig(hookType: HookType, scope: HookScope): void { function listConfiguredHooks (line 234) | function listConfiguredHooks(scope: HookScope): HookType[] { function getAllHookTypes (line 251) | function getAllHookTypes(): HookType[] { function isActionTypeAllowed (line 267) | function isActionTypeAllowed( FILE: source/utils/config/languageConfig.ts type Language (line 5) | type Language = 'en' | 'zh' | 'zh-TW'; constant CONFIG_DIR (line 7) | const CONFIG_DIR = join(homedir(), '.snow'); constant LANGUAGE_CONFIG_FILE (line 8) | const LANGUAGE_CONFIG_FILE = join(CONFIG_DIR, 'language.json'); type LanguageConfig (line 10) | interface LanguageConfig { constant DEFAULT_CONFIG (line 14) | const DEFAULT_CONFIG: LanguageConfig = { function ensureConfigDirectory (line 18) | function ensureConfigDirectory(): void { function loadLanguageConfig (line 27) | function loadLanguageConfig(): LanguageConfig { function saveLanguageConfig (line 51) | function saveLanguageConfig(config: LanguageConfig): void { function getCurrentLanguage (line 65) | function getCurrentLanguage(): Language { function setCurrentLanguage (line 73) | function setCurrentLanguage(language: Language): void { FILE: source/utils/config/permissionsConfig.ts constant SNOW_DIR (line 4) | const SNOW_DIR = '.snow'; constant PERMISSIONS_FILE (line 5) | const PERMISSIONS_FILE = 'permissions.json'; type PermissionsConfig (line 7) | interface PermissionsConfig { constant DEFAULT_CONFIG (line 11) | const DEFAULT_CONFIG: PermissionsConfig = { function getSnowDirPath (line 18) | function getSnowDirPath(workingDirectory: string): string { function getPermissionsFilePath (line 25) | function getPermissionsFilePath(workingDirectory: string): string { function ensureConfigDirectory (line 32) | function ensureConfigDirectory(workingDirectory: string): void { function loadPermissionsConfig (line 42) | function loadPermissionsConfig( function savePermissionsConfig (line 69) | function savePermissionsConfig( function addToolToPermissions (line 88) | function addToolToPermissions( function addMultipleToolsToPermissions (line 102) | function addMultipleToolsToPermissions( function removeToolFromPermissions (line 124) | function removeToolFromPermissions( function clearAllPermissions (line 140) | function clearAllPermissions(workingDirectory: string): void { function getPermissionsConfigFilePath (line 147) | function getPermissionsConfigFilePath(workingDirectory: string): string { FILE: source/utils/config/projectSettings.ts type ProjectSettings (line 5) | interface ProjectSettings { constant PROJECT_SNOW_DIR (line 17) | const PROJECT_SNOW_DIR = path.join(process.cwd(), '.snow'); constant GLOBAL_SNOW_DIR (line 18) | const GLOBAL_SNOW_DIR = path.join(os.homedir(), '.snow'); constant PROJECT_SETTINGS_FILE (line 19) | const PROJECT_SETTINGS_FILE = path.join(PROJECT_SNOW_DIR, 'settings.json'); constant GLOBAL_SETTINGS_FILE (line 20) | const GLOBAL_SETTINGS_FILE = path.join(GLOBAL_SNOW_DIR, 'settings.json'); constant DEFAULT_SUB_AGENT_MAX_SPAWN_DEPTH (line 22) | const DEFAULT_SUB_AGENT_MAX_SPAWN_DEPTH = 1; function ensureSnowDir (line 24) | function ensureSnowDir(): void { function loadSettings (line 30) | function loadSettings(): ProjectSettings { function saveSettings (line 50) | function saveSettings(settings: ProjectSettings): void { function normalizeSubAgentMaxSpawnDepth (line 63) | function normalizeSubAgentMaxSpawnDepth(depth: unknown): number { function getToolSearchEnabled (line 72) | function getToolSearchEnabled(): boolean { function setToolSearchEnabled (line 77) | function setToolSearchEnabled(enabled: boolean): void { function getAutoFormatEnabled (line 83) | function getAutoFormatEnabled(): boolean { function setAutoFormatEnabled (line 88) | function setAutoFormatEnabled(enabled: boolean): void { function getSubAgentMaxSpawnDepth (line 94) | function getSubAgentMaxSpawnDepth(): number { function setSubAgentMaxSpawnDepth (line 99) | function setSubAgentMaxSpawnDepth(depth: number): number { function getFileListDisplayMode (line 107) | function getFileListDisplayMode(): 'list' | 'tree' { function setFileListDisplayMode (line 112) | function setFileListDisplayMode(mode: 'list' | 'tree'): void { function getYoloMode (line 118) | function getYoloMode(): boolean { function setYoloMode (line 123) | function setYoloMode(enabled: boolean): void { function getPlanMode (line 129) | function getPlanMode(): boolean { function setPlanMode (line 134) | function setPlanMode(enabled: boolean): void { function getVulnerabilityHuntingMode (line 140) | function getVulnerabilityHuntingMode(): boolean { function setVulnerabilityHuntingMode (line 145) | function setVulnerabilityHuntingMode(enabled: boolean): void { function getHybridCompressEnabled (line 151) | function getHybridCompressEnabled(): boolean { function setHybridCompressEnabled (line 156) | function setHybridCompressEnabled(enabled: boolean): void { function getTeamMode (line 162) | function getTeamMode(): boolean { function setTeamMode (line 167) | function setTeamMode(enabled: boolean): void { FILE: source/utils/config/proxyConfig.ts type SearchEngineId (line 13) | type SearchEngineId = string; type ProxyConfig (line 15) | interface ProxyConfig { constant DEFAULT_PROXY_CONFIG (line 27) | const DEFAULT_PROXY_CONFIG: ProxyConfig = { constant CONFIG_DIR (line 34) | const CONFIG_DIR = join(homedir(), '.snow'); constant PROXY_CONFIG_FILE (line 35) | const PROXY_CONFIG_FILE = join(CONFIG_DIR, 'proxy-config.json'); function ensureConfigDirectory (line 37) | function ensureConfigDirectory(): void { function loadProxyConfig (line 46) | function loadProxyConfig(): ProxyConfig { function saveProxyConfig (line 73) | function saveProxyConfig(config: ProxyConfig): void { function getProxyConfig (line 87) | function getProxyConfig(): ProxyConfig { function updateProxyConfig (line 94) | async function updateProxyConfig( FILE: source/utils/config/subAgentConfig.ts type SubAgent (line 6) | interface SubAgent { type SubAgentsConfig (line 21) | interface SubAgentsConfig { constant CONFIG_DIR (line 25) | const CONFIG_DIR = join(homedir(), '.snow'); constant SUB_AGENTS_CONFIG_FILE (line 26) | const SUB_AGENTS_CONFIG_FILE = join(CONFIG_DIR, 'sub-agents.json'); function getBuiltinAgents (line 32) | function getBuiltinAgents(): SubAgent[] { function ensureConfigDirectory (line 41) | function ensureConfigDirectory(): void { function generateId (line 47) | function generateId(): string { function getUserSubAgents (line 54) | function getUserSubAgents(): SubAgent[] { function getSubAgents (line 75) | function getSubAgents(): SubAgent[] { function getSubAgent (line 93) | function getSubAgent(id: string): SubAgent | null { function saveSubAgents (line 101) | function saveSubAgents(agents: SubAgent[]): void { function createSubAgent (line 117) | function createSubAgent( function updateSubAgent (line 154) | function updateSubAgent( function deleteSubAgent (line 263) | function deleteSubAgent(id: string): boolean { function validateSubAgent (line 278) | function validateSubAgent(data: { FILE: source/utils/config/themeConfig.ts constant CONFIG_DIR (line 6) | const CONFIG_DIR = join(homedir(), '.snow'); constant THEME_CONFIG_FILE (line 7) | const THEME_CONFIG_FILE = join(CONFIG_DIR, 'theme.json'); type ThemeConfig (line 9) | interface ThemeConfig { constant DEFAULT_CONFIG (line 15) | const DEFAULT_CONFIG: ThemeConfig = { function ensureConfigDirectory (line 21) | function ensureConfigDirectory(): void { function loadThemeConfig (line 30) | function loadThemeConfig(): ThemeConfig { function saveThemeConfig (line 54) | function saveThemeConfig(config: ThemeConfig): void { function getCurrentTheme (line 68) | function getCurrentTheme(): ThemeType { function setCurrentTheme (line 76) | function setCurrentTheme(theme: ThemeType): void { function getCustomColors (line 84) | function getCustomColors(): ThemeColors | undefined { function saveCustomColors (line 92) | function saveCustomColors(colors: ThemeColors): void { function getSimpleMode (line 100) | function getSimpleMode(): boolean { function setSimpleMode (line 108) | function setSimpleMode(simpleMode: boolean): void { function getDiffOpacity (line 116) | function getDiffOpacity(): number { function setDiffOpacity (line 124) | function setDiffOpacity(diffOpacity: number): void { FILE: source/utils/config/toolDisplayConfig.ts constant TWO_STEP_TOOLS (line 10) | const TWO_STEP_TOOLS = new Set([ constant TWO_STEP_DISPLAY_TOOL_NAMES (line 37) | const TWO_STEP_DISPLAY_TOOL_NAMES: readonly string[] = function isToolNeedTwoStepDisplay (line 45) | function isToolNeedTwoStepDisplay(toolName: string): boolean { function isToolOnlyShowCompleted (line 64) | function isToolOnlyShowCompleted(toolName: string): boolean { function extractFilesystemEditDiffDataForPersistence (line 72) | function extractFilesystemEditDiffDataForPersistence( FILE: source/utils/config/workingDirConfig.ts constant SNOW_DIR (line 6) | const SNOW_DIR = '.snow'; constant WORKING_DIR_FILE (line 7) | const WORKING_DIR_FILE = 'working-dirs.json'; type SSHConfig (line 9) | interface SSHConfig { type WorkingDirectory (line 22) | interface WorkingDirectory { type WorkingDirConfig (line 33) | interface WorkingDirConfig { function getSnowDirPath (line 40) | function getSnowDirPath(): string { function getConfigFilePath (line 47) | function getConfigFilePath(): string { function ensureSnowDir (line 54) | async function ensureSnowDir(): Promise { function loadWorkingDirConfig (line 67) | async function loadWorkingDirConfig(): Promise { function saveWorkingDirConfig (line 95) | async function saveWorkingDirConfig( function addWorkingDirectory (line 112) | async function addWorkingDirectory(dirPath: string): Promise { function removeWorkingDirectories (line 146) | async function removeWorkingDirectories(paths: string[]): Promise { function getWorkingDirectories (line 160) | async function getWorkingDirectories(): Promise { function addSSHWorkingDirectory (line 168) | async function addSSHWorkingDirectory( FILE: source/utils/connection/ConnectionManager.ts class ConnectionManager (line 27) | class ConnectionManager { method constructor (line 42) | constructor() { method setStreamingState (line 52) | setStreamingState(state: 'idle' | 'streaming' | 'stopping'): void { method onStatusChange (line 57) | onStatusChange(callback: StatusChangeCallback): () => void { method onMessage (line 62) | onMessage(type: string, callback: MessageCallback): () => void { method login (line 67) | async login( method connect (line 103) | async connect(): Promise<{success: boolean; message: string}> { method setupSignalRHandlers (line 213) | private setupSignalRHandlers(): void { method registerInstance (line 457) | private async registerInstance(): Promise { method startHeartbeat (line 481) | private startHeartbeat(): void { method stopHeartbeat (line 500) | private stopHeartbeat(): void { method setupMessageListener (line 508) | private async setupMessageListener(): Promise { method cleanupMessageListener (line 518) | private cleanupMessageListener(): void { method pushContextInfo (line 526) | private async pushContextInfo(): Promise { method disconnect (line 540) | async disconnect(): Promise<{success: boolean; message: string}> { method saveConnectionConfig (line 571) | async saveConnectionConfig(config: ConnectionConfig): Promise { method loadConnectionConfig (line 576) | loadConnectionConfig(): ConnectionConfig | null { method hasSavedConnection (line 581) | hasSavedConnection(): boolean { method clearSavedConnection (line 586) | clearSavedConnection(): void { method getState (line 591) | getState(): ConnectionState { method getInFlightState (line 595) | getInFlightState(): InFlightState { method isConnected (line 600) | isConnected(): boolean { method sendMessage (line 605) | async sendMessage(method: string, ...args: unknown[]): Promise { method notifyToolConfirmationNeeded (line 614) | async notifyToolConfirmationNeeded( method notifyUserInteractionNeeded (line 629) | async notifyUserInteractionNeeded( method notifyRollbackConfirmationNeeded (line 644) | async notifyRollbackConfirmationNeeded(payload: { method sendToolConfirmationResult (line 653) | async sendToolConfirmationResult( method sendUserQuestionResult (line 666) | async sendUserQuestionResult( method notifyMessageProcessingCompleted (line 681) | async notifyMessageProcessingCompleted(): Promise { method notifyCompactStarted (line 686) | async notifyCompactStarted(): Promise { method notifyCompactCompleted (line 698) | async notifyCompactCompleted(result: { FILE: source/utils/connection/configStore.ts class ConfigStore (line 5) | class ConfigStore { method constructor (line 9) | constructor() { method ensureSnowDir (line 15) | private ensureSnowDir(): void { method save (line 22) | async save(config: ConnectionConfig): Promise { method load (line 33) | load(): ConnectionConfig | null { method hasSavedConfig (line 47) | hasSavedConfig(): boolean { method clear (line 56) | clear(): void { FILE: source/utils/connection/contextManager.ts function updateGlobalTokenUsage (line 10) | function updateGlobalTokenUsage(usage: TokenUsageInfo | null): void { function getGlobalTokenUsage (line 17) | function getGlobalTokenUsage(): TokenUsageInfo | null { class ContextManager (line 21) | class ContextManager { method constructor (line 33) | constructor(stateManager: StateManager) { method truncateText (line 38) | private truncateText(text: string, maxLength: number): string { method shouldTruncateTool (line 48) | private shouldTruncateTool( method getContextInfo (line 59) | async getContextInfo(): Promise { method setupMessageListener (line 168) | setupMessageListener( FILE: source/utils/connection/instanceLock.ts class InstanceLockManager (line 4) | class InstanceLockManager { method constructor (line 7) | constructor() { method ensureLocksDir (line 12) | ensureLocksDir(): void { method getLockPath (line 19) | private getLockPath(instanceId: string): string { method isLocked (line 24) | isLocked(instanceId: string): boolean { method lock (line 55) | lock(instanceId: string): boolean { method unlock (line 78) | unlock(instanceId: string): void { FILE: source/utils/connection/interactionManager.ts class InteractionManager (line 4) | class InteractionManager { method constructor (line 8) | constructor(stateManager: StateManager) { method setConnection (line 13) | setConnection(connection: signalR.HubConnection | null): void { method isConnected (line 18) | private isConnected(): boolean { method notifyToolConfirmationNeeded (line 23) | async notifyToolConfirmationNeeded( method notifyUserInteractionNeeded (line 53) | async notifyUserInteractionNeeded( method notifyRollbackConfirmationNeeded (line 84) | async notifyRollbackConfirmationNeeded(payload: { method sendToolConfirmationResult (line 110) | async sendToolConfirmationResult( method sendUserQuestionResult (line 134) | async sendUserQuestionResult( method notifyMessageProcessingCompleted (line 160) | async notifyMessageProcessingCompleted(): Promise { FILE: source/utils/connection/projectData.ts type SessionListItem (line 4) | interface SessionListItem { type SessionListResult (line 11) | interface SessionListResult { class ProjectDataManager (line 17) | class ProjectDataManager { method getFileList (line 19) | async getFileList(): Promise { method getSessionList (line 70) | async getSessionList( FILE: source/utils/connection/stateManager.ts class StateManager (line 11) | class StateManager { method onStatusChange (line 26) | onStatusChange(callback: StatusChangeCallback): () => void { method onMessage (line 39) | onMessage(type: string, callback: MessageCallback): () => void { method updateState (line 56) | updateState(newState: Partial): void { method notifyMessage (line 62) | notifyMessage(type: string, message: unknown): void { method getState (line 70) | getState(): ConnectionState { method isConnected (line 75) | isConnected(): boolean { method setStreamingState (line 80) | setStreamingState(state: 'idle' | 'streaming' | 'stopping'): void { method getStreamingState (line 85) | getStreamingState(): 'idle' | 'streaming' | 'stopping' { method hasPendingInteractions (line 90) | hasPendingInteractions(): boolean { method clearInFlightInteractions (line 99) | clearInFlightInteractions(): void { method addPendingToolConfirmation (line 106) | addPendingToolConfirmation(confirmation: PendingToolConfirmation): void { method removePendingToolConfirmation (line 111) | removePendingToolConfirmation(toolCallId: string): boolean { method addPendingQuestion (line 116) | addPendingQuestion(question: PendingQuestion): void { method removePendingQuestion (line 121) | removePendingQuestion(toolCallId: string): boolean { method setPendingRollbackConfirmation (line 126) | setPendingRollbackConfirmation( method getInFlightState (line 133) | getInFlightState(): InFlightState { method getPendingToolConfirmation (line 153) | getPendingToolConfirmation( method getPendingQuestion (line 159) | getPendingQuestion(toolCallId: string): PendingQuestion | undefined { method getPendingRollbackConfirmation (line 163) | getPendingRollbackConfirmation(): PendingRollbackConfirmation | null { FILE: source/utils/connection/types.ts type ConnectionStatus (line 3) | type ConnectionStatus = type ConnectionConfig (line 9) | interface ConnectionConfig { type ConnectionState (line 17) | interface ConnectionState { type StatusChangeCallback (line 25) | type StatusChangeCallback = (state: ConnectionState) => void; type MessageCallback (line 26) | type MessageCallback = (message: unknown) => void; type PendingToolConfirmation (line 29) | interface PendingToolConfirmation { type PendingQuestion (line 35) | interface PendingQuestion { type PendingRollbackConfirmation (line 42) | interface PendingRollbackConfirmation { type InFlightState (line 47) | interface InFlightState { type SignalRMessageHandlers (line 55) | interface SignalRMessageHandlers { type ContextInfoMessage (line 93) | interface ContextInfoMessage { type TokenUsageInfo (line 108) | interface TokenUsageInfo { type ContextInfo (line 119) | interface ContextInfo { FILE: source/utils/core/autoCompress.ts constant COMPRESSION_MAX_RETRIES (line 4) | const COMPRESSION_MAX_RETRIES = 3; constant COMPRESSION_RETRY_BASE_DELAY (line 5) | const COMPRESSION_RETRY_BASE_DELAY = 1000; constant COMPRESSION_ERROR_DISMISS_MS (line 6) | const COMPRESSION_ERROR_DISMISS_MS = 5000; function shouldAutoCompress (line 14) | function shouldAutoCompress( function performAutoCompression (line 27) | async function performAutoCompression( FILE: source/utils/core/clipboard.ts function runClipboardCommand (line 3) | function runClipboardCommand( function sleep (line 20) | function sleep(milliseconds: number): void { function getClipboardErrorMessage (line 27) | function getClipboardErrorMessage(error: Error): string { function isClipboardToolMissing (line 44) | function isClipboardToolMissing(errorMsg: string): boolean { function isClipboardPermissionError (line 53) | function isClipboardPermissionError(errorMsg: string): boolean { function shouldRetryWindowsClipboard (line 63) | function shouldRetryWindowsClipboard(errorMsg: string): boolean { function copyToWindowsClipboard (line 75) | function copyToWindowsClipboard(content: string): void { function copyToClipboard (line 168) | async function copyToClipboard(content: string): Promise { FILE: source/utils/core/compressionCoordinator.ts type Waiter (line 14) | type Waiter = { class CompressionCoordinator (line 19) | class CompressionCoordinator { method acquireLock (line 27) | async acquireLock(id: string): Promise { method releaseLock (line 36) | releaseLock(id: string): void { method isCompressing (line 44) | isCompressing(excludeId?: string): boolean { method waitUntilFree (line 56) | waitUntilFree(excludeId?: string): Promise { method withLock (line 66) | async withLock(id: string, fn: () => Promise): Promise { method _drainWaiters (line 75) | private _drainWaiters(): void { FILE: source/utils/core/contextCompressor.ts function cleanThinkingContent (line 13) | function cleanThinkingContent(content: string): string { type CompressionResult (line 17) | interface CompressionResult { constant COMPRESSION_PROMPT (line 40) | const COMPRESSION_PROMPT = `**TASK: Create a comprehensive handover docu... function findPreserveStartIndex (line 107) | function findPreserveStartIndex(messages: ChatMessage[]): number { function cleanOrphanedToolCalls (line 164) | function cleanOrphanedToolCalls(messages: ChatMessage[]): void { function formatMessageForTranscript (line 315) | function formatMessageForTranscript(msg: ChatMessage): string | null { function prepareMessagesForCompression (line 375) | function prepareMessagesForCompression( function compressWithChatCompletions (line 426) | async function compressWithChatCompletions( function compressWithResponses (line 473) | async function compressWithResponses( function compressWithGemini (line 521) | async function compressWithGemini( function compressWithAnthropic (line 568) | async function compressWithAnthropic( function compressContext (line 619) | async function compressContext( FILE: source/utils/core/devMode.ts constant SNOW_DIR (line 6) | const SNOW_DIR = join(homedir(), '.snow'); constant DEV_USER_ID_FILE (line 7) | const DEV_USER_ID_FILE = join(SNOW_DIR, 'dev-user-id'); function ensureSnowDir (line 12) | function ensureSnowDir(): void { function generateDevUserId (line 22) | function generateDevUserId(): string { function getDevUserId (line 34) | function getDevUserId(): string { function isDevMode (line 53) | function isDevMode(): boolean { function enableDevMode (line 60) | function enableDevMode(): void { FILE: source/utils/core/fileUtils.ts type SelectedFile (line 4) | interface SelectedFile { function getFileLineCount (line 16) | function getFileLineCount(filePath: string): Promise { function isImageFile (line 36) | function isImageFile(filePath: string): boolean { function getMimeType (line 53) | function getMimeType(filePath: string): string { function getFileInfo (line 70) | async function getFileInfo(filePath: string): Promise { function formatFileTree (line 132) | function formatFileTree(files: SelectedFile[]): string { function parseAndValidateFileReferences (line 149) | async function parseAndValidateFileReferences(content: string): Promise<{ function createMessageWithFileInstructions (line 207) | function createMessageWithFileInstructions( function cleanIDEContext (line 240) | function cleanIDEContext(content: string): string { FILE: source/utils/core/globalCleanup.ts function cleanupGlobalResources (line 8) | async function cleanupGlobalResources(): Promise { FILE: source/utils/core/logger.ts type LogLevel (line 5) | enum LogLevel { type LoggerConfig (line 12) | interface LoggerConfig { class Logger (line 18) | class Logger { method constructor (line 22) | constructor(config: LoggerConfig = {}) { method ensureLogDirectory (line 29) | private ensureLogDirectory(): void { method formatDate (line 35) | private formatDate(date: Date): string { method formatTimestamp (line 42) | private formatTimestamp(date: Date): string { method getLogFilePath (line 46) | private getLogFilePath(level: LogLevel): string { method shouldRotateLog (line 52) | private shouldRotateLog(filePath: string): boolean { method rotateLog (line 61) | private rotateLog(filePath: string): void { method writeLog (line 71) | private writeLog(level: LogLevel, message: string, meta?: any): void { method error (line 91) | error(message: string, meta?: any): void { method warn (line 95) | warn(message: string, meta?: any): void { method info (line 99) | info(message: string, meta?: any): void { method debug (line 103) | debug(message: string, meta?: any): void { method log (line 107) | log(level: LogLevel, message: string, meta?: any): void { function getDefaultLogger (line 115) | function getDefaultLogger(): Logger { method error (line 124) | error(message: string, meta?: any): void { method warn (line 127) | warn(message: string, meta?: any): void { method info (line 130) | info(message: string, meta?: any): void { method debug (line 133) | debug(message: string, meta?: any): void { method log (line 136) | log(level: LogLevel, message: string, meta?: any): void { FILE: source/utils/core/notebookManager.ts type NotebookEntry (line 7) | interface NotebookEntry { type NotebookData (line 18) | interface NotebookData { constant MAX_ENTRIES_PER_FILE (line 22) | const MAX_ENTRIES_PER_FILE = 50; function getNotebookDir (line 27) | function getNotebookDir(): string { function getNotebookFilePath (line 39) | function getNotebookFilePath(): string { function readNotebookData (line 49) | function readNotebookData(): NotebookData { function saveNotebookData (line 68) | function saveNotebookData(data: NotebookData): void { function normalizePath (line 82) | function normalizePath(filePath: string): string { function addNotebook (line 105) | function addNotebook(filePath: string, note: string): NotebookEntry { function queryNotebook (line 150) | function queryNotebook( function getNotebooksByFile (line 187) | function getNotebooksByFile(filePath: string): NotebookEntry[] { function findNotebookById (line 198) | function findNotebookById(notebookId: string): NotebookEntry | null { function updateNotebook (line 216) | function updateNotebook( function deleteNotebook (line 254) | function deleteNotebook(notebookId: string): boolean { function addNotebooks (line 280) | function addNotebooks( function deleteNotebooks (line 329) | function deleteNotebooks( function clearNotebooksByFile (line 361) | function clearNotebooksByFile(filePath: string): void { function getNotebookStats (line 374) | function getNotebookStats(): { type NotebookOperation (line 405) | type NotebookOperation = type NotebookSnapshotData (line 414) | interface NotebookSnapshotData { function getNotebookSnapshotFilePath (line 421) | function getNotebookSnapshotFilePath(): string { function readNotebookSnapshotData (line 431) | function readNotebookSnapshotData(): NotebookSnapshotData { function saveNotebookSnapshotData (line 447) | function saveNotebookSnapshotData(data: NotebookSnapshotData): void { function appendNotebookOperation (line 459) | function appendNotebookOperation( function recordNotebookAddition (line 476) | function recordNotebookAddition( function recordNotebookUpdate (line 490) | function recordNotebookUpdate( function recordNotebookDeletion (line 506) | function recordNotebookDeletion( function getNotebookOpsToRollback (line 523) | function getNotebookOpsToRollback( function getNotebookRollbackCount (line 544) | function getNotebookRollbackCount( function rollbackNotebooks (line 558) | function rollbackNotebooks( function deleteNotebookSnapshotsFromIndex (line 609) | function deleteNotebookSnapshotsFromIndex( function clearAllNotebookSnapshots (line 633) | function clearAllNotebookSnapshots(sessionId: string): void { FILE: source/utils/core/processManager.ts class ProcessManager (line 8) | class ProcessManager { method register (line 16) | register(process: ChildProcess): void { method killProcess (line 38) | private killProcess(process: ChildProcess): void { method killAll (line 76) | killAll(): void { method getActiveCount (line 89) | getActiveCount(): number { function gracefulExit (line 101) | function gracefulExit(): void { FILE: source/utils/core/proxyUtils.ts function initGlobalProxy (line 10) | function initGlobalProxy(): void { function createProxyAgent (line 43) | function createProxyAgent(_targetUrl: string): ProxyAgent | undefined { function addProxyToFetchOptions (line 70) | function addProxyToFetchOptions( FILE: source/utils/core/resourceMonitor.ts type ResourceStats (line 7) | interface ResourceStats { class ResourceMonitor (line 14) | class ResourceMonitor { method startMonitoring (line 24) | startMonitoring(intervalMs: number = 30000) { method stopMonitoring (line 39) | stopMonitoring() { method collectStats (line 50) | private collectStats() { method trackEncoderCreated (line 84) | trackEncoderCreated() { method trackEncoderFreed (line 92) | trackEncoderFreed() { method trackMCPConnectionOpened (line 104) | trackMCPConnectionOpened(serviceName: string) { method trackMCPConnectionClosed (line 114) | trackMCPConnectionClosed(serviceName: string) { method getCurrentStats (line 128) | getCurrentStats(): ResourceStats | null { method getStatsHistory (line 135) | getStatsHistory(): ResourceStats[] { method checkForLeaks (line 142) | checkForLeaks(): {hasLeak: boolean; reasons: string[]} { method forceGC (line 183) | forceGC() { FILE: source/utils/core/retryUtils.ts type RetryOptions (line 11) | interface RetryOptions { function delay (line 21) | async function delay(ms: number, abortSignal?: AbortSignal): Promise( type JsonParseResult (line 351) | interface JsonParseResult { function parseJsonWithFix (line 366) | function parseJsonWithFix( FILE: source/utils/core/runUpdate.ts function runUpdateAndExit (line 16) | function runUpdateAndExit(): never { FILE: source/utils/core/streamGuards.ts constant STREAM_IDLE_TIMEOUT_MS (line 13) | const STREAM_IDLE_TIMEOUT_MS = 180000; class StreamIdleTimeoutError (line 20) | class StreamIdleTimeoutError extends Error { method constructor (line 23) | constructor( type StreamGuard (line 35) | interface StreamGuard { function createIdleTimeoutGuard (line 101) | function createIdleTimeoutGuard({ FILE: source/utils/core/subAgentContextCompressor.ts constant COMPRESS_THRESHOLD (line 23) | const COMPRESS_THRESHOLD = 80; constant DEFAULT_KEEP_RECENT_ROUNDS (line 26) | const DEFAULT_KEEP_RECENT_ROUNDS = 3; constant SUB_AGENT_COMPRESSION_PROMPT (line 32) | const SUB_AGENT_COMPRESSION_PROMPT = `**TASK: Create a concise handover ... function getEncoder (line 73) | function getEncoder() { function freeSubAgentEncoder (line 88) | function freeSubAgentEncoder(): void { type SubAgentCompressionResult (line 99) | interface SubAgentCompressionResult { function countMessagesTokens (line 115) | function countMessagesTokens(messages: ChatMessage[]): number { function getContextPercentage (line 154) | function getContextPercentage( function shouldCompressSubAgentContext (line 165) | function shouldCompressSubAgentContext( function getAdaptiveKeepRounds (line 178) | function getAdaptiveKeepRounds(percentage: number): number { function findRecentRoundsStartIndex (line 189) | function findRecentRoundsStartIndex( function hasPrecedingAssistantWithToolCall (line 268) | function hasPrecedingAssistantWithToolCall( function formatMessageForTranscript (line 295) | function formatMessageForTranscript(msg: ChatMessage): string | null { function prepareMessagesForAICompression (line 342) | function prepareMessagesForAICompression( type AISummaryResult (line 377) | interface AISummaryResult { function aiSummaryCompress (line 395) | async function aiSummaryCompress( function findToolName (line 537) | function findToolName( constant MAX_PRESERVED_TOOL_RESULT_CHARS (line 554) | const MAX_PRESERVED_TOOL_RESULT_CHARS = 2000; function truncateOversizedToolResults (line 564) | function truncateOversizedToolResults( function truncateToolResults (line 596) | function truncateToolResults( function compressSubAgentContext (line 648) | async function compressSubAgentContext( function performHybridCompression (line 734) | async function performHybridCompression( FILE: source/utils/core/textUtils.ts function toCodePoints (line 7) | function toCodePoints(str: string): string[] { function cpLen (line 14) | function cpLen(str: string): number { function cpSlice (line 21) | function cpSlice(str: string, start: number, end?: number): string { function visualWidth (line 30) | function visualWidth(str: string): number { function getCharAtVisualPos (line 37) | function getCharAtVisualPos(str: string, visualPos: number): { char: str... function codePointToVisualPos (line 68) | function codePointToVisualPos(str: string, codePointIndex: number): numb... function visualPosToCodePoint (line 83) | function visualPosToCodePoint(str: string, visualPos: number): number { function formatElapsedTime (line 108) | function formatElapsedTime(seconds: number): string { FILE: source/utils/core/todoPreprocessor.ts function formatTodoContext (line 1) | function formatTodoContext( FILE: source/utils/core/todoScanner.ts type TodoItem (line 4) | interface TodoItem { constant IGNORE_PATTERNS (line 12) | const IGNORE_PATTERNS = [ constant TODO_PATTERNS (line 32) | const TODO_PATTERNS = [ function shouldIgnore (line 56) | function shouldIgnore(filePath: string): boolean { function scanFileForTodos (line 67) | function scanFileForTodos(filePath: string, rootDir: string): TodoItem[] { function scanDirectory (line 98) | function scanDirectory(dir: string, rootDir: string): TodoItem[] { function scanProjectTodos (line 171) | function scanProjectTodos(projectRoot: string): TodoItem[] { FILE: source/utils/core/usageLogger.ts type UsageLogEntry (line 5) | interface UsageLogEntry { constant MAX_FILE_SIZE (line 15) | const MAX_FILE_SIZE = 5 * 1024 * 1024; function getActiveProfile (line 20) | async function getActiveProfile(): Promise { function getUsageDir (line 45) | async function getUsageDir(): Promise { function getCurrentLogFile (line 61) | async function getCurrentLogFile(dateDir: string): Promise { function saveUsageToFile (line 103) | function saveUsageToFile( FILE: source/utils/core/version.ts function getPackageVersion (line 12) | function getPackageVersion(): string { function getVersionHeader (line 37) | function getVersionHeader(): string { FILE: source/utils/events/todoEvents.ts class TodoEventEmitter (line 7) | class TodoEventEmitter extends EventEmitter { method emitTodoUpdate (line 11) | emitTodoUpdate(sessionId: string, todos: TodoItem[]) { method onTodoUpdate (line 18) | onTodoUpdate( method offTodoUpdate (line 27) | offTodoUpdate( FILE: source/utils/execution/commandExecutor.ts type CommandResult (line 1) | interface CommandResult { type CommandHandler (line 73) | interface CommandHandler { function registerCommand (line 79) | function registerCommand(name: string, handler: CommandHandler): void { function executeCommand (line 83) | async function executeCommand( function unregisterCommand (line 108) | function unregisterCommand(name: string): void { function getAvailableCommands (line 112) | function getAvailableCommands(): string[] { FILE: source/utils/execution/hookResultInterpreter.ts type HookErrorDetails (line 12) | interface HookErrorDetails { type InterpretedHookResult (line 29) | interface InterpretedHookResult { function findFirstFailedCommand (line 42) | function findFirstFailedCommand( function buildErrorDetails (line 57) | function buildErrorDetails( function interpretHookResult (line 73) | function interpretHookResult( FILE: source/utils/execution/hookStrategies.ts type HookStrategy (line 9) | interface HookStrategy { method interpret (line 21) | interpret(hookResult, _originalContent) { method interpret (line 49) | interpret(hookResult) { method interpret (line 78) | interpret(hookResult) { method interpret (line 107) | interpret(hookResult) { method interpret (line 135) | interpret(hookResult) { method interpret (line 166) | interpret(hookResult) { method interpret (line 196) | interpret(hookResult) { method interpret (line 246) | interpret(hookResult) { FILE: source/utils/execution/mcpToolsManager.ts type HookError (line 54) | interface HookError extends Error { type MCPTool (line 58) | interface MCPTool { type InternalMCPTool (line 67) | interface InternalMCPTool { type MCPServiceTools (line 73) | interface MCPServiceTools { type MCPToolsCache (line 88) | interface MCPToolsCache { constant CACHE_DURATION (line 96) | const CACHE_DURATION = 5 * 60 * 1000; type PersistentMCPClient (line 103) | interface PersistentMCPClient { constant CLIENT_IDLE_TIMEOUT (line 110) | const CLIENT_IDLE_TIMEOUT = 10 * 60 * 1000; function getTodoService (line 116) | function getTodoService(): TodoService { function getRegisteredServicePrefixes (line 135) | function getRegisteredServicePrefixes(): string[] { function generateConfigHash (line 175) | async function generateConfigHash(): Promise { function isCacheValid (line 208) | async function isCacheValid(): Promise { function getCachedTools (line 222) | async function getCachedTools(): Promise { function refreshToolsCache (line 233) | async function refreshToolsCache(): Promise { function refreshMCPToolsCache (line 542) | async function refreshMCPToolsCache(): Promise { function reconnectMCPService (line 551) | async function reconnectMCPService(serviceName: string): Promise { function clearMCPToolsCache (line 645) | function clearMCPToolsCache(): void { function collectAllMCPTools (line 653) | async function collectAllMCPTools(): Promise { function getMCPServicesInfo (line 661) | async function getMCPServicesInfo(): Promise { function probeServiceTools (line 673) | async function probeServiceTools( constant MCP_ENV_VAR_PATTERN (line 682) | const MCP_ENV_VAR_PATTERN = /\$\{([^}]+)\}|\$([A-Za-z_][A-Za-z0-9_]*)/g; function getMCPServerTransportType (line 684) | function getMCPServerTransportType(server: MCPServer): 'http' | 'stdio' ... function getServerProcessEnv (line 704) | function getServerProcessEnv(server: MCPServer): Record { function interpolateMCPConfigValue (line 725) | function interpolateMCPConfigValue( function getHttpTransportConfig (line 735) | function getHttpTransportConfig(server: MCPServer): { function createMCPClient (line 770) | function createMCPClient(serviceName: string): Client { function getMCPErrorMessage (line 782) | function getMCPErrorMessage(error: unknown): string { function shouldFallbackToSSE (line 790) | function shouldFallbackToSSE(error: unknown): boolean { function connectAndGetTools (line 814) | async function connectAndGetTools( function getPersistentClient (line 966) | async function getPersistentClient( function cleanupIdleMCPConnections (line 1059) | async function cleanupIdleMCPConnections(): Promise { function closeAllMCPConnections (line 1087) | async function closeAllMCPConnections(): Promise { function executeMCPTool (line 1104) | async function executeMCPTool( function isConnectionError (line 1816) | function isConnectionError(error: unknown): boolean { function executeOnExternalMCPService (line 1840) | async function executeOnExternalMCPService( FILE: source/utils/execution/runningSubAgentTracker.ts type InterAgentMessage (line 8) | interface InterAgentMessage { type RunningSubAgent (line 21) | interface RunningSubAgent { type SpawnedAgentResult (line 38) | interface SpawnedAgentResult { type Listener (line 55) | type Listener = () => void; type InterAgentMessageEvent (line 57) | interface InterAgentMessageEvent { type InterAgentMessageListener (line 63) | type InterAgentMessageListener = (event: InterAgentMessageEvent) => void; class RunningSubAgentTracker (line 65) | class RunningSubAgentTracker { method register (line 98) | register(agent: RunningSubAgent): void { method unregister (line 109) | unregister(instanceId: string): void { method getRunningAgents (line 123) | getRunningAgents(): RunningSubAgent[] { method getCount (line 130) | getCount(): number { method isRunning (line 137) | isRunning(instanceId: string): boolean { method hasRunningSpawnedAgents (line 145) | hasRunningSpawnedAgents(): boolean { method waitForSpawnedAgents (line 161) | waitForSpawnedAgents( method enqueueMessage (line 225) | enqueueMessage(instanceId: string, message: string): boolean { method dequeueMessages (line 240) | dequeueMessages(instanceId: string): string[] { method sendInterAgentMessage (line 260) | sendInterAgentMessage( method dequeueInterAgentMessages (line 292) | dequeueInterAgentMessages(instanceId: string): InterAgentMessage[] { method findInstanceByAgentId (line 307) | findInstanceByAgentId(agentId: string): RunningSubAgent | undefined { method findAllInstancesByAgentId (line 319) | findAllInstancesByAgentId(agentId: string): RunningSubAgent[] { method onInterAgentMessage (line 333) | onInterAgentMessage(listener: InterAgentMessageListener): () => void { method notifyInterAgentListeners (line 340) | private notifyInterAgentListeners( method storeSpawnedResult (line 367) | storeSpawnedResult(result: SpawnedAgentResult): void { method drainSpawnedResults (line 378) | drainSpawnedResults(): SpawnedAgentResult[] { method hasSpawnedResults (line 390) | hasSpawnedResults(): boolean { method subscribe (line 398) | subscribe(listener: Listener): () => void { method clear (line 408) | clear(): void { method rebuildSnapshot (line 419) | private rebuildSnapshot(): void { method notifyListeners (line 423) | private notifyListeners(): void { FILE: source/utils/execution/sensitiveCommandManager.ts constant GLOBAL_CONFIG_DIR (line 5) | const GLOBAL_CONFIG_DIR = join(homedir(), '.snow'); constant GLOBAL_SENSITIVE_FILE (line 6) | const GLOBAL_SENSITIVE_FILE = join( type SensitiveCommandScope (line 11) | type SensitiveCommandScope = 'global' | 'project'; type SensitiveCommand (line 13) | interface SensitiveCommand { type StoredSensitiveCommand (line 22) | interface StoredSensitiveCommand { type SensitiveCommandsConfig (line 30) | interface SensitiveCommandsConfig { constant PRESET_SENSITIVE_COMMANDS (line 37) | const PRESET_SENSITIVE_COMMANDS: StoredSensitiveCommand[] = [ function getProjectConfigDir (line 321) | function getProjectConfigDir(): string { function getProjectConfigPath (line 325) | function getProjectConfigPath(): string { function ensureDirectory (line 329) | function ensureDirectory(dir: string): void { function loadScopedConfig (line 335) | function loadScopedConfig( function saveScopedConfig (line 380) | function saveScopedConfig( function loadSensitiveCommands (line 401) | function loadSensitiveCommands(): SensitiveCommandsConfig { function saveSensitiveCommands (line 408) | function saveSensitiveCommands(config: SensitiveCommandsConfig): void { function isDuplicatePattern (line 415) | function isDuplicatePattern(pattern: string): { function addSensitiveCommand (line 432) | function addSensitiveCommand( function removeSensitiveCommand (line 462) | function removeSensitiveCommand( function updateSensitiveCommand (line 486) | function updateSensitiveCommand( function toggleSensitiveCommand (line 518) | function toggleSensitiveCommand( function patternToRegex (line 544) | function patternToRegex(pattern: string): RegExp { function splitCommand (line 556) | function splitCommand(command: string): string[] { function isSensitiveCommand (line 565) | function isSensitiveCommand(command: string): { function getAllSensitiveCommands (line 591) | function getAllSensitiveCommands(): SensitiveCommand[] { function resetToDefaults (line 614) | function resetToDefaults(scope?: SensitiveCommandScope): void { FILE: source/utils/execution/subAgentBuiltinTools.ts function createSendMessageTool (line 6) | function createSendMessageTool(): MCPTool { function createQueryAgentsStatusTool (line 38) | function createQueryAgentsStatusTool(): MCPTool { function createSpawnSubAgentTool (line 54) | function createSpawnSubAgentTool(): MCPTool { function injectBuiltinTools (line 94) | function injectBuiltinTools( function buildPeerAgentsContext (line 105) | function buildPeerAgentsContext( function buildInitialMessages (line 148) | async function buildInitialMessages( FILE: source/utils/execution/subAgentExecutor.ts function executeSubAgent (line 50) | async function executeSubAgent( function injectPendingMessages (line 242) | function injectPendingMessages(ctx: SubAgentExecutionContext): void { function resolveConfig (line 279) | async function resolveConfig( function handleSpawnedChildren (line 304) | async function handleSpawnedChildren( function handleCompletionHooks (line 352) | async function handleCompletionHooks( FILE: source/utils/execution/subAgentResolver.ts type ResolveAgentResult (line 8) | interface ResolveAgentResult { function resolveAgent (line 13) | async function resolveAgent(agentId: string): Promise { constant BUILTIN_PREFIXES (line 34) | const BUILTIN_PREFIXES = new Set([ function filterAllowedTools (line 48) | function filterAllowedTools(agent: any, allTools: MCPTool[]): MCPTool[] { FILE: source/utils/execution/subAgentStreamProcessor.ts type StreamProcessResult (line 17) | interface StreamProcessResult { function createApiStream (line 24) | function createApiStream( function processStreamEvents (line 84) | async function processStreamEvents( function handleUsageEvent (line 180) | function handleUsageEvent( function handleContextCompression (line 233) | async function handleContextCompression( FILE: source/utils/execution/subAgentToolApproval.ts type ApprovalResult (line 8) | interface ApprovalResult { function checkAndApproveTools (line 17) | async function checkAndApproveTools( function executeMcpTools (line 171) | async function executeMcpTools( FILE: source/utils/execution/subAgentToolInterceptor.ts type InterceptResult (line 9) | interface InterceptResult { function interceptSendMessage (line 15) | function interceptSendMessage( function interceptQueryStatus (line 122) | function interceptQueryStatus( function interceptSpawnSubAgent (line 165) | function interceptSpawnSubAgent( function interceptAskUser (line 339) | async function interceptAskUser( FILE: source/utils/execution/subAgentTypes.ts type SubAgentMessage (line 6) | interface SubAgentMessage { type TokenUsage (line 13) | interface TokenUsage { type SubAgentResult (line 20) | interface SubAgentResult { type ToolConfirmationCallback (line 31) | interface ToolConfirmationCallback { type ToolApprovalChecker (line 35) | interface ToolApprovalChecker { type AddToAlwaysApprovedCallback (line 39) | interface AddToAlwaysApprovedCallback { type UserQuestionCallback (line 51) | interface UserQuestionCallback { type SubAgentExecutionContext (line 58) | interface SubAgentExecutionContext { function emitSubAgentMessage (line 79) | function emitSubAgentMessage( FILE: source/utils/execution/subagents/index.ts function resolveFilesystemEditTools (line 28) | function resolveFilesystemEditTools(tools: string[]): string[] { function buildDynamicEditGuidance (line 43) | function buildDynamicEditGuidance( function resolveDynamicRoleText (line 79) | function resolveDynamicRoleText(definition: BuiltinAgentDefinition): str... function withDynamicTools (line 120) | function withDynamicTools(definition: BuiltinAgentDefinition): BuiltinAg... constant BUILTIN_AGENT_IDS (line 132) | const BUILTIN_AGENT_IDS = Object.keys(builtinAgentsMap); function getBuiltinAgentDefinition (line 134) | function getBuiltinAgentDefinition( function getAllBuiltinAgentDefinitions (line 141) | function getAllBuiltinAgentDefinitions(): BuiltinAgentDefinition[] { FILE: source/utils/execution/subagents/types.ts type BuiltinAgentDefinition (line 1) | interface BuiltinAgentDefinition { FILE: source/utils/execution/teamExecutor.ts type TeammateExecutionOptions (line 20) | interface TeammateExecutionOptions { type TeammateExecutionResult (line 40) | interface TeammateExecutionResult { function executeTeammate (line 47) | async function executeTeammate( FILE: source/utils/execution/teamTracker.ts type TeammateMessage (line 8) | interface TeammateMessage { type RunningTeammate (line 16) | interface RunningTeammate { type TeammateResult (line 28) | interface TeammateResult { type PlanApprovalRequest (line 38) | interface PlanApprovalRequest { type TeammateMessageEvent (line 48) | interface TeammateMessageEvent { type Listener (line 55) | type Listener = () => void; type MessageListener (line 56) | type MessageListener = (event: TeammateMessageEvent) => void; class TeamTracker (line 58) | class TeamTracker { method setActiveTeam (line 88) | setActiveTeam(teamName: string): void { method getActiveTeamName (line 92) | getActiveTeamName(): string | null { method clearActiveTeam (line 96) | clearActiveTeam(): void { method register (line 103) | register(teammate: RunningTeammate): void { method unregister (line 110) | unregister(instanceId: string): void { method createAbortController (line 125) | createAbortController(instanceId: string, parentSignal?: AbortSignal):... method getAbortController (line 138) | getAbortController(memberId: string): AbortController | undefined { method abortAllTeammates (line 145) | abortAllTeammates(): void { method getRunningTeammates (line 152) | getRunningTeammates(): RunningTeammate[] { method setStandby (line 158) | setStandby(instanceId: string): void { method clearStandby (line 165) | clearStandby(instanceId: string): void { method isOnStandby (line 171) | isOnStandby(instanceId: string): boolean { method allInStandby (line 178) | allInStandby(): boolean { method getCount (line 186) | getCount(): number { method isRunning (line 190) | isRunning(instanceId: string): boolean { method getTeammate (line 194) | getTeammate(instanceId: string): RunningTeammate | undefined { method findByMemberId (line 198) | findByMemberId(memberId: string): RunningTeammate | undefined { method findByMemberName (line 205) | findByMemberName(memberName: string): RunningTeammate | undefined { method sendMessageToLead (line 215) | sendMessageToLead( method dequeueLeadMessages (line 240) | dequeueLeadMessages(): TeammateMessage[] { method sendMessageToTeammate (line 249) | sendMessageToTeammate( method dequeueTeammateMessages (line 282) | dequeueTeammateMessages(instanceId: string): TeammateMessage[] { method broadcastToTeammates (line 292) | broadcastToTeammates( method storeResult (line 308) | storeResult(result: TeammateResult): void { method drainResults (line 313) | drainResults(): TeammateResult[] { method hasResults (line 320) | hasResults(): boolean { method requestPlanApproval (line 326) | requestPlanApproval( method getPendingApprovals (line 346) | getPendingApprovals(): PlanApprovalRequest[] { method resolvePlanApproval (line 350) | resolvePlanApproval( method waitForAllTeammates (line 377) | waitForAllTeammates( method setCurrentTask (line 432) | setCurrentTask(instanceId: string, taskId: string | undefined): void { method subscribe (line 441) | subscribe(listener: Listener): () => void { method onMessage (line 448) | onMessage(listener: MessageListener): () => void { method clear (line 457) | clear(): void { method rebuildSnapshot (line 477) | private rebuildSnapshot(): void { method notifyListeners (line 481) | private notifyListeners(): void { method notifyMessageListeners (line 491) | private notifyMessageListeners(event: TeammateMessageEvent): void { FILE: source/utils/execution/terminal.ts type WritableStreamLike (line 1) | type WritableStreamLike = function resetTerminal (line 7) | function resetTerminal(stream?: WritableStreamLike): void { FILE: source/utils/execution/tokenLimiter.ts constant DEFAULT_TOOL_RESULT_TOKEN_LIMIT (line 15) | const DEFAULT_TOOL_RESULT_TOKEN_LIMIT = DEFAULT_TOOL_RESULT_TOKEN_LIMIT_... function getToolResultTokenLimit (line 21) | function getToolResultTokenLimit(): number { type TokenLimitResult (line 43) | interface TokenLimitResult { function removeBase64Images (line 54) | function removeBase64Images(obj: any): any { function validateTokenLimit (line 100) | async function validateTokenLimit( function truncateToTokenLimit (line 175) | async function truncateToTokenLimit( function wrapToolResultWithTokenLimit (line 216) | async function wrapToolResultWithTokenLimit( FILE: source/utils/execution/toolExecutor.ts function safeParseToolArguments (line 12) | function safeParseToolArguments(argsString: string): Record { type ToolCall (line 74) | interface ToolCall { type ToolResult (line 83) | interface ToolResult { type SubAgentMessageCallback (line 100) | type SubAgentMessageCallback = (message: SubAgentMessage) => void; type ToolConfirmationCallback (line 102) | interface ToolConfirmationCallback { type ToolApprovalChecker (line 110) | interface ToolApprovalChecker { type AddToAlwaysApprovedCallback (line 114) | interface AddToAlwaysApprovedCallback { type UserInteractionCallback (line 118) | interface UserInteractionCallback { function isMultimodalContent (line 129) | function isMultimodalContent(value: any): value is MultimodalContent { function extractMultimodalContent (line 145) | function extractMultimodalContent(result: any): { function executeToolCall (line 216) | async function executeToolCall( function getToolResourceType (line 621) | function getToolResourceType(toolName: string): string { function getResourceIdentifier (line 650) | function getResourceIdentifier(toolCall: ToolCall): string { function executeToolCalls (line 714) | async function executeToolCalls( FILE: source/utils/execution/toolSearchService.ts type SearchResult (line 13) | interface SearchResult { type ExternalServiceMeta (line 19) | interface ExternalServiceMeta { class ToolSearchService (line 25) | class ToolSearchService { method updateRegistry (line 34) | updateRegistry(tools: MCPTool[], servicesInfo?: MCPServiceTools[]): vo... method search (line 67) | search( method getCategorySummary (line 161) | getCategorySummary(): string { method getToolByName (line 194) | getToolByName(name: string): MCPTool | undefined { method getToolsByNames (line 201) | getToolsByNames(names: Iterable): MCPTool[] { method extractUsedToolNames (line 216) | extractUsedToolNames( method buildActiveTools (line 237) | buildActiveTools(discoveredToolNames: Set): MCPTool[] { method getToolSearchDefinition (line 252) | getToolSearchDefinition(): MCPTool { method hasTools (line 303) | hasTools(): boolean { method getToolCount (line 307) | getToolCount(): number { FILE: source/utils/execution/unifiedHooksExecutor.ts type PromptHookResponse (line 29) | interface PromptHookResponse { type CommandHookResult (line 47) | interface CommandHookResult { type PromptHookResult (line 59) | interface PromptHookResult { type HookActionResult (line 69) | type HookActionResult = CommandHookResult | PromptHookResult; type UnifiedHookExecutionResult (line 74) | interface UnifiedHookExecutionResult { type HookContext (line 84) | interface HookContext { class UnifiedHooksExecutor (line 97) | class UnifiedHooksExecutor { method constructor (line 107) | constructor(maxOutputLength: number = 10000, defaultTimeout: number = ... method clearCache (line 115) | clearCache(): void { method initializePromptExecutor (line 125) | private async initializePromptExecutor(): Promise { method executeHooks (line 155) | async executeHooks( method replacePlaceholders (line 240) | private replacePlaceholders(text: string, context?: Record): bool... method checkMatcher (line 336) | private checkMatcher(matcher: string, context: Record): b... method matchPattern (line 373) | private matchPattern(pattern: string, value: string): boolean { method executeCommand (line 391) | private async executeCommand( method truncateOutput (line 534) | private truncateOutput(output: string): string { method executePrompt (line 555) | private async executePrompt( method callModel (line 687) | private async callModel( method parseJsonResponse (line 776) | private parseJsonResponse(response: string): PromptHookResponse | null { FILE: source/utils/execution/yoloPermissionChecker.ts type YoloPermissionResult (line 17) | interface YoloPermissionResult { function checkYoloPermission (line 36) | async function checkYoloPermission( function filterToolsBySensitivity (line 93) | async function filterToolsBySensitivity( FILE: source/utils/index.ts function formatCommand (line 73) | function formatCommand(command: Command): string { function parseInput (line 77) | function parseInput(input: string): {command: string; args: string[]} { function sanitizeInput (line 84) | function sanitizeInput(input: string): string { FILE: source/utils/latex/unicodeMath.ts function latexToUnicode (line 7) | function latexToUnicode(latex: string, displayMode = false): string { constant LATEX_TO_UNICODE_MAP (line 47) | const LATEX_TO_UNICODE_MAP: Record = { function simpleLatexToUnicode (line 156) | function simpleLatexToUnicode(latex: string): string { FILE: source/utils/session/chatExporter.ts function formatMessagesAsText (line 7) | function formatMessagesAsText(messages: Message[]): string { function exportMessagesToFile (line 128) | async function exportMessagesToFile( FILE: source/utils/session/checkpointManager.ts type FileCheckpoint (line 8) | interface FileCheckpoint { type ConversationCheckpoint (line 18) | interface ConversationCheckpoint { class CheckpointManager (line 29) | class CheckpointManager { method constructor (line 33) | constructor() { method ensureCheckpointsDir (line 40) | private async ensureCheckpointsDir(): Promise { method getCheckpointPath (line 51) | private getCheckpointPath(sessionId: string): string { method createCheckpoint (line 60) | async createCheckpoint(sessionId: string, messageCount: number): Promi... method recordFileSnapshot (line 78) | async recordFileSnapshot(filePath: string): Promise { method saveCheckpoint (line 118) | private async saveCheckpoint(): Promise { method loadCheckpoint (line 131) | async loadCheckpoint(sessionId: string): Promise { method clearCheckpoint (line 180) | async clearCheckpoint(sessionId: string): Promise { method getActiveCheckpoint (line 196) | getActiveCheckpoint(): ConversationCheckpoint | null { method commitCheckpoint (line 203) | async commitCheckpoint(): Promise { FILE: source/utils/session/commandUsageManager.ts type CommandUsageData (line 9) | interface CommandUsageData { class CommandUsageManager (line 25) | class CommandUsageManager { method constructor (line 32) | constructor() { method ensureSnowDir (line 40) | private async ensureSnowDir(): Promise { method loadUsage (line 52) | private async loadUsage(): Promise { method scheduleSave (line 71) | private scheduleSave(): void { method saveUsage (line 84) | private async saveUsage(): Promise { method recordUsage (line 105) | async recordUsage(commandName: string): Promise { method getUsageCount (line 123) | async getUsageCount(commandName: string): Promise { method getUsageCountSync (line 132) | getUsageCountSync(commandName: string): number { method ensureLoaded (line 139) | async ensureLoaded(): Promise { method getAllUsage (line 146) | async getAllUsage(): Promise> { method clearUsage (line 154) | async clearUsage(): Promise { method dispose (line 167) | async dispose(): Promise { FILE: source/utils/session/historyManager.ts type HistoryEntry (line 7) | interface HistoryEntry { type HistoryData (line 12) | interface HistoryData { class HistoryManager (line 22) | class HistoryManager { method constructor (line 32) | constructor() { method ensureSnowDir (line 43) | private async ensureSnowDir(): Promise { method loadHistory (line 57) | async loadHistory(): Promise { method addEntry (line 110) | async addEntry(content: string): Promise { method getEntries (line 151) | async getEntries(): Promise { method cleanupOldEntries (line 168) | private async cleanupOldEntries(): Promise { method saveHistory (line 204) | private async saveHistory(): Promise { method clearHistory (line 224) | async clearHistory(): Promise { FILE: source/utils/session/projectUtils.ts function getProjectId (line 18) | function getProjectId(projectPath?: string): string { function getProjectName (line 42) | function getProjectName(projectPath?: string): string { function getProjectPath (line 52) | function getProjectPath(): string { function sanitizeProjectName (line 62) | function sanitizeProjectName(name: string): string { function formatDateCompact (line 79) | function formatDateCompact(date: Date): string { function isDateFolder (line 92) | function isDateFolder(folderName: string): boolean { function isProjectFolder (line 103) | function isProjectFolder(folderName: string): boolean { FILE: source/utils/session/sessionConverter.ts function cleanThinkingContent (line 10) | function cleanThinkingContent(content: string): string { function isValidTimestamp (line 14) | function isValidTimestamp(timestamp: unknown): timestamp is number { function appendAiCompletionTimeMessage (line 18) | function appendAiCompletionTimeMessage( function convertSessionMessagesToUI (line 38) | function convertSessionMessagesToUI( FILE: source/utils/session/sessionManager.ts type ChatMessage (line 18) | interface ChatMessage extends APIChatMessage { type Session (line 24) | interface Session { type SessionListItem (line 43) | interface SessionListItem { type PaginatedSessionList (line 56) | interface PaginatedSessionList { class SessionManager (line 62) | class SessionManager { method constructor (line 76) | constructor() { method getProjectSessionsDir (line 86) | private getProjectSessionsDir(): string { method ensureSessionsDir (line 90) | private async ensureSessionsDir(date?: Date): Promise { method getSessionPath (line 113) | private getSessionPath( method getProjectId (line 128) | getProjectId(): string { method getProjectPath (line 135) | getProjectPath(): string { method cleanTitle (line 142) | private cleanTitle(title: string): string { method createNewSession (line 149) | async createNewSession( method createEmptyTodoForSession (line 188) | private async createEmptyTodoForSession(sessionId: string): Promise { method cleanIncompleteToolCalls (line 231) | private cleanIncompleteToolCalls(session: Session): void { method loadSessionFromDisk (line 306) | private async loadSessionFromDisk( method getLastAssistantMessageFromSession (line 329) | async getLastAssistantMessageFromSession( method loadSession (line 349) | async loadSession(sessionId: string): Promise { method findSessionInDateFolders (line 386) | private async findSessionInDateFolders( method findSessionInProjectDir (line 444) | private async findSessionInProjectDir( method listSessions (line 480) | async listSessions(): Promise { method readLegacySessionsFromDir (line 547) | private async readLegacySessionsFromDir( method readLegacySessionFile (line 567) | private async readLegacySessionFile( method listSessionsPaginated (line 610) | async listSessionsPaginated( method invalidateCache (line 658) | private invalidateCache(): void { method readSessionsFromDir (line 663) | private async readSessionsFromDir( method addMessage (line 700) | async addMessage(message: ChatMessage): Promise { method generateAndUpdateSummary (line 791) | private async generateAndUpdateSummary(): Promise { method updateContextUsage (line 861) | updateContextUsage(usage: UsageInfo | null): void { method getCurrentSession (line 873) | getCurrentSession(): Session | null { method setCurrentSession (line 877) | setCurrentSession(session: Session): void { method clearCurrentSession (line 882) | clearCurrentSession(): void { method onMessageAdded (line 890) | onMessageAdded(listener: (message: ChatMessage) => void): () => void { method onMessagesChanged (line 903) | onMessagesChanged(listener: () => void): () => void { method notifyMessageListeners (line 916) | private notifyMessageListeners(message: ChatMessage): void { method notifyMessagesChanged (line 929) | private notifyMessagesChanged(): void { method updateSessionTitle (line 943) | async updateSessionTitle( method deleteSession (line 983) | async deleteSession(sessionId: string): Promise { method deleteSessionFromProjectDir (line 1074) | private async deleteSessionFromProjectDir( method executeSessionStartHook (line 1109) | private async executeSessionStartHook(messages: ChatMessage[]): Promise<{ method truncateMessages (line 1149) | async truncateMessages(messageCount: number): Promise { FILE: source/utils/sse/daemonLogger.ts class DaemonLogger (line 15) | class DaemonLogger { method constructor (line 20) | constructor( method ensureLogDirectory (line 36) | private ensureLogDirectory(): void { method getDateDirectory (line 51) | private getDateDirectory(): string { method log (line 62) | log(message: string, level: 'info' | 'error' | 'success' = 'info'): vo... method rotateIfNeeded (line 82) | private rotateIfNeeded(): void { method rotate (line 107) | private rotate(): void { method cleanupOldArchives (line 140) | private cleanupOldArchives(dateDir: string, baseName: string): void { method getLogFilePath (line 171) | getLogFilePath(): string { FILE: source/utils/sse/sseDaemon.ts function getTranslation (line 21) | function getTranslation() { function formatMessage (line 27) | function formatMessage(template: string, params: Record): s... constant SNOW_DIR (line 34) | const SNOW_DIR = join(homedir(), '.snow'); constant DAEMON_DIR (line 35) | const DAEMON_DIR = join(SNOW_DIR, 'sse-daemons'); constant LOG_DIR (line 36) | const LOG_DIR = join(SNOW_DIR, 'sse-logs'); type DaemonInfo (line 46) | interface DaemonInfo { function getPidFilePath (line 57) | function getPidFilePath(port: number): string { function getLogFilePath (line 64) | function getLogFilePath(port: number): string { function startDaemon (line 71) | function startDaemon( function stopDaemon (line 212) | function stopDaemon(target?: number): void { function killProcess (line 264) | function killProcess(pid: number, pidFile: string): void { function getAllPidFiles (line 308) | function getAllPidFiles(): string[] { function daemonStatus (line 321) | function daemonStatus(): void { FILE: source/utils/sse/sseManager.ts type PendingInteraction (line 18) | interface PendingInteraction { class SSEManager (line 30) | class SSEManager { method setLogCallback (line 45) | setLogCallback( method log (line 54) | private log( method start (line 68) | async start( method stop (line 100) | async stop(): Promise { method handleClientMessage (line 114) | private async handleClientMessage( method handleInteractionResponse (line 161) | private handleInteractionResponse(message: ClientMessage): void { method handleAbortRequest (line 196) | private handleAbortRequest( method handleRollbackRequest (line 234) | private async handleRollbackRequest( method handleChatMessage (line 319) | private async handleChatMessage( method waitForInteraction (line 688) | private waitForInteraction( method generateRequestId (line 711) | private generateRequestId(): string { method broadcast (line 718) | broadcast(event: SSEEvent): void { method isServerRunning (line 727) | isServerRunning(): boolean { method getConnectionCount (line 734) | getConnectionCount(): number { FILE: source/utils/ssh/sshClient.ts type SSHConnectionResult (line 8) | interface SSHConnectionResult { type RemoteDirectoryEntry (line 13) | interface RemoteDirectoryEntry { class SSHClient (line 23) | class SSHClient { method constructor (line 28) | constructor() { method connect (line 35) | async connect( method testConnection (line 105) | async testConnection( method listDirectory (line 119) | async listDirectory(remotePath: string): Promise { method readFile (line 165) | async readFile(remotePath: string): Promise { method writeFile (line 191) | async writeFile(remotePath: string, content: string): Promise { method exec (line 214) | async exec( method disconnect (line 325) | disconnect(): void { method isConnected (line 336) | isConnected(): boolean { function parseSSHUrl (line 345) | function parseSSHUrl(url: string): { function getDefaultSSHKeyPath (line 367) | function getDefaultSSHKeyPath(): string { function isSSHAgentAvailable (line 374) | function isSSHAgentAvailable(): boolean { FILE: source/utils/task/loopManager.ts constant DEFAULT_INTERVAL_MS (line 5) | const DEFAULT_INTERVAL_MS = 10 * 60 * 1000; constant MAX_ACTIVE_LOOPS (line 6) | const MAX_ACTIVE_LOOPS = 50; constant ACTIVE_TASK_STATUSES (line 7) | const ACTIVE_TASK_STATUSES = new Set(['pending', 'running', 'paused']); type LoopExecutionTaskStatus (line 9) | type LoopExecutionTaskStatus = type LoopSchedule (line 16) | interface LoopSchedule { type LoopJobSummary (line 22) | interface LoopJobSummary { type LoopJob (line 37) | interface LoopJob extends LoopJobSummary { function clampPositiveInteger (line 41) | function clampPositiveInteger(value: number): number { function unitToMilliseconds (line 49) | function unitToMilliseconds(value: number, unit: string): number { function millisecondsToLabel (line 86) | function millisecondsToLabel(intervalMs: number): string { function parseDurationString (line 106) | function parseDurationString(durationStr: string): number { function formatTimestamp (line 121) | function formatTimestamp(timestamp: number): string { function parseLoopSchedule (line 125) | function parseLoopSchedule(rawArgs?: string): LoopSchedule { class LoopManager (line 167) | class LoopManager { method createLoop (line 170) | createLoop(schedule: LoopSchedule): LoopJobSummary { method listLoops (line 200) | async listLoops(): Promise { method listTaskSummaries (line 208) | async listTaskSummaries(): Promise { method cancelLoop (line 226) | async cancelLoop(loopId: string): Promise { method syncTaskState (line 238) | private async syncTaskState(loop: LoopJob): Promise { method triggerLoop (line 253) | private async triggerLoop(loopId: string): Promise { method toSummary (line 283) | private toSummary(loop: LoopJob): LoopJobSummary { function formatLoopSummary (line 301) | function formatLoopSummary(loop: LoopJobSummary): string { FILE: source/utils/task/taskExecutor.ts constant TASK_LOG_DIR (line 7) | const TASK_LOG_DIR = join(homedir(), '.snow', 'task-logs'); function ensureLogDir (line 9) | function ensureLogDir() { function getLogPath (line 15) | function getLogPath(taskId: string): string { function writeLog (line 20) | function writeLog(taskId: string, message: string) { function executeTaskInBackground (line 30) | async function executeTaskInBackground( function executeTask (line 106) | async function executeTask( FILE: source/utils/task/taskManager.ts type Task (line 7) | interface Task { type TaskListItem (line 31) | interface TaskListItem { class TaskManager (line 40) | class TaskManager { method constructor (line 44) | constructor() { method queueOperation (line 51) | private async queueOperation( method ensureTasksDir (line 71) | private async ensureTasksDir(): Promise { method getTaskPath (line 79) | private getTaskPath(taskId: string): string { method createTask (line 83) | async createTask(prompt: string): Promise { method saveTask (line 103) | async saveTask(task: Task): Promise { method loadTask (line 109) | async loadTask(taskId: string): Promise { method listTasks (line 119) | async listTasks(): Promise { method deleteTask (line 153) | async deleteTask(taskId: string): Promise { method updateTaskStatus (line 182) | async updateTaskStatus( method addMessage (line 200) | async addMessage(taskId: string, message: ChatMessage): Promise { method convertTaskToSession (line 212) | async convertTaskToSession(taskId: string): Promise { method pauseTaskForSensitiveCommand (line 243) | async pauseTaskForSensitiveCommand( method approveSensitiveCommand (line 268) | async approveSensitiveCommand(taskId: string): Promise { method rejectSensitiveCommand (line 283) | async rejectSensitiveCommand( method getPausedInfo (line 309) | async getPausedInfo(taskId: string): Promise { FILE: source/utils/team/teamConfig.ts type TeamMemberStatus (line 6) | type TeamMemberStatus = 'pending' | 'active' | 'idle' | 'shutdown'; type TeamStatus (line 7) | type TeamStatus = 'active' | 'cleanup' | 'disbanded'; type TeamMember (line 9) | interface TeamMember { type TeamConfig (line 20) | interface TeamConfig { constant SNOW_DIR (line 28) | const SNOW_DIR = join(homedir(), '.snow'); constant TEAMS_DIR (line 29) | const TEAMS_DIR = join(SNOW_DIR, 'teams'); function ensureDir (line 31) | function ensureDir(dir: string): void { function getTeamDir (line 37) | function getTeamDir(teamName: string): string { function getTeamConfigPath (line 41) | function getTeamConfigPath(teamName: string): string { function createTeam (line 45) | function createTeam( function getTeam (line 71) | function getTeam(teamName: string): TeamConfig | null { function getActiveTeam (line 83) | function getActiveTeam(): TeamConfig | null { function updateTeam (line 102) | function updateTeam(teamName: string, updates: Partial): Tea... function addMember (line 111) | function addMember( function updateMember (line 139) | function updateMember( function removeMember (line 155) | function removeMember(teamName: string, memberId: string): boolean { function getMember (line 167) | function getMember(teamName: string, memberId: string): TeamMember | null { function getActiveMembers (line 173) | function getActiveMembers(teamName: string): TeamMember[] { function disbandTeam (line 181) | function disbandTeam(teamName: string): boolean { function deleteTeamData (line 197) | function deleteTeamData(teamName: string): boolean { FILE: source/utils/team/teamSnapshot.ts type TeamSnapshotEvent (line 16) | type TeamSnapshotEvent = type TeamSnapshotData (line 20) | interface TeamSnapshotData { function getTeamSnapshotDir (line 26) | function getTeamSnapshotDir(): string { function getTeamSnapshotFilePath (line 30) | function getTeamSnapshotFilePath(): string { function ensureDir (line 35) | function ensureDir(): void { function readSnapshotData (line 42) | function readSnapshotData(): TeamSnapshotData { function saveSnapshotData (line 52) | function saveSnapshotData(data: TeamSnapshotData): void { function recordTeamCreated (line 63) | function recordTeamCreated( function recordMemberSpawned (line 80) | function recordMemberSpawned( function getTeamEventsToRollback (line 98) | function getTeamEventsToRollback( function getTeamRollbackCount (line 117) | function getTeamRollbackCount( function hasTeamToRollback (line 129) | function hasTeamToRollback( function rollbackTeamState (line 140) | async function rollbackTeamState( function deleteTeamSnapshotsFromIndex (line 198) | function deleteTeamSnapshotsFromIndex( function deleteTeamSnapshotsByTeamName (line 220) | function deleteTeamSnapshotsByTeamName( function clearAllTeamSnapshots (line 246) | function clearAllTeamSnapshots(sessionId: string): void { FILE: source/utils/team/teamTaskList.ts type TaskStatus (line 6) | type TaskStatus = 'pending' | 'in_progress' | 'completed'; type TeamTask (line 8) | interface TeamTask { type TaskListData (line 21) | interface TaskListData { constant SNOW_DIR (line 26) | const SNOW_DIR = join(homedir(), '.snow'); constant TEAMS_DIR (line 27) | const TEAMS_DIR = join(SNOW_DIR, 'teams'); function getTaskListPath (line 29) | function getTaskListPath(teamName: string): string { function ensureDir (line 33) | function ensureDir(dir: string): void { function readTaskList (line 39) | function readTaskList(teamName: string): TaskListData { function writeTaskList (line 51) | function writeTaskList(teamName: string, data: TaskListData): void { function createTask (line 62) | function createTask( function claimTask (line 90) | function claimTask( function completeTask (line 128) | function completeTask( function assignTask (line 144) | function assignTask( function updateTaskStatus (line 162) | function updateTaskStatus( function listTasks (line 181) | function listTasks(teamName: string): TeamTask[] { function getClaimableTasks (line 185) | function getClaimableTasks(teamName: string): TeamTask[] { function getTask (line 198) | function getTask(teamName: string, taskId: string): TeamTask | null { function getTasksByAssignee (line 203) | function getTasksByAssignee(teamName: string, assigneeId: string): TeamT... function clearTasks (line 208) | function clearTasks(teamName: string): void { FILE: source/utils/team/teamWorktree.ts constant WORKTREE_BASE (line 6) | const WORKTREE_BASE = join(process.cwd(), '.snow', 'worktrees'); function sanitizeName (line 8) | function sanitizeName(name: string): string { function getWorktreeBase (line 12) | function getWorktreeBase(): string { function getWorktreePath (line 16) | function getWorktreePath(teamName: string, memberName: string): string { function createTeamWorktree (line 20) | async function createTeamWorktree( function removeTeamWorktree (line 67) | async function removeTeamWorktree(worktreePath: string): Promise { function removeWorktreeBranch (line 87) | async function removeWorktreeBranch( function cleanupTeamWorktrees (line 104) | async function cleanupTeamWorktrees(teamName: string): Promise { function listTeamWorktrees (line 130) | function listTeamWorktrees(teamName: string): string[] { function getTeammateBranchName (line 147) | function getTeammateBranchName( function hasUncommittedChanges (line 154) | function hasUncommittedChanges(worktreePath: string): boolean { function autoCommitWorktreeChanges (line 167) | function autoCommitWorktreeChanges( type MergeStrategy (line 188) | type MergeStrategy = 'manual' | 'theirs' | 'ours' | 'auto'; type MergeResult (line 190) | interface MergeResult { function getTeammateDiffSummary (line 201) | function getTeammateDiffSummary( function mergeTeammateBranch (line 230) | function mergeTeammateBranch( function isInMergeState (line 337) | function isInMergeState(): boolean { function getConflictedFiles (line 349) | function getConflictedFiles(): string[] { function completeMerge (line 364) | function completeMerge(message?: string): { function abortCurrentMerge (line 400) | function abortCurrentMerge(): {success: boolean; error?: string} { function isGitRepo (line 413) | function isGitRepo(): boolean { function enforceWorktreePath (line 435) | function enforceWorktreePath( function rewriteToolArgsForWorktree (line 471) | function rewriteToolArgsForWorktree( FILE: source/utils/ui/escapeHandler.ts function unescapeString (line 26) | function unescapeString(inputString: string): string { function isOverEscaped (line 77) | function isOverEscaped(inputString: string): boolean { function countOccurrences (line 89) | function countOccurrences(str: string, substr: string): number { function tryUnescapeFix (line 119) | function tryUnescapeFix( function trimPairIfPossible (line 157) | function trimPairIfPossible( FILE: source/utils/ui/externalEditor.ts type StdinLike (line 7) | type StdinLike = NodeJS.ReadStream & { function pauseStdinForExternalEditor (line 12) | function pauseStdinForExternalEditor(): () => void { function addUtf8Bom (line 37) | function addUtf8Bom(text: string): string { function spawnNotepad (line 42) | async function spawnNotepad(filePath: string): Promise { function editTextWithNotepad (line 61) | async function editTextWithNotepad(initialText: string): Promise { FILE: source/utils/ui/fileDialog.ts function escapePowerShellString (line 11) | function escapePowerShellString(value: string): string { function showWindowsSaveDialog (line 15) | async function showWindowsSaveDialog( function showSaveDialog (line 48) | async function showSaveDialog( function isFileDialogSupported (line 109) | function isFileDialogSupported(): boolean { FILE: source/utils/ui/messageFormatter.ts constant PATH_DISPLAY_PADDING (line 4) | const PATH_DISPLAY_PADDING = 30; constant MIN_DISPLAY_LENGTH (line 5) | const MIN_DISPLAY_LENGTH = 10; function getTerminalWidth (line 10) | function getTerminalWidth(): number { function isFilePath (line 17) | function isFilePath(value: string): boolean { function truncatePath (line 27) | function truncatePath(path: string, maxLen: number): string { function wrapWithFileLink (line 75) | function wrapWithFileLink( function smartTruncatePath (line 89) | function smartTruncatePath( function formatToolCallMessage (line 108) | function formatToolCallMessage(toolCall: ToolCall): { FILE: source/utils/ui/pickerState.ts function setPickerActive (line 19) | function setPickerActive(active: boolean): void { function isPickerActive (line 27) | function isPickerActive(): boolean { FILE: source/utils/ui/skillMask.ts type SkillMaskResult (line 4) | type SkillMaskResult = { function isSkillHeaderLine (line 9) | function isSkillHeaderLine(line: string): boolean { function splitSkillEndRemainder (line 13) | function splitSkillEndRemainder(line: string): string | null { function isSkillEndLine (line 22) | function isSkillEndLine(line: string): boolean { function parseSkillIdFromHeader (line 26) | function parseSkillIdFromHeader(line: string): string { function maskSkillInjectedText (line 31) | function maskSkillInjectedText(text: string): SkillMaskResult { FILE: source/utils/ui/textBuffer.ts type Viewport (line 10) | interface Viewport { function sanitizeInput (line 18) | function sanitizeInput(str: string): string { type Placeholder (line 37) | interface Placeholder { type ImageData (line 50) | interface ImageData { class TextBuffer (line 58) | class TextBuffer { method constructor (line 83) | constructor(viewport: Viewport, onUpdate?: () => void) { method destroy (line 92) | destroy(): void { method text (line 100) | get text(): string { method getFullText (line 107) | getFullText(): string { method getFullTextWithPasteMarkers (line 127) | getFullTextWithPasteMarkers(): string { method expandNonPastePlaceholders (line 174) | private expandNonPastePlaceholders(text: string): string { method visualCursor (line 185) | get visualCursor(): [number, number] { method getCursorPosition (line 189) | getCursorPosition(): number { method setCursorPosition (line 193) | setCursorPosition(position: number): void { method viewportVisualLines (line 199) | get viewportVisualLines(): string[] { method maxWidth (line 203) | get maxWidth(): number { method isExpandedView (line 207) | get isExpandedView(): boolean { method scheduleUpdate (line 211) | private scheduleUpdate(): void { method setText (line 218) | setText(text: string): void { method insert (line 235) | insert(input: string): void { method insertPastingIndicator (line 362) | insertPastingIndicator(): void { method insertTextPlaceholder (line 378) | insertTextPlaceholder(content: string, placeholderText: string): void { method insertRestoredText (line 404) | insertRestoredText(input: string): void { method insertPlainText (line 413) | private insertPlainText(text: string): void { method backspace (line 426) | backspace(): void { method delete (line 454) | delete(): void { method findPlaceholderEndingAt (line 488) | private findPlaceholderEndingAt( method findPlaceholderStartingAt (line 503) | private findPlaceholderStartingAt( method collectPlaceholderBoundaries (line 519) | private collectPlaceholderBoundaries(): Array<{ method removePlaceholderRecord (line 555) | private removePlaceholderRecord(id: string): void { method moveLeft (line 563) | moveLeft(): void { method moveRight (line 588) | moveRight(): void { method moveUp (line 613) | moveUp(): void { method moveDown (line 637) | moveDown(): void { method updateViewport (line 664) | updateViewport(viewport: Viewport): void { method toggleExpandedView (line 682) | toggleExpandedView(): void { method hasTextPlaceholders (line 723) | hasTextPlaceholders(): boolean { method buildExpandedSegments (line 734) | private buildExpandedSegments(): Array<{ method refoldContent (line 791) | private refoldContent(): void { method restoreExactFromSegments (line 958) | private restoreExactFromSegments( method refoldEntireContent (line 1040) | private refoldEntireContent(text: string): void { method getCharAtCursor (line 1068) | getCharAtCursor(): {char: string; isWideChar: boolean} { method clampCursorIndex (line 1079) | private clampCursorIndex(): void { method getTextPlaceholderCpPositions (line 1088) | private getTextPlaceholderCpPositions(): Array<{ method mapCursorToExpandedIndex (line 1112) | private mapCursorToExpandedIndex(contentCursorIdx: number): number { method mapExpandedIndexToContent (line 1126) | private mapExpandedIndexToContent(expandedCursorIdx: number): number { method recalculateVisualState (line 1143) | private recalculateVisualState(): void { method wrapLineToWidth (line 1193) | private wrapLineToWidth(line: string, width: number): string[] { method computeVisualCursorFromIndex (line 1308) | private computeVisualCursorFromIndex(position: number): [number, numbe... method moveCursorToVisualRow (line 1340) | private moveCursorToVisualRow(targetRow: number): void { method recomputeVisualCursorOnly (line 1361) | private recomputeVisualCursorOnly(): void { method insertImage (line 1372) | insertImage(base64Data: string, mimeType: string): void { method getImages (line 1398) | getImages(): ImageData[] { method clearImages (line 1419) | clearImages(): void { FILE: source/utils/ui/updateNotice.ts type UpdateNotice (line 3) | type UpdateNotice = { constant UPDATE_NOTICE_EVENT (line 9) | const UPDATE_NOTICE_EVENT = 'update-notice'; function compareVersion (line 16) | function compareVersion(a: string, b: string): number { function setUpdateNotice (line 33) | function setUpdateNotice( function getUpdateNotice (line 43) | function getUpdateNotice(): UpdateNotice | null { function onUpdateNotice (line 47) | function onUpdateNotice( FILE: source/utils/ui/userInteractionError.ts class UserInteractionNeededError (line 5) | class UserInteractionNeededError extends Error { method constructor (line 11) | constructor(question: string, options: string[], toolCallId: string = ... type UserInteractionResponse (line 21) | interface UserInteractionResponse { FILE: source/utils/ui/vscodeConnection.ts type EditorContext (line 6) | interface EditorContext { type Diagnostic (line 13) | interface Diagnostic { type IDEInfo (line 22) | interface IDEInfo { class VSCodeConnectionManager (line 29) | class VSCodeConnectionManager { method start (line 54) | async start(): Promise { method cleanupConnection (line 167) | private cleanupConnection(): void { method normalizePath (line 201) | private normalizePath(filePath: string): string { method shouldHandleMessage (line 213) | private shouldHandleMessage(data: any): boolean { method refreshConnectedWorkspaceFolders (line 252) | private refreshConnectedWorkspaceFolders(): void { method scheduleReconnect (line 295) | private scheduleReconnect(): void { method stop (line 321) | stop(): void { method isConnected (line 352) | isConnected(): boolean { method isClientRunning (line 356) | isClientRunning(): boolean { method getContext (line 360) | getContext(): EditorContext { method onContextUpdate (line 364) | onContextUpdate(listener: (context: EditorContext) => void): () => void { method handleMessage (line 371) | private handleMessage(data: any): void { method notifyListeners (line 385) | private notifyListeners(): void { method getPort (line 391) | getPort(): number { method setCurrentWorkingDirectory (line 399) | setCurrentWorkingDirectory(dir: string): void { method getCurrentWorkingDirectory (line 404) | getCurrentWorkingDirectory(): string { method requestDiagnostics (line 413) | async requestDiagnostics(filePath: string): Promise { method resetReconnectAttempts (line 473) | resetReconnectAttempts(): void { method getUserDisconnected (line 477) | getUserDisconnected(): boolean { method setUserDisconnected (line 481) | setUserDisconnected(value: boolean): void { method getAvailableIDEs (line 488) | getAvailableIDEs(): {matched: IDEInfo[]; unmatched: IDEInfo[]} { method connectToPort (line 552) | async connectToPort(targetPort: number): Promise { method hasMatchingWorkspace (line 603) | hasMatchingWorkspace(): boolean { method showDiff (line 616) | async showDiff( method closeDiff (line 649) | async closeDiff(): Promise { method showDiffReview (line 674) | async showDiffReview( method showGitDiff (line 707) | async showGitDiff(filePath: string): Promise { FILE: source/vendor/ink/src/colorize.ts type ColorType (line 3) | type ColorType = 'foreground' | 'background'; FILE: source/vendor/ink/src/components/App.tsx type Props (line 18) | type Props = { type State (line 32) | type State = { type Focusable (line 39) | type Focusable = { class App (line 47) | class App extends PureComponent { method getDerivedStateFromError (line 50) | static getDerivedStateFromError(error: Error) { method isRawModeSupported (line 68) | isRawModeSupported(): boolean { method render (line 72) | override render() { method componentDidMount (line 141) | override componentDidMount() { method componentWillUnmount (line 145) | override componentWillUnmount() { method componentDidCatch (line 154) | override componentDidCatch(error: Error) { FILE: source/vendor/ink/src/components/AppContext.ts type Props (line 3) | type Props = { method exit (line 15) | exit() {} FILE: source/vendor/ink/src/components/Box.tsx type Props (line 6) | type Props = Except; FILE: source/vendor/ink/src/components/CursorContext.ts type CursorRegistration (line 4) | type CursorRegistration = { type Props (line 10) | type Props = { method registerCursor (line 17) | registerCursor() {} FILE: source/vendor/ink/src/components/ErrorOverview.tsx type Props (line 20) | type Props = { function ErrorOverview (line 24) | function ErrorOverview({error}: Props) { FILE: source/vendor/ink/src/components/FocusContext.ts type Props (line 3) | type Props = { method add (line 19) | add() {} method remove (line 20) | remove() {} method activate (line 21) | activate() {} method deactivate (line 22) | deactivate() {} method enableFocus (line 23) | enableFocus() {} method disableFocus (line 24) | disableFocus() {} method focusNext (line 25) | focusNext() {} method focusPrevious (line 26) | focusPrevious() {} method focus (line 27) | focus() {} FILE: source/vendor/ink/src/components/Newline.tsx type Props (line 3) | type Props = { function Newline (line 15) | function Newline({count = 1}: Props) { FILE: source/vendor/ink/src/components/Spacer.tsx function Spacer (line 8) | function Spacer() { FILE: source/vendor/ink/src/components/Static.tsx type Props (line 4) | type Props = { function Static (line 35) | function Static(props: Props) { FILE: source/vendor/ink/src/components/StderrContext.ts type Props (line 4) | type Props = { method write (line 24) | write() {} FILE: source/vendor/ink/src/components/StdinContext.ts type Props (line 5) | type Props = { method setRawMode (line 35) | setRawMode() {} FILE: source/vendor/ink/src/components/StdoutContext.ts type Props (line 4) | type Props = { method write (line 24) | write() {} FILE: source/vendor/ink/src/components/Text.tsx type Props (line 7) | type Props = { function Text (line 61) | function Text({ FILE: source/vendor/ink/src/components/Transform.tsx type Props (line 3) | type Props = { function Transform (line 18) | function Transform({children, transform}: Props) { FILE: source/vendor/ink/src/cursor-helpers.ts type CursorPosition (line 3) | type CursorPosition = { FILE: source/vendor/ink/src/dom.ts type InkNode (line 8) | type InkNode = { type TextName (line 15) | type TextName = '#text'; type ElementNames (line 16) | type ElementNames = type NodeNames (line 22) | type NodeNames = ElementNames | TextName; type DOMElement (line 25) | type DOMElement = { type TextNode (line 39) | type TextNode = { type DOMNode (line 45) | type DOMNode = T extends { type DOMNodeAttribute (line 54) | type DOMNodeAttribute = boolean | string | number; function shallowEqual (line 175) | function shallowEqual>( FILE: source/vendor/ink/src/global.d.ts type IntrinsicElements (line 9) | interface IntrinsicElements { type Box (line 17) | type Box = { type Text (line 25) | type Text = { FILE: source/vendor/ink/src/hooks/use-cursor.ts type CursorOffset (line 5) | type CursorOffset = { FILE: source/vendor/ink/src/hooks/use-focus-manager.ts type Output (line 4) | type Output = { FILE: source/vendor/ink/src/hooks/use-focus.ts type Input (line 5) | type Input = { type Output (line 22) | type Output = { FILE: source/vendor/ink/src/hooks/use-input.ts type Key (line 9) | type Key = { type Handler (line 81) | type Handler = (input: string, key: Key) => void; type Options (line 83) | type Options = { FILE: source/vendor/ink/src/ink.tsx type Options (line 22) | type Options = { function clearInkStaticOutput (line 36) | function clearInkStaticOutput(stdout: NodeJS.WriteStream): void { class Ink (line 44) | class Ink { method constructor (line 64) | constructor(options: Options) { method getAbsolutePosition (line 150) | private getAbsolutePosition(node: DOMElement): {x: number; y: number} { method render (line 253) | render(node: ReactNode): void { method writeToStdout (line 272) | writeToStdout(data: string): void { method writeToStderr (line 295) | writeToStderr(data: string): void { method unmount (line 317) | unmount(error?: Error | number | null): void { method waitUntilExit (line 356) | async waitUntilExit(): Promise { method clear (line 365) | clear(): void { method patchConsole (line 371) | patchConsole(): void { FILE: source/vendor/ink/src/line-width-cache.ts constant MAX_CACHE_SIZE (line 4) | const MAX_CACHE_SIZE = 4096; function cachedWidestLine (line 6) | function cachedWidestLine(text: string): number { FILE: source/vendor/ink/src/log-update.ts type LogUpdate (line 14) | type LogUpdate = { FILE: source/vendor/ink/src/measure-element.ts type Output (line 3) | type Output = { FILE: source/vendor/ink/src/measure-text.ts constant MAX_CACHE_SIZE (line 3) | const MAX_CACHE_SIZE = 2048; type Output (line 6) | type Output = { FILE: source/vendor/ink/src/output.ts type Options (line 21) | type Options = { type Operation (line 26) | type Operation = WriteOperation | ClipOperation | UnclipOperation; type WriteOperation (line 28) | type WriteOperation = { type ClipOperation (line 36) | type ClipOperation = { type Clip (line 41) | type Clip = { type UnclipOperation (line 48) | type UnclipOperation = { class Output (line 52) | class Output { method constructor (line 58) | constructor(options: Options) { method reset (line 65) | reset(width: number, height: number): void { method write (line 71) | write( method clip (line 92) | clip(clip: Clip) { method unclip (line 99) | unclip() { method get (line 105) | get(): {output: string; height: number} { FILE: source/vendor/ink/src/parse-keypress.ts type ParsedKey (line 129) | type ParsedKey = { FILE: source/vendor/ink/src/reconciler.ts type AnyObject (line 49) | type AnyObject = Record; type Props (line 93) | type Props = Record; type HostContext (line 95) | type HostContext = { type UpdatePayload (line 99) | type UpdatePayload = { method resetAfterCommit (line 125) | resetAfterCommit(rootNode) { method getChildHostContext (line 146) | getChildHostContext(parentHostContext, type) { method createInstance (line 157) | createInstance(originalType, newProps, _root, hostContext) { method createTextInstance (line 199) | createTextInstance(text, _root, hostContext) { method resetTextContent (line 208) | resetTextContent() {} method hideTextInstance (line 209) | hideTextInstance(node) { method unhideTextInstance (line 212) | unhideTextInstance(node, text) { method hideInstance (line 216) | hideInstance(node) { method unhideInstance (line 219) | unhideInstance(node) { method finalizeInitialChildren (line 225) | finalizeInitialChildren(node, _type, _props, rootNode) { method beforeActiveInstanceBlur (line 244) | beforeActiveInstanceBlur() {} method afterActiveInstanceBlur (line 245) | afterActiveInstanceBlur() {} method detachDeletedInstance (line 246) | detachDeletedInstance() {} method prepareScopeUpdate (line 248) | prepareScopeUpdate() {} method removeChildFromContainer (line 252) | removeChildFromContainer(node, removeNode) { method prepareUpdate (line 256) | prepareUpdate(node, _type, oldProps, newProps, rootNode) { method commitUpdate (line 274) | commitUpdate(node, {props, style}) { method commitTextUpdate (line 300) | commitTextUpdate(node, _oldText, newText) { method removeChild (line 303) | removeChild(node, removeNode) { FILE: source/vendor/ink/src/render-node-to-output.ts type OutputTransformer (line 29) | type OutputTransformer = (s: string, index: number) => string; FILE: source/vendor/ink/src/render.ts type RenderOptions (line 7) | type RenderOptions = { type Instance (line 46) | type Instance = { method unmount (line 93) | unmount() { FILE: source/vendor/ink/src/renderer.ts type Result (line 5) | type Result = { function createRenderer (line 11) | function createRenderer(node: DOMElement): () => Result { FILE: source/vendor/ink/src/styles.ts type Styles (line 7) | type Styles = { FILE: source/vendor/ink/src/vendor-types.d.ts type Fiber (line 7) | type Fiber = any; type FiberRoot (line 8) | type FiberRoot = any; type BoxStyle (line 47) | interface BoxStyle { type Boxes (line 57) | interface Boxes { class StackUtils (line 101) | class StackUtils { type StyledChar (line 111) | interface StyledChar { FILE: source/vendor/ink/src/yoga-ts/enums.ts type Align (line 17) | type Align = (typeof Align)[keyof typeof Align]; type BoxSizing (line 23) | type BoxSizing = (typeof BoxSizing)[keyof typeof BoxSizing]; type Dimension (line 29) | type Dimension = (typeof Dimension)[keyof typeof Dimension]; type Direction (line 36) | type Direction = (typeof Direction)[keyof typeof Direction]; type Display (line 43) | type Display = (typeof Display)[keyof typeof Display]; type Errata (line 53) | type Errata = (typeof Errata)[keyof typeof Errata]; type ExperimentalFeature (line 58) | type ExperimentalFeature = type Edge (line 72) | type Edge = (typeof Edge)[keyof typeof Edge]; type FlexDirection (line 80) | type FlexDirection = (typeof FlexDirection)[keyof typeof FlexDirection]; type Gutter (line 87) | type Gutter = (typeof Gutter)[keyof typeof Gutter]; type Justify (line 97) | type Justify = (typeof Justify)[keyof typeof Justify]; type MeasureMode (line 104) | type MeasureMode = (typeof MeasureMode)[keyof typeof MeasureMode]; type Overflow (line 111) | type Overflow = (typeof Overflow)[keyof typeof Overflow]; type PositionType (line 118) | type PositionType = (typeof PositionType)[keyof typeof PositionType]; type Unit (line 126) | type Unit = (typeof Unit)[keyof typeof Unit]; type Wrap (line 133) | type Wrap = (typeof Wrap)[keyof typeof Wrap]; FILE: source/vendor/ink/src/yoga-ts/index.ts type Value (line 82) | type Value = { constant UNDEFINED_VALUE (line 87) | const UNDEFINED_VALUE: Value = { unit: Unit.Undefined, value: NaN } constant AUTO_VALUE (line 88) | const AUTO_VALUE: Value = { unit: Unit.Auto, value: NaN } function pointValue (line 90) | function pointValue(v: number): Value { function percentValue (line 93) | function percentValue(v: number): Value { function resolveValue (line 97) | function resolveValue(v: Value, ownerSize: number): number { function isDefined (line 108) | function isDefined(n: number): boolean { function sameFloat (line 113) | function sameFloat(a: number, b: number): boolean { type Layout (line 120) | type Layout = { type Style (line 134) | type Style = { function defaultStyle (line 167) | function defaultStyle(): Style { constant EDGE_LEFT (line 199) | const EDGE_LEFT = 0 constant EDGE_TOP (line 200) | const EDGE_TOP = 1 constant EDGE_RIGHT (line 201) | const EDGE_RIGHT = 2 constant EDGE_BOTTOM (line 202) | const EDGE_BOTTOM = 3 function resolveEdge (line 204) | function resolveEdge( function resolveEdgeRaw (line 233) | function resolveEdgeRaw(edges: Value[], physicalEdge: number): Value { function isMarginAuto (line 250) | function isMarginAuto(edges: Value[], physicalEdge: number): boolean { function hasAnyAutoEdge (line 256) | function hasAnyAutoEdge(edges: Value[]): boolean { function hasAnyDefinedEdge (line 260) | function hasAnyDefinedEdge(edges: Value[]): boolean { function resolveEdges4Into (line 269) | function resolveEdges4Into( function isRow (line 312) | function isRow(dir: FlexDirection): boolean { function isReverse (line 315) | function isReverse(dir: FlexDirection): boolean { function crossAxis (line 318) | function crossAxis(dir: FlexDirection): FlexDirection { function leadingEdge (line 321) | function leadingEdge(dir: FlexDirection): number { function trailingEdge (line 333) | function trailingEdge(dir: FlexDirection): number { type MeasureFunction (line 349) | type MeasureFunction = ( type Size (line 356) | type Size = { width: number; height: number } type Config (line 361) | type Config = { function createConfig (line 374) | function createConfig(): Config { class Node (line 403) | class Node { method constructor (line 498) | constructor(config?: Config) { method insertChild (line 520) | insertChild(child: Node, index: number): void { method removeChild (line 525) | removeChild(child: Node): void { method getChild (line 533) | getChild(index: number): Node { method getChildCount (line 536) | getChildCount(): number { method getParent (line 539) | getParent(): Node | null { method free (line 545) | free(): void { method freeRecursive (line 553) | freeRecursive(): void { method reset (line 557) | reset(): void { method markDirty (line 577) | markDirty(): void { method isDirty (line 581) | isDirty(): boolean { method hasNewLayout (line 584) | hasNewLayout(): boolean { method markLayoutSeen (line 587) | markLayoutSeen(): void {} method setMeasureFunc (line 591) | setMeasureFunc(fn: MeasureFunction | null): void { method unsetMeasureFunc (line 595) | unsetMeasureFunc(): void { method getComputedLeft (line 602) | getComputedLeft(): number { method getComputedTop (line 605) | getComputedTop(): number { method getComputedWidth (line 608) | getComputedWidth(): number { method getComputedHeight (line 611) | getComputedHeight(): number { method getComputedRight (line 614) | getComputedRight(): number { method getComputedBottom (line 618) | getComputedBottom(): number { method getComputedLayout (line 622) | getComputedLayout(): { method getComputedBorder (line 639) | getComputedBorder(edge: Edge): number { method getComputedPadding (line 642) | getComputedPadding(edge: Edge): number { method getComputedMargin (line 645) | getComputedMargin(edge: Edge): number { method setWidth (line 651) | setWidth(v: number | 'auto' | string | undefined): void { method setWidthPercent (line 655) | setWidthPercent(v: number): void { method setWidthAuto (line 659) | setWidthAuto(): void { method setHeight (line 663) | setHeight(v: number | 'auto' | string | undefined): void { method setHeightPercent (line 667) | setHeightPercent(v: number): void { method setHeightAuto (line 671) | setHeightAuto(): void { method setMinWidth (line 675) | setMinWidth(v: number | string | undefined): void { method setMinWidthPercent (line 679) | setMinWidthPercent(v: number): void { method setMinHeight (line 683) | setMinHeight(v: number | string | undefined): void { method setMinHeightPercent (line 687) | setMinHeightPercent(v: number): void { method setMaxWidth (line 691) | setMaxWidth(v: number | string | undefined): void { method setMaxWidthPercent (line 695) | setMaxWidthPercent(v: number): void { method setMaxHeight (line 699) | setMaxHeight(v: number | string | undefined): void { method setMaxHeightPercent (line 703) | setMaxHeightPercent(v: number): void { method setFlexDirection (line 710) | setFlexDirection(dir: FlexDirection): void { method setFlexGrow (line 714) | setFlexGrow(v: number | undefined): void { method setFlexShrink (line 718) | setFlexShrink(v: number | undefined): void { method setFlex (line 722) | setFlex(v: number | undefined): void { method setFlexBasis (line 739) | setFlexBasis(v: number | 'auto' | string | undefined): void { method setFlexBasisPercent (line 743) | setFlexBasisPercent(v: number): void { method setFlexBasisAuto (line 747) | setFlexBasisAuto(): void { method setFlexWrap (line 751) | setFlexWrap(wrap: Wrap): void { method setAlignItems (line 758) | setAlignItems(a: Align): void { method setAlignSelf (line 762) | setAlignSelf(a: Align): void { method setAlignContent (line 766) | setAlignContent(a: Align): void { method setJustifyContent (line 770) | setJustifyContent(j: Justify): void { method setDisplay (line 777) | setDisplay(d: Display): void { method getDisplay (line 781) | getDisplay(): Display { method setPositionType (line 784) | setPositionType(t: PositionType): void { method setPosition (line 788) | setPosition(edge: Edge, v: number | string | undefined): void { method setPositionPercent (line 793) | setPositionPercent(edge: Edge, v: number): void { method setPositionAuto (line 798) | setPositionAuto(edge: Edge): void { method setOverflow (line 803) | setOverflow(o: Overflow): void { method setDirection (line 807) | setDirection(d: Direction): void { method setBoxSizing (line 811) | setBoxSizing(_: BoxSizing): void { method setMargin (line 817) | setMargin(edge: Edge, v: number | 'auto' | string | undefined): void { method setMarginPercent (line 826) | setMarginPercent(edge: Edge, v: number): void { method setMarginAuto (line 832) | setMarginAuto(edge: Edge): void { method setPadding (line 838) | setPadding(edge: Edge, v: number | string | undefined): void { method setPaddingPercent (line 843) | setPaddingPercent(edge: Edge, v: number): void { method setBorder (line 848) | setBorder(edge: Edge, v: number | undefined): void { method setGap (line 853) | setGap(gutter: Gutter, v: number | string | undefined): void { method setGapPercent (line 857) | setGapPercent(gutter: Gutter, v: number): void { method getFlexDirection (line 864) | getFlexDirection(): FlexDirection { method getJustifyContent (line 867) | getJustifyContent(): Justify { method getAlignItems (line 870) | getAlignItems(): Align { method getAlignSelf (line 873) | getAlignSelf(): Align { method getAlignContent (line 876) | getAlignContent(): Align { method getFlexGrow (line 879) | getFlexGrow(): number { method getFlexShrink (line 882) | getFlexShrink(): number { method getFlexBasis (line 885) | getFlexBasis(): Value { method getFlexWrap (line 888) | getFlexWrap(): Wrap { method getWidth (line 891) | getWidth(): Value { method getHeight (line 894) | getHeight(): Value { method getOverflow (line 897) | getOverflow(): Overflow { method getPositionType (line 900) | getPositionType(): PositionType { method getDirection (line 903) | getDirection(): Direction { method copyStyle (line 909) | copyStyle(_: Node): void {} method setDirtiedFunc (line 910) | setDirtiedFunc(_: unknown): void {} method unsetDirtiedFunc (line 911) | unsetDirtiedFunc(): void {} method setIsReferenceBaseline (line 912) | setIsReferenceBaseline(v: boolean): void { method isReferenceBaseline (line 916) | isReferenceBaseline(): boolean { method setAspectRatio (line 919) | setAspectRatio(_: number | undefined): void {} method getAspectRatio (line 920) | getAspectRatio(): number { method setAlwaysFormsContainingBlock (line 923) | setAlwaysFormsContainingBlock(_: boolean): void {} method calculateLayout (line 927) | calculateLayout( constant DEFAULT_CONFIG (line 966) | const DEFAULT_CONFIG = createConfig() constant CACHE_SLOTS (line 968) | const CACHE_SLOTS = 4 function cacheWrite (line 969) | function cacheWrite( function commitCacheOutputs (line 1022) | function commitCacheOutputs(node: Node, performLayout: boolean): void { function getYogaCounters (line 1044) | function getYogaCounters(): { function layoutNode (line 1058) | function layoutNode( function layoutAbsoluteChild (line 1904) | function layoutAbsoluteChild( function justifyAbsolute (line 2023) | function justifyAbsolute( function alignAbsolute (line 2039) | function alignAbsolute( function computeFlexBasis (line 2059) | function computeFlexBasis( function hasMeasureFuncInSubtree (line 2174) | function hasMeasureFuncInSubtree(node: Node): boolean { function resolveFlexibleLengths (line 2182) | function resolveFlexibleLengths( function isStretchAlign (line 2284) | function isStretchAlign(child: Node): boolean { function resolveChildAlign (line 2294) | function resolveChildAlign(parent: Node, child: Node): Align { function calculateBaseline (line 2304) | function calculateBaseline(node: Node): number { function isBaselineLayout (line 2325) | function isBaselineLayout(node: Node, flowChildren: Node[]): boolean { function childMarginForAxis (line 2334) | function childMarginForAxis( function resolveGap (line 2345) | function resolveGap(style: Style, gutter: Gutter, ownerSize: number): nu... function boundAxis (line 2352) | function boundAxis( function zeroLayoutRecursive (line 2386) | function zeroLayoutRecursive(node: Node): void { function collectLayoutChildren (line 2406) | function collectLayoutChildren(node: Node, flow: Node[], abs: Node[]): v... function roundLayout (line 2435) | function roundLayout( function isWholeNumber (line 2478) | function isWholeNumber(v: number): boolean { function roundValue (line 2483) | function roundValue( function parseDimension (line 2511) | function parseDimension(v: number | string | undefined): Value { function physicalEdge (line 2528) | function physicalEdge(edge: Edge): number { type Yoga (line 2548) | type Yoga = { constant YOGA_INSTANCE (line 2561) | const YOGA_INSTANCE: Yoga = { method destroy (line 2564) | destroy() {} method destroy (line 2570) | destroy() {} function loadYoga (line 2574) | function loadYoga(): Promise {