SYMBOL INDEX (2313 symbols across 208 files) FILE: esbuild.config.mjs constant OBSIDIAN_VAULT (line 21) | const OBSIDIAN_VAULT = process.env.OBSIDIAN_VAULT; constant OBSIDIAN_PLUGIN_PATH (line 22) | const OBSIDIAN_PLUGIN_PATH = OBSIDIAN_VAULT && existsSync(OBSIDIAN_VAULT) method setup (line 29) | setup(build) { FILE: scripts/build-css.mjs constant ROOT (line 12) | const ROOT = join(__dirname, '..'); constant STYLE_DIR (line 13) | const STYLE_DIR = join(ROOT, 'src', 'style'); constant OUTPUT (line 14) | const OUTPUT = join(ROOT, 'styles.css'); constant INDEX_FILE (line 15) | const INDEX_FILE = join(STYLE_DIR, 'index.css'); constant IMPORT_PATTERN (line 17) | const IMPORT_PATTERN = /^\s*@import\s+(?:url\()?['"]([^'"]+)['"]\)?\s*;/gm; function getModuleOrder (line 19) | function getModuleOrder() { function listCssFiles (line 36) | function listCssFiles(dir, baseDir = dir) { function build (line 57) | function build() { FILE: scripts/build.mjs constant ROOT (line 12) | const ROOT = join(__dirname, '..'); FILE: scripts/postinstall.mjs constant ROOT (line 16) | const ROOT = join(__dirname, '..'); FILE: src/core/agent/ClaudianService.ts type ApprovalCallbackOptions (line 87) | interface ApprovalCallbackOptions { type ApprovalCallback (line 93) | type ApprovalCallback = ( type AskUserQuestionCallback (line 100) | type AskUserQuestionCallback = ( type QueryOptions (line 105) | interface QueryOptions { type EnsureReadyOptions (line 118) | interface EnsureReadyOptions { class ClaudianService (line 129) | class ClaudianService { method constructor (line 176) | constructor(plugin: ClaudianPlugin, mcpManager: McpServerManager) { method onReadyStateChange (line 181) | onReadyStateChange(listener: (ready: boolean) => void): () => void { method notifyReadyStateChange (line 193) | private notifyReadyStateChange(): void { method setPendingResumeAt (line 208) | setPendingResumeAt(uuid: string | undefined): void { method applyForkState (line 213) | applyForkState(conv: Pick { method ensureReady (line 243) | async ensureReady(options?: EnsureReadyOptions): Promise { method startPersistentQuery (line 302) | private async startPersistentQuery( method attachPersistentQueryStdinErrorHandler (line 352) | private attachPersistentQueryStdinErrorHandler(query: Query): void { method isPipeError (line 371) | private isPipeError(error: unknown): boolean { method closePersistentQuery (line 380) | closePersistentQuery(_reason?: string, options?: ClosePersistentQueryO... method needsRestart (line 438) | private needsRestart(newConfig: PersistentQueryConfig): boolean { method buildPersistentQueryConfig (line 445) | private buildPersistentQueryConfig( method buildQueryOptionsContext (line 459) | private buildQueryOptionsContext(vaultPath: string, cliPath: string): ... method buildPersistentQueryOptions (line 477) | private buildPersistentQueryOptions( method buildHooks (line 509) | private buildHooks(externalContextPaths?: string[]) { method startResponseConsumer (line 550) | private startResponseConsumer(): void { method getTransformOptions (line 636) | private getTransformOptions(modelOverride?: string) { method routeMessage (line 651) | private async routeMessage(message: SDKMessage): Promise { method registerResponseHandler (line 753) | private registerResponseHandler(handler: ResponseHandler): void { method unregisterResponseHandler (line 757) | private unregisterResponseHandler(handlerId: string): void { method isPersistentQueryActive (line 764) | isPersistentQueryActive(): boolean { method query (line 775) | async *query( method buildHistoryRebuildRequest (line 930) | private buildHistoryRebuildRequest( method queryViaPersistent (line 949) | private async *queryViaPersistent( method buildSDKUserMessage (line 1095) | private buildSDKUserMessage(prompt: string, images?: ImageAttachment[]... method applyDynamicUpdates (line 1146) | private async applyDynamicUpdates( method isStreamTextEvent (line 1254) | private isStreamTextEvent(message: SDKMessage): boolean { method buildPromptWithImages (line 1267) | private buildPromptWithImages(prompt: string, images?: ImageAttachment... method queryViaSDK (line 1306) | private async *queryViaSDK( method cancel (line 1395) | cancel() { method resetSession (line 1415) | resetSession() { method getSessionId (line 1425) | getSessionId(): string | null { method consumeSessionInvalidation (line 1430) | consumeSessionInvalidation(): boolean { method isReady (line 1438) | isReady(): boolean { method getSupportedCommands (line 1446) | async getSupportedCommands(): Promise { method setSessionId (line 1475) | setSessionId(id: string | null, externalContextPaths?: string[]): void { method cleanup (line 1501) | cleanup() { method rewindFiles (line 1510) | async rewindFiles(sdkUserUuid: string, dryRun?: boolean): Promise void) | null) { method setAskUserQuestionCallback (line 1698) | setAskUserQuestionCallback(callback: AskUserQuestionCallback | null) { method setExitPlanModeCallback (line 1702) | setExitPlanModeCallback(callback: ExitPlanModeCallback | null): void { method setPermissionModeSyncCallback (line 1706) | setPermissionModeSyncCallback(callback: ((sdkMode: string) => void) | ... method setSubagentHookProvider (line 1710) | setSubagentHookProvider(getState: () => SubagentHookState): void { method setAutoTurnCallback (line 1714) | setAutoTurnCallback(callback: ((chunks: StreamChunk[]) => void) | null... method createApprovalCallback (line 1718) | private createApprovalCallback(): CanUseTool { method mapToSDKPermissionMode (line 1818) | private mapToSDKPermissionMode(mode: PermissionMode): SDKPermissionMode { FILE: src/core/agent/MessageChannel.ts class MessageChannel (line 25) | class MessageChannel implements AsyncIterable { method constructor (line 33) | constructor(onWarning: (message: string) => void = () => {}) { method setSessionId (line 37) | setSessionId(sessionId: string): void { method isTurnActive (line 41) | isTurnActive(): boolean { method isClosed (line 45) | isClosed(): boolean { method enqueue (line 54) | enqueue(message: SDKUserMessage): void { method onTurnComplete (line 124) | onTurnComplete(): void { method close (line 136) | close(): void { method reset (line 146) | reset(): void { method getQueueLength (line 153) | getQueueLength(): number { method messageHasAttachments (line 179) | private messageHasAttachments(message: SDKUserMessage): boolean { method extractTextContent (line 185) | private extractTextContent(message: SDKUserMessage): string { method pendingToMessage (line 194) | private pendingToMessage(pending: PendingMessage): SDKUserMessage { method [Symbol.asyncIterator] (line 157) | [Symbol.asyncIterator](): AsyncIterator { FILE: src/core/agent/QueryOptionsBuilder.ts type QueryOptionsContext (line 35) | interface QueryOptionsContext { type PersistentQueryContext (line 55) | interface PersistentQueryContext extends QueryOptionsContext { type ColdStartQueryContext (line 77) | interface ColdStartQueryContext extends QueryOptionsContext { class QueryOptionsBuilder (line 101) | class QueryOptionsBuilder { method needsRestart (line 105) | static needsRestart( method buildPersistentQueryConfig (line 140) | static buildPersistentQueryConfig( method buildPersistentQueryOptions (line 182) | static buildPersistentQueryOptions(ctx: PersistentQueryContext): Optio... method buildColdStartQueryOptions (line 245) | static buildColdStartQueryOptions(ctx: ColdStartQueryContext): Options { method applyPermissionMode (line 319) | private static applyPermissionMode( method applyExtraArgs (line 339) | private static applyExtraArgs(options: Options, settings: ClaudianSett... method applyThinking (line 345) | private static applyThinking( method pathsChanged (line 361) | private static pathsChanged(a?: string[], b?: string[]): boolean { FILE: src/core/agent/SessionManager.ts class SessionManager (line 25) | class SessionManager { method getSessionId (line 35) | getSessionId(): string | null { method setSessionId (line 39) | setSessionId(id: string | null, defaultModel?: ClaudeModel): void { method wasInterrupted (line 48) | wasInterrupted(): boolean { method markInterrupted (line 52) | markInterrupted(): void { method clearInterrupted (line 56) | clearInterrupted(): void { method setPendingModel (line 60) | setPendingModel(model: ClaudeModel): void { method clearPendingModel (line 64) | clearPendingModel(): void { method captureSession (line 72) | captureSession(sessionId: string): void { method needsHistoryRebuild (line 87) | needsHistoryRebuild(): boolean { method clearHistoryRebuild (line 91) | clearHistoryRebuild(): void { method invalidateSession (line 95) | invalidateSession(): void { method consumeInvalidation (line 102) | consumeInvalidation(): boolean { method reset (line 108) | reset(): void { FILE: src/core/agent/customSpawn.ts function createCustomSpawnFunction (line 14) | function createCustomSpawnFunction( FILE: src/core/agent/types.ts type TextContentBlock (line 10) | interface TextContentBlock { type ImageContentBlock (line 15) | interface ImageContentBlock { type UserContentBlock (line 24) | type UserContentBlock = TextContentBlock | ImageContentBlock; constant MESSAGE_CHANNEL_CONFIG (line 27) | const MESSAGE_CHANNEL_CONFIG = { type PendingTextMessage (line 33) | interface PendingTextMessage { type PendingAttachmentMessage (line 39) | interface PendingAttachmentMessage { type PendingMessage (line 44) | type PendingMessage = PendingTextMessage | PendingAttachmentMessage; type ClosePersistentQueryOptions (line 46) | interface ClosePersistentQueryOptions { type ResponseHandler (line 64) | interface ResponseHandler { type ResponseHandlerOptions (line 76) | interface ResponseHandlerOptions { function createResponseHandler (line 83) | function createResponseHandler(options: ResponseHandlerOptions): Respons... type PersistentQueryConfig (line 101) | interface PersistentQueryConfig { type SessionState (line 117) | interface SessionState { constant UNSUPPORTED_SDK_TOOLS (line 128) | const UNSUPPORTED_SDK_TOOLS = [] as const; constant DISABLED_BUILTIN_SUBAGENTS (line 131) | const DISABLED_BUILTIN_SUBAGENTS = [ function isTurnCompleteMessage (line 135) | function isTurnCompleteMessage(message: SDKMessage): boolean { function computeSystemPromptKey (line 139) | function computeSystemPromptKey(settings: SystemPromptSettings): string { FILE: src/core/agents/AgentManager.ts constant GLOBAL_AGENTS_DIR (line 17) | const GLOBAL_AGENTS_DIR = path.join(os.homedir(), '.claude', 'agents'); constant VAULT_AGENTS_DIR (line 18) | const VAULT_AGENTS_DIR = '.claude/agents'; constant PLUGIN_AGENTS_DIR (line 19) | const PLUGIN_AGENTS_DIR = 'agents'; constant FALLBACK_BUILTIN_AGENT_NAMES (line 22) | const FALLBACK_BUILTIN_AGENT_NAMES = ['Explore', 'Plan', 'Bash', 'genera... constant BUILTIN_AGENT_DESCRIPTIONS (line 24) | const BUILTIN_AGENT_DESCRIPTIONS: Record = { function makeBuiltinAgent (line 31) | function makeBuiltinAgent(name: string): AgentDefinition { function normalizePluginName (line 41) | function normalizePluginName(name: string): string { class AgentManager (line 45) | class AgentManager { method constructor (line 51) | constructor(vaultPath: string, pluginManager: PluginManager) { method setBuiltinAgentNames (line 57) | setBuiltinAgentNames(names: string[]): void { method loadAgents (line 70) | async loadAgents(): Promise { method getAvailableAgents (line 82) | getAvailableAgents(): AgentDefinition[] { method getAgentById (line 86) | getAgentById(id: string): AgentDefinition | undefined { method searchAgents (line 91) | searchAgents(query: string): AgentDefinition[] { method loadPluginAgents (line 100) | private async loadPluginAgents(): Promise { method loadVaultAgents (line 114) | private async loadVaultAgents(): Promise { method loadGlobalAgents (line 118) | private async loadGlobalAgents(): Promise { method loadAgentsFromDirectory (line 122) | private async loadAgentsFromDirectory( method listMarkdownFiles (line 134) | private listMarkdownFiles(dir: string): string[] { method parsePluginAgentFromFile (line 152) | private async parsePluginAgentFromFile( method parseAgentFromFile (line 179) | private async parseAgentFromFile( FILE: src/core/agents/AgentStorage.ts constant KNOWN_AGENT_KEYS (line 4) | const KNOWN_AGENT_KEYS = new Set([ function parseAgentFile (line 9) | function parseAgentFile(content: string): { frontmatter: AgentFrontmatte... function isStringOrArray (line 51) | function isStringOrArray(value: unknown): value is string | string[] { function parseToolsList (line 55) | function parseToolsList(tools?: string | string[]): string[] | undefined { function parsePermissionMode (line 59) | function parsePermissionMode(mode?: string): AgentPermissionMode | undef... constant VALID_MODELS (line 68) | const VALID_MODELS = ['sonnet', 'opus', 'haiku', 'inherit'] as const; function parseModel (line 70) | function parseModel(model?: string): 'sonnet' | 'opus' | 'haiku' | 'inhe... function buildAgentFromFrontmatter (line 79) | function buildAgentFromFrontmatter( FILE: src/core/commands/builtInCommands.ts type BuiltInCommandAction (line 8) | type BuiltInCommandAction = 'clear' | 'add-dir' | 'resume' | 'fork'; type BuiltInCommand (line 10) | interface BuiltInCommand { type BuiltInCommandResult (line 21) | interface BuiltInCommandResult { constant BUILT_IN_COMMANDS (line 27) | const BUILT_IN_COMMANDS: BuiltInCommand[] = [ function detectBuiltInCommand (line 69) | function detectBuiltInCommand(input: string): BuiltInCommandResult | null { function getBuiltInCommandsForDropdown (line 90) | function getBuiltInCommandsForDropdown(): Array<{ FILE: src/core/hooks/SecurityHooks.ts type BlocklistContext (line 18) | interface BlocklistContext { type VaultRestrictionContext (line 23) | interface VaultRestrictionContext { function createBlocklistHook (line 30) | function createBlocklistHook(getContext: () => BlocklistContext): HookCa... function createVaultRestrictionHook (line 64) | function createVaultRestrictionHook(context: VaultRestrictionContext): H... FILE: src/core/hooks/SubagentHooks.ts type SubagentHookState (line 3) | interface SubagentHookState { constant STOP_BLOCK_REASON (line 7) | const STOP_BLOCK_REASON = 'Background subagents are still running. Use `... function createStopSubagentHook (line 9) | function createStopSubagentHook( FILE: src/core/mcp/McpServerManager.ts type McpStorageAdapter (line 11) | interface McpStorageAdapter { class McpServerManager (line 15) | class McpServerManager { method constructor (line 19) | constructor(storage: McpStorageAdapter) { method loadServers (line 23) | async loadServers(): Promise { method getServers (line 27) | getServers(): ClaudianMcpServer[] { method getEnabledCount (line 31) | getEnabledCount(): number { method getActiveServers (line 44) | getActiveServers(mentionedNames: Set): Record): string[] { method getAllDisallowedMcpTools (line 80) | getAllDisallowedMcpTools(): string[] { method collectDisallowedTools (line 84) | private collectDisallowedTools(filter?: (server: ClaudianMcpServer) =>... method hasServers (line 102) | hasServers(): boolean { method getContextSavingServers (line 106) | getContextSavingServers(): ClaudianMcpServer[] { method getContextSavingNames (line 110) | private getContextSavingNames(): Set { method extractMentions (line 115) | extractMentions(text: string): Set { method transformMentions (line 122) | transformMentions(text: string): string { FILE: src/core/mcp/McpTester.ts type McpTool (line 13) | interface McpTool { type McpTestResult (line 19) | interface McpTestResult { type UrlServerConfig (line 27) | interface UrlServerConfig { function createNodeFetch (line 36) | function createNodeFetch(): (input: string | URL | Request, init?: Reque... type MinimalFetchResponse (line 98) | interface MinimalFetchResponse { function createFetchResponse (line 108) | function createFetchResponse(res: http.IncomingMessage): MinimalFetchRes... function getRequestUrl (line 179) | function getRequestUrl(input: string | URL | Request): URL { function mergeHeaders (line 189) | function mergeHeaders(input: string | URL | Request, init?: RequestInit)... function getRequestBody (line 200) | async function getRequestBody(body: BodyInit | null | undefined): Promis... function testMcpServer (line 211) | async function testMcpServer(server: ClaudianMcpServer): Promise(filePath: string): T | null { function normalizePathForComparison (line 36) | function normalizePathForComparison(p: string): string { function selectInstalledPluginEntry (line 49) | function selectInstalledPluginEntry( function extractPluginName (line 64) | function extractPluginName(pluginId: string): string { class PluginManager (line 72) | class PluginManager { method constructor (line 77) | constructor(vaultPath: string, ccSettingsStorage: CCSettingsStorage) { method loadPlugins (line 82) | async loadPlugins(): Promise { method loadProjectSettings (line 127) | private async loadProjectSettings(): Promise { method getPlugins (line 132) | getPlugins(): ClaudianPlugin[] { method hasPlugins (line 136) | hasPlugins(): boolean { method hasEnabledPlugins (line 140) | hasEnabledPlugins(): boolean { method getEnabledCount (line 144) | getEnabledCount(): number { method getPluginsKey (line 149) | getPluginsKey(): string { method togglePlugin (line 162) | async togglePlugin(pluginId: string): Promise { method enablePlugin (line 174) | async enablePlugin(pluginId: string): Promise { method disablePlugin (line 184) | async disablePlugin(pluginId: string): Promise { FILE: src/core/prompts/inlineEdit.ts function getInlineEditSystemPrompt (line 9) | function getInlineEditSystemPrompt(allowExternalAccess: boolean = false)... FILE: src/core/prompts/instructionRefine.ts function buildRefineSystemPrompt (line 7) | function buildRefineSystemPrompt(existingInstructions: string): string { FILE: src/core/prompts/mainAgent.ts type SystemPromptSettings (line 10) | interface SystemPromptSettings { function getPathRules (line 19) | function getPathRules(vaultPath?: string, allowExternalAccess: boolean =... function getSubagentPathRules (line 61) | function getSubagentPathRules(allowExternalAccess: boolean = false): str... function getBaseSystemPrompt (line 75) | function getBaseSystemPrompt( function getImageInstructions (line 276) | function getImageInstructions(mediaFolder: string): string { function getExportInstructions (line 308) | function getExportInstructions( function buildSystemPrompt (line 344) | function buildSystemPrompt(settings: SystemPromptSettings = {}): string { FILE: src/core/prompts/titleGeneration.ts constant TITLE_GENERATION_SYSTEM_PROMPT (line 7) | const TITLE_GENERATION_SYSTEM_PROMPT = `You are a specialist in summariz... FILE: src/core/sdk/toolResultContent.ts type ToolResultContentOptions (line 1) | interface ToolResultContentOptions { function extractToolResultContent (line 9) | function extractToolResultContent( function isTextBlock (line 24) | function isTextBlock(block: unknown): block is { type: 'text'; text: str... FILE: src/core/sdk/transformSDKMessage.ts type TransformOptions (line 9) | interface TransformOptions { type MessageUsage (line 16) | interface MessageUsage { type ContextWindowEntry (line 22) | interface ContextWindowEntry { function isResultError (line 27) | function isResultError(message: { type: 'result'; subtype: string }): me... function getBuiltInModelSignature (line 31) | function getBuiltInModelSignature(model: string): { family: 'haiku' | 's... function getModelUsageSignature (line 45) | function getModelUsageSignature(model: string): { family: 'haiku' | 'son... function selectContextWindowEntry (line 59) | function selectContextWindowEntry( FILE: src/core/sdk/typeGuards.ts function isSessionInitEvent (line 4) | function isSessionInitEvent(event: TransformEvent): event is SessionInit... function isStreamChunk (line 8) | function isStreamChunk(event: TransformEvent): event is StreamChunk { FILE: src/core/sdk/types.ts type SessionInitEvent (line 3) | interface SessionInitEvent { type TransformEvent (line 10) | type TransformEvent = StreamChunk | SessionInitEvent; FILE: src/core/security/ApprovalManager.ts function getActionPattern (line 15) | function getActionPattern(toolName: string, input: Record', '>>', '1>', '1>>', '2>', '2>>'... constant INPUT_REDIRECT_OPS (line 91) | const INPUT_REDIRECT_OPS = new Set(['<', '<<', '0<', '0<<']); constant OUTPUT_OPTION_FLAGS (line 92) | const OUTPUT_OPTION_FLAGS = new Set(['-o', '--output', '--out', '--outfi... function isBashOutputRedirectOperator (line 94) | function isBashOutputRedirectOperator(token: string): boolean { function isBashInputRedirectOperator (line 98) | function isBashInputRedirectOperator(token: string): boolean { function isBashOutputOptionExpectingValue (line 102) | function isBashOutputOptionExpectingValue(token: string): boolean { function cleanPathToken (line 107) | function cleanPathToken(raw: string): string | null { constant QUOTE_CHARS (line 137) | const QUOTE_CHARS = new Set(["'", '"', '`']); function stripQuoteChars (line 139) | function stripQuoteChars(token: string): string { function isPathLikeToken (line 158) | function isPathLikeToken(token: string): boolean { function checkBashPathAccess (line 191) | function checkBashPathAccess( function findBashPathViolationInSegment (line 220) | function findBashPathViolationInSegment( function extractSubshellCommands (line 339) | function extractSubshellCommands(command: string): string[] { function findBashCommandPathViolation (line 382) | function findBashCommandPathViolation( FILE: src/core/security/BlocklistChecker.ts constant MAX_PATTERN_LENGTH (line 8) | const MAX_PATTERN_LENGTH = 500; function isCommandBlocked (line 10) | function isCommandBlocked( FILE: src/core/storage/AgentVaultStorage.ts constant AGENTS_PATH (line 6) | const AGENTS_PATH = '.claude/agents'; class AgentVaultStorage (line 8) | class AgentVaultStorage { method constructor (line 9) | constructor(private adapter: VaultFileAdapter) {} method loadAll (line 11) | async loadAll(): Promise { method load (line 39) | async load(agent: AgentDefinition): Promise { method save (line 59) | async save(agent: AgentDefinition): Promise { method delete (line 63) | async delete(agent: AgentDefinition): Promise { method resolvePath (line 67) | private resolvePath(agent: AgentDefinition): string { method isFileNotFoundError (line 80) | private isFileNotFoundError(error: unknown): boolean { FILE: src/core/storage/CCSettingsStorage.ts constant CC_SETTINGS_PATH (line 30) | const CC_SETTINGS_PATH = '.claude/settings.json'; constant CC_SETTINGS_SCHEMA (line 33) | const CC_SETTINGS_SCHEMA = 'https://json.schemastore.org/claude-code-set... function hasClaudianOnlyFields (line 35) | function hasClaudianOnlyFields(data: Record): boolean { function isLegacyPermissionsFormat (line 43) | function isLegacyPermissionsFormat(data: unknown): data is { permissions... function normalizeRuleList (line 60) | function normalizeRuleList(value: unknown): PermissionRule[] { function normalizePermissions (line 65) | function normalizePermissions(permissions: unknown): CCPermissions { class CCSettingsStorage (line 89) | class CCSettingsStorage { method constructor (line 90) | constructor(private adapter: VaultFileAdapter) { } method load (line 97) | async load(): Promise { method save (line 131) | async save(settings: CCSettings, stripClaudianFields: boolean = false)... method exists (line 174) | async exists(): Promise { method getPermissions (line 178) | async getPermissions(): Promise { method updatePermissions (line 183) | async updatePermissions(permissions: CCPermissions): Promise { method addAllowRule (line 189) | async addAllowRule(rule: PermissionRule): Promise { method addDenyRule (line 197) | async addDenyRule(rule: PermissionRule): Promise { method addAskRule (line 205) | async addAskRule(rule: PermissionRule): Promise { method removeRule (line 216) | async removeRule(rule: PermissionRule): Promise { method getEnabledPlugins (line 228) | async getEnabledPlugins(): Promise> { method setPluginEnabled (line 240) | async setPluginEnabled(pluginId: string, enabled: boolean): Promise { method isPluginDisabled (line 266) | async isPluginDisabled(pluginId: string): Promise { FILE: src/core/storage/ClaudianSettingsStorage.ts constant CLAUDIAN_SETTINGS_PATH (line 23) | const CLAUDIAN_SETTINGS_PATH = '.claude/claudian-settings.json'; type SeparatelyLoadedFields (line 26) | type SeparatelyLoadedFields = 'slashCommands'; type StoredClaudianSettings (line 29) | type StoredClaudianSettings = Omit { method save (line 113) | async save(settings: StoredClaudianSettings): Promise { method exists (line 118) | async exists(): Promise { method update (line 122) | async update(updates: Partial): Promise { method getLegacyActiveConversationId (line 131) | async getLegacyActiveConversationId(): Promise { method clearLegacyActiveConversationId (line 150) | async clearLegacyActiveConversationId(): Promise { method setLastModel (line 167) | async setLastModel(model: ClaudeModel, isCustom: boolean): Promise { method getDefaults (line 182) | private getDefaults(): StoredClaudianSettings { FILE: src/core/storage/McpStorage.ts constant MCP_CONFIG_PATH (line 30) | const MCP_CONFIG_PATH = '.claude/mcp.json'; class McpStorage (line 32) | class McpStorage { method constructor (line 33) | constructor(private adapter: VaultFileAdapter) {} method load (line 35) | async load(): Promise { method save (line 79) | async save(servers: ClaudianMcpServer[]): Promise { method exists (line 156) | async exists(): Promise { method parseClipboardConfig (line 168) | static parseClipboardConfig(json: string): ParsedMcpConfig { method tryParseClipboardConfig (line 242) | static tryParseClipboardConfig(text: string): ParsedMcpConfig | null { FILE: src/core/storage/SessionStorage.ts constant SESSIONS_PATH (line 27) | const SESSIONS_PATH = '.claude/sessions'; type SessionMetaRecord (line 30) | interface SessionMetaRecord { type SessionMessageRecord (line 44) | interface SessionMessageRecord { type SessionRecord (line 50) | type SessionRecord = SessionMetaRecord | SessionMessageRecord; class SessionStorage (line 52) | class SessionStorage { method constructor (line 53) | constructor(private adapter: VaultFileAdapter) { } method loadConversation (line 55) | async loadConversation(id: string): Promise { method saveConversation (line 70) | async saveConversation(conversation: Conversation): Promise { method deleteConversation (line 76) | async deleteConversation(id: string): Promise { method listConversations (line 82) | async listConversations(): Promise { method loadAllConversations (line 110) | async loadAllConversations(): Promise<{ conversations: Conversation[];... method hasSessions (line 141) | async hasSessions(): Promise { method getFilePath (line 146) | getFilePath(id: string): string { method loadMetaOnly (line 150) | private async loadMetaOnly(filePath: string): Promise { method getMetadataPath (line 277) | getMetadataPath(id: string): string { method saveMetadata (line 281) | async saveMetadata(metadata: SessionMetadata): Promise { method loadMetadata (line 287) | async loadMetadata(id: string): Promise { method deleteMetadata (line 302) | async deleteMetadata(id: string): Promise { method listNativeMetadata (line 308) | async listNativeMetadata(): Promise { method listAllConversations (line 349) | async listAllConversations(): Promise { method toSessionMetadata (line 383) | toSessionMetadata(conversation: Conversation): SessionMetadata { method extractSubagentData (line 411) | private extractSubagentData(messages: ChatMessage[]): Record { method save (line 42) | async save(skill: SlashCommand): Promise { method delete (line 51) | async delete(skillId: string): Promise { FILE: src/core/storage/SlashCommandStorage.ts constant COMMANDS_PATH (line 5) | const COMMANDS_PATH = '.claude/commands'; class SlashCommandStorage (line 7) | class SlashCommandStorage { method constructor (line 8) | constructor(private adapter: VaultFileAdapter) {} method loadAll (line 10) | async loadAll(): Promise { method loadFromFile (line 35) | private async loadFromFile(filePath: string): Promise { method delete (line 45) | async delete(commandId: string): Promise { method getFilePath (line 59) | getFilePath(command: SlashCommand): string { method parseFile (line 64) | private parseFile(content: string, filePath: string): SlashCommand { method filePathToId (line 72) | private filePathToId(filePath: string): string { method filePathToName (line 88) | private filePathToName(filePath: string): string { FILE: src/core/storage/StorageService.ts constant CLAUDE_PATH (line 53) | const CLAUDE_PATH = '.claude'; constant SETTINGS_PATH (line 56) | const SETTINGS_PATH = CC_SETTINGS_PATH; type CombinedSettings (line 62) | interface CombinedSettings { type LegacySettingsJson (line 70) | interface LegacySettingsJson { type LegacyDataJson (line 100) | interface LegacyDataJson { class StorageService (line 114) | class StorageService { method constructor (line 127) | constructor(plugin: Plugin) { method initialize (line 140) | async initialize(): Promise { method runMigrations (line 150) | private async runMigrations(): Promise { method hasStateToMigrate (line 183) | private hasStateToMigrate(data: LegacyDataJson): boolean { method hasLegacyContentToMigrate (line 191) | private hasLegacyContentToMigrate(data: LegacyDataJson): boolean { method migrateFromOldSettingsJson (line 207) | private async migrateFromOldSettingsJson(): Promise { method migrateFromDataJson (line 291) | private async migrateFromDataJson(dataJson: LegacyDataJson): Promise { method loadDataJson (line 364) | private async loadDataJson(): Promise { method ensureDirectories (line 374) | async ensureDirectories(): Promise { method loadAllSlashCommands (line 382) | async loadAllSlashCommands(): Promise { method getAdapter (line 388) | getAdapter(): VaultFileAdapter { method getPermissions (line 392) | async getPermissions(): Promise { method updatePermissions (line 396) | async updatePermissions(permissions: CCPermissions): Promise { method addAllowRule (line 400) | async addAllowRule(rule: string): Promise { method addDenyRule (line 404) | async addDenyRule(rule: string): Promise { method removePermissionRule (line 411) | async removePermissionRule(rule: string): Promise { method updateClaudianSettings (line 415) | async updateClaudianSettings(updates: Partial)... method saveClaudianSettings (line 419) | async saveClaudianSettings(settings: StoredClaudianSettings): Promise<... method loadClaudianSettings (line 423) | async loadClaudianSettings(): Promise { method getLegacyActiveConversationId (line 430) | async getLegacyActiveConversationId(): Promise { method clearLegacyActiveConversationId (line 447) | async clearLegacyActiveConversationId(): Promise { method getTabManagerState (line 463) | async getTabManagerState(): Promise { method validateTabManagerState (line 479) | private validateTabManagerState(data: unknown): TabManagerPersistedSta... method setTabManagerState (line 515) | async setTabManagerState(state: TabManagerPersistedState): Promise { method read (line 19) | async read(path: string): Promise { method write (line 23) | async write(path: string, content: string): Promise { method append (line 28) | async append(path: string, content: string): Promise { method delete (line 43) | async delete(path: string): Promise { method deleteFolder (line 50) | async deleteFolder(path: string): Promise { method listFiles (line 60) | async listFiles(folder: string): Promise { method listFolders (line 69) | async listFolders(folder: string): Promise { method listFilesRecursive (line 78) | async listFilesRecursive(folder: string): Promise { method ensureParentFolder (line 96) | private async ensureParentFolder(filePath: string): Promise { method ensureFolder (line 104) | async ensureFolder(path: string): Promise { method rename (line 119) | async rename(oldPath: string, newPath: string): Promise { method stat (line 123) | async stat(path: string): Promise<{ mtime: number; size: number } | nu... FILE: src/core/storage/migrationConstants.ts constant CLAUDIAN_ONLY_FIELDS (line 14) | const CLAUDIAN_ONLY_FIELDS = new Set([ constant MIGRATABLE_CLAUDIAN_FIELDS (line 61) | const MIGRATABLE_CLAUDIAN_FIELDS = new Set([ constant DEPRECATED_FIELDS (line 90) | const DEPRECATED_FIELDS = new Set([ function convertEnvObjectToString (line 103) | function convertEnvObjectToString(env: Record | undefine... function mergeEnvironmentVariables (line 118) | function mergeEnvironmentVariables(existing: string, additional: string)... FILE: src/core/tools/todo.ts type TodoItem (line 9) | interface TodoItem { function isValidTodoItem (line 17) | function isValidTodoItem(item: unknown): item is TodoItem { function parseTodoInput (line 30) | function parseTodoInput(input: Record): TodoItem[] | nu... function extractLastTodosFromMessages (line 49) | function extractLastTodosFromMessages( FILE: src/core/tools/toolIcons.ts constant TOOL_ICONS (line 28) | const TOOL_ICONS: Record = { constant MCP_ICON_MARKER (line 56) | const MCP_ICON_MARKER = '__mcp_icon__'; function getToolIcon (line 58) | function getToolIcon(toolName: string): string { FILE: src/core/tools/toolInput.ts function extractResolvedAnswers (line 18) | function extractResolvedAnswers(toolUseResult: unknown): AskUserAnswers ... function normalizeAnswerValue (line 24) | function normalizeAnswerValue(value: unknown): string | undefined { function normalizeAnswersObject (line 37) | function normalizeAnswersObject(value: unknown): AskUserAnswers | undefi... function parseAnswersFromJsonObject (line 51) | function parseAnswersFromJsonObject(resultText: string): AskUserAnswers ... function parseAnswersFromQuotedPairs (line 64) | function parseAnswersFromQuotedPairs(resultText: string): AskUserAnswers... function extractResolvedAnswersFromResultText (line 81) | function extractResolvedAnswersFromResultText(result: unknown): AskUserA... function getPathFromToolInput (line 89) | function getPathFromToolInput( FILE: src/core/tools/toolNames.ts constant TOOL_AGENT_OUTPUT (line 1) | const TOOL_AGENT_OUTPUT = 'TaskOutput' as const; constant TOOL_ASK_USER_QUESTION (line 2) | const TOOL_ASK_USER_QUESTION = 'AskUserQuestion' as const; constant TOOL_BASH (line 3) | const TOOL_BASH = 'Bash' as const; constant TOOL_BASH_OUTPUT (line 4) | const TOOL_BASH_OUTPUT = 'BashOutput' as const; constant TOOL_EDIT (line 5) | const TOOL_EDIT = 'Edit' as const; constant TOOL_GLOB (line 6) | const TOOL_GLOB = 'Glob' as const; constant TOOL_GREP (line 7) | const TOOL_GREP = 'Grep' as const; constant TOOL_KILL_SHELL (line 8) | const TOOL_KILL_SHELL = 'KillShell' as const; constant TOOL_LS (line 9) | const TOOL_LS = 'LS' as const; constant TOOL_LIST_MCP_RESOURCES (line 10) | const TOOL_LIST_MCP_RESOURCES = 'ListMcpResources' as const; constant TOOL_MCP (line 11) | const TOOL_MCP = 'Mcp' as const; constant TOOL_NOTEBOOK_EDIT (line 12) | const TOOL_NOTEBOOK_EDIT = 'NotebookEdit' as const; constant TOOL_READ (line 13) | const TOOL_READ = 'Read' as const; constant TOOL_READ_MCP_RESOURCE (line 14) | const TOOL_READ_MCP_RESOURCE = 'ReadMcpResource' as const; constant TOOL_SKILL (line 15) | const TOOL_SKILL = 'Skill' as const; constant TOOL_SUBAGENT (line 16) | const TOOL_SUBAGENT = 'Agent' as const; constant TOOL_SUBAGENT_LEGACY (line 17) | const TOOL_SUBAGENT_LEGACY = 'Task' as const; constant TOOL_TASK (line 19) | const TOOL_TASK = TOOL_SUBAGENT; constant TOOL_TODO_WRITE (line 20) | const TOOL_TODO_WRITE = 'TodoWrite' as const; constant TOOL_TOOL_SEARCH (line 21) | const TOOL_TOOL_SEARCH = 'ToolSearch' as const; constant TOOL_WEB_FETCH (line 22) | const TOOL_WEB_FETCH = 'WebFetch' as const; constant TOOL_WEB_SEARCH (line 23) | const TOOL_WEB_SEARCH = 'WebSearch' as const; constant TOOL_WRITE (line 24) | const TOOL_WRITE = 'Write' as const; constant TOOL_ENTER_PLAN_MODE (line 26) | const TOOL_ENTER_PLAN_MODE = 'EnterPlanMode' as const; constant TOOL_EXIT_PLAN_MODE (line 27) | const TOOL_EXIT_PLAN_MODE = 'ExitPlanMode' as const; constant TOOLS_SKIP_BLOCKED_DETECTION (line 31) | const TOOLS_SKIP_BLOCKED_DETECTION = [ constant SUBAGENT_TOOL_NAMES (line 37) | const SUBAGENT_TOOL_NAMES = [ type SubagentToolName (line 41) | type SubagentToolName = (typeof SUBAGENT_TOOL_NAMES)[number]; function skipsBlockedDetection (line 43) | function skipsBlockedDetection(name: string): boolean { function isSubagentToolName (line 47) | function isSubagentToolName(name: string): name is SubagentToolName { constant EDIT_TOOLS (line 51) | const EDIT_TOOLS = [TOOL_WRITE, TOOL_EDIT, TOOL_NOTEBOOK_EDIT] as const; type EditToolName (line 52) | type EditToolName = (typeof EDIT_TOOLS)[number]; constant WRITE_EDIT_TOOLS (line 54) | const WRITE_EDIT_TOOLS = [TOOL_WRITE, TOOL_EDIT] as const; type WriteEditToolName (line 55) | type WriteEditToolName = (typeof WRITE_EDIT_TOOLS)[number]; constant BASH_TOOLS (line 57) | const BASH_TOOLS = [TOOL_BASH, TOOL_BASH_OUTPUT, TOOL_KILL_SHELL] as const; type BashToolName (line 58) | type BashToolName = (typeof BASH_TOOLS)[number]; constant FILE_TOOLS (line 60) | const FILE_TOOLS = [ type FileToolName (line 70) | type FileToolName = (typeof FILE_TOOLS)[number]; constant MCP_TOOLS (line 72) | const MCP_TOOLS = [ type McpToolName (line 77) | type McpToolName = (typeof MCP_TOOLS)[number]; constant READ_ONLY_TOOLS (line 79) | const READ_ONLY_TOOLS = [ type ReadOnlyToolName (line 87) | type ReadOnlyToolName = (typeof READ_ONLY_TOOLS)[number]; function isEditTool (line 89) | function isEditTool(toolName: string): toolName is EditToolName { function isWriteEditTool (line 93) | function isWriteEditTool(toolName: string): toolName is WriteEditToolName { function isFileTool (line 97) | function isFileTool(toolName: string): toolName is FileToolName { function isBashTool (line 101) | function isBashTool(toolName: string): toolName is BashToolName { function isMcpTool (line 105) | function isMcpTool(toolName: string): toolName is McpToolName { function isReadOnlyTool (line 109) | function isReadOnlyTool(toolName: string): toolName is ReadOnlyToolName { FILE: src/core/types/agent.ts constant AGENT_PERMISSION_MODES (line 1) | const AGENT_PERMISSION_MODES = ['default', 'acceptEdits', 'dontAsk', 'by... type AgentPermissionMode (line 2) | type AgentPermissionMode = typeof AGENT_PERMISSION_MODES[number]; type AgentDefinition (line 8) | interface AgentDefinition { type AgentFrontmatter (line 49) | interface AgentFrontmatter { FILE: src/core/types/chat.ts type ForkSource (line 9) | interface ForkSource { constant VIEW_TYPE_CLAUDIAN (line 15) | const VIEW_TYPE_CLAUDIAN = 'claudian-view'; type ImageMediaType (line 18) | type ImageMediaType = 'image/jpeg' | 'image/png' | 'image/gif' | 'image/... type ImageAttachment (line 21) | interface ImageAttachment { type ContentBlock (line 34) | type ContentBlock = type ChatMessage (line 42) | interface ChatMessage { type Conversation (line 68) | interface Conversation { type ConversationMeta (line 116) | interface ConversationMeta { type SessionMetadata (line 136) | interface SessionMetadata { type StreamChunk (line 175) | type StreamChunk = type UsageInfo (line 191) | interface UsageInfo { FILE: src/core/types/diff.ts type DiffLine (line 5) | interface DiffLine { type DiffStats (line 12) | interface DiffStats { type StructuredPatchHunk (line 18) | interface StructuredPatchHunk { type SDKToolUseResult (line 27) | interface SDKToolUseResult { FILE: src/core/types/mcp.ts type McpStdioServerConfig (line 8) | interface McpStdioServerConfig { type McpSSEServerConfig (line 16) | interface McpSSEServerConfig { type McpHttpServerConfig (line 23) | interface McpHttpServerConfig { type McpServerConfig (line 30) | type McpServerConfig = type McpServerType (line 36) | type McpServerType = 'stdio' | 'sse' | 'http'; type ClaudianMcpServer (line 39) | interface ClaudianMcpServer { type McpConfigFile (line 52) | interface McpConfigFile { type ClaudianMcpConfigFile (line 57) | interface ClaudianMcpConfigFile extends McpConfigFile { type ParsedMcpConfig (line 73) | interface ParsedMcpConfig { function getMcpServerType (line 78) | function getMcpServerType(config: McpServerConfig): McpServerType { function isValidMcpServerConfig (line 85) | function isValidMcpServerConfig(obj: unknown): obj is McpServerConfig { constant DEFAULT_MCP_SERVER (line 98) | const DEFAULT_MCP_SERVER: Omit = { FILE: src/core/types/models.ts type ClaudeModel (line 6) | type ClaudeModel = string; constant DEFAULT_CLAUDE_MODELS (line 8) | const DEFAULT_CLAUDE_MODELS: { value: ClaudeModel; label: string; descri... type ThinkingBudget (line 16) | type ThinkingBudget = 'off' | 'low' | 'medium' | 'high' | 'xhigh'; constant THINKING_BUDGETS (line 18) | const THINKING_BUDGETS: { value: ThinkingBudget; label: string; tokens: ... type EffortLevel (line 27) | type EffortLevel = 'low' | 'medium' | 'high' | 'max'; constant EFFORT_LEVELS (line 29) | const EFFORT_LEVELS: { value: EffortLevel; label: string }[] = [ constant DEFAULT_EFFORT_LEVEL (line 37) | const DEFAULT_EFFORT_LEVEL: Record = { constant DEFAULT_THINKING_BUDGET (line 46) | const DEFAULT_THINKING_BUDGET: Record = { constant DEFAULT_MODEL_VALUES (line 54) | const DEFAULT_MODEL_VALUES = new Set(DEFAULT_CLAUDE_MODELS.map(m => m.va... function isAdaptiveThinkingModel (line 57) | function isAdaptiveThinkingModel(model: string): boolean { constant CONTEXT_WINDOW_STANDARD (line 62) | const CONTEXT_WINDOW_STANDARD = 200_000; constant CONTEXT_WINDOW_1M (line 63) | const CONTEXT_WINDOW_1M = 1_000_000; function filterVisibleModelOptions (line 65) | function filterVisibleModelOptions( function normalizeVisibleModelVariant (line 83) | function normalizeVisibleModelVariant( function getContextWindowSize (line 99) | function getContextWindowSize( FILE: src/core/types/plugins.ts type PluginScope (line 1) | type PluginScope = 'user' | 'project'; type ClaudianPlugin (line 3) | interface ClaudianPlugin { type InstalledPluginEntry (line 12) | interface InstalledPluginEntry { type InstalledPluginsFile (line 22) | interface InstalledPluginsFile { FILE: src/core/types/sdk.ts type BlockedUserMessage (line 6) | type BlockedUserMessage = SDKUserMessage & { function isBlockedMessage (line 11) | function isBlockedMessage(message: { type: string }): message is Blocked... FILE: src/core/types/settings.ts constant UNIX_BLOCKED_COMMANDS (line 8) | const UNIX_BLOCKED_COMMANDS = [ constant WINDOWS_BLOCKED_COMMANDS (line 15) | const WINDOWS_BLOCKED_COMMANDS = [ type PlatformBlockedCommands (line 51) | interface PlatformBlockedCommands { function getDefaultBlockedCommands (line 56) | function getDefaultBlockedCommands(): PlatformBlockedCommands { function getCurrentPlatformKey (line 63) | function getCurrentPlatformKey(): keyof PlatformBlockedCommands { function getCurrentPlatformBlockedCommands (line 67) | function getCurrentPlatformBlockedCommands(commands: PlatformBlockedComm... function getBashToolBlockedCommands (line 78) | function getBashToolBlockedCommands(commands: PlatformBlockedCommands): ... type PlatformCliPaths (line 89) | interface PlatformCliPaths { type CliPlatformKey (line 96) | type CliPlatformKey = keyof PlatformCliPaths; function getCliPlatformKey (line 102) | function getCliPlatformKey(): CliPlatformKey { type HostnameCliPaths (line 118) | type HostnameCliPaths = Record; type PermissionMode (line 121) | type PermissionMode = 'yolo' | 'plan' | 'normal'; type ApprovalDecision (line 124) | type ApprovalDecision = 'allow' | 'allow-always' | 'deny' | 'cancel'; type LegacyPermission (line 130) | interface LegacyPermission { type PermissionRule (line 142) | type PermissionRule = string & { readonly __brand: 'PermissionRule' }; function createPermissionRule (line 148) | function createPermissionRule(rule: string): PermissionRule { type CCPermissions (line 156) | interface CCPermissions { type CCSettings (line 173) | interface CCSettings { type EnvSnippet (line 193) | interface EnvSnippet { type SlashCommandSource (line 202) | type SlashCommandSource = 'builtin' | 'user' | 'plugin' | 'sdk'; type SlashCommand (line 205) | interface SlashCommand { type KeyboardNavigationSettings (line 223) | interface KeyboardNavigationSettings { type TabBarPosition (line 230) | type TabBarPosition = 'input' | 'header'; type ClaudianSettings (line 236) | interface ClaudianSettings { constant DEFAULT_SETTINGS (line 305) | const DEFAULT_SETTINGS: ClaudianSettings = { constant DEFAULT_CC_SETTINGS (line 371) | const DEFAULT_CC_SETTINGS: CCSettings = { constant DEFAULT_CC_PERMISSIONS (line 381) | const DEFAULT_CC_PERMISSIONS: CCPermissions = { type InstructionRefineResult (line 388) | interface InstructionRefineResult { function legacyPermissionToCCRule (line 402) | function legacyPermissionToCCRule(legacy: LegacyPermission): PermissionR... function legacyPermissionsToCCPermissions (line 417) | function legacyPermissionsToCCPermissions( function parseCCPermissionRule (line 442) | function parseCCPermissionRule(rule: PermissionRule): { FILE: src/core/types/tools.ts type ToolDiffData (line 8) | interface ToolDiffData { type AskUserQuestionOption (line 15) | interface AskUserQuestionOption { type AskUserQuestionItem (line 21) | interface AskUserQuestionItem { type AskUserAnswers (line 29) | type AskUserAnswers = Record; type ToolCallInfo (line 32) | interface ToolCallInfo { type ExitPlanModeDecision (line 44) | type ExitPlanModeDecision = type ExitPlanModeCallback (line 49) | type ExitPlanModeCallback = ( type SubagentMode (line 55) | type SubagentMode = 'sync' | 'async'; type AsyncSubagentStatus (line 58) | type AsyncSubagentStatus = type SubagentInfo (line 66) | interface SubagentInfo { FILE: src/features/chat/ClaudianView.ts class ClaudianView (line 10) | class ClaudianView extends ItemView { method constructor (line 41) | constructor(leaf: WorkspaceLeaf, plugin: ClaudianPlugin) { method getViewType (line 68) | getViewType(): string { method getDisplayText (line 72) | getDisplayText(): string { method getIcon (line 76) | getIcon(): string { method refreshModelSelector (line 81) | refreshModelSelector(): void { method updateHiddenSlashCommands (line 97) | updateHiddenSlashCommands(): void { method onOpen (line 106) | async onOpen() { method onClose (line 179) | async onClose() { method buildHeader (line 208) | private buildHeader(header: HTMLElement) { method buildNavRowContent (line 239) | private buildNavRowContent(): HTMLElement { method updateNavRowLocation (line 301) | private updateNavRowLocation(): void { method updateLayoutForPosition (line 335) | updateLayoutForPosition(): void { method handleTabClick (line 354) | private handleTabClick(tabId: TabId): void { method handleTabClose (line 358) | private async handleTabClose(tabId: TabId): Promise { method handleNewTab (line 366) | private async handleNewTab(): Promise { method updateTabBar (line 376) | private updateTabBar(): void { method updateTabBarVisibility (line 394) | private updateTabBarVisibility(): void { method toggleHistoryDropdown (line 419) | private toggleHistoryDropdown(): void { method updateHistoryDropdown (line 431) | private updateHistoryDropdown(): void { method findTabWithConversation (line 468) | private findTabWithConversation(conversationId: string): TabData | null { method wireEventHandlers (line 477) | private wireEventHandlers(): void { method restoreOrCreateTabs (line 552) | private async restoreOrCreateTabs(): Promise { method persistTabState (line 581) | private persistTabState(): void { method persistTabStateImmediate (line 597) | private async persistTabStateImmediate(): Promise { method getActiveTab (line 613) | getActiveTab(): TabData | null { method getTabManager (line 618) | getTabManager(): TabManager | null { FILE: src/features/chat/constants.ts constant LOGO_SVG (line 1) | const LOGO_SVG = { constant COMPLETION_FLAVOR_WORDS (line 10) | const COMPLETION_FLAVOR_WORDS = [ constant FLAVOR_TEXTS (line 36) | const FLAVOR_TEXTS = [ FILE: src/features/chat/controllers/BrowserSelectionController.ts constant BROWSER_SELECTION_POLL_INTERVAL (line 6) | const BROWSER_SELECTION_POLL_INTERVAL = 250; type BrowserLikeWebview (line 8) | type BrowserLikeWebview = HTMLElement & { class BrowserSelectionController (line 12) | class BrowserSelectionController { method constructor (line 22) | constructor( method start (line 36) | start(): void { method stop (line 43) | stop(): void { method poll (line 51) | private async poll(): Promise { method getActiveBrowserView (line 78) | private getActiveBrowserView(): { view: ItemView; viewType: string; co... method isBrowserLikeView (line 90) | private isBrowserLikeView(viewType: string, containerEl: HTMLElement):... method extractSelectedText (line 103) | private async extractSelectedText(containerEl: HTMLElement): Promise { method loadActive (line 158) | async loadActive(): Promise { method switchTo (line 255) | async switchTo(id: string): Promise { method rewind (line 338) | async rewind(userMessageId: string): Promise { method save (line 430) | async save(updateLastResponse = false, options?: SaveOptions): Promise... method restoreExternalContextPaths (line 530) | private restoreExternalContextPaths( method toggleHistoryDropdown (line 555) | toggleHistoryDropdown(): void { method updateHistoryDropdown (line 568) | updateHistoryDropdown(): void { method renderHistoryItems (line 582) | private renderHistoryItems( method showRenameInput (line 687) | private showRenameInput(item: HTMLElement, convId: string, currentTitl... method getGreeting (line 727) | getGreeting(): string { method updateWelcomeVisibility (line 783) | updateWelcomeVisibility(): void { method initializeWelcome (line 798) | initializeWelcome(): void { method generateFallbackTitle (line 820) | generateFallbackTitle(firstMessage: string): string { method regenerateTitle (line 828) | async regenerateTitle(conversationId: string): Promise { method formatDate (line 879) | formatDate(timestamp: number): string { method renderHistoryDropdown (line 897) | renderHistoryDropdown( FILE: src/features/chat/controllers/InputController.ts constant APPROVAL_OPTION_MAP (line 33) | const APPROVAL_OPTION_MAP: Record = { type InputControllerDeps (line 39) | interface InputControllerDeps { class InputController (line 73) | class InputController { method constructor (line 81) | constructor(deps: InputControllerDeps) { method getAgentService (line 85) | private getAgentService(): ClaudianService | null { method isResumeSessionAtStillNeeded (line 89) | private isResumeSessionAtStillNeeded(resumeUuid: string, previousMessa... method sendMessage (line 103) | async sendMessage(options?: { method updateQueueIndicator (line 486) | updateQueueIndicator(): void { method clearQueuedMessage (line 509) | clearQueuedMessage(): void { method restoreQueuedMessageToInput (line 515) | private restoreQueuedMessageToInput(): void { method processQueuedMessage (line 530) | private processQueuedMessage(): void { method triggerTitleGeneration (line 562) | private async triggerTitleGeneration(): Promise { method cancelStreaming (line 638) | cancelStreaming(): void { method syncScrollToBottomAfterRenderUpdates (line 648) | private syncScrollToBottomAfterRenderUpdates(): void { method handleInstructionSubmit (line 666) | async handleInstructionSubmit(rawInstruction: string): Promise { method handleApprovalRequest (line 763) | async handleApprovalRequest( method handleAskUserQuestion (line 820) | async handleAskUserQuestion( method showInlineQuestion (line 839) | private showInlineQuestion( method handleExitPlanMode (line 873) | async handleExitPlanMode( method dismissPendingApproval (line 917) | dismissPendingApproval(): void { method hideInputContainer (line 933) | private hideInputContainer(inputContainerEl: HTMLElement): void { method restoreInputContainer (line 938) | private restoreInputContainer(inputContainerEl: HTMLElement): void { method resetInputContainerVisibility (line 946) | private resetInputContainerVisibility(): void { method executeBuiltInCommand (line 957) | private async executeBuiltInCommand(action: string, args: string): Pro... method handleResumeKeydown (line 999) | handleResumeKeydown(e: KeyboardEvent): boolean { method isResumeDropdownVisible (line 1004) | isResumeDropdownVisible(): boolean { method destroyResumeDropdown (line 1008) | destroyResumeDropdown(): void { method showResumeDropdown (line 1015) | private showResumeDropdown(): void { FILE: src/features/chat/controllers/NavigationController.ts constant SCROLL_SPEED (line 4) | const SCROLL_SPEED = 8; type NavigationControllerDeps (line 6) | interface NavigationControllerDeps { class NavigationController (line 15) | class NavigationController { method constructor (line 27) | constructor(deps: NavigationControllerDeps) { method initialize (line 34) | initialize(): void { method dispose (line 58) | dispose(): void { method handleMessagesKeydown (line 80) | private handleMessagesKeydown(e: KeyboardEvent): void { method handleKeyup (line 109) | private handleKeyup(e: KeyboardEvent): void { method handleInputKeydown (line 126) | private handleInputKeydown(e: KeyboardEvent): void { method startScrolling (line 152) | private startScrolling(direction: 'up' | 'down'): void { method stopScrolling (line 161) | private stopScrolling(): void { method focusMessages (line 190) | focusMessages(): void { method focusInput (line 195) | focusInput(): void { FILE: src/features/chat/controllers/SelectionController.ts constant SELECTION_POLL_INTERVAL (line 10) | const SELECTION_POLL_INTERVAL = 250; constant INPUT_HANDOFF_GRACE_MS (line 12) | const INPUT_HANDOFF_GRACE_MS = 1500; class SelectionController (line 14) | class SelectionController { method constructor (line 28) | constructor( method start (line 42) | start(): void { method stop (line 48) | stop(): void { method dispose (line 57) | dispose(): void { method poll (line 65) | private poll(): void { method pollReadingMode (line 121) | private pollReadingMode(view: MarkdownView): void { method handleDeselection (line 162) | private handleDeselection(): void { method clearWhenMarkdownIsNotActive (line 179) | private clearWhenMarkdownIsNotActive(): void { method showHighlight (line 193) | showHighlight(): void { method clearHighlight (line 199) | private clearHighlight(): void { method updateIndicator (line 208) | private updateIndicator(): void { method updateContextRowVisibility (line 221) | updateContextRowVisibility(): void { method getContext (line 231) | getContext(): EditorSelectionContext | null { method hasSelection (line 242) | hasSelection(): boolean { method clear (line 250) | clear(): void { FILE: src/features/chat/controllers/StreamController.ts type StreamControllerDeps (line 42) | interface StreamControllerDeps { class StreamController (line 54) | class StreamController { method constructor (line 59) | constructor(deps: StreamControllerDeps) { method handleStreamChunk (line 67) | async handleStreamChunk(chunk: StreamChunk, msg: ChatMessage): Promise... method handleRegularToolUse (line 204) | private handleRegularToolUse( method capturePlanFilePath (line 287) | private capturePlanFilePath(input: Record): void { method flushPendingTools (line 298) | private flushPendingTools(): void { method renderPendingTool (line 316) | private renderPendingTool(toolId: string): void { method handleToolResult (line 333) | private async handleToolResult( method appendText (line 419) | async appendText(text: string): Promise { method finalizeCurrentTextBlock (line 434) | finalizeCurrentTextBlock(msg?: ChatMessage): void { method appendThinking (line 452) | async appendThinking(content: string): Promise { method finalizeCurrentThinkingBlock (line 467) | finalizeCurrentThinkingBlock(msg?: ChatMessage): void { method handleTaskToolUseViaManager (line 490) | private handleTaskToolUseViaManager( method renderPendingTaskViaManager (line 517) | private renderPendingTaskViaManager(toolId: string, msg: ChatMessage):... method renderPendingTaskFromTaskResultViaManager (line 529) | private renderPendingTaskFromTaskResultViaManager( method recordSubagentInMessage (line 549) | private recordSubagentInMessage( method handleSubagentChunk (line 572) | private async handleSubagentChunk(chunk: StreamChunk, msg: ChatMessage... method finalizeSubagent (line 622) | private finalizeSubagent( method handleAgentOutputToolUse (line 653) | private handleAgentOutputToolUse( method handleAsyncTaskToolResult (line 671) | private handleAsyncTaskToolResult( method handleAgentOutputToolResult (line 684) | private async handleAgentOutputToolResult( method hydrateAsyncSubagentToolCalls (line 702) | private async hydrateAsyncSubagentToolCalls(subagent: SubagentInfo | u... method tryHydrateAsyncSubagent (line 732) | private async tryHydrateAsyncSubagent( method scheduleAsyncSubagentResultRetry (line 772) | private scheduleAsyncSubagentResultRetry( method retryAsyncSubagentResult (line 787) | private async retryAsyncSubagentResult( method onAsyncSubagentStateChange (line 813) | onAsyncSubagentStateChange(subagent: SubagentInfo): void { method updateSubagentInMessages (line 818) | private updateSubagentInMessages(subagent: SubagentInfo): void { method ensureTaskToolCall (line 829) | private ensureTaskToolCall( method applySubagentToTaskToolCall (line 856) | private applySubagentToTaskToolCall(taskToolCall: ToolCallInfo, subage... method linkTaskToolCallToSubagent (line 866) | private linkTaskToolCallToSubagent(msg: ChatMessage, subagent: Subagen... method showThinkingIndicator (line 888) | showThinkingIndicator(overrideText?: string, overrideCls?: string): vo... method hideThinkingIndicator (line 955) | hideThinkingIndicator(): void { method renderCompactBoundary (line 978) | private renderCompactBoundary(): void { method notifyVaultFileChange (line 995) | private notifyVaultFileChange(input: Record): void { method scrollToBottom (line 1018) | private scrollToBottom(): void { method resetStreamingState (line 1027) | resetStreamingState(): void { FILE: src/features/chat/controllers/contextRowVisibility.ts function updateContextRowHasContent (line 1) | function updateContextRowHasContent(contextRowEl: HTMLElement): void { FILE: src/features/chat/rendering/DiffRenderer.ts type DiffHunk (line 3) | interface DiffHunk { function splitIntoHunks (line 9) | function splitIntoHunks(diffLines: DiffLine[], contextLines = 3): DiffHu... constant NEW_FILE_DISPLAY_CAP (line 62) | const NEW_FILE_DISPLAY_CAP = 20; function renderDiffContent (line 64) | function renderDiffContent( FILE: src/features/chat/rendering/InlineAskUserQuestion.ts constant HINTS_TEXT (line 3) | const HINTS_TEXT = 'Enter to select \u00B7 Tab/Arrow keys to navigate \u... constant HINTS_TEXT_IMMEDIATE (line 4) | const HINTS_TEXT_IMMEDIATE = 'Enter to select \u00B7 Arrow keys to navig... type InlineAskQuestionConfig (line 6) | interface InlineAskQuestionConfig { class InlineAskUserQuestion (line 13) | class InlineAskUserQuestion { method constructor (line 37) | constructor( method render (line 57) | render(): void { method destroy (line 105) | destroy(): void { method parseQuestions (line 109) | private parseQuestions(): AskUserQuestionItem[] { method coerceOption (line 130) | private coerceOption(opt: unknown): AskUserQuestionOption { method deduplicateOptions (line 140) | private deduplicateOptions(options: AskUserQuestionOption[]): AskUserQ... method extractLabel (line 149) | private extractLabel(obj: Record): string { method renderTabBar (line 157) | private renderTabBar(): void { method isQuestionAnswered (line 183) | private isQuestionAnswered(idx: number): boolean { method switchTab (line 187) | private switchTab(index: number): void { method renderTabContent (line 200) | private renderTabContent(): void { method renderQuestionTab (line 211) | private renderQuestionTab(idx: number): void { method renderSubmitTab (line 307) | private renderSubmitTab(): void { method getAnswerText (line 368) | private getAnswerText(idx: number): string { method selectOption (line 377) | private selectOption(qIdx: number, label: string): void { method renderMultiSelectCheckbox (line 410) | private renderMultiSelectCheckbox(parent: HTMLElement, checked: boolea... method updateOptionVisuals (line 417) | private updateOptionVisuals(qIdx: number): void { method updateFocusIndicator (line 446) | private updateFocusIndicator(): void { method updateTabIndicators (line 477) | private updateTabIndicators(): void { method handleNavigationKey (line 493) | private handleNavigationKey(e: KeyboardEvent, maxFocusIndex: number): ... method handleKeyDown (line 533) | private handleKeyDown(e: KeyboardEvent): void { method handleSubmit (line 613) | private handleSubmit(): void { method handleResolve (line 624) | private handleResolve(result: Record | null): void { FILE: src/features/chat/rendering/InlineExitPlanMode.ts constant HINTS_TEXT (line 6) | const HINTS_TEXT = 'Arrow keys to navigate \u00B7 Enter to select \u00B7... class InlineExitPlanMode (line 8) | class InlineExitPlanMode { method constructor (line 26) | constructor( method render (line 41) | render(): void { method destroy (line 132) | destroy(): void { method readPlanContent (line 136) | private readPlanContent(): string | null { method extractPlanContent (line 157) | private extractPlanContent(): string { method handleKeyDown (line 164) | private handleKeyDown(e: KeyboardEvent): void { method updateFocus (line 218) | private updateFocus(): void { method handleResolve (line 249) | private handleResolve(decision: ExitPlanModeDecision | null): void { FILE: src/features/chat/rendering/MessageRenderer.ts type RenderContentFn (line 20) | type RenderContentFn = (el: HTMLElement, markdown: string) => Promise { method addTextCopyButton (line 545) | addTextCopyButton(textEl: HTMLElement, markdown: string): void { method refreshActionButtons (line 579) | refreshActionButtons(msg: ChatMessage, allMessages?: ChatMessage[], in... method cleanupLiveMessageEl (line 594) | private cleanupLiveMessageEl(msgId: string, msgEl: HTMLElement): void { method getOrCreateActionsToolbar (line 602) | private getOrCreateActionsToolbar(msgEl: HTMLElement): HTMLElement { method addUserCopyButton (line 608) | private addUserCopyButton(msgEl: HTMLElement, content: string): void { method addRewindButton (line 635) | private addRewindButton(msgEl: HTMLElement, messageId: string): void { method addForkButton (line 651) | private addForkButton(msgEl: HTMLElement, messageId: string): void { method scrollToBottom (line 672) | scrollToBottom(): void { method scrollToBottomIfNeeded (line 677) | scrollToBottomIfNeeded(threshold = 100): void { FILE: src/features/chat/rendering/SubagentRenderer.ts type SubagentToolView (line 14) | interface SubagentToolView { type SubagentSection (line 22) | interface SubagentSection { type SubagentState (line 27) | interface SubagentState { constant SUBAGENT_TOOL_STATUS_ICONS (line 43) | const SUBAGENT_TOOL_STATUS_ICONS: Partial): string { function extractTaskPrompt (line 53) | function extractTaskPrompt(input: Record): string { function truncateDescription (line 57) | function truncateDescription(description: string, maxLength = 40): string { function createSection (line 62) | function createSection(parentEl: HTMLElement, title: string, bodyClass?:... function setPromptText (line 83) | function setPromptText(promptBodyEl: HTMLElement, prompt: string): void { function updateSyncHeaderAria (line 89) | function updateSyncHeaderAria(state: SubagentState): void { function renderSubagentToolContent (line 98) | function renderSubagentToolContent(contentEl: HTMLElement, toolCall: Too... function setSubagentToolStatus (line 110) | function setSubagentToolStatus(view: SubagentToolView, status: ToolCallI... function updateSubagentToolView (line 122) | function updateSubagentToolView(view: SubagentToolView, toolCall: ToolCa... function createSubagentToolView (line 130) | function createSubagentToolView(parentEl: HTMLElement, toolCall: ToolCal... function ensureResultSection (line 171) | function ensureResultSection(state: SubagentState): SubagentSection { function setResultText (line 183) | function setResultText(state: SubagentState, text: string): void { function hydrateSyncSubagentStateFromStored (line 190) | function hydrateSyncSubagentStateFromStored(state: SubagentState, subage... function createSubagentBlock (line 221) | function createSubagentBlock( function addSubagentToolCall (line 288) | function addSubagentToolCall( function updateSubagentToolResult (line 303) | function updateSubagentToolResult( function finalizeSubagentBlock (line 321) | function finalizeSubagentBlock( function renderStoredSubagent (line 351) | function renderStoredSubagent( type AsyncSubagentState (line 364) | interface AsyncSubagentState { function setAsyncWrapperStatus (line 374) | function setAsyncWrapperStatus(wrapperEl: HTMLElement, status: string): ... function getAsyncDisplayStatus (line 381) | function getAsyncDisplayStatus(asyncStatus: string | undefined): 'runnin... function getAsyncStatusText (line 390) | function getAsyncStatusText(asyncStatus: string | undefined): string { function getAsyncStatusAriaLabel (line 400) | function getAsyncStatusAriaLabel(asyncStatus: string | undefined): string { function updateAsyncLabel (line 410) | function updateAsyncLabel(state: AsyncSubagentState): void { function renderAsyncContentLikeSync (line 420) | function renderAsyncContentLikeSync( function createAsyncSubagentBlock (line 462) | function createAsyncSubagentBlock( function updateAsyncSubagentRunning (line 520) | function updateAsyncSubagentRunning( function finalizeAsyncSubagent (line 535) | function finalizeAsyncSubagent( function markAsyncSubagentOrphaned (line 567) | function markAsyncSubagentOrphaned(state: AsyncSubagentState): void { function renderStoredAsyncSubagent (line 591) | function renderStoredAsyncSubagent( FILE: src/features/chat/rendering/ThinkingBlockRenderer.ts type RenderContentFn (line 3) | type RenderContentFn = (el: HTMLElement, markdown: string) => Promise): stri... function getToolSummary (line 55) | function getToolSummary(name: string, input: Record): s... function getToolLabel (line 88) | function getToolLabel(name: string, input: Record): str... function fileNameOnly (line 139) | function fileNameOnly(filePath: string): string { function shortenPath (line 145) | function shortenPath(filePath: string | undefined): string { function truncateText (line 153) | function truncateText(text: string, maxLength: number): string { function parseToolSearchQuery (line 158) | function parseToolSearchQuery(query: string | undefined): string { type WebSearchLink (line 165) | interface WebSearchLink { function parseWebSearchResult (line 170) | function parseWebSearchResult(result: string): { links: WebSearchLink[];... function renderWebSearchExpanded (line 186) | function renderWebSearchExpanded(container: HTMLElement, result: string)... function renderFileSearchExpanded (line 212) | function renderFileSearchExpanded(container: HTMLElement, result: string... function renderLinesExpanded (line 221) | function renderLinesExpanded( function renderToolSearchExpanded (line 247) | function renderToolSearchExpanded(container: HTMLElement, result: string... function renderWebFetchExpanded (line 273) | function renderWebFetchExpanded(container: HTMLElement, result: string):... function renderExpandedContent (line 291) | function renderExpandedContent(container: HTMLElement, toolName: string,... function getTodos (line 324) | function getTodos(input: Record): TodoItem[] | undefined { function getCurrentTask (line 330) | function getCurrentTask(input: Record): TodoItem | unde... function areAllTodosCompleted (line 336) | function areAllTodosCompleted(input: Record): boolean { function resetStatusElement (line 342) | function resetStatusElement(statusEl: HTMLElement, statusClass: string, ... constant STATUS_ICONS (line 349) | const STATUS_ICONS: Record = { function setTodoWriteStatus (line 355) | function setTodoWriteStatus(statusEl: HTMLElement, input: Record { FILE: src/features/chat/services/InstructionRefineService.ts type RefineProgressCallback (line 10) | type RefineProgressCallback = (update: InstructionRefineResult) => void; class InstructionRefineService (line 12) | class InstructionRefineService { method constructor (line 18) | constructor(plugin: ClaudianPlugin) { method resetConversation (line 23) | resetConversation(): void { method refineInstruction (line 28) | async refineInstruction( method continueConversation (line 40) | async continueConversation( method cancel (line 51) | cancel(): void { method sendMessage (line 58) | private async sendMessage( method parseResponse (line 150) | private parseResponse(responseText: string): InstructionRefineResult { method extractTextFromMessage (line 166) | private extractTextFromMessage(message: { type: string; message?: { co... FILE: src/features/chat/services/SubagentManager.ts type SubagentStateChangeCallback (line 31) | type SubagentStateChangeCallback = (subagent: SubagentInfo) => void; type HandleTaskResult (line 33) | type HandleTaskResult = type RenderPendingResult (line 39) | type RenderPendingResult = class SubagentManager (line 43) | class SubagentManager { method constructor (line 59) | constructor(onStateChange: SubagentStateChangeCallback) { method setCallback (line 63) | public setCallback(callback: SubagentStateChangeCallback): void { method handleTaskToolUse (line 75) | public handleTaskToolUse( method hasPendingTask (line 161) | public hasPendingTask(toolId: string): boolean { method renderPendingTask (line 170) | public renderPendingTask( method renderPendingTaskFromTaskResult (line 209) | public renderPendingTaskFromTaskResult( method getSyncSubagent (line 254) | public getSyncSubagent(toolId: string): SubagentState | undefined { method addSyncToolCall (line 258) | public addSyncToolCall(parentToolUseId: string, toolCall: ToolCallInfo... method updateSyncToolResult (line 264) | public updateSyncToolResult( method finalizeSyncSubagent (line 274) | public finalizeSyncSubagent( method handleTaskToolResult (line 294) | public handleTaskToolResult( method handleAgentOutputToolUse (line 328) | public handleAgentOutputToolUse(toolCall: ToolCallInfo): void { method handleAgentOutputToolResult (line 339) | public handleAgentOutputToolResult( method isPendingAsyncTask (line 397) | public isPendingAsyncTask(taskToolId: string): boolean { method isLinkedAgentOutputTool (line 401) | public isLinkedAgentOutputTool(toolId: string): boolean { method getByTaskId (line 405) | public getByTaskId(taskToolId: string): SubagentInfo | undefined { method refreshAsyncSubagent (line 421) | public refreshAsyncSubagent(subagent: SubagentInfo): void { method hasRunningSubagents (line 430) | public hasRunningSubagents(): boolean { method subagentsSpawnedThisStream (line 439) | public get subagentsSpawnedThisStream(): number { method resetSpawnedCount (line 443) | public resetSpawnedCount(): void { method resetStreamingState (line 447) | public resetStreamingState(): void { method orphanAllActive (line 452) | public orphanAllActive(): SubagentInfo[] { method clear (line 475) | public clear(): void { method markOrphaned (line 489) | private markOrphaned(subagent: SubagentInfo): void { method transitionToError (line 498) | private transitionToError(subagent: SubagentInfo, taskToolId: string, ... method createSyncTask (line 512) | private createSyncTask( method createAsyncTask (line 522) | private createAsyncTask( method updateSubagentLabel (line 553) | private updateSubagentLabel( method resolveTaskMode (line 578) | private resolveTaskMode(taskInput: Record): 'sync' | ... method inferModeFromTaskResult (line 591) | private inferModeFromTaskResult( method parseAgentIdStrict (line 606) | private parseAgentIdStrict(result: string): string | null { method extractAgentIdFromString (line 637) | private extractAgentIdFromString(value: string): string | null { method hasAsyncMarkerInToolUseResult (line 655) | private hasAsyncMarkerInToolUseResult(taskToolUseResult?: unknown): bo... method updateAsyncDomState (line 711) | private updateAsyncDomState(subagent: SubagentInfo): void { method isStillRunningResult (line 747) | private isStillRunningResult(result: string, isError: boolean): boolean { method extractAgentResult (line 798) | private extractAgentResult(result: string, agentId: string, toolUseRes... method extractResultFromToolUseResult (line 865) | private extractResultFromToolUseResult(toolUseResult: unknown): string... method extractResultFromTaskObject (line 895) | private extractResultFromTaskObject(task: unknown): string | null { method extractResultFromCandidateString (line 904) | private extractResultFromCandidateString(candidate: unknown): string |... method parseAgentId (line 927) | private parseAgentId(result: string): string | null { method extractAgentIdFromTaskToolUseResult (line 965) | private extractAgentIdFromTaskToolUseResult(toolUseResult: unknown): s... method inferAgentIdFromResult (line 998) | private inferAgentIdFromResult(result: string): string | null { method unwrapTextPayload (line 1013) | private unwrapTextPayload(raw: string): string { method extractResultFromTaggedPayload (line 1028) | private extractResultFromTaggedPayload(payload: string): string | null { method extractResultFromOutputJsonl (line 1045) | private extractResultFromOutputJsonl(outputContent: string): string | ... method extractFullOutputPath (line 1064) | private extractFullOutputPath(content: string): string | null { method readFullOutputFile (line 1075) | private readFullOutputFile(fullOutputPath: string): string | null { method extractAgentIdFromInput (line 1093) | private extractAgentIdFromInput(input: Record): strin... method resolveTrustedTmpRoots (line 1098) | private static resolveTrustedTmpRoots(): string[] { method isTrustedOutputPath (line 1111) | private isTrustedOutputPath(fullOutputPath: string): boolean { FILE: src/features/chat/services/TitleGenerationService.ts type TitleGenerationResult (line 9) | type TitleGenerationResult = type TitleGenerationCallback (line 13) | type TitleGenerationCallback = ( class TitleGenerationService (line 18) | class TitleGenerationService { method constructor (line 22) | constructor(plugin: ClaudianPlugin) { method generateTitle (line 30) | async generateTitle( method cancel (line 153) | cancel(): void { method truncateText (line 161) | private truncateText(text: string, maxLength: number): string { method extractTextFromMessage (line 167) | private extractTextFromMessage( method parseTitle (line 183) | private parseTitle(responseText: string): string | null { method safeCallback (line 208) | private async safeCallback( FILE: src/features/chat/state/ChatState.ts function createInitialState (line 14) | function createInitialState(): ChatStateData { class ChatState (line 47) | class ChatState { method constructor (line 51) | constructor(callbacks: ChatStateCallbacks = {}) { method callbacks (line 56) | get callbacks(): ChatStateCallbacks { method callbacks (line 60) | set callbacks(value: ChatStateCallbacks) { method messages (line 68) | get messages(): ChatMessage[] { method messages (line 72) | set messages(value: ChatMessage[]) { method addMessage (line 77) | addMessage(msg: ChatMessage): void { method clearMessages (line 82) | clearMessages(): void { method truncateAt (line 87) | truncateAt(messageId: string): number { method isStreaming (line 100) | get isStreaming(): boolean { method isStreaming (line 104) | set isStreaming(value: boolean) { method cancelRequested (line 109) | get cancelRequested(): boolean { method cancelRequested (line 113) | set cancelRequested(value: boolean) { method streamGeneration (line 117) | get streamGeneration(): number { method bumpStreamGeneration (line 121) | bumpStreamGeneration(): number { method isCreatingConversation (line 126) | get isCreatingConversation(): boolean { method isCreatingConversation (line 130) | set isCreatingConversation(value: boolean) { method isSwitchingConversation (line 134) | get isSwitchingConversation(): boolean { method isSwitchingConversation (line 138) | set isSwitchingConversation(value: boolean) { method currentConversationId (line 146) | get currentConversationId(): string | null { method currentConversationId (line 150) | set currentConversationId(value: string | null) { method queuedMessage (line 159) | get queuedMessage(): QueuedMessage | null { method queuedMessage (line 163) | set queuedMessage(value: QueuedMessage | null) { method currentContentEl (line 171) | get currentContentEl(): HTMLElement | null { method currentContentEl (line 175) | set currentContentEl(value: HTMLElement | null) { method currentTextEl (line 179) | get currentTextEl(): HTMLElement | null { method currentTextEl (line 183) | set currentTextEl(value: HTMLElement | null) { method currentTextContent (line 187) | get currentTextContent(): string { method currentTextContent (line 191) | set currentTextContent(value: string) { method currentThinkingState (line 195) | get currentThinkingState(): ThinkingBlockState | null { method currentThinkingState (line 199) | set currentThinkingState(value: ThinkingBlockState | null) { method thinkingEl (line 203) | get thinkingEl(): HTMLElement | null { method thinkingEl (line 207) | set thinkingEl(value: HTMLElement | null) { method queueIndicatorEl (line 211) | get queueIndicatorEl(): HTMLElement | null { method queueIndicatorEl (line 215) | set queueIndicatorEl(value: HTMLElement | null) { method thinkingIndicatorTimeout (line 219) | get thinkingIndicatorTimeout(): ReturnType | null { method thinkingIndicatorTimeout (line 223) | set thinkingIndicatorTimeout(value: ReturnType | nu... method toolCallElements (line 231) | get toolCallElements(): Map { method writeEditStates (line 235) | get writeEditStates(): Map { method pendingTools (line 239) | get pendingTools(): Map { method usage (line 247) | get usage(): UsageInfo | null { method usage (line 251) | set usage(value: UsageInfo | null) { method ignoreUsageUpdates (line 256) | get ignoreUsageUpdates(): boolean { method ignoreUsageUpdates (line 260) | set ignoreUsageUpdates(value: boolean) { method currentTodos (line 268) | get currentTodos(): TodoItem[] | null { method currentTodos (line 272) | set currentTodos(value: TodoItem[] | null) { method needsAttention (line 283) | get needsAttention(): boolean { method needsAttention (line 287) | set needsAttention(value: boolean) { method autoScrollEnabled (line 296) | get autoScrollEnabled(): boolean { method autoScrollEnabled (line 300) | set autoScrollEnabled(value: boolean) { method responseStartTime (line 312) | get responseStartTime(): number | null { method responseStartTime (line 316) | set responseStartTime(value: number | null) { method flavorTimerInterval (line 320) | get flavorTimerInterval(): ReturnType | null { method flavorTimerInterval (line 324) | set flavorTimerInterval(value: ReturnType | null) { method pendingNewSessionPlan (line 328) | get pendingNewSessionPlan(): string | null { method pendingNewSessionPlan (line 332) | set pendingNewSessionPlan(value: string | null) { method planFilePath (line 336) | get planFilePath(): string | null { method planFilePath (line 340) | set planFilePath(value: string | null) { method prePlanPermissionMode (line 344) | get prePlanPermissionMode(): PermissionMode | null { method prePlanPermissionMode (line 348) | set prePlanPermissionMode(value: PermissionMode | null) { method clearFlavorTimerInterval (line 356) | clearFlavorTimerInterval(): void { method resetStreamingState (line 363) | resetStreamingState(): void { method clearMaps (line 380) | clearMaps(): void { method resetForNewConversation (line 386) | resetForNewConversation(): void { method getPersistedMessages (line 396) | getPersistedMessages(): ChatMessage[] { FILE: src/features/chat/state/types.ts type QueuedMessage (line 21) | interface QueuedMessage { type PendingToolCall (line 30) | interface PendingToolCall { type StoredSelection (line 36) | interface StoredSelection { type ChatStateData (line 47) | interface ChatStateData { type ChatStateCallbacks (line 111) | interface ChatStateCallbacks { type QueryOptions (line 122) | interface QueryOptions { FILE: src/features/chat/tabs/Tab.ts type TabCreateOptions (line 41) | interface TabCreateOptions { function createTab (line 57) | function createTab(options: TabCreateOptions): TabData { function autoResizeTextarea (line 147) | function autoResizeTextarea(textarea: HTMLTextAreaElement): void { function buildTabDOM (line 174) | function buildTabDOM(contentEl: HTMLElement): TabDOMElements { function initializeTabService (line 238) | async function initializeTabService( function initializeContextManagers (line 303) | function initializeContextManagers(tab: TabData, plugin: ClaudianPlugin)... function initializeSlashCommands (line 350) | function initializeSlashCommands( function initializeInstructionAndTodo (line 374) | function initializeInstructionAndTodo(tab: TabData, plugin: ClaudianPlug... function initializeInputToolbar (line 424) | function initializeInputToolbar(tab: TabData, plugin: ClaudianPlugin): v... type InitializeTabUIOptions (line 516) | interface InitializeTabUIOptions { function initializeTabUI (line 524) | function initializeTabUI( type ForkContext (line 583) | interface ForkContext { function deepCloneMessages (line 593) | function deepCloneMessages(messages: ChatMessage[]): ChatMessage[] { function countUserMessagesForForkTitle (line 601) | function countUserMessagesForForkTitle(messages: ChatMessage[]): number { type ForkSource (line 606) | interface ForkSource { function resolveForkSource (line 617) | function resolveForkSource(tab: TabData, plugin: ClaudianPlugin): ForkSo... function handleForkRequest (line 641) | async function handleForkRequest( function handleForkAll (line 685) | async function handleForkAll( function initializeTabControllers (line 729) | function initializeTabControllers( function wireTabInputEvents (line 903) | function wireTabInputEvents(tab: TabData, plugin: ClaudianPlugin): void { function activateTab (line 1041) | function activateTab(tab: TabData): void { function deactivateTab (line 1053) | function deactivateTab(tab: TabData): void { function destroyTab (line 1064) | async function destroyTab(tab: TabData): Promise { function getTabTitle (line 1123) | function getTabTitle(tab: TabData, plugin: ClaudianPlugin): string { function setupServiceCallbacks (line 1134) | function setupServiceCallbacks(tab: TabData, plugin: ClaudianPlugin): vo... function generateMessageId (line 1193) | function generateMessageId(): string { function renderAutoTriggeredTurn (line 1201) | function renderAutoTriggeredTurn(tab: TabData, chunks: StreamChunk[]): v... function updatePlanModeUI (line 1238) | function updatePlanModeUI(tab: TabData, plugin: ClaudianPlugin, mode: Pe... FILE: src/features/chat/tabs/TabBar.ts type TabBarCallbacks (line 4) | interface TabBarCallbacks { class TabBar (line 18) | class TabBar { method constructor (line 22) | constructor(containerEl: HTMLElement, callbacks: TabBarCallbacks) { method build (line 29) | private build(): void { method update (line 37) | update(items: TabBarItem[]): void { method renderBadge (line 48) | private renderBadge(item: TabBarItem): void { method destroy (line 83) | destroy(): void { FILE: src/features/chat/tabs/TabManager.ts class TabManager (line 39) | class TabManager implements TabManagerInterface { method getMaxTabs (line 56) | private getMaxTabs(): number { method constructor (line 61) | constructor( method createTab (line 85) | async createTab(conversationId?: string | null, tabId?: TabId): Promis... method switchToTab (line 148) | async switchToTab(tabId: TabId): Promise { method closeTab (line 211) | async closeTab(tabId: TabId, force = false): Promise { method getActiveTab (line 276) | getActiveTab(): TabData | null { method getActiveTabId (line 281) | getActiveTabId(): TabId | null { method getTab (line 286) | getTab(tabId: TabId): TabData | null { method getAllTabs (line 291) | getAllTabs(): TabData[] { method getTabCount (line 296) | getTabCount(): number { method canCreateTab (line 301) | canCreateTab(): boolean { method getTabBarItems (line 310) | getTabBarItems(): TabBarItem[] { method openConversation (line 338) | async openConversation(conversationId: string, preferNewTab = false): ... method createNewConversation (line 376) | async createNewConversation(): Promise { method handleForkRequest (line 389) | private async handleForkRequest(context: ForkContext): Promise { method forkToNewTab (line 411) | async forkToNewTab(context: ForkContext): Promise { method forkInCurrentTab (line 426) | async forkInCurrentTab(context: ForkContext): Promise { method createForkConversation (line 440) | private async createForkConversation(context: ForkContext): Promise { method initializeActiveTabService (line 535) | private async initializeActiveTabService(): Promise { method getSdkCommands (line 559) | async getSdkCommands(): Promise { method broadcastToAllTabs (line 578) | async broadcastToAllTabs(fn: (service: ClaudianService) => Promise { FILE: src/features/chat/tabs/types.ts constant DEFAULT_MAX_TABS (line 42) | const DEFAULT_MAX_TABS = 3; constant MIN_TABS (line 47) | const MIN_TABS = 3; constant MAX_TABS (line 53) | const MAX_TABS = 10; constant TEXTAREA_MIN_MAX_HEIGHT (line 59) | const TEXTAREA_MIN_MAX_HEIGHT = 150; constant TEXTAREA_MAX_HEIGHT_PERCENT (line 65) | const TEXTAREA_MAX_HEIGHT_PERCENT = 0.55; type TabManagerViewHost (line 72) | interface TabManagerViewHost extends Component { type TabManagerInterface (line 84) | interface TabManagerInterface { type TabId (line 93) | type TabId = string; function generateTabId (line 96) | function generateTabId(): TabId { type TabControllers (line 104) | interface TabControllers { type TabServices (line 117) | interface TabServices { type TabUIComponents (line 126) | interface TabUIComponents { type TabDOMElements (line 145) | interface TabDOMElements { type TabData (line 175) | interface TabData { type PersistedTabState (line 210) | interface PersistedTabState { type PersistedTabManagerState (line 218) | interface PersistedTabManagerState { type TabManagerCallbacks (line 226) | interface TabManagerCallbacks { type TabBarItem (line 252) | interface TabBarItem { FILE: src/features/chat/ui/BangBashModeManager.ts type BangBashModeCallbacks (line 5) | interface BangBashModeCallbacks { type BangBashModeState (line 11) | interface BangBashModeState { class BangBashModeManager (line 16) | class BangBashModeManager { method constructor (line 23) | constructor( method handleTriggerKey (line 32) | handleTriggerKey(e: KeyboardEvent): boolean { method handleInputChange (line 42) | handleInputChange(): void { method enterMode (line 47) | private enterMode(): boolean { method exitMode (line 57) | private exitMode(): void { method handleKeydown (line 66) | handleKeydown(e: KeyboardEvent): boolean { method isActive (line 86) | isActive(): boolean { method getRawCommand (line 90) | getRawCommand(): string { method submit (line 94) | private async submit(): Promise { method clear (line 112) | clear(): void { method destroy (line 118) | destroy(): void { FILE: src/features/chat/ui/FileContext.ts type FileContextCallbacks (line 19) | interface FileContextCallbacks { class FileContextManager (line 27) | class FileContextManager { method constructor (line 46) | constructor( method getCurrentNotePath (line 112) | getCurrentNotePath(): string | null { method getAttachedFiles (line 116) | getAttachedFiles(): Set { method shouldSendCurrentNote (line 121) | shouldSendCurrentNote(notePath?: string | null): boolean { method markCurrentNoteSent (line 127) | markCurrentNoteSent() { method isSessionStarted (line 131) | isSessionStarted(): boolean { method startSession (line 135) | startSession() { method resetForNewConversation (line 140) | resetForNewConversation() { method resetForLoadedConversation (line 147) | resetForLoadedConversation(hasMessages: boolean) { method setCurrentNote (line 154) | setCurrentNote(notePath: string | null) { method autoAttachActiveFile (line 163) | autoAttachActiveFile() { method handleFileOpen (line 176) | handleFileOpen(file: TFile) { method markFileCacheDirty (line 192) | markFileCacheDirty() { method markFolderCacheDirty (line 196) | markFolderCacheDirty() { method handleInputChange (line 201) | handleInputChange() { method handleMentionKeydown (line 206) | handleMentionKeydown(e: KeyboardEvent): boolean { method isMentionDropdownVisible (line 210) | isMentionDropdownVisible(): boolean { method hideMentionDropdown (line 214) | hideMentionDropdown() { method containsElement (line 218) | containsElement(el: Node): boolean { method transformContextMentions (line 222) | transformContextMentions(text: string): string { method destroy (line 255) | destroy() { method normalizePathForVault (line 263) | normalizePathForVault(rawPath: string | undefined | null): string | nu... method refreshCurrentNoteChip (line 268) | private refreshCurrentNoteChip(): void { method handleFileRenamed (line 273) | private handleFileRenamed(oldPath: string, newPath: string) { method handleFileDeleted (line 300) | private handleFileDeleted(deletedPath: string): void { method setMcpManager (line 327) | setMcpManager(manager: McpServerManager | null): void { method setAgentService (line 331) | setAgentService(agentManager: AgentManager | null): void { method setOnMcpMentionChange (line 336) | setOnMcpMentionChange(callback: (servers: Set) => void): void { method preScanExternalContexts (line 344) | preScanExternalContexts(): void { method getMentionedMcpServers (line 348) | getMentionedMcpServers(): Set { method clearMcpMentions (line 352) | clearMcpMentions(): void { method updateMcpMentionsFromText (line 356) | updateMcpMentionsFromText(text: string): void { method hasExcludedTag (line 360) | private hasExcludedTag(file: TFile): boolean { FILE: src/features/chat/ui/ImageContext.ts constant MAX_IMAGE_SIZE (line 6) | const MAX_IMAGE_SIZE = 5 * 1024 * 1024; constant IMAGE_EXTENSIONS (line 8) | const IMAGE_EXTENSIONS: Record = { type ImageContextCallbacks (line 16) | interface ImageContextCallbacks { class ImageContextManager (line 20) | class ImageContextManager { method constructor (line 29) | constructor( method getAttachedImages (line 51) | getAttachedImages(): ImageAttachment[] { method hasImages (line 55) | hasImages(): boolean { method clearImages (line 59) | clearImages() { method setImages (line 66) | setImages(images: ImageAttachment[]) { method setupDragAndDrop (line 75) | private setupDragAndDrop() { method handleDragEnter (line 111) | private handleDragEnter(e: DragEvent) { method handleDragOver (line 120) | private handleDragOver(e: DragEvent) { method handleDragLeave (line 125) | private handleDragLeave(e: DragEvent) { method handleDrop (line 146) | private async handleDrop(e: DragEvent) { method setupPasteHandler (line 162) | private setupPasteHandler() { method isImageFile (line 181) | private isImageFile(file: File): boolean { method getMediaType (line 185) | private getMediaType(filename: string): ImageMediaType | null { method addImageFromFile (line 190) | private async addImageFromFile(file: File, source: 'paste' | 'drop'): ... method fileToBase64 (line 224) | private async fileToBase64(file: File): Promise { method updateImagePreview (line 234) | private updateImagePreview() { method renderImagePreview (line 249) | private renderImagePreview(id: string, image: ImageAttachment) { method showFullImage (line 284) | private showFullImage(image: ImageAttachment) { method generateId (line 316) | private generateId(): string { method truncateName (line 320) | private truncateName(name: string, maxLen: number): string { method formatSize (line 328) | private formatSize(bytes: number): string { method notifyImageError (line 334) | private notifyImageError(message: string, error?: unknown) { FILE: src/features/chat/ui/InputToolbar.ts type ToolbarSettings (line 25) | interface ToolbarSettings { type ToolbarCallbacks (line 34) | interface ToolbarCallbacks { class ModelSelector (line 43) | class ModelSelector { method constructor (line 50) | constructor(parentEl: HTMLElement, callbacks: ToolbarCallbacks) { method getAvailableModels (line 56) | private getAvailableModels() { method render (line 72) | private render() { method updateDisplay (line 83) | updateDisplay() { method setReady (line 97) | setReady(ready: boolean) { method renderOptions (line 102) | renderOptions() { class ThinkingBudgetSelector (line 130) | class ThinkingBudgetSelector { method constructor (line 138) | constructor(parentEl: HTMLElement, callbacks: ToolbarCallbacks) { method render (line 144) | private render() { method renderEffortGears (line 162) | private renderEffortGears() { method renderBudgetGears (line 190) | private renderBudgetGears() { method updateDisplay (line 219) | updateDisplay() { class PermissionToggle (line 238) | class PermissionToggle { method constructor (line 244) | constructor(parentEl: HTMLElement, callbacks: ToolbarCallbacks) { method render (line 250) | private render() { method updateDisplay (line 261) | updateDisplay() { method toggle (line 283) | private async toggle() { type AddExternalContextResult (line 291) | type AddExternalContextResult = class ExternalContextSelector (line 295) | class ExternalContextSelector { method constructor (line 313) | constructor(parentEl: HTMLElement, callbacks: ToolbarCallbacks) { method setOnChange (line 319) | setOnChange(callback: (paths: string[]) => void): void { method setOnPersistenceChange (line 323) | setOnPersistenceChange(callback: (paths: string[]) => void): void { method getExternalContexts (line 327) | getExternalContexts(): string[] { method getPersistentPaths (line 331) | getPersistentPaths(): string[] { method setPersistentPaths (line 335) | setPersistentPaths(paths: string[]): void { method togglePersistence (line 354) | togglePersistence(path: string): void { method mergePersistentPaths (line 369) | private mergePersistentPaths(): void { method setExternalContexts (line 382) | setExternalContexts(paths: string[]): void { method removePath (line 392) | removePath(pathStr: string): void { method addExternalContext (line 410) | addExternalContext(pathInput: string): AddExternalContextResult { method clearExternalContexts (line 462) | clearExternalContexts(persistentPathsFromSettings?: string[]): void { method render (line 474) | private render() { method openFolderPicker (line 496) | private async openFolderPicker() { method formatConflictMessage (line 533) | private formatConflictMessage(newPath: string, conflict: { path: strin... method renderDropdown (line 541) | private renderDropdown() { method shortenPath (line 591) | private shortenPath(fullPath: string): string { method updateDisplay (line 616) | updateDisplay() { class McpServerSelector (line 640) | class McpServerSelector { method constructor (line 649) | constructor(parentEl: HTMLElement) { method setMcpManager (line 654) | setMcpManager(manager: McpServerManager | null): void { method setOnChange (line 661) | setOnChange(callback: (enabled: Set) => void): void { method getEnabledServers (line 665) | getEnabledServers(): Set { method addMentionedServers (line 669) | addMentionedServers(names: Set): void { method clearEnabled (line 683) | clearEnabled(): void { method setEnabledServers (line 689) | setEnabledServers(names: string[]): void { method pruneEnabledServers (line 696) | private pruneEnabledServers(): void { method render (line 711) | private render() { method renderDropdown (line 732) | private renderDropdown() { method renderServerItem (line 758) | private renderServerItem(listEl: HTMLElement, server: ClaudianMcpServe... method toggleServer (line 794) | private toggleServer(name: string, itemEl: HTMLElement) { method updateDisplay (line 817) | updateDisplay() { class ContextUsageMeter (line 850) | class ContextUsageMeter { method constructor (line 856) | constructor(parentEl: HTMLElement) { method render (line 863) | private render() { method update (line 901) | update(usage: UsageInfo | null): void { method formatTokens (line 931) | private formatTokens(tokens: number): string { function createInputToolbar (line 939) | function createInputToolbar( FILE: src/features/chat/ui/InstructionModeManager.ts type InstructionModeCallbacks (line 1) | interface InstructionModeCallbacks { type InstructionModeState (line 7) | interface InstructionModeState { constant INSTRUCTION_MODE_PLACEHOLDER (line 12) | const INSTRUCTION_MODE_PLACEHOLDER = '# Save in custom system prompt'; class InstructionModeManager (line 14) | class InstructionModeManager { method constructor (line 21) | constructor( method handleTriggerKey (line 34) | handleTriggerKey(e: KeyboardEvent): boolean { method handleInputChange (line 46) | handleInputChange(): void { method enterMode (line 62) | private enterMode(): boolean { method exitMode (line 74) | private exitMode(): void { method handleKeydown (line 84) | handleKeydown(e: KeyboardEvent): boolean { method isActive (line 110) | isActive(): boolean { method getRawInstruction (line 115) | getRawInstruction(): string { method submit (line 120) | private async submit(): Promise { method cancel (line 136) | private cancel(): void { method clear (line 143) | clear(): void { method destroy (line 150) | destroy(): void { FILE: src/features/chat/ui/NavigationSidebar.ts class NavigationSidebar (line 7) | class NavigationSidebar { method constructor (line 15) | constructor( method createButton (line 31) | private createButton(cls: string, icon: string, label: string): HTMLEl... method setupEventListeners (line 38) | private setupEventListeners(): void { method updateVisibility (line 60) | updateVisibility(): void { method scrollToMessage (line 69) | private scrollToMessage(direction: 'prev' | 'next'): void { method destroy (line 100) | destroy(): void { FILE: src/features/chat/ui/StatusPanel.ts type PanelBashOutput (line 8) | interface PanelBashOutput { constant MAX_BASH_OUTPUTS (line 16) | const MAX_BASH_OUTPUTS = 50; class StatusPanel (line 21) | class StatusPanel { method mount (line 50) | mount(containerEl: HTMLElement): void { method remount (line 59) | remount(): void { method createPanel (line 112) | private createPanel(): void { method updateTodos (line 186) | updateTodos(todos: TodoItem[] | null): void { method renderTodoHeader (line 224) | private renderTodoHeader(completedCount: number, totalCount: number, c... method renderTodoContent (line 264) | private renderTodoContent(todos: TodoItem[]): void { method toggleTodos (line 272) | private toggleTodos(): void { method updateTodoDisplay (line 280) | private updateTodoDisplay(): void { method updateTodoAriaLabel (line 301) | private updateTodoAriaLabel(completedCount: number, totalCount: number... method scrollToBottom (line 315) | private scrollToBottom(): void { method truncateDescription (line 325) | private truncateDescription(description: string, maxLength = 50): stri... method addBashOutput (line 330) | addBashOutput(info: PanelBashOutput): void { method updateBashOutput (line 341) | updateBashOutput(id: string, updates: Partial { method appendActionButton (line 508) | private appendActionButton( method toggleBashSection (line 535) | private toggleBashSection(): void { method destroy (line 547) | destroy(): void { FILE: src/features/chat/ui/file-context/state/FileContextState.ts class FileContextState (line 1) | class FileContextState { method getAttachedFiles (line 7) | getAttachedFiles(): Set { method hasSentCurrentNote (line 11) | hasSentCurrentNote(): boolean { method markCurrentNoteSent (line 15) | markCurrentNoteSent(): void { method isSessionStarted (line 19) | isSessionStarted(): boolean { method startSession (line 23) | startSession(): void { method resetForNewConversation (line 27) | resetForNewConversation(): void { method resetForLoadedConversation (line 34) | resetForLoadedConversation(hasMessages: boolean): void { method setAttachedFiles (line 41) | setAttachedFiles(files: string[]): void { method attachFile (line 48) | attachFile(path: string): void { method detachFile (line 52) | detachFile(path: string): void { method clearAttachments (line 56) | clearAttachments(): void { method getMentionedMcpServers (line 60) | getMentionedMcpServers(): Set { method clearMcpMentions (line 64) | clearMcpMentions(): void { method setMentionedMcpServers (line 68) | setMentionedMcpServers(mentions: Set): boolean { method addMentionedMcpServer (line 80) | addMentionedMcpServer(name: string): void { FILE: src/features/chat/ui/file-context/view/FileChipsView.ts type FileChipsViewCallbacks (line 3) | interface FileChipsViewCallbacks { class FileChipsView (line 8) | class FileChipsView { method constructor (line 13) | constructor(containerEl: HTMLElement, callbacks: FileChipsViewCallback... method destroy (line 24) | destroy(): void { method renderCurrentNote (line 28) | renderCurrentNote(filePath: string | null): void { method renderFileChip (line 42) | private renderFileChip(filePath: string, onRemove: () => void): void { FILE: src/features/inline-edit/InlineEditService.ts type InlineEditMode (line 21) | type InlineEditMode = 'selection' | 'cursor'; type InlineEditSelectionRequest (line 23) | interface InlineEditSelectionRequest { type InlineEditCursorRequest (line 33) | interface InlineEditCursorRequest { type InlineEditRequest (line 41) | type InlineEditRequest = InlineEditSelectionRequest | InlineEditCursorRe... type InlineEditResult (line 43) | interface InlineEditResult { function parseInlineEditResponse (line 52) | function parseInlineEditResponse(responseText: string): InlineEditResult { function buildCursorPrompt (line 71) | function buildCursorPrompt(request: InlineEditCursorRequest): string { function buildInlineEditPrompt (line 95) | function buildInlineEditPrompt(request: InlineEditRequest): string { function createReadOnlyHook (line 122) | function createReadOnlyHook(): HookCallbackMatcher { function createVaultRestrictionHook (line 149) | function createVaultRestrictionHook(vaultPath: string): HookCallbackMatc... function extractTextFromSdkMessage (line 211) | function extractTextFromSdkMessage(message: any): string | null { class InlineEditService (line 233) | class InlineEditService { method constructor (line 238) | constructor(plugin: ClaudianPlugin) { method resetConversation (line 242) | resetConversation(): void { method editText (line 246) | async editText(request: InlineEditRequest): Promise { method continueConversation (line 252) | async continueConversation(message: string, contextFiles?: string[]): ... method sendMessage (line 264) | private async sendMessage(prompt: string): Promise { method cancel (line 351) | cancel(): void { FILE: src/features/inline-edit/ui/InlineEditModal.ts type InlineEditContext (line 27) | type InlineEditContext = class DiffWidget (line 53) | class DiffWidget extends WidgetType { method constructor (line 54) | constructor(private diffHtml: string, private controller: InlineEditCo... method toDOM (line 57) | toDOM(): HTMLElement { method eq (line 83) | eq(other: DiffWidget): boolean { method ignoreEvent (line 86) | ignoreEvent(): boolean { class InputWidget (line 91) | class InputWidget extends WidgetType { method constructor (line 92) | constructor(private controller: InlineEditController) { method toDOM (line 95) | toDOM(): HTMLElement { method eq (line 98) | eq(): boolean { method ignoreEvent (line 101) | ignoreEvent(): boolean { type DiffOp (line 145) | interface DiffOp { type: 'equal' | 'insert' | 'delete'; text: string; } function computeDiff (line 147) | function computeDiff(oldText: string, newText: string): DiffOp[] { function diffToHtml (line 189) | function diffToHtml(ops: DiffOp[]): string { type InlineEditDecision (line 200) | type InlineEditDecision = 'accept' | 'edit' | 'reject'; class InlineEditModal (line 202) | class InlineEditModal { method constructor (line 205) | constructor( method openAndWait (line 215) | async openAndWait(): Promise<{ decision: InlineEditDecision; editedTex... class InlineEditController (line 254) | class InlineEditController { method constructor (line 275) | constructor( method updatePositionsFromEditor (line 303) | private updatePositionsFromEditor() { method show (line 323) | show() { method updateHighlight (line 346) | private updateHighlight() { method updateSelectionHighlight (line 363) | private updateSelectionHighlight(): void { method attachSelectionListeners (line 371) | private attachSelectionListeners() { method createInputDOM (line 392) | createInputDOM(): HTMLElement { method generate (line 457) | private async generate() { method showAgentReply (line 521) | private showAgentReply(message: string) { method handleError (line 528) | private handleError(errorMessage: string) { method showDiffInPlace (line 538) | private showDiffInPlace() { method showInsertionInPlace (line 558) | private showInsertionInPlace() { method installAcceptRejectHandler (line 580) | private installAcceptRejectHandler() { method accept (line 594) | accept() { method reject (line 613) | reject() { method removeSelectionListeners (line 619) | private removeSelectionListeners() { method cleanup (line 627) | private cleanup(options?: { keepSelectionHighlight?: boolean }) { method restoreSelectionHighlight (line 652) | private restoreSelectionHighlight(): void { method handleKeydown (line 659) | private handleKeydown(e: KeyboardEvent) { method normalizePathForVault (line 674) | private normalizePathForVault(rawPath: string | undefined | null): str... method resolveContextFilesFromMessage (line 684) | private resolveContextFilesFromMessage(message: string): string[] { FILE: src/features/settings/ClaudianSettings.ts function formatHotkey (line 20) | function formatHotkey(hotkey: { modifiers: string[]; key: string }): str... function openHotkeySettings (line 32) | function openHotkeySettings(app: App): void { function getHotkeyForCommand (line 49) | function getHotkeyForCommand(app: App, commandId: string): string | null { function addHotkeySettingRow (line 62) | function addHotkeySettingRow( class ClaudianSettingTab (line 77) | class ClaudianSettingTab extends PluginSettingTab { method constructor (line 81) | constructor(app: App, plugin: ClaudianPlugin) { method normalizeModelVariantSettings (line 86) | private normalizeModelVariantSettings(): void { method display (line 90) | display(): void { method renderContextLimitsSection (line 728) | private renderContextLimitsSection(): void { method restartServiceForPromptChange (line 800) | private async restartServiceForPromptChange(): Promise { FILE: src/features/settings/keyboardNavigation.ts constant NAV_ACTIONS (line 3) | const NAV_ACTIONS = ['scrollUp', 'scrollDown', 'focusInput'] as const; type NavAction (line 4) | type NavAction = (typeof NAV_ACTIONS)[number]; FILE: src/features/settings/ui/AgentSettings.ts constant MODEL_OPTIONS (line 10) | const MODEL_OPTIONS = [ class AgentModal (line 17) | class AgentModal extends Modal { method constructor (line 22) | constructor( method onOpen (line 34) | onOpen() { method onClose (line 205) | onClose() { class AgentSettings (line 210) | class AgentSettings { method constructor (line 214) | constructor(containerEl: HTMLElement, plugin: ClaudianPlugin) { method render (line 220) | private render(): void { method renderAgentItem (line 258) | private renderAgentItem(listEl: HTMLElement, agent: AgentDefinition): ... method refreshAgents (line 302) | private async refreshAgents(): Promise { method openAgentModal (line 312) | private async openAgentModal(existingAgent: AgentDefinition | null): P... method saveAgent (line 334) | private async saveAgent(agent: AgentDefinition, existing: AgentDefinit... method deleteAgent (line 360) | private async deleteAgent(agent: AgentDefinition): Promise { FILE: src/features/settings/ui/EnvSnippetManager.ts class EnvSnippetModal (line 10) | class EnvSnippetModal extends Modal { method constructor (line 15) | constructor(app: App, plugin: ClaudianPlugin, snippet: EnvSnippet | nu... method onOpen (line 22) | onOpen() { method onClose (line 168) | onClose() { class EnvSnippetManager (line 174) | class EnvSnippetManager { method constructor (line 179) | constructor(containerEl: HTMLElement, plugin: ClaudianPlugin, onContex... method render (line 186) | private render() { method saveCurrentEnv (line 263) | private async saveCurrentEnv() { method insertSnippet (line 278) | private async insertSnippet(snippet: EnvSnippet) { method editSnippet (line 303) | private editSnippet(snippet: EnvSnippet) { method deleteSnippet (line 321) | private async deleteSnippet(snippet: EnvSnippet) { method refresh (line 328) | public refresh() { FILE: src/features/settings/ui/McpServerModal.ts class McpServerModal (line 16) | class McpServerModal extends Modal { method constructor (line 32) | constructor( method initFromConfig (line 60) | private initFromConfig(config: McpServerConfig) { method onOpen (line 77) | onOpen() { method renderTypeFields (line 148) | private renderTypeFields() { method renderStdioFields (line 159) | private renderStdioFields() { method renderUrlFields (line 193) | private renderUrlFields() { method handleKeyDown (line 224) | private handleKeyDown(e: KeyboardEvent) { method save (line 235) | private save() { method parseEnvString (line 307) | private parseEnvString(envStr: string): Record { method envRecordToString (line 329) | private envRecordToString(env: Record | undefined): st... method onClose (line 336) | onClose() { FILE: src/features/settings/ui/McpSettingsManager.ts class McpSettingsManager (line 11) | class McpSettingsManager { method broadcastMcpReloadToAllViews (line 20) | private async broadcastMcpReloadToAllViews(): Promise { method constructor (line 29) | constructor(containerEl: HTMLElement, plugin: ClaudianPlugin) { method loadAndRender (line 35) | private async loadAndRender() { method render (line 40) | private render() { method renderServerItem (line 100) | private renderServerItem(listEl: HTMLElement, server: ClaudianMcpServe... method testServer (line 166) | private async testServer(server: ClaudianMcpServer) { method updateServerDisabledTools (line 189) | private async updateServerDisabledTools( method updateDisabledTool (line 211) | private async updateDisabledTool( method updateAllDisabledTools (line 228) | private async updateAllDisabledTools(server: ClaudianMcpServer, disabl... method getServerPreview (line 235) | private getServerPreview(server: ClaudianMcpServer, type: McpServerTyp... method openModal (line 246) | private openModal(existing: ClaudianMcpServer | null, initialType?: Mc... method importFromClipboard (line 259) | private async importFromClipboard() { method saveServer (line 299) | private async saveServer(server: ClaudianMcpServer, existing: Claudian... method importServers (line 327) | private async importServers(servers: Array<{ name: string; config: Mcp... method toggleServer (line 369) | private async toggleServer(server: ClaudianMcpServer) { method deleteServer (line 377) | private async deleteServer(server: ClaudianMcpServer) { method refresh (line 390) | public refresh() { FILE: src/features/settings/ui/McpTestModal.ts function formatToggleError (line 6) | function formatToggleError(error: unknown): string { class McpTestModal (line 22) | class McpTestModal extends Modal { method constructor (line 36) | constructor( method onOpen (line 54) | onOpen() { method setResult (line 61) | setResult(result: McpTestResult) { method setError (line 67) | setError(error: string) { method renderLoading (line 73) | private renderLoading() { method render (line 87) | private render() { method renderTool (line 162) | private renderTool(container: HTMLElement, tool: McpTool) { method handleToolToggle (line 207) | private async handleToolToggle( method updateToolState (line 248) | private updateToolState(toolEl: HTMLElement, enabled: boolean) { method updateToggleAllButton (line 252) | private updateToggleAllButton() { method handleToggleAll (line 267) | private async handleToggleAll() { method onClose (line 324) | onClose() { FILE: src/features/settings/ui/PluginSettingsManager.ts class PluginSettingsManager (line 6) | class PluginSettingsManager { method constructor (line 10) | constructor(containerEl: HTMLElement, plugin: ClaudianPlugin) { method render (line 16) | private render() { method renderPluginItem (line 61) | private renderPluginItem(listEl: HTMLElement, plugin: ClaudianPluginTy... method togglePlugin (line 91) | private async togglePlugin(pluginId: string) { method refreshPlugins (line 121) | private async refreshPlugins() { method refresh (line 135) | public refresh() { FILE: src/features/settings/ui/SlashCommandSettings.ts function resolveAllowedTools (line 9) | function resolveAllowedTools(inputValue: string, parsedTools?: string[])... class SlashCommandModal (line 20) | class SlashCommandModal extends Modal { method constructor (line 25) | constructor( method onOpen (line 37) | onOpen() { method onClose (line 277) | onClose() { class SlashCommandSettings (line 282) | class SlashCommandSettings { method constructor (line 286) | constructor(containerEl: HTMLElement, plugin: ClaudianPlugin) { method render (line 292) | private render(): void { method renderCommandItem (line 322) | private renderCommandItem(listEl: HTMLElement, cmd: SlashCommand): void { method openCommandModal (line 385) | private openCommandModal(existingCmd: SlashCommand | null): void { method storageFor (line 397) | private storageFor(cmd: SlashCommand) { method saveCommand (line 401) | private async saveCommand(cmd: SlashCommand, existing: SlashCommand | ... method deleteCommand (line 417) | private async deleteCommand(cmd: SlashCommand): Promise { method transformToSkill (line 427) | private async transformToSkill(cmd: SlashCommand): Promise { method reloadCommands (line 456) | private async reloadCommands(): Promise { method refresh (line 460) | public refresh(): void { FILE: src/i18n/constants.ts type LocaleInfo (line 12) | interface LocaleInfo { constant SUPPORTED_LOCALES (line 22) | const SUPPORTED_LOCALES: LocaleInfo[] = [ constant DEFAULT_LOCALE (line 38) | const DEFAULT_LOCALE: Locale = 'en'; function getLocaleInfo (line 43) | function getLocaleInfo(code: Locale): LocaleInfo | undefined { function getLocaleDisplayString (line 50) | function getLocaleDisplayString(code: Locale, includeFlag = true): string { FILE: src/i18n/i18n.ts constant DEFAULT_LOCALE (line 33) | const DEFAULT_LOCALE: Locale = 'en'; function t (line 39) | function t(key: TranslationKey, params?: Record... function tFallback (line 69) | function tFallback(key: TranslationKey, params?: Record { method getActiveEnvironmentVariables (line 647) | getActiveEnvironmentVariables(): string { method getResolvedClaudeCliPath (line 651) | getResolvedClaudeCliPath(): string | null { method getDefaultModelValues (line 659) | private getDefaultModelValues(): string[] { method getPreferredCustomModel (line 663) | private getPreferredCustomModel(envVars: Record, custo... method computeEnvHash (line 672) | private computeEnvHash(envText: string): string { method reconcileModelWithEnvironment (line 698) | private reconcileModelWithEnvironment(envText: string): { method generateConversationId (line 735) | private generateConversationId(): string { method generateDefaultTitle (line 739) | private generateDefaultTitle(): string { method getConversationPreview (line 749) | private getConversationPreview(conv: Conversation): string { method isPendingFork (line 760) | private isPendingFork(conversation: Conversation): boolean { method loadSdkMessagesForConversation (line 766) | private async loadSdkMessagesForConversation(conversation: Conversatio... method enrichAsyncSubagentToolCalls (line 857) | private async enrichAsyncSubagentToolCalls( method applySubagentData (line 898) | private applySubagentData(messages: ChatMessage[], subagentData: Recor... method dedupeMessages (line 981) | private dedupeMessages(messages: ChatMessage[]): ChatMessage[] { method createConversation (line 1002) | async createConversation(sessionId?: string): Promise { method switchConversation (line 1029) | async switchConversation(id: string): Promise { method deleteConversation (line 1044) | async deleteConversation(id: string): Promise { method renameConversation (line 1080) | async renameConversation(id: string, title: string): Promise { method updateConversation (line 1107) | async updateConversation(id: string, updates: Partial): ... method getConversationById (line 1141) | async getConversationById(id: string): Promise { method getConversationSync (line 1155) | getConversationSync(id: string): Conversation | null { method findEmptyConversation (line 1160) | findEmptyConversation(): Conversation | null { method getConversationList (line 1165) | getConversationList(): ConversationMeta[] { method getView (line 1180) | getView(): ClaudianView | null { method getAllViews (line 1189) | getAllViews(): ClaudianView[] { method findConversationAcrossViews (line 1198) | findConversationAcrossViews(conversationId: string): { view: ClaudianV... method getSdkCommands (line 1218) | async getSdkCommands(): Promise { FILE: src/shared/components/ResumeSessionDropdown.ts type ResumeSessionDropdownCallbacks (line 12) | interface ResumeSessionDropdownCallbacks { class ResumeSessionDropdown (line 17) | class ResumeSessionDropdown { method constructor (line 27) | constructor( method handleKeydown (line 49) | handleKeydown(e: KeyboardEvent): boolean { method isVisible (line 77) | isVisible(): boolean { method destroy (line 81) | destroy(): void { method dismiss (line 86) | private dismiss(): void { method selectItem (line 91) | private selectItem(): void { method navigate (line 105) | private navigate(direction: number): void { method updateSelection (line 111) | private updateSelection(): void { method sortConversations (line 123) | private sortConversations(conversations: ConversationMeta[]): Conversa... method render (line 129) | private render(): void { method formatDate (line 176) | private formatDate(timestamp: number): string { FILE: src/shared/components/SelectableDropdown.ts type SelectableDropdownOptions (line 1) | interface SelectableDropdownOptions { type SelectableDropdownRenderOptions (line 9) | interface SelectableDropdownRenderOptions { class SelectableDropdown (line 19) | class SelectableDropdown { method constructor (line 27) | constructor(containerEl: HTMLElement, options: SelectableDropdownOptio... method isVisible (line 32) | isVisible(): boolean { method getElement (line 36) | getElement(): HTMLElement | null { method getSelectedIndex (line 40) | getSelectedIndex(): number { method getSelectedItem (line 44) | getSelectedItem(): T | null { method getItems (line 48) | getItems(): T[] { method hide (line 52) | hide(): void { method destroy (line 58) | destroy(): void { method render (line 65) | render(options: SelectableDropdownRenderOptions): void { method updateSelection (line 116) | updateSelection(): void { method moveSelection (line 127) | moveSelection(delta: number): void { method createDropdownElement (line 133) | private createDropdownElement(): HTMLElement { FILE: src/shared/components/SelectionHighlight.ts type SelectionHighlighter (line 12) | interface SelectionHighlighter { function createSelectionHighlighter (line 17) | function createSelectionHighlighter(): SelectionHighlighter { function showSelectionHighlight (line 71) | function showSelectionHighlight(editorView: EditorView, from: number, to... function hideSelectionHighlight (line 75) | function hideSelectionHighlight(editorView: EditorView): void { FILE: src/shared/components/SlashCommandDropdown.ts constant FILTERED_SDK_COMMANDS (line 16) | const FILTERED_SDK_COMMANDS = new Set([ type SlashCommandDropdownCallbacks (line 25) | interface SlashCommandDropdownCallbacks { type SlashCommandDropdownOptions (line 36) | interface SlashCommandDropdownOptions { class SlashCommandDropdown (line 41) | class SlashCommandDropdown { method constructor (line 61) | constructor( method setEnabled (line 77) | setEnabled(enabled: boolean): void { method setHiddenCommands (line 84) | setHiddenCommands(commands: Set): void { method handleInputChange (line 88) | handleInputChange(): void { method handleKeydown (line 115) | handleKeydown(e: KeyboardEvent): boolean { method isVisible (line 143) | isVisible(): boolean { method hide (line 147) | hide(): void { method destroy (line 155) | destroy(): void { method resetSdkSkillsCache (line 167) | resetSdkSkillsCache(): void { method getInputValue (line 173) | private getInputValue(): string { method getCursorPosition (line 177) | private getCursorPosition(): number { method setInputValue (line 181) | private setInputValue(value: string): void { method setCursorPosition (line 185) | private setCursorPosition(pos: number): void { method showDropdown (line 190) | private async showDropdown(searchText: string): Promise { method buildCommandList (line 242) | private buildCommandList(builtInCommands: SlashCommand[]): SlashComman... method render (line 272) | private render(): void { method createDropdownElement (line 324) | private createDropdownElement(): HTMLElement { method positionFixed (line 337) | private positionFixed(): void { method navigate (line 349) | private navigate(direction: number): void { method updateSelection (line 355) | private updateSelection(): void { method selectItem (line 367) | private selectItem(): void { FILE: src/shared/icons.ts constant MCP_ICON_SVG (line 1) | const MCP_ICON_SVG = `