SYMBOL INDEX (843 symbols across 123 files) FILE: src-tauri/build.rs function main (line 1) | fn main() { FILE: src-tauri/src/checkpoint/manager.rs type CheckpointManager (line 17) | pub struct CheckpointManager { method new (line 29) | pub async fn new( method track_message (line 64) | pub async fn track_message(&self, jsonl_message: String) -> Result<()> { method track_tool_operation (line 89) | async fn track_tool_operation(&self, tool: &str, input: &serde_json::V... method track_file_modification (line 108) | pub async fn track_file_modification(&self, file_path: &str) -> Result... method track_bash_side_effects (line 165) | async fn track_bash_side_effects(&self, command: &str) -> Result<()> { method create_checkpoint (line 188) | pub async fn create_checkpoint( method extract_checkpoint_metadata (line 305) | async fn extract_checkpoint_metadata( method create_file_snapshots (line 401) | async fn create_file_snapshots(&self, checkpoint_id: &str) -> Result Result<... method restore_file_snapshot (line 602) | async fn restore_file_snapshot(&self, snapshot: &FileSnapshot) -> Resu... method get_timeline (line 633) | pub async fn get_timeline(&self) -> SessionTimeline { method list_checkpoints (line 638) | pub async fn list_checkpoints(&self) -> Vec { method collect_checkpoints_from_node (line 650) | fn collect_checkpoints_from_node( method fork_from_checkpoint (line 661) | pub async fn fork_from_checkpoint( method should_auto_checkpoint (line 683) | pub async fn should_auto_checkpoint(&self, message: &str) -> bool { method update_settings (line 749) | pub async fn update_settings( method get_files_modified_since (line 768) | pub async fn get_files_modified_since(&self, since: DateTime) -> ... method get_last_modification_time (line 779) | pub async fn get_last_modification_time(&self) -> Option> { FILE: src-tauri/src/checkpoint/mod.rs type Checkpoint (line 13) | pub struct Checkpoint { type CheckpointMetadata (line 35) | pub struct CheckpointMetadata { type FileSnapshot (line 51) | pub struct FileSnapshot { type TimelineNode (line 71) | pub struct TimelineNode { type SessionTimeline (line 83) | pub struct SessionTimeline { method new (line 181) | pub fn new(session_id: String) -> Self { method find_checkpoint (line 193) | pub fn find_checkpoint(&self, checkpoint_id: &str) -> Option<&Timeline... method find_in_tree (line 199) | fn find_in_tree<'a>(node: &'a TimelineNode, checkpoint_id: &str) -> Op... type CheckpointStrategy (line 101) | pub enum CheckpointStrategy { type FileTracker (line 114) | pub struct FileTracker { type FileState (line 121) | pub struct FileState { type CheckpointResult (line 134) | pub struct CheckpointResult { type CheckpointDiff (line 145) | pub struct CheckpointDiff { type FileDiff (line 162) | pub struct FileDiff { method default (line 174) | fn default() -> Self { type CheckpointPaths (line 215) | pub struct CheckpointPaths { method new (line 222) | pub fn new(claude_dir: &PathBuf, project_id: &str, session_id: &str) -... method checkpoint_dir (line 236) | pub fn checkpoint_dir(&self, checkpoint_id: &str) -> PathBuf { method checkpoint_metadata_file (line 240) | pub fn checkpoint_metadata_file(&self, checkpoint_id: &str) -> PathBuf { method checkpoint_messages_file (line 244) | pub fn checkpoint_messages_file(&self, checkpoint_id: &str) -> PathBuf { method file_snapshot_path (line 249) | pub fn file_snapshot_path(&self, _checkpoint_id: &str, file_hash: &str... method file_reference_path (line 255) | pub fn file_reference_path(&self, checkpoint_id: &str, safe_filename: ... FILE: src-tauri/src/checkpoint/state.rs type CheckpointState (line 15) | pub struct CheckpointState { method new (line 25) | pub fn new() -> Self { method set_claude_dir (line 35) | pub async fn set_claude_dir(&self, claude_dir: PathBuf) { method get_or_create_manager (line 52) | pub async fn get_or_create_manager( method get_manager (line 88) | pub async fn get_manager(&self, session_id: &str) -> Option Option usize { method list_active_sessions (line 117) | pub async fn list_active_sessions(&self) -> Vec { method has_active_manager (line 124) | pub async fn has_active_manager(&self, session_id: &str) -> bool { method clear_all_and_count (line 130) | pub async fn clear_all_and_count(&self) -> usize { function test_checkpoint_state_lifecycle (line 143) | async fn test_checkpoint_state_lifecycle() { FILE: src-tauri/src/checkpoint/storage.rs type CheckpointStorage (line 13) | pub struct CheckpointStorage { method new (line 20) | pub fn new(claude_dir: PathBuf) -> Self { method init_storage (line 28) | pub fn init_storage(&self, project_id: &str, session_id: &str) -> Resu... method save_checkpoint (line 46) | pub fn save_checkpoint( method save_file_snapshot (line 99) | fn save_file_snapshot(&self, paths: &CheckpointPaths, snapshot: &FileS... method load_checkpoint (line 147) | pub fn load_checkpoint( method load_file_snapshots (line 178) | fn load_file_snapshots( method save_timeline (line 241) | pub fn save_timeline(&self, timeline_path: &Path, timeline: &SessionTi... method load_timeline (line 249) | pub fn load_timeline(&self, timeline_path: &Path) -> Result String { method generate_checkpoint_id (line 323) | pub fn generate_checkpoint_id() -> String { method estimate_checkpoint_size (line 328) | pub fn estimate_checkpoint_size(messages: &str, file_snapshots: &[File... method cleanup_old_checkpoints (line 337) | pub fn cleanup_old_checkpoints( method collect_checkpoints (line 381) | fn collect_checkpoints(node: &TimelineNode, checkpoints: &mut Vec Result Vec { function source_preference (line 127) | fn source_preference(installation: &ClaudeInstallation) -> u8 { function discover_system_installations (line 147) | fn discover_system_installations() -> Vec { function try_which_command (line 170) | fn try_which_command() -> Option { function try_which_command (line 214) | fn try_which_command() -> Option { function find_nvm_installations (line 256) | fn find_nvm_installations() -> Vec { function find_nvm_installations (line 315) | fn find_nvm_installations() -> Vec { function find_standard_installations (line 352) | fn find_standard_installations() -> Vec { function find_standard_installations (line 433) | fn find_standard_installations() -> Vec { function get_claude_version (line 502) | fn get_claude_version(path: &str) -> Result, String> { function extract_version_from_output (line 519) | fn extract_version_from_output(stdout: &[u8]) -> Option { function select_best_installation (line 549) | fn select_best_installation(installations: Vec) -> O... function compare_versions (line 581) | fn compare_versions(a: &str, b: &str) -> Ordering { function create_command_with_env (line 621) | pub fn create_command_with_env(program: &str) -> Command { FILE: src-tauri/src/commands/agents.rs function find_claude_binary (line 19) | fn find_claude_binary(app_handle: &AppHandle) -> Result { type Agent (line 25) | pub struct Agent { type AgentRun (line 42) | pub struct AgentRun { type AgentRunMetrics (line 60) | pub struct AgentRunMetrics { method from_jsonl (line 101) | pub fn from_jsonl(jsonl_content: &str) -> Self { type AgentRunWithMetrics (line 69) | pub struct AgentRunWithMetrics { type AgentExport (line 78) | pub struct AgentExport { type AgentData (line 86) | pub struct AgentData { type AgentDb (line 96) | pub struct AgentDb(pub Mutex); function read_session_jsonl (line 170) | pub async fn read_session_jsonl(session_id: &str, project_path: &str) ->... function get_agent_run_with_metrics (line 195) | pub async fn get_agent_run_with_metrics(run: AgentRun) -> AgentRunWithMe... function init_database (line 217) | pub fn init_database(app: &AppHandle) -> SqliteResult { function list_agents (line 350) | pub async fn list_agents(db: State<'_, AgentDb>) -> Result, S... function create_agent (line 385) | pub async fn create_agent( function update_agent (line 440) | pub async fn update_agent( function delete_agent (line 525) | pub async fn delete_agent(db: State<'_, AgentDb>, id: i64) -> Result<(),... function get_agent (line 536) | pub async fn get_agent(db: State<'_, AgentDb>, id: i64) -> Result, id: i64) -> Result) -> Resul... function get_live_session_output (line 1342) | pub async fn get_live_session_output( function get_session_output (line 1351) | pub async fn get_session_output( function stream_session_output (line 1444) | pub async fn stream_session_output( function export_agent (line 1531) | pub async fn export_agent(db: State<'_, AgentDb>, id: i64) -> Result) -> Result, path: String... function list_claude_installations (line 1632) | pub async fn list_claude_installations( function create_command_with_env (line 1646) | fn create_command_with_env(program: &str) -> Command { function import_agent (line 1704) | pub async fn import_agent(db: State<'_, AgentDb>, json_data: String) -> ... function import_agent_from_file (line 1781) | pub async fn import_agent_from_file( type GitHubAgentFile (line 1804) | pub struct GitHubAgentFile { type GitHubApiResponse (line 1814) | struct GitHubApiResponse { function fetch_github_agents (line 1826) | pub async fn fetch_github_agents() -> Result, Strin... function fetch_github_agent_content (line 1872) | pub async fn fetch_github_agent_content(download_url: String) -> Result<... function import_agent_from_github (line 1913) | pub async fn import_agent_from_github( function load_agent_session_history (line 1933) | pub async fn load_agent_session_history( FILE: src-tauri/src/commands/claude.rs type ClaudeProcessState (line 14) | pub struct ClaudeProcessState { method default (line 19) | fn default() -> Self { type Project (line 28) | pub struct Project { type Session (line 43) | pub struct Session { type JsonlEntry (line 62) | struct JsonlEntry { type MessageContent (line 72) | struct MessageContent { type ClaudeSettings (line 79) | pub struct ClaudeSettings { method default (line 85) | fn default() -> Self { type ClaudeVersionStatus (line 94) | pub struct ClaudeVersionStatus { type ClaudeMdFile (line 105) | pub struct ClaudeMdFile { type FileEntry (line 118) | pub struct FileEntry { function find_claude_binary (line 133) | fn find_claude_binary(app_handle: &AppHandle) -> Result { function get_claude_dir (line 138) | fn get_claude_dir() -> Result { function get_project_path_from_sessions (line 147) | fn get_project_path_from_sessions(project_dir: &PathBuf) -> Result String { function extract_first_user_message (line 194) | fn extract_first_user_message(jsonl_path: &PathBuf) -> (Option, ... function create_command_with_env (line 234) | fn create_command_with_env(program: &str) -> Command { function create_system_command (line 293) | fn create_system_command(claude_path: &str, args: Vec, project_p... function get_home_directory (line 310) | pub async fn get_home_directory() -> Result { function list_projects (line 318) | pub async fn list_projects() -> Result, String> { function create_project (line 426) | pub async fn create_project(path: String) -> Result { function get_project_sessions (line 473) | pub async fn get_project_sessions(project_id: String) -> Result Result { function open_new_session (line 584) | pub async fn open_new_session(app: AppHandle, path: Option) -> R... function get_system_prompt (line 626) | pub async fn get_system_prompt() -> Result { function check_claude_version (line 642) | pub async fn check_claude_version(app: AppHandle) -> Result Result Result... function find_claude_md_files (line 765) | pub async fn find_claude_md_files(project_path: String) -> Result Result ... function load_session_history (line 882) | pub async fn load_session_history( function execute_claude_code (line 921) | pub async fn execute_claude_code( function continue_claude_code (line 952) | pub async fn continue_claude_code( function resume_claude_code (line 984) | pub async fn resume_claude_code( function cancel_claude_execution (line 1019) | pub async fn cancel_claude_execution( function list_running_claude_sessions (line 1153) | pub async fn list_running_claude_sessions( function get_claude_session_output (line 1161) | pub async fn get_claude_session_output( function spawn_claude_process (line 1174) | async fn spawn_claude_process( function list_directory_contents (line 1344) | pub async fn list_directory_contents(directory_path: String) -> Result Result Result Command { function find_claude_binary (line 19) | fn find_claude_binary(app_handle: &AppHandle) -> Result { type MCPServer (line 25) | pub struct MCPServer { type ServerStatus (line 48) | pub struct ServerStatus { type MCPProjectConfig (line 59) | pub struct MCPProjectConfig { type MCPServerConfig (line 66) | pub struct MCPServerConfig { type AddServerResult (line 76) | pub struct AddServerResult { type ImportResult (line 84) | pub struct ImportResult { type ImportServerResult (line 92) | pub struct ImportServerResult { function execute_claude_mcp_command (line 99) | fn execute_claude_mcp_command(app_handle: &AppHandle, args: Vec<&str>) -... function mcp_add (line 121) | pub async fn mcp_add( function mcp_list (line 213) | pub async fn mcp_list(app: AppHandle) -> Result, String> { function mcp_get (line 335) | pub async fn mcp_get(app: AppHandle, name: String) -> Result Result Result { function mcp_test_connection (line 644) | pub async fn mcp_test_connection(app: AppHandle, name: String) -> Result... function mcp_reset_project_choices (line 656) | pub async fn mcp_reset_project_choices(app: AppHandle) -> Result Result Result Self { function get_proxy_settings (line 30) | pub async fn get_proxy_settings(db: State<'_, AgentDb>) -> Result Result<(Option Result<(S... function load_command_from_file (line 115) | fn load_command_from_file(file_path: &Path, base_path: &Path, scope: &st... function find_markdown_files (line 169) | fn find_markdown_files(dir: &Path, files: &mut Vec) -> Result<(... function create_default_commands (line 200) | fn create_default_commands() -> Vec { function slash_commands_list (line 249) | pub async fn slash_commands_list( function slash_command_get (line 314) | pub async fn slash_command_get(command_id: String) -> Result Result<()> { FILE: src-tauri/src/commands/storage.rs type TableInfo (line 11) | pub struct TableInfo { type ColumnInfo (line 19) | pub struct ColumnInfo { type TableData (line 30) | pub struct TableData { type QueryResult (line 42) | pub struct QueryResult { function storage_list_tables (line 51) | pub async fn storage_list_tables(db: State<'_, AgentDb>) -> Result Result<(), String> { function is_valid_table_name (line 498) | fn is_valid_table_name(conn: &Connection, table_name: &str) -> Result Result f64 { function parse_jsonl_file (line 140) | fn parse_jsonl_file( function get_earliest_timestamp (line 231) | fn get_earliest_timestamp(path: &PathBuf) -> Option { function get_all_usage_entries (line 252) | fn get_all_usage_entries(claude_path: &PathBuf) -> Vec { function get_usage_stats (line 292) | pub fn get_usage_stats(days: Option) -> Result { function get_usage_by_date_range (line 452) | pub fn get_usage_by_date_range(start_date: String, end_date: String) -> ... function get_usage_details (line 622) | pub fn get_usage_details( function get_session_stats (line 646) | pub fn get_session_stats( FILE: src-tauri/src/lib.rs function run (line 11) | pub fn run() { FILE: src-tauri/src/main.rs function main (line 54) | fn main() { FILE: src-tauri/src/process/registry.rs type ProcessType (line 9) | pub enum ProcessType { type ProcessInfo (line 16) | pub struct ProcessInfo { type ProcessHandle (line 28) | pub struct ProcessHandle { type ProcessRegistry (line 35) | pub struct ProcessRegistry { method new (line 41) | pub fn new() -> Self { method generate_id (line 49) | pub fn generate_id(&self) -> Result { method register_process (line 57) | pub fn register_process( method register_sidecar_process (line 85) | pub fn register_sidecar_process( method register_claude_session (line 122) | pub fn register_claude_session( method register_process_internal (line 156) | fn register_process_internal( method get_running_claude_sessions (line 175) | pub fn get_running_claude_sessions(&self) -> Result, ... method get_claude_session_by_id (line 187) | pub fn get_claude_session_by_id( method unregister_process (line 203) | pub fn unregister_process(&self, run_id: i64) -> Result<(), String> { method get_running_processes (line 211) | pub fn get_running_processes(&self) -> Result, String> { method get_running_agent_processes (line 220) | pub fn get_running_agent_processes(&self) -> Result, ... method get_process (line 233) | pub fn get_process(&self, run_id: i64) -> Result, ... method kill_process (line 239) | pub async fn kill_process(&self, run_id: i64) -> Result { method kill_process_by_pid (line 363) | pub fn kill_process_by_pid(&self, run_id: i64, pid: u32) -> Result Result Result<... method get_live_output (line 483) | pub fn get_live_output(&self, run_id: i64) -> Result { method cleanup_finished_processes (line 495) | pub async fn cleanup_finished_processes(&self) -> Result, Str... method default (line 525) | fn default() -> Self { type ProcessRegistryState (line 531) | pub struct ProcessRegistryState(pub Arc); method default (line 534) | fn default() -> Self { FILE: src-tauri/src/web_main.rs type Args (line 12) | struct Args { function main (line 23) | async fn main() { FILE: src-tauri/src/web_server.rs function find_claude_binary_web (line 24) | fn find_claude_binary_web() -> Result { type AppState (line 63) | pub struct AppState { type ClaudeExecutionRequest (line 70) | pub struct ClaudeExecutionRequest { type QueryParams (line 79) | pub struct QueryParams { type ApiResponse (line 85) | pub struct ApiResponse { function success (line 92) | pub fn success(data: T) -> Self { function error (line 100) | pub fn error(error: String) -> Self { function serve_frontend (line 110) | async fn serve_frontend() -> Html<&'static str> { function get_projects (line 115) | async fn get_projects() -> Json Json>> { function get_usage (line 138) | async fn get_usage() -> Json>> { function get_claude_settings (line 143) | async fn get_claude_settings() -> Json> { function check_claude_version (line 157) | async fn check_claude_version() -> Json> { function list_claude_installations (line 167) | async fn list_claude_installations( function get_system_prompt (line 181) | async fn get_system_prompt() -> Json> { function open_new_session (line 189) | async fn open_new_session() -> Json> { function list_slash_commands (line 195) | async fn list_slash_commands() -> Json Json>> { function load_session_history (line 205) | async fn load_session_history( function list_running_claude_sessions (line 215) | async fn list_running_claude_sessions() -> Json Json> { function continue_claude_code (line 226) | async fn continue_claude_code() -> Json> { function resume_claude_code (line 231) | async fn resume_claude_code() -> Json> { function cancel_claude_execution (line 236) | async fn cancel_claude_execution(Path(sessionId): Path) -> Json<... function get_claude_session_output (line 244) | async fn get_claude_session_output(Path(sessionId): Path) -> Jso... function claude_websocket (line 253) | async fn claude_websocket(ws: WebSocketUpgrade, AxumState(state): AxumSt... function claude_websocket_handler (line 257) | async fn claude_websocket_handler(socket: WebSocket, state: AppState) { function execute_claude_command (line 445) | async fn execute_claude_command( function continue_claude_command (line 571) | async fn continue_claude_command( function resume_claude_command (line 648) | async fn resume_claude_command( function send_to_session (line 746) | async fn send_to_session(state: &AppState, session_id: &str, message: St... function create_web_server (line 770) | pub async fn create_web_server(port: u16) -> Result<(), Box) -> Result<(), Box { method constructor (line 18) | constructor(props: Props) { method getDerivedStateFromError (line 23) | static getDerivedStateFromError(error: Error): State { method componentDidCatch (line 27) | componentDidCatch(error: Error, errorInfo: ErrorInfo) { method render (line 45) | render() { function withAnalyticsErrorBoundary (line 78) | function withAnalyticsErrorBoundary

( FILE: src/components/App.cleaned.tsx function AppContent (line 17) | function AppContent() { function App (line 170) | function App() { FILE: src/components/CCAgents.tsx type CCAgentsProps (line 44) | interface CCAgentsProps { constant AGENT_ICONS (line 56) | const AGENT_ICONS = ICON_MAP; type AgentIconName (line 58) | type AgentIconName = keyof typeof AGENT_ICONS; FILE: src/components/CheckpointSettings.tsx type CheckpointSettingsProps (line 20) | interface CheckpointSettingsProps { FILE: src/components/ClaudeBinaryDialog.tsx type ClaudeBinaryDialogProps (line 8) | interface ClaudeBinaryDialogProps { function ClaudeBinaryDialog (line 15) | function ClaudeBinaryDialog({ open, onOpenChange, onSuccess, onError }: ... FILE: src/components/ClaudeCodeSession.refactored.tsx type ClaudeCodeSessionProps (line 25) | interface ClaudeCodeSessionProps { FILE: src/components/ClaudeCodeSession.tsx type UnlistenFn (line 21) | type UnlistenFn = () => void; type ClaudeCodeSessionProps (line 65) | interface ClaudeCodeSessionProps { function handleStreamMessage (line 605) | function handleStreamMessage(payload: string | ClaudeStreamMessage) { FILE: src/components/ClaudeFileEditor.tsx type ClaudeFileEditorProps (line 10) | interface ClaudeFileEditorProps { FILE: src/components/ClaudeMemoriesDropdown.tsx type ClaudeMemoriesDropdownProps (line 10) | interface ClaudeMemoriesDropdownProps { FILE: src/components/ClaudeVersionSelector.tsx type ClaudeVersionSelectorProps (line 11) | interface ClaudeVersionSelectorProps { FILE: src/components/CreateAgent.tsx type CreateAgentProps (line 16) | interface CreateAgentProps { FILE: src/components/CustomTitlebar.tsx type CustomTitlebarProps (line 7) | interface CustomTitlebarProps { FILE: src/components/ErrorBoundary.tsx type ErrorBoundaryProps (line 6) | interface ErrorBoundaryProps { type ErrorBoundaryState (line 11) | interface ErrorBoundaryState { class ErrorBoundary (line 19) | class ErrorBoundary extends Component { constant EVENT_INFO (line 83) | const EVENT_INFO: Record { FILE: src/components/ui/select.tsx type SelectOption (line 145) | interface SelectOption { type SelectProps (line 150) | interface SelectProps { FILE: src/components/ui/split-pane.tsx type SplitPaneProps (line 4) | interface SplitPaneProps { FILE: src/components/ui/switch.tsx type SwitchProps (line 4) | interface SwitchProps FILE: src/components/ui/tabs.tsx type TabsProps (line 12) | interface TabsProps { type TabsListProps (line 55) | interface TabsListProps { type TabsTriggerProps (line 82) | interface TabsTriggerProps { type TabsContentProps (line 124) | interface TabsContentProps { FILE: src/components/ui/textarea.tsx type TextareaProps (line 4) | interface TextareaProps FILE: src/components/ui/toast.tsx type ToastType (line 6) | type ToastType = "success" | "error" | "info"; type ToastProps (line 8) | interface ToastProps { type ToastContainerProps (line 97) | interface ToastContainerProps { FILE: src/components/ui/tooltip-modern.tsx type TooltipSimpleProps (line 36) | interface TooltipSimpleProps { FILE: src/components/widgets/BashWidget.tsx type BashWidgetProps (line 5) | interface BashWidgetProps { FILE: src/components/widgets/LSWidget.tsx type LSWidgetProps (line 5) | interface LSWidgetProps { type LSResultWidgetProps (line 59) | interface LSResultWidgetProps { FILE: src/components/widgets/TodoWidget.tsx type TodoWidgetProps (line 6) | interface TodoWidgetProps { FILE: src/contexts/TabContext.tsx type Tab (line 5) | interface Tab { type TabContextType (line 24) | interface TabContextType { constant MAX_TABS (line 40) | const MAX_TABS = 20; FILE: src/contexts/ThemeContext.tsx type ThemeMode (line 4) | type ThemeMode = 'dark' | 'gray' | 'light' | 'custom'; type CustomThemeColors (line 6) | interface CustomThemeColors { type ThemeContextType (line 26) | interface ThemeContextType { constant THEME_STORAGE_KEY (line 36) | const THEME_STORAGE_KEY = 'theme_preference'; constant CUSTOM_COLORS_STORAGE_KEY (line 37) | const CUSTOM_COLORS_STORAGE_KEY = 'theme_custom_colors'; constant DEFAULT_CUSTOM_COLORS (line 40) | const DEFAULT_CUSTOM_COLORS: CustomThemeColors = { FILE: src/hooks/useAnalytics.ts constant TAB_SCREEN_NAMES (line 6) | const TAB_SCREEN_NAMES: Record = { type UseAnalyticsReturn (line 20) | interface UseAnalyticsReturn { function useAnalytics (line 27) | function useAnalytics(): UseAnalyticsReturn { function useTrackEvent (line 45) | function useTrackEvent() { function usePageView (line 356) | function usePageView(pageName: string, properties?: Record) { function useAppLifecycle (line 370) | function useAppLifecycle() { function useComponentMetrics (line 387) | function useComponentMetrics(componentName: string) { function useInteractionTracking (line 409) | function useInteractionTracking(interactionType: string) { function useScreenTracking (line 419) | function useScreenTracking(tabType?: string, tabId?: string) { function useFeatureExperiment (line 436) | function useFeatureExperiment(featureName: string, variant: string) { function usePathTracking (line 459) | function usePathTracking(pathname: string) { function useFeatureAdoptionTracking (line 475) | function useFeatureAdoptionTracking(featureName: string) { function useWorkflowTracking (line 510) | function useWorkflowTracking(workflowType: string) { function useAIInteractionTracking (line 580) | function useAIInteractionTracking(model: string) { function useNetworkPerformanceTracking (line 629) | function useNetworkPerformanceTracking() { FILE: src/hooks/useApiCall.ts type ApiCallOptions (line 3) | interface ApiCallOptions { type ApiCallState (line 12) | interface ApiCallState { function useApiCall (line 24) | function useApiCall( FILE: src/hooks/useDebounce.ts function useDebounce (line 7) | function useDebounce(value: T, delay: number): T { function useDebouncedCallback (line 27) | function useDebouncedCallback any>( FILE: src/hooks/useLoadingState.ts type LoadingState (line 3) | interface LoadingState { function useLoadingState (line 15) | function useLoadingState( FILE: src/hooks/usePagination.ts type PaginationOptions (line 3) | interface PaginationOptions { type PaginationResult (line 9) | interface PaginationResult { function usePagination (line 28) | function usePagination( FILE: src/hooks/usePerformanceMonitor.ts type PerformanceThresholds (line 4) | interface PerformanceThresholds { constant DEFAULT_THRESHOLDS (line 9) | const DEFAULT_THRESHOLDS: PerformanceThresholds = { function usePerformanceMonitor (line 17) | function usePerformanceMonitor( function useAsyncPerformanceTracker (line 87) | function useAsyncPerformanceTracker(operationName: string) { FILE: src/hooks/useTabState.ts type UseTabStateReturn (line 5) | interface UseTabStateReturn { FILE: src/lib/analytics/consent.ts constant ANALYTICS_STORAGE_KEY (line 3) | const ANALYTICS_STORAGE_KEY = 'opcode-analytics-settings'; class ConsentManager (line 5) | class ConsentManager { method constructor (line 9) | private constructor() {} method getInstance (line 11) | static getInstance(): ConsentManager { method initialize (line 18) | async initialize(): Promise { method grantConsent (line 57) | async grantConsent(): Promise { method revokeConsent (line 69) | async revokeConsent(): Promise { method deleteAllData (line 79) | async deleteAllData(): Promise { method getSettings (line 94) | getSettings(): AnalyticsSettings | null { method hasConsented (line 98) | hasConsented(): boolean { method isEnabled (line 102) | isEnabled(): boolean { method getUserId (line 106) | getUserId(): string { method getSessionId (line 110) | getSessionId(): string { method saveSettings (line 114) | private async saveSettings(): Promise { method generateAnonymousId (line 124) | private generateAnonymousId(): string { method generateSessionId (line 133) | private generateSessionId(): string { FILE: src/lib/analytics/events.ts constant ANALYTICS_EVENTS (line 48) | const ANALYTICS_EVENTS = { FILE: src/lib/analytics/index.ts class AnalyticsService (line 16) | class AnalyticsService { method constructor (line 25) | private constructor() { method getInstance (line 39) | static getInstance(): AnalyticsService { method initialize (line 46) | async initialize(): Promise { method initializePostHog (line 67) | private initializePostHog(settings: AnalyticsSettings): void { method enable (line 107) | async enable(): Promise { method disable (line 115) | async disable(): Promise { method deleteAllData (line 122) | async deleteAllData(): Promise { method setScreen (line 129) | setScreen(screenName: string): void { method track (line 140) | track(eventName: EventName | string, properties?: Record)... method identify (line 174) | identify(traits?: Record): void { method sanitizeProperties (line 190) | private sanitizeProperties(properties: Record): Record Promise>( function createTrackedApi (line 96) | function createTrackedApi() { FILE: src/lib/api.ts type ProcessType (line 5) | type ProcessType = type ProcessInfo (line 10) | interface ProcessInfo { type Project (line 23) | interface Project { type Session (line 39) | interface Session { type ClaudeSettings (line 59) | interface ClaudeSettings { type ClaudeVersionStatus (line 66) | interface ClaudeVersionStatus { type ClaudeMdFile (line 78) | interface ClaudeMdFile { type FileEntry (line 92) | interface FileEntry { type ClaudeInstallation (line 103) | interface ClaudeInstallation { type Agent (line 115) | interface Agent { type AgentExport (line 127) | interface AgentExport { type GitHubAgentFile (line 140) | interface GitHubAgentFile { type AgentRun (line 148) | interface AgentRun { type AgentRunMetrics (line 164) | interface AgentRunMetrics { type AgentRunWithMetrics (line 171) | interface AgentRunWithMetrics { type UsageEntry (line 192) | interface UsageEntry { type ModelUsage (line 203) | interface ModelUsage { type DailyUsage (line 214) | interface DailyUsage { type ProjectUsage (line 221) | interface ProjectUsage { type UsageStats (line 230) | interface UsageStats { type Checkpoint (line 246) | interface Checkpoint { type CheckpointMetadata (line 260) | interface CheckpointMetadata { type FileSnapshot (line 271) | interface FileSnapshot { type TimelineNode (line 284) | interface TimelineNode { type SessionTimeline (line 293) | interface SessionTimeline { type CheckpointStrategy (line 305) | type CheckpointStrategy = 'manual' | 'per_prompt' | 'per_tool_use' | 'sm... type CheckpointResult (line 310) | interface CheckpointResult { type CheckpointDiff (line 319) | interface CheckpointDiff { type FileDiff (line 331) | interface FileDiff { type MCPServer (line 341) | interface MCPServer { type ServerStatus (line 365) | interface ServerStatus { type MCPProjectConfig (line 377) | interface MCPProjectConfig { type MCPServerConfig (line 384) | interface MCPServerConfig { type SlashCommand (line 393) | interface SlashCommand { type AddServerResult (line 423) | interface AddServerResult { type ImportResult (line 432) | interface ImportResult { type ImportServerResult (line 441) | interface ImportServerResult { method getHomeDirectory (line 455) | async getHomeDirectory(): Promise { method listProjects (line 468) | async listProjects(): Promise { method createProject (line 482) | async createProject(path: string): Promise { method getProjectSessions (line 496) | async getProjectSessions(projectId: string): Promise { method fetchGitHubAgents (line 509) | async fetchGitHubAgents(): Promise { method fetchGitHubAgentContent (line 523) | async fetchGitHubAgentContent(downloadUrl: string): Promise { method importAgentFromGitHub (line 537) | async importAgentFromGitHub(downloadUrl: string): Promise { method getClaudeSettings (line 550) | async getClaudeSettings(): Promise { method openNewSession (line 574) | async openNewSession(path?: string): Promise { method getSystemPrompt (line 587) | async getSystemPrompt(): Promise { method checkClaudeVersion (line 600) | async checkClaudeVersion(): Promise { method saveSystemPrompt (line 614) | async saveSystemPrompt(content: string): Promise { method saveClaudeSettings (line 628) | async saveClaudeSettings(settings: ClaudeSettings): Promise { method findClaudeMdFiles (line 642) | async findClaudeMdFiles(projectPath: string): Promise { method readClaudeMdFile (line 656) | async readClaudeMdFile(filePath: string): Promise { method saveClaudeMdFile (line 671) | async saveClaudeMdFile(filePath: string, content: string): Promise { method createAgent (line 705) | async createAgent( method updateAgent (line 739) | async updateAgent( method deleteAgent (line 769) | async deleteAgent(id: number): Promise { method getAgent (line 783) | async getAgent(id: number): Promise { method exportAgent (line 797) | async exportAgent(id: number): Promise { method importAgent (line 811) | async importAgent(jsonData: string): Promise { method importAgentFromFile (line 825) | async importAgentFromFile(filePath: string): Promise { method executeAgent (line 842) | async executeAgent(agentId: number, projectPath: string, task: string, m... method listAgentRuns (line 857) | async listAgentRuns(agentId?: number): Promise { method listAgentRunsWithMetrics (line 872) | async listAgentRunsWithMetrics(agentId?: number): Promise { method getAgentRunWithRealTimeMetrics (line 901) | async getAgentRunWithRealTimeMetrics(id: number): Promise { method killAgentSession (line 928) | async killAgentSession(runId: number): Promise { method getSessionStatus (line 942) | async getSessionStatus(runId: number): Promise { method cleanupFinishedProcesses (line 955) | async cleanupFinishedProcesses(): Promise { method getSessionOutput (line 969) | async getSessionOutput(runId: number): Promise { method getLiveSessionOutput (line 983) | async getLiveSessionOutput(runId: number): Promise { method streamSessionOutput (line 997) | async streamSessionOutput(runId: number): Promise { method loadSessionHistory (line 1009) | async loadSessionHistory(sessionId: string, projectId: string): Promise<... method loadAgentSessionHistory (line 1019) | async loadAgentSessionHistory(sessionId: string): Promise { method executeClaudeCode (line 1031) | async executeClaudeCode(projectPath: string, prompt: string, model: stri... method continueClaudeCode (line 1038) | async continueClaudeCode(projectPath: string, prompt: string, model: str... method resumeClaudeCode (line 1045) | async resumeClaudeCode(projectPath: string, sessionId: string, prompt: s... method cancelClaudeExecution (line 1053) | async cancelClaudeExecution(sessionId?: string): Promise { method listRunningClaudeSessions (line 1061) | async listRunningClaudeSessions(): Promise { method getClaudeSessionOutput (line 1070) | async getClaudeSessionOutput(sessionId: string): Promise { method listDirectoryContents (line 1077) | async listDirectoryContents(directoryPath: string): Promise { method searchFiles (line 1084) | async searchFiles(basePath: string, query: string): Promise { method getUsageStats (line 1092) | async getUsageStats(): Promise { method getUsageByDateRange (line 1107) | async getUsageByDateRange(startDate: string, endDate: string): Promise { method createCheckpoint (line 1157) | async createCheckpoint( method restoreCheckpoint (line 1176) | async restoreCheckpoint( method listCheckpoints (line 1193) | async listCheckpoints( method forkFromCheckpoint (line 1208) | async forkFromCheckpoint( method getSessionTimeline (line 1229) | async getSessionTimeline( method updateCheckpointSettings (line 1244) | async updateCheckpointSettings( method getCheckpointDiff (line 1263) | async getCheckpointDiff( method trackCheckpointMessage (line 1285) | async trackCheckpointMessage( method checkAutoCheckpoint (line 1307) | async checkAutoCheckpoint( method cleanupOldCheckpoints (line 1329) | async cleanupOldCheckpoints( method getCheckpointSettings (line 1351) | async getCheckpointSettings( method clearCheckpointManager (line 1376) | async clearCheckpointManager(sessionId: string): Promise { method mcpAdd (line 1399) | async mcpAdd( method mcpList (line 1427) | async mcpList(): Promise { method mcpGet (line 1442) | async mcpGet(name: string): Promise { method mcpRemove (line 1454) | async mcpRemove(name: string): Promise { method mcpAddJson (line 1466) | async mcpAddJson(name: string, jsonConfig: string, scope: string = "loca... method mcpAddFromClaudeDesktop (line 1478) | async mcpAddFromClaudeDesktop(scope: string = "local"): Promise { method mcpTestConnection (line 1502) | async mcpTestConnection(name: string): Promise { method mcpResetProjectChoices (line 1514) | async mcpResetProjectChoices(): Promise { method mcpGetServerStatus (line 1526) | async mcpGetServerStatus(): Promise> { method mcpReadProjectConfig (line 1538) | async mcpReadProjectConfig(projectPath: string): Promise { method setClaudeBinaryPath (line 1577) | async setClaudeBinaryPath(path: string): Promise { method listClaudeInstallations (line 1590) | async listClaudeInstallations(): Promise { method storageListTables (line 1605) | async storageListTables(): Promise { method storageReadTable (line 1622) | async storageReadTable( method storageUpdateRow (line 1648) | async storageUpdateRow( method storageDeleteRow (line 1671) | async storageDeleteRow( method storageInsertRow (line 1692) | async storageInsertRow( method storageExecuteSql (line 1712) | async storageExecuteSql(query: string): Promise { method storageResetDatabase (line 1725) | async storageResetDatabase(): Promise { method getSetting (line 1741) | async getSetting(key: string): Promise { method saveSetting (line 1766) | async saveSetting(key: string, value: string): Promise { method getHooksConfig (line 1799) | async getHooksConfig(scope: 'user' | 'project' | 'local', projectPath?: ... method updateHooksConfig (line 1815) | async updateHooksConfig( method validateHookCommand (line 1833) | async validateHookCommand(command: string): Promise<{ valid: boolean; me... method getMergedHooksConfig (line 1847) | async getMergedHooksConfig(projectPath: string): Promise { method slashCommandGet (line 1885) | async slashCommandGet(commandId: string): Promise { method slashCommandSave (line 1905) | async slashCommandSave( method slashCommandDelete (line 1936) | async slashCommandDelete(commandId: string, projectPath?: string): Promi... FILE: src/lib/apiAdapter.ts type Window (line 14) | interface Window { function detectEnvironment (line 27) | function detectEnvironment(): boolean { type ApiResponse (line 56) | interface ApiResponse { function restApiCall (line 65) | async function restApiCall(endpoint: string, params?: any): Promise { function apiCall (line 134) | async function apiCall(command: string, params?: any): Promise { function mapCommandToEndpoint (line 165) | function mapCommandToEndpoint(command: string, _params?: any): string { function getEnvironmentInfo (line 274) | function getEnvironmentInfo() { function handleStreamingCommand (line 285) | async function handleStreamingCommand(command: string, params?: any):... function initializeWebMode (line 417) | function initializeWebMode() { FILE: src/lib/date-utils.ts function formatUnixTimestamp (line 9) | function formatUnixTimestamp(timestamp: number): string { function formatISOTimestamp (line 52) | function formatISOTimestamp(isoString: string): string { function truncateText (line 63) | function truncateText(text: string, maxLength: number): string { function getFirstLine (line 73) | function getFirstLine(text: string): string { function formatTime (line 79) | function formatTime(date: Date): string { function isToday (line 87) | function isToday(date: Date): boolean { function isYesterday (line 92) | function isYesterday(date: Date): boolean { function isWithinWeek (line 98) | function isWithinWeek(date: Date): boolean { function getDayName (line 104) | function getDayName(date: Date): string { function formatTimeAgo (line 117) | function formatTimeAgo(timestamp: number): string { FILE: src/lib/hooksManager.ts class HooksManager (line 14) | class HooksManager { method mergeConfigs (line 19) | static mergeConfigs( method mergeMatchers (line 83) | private static mergeMatchers( method validateConfig (line 109) | static async validateConfig(hooks: HooksConfiguration): Promise