SYMBOL INDEX (671 symbols across 81 files) FILE: agent/config.py class Config (line 21) | class Config(BaseModel): function substitute_env_vars (line 47) | def substitute_env_vars(obj: Any) -> Any: function load_config (line 84) | def load_config(config_path: str = "config.json") -> Config: FILE: agent/context_manager/manager.py function _get_hf_username (line 24) | def _get_hf_username(hf_token: str | None = None) -> str: function summarize_messages (line 98) | async def summarize_messages( class ContextManager (line 133) | class ContextManager: method __init__ (line 136) | def __init__( method _load_system_prompt (line 164) | def _load_system_prompt( method add_message (line 217) | def add_message(self, message: Message, token_count: int = None) -> None: method get_messages (line 223) | def get_messages(self) -> list[Message]: method _normalize_tool_calls (line 234) | def _normalize_tool_calls(msg: Message) -> None: method _patch_dangling_tool_calls (line 253) | def _patch_dangling_tool_calls(self) -> None: method undo_last_turn (line 296) | def undo_last_turn(self) -> bool: method truncate_to_user_message (line 314) | def truncate_to_user_message(self, user_message_index: int) -> bool: method compaction_threshold (line 338) | def compaction_threshold(self) -> int: method needs_compaction (line 343) | def needs_compaction(self) -> bool: method compact (line 346) | async def compact( FILE: agent/core/agent_loop.py function _validate_tool_args (line 27) | def _validate_tool_args(tool_args: dict) -> tuple[bool, str | None]: function _needs_approval (line 49) | def _needs_approval( function _is_transient_error (line 124) | def _is_transient_error(error: Exception) -> bool: function _is_effort_config_error (line 140) | def _is_effort_config_error(error: Exception) -> bool: function _heal_effort_and_rebuild_params (line 152) | async def _heal_effort_and_rebuild_params( function _friendly_error_message (line 192) | def _friendly_error_message(error: Exception) -> str | None: function _compact_and_notify (line 234) | async def _compact_and_notify(session: Session) -> None: function _cleanup_on_cancel (line 261) | async def _cleanup_on_cancel(session: Session) -> None: class LLMResult (line 288) | class LLMResult: function _call_llm_streaming (line 296) | async def _call_llm_streaming(session: Session, messages, tools, llm_par... function _call_llm_non_streaming (line 391) | async def _call_llm_non_streaming(session: Session, messages, tools, llm... class Handlers (line 465) | class Handlers: method _abandon_pending_approval (line 469) | async def _abandon_pending_approval(session: Session) -> None: method run_agent (line 507) | async def run_agent( method undo (line 906) | async def undo(session: Session) -> None: method exec_approval (line 914) | async def exec_approval(session: Session, approvals: list[dict]) -> None: method shutdown (line 1150) | async def shutdown(session: Session) -> bool: function process_submission (line 1163) | async def process_submission(session: Session, submission) -> bool: function submission_loop (line 1198) | async def submission_loop( FILE: agent/core/doom_loop.py class ToolCallSignature (line 19) | class ToolCallSignature: function _hash_args (line 26) | def _hash_args(args_str: str) -> str: function extract_recent_tool_signatures (line 31) | def extract_recent_tool_signatures( function detect_identical_consecutive (line 55) | def detect_identical_consecutive( function detect_repeating_sequence (line 74) | def detect_repeating_sequence( function check_for_doom_loop (line 103) | def check_for_doom_loop(messages: list[Message]) -> str | None: FILE: agent/core/effort_probe.py class ProbeInconclusive (line 51) | class ProbeInconclusive(Exception): class ProbeOutcome (line 60) | class ProbeOutcome: function _is_thinking_unsupported (line 72) | def _is_thinking_unsupported(e: Exception) -> bool: function _is_invalid_effort (line 83) | def _is_invalid_effort(e: Exception) -> bool: function _is_transient (line 113) | def _is_transient(e: Exception) -> bool: function probe_effort (line 134) | async def probe_effort( FILE: agent/core/hf_router_catalog.py class ProviderInfo (line 36) | class ProviderInfo: class ModelInfo (line 47) | class ModelInfo: method live_providers (line 52) | def live_providers(self) -> list[ProviderInfo]: method max_context_length (line 56) | def max_context_length(self) -> Optional[int]: method any_supports_tools (line 61) | def any_supports_tools(self) -> bool: function _fetch_catalog (line 65) | def _fetch_catalog(force: bool = False) -> dict: function _parse_entry (line 83) | def _parse_entry(entry: dict) -> ModelInfo: function lookup (line 101) | def lookup(model_id: str) -> Optional[ModelInfo]: function fuzzy_suggest (line 115) | def fuzzy_suggest(model_id: str, limit: int = 3) -> list[str]: function prewarm (line 123) | def prewarm() -> None: FILE: agent/core/llm_params.py function _patch_litellm_effort_validation (line 11) | def _patch_litellm_effort_validation() -> None: class UnsupportedEffortError (line 79) | class UnsupportedEffortError(ValueError): function _resolve_llm_params (line 87) | def _resolve_llm_params( FILE: agent/core/model_switcher.py function is_valid_model_id (line 38) | def is_valid_model_id(model_id: str) -> bool: function _print_hf_routing_info (line 57) | def _print_hf_routing_info(model_id: str, console) -> bool: function print_model_listing (line 127) | def print_model_listing(config, console) -> None: function print_invalid_id (line 143) | def print_invalid_id(arg: str, console) -> None: function probe_and_switch_model (line 153) | async def probe_and_switch_model( function _commit_switch (line 213) | def _commit_switch(model_id, config, session, effective, cache: bool) ->... FILE: agent/core/prompt_caching.py function with_prompt_caching (line 19) | def with_prompt_caching( FILE: agent/core/session.py function _get_max_tokens_safe (line 21) | def _get_max_tokens_safe(model_name: str) -> int: class OpType (line 52) | class OpType(Enum): class Event (line 62) | class Event: class Session (line 67) | class Session: method __init__ (line 73) | def __init__( method send_event (line 122) | async def send_event(self, event: Event) -> None: method cancel (line 135) | def cancel(self) -> None: method reset_cancel (line 139) | def reset_cancel(self) -> None: method is_cancelled (line 144) | def is_cancelled(self) -> bool: method update_model (line 147) | def update_model(self, model_name: str) -> None: method effective_effort_for (line 152) | def effective_effort_for(self, model_name: str) -> str | None: method increment_turn (line 165) | def increment_turn(self) -> None: method auto_save_if_needed (line 169) | async def auto_save_if_needed(self) -> None: method get_trajectory (line 185) | def get_trajectory(self) -> dict: method save_trajectory_local (line 196) | def save_trajectory_local( method update_local_save_status (line 235) | def update_local_save_status( method save_and_upload_detached (line 255) | def save_and_upload_detached(self, repo_id: str) -> Optional[str]: method retry_failed_uploads_detached (line 288) | def retry_failed_uploads_detached( FILE: agent/core/session_uploader.py function upload_session_as_file (line 22) | def upload_session_as_file( function retry_failed_uploads (line 150) | def retry_failed_uploads(directory: str, repo_id: str): FILE: agent/core/tools.py function convert_mcp_content_to_string (line 68) | def convert_mcp_content_to_string(content: list) -> str: class ToolSpec (line 117) | class ToolSpec: class ToolRouter (line 126) | class ToolRouter: method __init__ (line 132) | def __init__(self, mcp_servers: dict[str, MCPServerConfig], hf_token: ... method register_tool (line 150) | def register_tool(self, tool: ToolSpec) -> None: method register_mcp_tools (line 153) | async def register_mcp_tools(self) -> None: method register_openapi_tool (line 174) | async def register_openapi_tool(self) -> None: method get_tool_specs_for_llm (line 195) | def get_tool_specs_for_llm(self) -> list[dict[str, Any]]: method __aenter__ (line 211) | async def __aenter__(self) -> "ToolRouter": method __aexit__ (line 229) | async def __aexit__(self, exc_type, exc, tb) -> None: method call_tool (line 234) | async def call_tool( function create_builtin_tools (line 282) | def create_builtin_tools(local_mode: bool = False) -> list[ToolSpec]: FILE: agent/main.py function _safe_get_args (line 53) | def _safe_get_args(arguments: dict) -> dict: function _get_hf_token (line 62) | def _get_hf_token() -> str | None: function _prompt_and_save_hf_token (line 84) | async def _prompt_and_save_hf_token(prompt_session: PromptSession) -> str: class Operation (line 126) | class Operation: class Submission (line 134) | class Submission: function _create_rich_console (line 141) | def _create_rich_console(): class _ThinkingShimmer (line 146) | class _ThinkingShimmer: method __init__ (line 154) | def __init__(self, console): method start (line 159) | def start(self): method stop (line 165) | def stop(self): method _render_frame (line 176) | def _render_frame(self, text: str, offset: float) -> str: method _animate (line 195) | async def _animate(self): class _StreamBuffer (line 211) | class _StreamBuffer: method __init__ (line 217) | def __init__(self, console): method add_chunk (line 221) | def add_chunk(self, text: str): method _pop_block (line 224) | def _pop_block(self) -> str | None: method flush_ready (line 235) | async def flush_ready( method finish (line 250) | async def finish( method discard (line 261) | def discard(self): function event_listener (line 265) | async def event_listener( function get_user_input (line 692) | async def get_user_input(prompt_session: PromptSession) -> str: function _handle_slash_command (line 704) | async def _handle_slash_command( function main (line 809) | async def main(): function headless_main (line 1029) | async def headless_main( function cli (line 1218) | def cli(): FILE: agent/tools/dataset_tools.py class SplitConfig (line 21) | class SplitConfig(TypedDict): function _get_headers (line 28) | def _get_headers(token: str | None = None) -> dict: function inspect_dataset (line 35) | async def inspect_dataset( function _format_status (line 148) | def _format_status(data: dict) -> str: function _extract_configs (line 160) | def _extract_configs(splits_data: dict) -> list[SplitConfig]: function _format_structure (line 171) | def _format_structure(configs: list[SplitConfig], max_rows: int = 10) ->... function _format_schema (line 199) | def _format_schema(info: dict, config: str) -> str: function _get_type_str (line 209) | def _get_type_str(col_info: dict) -> str: function _format_samples (line 220) | def _format_samples(rows_data: dict, config: str, split: str, limit: int... function _format_messages_structure (line 250) | def _format_messages_structure(messages_data: Any) -> str | None: function _format_parquet_files (line 353) | def _format_parquet_files(data: dict, max_rows: int = 10) -> str | None: function hf_inspect_dataset_handler (line 426) | async def hf_inspect_dataset_handler(arguments: dict[str, Any], session=... FILE: agent/tools/docs_tools.py function _fetch_gradio_docs (line 66) | async def _fetch_gradio_docs(query: str | None = None) -> str: function _fetch_endpoint_docs (line 99) | async def _fetch_endpoint_docs(hf_token: str, endpoint: str) -> list[dic... function _get_docs (line 143) | async def _get_docs(hf_token: str, endpoint: str) -> list[dict[str, str]]: function _build_search_index (line 173) | async def _build_search_index( function _search_docs (line 216) | async def _search_docs( function _format_results (line 251) | def _format_results( function explore_hf_docs_handler (line 289) | async def explore_hf_docs_handler( function hf_docs_fetch_handler (line 382) | async def hf_docs_fetch_handler( function _fetch_openapi_spec (line 420) | async def _fetch_openapi_spec() -> dict[str, Any]: function _extract_all_tags (line 434) | def _extract_all_tags(spec: dict[str, Any]) -> list[str]: function _extract_all_endpoints (line 448) | def _extract_all_endpoints(spec: dict[str, Any]) -> list[dict[str, Any]]: function _build_openapi_index (line 487) | async def _build_openapi_index() -> tuple[Any, MultifieldParser, list[di... function _search_openapi (line 541) | async def _search_openapi( function _generate_curl_example (line 579) | def _generate_curl_example(endpoint: dict[str, Any]) -> str: function _format_parameters (line 620) | def _format_parameters(parameters: list[dict[str, Any]]) -> str: function _format_response_info (line 655) | def _format_response_info(responses: dict[str, Any]) -> str: function _format_openapi_results (line 673) | def _format_openapi_results( function search_openapi_handler (line 737) | async def search_openapi_handler(arguments: dict[str, Any]) -> tuple[str... function _get_api_search_tool_spec (line 786) | async def _get_api_search_tool_spec() -> dict[str, Any]: FILE: agent/tools/edit_utils.py function _normalize_unicode (line 28) | def _normalize_unicode(s: str) -> str: function fuzzy_find (line 35) | def fuzzy_find(content: str, pattern: str) -> tuple[int | None, str | No... function _map_back (line 92) | def _map_back( function fuzzy_find_original_match (line 117) | def fuzzy_find_original_match(content: str, pattern: str) -> tuple[str |... function apply_edit (line 157) | def apply_edit( function validate_python (line 233) | def validate_python(content: str, path: str = "") -> list[str]: FILE: agent/tools/github_find_examples.py function _get_repo_tree (line 56) | def _get_repo_tree(org: str, repo: str, token: str) -> tuple[List[Dict[s... function _search_similar_repos (line 112) | def _search_similar_repos(org: str, repo: str, token: str) -> List[Dict[... function _score_against_example_patterns (line 151) | def _score_against_example_patterns(file_path: str) -> int: function _score_against_keyword (line 160) | def _score_against_keyword(file_path: str, keyword: str) -> int: function _get_pattern_priority (line 171) | def _get_pattern_priority(file_path: str) -> tuple[int, int, int]: function _handle_repo_tree_errors (line 210) | def _handle_repo_tree_errors( function find_examples (line 267) | def find_examples( function github_find_examples_handler (line 448) | async def github_find_examples_handler(arguments: Dict[str, Any]) -> tup... FILE: agent/tools/github_list_repos.py function list_repos (line 15) | def list_repos( function github_list_repos_handler (line 275) | async def github_list_repos_handler(arguments: Dict[str, Any]) -> tuple[... FILE: agent/tools/github_read_file.py function _convert_ipynb_to_markdown (line 20) | def _convert_ipynb_to_markdown(content: str) -> str: function read_file (line 67) | def read_file( function github_read_file_handler (line 290) | async def github_read_file_handler(arguments: Dict[str, Any]) -> tuple[s... FILE: agent/tools/hf_repo_files_tool.py function _async_call (line 18) | async def _async_call(func, *args, **kwargs): function _build_repo_url (line 23) | def _build_repo_url(repo_id: str, repo_type: str = "model") -> str: function _format_size (line 30) | def _format_size(size_bytes: int) -> str: class HfRepoFilesTool (line 39) | class HfRepoFilesTool: method __init__ (line 42) | def __init__(self, hf_token: Optional[str] = None): method execute (line 45) | async def execute(self, args: Dict[str, Any]) -> ToolResult: method _help (line 73) | def _help(self) -> ToolResult: method _list (line 89) | async def _list(self, args: Dict[str, Any]) -> ToolResult: method _read (line 125) | async def _read(self, args: Dict[str, Any]) -> ToolResult: method _upload (line 166) | async def _upload(self, args: Dict[str, Any]) -> ToolResult: method _delete (line 205) | async def _delete(self, args: Dict[str, Any]) -> ToolResult: method _error (line 236) | def _error(self, message: str) -> ToolResult: function hf_repo_files_handler (line 315) | async def hf_repo_files_handler(arguments: Dict[str, Any], session=None)... FILE: agent/tools/hf_repo_git_tool.py function _async_call (line 24) | async def _async_call(func, *args, **kwargs): function _build_repo_url (line 29) | def _build_repo_url(repo_id: str, repo_type: str = "model") -> str: class HfRepoGitTool (line 36) | class HfRepoGitTool: method __init__ (line 39) | def __init__(self, hf_token: Optional[str] = None): method execute (line 42) | async def execute(self, args: Dict[str, Any]) -> ToolResult: method _help (line 79) | def _help(self) -> ToolResult: method _create_branch (line 111) | async def _create_branch(self, args: Dict[str, Any]) -> ToolResult: method _delete_branch (line 136) | async def _delete_branch(self, args: Dict[str, Any]) -> ToolResult: method _create_tag (line 161) | async def _create_tag(self, args: Dict[str, Any]) -> ToolResult: method _delete_tag (line 188) | async def _delete_tag(self, args: Dict[str, Any]) -> ToolResult: method _list_refs (line 213) | async def _list_refs(self, args: Dict[str, Any]) -> ToolResult: method _create_pr (line 250) | async def _create_pr(self, args: Dict[str, Any]) -> ToolResult: method _list_prs (line 278) | async def _list_prs(self, args: Dict[str, Any]) -> ToolResult: method _get_pr (line 314) | async def _get_pr(self, args: Dict[str, Any]) -> ToolResult: method _merge_pr (line 358) | async def _merge_pr(self, args: Dict[str, Any]) -> ToolResult: method _close_pr (line 382) | async def _close_pr(self, args: Dict[str, Any]) -> ToolResult: method _comment_pr (line 406) | async def _comment_pr(self, args: Dict[str, Any]) -> ToolResult: method _change_pr_status (line 432) | async def _change_pr_status(self, args: Dict[str, Any]) -> ToolResult: method _create_repo (line 464) | async def _create_repo(self, args: Dict[str, Any]) -> ToolResult: method _update_repo (line 495) | async def _update_repo(self, args: Dict[str, Any]) -> ToolResult: method _error (line 526) | def _error(self, message: str) -> ToolResult: function hf_repo_git_handler (line 656) | async def hf_repo_git_handler(arguments: Dict[str, Any], session=None) -... FILE: agent/tools/jobs_tool.py function _filter_uv_install_output (line 82) | def _filter_uv_install_output(logs: list[str]) -> list[str]: function _strip_ansi (line 123) | def _strip_ansi(text: str) -> str: function _add_default_env (line 136) | def _add_default_env(params: Dict[str, Any] | None) -> Dict[str, Any]: function _add_environment_variables (line 143) | def _add_environment_variables( function _build_uv_command (line 163) | def _build_uv_command( function _wrap_inline_script (line 189) | def _wrap_inline_script( function _ensure_hf_transfer_dependency (line 204) | def _ensure_hf_transfer_dependency(deps: list[str] | None) -> list[str]: function _resolve_uv_command (line 216) | def _resolve_uv_command( function _async_call (line 236) | async def _async_call(func, *args, **kwargs): function _job_info_to_dict (line 241) | def _job_info_to_dict(job_info) -> Dict[str, Any]: function _scheduled_job_info_to_dict (line 255) | def _scheduled_job_info_to_dict(scheduled_job_info) -> Dict[str, Any]: class HfJobsTool (line 294) | class HfJobsTool: method __init__ (line 297) | def __init__( method execute (line 312) | async def execute(self, params: Dict[str, Any]) -> ToolResult: method _wait_for_job_completion (line 382) | async def _wait_for_job_completion( method _run_job (line 491) | async def _run_job(self, args: Dict[str, Any]) -> ToolResult: method _list_jobs (line 608) | async def _list_jobs(self, args: Dict[str, Any]) -> ToolResult: method _get_logs (line 645) | async def _get_logs(self, args: Dict[str, Any]) -> ToolResult: method _inspect_job (line 683) | async def _inspect_job(self, args: Dict[str, Any]) -> ToolResult: method _cancel_job (line 717) | async def _cancel_job(self, args: Dict[str, Any]) -> ToolResult: method _scheduled_run (line 740) | async def _scheduled_run(self, args: Dict[str, Any]) -> ToolResult: method _list_scheduled_jobs (line 813) | async def _list_scheduled_jobs(self, args: Dict[str, Any]) -> ToolResult: method _inspect_scheduled_job (line 849) | async def _inspect_scheduled_job(self, args: Dict[str, Any]) -> ToolRe... method _delete_scheduled_job (line 875) | async def _delete_scheduled_job(self, args: Dict[str, Any]) -> ToolRes... method _suspend_scheduled_job (line 898) | async def _suspend_scheduled_job(self, args: Dict[str, Any]) -> ToolRe... method _resume_scheduled_job (line 921) | async def _resume_scheduled_job(self, args: Dict[str, Any]) -> ToolRes... function hf_jobs_handler (line 1059) | async def hf_jobs_handler( FILE: agent/tools/local_tools.py function _resolve_path (line 31) | def _resolve_path(path: str) -> str: function _atomic_write (line 38) | def _atomic_write(path: Path, content: str) -> None: function _strip_ansi (line 65) | def _strip_ansi(text: str) -> str: function _truncate_output (line 69) | def _truncate_output(output: str, max_chars: int = MAX_OUTPUT_CHARS, hea... function _bash_handler (line 96) | async def _bash_handler(args: dict[str, Any], **_kw) -> tuple[str, bool]: function _read_handler (line 129) | async def _read_handler(args: dict[str, Any], **_kw) -> tuple[str, bool]: function _write_handler (line 159) | async def _write_handler(args: dict[str, Any], **_kw) -> tuple[str, bool]: function _edit_handler (line 185) | async def _edit_handler(args: dict[str, Any], **_kw) -> tuple[str, bool]: function get_local_tools (line 409) | def get_local_tools(): FILE: agent/tools/papers_tool.py function _s2_paper_id (line 51) | def _s2_paper_id(arxiv_id: str) -> str: function _s2_cache_key (line 56) | def _s2_cache_key(path: str, params: dict | None) -> str: function _s2_request (line 62) | async def _s2_request( function _s2_get_json (line 104) | async def _s2_get_json( function _s2_get_paper (line 121) | async def _s2_get_paper( function _parse_paper_html (line 137) | def _parse_paper_html(html: str) -> dict[str, Any]: function _find_section (line 213) | def _find_section(sections: list[dict], query: str) -> dict | None: function _clean_description (line 245) | def _clean_description(text: str) -> str: function _truncate (line 252) | def _truncate(text: str, max_len: int) -> str: function _format_paper_list (line 258) | def _format_paper_list( function _format_paper_detail (line 294) | def _format_paper_detail(paper: dict, s2_data: dict | None = None) -> str: function _format_read_paper_toc (line 349) | def _format_read_paper_toc(parsed: dict[str, Any], arxiv_id: str) -> str: function _format_read_paper_section (line 371) | def _format_read_paper_section(section: dict, arxiv_id: str) -> str: function _format_datasets (line 387) | def _format_datasets(datasets: list, arxiv_id: str, sort: str) -> str: function _format_datasets_compact (line 414) | def _format_datasets_compact(datasets: list) -> str: function _format_models (line 425) | def _format_models(models: list, arxiv_id: str, sort: str) -> str: function _format_models_compact (line 449) | def _format_models_compact(models: list) -> str: function _format_collections (line 462) | def _format_collections(collections: list, arxiv_id: str) -> str: function _format_collections_compact (line 484) | def _format_collections_compact(collections: list) -> str: function _error (line 501) | def _error(message: str) -> ToolResult: function _validate_arxiv_id (line 510) | def _validate_arxiv_id(args: dict) -> str | None: function _op_trending (line 515) | async def _op_trending(args: dict[str, Any], limit: int) -> ToolResult: function _format_s2_paper_list (line 558) | def _format_s2_paper_list(papers: list[dict], title: str) -> str: function _s2_bulk_search (line 589) | async def _s2_bulk_search(query: str, args: dict[str, Any], limit: int) ... function _op_search (line 640) | async def _op_search(args: dict[str, Any], limit: int) -> ToolResult: function _op_paper_details (line 675) | async def _op_paper_details(args: dict[str, Any], limit: int) -> ToolRes... function _op_read_paper (line 692) | async def _op_read_paper(args: dict[str, Any], limit: int) -> ToolResult: function _format_citation_entry (line 757) | def _format_citation_entry(entry: dict, show_context: bool = False) -> str: function _format_citation_graph (line 783) | def _format_citation_graph( function _op_citation_graph (line 813) | async def _op_citation_graph(args: dict[str, Any], limit: int) -> ToolRe... function _op_find_datasets (line 854) | async def _op_find_datasets(args: dict[str, Any], limit: int) -> ToolRes... function _op_find_models (line 889) | async def _op_find_models(args: dict[str, Any], limit: int) -> ToolResult: function _op_find_collections (line 924) | async def _op_find_collections(args: dict[str, Any], limit: int) -> Tool... function _op_find_all_resources (line 949) | async def _op_find_all_resources(args: dict[str, Any], limit: int) -> To... function _format_snippets (line 1017) | def _format_snippets(snippets: list[dict], query: str) -> str: function _op_snippet_search (line 1046) | async def _op_snippet_search(args: dict[str, Any], limit: int) -> ToolRe... function _op_recommend (line 1093) | async def _op_recommend(args: dict[str, Any], limit: int) -> ToolResult: function hf_papers_handler (line 1274) | async def hf_papers_handler(arguments: dict[str, Any]) -> tuple[str, bool]: FILE: agent/tools/plan_tool.py class PlanTool (line 12) | class PlanTool: method __init__ (line 15) | def __init__(self, session: Any = None): method execute (line 18) | async def execute(self, params: Dict[str, Any]) -> ToolResult: function get_current_plan (line 79) | def get_current_plan() -> List[Dict[str, str]]: function plan_tool_handler (line 126) | async def plan_tool_handler( FILE: agent/tools/private_hf_repo_tools.py function _async_call (line 24) | async def _async_call(func, *args, **kwargs): function _build_repo_url (line 29) | def _build_repo_url(repo_id: str, repo_type: str = "dataset") -> str: function _content_to_bytes (line 35) | def _content_to_bytes(content: str | bytes) -> bytes: class PrivateHfRepoTool (line 42) | class PrivateHfRepoTool: method __init__ (line 45) | def __init__(self, hf_token: Optional[str] = None): method execute (line 48) | async def execute(self, params: Dict[str, Any]) -> ToolResult: method _show_help (line 101) | def _show_help(self) -> ToolResult: method _show_operation_help (line 232) | def _show_operation_help(self, operation: str) -> ToolResult: method _upload_file (line 237) | async def _upload_file(self, args: Dict[str, Any]) -> ToolResult: method _create_repo (line 338) | async def _create_repo(self, args: Dict[str, Any]) -> ToolResult: method _check_repo (line 407) | async def _check_repo(self, args: Dict[str, Any]) -> ToolResult: method _list_files (line 461) | async def _list_files(self, args: Dict[str, Any]) -> ToolResult: method _read_file (line 514) | async def _read_file(self, args: Dict[str, Any]) -> ToolResult: function private_hf_repo_handler (line 643) | async def private_hf_repo_handler(arguments: Dict[str, Any]) -> tuple[st... FILE: agent/tools/research_tool.py function _get_research_model (line 217) | def _get_research_model(main_model: str) -> str: function research_handler (line 225) | async def research_handler( FILE: agent/tools/sandbox_client.py class ToolResult (line 460) | class ToolResult: method __str__ (line 465) | def __str__(self): method to_dict (line 470) | def to_dict(self) -> dict: class Sandbox (line 475) | class Sandbox: method __post_init__ (line 493) | def __post_init__(self): class Cancelled (line 508) | class Cancelled(Exception): method create (line 512) | def create( method _setup_server (line 630) | def _setup_server(space_id: str, api: HfApi, *, log: Callable[[str], o... method connect (line 651) | def connect(cls, space_id: str, *, token: str | None = None) -> Sandbox: method _wait_for_api (line 661) | def _wait_for_api(self, timeout: int = API_WAIT_TIMEOUT, log: Callable... method delete (line 681) | def delete(self): method pause (line 693) | def pause(self): method restart (line 697) | def restart(self): method url (line 703) | def url(self) -> str: method status (line 708) | def status(self) -> str: method __enter__ (line 712) | def __enter__(self) -> Sandbox: method __exit__ (line 715) | def __exit__(self, *exc): method _call (line 725) | def _call( method bash (line 786) | def bash( method read (line 804) | def read( method write (line 817) | def write(self, path: str, content: str) -> ToolResult: method edit (line 833) | def edit( method kill_all (line 855) | def kill_all(self) -> ToolResult: method tool_definitions (line 1026) | def tool_definitions(cls) -> list[dict]: method call_tool (line 1029) | def call_tool(self, name: str, arguments: dict[str, Any]) -> ToolResult: FILE: agent/tools/sandbox_tool.py function _looks_like_path (line 24) | def _looks_like_path(script: str) -> bool: function resolve_sandbox_script (line 38) | async def resolve_sandbox_script( function _ensure_sandbox (line 68) | async def _ensure_sandbox( function sandbox_create_handler (line 203) | async def sandbox_create_handler( function _make_tool_handler (line 237) | def _make_tool_handler(sandbox_tool_name: str): function get_sandbox_tools (line 264) | def get_sandbox_tools(): FILE: agent/tools/types.py class ToolResult (line 10) | class ToolResult(TypedDict, total=False): FILE: agent/tools/utilities.py function truncate (line 13) | def truncate(text: str, max_length: int) -> str: function format_date (line 20) | def format_date(date_str: Optional[str]) -> str: function format_command (line 31) | def format_command(command: Optional[List[str]]) -> str: function get_image_or_space (line 38) | def get_image_or_space(job: Dict[str, Any]) -> str: function format_jobs_table (line 47) | def format_jobs_table(jobs: List[Dict[str, Any]]) -> str: function format_scheduled_jobs_table (line 85) | def format_scheduled_jobs_table(jobs: List[Dict[str, Any]]) -> str: function format_job_details (line 129) | def format_job_details(jobs: Any) -> str: function format_scheduled_job_details (line 137) | def format_scheduled_job_details(jobs: Any) -> str: FILE: agent/utils/boot_timing.py function settle_curve (line 6) | def settle_curve(progress: float, sharpness: float = 3.0) -> float: function warm_gold_from_white (line 12) | def warm_gold_from_white(progress: float) -> tuple[int, int, int]: FILE: agent/utils/braille.py class BrailleCanvas (line 19) | class BrailleCanvas: method __init__ (line 22) | def __init__(self, term_width: int, term_height: int): method clear (line 29) | def clear(self) -> None: method set_pixel (line 33) | def set_pixel(self, x: int, y: int) -> None: method render (line 39) | def render(self) -> list[str]: function _define_font (line 55) | def _define_font() -> None: function text_to_pixels (line 102) | def text_to_pixels(text: str, scale: int = 1) -> list[tuple[int, int]]: FILE: agent/utils/crt_boot.py function _glitch_text (line 17) | def _glitch_text(text: str, intensity: float, rng: random.Random) -> str: function run_boot_sequence (line 27) | def run_boot_sequence(console: Console, boot_lines: list[tuple[str, str]... FILE: agent/utils/particle_logo.py class Particle (line 23) | class Particle: method __init__ (line 26) | def __init__(self, x: float, y: float, target_x: float, target_y: floa... method update_converge (line 36) | def update_converge(self, t: float, strength: float = 0.08, damping: f... method at_target (line 61) | def at_target(self) -> bool: function run_particle_logo (line 65) | def run_particle_logo(console: Console, hold_seconds: float = 1.5) -> None: FILE: agent/utils/reliability_checks.py function check_training_script_save_pattern (line 4) | def check_training_script_save_pattern(script: str) -> str | None: FILE: agent/utils/terminal_display.py class _LeftHeading (line 13) | class _LeftHeading(Heading): method __rich_console__ (line 17) | def __rich_console__(self, console, options): function _clip_to_width (line 28) | def _clip_to_width(s: str, width: int) -> str: function get_console (line 84) | def get_console() -> Console: function print_banner (line 90) | def print_banner(model: str | None = None, hf_user: str | None = None) -... function print_init_done (line 123) | def print_init_done(tool_count: int = 0) -> None: function print_tool_call (line 146) | def print_tool_call(tool_name: str, args_preview: str) -> None: function print_tool_output (line 161) | def print_tool_output(output: str, success: bool, truncate: bool = True)... class SubAgentDisplayManager (line 170) | class SubAgentDisplayManager: method __init__ (line 180) | def __init__(self): method start (line 185) | def start(self, agent_id: str, label: str = "research") -> None: method set_tokens (line 199) | def set_tokens(self, agent_id: str, tokens: int) -> None: method set_tool_count (line 203) | def set_tool_count(self, agent_id: str, count: int) -> None: method add_call (line 207) | def add_call(self, agent_id: str, tool_desc: str) -> None: method clear (line 212) | def clear(self, agent_id: str) -> None: method _render_completion_line (line 233) | def _render_completion_line(agent: dict) -> str: method _tick (line 242) | async def _tick(self) -> None: method _format_stats (line 253) | def _format_stats(agent: dict) -> str: method _erase (line 267) | def _erase(self) -> None: method _render_agent_lines (line 274) | def _render_agent_lines(self, agent: dict, compact: bool = False) -> l... method _redraw (line 302) | def _redraw(self) -> None: function print_tool_log (line 320) | def print_tool_log(tool: str, log: str, agent_id: str = "", label: str =... function print_markdown (line 340) | async def print_markdown( function print_error (line 403) | def print_error(message: str) -> None: function print_turn_complete (line 407) | def print_turn_complete() -> None: function print_interrupted (line 411) | def print_interrupted() -> None: function print_compacted (line 415) | def print_compacted(old_tokens: int, new_tokens: int) -> None: function print_approval_header (line 421) | def print_approval_header(count: int) -> None: function print_approval_item (line 427) | def print_approval_item(index: int, total: int, tool_name: str, operatio... function print_yolo_approve (line 431) | def print_yolo_approve(count: int) -> None: function print_help (line 449) | def print_help() -> None: function format_plan_display (line 457) | def format_plan_display() -> str: function print_plan (line 482) | def print_plan() -> None: function format_plan_tool_output (line 490) | def format_plan_tool_output(todos: list) -> str: function _truncate (line 512) | def _truncate(text: str, max_lines: int = 6) -> str: FILE: backend/dependencies.py function _validate_token (line 40) | async def _validate_token(token: str) -> dict[str, Any] | None: function _user_from_info (line 72) | def _user_from_info(user_info: dict[str, Any]) -> dict[str, Any]: function _normalize_plan (line 83) | def _normalize_plan(whoami: dict[str, Any]) -> str: function _fetch_user_plan (line 118) | async def _fetch_user_plan(token: str) -> str: function _extract_user_from_token (line 155) | async def _extract_user_from_token(token: str) -> dict[str, Any] | None: function check_org_membership (line 165) | async def check_org_membership(token: str, org_name: str) -> bool: function get_current_user (line 190) | async def get_current_user(request: Request) -> dict[str, Any]: function _extract_token (line 224) | def _extract_token(request: Request) -> str | None: function require_huggingface_org_member (line 235) | async def require_huggingface_org_member(request: Request) -> bool: FILE: backend/main.py function lifespan (line 27) | async def lifespan(app: FastAPI): function api_root (line 69) | async def api_root(): FILE: backend/models.py class OpType (line 9) | class OpType(str, Enum): class Operation (line 20) | class Operation(BaseModel): class Submission (line 27) | class Submission(BaseModel): class ToolApproval (line 34) | class ToolApproval(BaseModel): class ApprovalRequest (line 43) | class ApprovalRequest(BaseModel): class SubmitRequest (line 50) | class SubmitRequest(BaseModel): class TruncateRequest (line 57) | class TruncateRequest(BaseModel): class SessionResponse (line 63) | class SessionResponse(BaseModel): class PendingApprovalTool (line 70) | class PendingApprovalTool(BaseModel): class SessionInfo (line 78) | class SessionInfo(BaseModel): class HealthResponse (line 91) | class HealthResponse(BaseModel): class LLMHealthResponse (line 99) | class LLMHealthResponse(BaseModel): FILE: backend/routes/agent.py function _is_anthropic_model (line 71) | def _is_anthropic_model(model_id: str) -> bool: function _require_hf_for_anthropic (line 75) | async def _require_hf_for_anthropic(request: Request, model_id: str) -> ... function _enforce_claude_quota (line 100) | async def _enforce_claude_quota( function _check_session_access (line 139) | def _check_session_access(session_id: str, user: dict[str, Any]) -> None: function health_check (line 149) | async def health_check() -> HealthResponse: function llm_health_check (line 159) | async def llm_health_check() -> LLMHealthResponse: function get_model (line 212) | async def get_model() -> dict: function generate_title (line 224) | async def generate_title( function create_session (line 278) | async def create_session( function restore_session_summary (line 332) | async def restore_session_summary( function get_session (line 387) | async def get_session( function set_session_model (line 397) | async def set_session_model( function get_user_quota (line 432) | async def get_user_quota(user: dict = Depends(get_current_user)) -> dict: function list_sessions (line 446) | async def list_sessions(user: dict = Depends(get_current_user)) -> list[... function delete_session (line 453) | async def delete_session( function submit_input (line 465) | async def submit_input( function submit_approval (line 480) | async def submit_approval( function chat_sse (line 501) | async def chat_sse( function _sse_response (line 572) | def _sse_response(broadcaster, event_queue, sub_id) -> StreamingResponse: function subscribe_events (line 606) | async def subscribe_events( function interrupt_session (line 627) | async def interrupt_session( function get_session_messages (line 639) | async def get_session_messages( function undo_session (line 651) | async def undo_session(session_id: str, user: dict = Depends(get_current... function truncate_session (line 661) | async def truncate_session( function compact_session (line 673) | async def compact_session( function shutdown_session (line 685) | async def shutdown_session( FILE: backend/routes/auth.py function _cleanup_expired_states (line 29) | def _cleanup_expired_states() -> None: function get_redirect_uri (line 37) | def get_redirect_uri(request: Request) -> str: function oauth_login (line 48) | async def oauth_login(request: Request) -> RedirectResponse: function oauth_callback (line 83) | async def oauth_callback( function logout (line 152) | async def logout() -> RedirectResponse: function auth_status (line 160) | async def auth_status() -> dict: function get_me (line 166) | async def get_me(user: dict = Depends(get_current_user)) -> dict: function org_membership (line 178) | async def org_membership( FILE: backend/session_manager.py class Operation (line 23) | class Operation: class Submission (line 31) | class Submission: class EventBroadcaster (line 41) | class EventBroadcaster: method __init__ (line 49) | def __init__(self, event_queue: asyncio.Queue): method subscribe (line 54) | def subscribe(self) -> tuple[int, asyncio.Queue]: method unsubscribe (line 62) | def unsubscribe(self, sub_id: int) -> None: method run (line 65) | async def run(self) -> None: class AgentSession (line 80) | class AgentSession: class SessionCapacityError (line 100) | class SessionCapacityError(Exception): method __init__ (line 103) | def __init__(self, message: str, error_type: str = "global") -> None: class SessionManager (line 117) | class SessionManager: method __init__ (line 120) | def __init__(self, config_path: str | None = None) -> None: method _count_user_sessions (line 125) | def _count_user_sessions(self, user_id: str) -> int: method create_session (line 133) | async def create_session( method seed_from_summary (line 225) | async def seed_from_summary(self, session_id: str, messages: list[dict... method _cleanup_sandbox (line 289) | async def _cleanup_sandbox(session: Session) -> None: method _run_session (line 299) | async def _run_session( method submit (line 365) | async def submit(self, session_id: str, operation: Operation) -> bool: method submit_user_input (line 378) | async def submit_user_input(self, session_id: str, text: str) -> bool: method submit_approval (line 383) | async def submit_approval( method interrupt (line 392) | async def interrupt(self, session_id: str) -> bool: method undo (line 400) | async def undo(self, session_id: str) -> bool: method truncate (line 405) | async def truncate(self, session_id: str, user_message_index: int) -> ... method compact (line 413) | async def compact(self, session_id: str) -> bool: method shutdown_session (line 418) | async def shutdown_session(self, session_id: str) -> bool: method delete_session (line 435) | async def delete_session(self, session_id: str) -> bool: method get_session_owner (line 456) | def get_session_owner(self, session_id: str) -> str | None: method verify_session_access (line 463) | def verify_session_access(self, session_id: str, user_id: str) -> bool: method get_session_info (line 477) | def get_session_info(self, session_id: str) -> dict[str, Any] | None: method list_sessions (line 511) | def list_sessions(self, user_id: str | None = None) -> list[dict[str, ... method active_session_count (line 529) | def active_session_count(self) -> int: FILE: backend/user_quotas.py function _today (line 29) | def _today() -> str: function daily_cap_for (line 33) | def daily_cap_for(plan: str | None) -> int: function get_claude_used_today (line 38) | async def get_claude_used_today(user_id: str) -> int: function increment_claude (line 52) | async def increment_claude(user_id: str) -> int: function refund_claude (line 64) | async def refund_claude(user_id: str) -> None: function _reset_for_tests (line 81) | def _reset_for_tests() -> None: FILE: frontend/src/App.tsx function App (line 5) | function App() { FILE: frontend/src/components/Chat/ActivityStatusBar.tsx constant TOOL_LABELS (line 11) | const TOOL_LABELS: Record = { function formatResearchStatus (line 24) | function formatResearchStatus(raw: string): string { function statusLabel (line 99) | function statusLabel(status: ActivityStatus): string { function ActivityStatusBar (line 119) | function ActivityStatusBar() { FILE: frontend/src/components/Chat/AssistantMessage.tsx type AssistantMessageProps (line 8) | interface AssistantMessageProps { type DynamicToolPart (line 18) | type DynamicToolPart = Extract { function formatResearchStep (line 114) | function formatResearchStep(raw: string): { label: string } { function ResearchSteps (line 182) | function ResearchSteps({ steps }: { steps: string[] }) { constant HARDWARE_PRICING (line 226) | const HARDWARE_PRICING: Record = { function costLabel (line 245) | function costLabel(hardware: string): string | null { function StatusIcon (line 253) | function StatusIcon({ state, cancelled, isRejected }: { state: ToolPartS... function statusLabel (line 275) | function statusLabel(state: ToolPartState): string | null { function statusColor (line 287) | function statusColor(state: ToolPartState): string { function InlineApproval (line 302) | function InlineApproval({ constant EMPTY_AGENTS (line 517) | const EMPTY_AGENTS: Record = {}; function ToolCallGroup (line 519) | function ToolCallGroup({ tools, approveTools }: ToolCallGroupProps) { FILE: frontend/src/components/Chat/UserMessage.tsx type UserMessageProps (line 9) | interface UserMessageProps { function extractText (line 17) | function extractText(message: UIMessage): string { function UserMessage (line 24) | function UserMessage({ FILE: frontend/src/components/ClaudeCapDialog.tsx constant HF_PRICING_URL (line 13) | const HF_PRICING_URL = 'https://huggingface.co/pricing'; constant PRO_CAP (line 14) | const PRO_CAP = 20; type ClaudeCapDialogProps (line 16) | interface ClaudeCapDialogProps { function ClaudeCapDialog (line 24) | function ClaudeCapDialog({ FILE: frontend/src/components/CodePanel/CodePanel.tsx function PlanStatusIcon (line 24) | function PlanStatusIcon({ status }: { status: string }) { function ViewToggle (line 91) | function ViewToggle({ view, icon, label, isActive, onClick }: { function CodePanel (line 130) | function CodePanel() { FILE: frontend/src/components/Layout/AppLayout.tsx constant DRAWER_WIDTH (line 29) | const DRAWER_WIDTH = 260; function AppLayout (line 31) | function AppLayout() { FILE: frontend/src/components/SessionChat.tsx type SessionChatProps (line 18) | interface SessionChatProps { function SessionChat (line 24) | function SessionChat({ sessionId, isActive, onSessionDead }: SessionChat... FILE: frontend/src/components/SessionSidebar/SessionSidebar.tsx type SessionSidebarProps (line 23) | interface SessionSidebarProps { function SessionSidebar (line 27) | function SessionSidebar({ onClose }: SessionSidebarProps) { FILE: frontend/src/components/WelcomeScreen/WelcomeScreen.tsx constant HF_ORANGE (line 20) | const HF_ORANGE = '#FF9D00'; constant ORG_JOIN_URL (line 21) | const ORG_JOIN_URL = type StepStatus (line 28) | type StepStatus = 'completed' | 'active' | 'locked'; type ChecklistStepProps (line 30) | interface ChecklistStepProps { function StepIndicator (line 44) | function StepIndicator({ status, stepNumber }: { status: StepStatus; ste... function ChecklistStep (line 69) | function ChecklistStep({ function WelcomeScreen (line 185) | function WelcomeScreen() { FILE: frontend/src/hooks/useAgentChat.ts type UseAgentChatOptions (line 24) | interface UseAgentChatOptions { function useAgentChat (line 32) | function useAgentChat({ sessionId, isActive, onReady, onError, onSession... FILE: frontend/src/hooks/useAuth.ts function isInIframe (line 16) | function isInIframe(): boolean { function triggerLogin (line 25) | function triggerLogin(): void { function useAuth (line 33) | function useAuth() { FILE: frontend/src/hooks/useOrgMembership.ts constant POLL_INTERVAL_MS (line 9) | const POLL_INTERVAL_MS = 3000; function useOrgMembership (line 15) | function useOrgMembership(enabled: boolean) { FILE: frontend/src/hooks/useUserQuota.ts type PlanTier (line 12) | type PlanTier = 'free' | 'pro' | 'org'; type UserQuota (line 14) | interface UserQuota { function useUserQuota (line 21) | function useUserQuota() { FILE: frontend/src/lib/backend-message-store.ts constant STORAGE_KEY (line 9) | const STORAGE_KEY = 'hf-agent-backend-messages'; constant MAX_SESSIONS (line 10) | const MAX_SESSIONS = 50; type MessagesMap (line 12) | type MessagesMap = Record; function readAll (line 14) | function readAll(): MessagesMap { function writeAll (line 28) | function writeAll(map: MessagesMap): void { function loadBackendMessages (line 37) | function loadBackendMessages(sessionId: string): unknown[] { function saveBackendMessages (line 42) | function saveBackendMessages(sessionId: string, messages: unknown[]): vo... function moveBackendMessages (line 55) | function moveBackendMessages(fromId: string, toId: string): void { function deleteBackendMessages (line 63) | function deleteBackendMessages(sessionId: string): void { FILE: frontend/src/lib/chat-message-store.ts constant STORAGE_KEY (line 11) | const STORAGE_KEY = 'hf-agent-messages'; constant MAX_SESSIONS (line 12) | const MAX_SESSIONS = 50; type MessagesMap (line 14) | type MessagesMap = Record; function readAll (line 16) | function readAll(): MessagesMap { function writeAll (line 31) | function writeAll(map: MessagesMap): void { function loadMessages (line 39) | function loadMessages(sessionId: string): UIMessage[] { function saveMessages (line 45) | function saveMessages(sessionId: string, messages: UIMessage[]): void { function deleteMessages (line 59) | function deleteMessages(sessionId: string): void { function moveMessages (line 65) | function moveMessages(fromId: string, toId: string): void { FILE: frontend/src/lib/convert-llm-messages.ts type LLMToolCall (line 6) | interface LLMToolCall { type LLMMessage (line 11) | interface LLMMessage { function nextId (line 22) | function nextId(): string { function llmMessagesToUIMessages (line 33) | function llmMessagesToUIMessages( type ToolPart (line 148) | interface ToolPart { function joinText (line 158) | function joinText(parts: UIMessage['parts']): string { function stringifyOutput (line 165) | function stringifyOutput(output: unknown): string { function uiMessagesToLLMMessages (line 185) | function uiMessagesToLLMMessages(uiMessages: UIMessage[]): LLMMessage[] { FILE: frontend/src/lib/research-store.ts constant RESEARCH_MAX_STEPS (line 8) | const RESEARCH_MAX_STEPS = 4; constant STORAGE_KEY (line 10) | const STORAGE_KEY = 'hf-agent-research'; type ResearchState (line 12) | type ResearchState = { type ResearchMap (line 17) | type ResearchMap = Record; function readAll (line 19) | function readAll(): ResearchMap { function writeAll (line 28) | function writeAll(map: ResearchMap): void { function saveResearch (line 34) | function saveResearch( function loadResearch (line 47) | function loadResearch(sessionId: string): ResearchState | null { function clearResearch (line 52) | function clearResearch(sessionId: string): void { FILE: frontend/src/lib/sse-chat-transport.ts type SideChannelCallbacks (line 17) | interface SideChannelCallbacks { function nextPartId (line 41) | function nextPartId(prefix: string): string { function createSSEParserStream (line 46) | function createSSEParserStream(): TransformStream { function createEventToChunkStream (line 79) | function createEventToChunkStream(sideChannel: SideChannelCallbacks): Tr... class SSEChatTransport (line 274) | class SSEChatTransport implements ChatTransport { method constructor (line 278) | constructor(sessionId: string, sideChannel: SideChannelCallbacks) { method updateSideChannel (line 286) | updateSideChannel(sideChannel: SideChannelCallbacks): void { method destroy (line 290) | destroy(): void { method sendMessages (line 296) | async sendMessages( method reconnectToStream (line 381) | async reconnectToStream(): Promise | nu... FILE: frontend/src/main.tsx function Root (line 9) | function Root() { FILE: frontend/src/store/agentStore.ts type PlanItem (line 21) | interface PlanItem { type PanelSection (line 27) | interface PanelSection { type PanelData (line 32) | interface PanelData { type PanelView (line 40) | type PanelView = 'script' | 'output'; type LLMHealthError (line 42) | interface LLMHealthError { type ActivityStatus (line 48) | type ActivityStatus = type ResearchAgentStats (line 56) | interface ResearchAgentStats { type ResearchAgentState (line 63) | interface ResearchAgentState { type PerSessionState (line 70) | interface PerSessionState { type AgentStore (line 99) | interface AgentStore { function syncSnapshot (line 191) | function syncSnapshot( function loadToolErrors (line 206) | function loadToolErrors(): Record { function saveToolErrors (line 216) | function saveToolErrors(errors: Record): void { function loadRejectedTools (line 225) | function loadRejectedTools(): Record { function saveRejectedTools (line 235) | function saveRejectedTools(rejected: Record): void { FILE: frontend/src/store/layoutStore.ts type ThemeMode (line 4) | type ThemeMode = 'dark' | 'light'; type LayoutStore (line 6) | interface LayoutStore { FILE: frontend/src/store/sessionStore.ts type SessionStore (line 7) | interface SessionStore { FILE: frontend/src/theme.ts function makeCssBaseline (line 109) | function makeCssBaseline(vars: Record) { function makeDrawer (line 145) | function makeDrawer() { function makeTextField (line 156) | function makeTextField() { FILE: frontend/src/types/agent.ts type MessageMeta (line 9) | interface MessageMeta { type SessionMeta (line 13) | interface SessionMeta { type ToolApproval (line 26) | interface ToolApproval { type User (line 32) | interface User { FILE: frontend/src/types/events.ts type EventType (line 5) | type EventType = type AgentEvent (line 24) | interface AgentEvent { type ReadyEventData (line 29) | interface ReadyEventData { type ProcessingEventData (line 33) | interface ProcessingEventData { type AssistantMessageEventData (line 37) | interface AssistantMessageEventData { type ToolCallEventData (line 41) | interface ToolCallEventData { type ToolOutputEventData (line 46) | interface ToolOutputEventData { type ToolLogEventData (line 52) | interface ToolLogEventData { type PlanUpdateEventData (line 57) | interface PlanUpdateEventData { type ApprovalRequiredEventData (line 61) | interface ApprovalRequiredEventData { type ApprovalToolItem (line 66) | interface ApprovalToolItem { type TurnCompleteEventData (line 72) | interface TurnCompleteEventData { type CompactedEventData (line 76) | interface CompactedEventData { type ErrorEventData (line 81) | interface ErrorEventData { FILE: frontend/src/utils/api.ts function apiFetch (line 11) | async function apiFetch( FILE: frontend/src/utils/logProcessor.ts function processLogs (line 1) | function processLogs(logs: string): string { FILE: frontend/src/utils/model.ts constant CLAUDE_MODEL_PATH (line 10) | const CLAUDE_MODEL_PATH = 'anthropic/claude-opus-4-6'; constant FIRST_FREE_MODEL_PATH (line 11) | const FIRST_FREE_MODEL_PATH = 'moonshotai/Kimi-K2.6'; function isClaudePath (line 13) | function isClaudePath(modelPath: string | undefined): boolean { FILE: tests/unit/test_user_quotas.py function _reset_store (line 21) | def _reset_store(): function test_daily_cap_for_known_plans (line 28) | def test_daily_cap_for_known_plans(): function test_daily_cap_for_unknown_or_missing_defaults_to_free (line 34) | def test_daily_cap_for_unknown_or_missing_defaults_to_free(): function test_increment_and_read_back_same_day (line 44) | async def test_increment_and_read_back_same_day(): function test_independent_users_do_not_share_counts (line 52) | async def test_independent_users_do_not_share_counts(): function test_stale_day_resets_before_next_read (line 61) | async def test_stale_day_resets_before_next_read(): function test_concurrent_increments_under_lock_do_not_lose_writes (line 71) | async def test_concurrent_increments_under_lock_do_not_lose_writes(): function test_refund_decrements_and_drops_entry_at_zero (line 78) | async def test_refund_decrements_and_drops_entry_at_zero(): function test_refund_on_nonexistent_user_is_noop (line 87) | async def test_refund_on_nonexistent_user_is_noop(): function test_refund_on_stale_day_resets_rather_than_underflow (line 93) | async def test_refund_on_stale_day_resets_rather_than_underflow(): function test_free_user_cap_reached_at_one (line 101) | async def test_free_user_cap_reached_at_one(): function test_pro_user_cap_reached_at_twenty (line 109) | async def test_pro_user_cap_reached_at_twenty():