SYMBOL INDEX (1398 symbols across 140 files) FILE: cli/cli_app.py class CLIApp (line 31) | class CLIApp: method __init__ (line 34) | def __init__(self): method initialize_mcp_app (line 42) | async def initialize_mcp_app(self): method cleanup_mcp_app (line 47) | async def cleanup_mcp_app(self): method process_requirement_analysis_non_interactive (line 51) | async def process_requirement_analysis_non_interactive(self, initial_i... method process_requirement_analysis (line 115) | async def process_requirement_analysis(self): method process_input (line 230) | async def process_input(self, input_source: str, input_type: str): method display_results (line 295) | def display_results( method run_interactive_session (line 389) | async def run_interactive_session(self): function main (line 466) | async def main(): FILE: cli/cli_interface.py class Colors (line 13) | class Colors: class CLIInterface (line 35) | class CLIInterface: method __init__ (line 38) | def __init__(self): method _load_segmentation_config (line 52) | def _load_segmentation_config(self): method _save_segmentation_config (line 66) | def _save_segmentation_config(self): method _init_tkinter (line 104) | def _init_tkinter(self): method clear_screen (line 118) | def clear_screen(self): method print_logo (line 122) | def print_logo(self): method print_welcome_banner (line 141) | def print_welcome_banner(self): method print_separator (line 160) | def print_separator(self, char="═", length=79, color=Colors.CYAN): method print_status (line 164) | def print_status(self, message: str, status_type: str = "info"): method create_menu (line 185) | def create_menu(self): method get_user_input (line 229) | def get_user_input(self): method upload_file_gui (line 234) | def upload_file_gui(self) -> Optional[str]: method _get_manual_file_path (line 297) | def _get_manual_file_path(self) -> Optional[str]: method get_url_input (line 366) | def get_url_input(self) -> str: method get_chat_input (line 434) | def get_chat_input(self) -> str: method show_progress_bar (line 556) | def show_progress_bar(self, message: str, duration: float = 2.0): method show_spinner (line 575) | def show_spinner(self, message: str, duration: float = 1.0): method display_processing_stages (line 598) | def display_processing_stages( method print_results_header (line 658) | def print_results_header(self): method print_error_box (line 667) | def print_error_box(self, title: str, error_msg: str): method cleanup_cache (line 695) | def cleanup_cache(self): method print_goodbye (line 707) | def print_goodbye(self): method get_requirement_analysis_input (line 728) | def get_requirement_analysis_input(self) -> str: method display_guiding_questions (line 843) | def display_guiding_questions(self, questions_json: str): method get_question_answers (line 870) | def get_question_answers(self, questions_json: str) -> dict: method display_requirement_summary (line 905) | def display_requirement_summary(self, summary: str): method ask_continue (line 928) | def ask_continue(self) -> bool: method add_to_history (line 935) | def add_to_history(self, input_source: str, result: dict): method show_history (line 945) | def show_history(self): method show_configuration_menu (line 964) | def show_configuration_menu(self): FILE: cli/cli_launcher.py function check_dependencies (line 14) | def check_dependencies(): function print_banner (line 83) | def print_banner(): function main (line 99) | def main(): FILE: cli/main_cli.py function print_enhanced_banner (line 28) | def print_enhanced_banner(): function check_environment (line 51) | def check_environment(): function parse_arguments (line 90) | def parse_arguments(): function run_direct_processing (line 166) | async def run_direct_processing(app: CLIApp, input_source: str, input_ty... function run_requirement_analysis (line 207) | async def run_requirement_analysis(app: CLIApp, initial_idea: str): function main (line 244) | async def main(): FILE: cli/workflows/cli_workflow_adapter.py class CLIWorkflowAdapter (line 23) | class CLIWorkflowAdapter: method __init__ (line 34) | def __init__(self, cli_interface=None): method initialize_mcp_app (line 46) | async def initialize_mcp_app(self) -> Dict[str, Any]: method cleanup_mcp_app (line 86) | async def cleanup_mcp_app(self): method create_cli_progress_callback (line 103) | def create_cli_progress_callback(self, enable_indexing: bool = True) -... method execute_full_pipeline (line 161) | async def execute_full_pipeline( method execute_requirement_analysis_workflow (line 233) | async def execute_requirement_analysis_workflow( method execute_chat_pipeline (line 310) | async def execute_chat_pipeline( method process_input_with_orchestration (line 387) | async def process_input_with_orchestration( FILE: config/mcp_tool_definitions.py class MCPToolDefinitions (line 18) | class MCPToolDefinitions: method get_code_implementation_tools (line 22) | def get_code_implementation_tools() -> List[Dict[str, Any]]: method _get_read_file_tool (line 38) | def _get_read_file_tool() -> Dict[str, Any]: method _get_read_multiple_files_tool (line 64) | def _get_read_multiple_files_tool() -> Dict[str, Any]: method _get_read_code_mem_tool (line 89) | def _get_read_code_mem_tool() -> Dict[str, Any]: method _get_write_file_tool (line 108) | def _get_write_file_tool() -> Dict[str, Any]: method _get_write_multiple_files_tool (line 140) | def _get_write_multiple_files_tool() -> Dict[str, Any]: method _get_execute_python_tool (line 175) | def _get_execute_python_tool() -> Dict[str, Any]: method _get_execute_bash_tool (line 195) | def _get_execute_bash_tool() -> Dict[str, Any]: method _get_file_structure_tool (line 218) | def _get_file_structure_tool() -> Dict[str, Any]: method _get_search_code_references_tool (line 241) | def _get_search_code_references_tool() -> Dict[str, Any]: method _get_get_indexes_overview_tool (line 273) | def _get_get_indexes_overview_tool() -> Dict[str, Any]: method _get_set_workspace_tool (line 291) | def _get_set_workspace_tool() -> Dict[str, Any]: method get_available_tool_sets (line 327) | def get_available_tool_sets() -> Dict[str, str]: method get_tool_set (line 340) | def get_tool_set(tool_set_name: str) -> List[Dict[str, Any]]: method get_all_tools (line 352) | def get_all_tools() -> List[Dict[str, Any]]: function get_mcp_tools (line 364) | def get_mcp_tools(tool_set: str = "code_implementation") -> List[Dict[st... FILE: config/mcp_tool_definitions_index.py class MCPToolDefinitions (line 18) | class MCPToolDefinitions: method get_code_implementation_tools (line 22) | def get_code_implementation_tools() -> List[Dict[str, Any]]: method get_code_evaluation_tools (line 43) | def get_code_evaluation_tools() -> List[Dict[str, Any]]: method _get_read_file_tool (line 61) | def _get_read_file_tool() -> Dict[str, Any]: method _get_read_multiple_files_tool (line 87) | def _get_read_multiple_files_tool() -> Dict[str, Any]: method _get_read_code_mem_tool (line 112) | def _get_read_code_mem_tool() -> Dict[str, Any]: method _get_write_file_tool (line 131) | def _get_write_file_tool() -> Dict[str, Any]: method _get_write_multiple_files_tool (line 163) | def _get_write_multiple_files_tool() -> Dict[str, Any]: method _get_execute_python_tool (line 198) | def _get_execute_python_tool() -> Dict[str, Any]: method _get_execute_bash_tool (line 218) | def _get_execute_bash_tool() -> Dict[str, Any]: method _get_file_structure_tool (line 241) | def _get_file_structure_tool() -> Dict[str, Any]: method _get_search_code_references_tool (line 264) | def _get_search_code_references_tool() -> Dict[str, Any]: method _get_search_code_tool (line 296) | def _get_search_code_tool() -> Dict[str, Any]: method _get_operation_history_tool (line 328) | def _get_operation_history_tool() -> Dict[str, Any]: method _get_get_indexes_overview_tool (line 346) | def _get_get_indexes_overview_tool() -> Dict[str, Any]: method _get_set_workspace_tool (line 364) | def _get_set_workspace_tool() -> Dict[str, Any]: method _get_analyze_repo_structure_tool (line 401) | def _get_analyze_repo_structure_tool() -> Dict[str, Any]: method _get_detect_dependencies_tool (line 418) | def _get_detect_dependencies_tool() -> Dict[str, Any]: method _get_assess_code_quality_tool (line 435) | def _get_assess_code_quality_tool() -> Dict[str, Any]: method _get_evaluate_documentation_tool (line 452) | def _get_evaluate_documentation_tool() -> Dict[str, Any]: method _get_check_reproduction_readiness_tool (line 473) | def _get_check_reproduction_readiness_tool() -> Dict[str, Any]: method _get_generate_evaluation_summary_tool (line 494) | def _get_generate_evaluation_summary_tool() -> Dict[str, Any]: method _get_detect_empty_files_tool (line 515) | def _get_detect_empty_files_tool() -> Dict[str, Any]: method _get_detect_missing_files_tool (line 532) | def _get_detect_missing_files_tool() -> Dict[str, Any]: method _get_generate_code_revision_report_tool (line 549) | def _get_generate_code_revision_report_tool() -> Dict[str, Any]: method get_available_tool_sets (line 570) | def get_available_tool_sets() -> Dict[str, str]: method get_tool_set (line 584) | def get_tool_set(tool_set_name: str) -> List[Dict[str, Any]]: method get_all_tools (line 597) | def get_all_tools() -> List[Dict[str, Any]]: function get_mcp_tools (line 609) | def get_mcp_tools(tool_set: str = "code_implementation") -> List[Dict[st... FILE: deepcode.py function get_platform (line 26) | def get_platform(): function check_dependencies (line 37) | def check_dependencies(): function is_port_in_use (line 126) | def is_port_in_use(port: int) -> bool: function kill_process_on_port (line 132) | def kill_process_on_port(port: int): function cleanup_ports (line 172) | def cleanup_ports(): function install_backend_deps (line 181) | def install_backend_deps(): function install_frontend_deps (line 202) | def install_frontend_deps(frontend_dir: Path): function start_backend (line 218) | def start_backend(backend_dir: Path): function start_frontend (line 260) | def start_frontend(frontend_dir: Path): function cleanup_processes (line 293) | def cleanup_processes(): function cleanup_cache (line 339) | def cleanup_cache(): function print_banner (line 352) | def print_banner(): function launch_classic_ui (line 369) | def launch_classic_ui(): function _check_docker_prerequisites (line 414) | def _check_docker_prerequisites(): function launch_docker (line 482) | def launch_docker(): function launch_docker_cli (line 523) | def launch_docker_cli(): function launch_paper_test (line 553) | def launch_paper_test(paper_name: str, fast_mode: bool = False): function main (line 586) | def main(): FILE: nanobot/bridge/src/index.ts constant PORT (line 26) | const PORT = parseInt(process.env.BRIDGE_PORT || '3001', 10); constant AUTH_DIR (line 27) | const AUTH_DIR = process.env.AUTH_DIR || join(homedir(), '.nanobot', 'wh... FILE: nanobot/bridge/src/server.ts type SendCommand (line 8) | interface SendCommand { type BridgeMessage (line 14) | interface BridgeMessage { class BridgeServer (line 19) | class BridgeServer { method constructor (line 24) | constructor(private port: number, private authDir: string) {} method start (line 26) | async start(): Promise { method handleCommand (line 70) | private async handleCommand(cmd: SendCommand): Promise { method broadcast (line 76) | private broadcast(msg: BridgeMessage): void { method stop (line 85) | async stop(): Promise { FILE: nanobot/bridge/src/whatsapp.ts constant VERSION (line 18) | const VERSION = '0.1.0'; type InboundMessage (line 20) | interface InboundMessage { type WhatsAppClientOptions (line 29) | interface WhatsAppClientOptions { class WhatsAppClient (line 36) | class WhatsAppClient { method constructor (line 41) | constructor(options: WhatsAppClientOptions) { method connect (line 45) | async connect(): Promise { method extractMessageContent (line 136) | private extractMessageContent(msg: any): string | null { method sendMessage (line 173) | async sendMessage(to: string, text: string): Promise { method disconnect (line 181) | async disconnect(): Promise { FILE: nanobot/nanobot/agent/context.py class ContextBuilder (line 13) | class ContextBuilder: method __init__ (line 23) | def __init__(self, workspace: Path): method build_system_prompt (line 28) | def build_system_prompt(self, skill_names: list[str] | None = None) ->... method _get_identity (line 73) | def _get_identity(self) -> str: method _load_bootstrap_files (line 110) | def _load_bootstrap_files(self) -> str: method build_messages (line 122) | def build_messages( method _build_user_content (line 162) | def _build_user_content(self, text: str, media: list[str] | None) -> s... method add_tool_result (line 180) | def add_tool_result( method add_assistant_message (line 200) | def add_assistant_message( FILE: nanobot/nanobot/agent/loop.py class AgentLoop (line 32) | class AgentLoop: method __init__ (line 44) | def __init__( method _register_default_tools (line 85) | def _register_default_tools(self) -> None: method run (line 128) | async def run(self) -> None: method stop (line 156) | def stop(self) -> None: method _process_message (line 161) | async def _process_message(self, msg: InboundMessage) -> OutboundMessa... method _process_system_message (line 270) | async def _process_system_message(self, msg: InboundMessage) -> Outbou... method process_direct (line 364) | async def process_direct( FILE: nanobot/nanobot/agent/memory.py class MemoryStore (line 9) | class MemoryStore: method __init__ (line 16) | def __init__(self, workspace: Path): method get_today_file (line 21) | def get_today_file(self) -> Path: method read_today (line 25) | def read_today(self) -> str: method append_today (line 32) | def append_today(self, content: str) -> None: method read_long_term (line 46) | def read_long_term(self) -> str: method write_long_term (line 52) | def write_long_term(self, content: str) -> None: method get_recent_memories (line 56) | def get_recent_memories(self, days: int = 7) -> str: method list_memory_files (line 82) | def list_memory_files(self) -> list[Path]: method get_memory_context (line 90) | def get_memory_context(self) -> str: FILE: nanobot/nanobot/agent/skills.py class SkillsLoader (line 13) | class SkillsLoader: method __init__ (line 21) | def __init__(self, workspace: Path, builtin_skills_dir: Path | None = ... method list_skills (line 26) | def list_skills(self, filter_unavailable: bool = True) -> list[dict[st... method load_skill (line 63) | def load_skill(self, name: str) -> str | None: method load_skills_for_context (line 86) | def load_skills_for_context(self, skill_names: list[str]) -> str: method build_skills_summary (line 105) | def build_skills_summary(self) -> str: method _get_missing_requirements (line 146) | def _get_missing_requirements(self, skill_meta: dict) -> str: method _get_skill_description (line 158) | def _get_skill_description(self, name: str) -> str: method _strip_frontmatter (line 165) | def _strip_frontmatter(self, content: str) -> str: method _parse_nanobot_metadata (line 173) | def _parse_nanobot_metadata(self, raw: str) -> dict: method _check_requirements (line 181) | def _check_requirements(self, skill_meta: dict) -> bool: method _get_skill_meta (line 192) | def _get_skill_meta(self, name: str) -> dict: method get_always_skills (line 197) | def get_always_skills(self) -> list[str]: method get_skill_metadata (line 207) | def get_skill_metadata(self, name: str) -> dict | None: FILE: nanobot/nanobot/agent/subagent.py class SubagentManager (line 25) | class SubagentManager: method __init__ (line 34) | def __init__( method spawn (line 55) | async def spawn( method _run_subagent (line 92) | async def _run_subagent( method _announce_result (line 191) | async def _announce_result( method _build_subagent_prompt (line 225) | def _build_subagent_prompt(self, task: str) -> str: method get_running_count (line 256) | def get_running_count(self) -> int: FILE: nanobot/nanobot/agent/tools/base.py class Tool (line 7) | class Tool(ABC): method name (line 26) | def name(self) -> str: method description (line 32) | def description(self) -> str: method parameters (line 38) | def parameters(self) -> dict[str, Any]: method execute (line 43) | async def execute(self, **kwargs: Any) -> str: method validate_params (line 55) | def validate_params(self, params: dict[str, Any]) -> list[str]: method _validate (line 62) | def _validate(self, val: Any, schema: dict[str, Any], path: str) -> li... method to_schema (line 95) | def to_schema(self) -> dict[str, Any]: FILE: nanobot/nanobot/agent/tools/cron.py class CronTool (line 10) | class CronTool(Tool): method __init__ (line 13) | def __init__(self, cron_service: CronService): method set_context (line 18) | def set_context(self, channel: str, chat_id: str) -> None: method name (line 24) | def name(self) -> str: method description (line 28) | def description(self) -> str: method parameters (line 32) | def parameters(self) -> dict[str, Any]: method execute (line 55) | async def execute( method _add_job (line 72) | def _add_job(self, message: str, every_seconds: int | None, cron_expr:... method _list_jobs (line 96) | def _list_jobs(self) -> str: method _remove_job (line 103) | def _remove_job(self, job_id: str | None) -> str: FILE: nanobot/nanobot/agent/tools/deepcode.py function _get_deepcode_url (line 19) | def _get_deepcode_url() -> str: class DeepCodePaper2CodeTool (line 24) | class DeepCodePaper2CodeTool(Tool): method __init__ (line 27) | def __init__(self, api_url: str | None = None): method name (line 31) | def name(self) -> str: method description (line 35) | def description(self) -> str: method parameters (line 45) | def parameters(self) -> dict[str, Any]: method execute (line 66) | async def execute( class DeepCodeChat2CodeTool (line 105) | class DeepCodeChat2CodeTool(Tool): method __init__ (line 108) | def __init__(self, api_url: str | None = None): method name (line 112) | def name(self) -> str: method description (line 116) | def description(self) -> str: method parameters (line 125) | def parameters(self) -> dict[str, Any]: method execute (line 141) | async def execute( class DeepCodeStatusTool (line 177) | class DeepCodeStatusTool(Tool): method __init__ (line 180) | def __init__(self, api_url: str | None = None): method name (line 184) | def name(self) -> str: method description (line 188) | def description(self) -> str: method parameters (line 196) | def parameters(self) -> dict[str, Any]: method execute (line 208) | async def execute(self, task_id: str, **kwargs: Any) -> str: class DeepCodeListTasksTool (line 256) | class DeepCodeListTasksTool(Tool): method __init__ (line 259) | def __init__(self, api_url: str | None = None): method name (line 263) | def name(self) -> str: method description (line 267) | def description(self) -> str: method parameters (line 274) | def parameters(self) -> dict[str, Any]: method execute (line 287) | async def execute(self, limit: int = 10, **kwargs: Any) -> str: class DeepCodeCancelTool (line 343) | class DeepCodeCancelTool(Tool): method __init__ (line 346) | def __init__(self, api_url: str | None = None): method name (line 350) | def name(self) -> str: method description (line 354) | def description(self) -> str: method parameters (line 358) | def parameters(self) -> dict[str, Any]: method execute (line 370) | async def execute(self, task_id: str, **kwargs: Any) -> str: class DeepCodeRespondTool (line 388) | class DeepCodeRespondTool(Tool): method __init__ (line 391) | def __init__(self, api_url: str | None = None): method name (line 395) | def name(self) -> str: method description (line 399) | def description(self) -> str: method parameters (line 408) | def parameters(self) -> dict[str, Any]: method execute (line 433) | async def execute( function create_all_tools (line 477) | def create_all_tools(api_url: str | None = None) -> list[Tool]: FILE: nanobot/nanobot/agent/tools/filesystem.py function _resolve_path (line 9) | def _resolve_path(path: str, allowed_dir: Path | None = None) -> Path: class ReadFileTool (line 17) | class ReadFileTool(Tool): method __init__ (line 20) | def __init__(self, allowed_dir: Path | None = None): method name (line 24) | def name(self) -> str: method description (line 28) | def description(self) -> str: method parameters (line 32) | def parameters(self) -> dict[str, Any]: method execute (line 39) | async def execute(self, path: str, **kwargs: Any) -> str: class WriteFileTool (line 55) | class WriteFileTool(Tool): method __init__ (line 58) | def __init__(self, allowed_dir: Path | None = None): method name (line 62) | def name(self) -> str: method description (line 66) | def description(self) -> str: method parameters (line 70) | def parameters(self) -> dict[str, Any]: method execute (line 80) | async def execute(self, path: str, content: str, **kwargs: Any) -> str: class EditFileTool (line 92) | class EditFileTool(Tool): method __init__ (line 95) | def __init__(self, allowed_dir: Path | None = None): method name (line 99) | def name(self) -> str: method description (line 103) | def description(self) -> str: method parameters (line 107) | def parameters(self) -> dict[str, Any]: method execute (line 118) | async def execute(self, path: str, old_text: str, new_text: str, **kwa... class ListDirTool (line 144) | class ListDirTool(Tool): method __init__ (line 147) | def __init__(self, allowed_dir: Path | None = None): method name (line 151) | def name(self) -> str: method description (line 155) | def description(self) -> str: method parameters (line 159) | def parameters(self) -> dict[str, Any]: method execute (line 166) | async def execute(self, path: str, **kwargs: Any) -> str: FILE: nanobot/nanobot/agent/tools/message.py class MessageTool (line 9) | class MessageTool(Tool): method __init__ (line 12) | def __init__( method set_context (line 22) | def set_context(self, channel: str, chat_id: str) -> None: method set_send_callback (line 27) | def set_send_callback(self, callback: Callable[[OutboundMessage], Awai... method name (line 32) | def name(self) -> str: method description (line 36) | def description(self) -> str: method parameters (line 40) | def parameters(self) -> dict[str, Any]: method execute (line 54) | async def execute( FILE: nanobot/nanobot/agent/tools/registry.py class ToolRegistry (line 8) | class ToolRegistry: method __init__ (line 15) | def __init__(self): method register (line 18) | def register(self, tool: Tool) -> None: method unregister (line 22) | def unregister(self, name: str) -> None: method get (line 26) | def get(self, name: str) -> Tool | None: method has (line 30) | def has(self, name: str) -> bool: method get_definitions (line 34) | def get_definitions(self) -> list[dict[str, Any]]: method execute (line 38) | async def execute(self, name: str, params: dict[str, Any]) -> str: method tool_names (line 65) | def tool_names(self) -> list[str]: method __len__ (line 69) | def __len__(self) -> int: method __contains__ (line 72) | def __contains__(self, name: str) -> bool: FILE: nanobot/nanobot/agent/tools/shell.py class ExecTool (line 12) | class ExecTool(Tool): method __init__ (line 15) | def __init__( method name (line 39) | def name(self) -> str: method description (line 43) | def description(self) -> str: method parameters (line 47) | def parameters(self) -> dict[str, Any]: method execute (line 60) | async def execute(self, command: str, working_dir: str | None = None, ... method _guard_command (line 105) | def _guard_command(self, command: str, cwd: str) -> str | None: FILE: nanobot/nanobot/agent/tools/spawn.py class SpawnTool (line 11) | class SpawnTool(Tool): method __init__ (line 19) | def __init__(self, manager: "SubagentManager"): method set_context (line 24) | def set_context(self, channel: str, chat_id: str) -> None: method name (line 30) | def name(self) -> str: method description (line 34) | def description(self) -> str: method parameters (line 42) | def parameters(self) -> dict[str, Any]: method execute (line 58) | async def execute(self, task: str, label: str | None = None, **kwargs:... FILE: nanobot/nanobot/agent/tools/web.py function _strip_tags (line 19) | def _strip_tags(text: str) -> str: function _normalize (line 27) | def _normalize(text: str) -> str: function _validate_url (line 33) | def _validate_url(url: str) -> tuple[bool, str]: class WebSearchTool (line 46) | class WebSearchTool(Tool): method __init__ (line 65) | def __init__(self, api_key: str | None = None, max_results: int = 5): method execute (line 69) | async def execute(self, query: str, count: int | None = None, **kwargs... class WebFetchTool (line 98) | class WebFetchTool(Tool): method __init__ (line 113) | def __init__(self, max_chars: int = 50000): method execute (line 116) | async def execute( method _to_markdown (line 181) | def _to_markdown(self, html: str) -> str: FILE: nanobot/nanobot/bus/events.py class InboundMessage (line 9) | class InboundMessage: method session_key (line 21) | def session_key(self) -> str: class OutboundMessage (line 27) | class OutboundMessage: FILE: nanobot/nanobot/bus/queue.py class MessageBus (line 11) | class MessageBus: method __init__ (line 19) | def __init__(self): method publish_inbound (line 27) | async def publish_inbound(self, msg: InboundMessage) -> None: method consume_inbound (line 31) | async def consume_inbound(self) -> InboundMessage: method publish_outbound (line 35) | async def publish_outbound(self, msg: OutboundMessage) -> None: method consume_outbound (line 39) | async def consume_outbound(self) -> OutboundMessage: method subscribe_outbound (line 43) | def subscribe_outbound( method dispatch_outbound (line 51) | async def dispatch_outbound(self) -> None: method stop (line 69) | def stop(self) -> None: method inbound_size (line 74) | def inbound_size(self) -> int: method outbound_size (line 79) | def outbound_size(self) -> int: FILE: nanobot/nanobot/channels/base.py class BaseChannel (line 12) | class BaseChannel(ABC): method __init__ (line 22) | def __init__(self, config: Any, bus: MessageBus): method start (line 35) | async def start(self) -> None: method stop (line 47) | async def stop(self) -> None: method send (line 52) | async def send(self, msg: OutboundMessage) -> None: method is_allowed (line 61) | def is_allowed(self, sender_id: str) -> bool: method _handle_message (line 86) | async def _handle_message( method is_running (line 125) | def is_running(self) -> bool: FILE: nanobot/nanobot/channels/dingtalk.py class NanobotDingTalkHandler (line 36) | class NanobotDingTalkHandler(CallbackHandler): method __init__ (line 42) | def __init__(self, channel: "DingTalkChannel"): method process (line 46) | async def process(self, message: CallbackMessage): class DingTalkChannel (line 84) | class DingTalkChannel(BaseChannel): method __init__ (line 97) | def __init__(self, config: DingTalkConfig, bus: MessageBus): method start (line 110) | async def start(self) -> None: method stop (line 142) | async def stop(self) -> None: method _get_access_token (line 154) | async def _get_access_token(self) -> str | None: method send (line 181) | async def send(self, msg: OutboundMessage) -> None: method _on_message (line 218) | async def _on_message(self, content: str, sender_id: str, sender_name:... FILE: nanobot/nanobot/channels/discord.py class DiscordChannel (line 21) | class DiscordChannel(BaseChannel): method __init__ (line 26) | def __init__(self, config: DiscordConfig, bus: MessageBus): method start (line 35) | async def start(self) -> None: method stop (line 58) | async def stop(self) -> None: method send (line 74) | async def send(self, msg: OutboundMessage) -> None: method _gateway_loop (line 109) | async def _gateway_loop(self) -> None: method _identify (line 147) | async def _identify(self) -> None: method _start_heartbeat (line 166) | async def _start_heartbeat(self, interval_s: float) -> None: method _handle_message_create (line 183) | async def _handle_message_create(self, payload: dict[str, Any]) -> None: method _start_typing (line 242) | async def _start_typing(self, channel_id: str) -> None: method _stop_typing (line 258) | async def _stop_typing(self, channel_id: str) -> None: FILE: nanobot/nanobot/channels/email.py class EmailChannel (line 25) | class EmailChannel(BaseChannel): method __init__ (line 53) | def __init__(self, config: EmailConfig, bus: MessageBus): method start (line 61) | async def start(self) -> None: method stop (line 101) | async def stop(self) -> None: method send (line 105) | async def send(self, msg: OutboundMessage) -> None: method _validate_config (line 151) | def _validate_config(self) -> bool: method _smtp_send (line 171) | def _smtp_send(self, msg: EmailMessage) -> None: method _fetch_new_messages (line 189) | def _fetch_new_messages(self) -> list[dict[str, Any]]: method fetch_messages_between_dates (line 198) | def fetch_messages_between_dates( method _fetch_messages (line 224) | def _fetch_messages( method _format_imap_date (line 322) | def _format_imap_date(cls, value: date) -> str: method _extract_message_bytes (line 328) | def _extract_message_bytes(fetched: list[Any]) -> bytes | None: method _extract_uid (line 339) | def _extract_uid(fetched: list[Any]) -> str: method _decode_header_value (line 349) | def _decode_header_value(value: str) -> str: method _extract_text_body (line 358) | def _extract_text_body(cls, msg: Any) -> str: method _html_to_text (line 398) | def _html_to_text(raw_html: str) -> str: method _reply_subject (line 404) | def _reply_subject(self, base_subject: str) -> str: FILE: nanobot/nanobot/channels/feishu.py class FeishuChannel (line 43) | class FeishuChannel(BaseChannel): method __init__ (line 57) | def __init__(self, config: FeishuConfig, bus: MessageBus): method start (line 66) | async def start(self) -> None: method stop (line 123) | async def stop(self) -> None: method _add_reaction_sync (line 133) | def _add_reaction_sync(self, message_id: str, emoji_type: str) -> None: method _add_reaction (line 156) | async def _add_reaction(self, message_id: str, emoji_type: str = "THUM... method _split_row (line 175) | def _split_row(row: str) -> list[str]: method _parse_md_table (line 180) | def _parse_md_table(table_text: str) -> dict | None: method _build_card_elements (line 200) | def _build_card_elements(self, content: str) -> list[dict]: method send (line 216) | async def send(self, msg: OutboundMessage) -> None: method _on_message_sync (line 264) | def _on_message_sync(self, data: "P2ImMessageReceiveV1") -> None: method _on_message (line 272) | async def _on_message(self, data: "P2ImMessageReceiveV1") -> None: FILE: nanobot/nanobot/channels/manager.py class ChannelManager (line 18) | class ChannelManager: method __init__ (line 28) | def __init__( method _init_channels (line 39) | def _init_channels(self) -> None: method _start_channel (line 130) | async def _start_channel(self, name: str, channel: BaseChannel) -> None: method start_all (line 137) | async def start_all(self) -> None: method stop_all (line 155) | async def stop_all(self) -> None: method _dispatch_outbound (line 175) | async def _dispatch_outbound(self) -> None: method get_channel (line 197) | def get_channel(self, name: str) -> BaseChannel | None: method get_status (line 201) | def get_status(self) -> dict[str, Any]: method enabled_channels (line 209) | def enabled_channels(self) -> list[str]: FILE: nanobot/nanobot/channels/qq.py function _make_bot_class (line 28) | def _make_bot_class(channel: "QQChannel") -> "type[botpy.Client]": class QQChannel (line 48) | class QQChannel(BaseChannel): method __init__ (line 53) | def __init__(self, config: QQConfig, bus: MessageBus): method start (line 60) | async def start(self) -> None: method _run_bot (line 77) | async def _run_bot(self) -> None: method stop (line 85) | async def stop(self) -> None: method send (line 96) | async def send(self, msg: OutboundMessage) -> None: method _on_message (line 110) | async def _on_message(self, data: "C2CMessage") -> None: FILE: nanobot/nanobot/channels/slack.py class SlackChannel (line 18) | class SlackChannel(BaseChannel): method __init__ (line 23) | def __init__(self, config: SlackConfig, bus: MessageBus): method start (line 30) | async def start(self) -> None: method stop (line 63) | async def stop(self) -> None: method send (line 73) | async def send(self, msg: OutboundMessage) -> None: method _on_socket_request (line 92) | async def _on_socket_request( method _is_allowed (line 175) | def _is_allowed(self, sender_id: str, chat_id: str, channel_type: str)... method _should_respond_in_channel (line 188) | def _should_respond_in_channel(self, event_type: str, text: str, chat_... method _strip_bot_mention (line 199) | def _strip_bot_mention(self, text: str) -> str: FILE: nanobot/nanobot/channels/telegram.py function _markdown_to_telegram_html (line 22) | def _markdown_to_telegram_html(text: str) -> str: class TelegramChannel (line 87) | class TelegramChannel(BaseChannel): method __init__ (line 103) | def __init__( method start (line 118) | async def start(self) -> None: method stop (line 178) | async def stop(self) -> None: method send (line 193) | async def send(self, msg: OutboundMessage) -> None: method _on_start (line 218) | async def _on_start(self, update: Update, context: ContextTypes.DEFAUL... method _on_reset (line 230) | async def _on_reset(self, update: Update, context: ContextTypes.DEFAUL... method _on_help (line 251) | async def _on_help(self, update: Update, context: ContextTypes.DEFAULT... method _on_message (line 265) | async def _on_message(self, update: Update, context: ContextTypes.DEFA... method _start_typing (line 369) | def _start_typing(self, chat_id: str) -> None: method _stop_typing (line 375) | def _stop_typing(self, chat_id: str) -> None: method _typing_loop (line 381) | async def _typing_loop(self, chat_id: str) -> None: method _get_extension (line 392) | def _get_extension(self, media_type: str, mime_type: str | None) -> str: FILE: nanobot/nanobot/channels/whatsapp.py class WhatsAppChannel (line 14) | class WhatsAppChannel(BaseChannel): method __init__ (line 24) | def __init__(self, config: WhatsAppConfig, bus: MessageBus): method start (line 30) | async def start(self) -> None: method stop (line 65) | async def stop(self) -> None: method send (line 74) | async def send(self, msg: OutboundMessage) -> None: method _handle_bridge_message (line 86) | async def _handle_bridge_message(self, raw: str) -> None: FILE: nanobot/nanobot/cli/commands.py function _flush_pending_tty_input (line 40) | def _flush_pending_tty_input() -> None: function _save_history (line 68) | def _save_history() -> None: function _restore_terminal (line 77) | def _restore_terminal() -> None: function _enable_line_editing (line 89) | def _enable_line_editing() -> None: function _prompt_text (line 132) | def _prompt_text() -> str: function _print_agent_response (line 142) | def _print_agent_response(response: str, render_markdown: bool) -> None: function _is_exit_command (line 159) | def _is_exit_command(command: str) -> bool: function _read_interactive_input_async (line 164) | async def _read_interactive_input_async() -> str: function version_callback (line 172) | def version_callback(value: bool): function main (line 179) | def main( function onboard (line 192) | def onboard(): function _create_workspace_templates (line 227) | def _create_workspace_templates(workspace: Path): function _make_provider (line 299) | def _make_provider(config): function gateway (line 324) | def gateway( function agent (line 441) | def agent( function channels_status (line 552) | def channels_status(): function _get_bridge_dir (line 583) | def _get_bridge_dir() -> Path: function channels_login (line 642) | def channels_login(): function cron_list (line 668) | def cron_list( function cron_add (line 718) | def cron_add( function cron_remove (line 765) | def cron_remove( function cron_enable (line 782) | def cron_enable( function cron_run (line 802) | def cron_run( function status (line 828) | def status(): FILE: nanobot/nanobot/config/loader.py function get_config_path (line 10) | def get_config_path() -> Path: function get_data_dir (line 15) | def get_data_dir() -> Path: function load_config (line 22) | def load_config(config_path: Path | None = None) -> Config: function save_config (line 47) | def save_config(config: Config, config_path: Path | None = None) -> None: function _migrate_config (line 66) | def _migrate_config(data: dict) -> dict: function convert_keys (line 76) | def convert_keys(data: Any) -> Any: function convert_to_camel (line 85) | def convert_to_camel(data: Any) -> Any: function camel_to_snake (line 94) | def camel_to_snake(name: str) -> str: function snake_to_camel (line 104) | def snake_to_camel(name: str) -> str: FILE: nanobot/nanobot/config/schema.py class WhatsAppConfig (line 9) | class WhatsAppConfig(BaseModel): class TelegramConfig (line 17) | class TelegramConfig(BaseModel): class FeishuConfig (line 28) | class FeishuConfig(BaseModel): class DingTalkConfig (line 39) | class DingTalkConfig(BaseModel): class DiscordConfig (line 48) | class DiscordConfig(BaseModel): class EmailConfig (line 58) | class EmailConfig(BaseModel): class SlackDMConfig (line 92) | class SlackDMConfig(BaseModel): class SlackConfig (line 100) | class SlackConfig(BaseModel): class QQConfig (line 114) | class QQConfig(BaseModel): class ChannelsConfig (line 125) | class ChannelsConfig(BaseModel): class AgentDefaults (line 138) | class AgentDefaults(BaseModel): class AgentsConfig (line 148) | class AgentsConfig(BaseModel): class ProviderConfig (line 154) | class ProviderConfig(BaseModel): class ProvidersConfig (line 162) | class ProvidersConfig(BaseModel): class GatewayConfig (line 178) | class GatewayConfig(BaseModel): class WebSearchConfig (line 185) | class WebSearchConfig(BaseModel): class WebToolsConfig (line 192) | class WebToolsConfig(BaseModel): class ExecToolConfig (line 198) | class ExecToolConfig(BaseModel): class ToolsConfig (line 204) | class ToolsConfig(BaseModel): class Config (line 212) | class Config(BaseSettings): method workspace_path (line 222) | def workspace_path(self) -> Path: method _match_provider (line 226) | def _match_provider( method get_provider (line 247) | def get_provider(self, model: str | None = None) -> ProviderConfig | N... method get_provider_name (line 252) | def get_provider_name(self, model: str | None = None) -> str | None: method get_api_key (line 257) | def get_api_key(self, model: str | None = None) -> str | None: method get_api_base (line 262) | def get_api_base(self, model: str | None = None) -> str | None: class Config (line 278) | class Config: FILE: nanobot/nanobot/cron/service.py function _now_ms (line 15) | def _now_ms() -> int: function _compute_next_run (line 19) | def _compute_next_run(schedule: CronSchedule, now_ms: int) -> int | None: class CronService (line 43) | class CronService: method __init__ (line 46) | def __init__( method _load_store (line 57) | def _load_store(self) -> CronStore: method _save_store (line 106) | def _save_store(self) -> None: method start (line 150) | async def start(self) -> None: method stop (line 161) | def stop(self) -> None: method _recompute_next_runs (line 168) | def _recompute_next_runs(self) -> None: method _get_next_wake_ms (line 177) | def _get_next_wake_ms(self) -> int | None: method _arm_timer (line 186) | def _arm_timer(self) -> None: method _on_timer (line 205) | async def _on_timer(self) -> None: method _execute_job (line 223) | async def _execute_job(self, job: CronJob) -> None: method list_jobs (line 257) | def list_jobs(self, include_disabled: bool = False) -> list[CronJob]: method add_job (line 263) | def add_job( method remove_job (line 302) | def remove_job(self, job_id: str) -> bool: method enable_job (line 316) | def enable_job(self, job_id: str, enabled: bool = True) -> CronJob | N... method run_job (line 332) | async def run_job(self, job_id: str, force: bool = False) -> bool: method status (line 345) | def status(self) -> dict: FILE: nanobot/nanobot/cron/types.py class CronSchedule (line 8) | class CronSchedule: class CronPayload (line 23) | class CronPayload: class CronJobState (line 35) | class CronJobState: class CronJob (line 45) | class CronJob: class CronStore (line 60) | class CronStore: FILE: nanobot/nanobot/heartbeat/service.py function _is_heartbeat_empty (line 21) | def _is_heartbeat_empty(content: str | None) -> bool: class HeartbeatService (line 38) | class HeartbeatService: method __init__ (line 46) | def __init__( method heartbeat_file (line 61) | def heartbeat_file(self) -> Path: method _read_heartbeat_file (line 64) | def _read_heartbeat_file(self) -> str | None: method start (line 73) | async def start(self) -> None: method stop (line 83) | def stop(self) -> None: method _run_loop (line 90) | async def _run_loop(self) -> None: method _tick (line 102) | async def _tick(self) -> None: method trigger_now (line 126) | async def trigger_now(self) -> str | None: FILE: nanobot/nanobot/providers/base.py class ToolCallRequest (line 9) | class ToolCallRequest: class LLMResponse (line 18) | class LLMResponse: method has_tool_calls (line 28) | def has_tool_calls(self) -> bool: class LLMProvider (line 33) | class LLMProvider(ABC): method __init__ (line 41) | def __init__(self, api_key: str | None = None, api_base: str | None = ... method chat (line 46) | async def chat( method get_default_model (line 70) | def get_default_model(self) -> str: FILE: nanobot/nanobot/providers/litellm_provider.py class LiteLLMProvider (line 14) | class LiteLLMProvider(LLMProvider): method __init__ (line 23) | def __init__( method _setup_env (line 52) | def _setup_env(self, api_key: str, api_base: str | None, model: str) -... method _resolve_model (line 73) | def _resolve_model(self, model: str) -> str: method _apply_model_overrides (line 92) | def _apply_model_overrides(self, model: str, kwargs: dict[str, Any]) -... method chat (line 102) | async def chat( method _parse_response (line 157) | def _parse_response(self, response: Any) -> LLMResponse: method get_default_model (line 199) | def get_default_model(self) -> str: FILE: nanobot/nanobot/providers/registry.py class ProviderSpec (line 20) | class ProviderSpec: method label (line 55) | def label(self) -> str: function find_by_model (line 272) | def find_by_model(model: str) -> ProviderSpec | None: function find_gateway (line 284) | def find_gateway( function find_by_name (line 315) | def find_by_name(name: str) -> ProviderSpec | None: FILE: nanobot/nanobot/providers/transcription.py class GroqTranscriptionProvider (line 10) | class GroqTranscriptionProvider: method __init__ (line 17) | def __init__(self, api_key: str | None = None): method transcribe (line 21) | async def transcribe(self, file_path: str | Path) -> str: FILE: nanobot/nanobot/session/manager.py class Session (line 15) | class Session: method add_message (line 28) | def add_message(self, role: str, content: str, **kwargs: Any) -> None: method get_history (line 34) | def get_history(self, max_messages: int = 50) -> list[dict[str, Any]]: method clear (line 52) | def clear(self) -> None: class SessionManager (line 58) | class SessionManager: method __init__ (line 65) | def __init__(self, workspace: Path): method _get_session_path (line 70) | def _get_session_path(self, key: str) -> Path: method get_or_create (line 75) | def get_or_create(self, key: str) -> Session: method _load (line 97) | def _load(self, key: str) -> Session | None: method save (line 137) | def save(self, session: Session) -> None: method delete (line 157) | def delete(self, key: str) -> bool: method list_sessions (line 177) | def list_sessions(self) -> list[dict[str, Any]]: FILE: nanobot/nanobot/utils/helpers.py function ensure_dir (line 7) | def ensure_dir(path: Path) -> Path: function get_data_path (line 13) | def get_data_path() -> Path: function get_workspace_path (line 18) | def get_workspace_path(workspace: str | None = None) -> Path: function get_sessions_path (line 35) | def get_sessions_path() -> Path: function get_memory_path (line 40) | def get_memory_path(workspace: Path | None = None) -> Path: function get_skills_path (line 46) | def get_skills_path(workspace: Path | None = None) -> Path: function today_date (line 52) | def today_date() -> str: function timestamp (line 57) | def timestamp() -> str: function truncate_string (line 62) | def truncate_string(s: str, max_len: int = 100, suffix: str = "...") -> ... function safe_filename (line 69) | def safe_filename(name: str) -> str: function parse_session_key (line 78) | def parse_session_key(key: str) -> tuple[str, str]: FILE: new_ui/backend/api/routes/config.py function get_settings (line 25) | async def get_settings(): function get_llm_providers (line 40) | async def get_llm_providers(): function set_llm_provider (line 62) | async def set_llm_provider(request: LLMProviderUpdateRequest): FILE: new_ui/backend/api/routes/files.py function upload_file (line 23) | async def upload_file(file: UploadFile = File(...)): function download_file (line 85) | async def download_file(file_id: str): function delete_file (line 105) | async def delete_file(file_id: str): function get_file_info (line 130) | async def get_file_info(file_id: str): FILE: new_ui/backend/api/routes/requirements.py function generate_questions (line 21) | async def generate_questions(request: GenerateQuestionsRequest): function summarize_requirements (line 38) | async def summarize_requirements(request: SummarizeRequirementsRequest): function modify_requirements (line 58) | async def modify_requirements(request: ModifyRequirementsRequest): FILE: new_ui/backend/api/routes/workflows.py function start_paper_to_code (line 21) | async def start_paper_to_code( function start_chat_planning (line 48) | async def start_chat_planning( function get_workflow_status (line 74) | async def get_workflow_status(task_id: str): function cancel_workflow (line 100) | async def cancel_workflow(task_id: str): function respond_to_interaction (line 114) | async def respond_to_interaction(task_id: str, request: InteractionRespo... function get_pending_interaction (line 159) | async def get_pending_interaction(task_id: str): function get_active_tasks (line 186) | async def get_active_tasks(): function get_recent_tasks (line 207) | async def get_recent_tasks(limit: int = 10): FILE: new_ui/backend/api/websockets/code_stream_ws.py function code_stream_websocket (line 17) | async def code_stream_websocket(websocket: WebSocket, task_id: str): FILE: new_ui/backend/api/websockets/logs_ws.py function logs_websocket (line 18) | async def logs_websocket(websocket: WebSocket, session_id: str): FILE: new_ui/backend/api/websockets/workflow_ws.py class ConnectionManager (line 16) | class ConnectionManager: method __init__ (line 19) | def __init__(self): method connect (line 22) | async def connect(self, websocket: WebSocket, task_id: str): method disconnect (line 28) | def disconnect(self, websocket: WebSocket, task_id: str): method broadcast (line 35) | async def broadcast(self, task_id: str, message: dict): function workflow_websocket (line 48) | async def workflow_websocket(websocket: WebSocket, task_id: str): FILE: new_ui/backend/main.py function lifespan (line 54) | async def lifespan(app: FastAPI): function health_check (line 122) | async def health_check(): function serve_spa (line 129) | async def serve_spa(request: Request, full_path: str): function root (line 140) | async def root(): function health_check_dev (line 150) | async def health_check_dev(): FILE: new_ui/backend/models/requests.py class PaperToCodeRequest (line 7) | class PaperToCodeRequest(BaseModel): class ChatPlanningRequest (line 15) | class ChatPlanningRequest(BaseModel): class GenerateQuestionsRequest (line 22) | class GenerateQuestionsRequest(BaseModel): class SummarizeRequirementsRequest (line 28) | class SummarizeRequirementsRequest(BaseModel): class ModifyRequirementsRequest (line 37) | class ModifyRequirementsRequest(BaseModel): class LLMProviderUpdateRequest (line 44) | class LLMProviderUpdateRequest(BaseModel): class FileUploadResponse (line 52) | class FileUploadResponse(BaseModel): class InteractionResponseRequest (line 61) | class InteractionResponseRequest(BaseModel): FILE: new_ui/backend/models/responses.py class TaskResponse (line 8) | class TaskResponse(BaseModel): class WorkflowStatusResponse (line 17) | class WorkflowStatusResponse(BaseModel): class QuestionsResponse (line 30) | class QuestionsResponse(BaseModel): class RequirementsSummaryResponse (line 37) | class RequirementsSummaryResponse(BaseModel): class ConfigResponse (line 44) | class ConfigResponse(BaseModel): class SettingsResponse (line 53) | class SettingsResponse(BaseModel): class ErrorResponse (line 62) | class ErrorResponse(BaseModel): FILE: new_ui/backend/services/requirement_service.py class RequirementService (line 13) | class RequirementService: method generate_questions (line 16) | async def generate_questions(self, initial_requirement: str) -> Dict[s... method summarize_requirements (line 51) | async def summarize_requirements( method modify_requirements (line 88) | async def modify_requirements( FILE: new_ui/backend/services/session_service.py class Session (line 13) | class Session: class SessionService (line 24) | class SessionService: method __init__ (line 27) | def __init__(self, timeout_minutes: int = 60): method create_session (line 31) | def create_session(self) -> Session: method get_session (line 38) | def get_session(self, session_id: str) -> Optional[Session]: method delete_session (line 49) | def delete_session(self, session_id: str): method add_to_history (line 54) | def add_to_history( method get_history (line 73) | def get_history(self, session_id: str, limit: int = 50) -> List[Dict[s... method add_active_task (line 80) | def add_active_task(self, session_id: str, task_id: str): method remove_active_task (line 86) | def remove_active_task(self, session_id: str, task_id: str): method update_preferences (line 92) | def update_preferences(self, session_id: str, preferences: Dict[str, A... method cleanup_expired_sessions (line 98) | def cleanup_expired_sessions(self): FILE: new_ui/backend/services/workflow_service.py class WorkflowTask (line 21) | class WorkflowTask: class WorkflowService (line 39) | class WorkflowService: method __init__ (line 42) | def __init__(self): method _get_plugin_integration (line 50) | def _get_plugin_integration(self): method create_task (line 63) | def create_task(self) -> WorkflowTask: method get_task (line 71) | def get_task(self, task_id: str) -> Optional[WorkflowTask]: method subscribe (line 75) | def subscribe(self, task_id: str) -> Optional[asyncio.Queue]: method unsubscribe (line 87) | def unsubscribe(self, task_id: str, queue: asyncio.Queue): method _broadcast (line 95) | async def _broadcast(self, task_id: str, message: Dict[str, Any]): method get_progress_queue (line 112) | def get_progress_queue(self, task_id: str) -> Optional[asyncio.Queue]: method _create_progress_callback (line 117) | async def _create_progress_callback( method execute_paper_to_code (line 144) | async def execute_paper_to_code( method execute_chat_planning (line 234) | async def execute_chat_planning( method cancel_task (line 370) | def cancel_task(self, task_id: str) -> bool: method cleanup_task (line 379) | def cleanup_task(self, task_id: str): method get_active_tasks (line 386) | def get_active_tasks(self) -> List[WorkflowTask]: method get_recent_tasks (line 390) | def get_recent_tasks(self, limit: int = 10) -> List[WorkflowTask]: FILE: new_ui/backend/settings.py class Settings (line 21) | class Settings(BaseSettings): class Config (line 46) | class Config: function load_mcp_config (line 53) | def load_mcp_config() -> Dict[str, Any]: function load_secrets (line 62) | def load_secrets() -> Dict[str, Any]: function get_llm_provider (line 71) | def get_llm_provider() -> str: function get_llm_models (line 77) | def get_llm_models(provider: Optional[str] = None) -> Dict[str, str]: function get_api_key (line 90) | def get_api_key(provider: str) -> Optional[str]: function is_indexing_enabled (line 97) | def is_indexing_enabled() -> bool: FILE: new_ui/frontend/src/App.tsx function App (line 10) | function App() { FILE: new_ui/frontend/src/components/common/Button.tsx type ButtonProps (line 5) | interface ButtonProps extends ButtonHTMLAttributes { FILE: new_ui/frontend/src/components/common/Card.tsx type CardProps (line 4) | interface CardProps { function Card (line 10) | function Card({ FILE: new_ui/frontend/src/components/common/ConfirmDialog.tsx type ConfirmDialogProps (line 10) | interface ConfirmDialogProps { function ConfirmDialog (line 21) | function ConfirmDialog({ FILE: new_ui/frontend/src/components/common/GuardedLink.tsx type GuardedLinkProps (line 13) | interface GuardedLinkProps extends Omit { function GuardedLink (line 17) | function GuardedLink({ to, children, ...props }: GuardedLinkProps) { FILE: new_ui/frontend/src/components/common/TaskRecoveryBanner.tsx type TaskRecoveryBannerProps (line 12) | interface TaskRecoveryBannerProps { function TaskRecoveryBanner (line 18) | function TaskRecoveryBanner({ FILE: new_ui/frontend/src/components/common/Toaster.tsx type Toast (line 5) | interface Toast { function Toaster (line 72) | function Toaster() { FILE: new_ui/frontend/src/components/input/ChatInput.tsx type ChatInputProps (line 5) | interface ChatInputProps { function ChatInput (line 12) | function ChatInput({ FILE: new_ui/frontend/src/components/input/FileUploader.tsx type FileUploaderProps (line 7) | interface FileUploaderProps { function FileUploader (line 14) | function FileUploader({ FILE: new_ui/frontend/src/components/input/UrlInput.tsx type UrlInputProps (line 5) | interface UrlInputProps { function UrlInput (line 12) | function UrlInput({ FILE: new_ui/frontend/src/components/interaction/InlineChatInteraction.tsx type InlineChatInteractionProps (line 25) | interface InlineChatInteractionProps { function InlineChatInteraction (line 31) | function InlineChatInteraction({ FILE: new_ui/frontend/src/components/interaction/InteractionPanel.tsx type InteractionPanelProps (line 27) | interface InteractionPanelProps { function InteractionPanel (line 33) | function InteractionPanel({ FILE: new_ui/frontend/src/components/layout/Header.tsx function Header (line 6) | function Header() { FILE: new_ui/frontend/src/components/layout/Layout.tsx type LayoutProps (line 9) | interface LayoutProps { function Layout (line 13) | function Layout({ children }: LayoutProps) { FILE: new_ui/frontend/src/components/layout/Sidebar.tsx function Sidebar (line 11) | function Sidebar() { FILE: new_ui/frontend/src/components/results/CodePreview.tsx type CodePreviewProps (line 4) | interface CodePreviewProps { function CodePreview (line 10) | function CodePreview({ FILE: new_ui/frontend/src/components/results/FileTree.tsx type FileNode (line 5) | interface FileNode { type FileTreeProps (line 11) | interface FileTreeProps { function FileTree (line 17) | function FileTree({ files, onFileSelect, selectedFile }: FileTreeProps) { type TreeNodeProps (line 84) | interface TreeNodeProps { function TreeNode (line 92) | function TreeNode({ FILE: new_ui/frontend/src/components/streaming/ActivityLogViewer.tsx type LogEntry (line 24) | interface LogEntry { type ActivityLogViewerProps (line 32) | interface ActivityLogViewerProps { function getIconForMessage (line 39) | function getIconForMessage(message: string): React.ReactNode { function formatTime (line 70) | function formatTime(date: Date): string { function ActivityLogViewer (line 79) | function ActivityLogViewer({ FILE: new_ui/frontend/src/components/streaming/CodeStreamViewer.tsx type CodeStreamViewerProps (line 7) | interface CodeStreamViewerProps { function CodeStreamViewer (line 14) | function CodeStreamViewer({ FILE: new_ui/frontend/src/components/streaming/LogViewer.tsx type LogEntry (line 5) | interface LogEntry { type LogViewerProps (line 13) | interface LogViewerProps { function LogViewer (line 26) | function LogViewer({ FILE: new_ui/frontend/src/components/streaming/ProgressTracker.tsx type ProgressTrackerProps (line 5) | interface ProgressTrackerProps { function ProgressTracker (line 10) | function ProgressTracker({ FILE: new_ui/frontend/src/components/workflow/WorkflowCanvas.tsx type WorkflowCanvasProps (line 18) | interface WorkflowCanvasProps { function WorkflowCanvas (line 28) | function WorkflowCanvas({ FILE: new_ui/frontend/src/components/workflow/WorkflowNode.tsx type WorkflowNodeData (line 6) | interface WorkflowNodeData { function WorkflowNode (line 15) | function WorkflowNode({ data }: NodeProps) { FILE: new_ui/frontend/src/hooks/useAdaptiveLayout.ts function useAdaptiveLayout (line 31) | function useAdaptiveLayout(taskType: TaskType): LayoutConfig { FILE: new_ui/frontend/src/hooks/useNavigationGuard.ts type NavigationGuardState (line 13) | interface NavigationGuardState { function useNavigationGuard (line 19) | function useNavigationGuard() { FILE: new_ui/frontend/src/hooks/useStreaming.ts type WSMessage (line 12) | type WSMessage = WSProgressMessage | WSCompleteMessage | WSErrorMessage ... function useStreaming (line 14) | function useStreaming(taskId: string | null) { FILE: new_ui/frontend/src/hooks/useTaskRecovery.ts type RecoveryState (line 19) | interface RecoveryState { function useTaskRecovery (line 25) | function useTaskRecovery() { FILE: new_ui/frontend/src/hooks/useWebSocket.ts type UseWebSocketOptions (line 4) | interface UseWebSocketOptions { function useWebSocket (line 14) | function useWebSocket( FILE: new_ui/frontend/src/pages/ChatPlanningPage.tsx function ChatPlanningPage (line 17) | function ChatPlanningPage() { FILE: new_ui/frontend/src/pages/HomePage.tsx function HomePage (line 74) | function HomePage() { FILE: new_ui/frontend/src/pages/PaperToCodePage.tsx type InputMethod (line 16) | type InputMethod = 'file' | 'url'; function PaperToCodePage (line 18) | function PaperToCodePage() { FILE: new_ui/frontend/src/pages/SettingsPage.tsx function SettingsPage (line 9) | function SettingsPage() { FILE: new_ui/frontend/src/pages/WorkflowEditorPage.tsx function WorkflowEditorPage (line 7) | function WorkflowEditorPage() { FILE: new_ui/frontend/src/stores/sessionStore.ts type SessionState (line 5) | interface SessionState { FILE: new_ui/frontend/src/stores/workflowStore.ts type ActivityLogEntry (line 9) | interface ActivityLogEntry { type PendingInteraction (line 18) | interface PendingInteraction { type WorkflowState (line 39) | interface WorkflowState { FILE: new_ui/frontend/src/types/api.ts type TaskResponse (line 3) | interface TaskResponse { type WorkflowStatusResponse (line 10) | interface WorkflowStatusResponse { type QuestionsResponse (line 21) | interface QuestionsResponse { type Question (line 26) | interface Question { type RequirementsSummaryResponse (line 34) | interface RequirementsSummaryResponse { type ConfigResponse (line 39) | interface ConfigResponse { type SettingsResponse (line 46) | interface SettingsResponse { type FileUploadResponse (line 53) | interface FileUploadResponse { type ErrorResponse (line 60) | interface ErrorResponse { type WSProgressMessage (line 67) | interface WSProgressMessage { type WSCompleteMessage (line 76) | interface WSCompleteMessage { type WSErrorMessage (line 84) | interface WSErrorMessage { type WSCodeChunkMessage (line 91) | interface WSCodeChunkMessage { type WSLogMessage (line 99) | interface WSLogMessage { type WSInteractionMessage (line 108) | interface WSInteractionMessage { type WSMessage (line 126) | type WSMessage = FILE: new_ui/frontend/src/types/common.ts type Message (line 3) | interface Message { type Notification (line 11) | interface Notification { type LayoutConfig (line 19) | interface LayoutConfig { type TaskType (line 26) | type TaskType = 'paper-to-code' | 'chat-planning' | 'workflow-editor' | ... FILE: new_ui/frontend/src/types/workflow.ts type WorkflowStatus (line 3) | type WorkflowStatus = 'idle' | 'running' | 'completed' | 'error' | 'canc... type WorkflowStep (line 5) | interface WorkflowStep { type WorkflowTask (line 13) | interface WorkflowTask { type WorkflowInput (line 24) | interface WorkflowInput { constant PAPER_TO_CODE_STEPS (line 32) | const PAPER_TO_CODE_STEPS: WorkflowStep[] = [ constant CHAT_PLANNING_STEPS (line 43) | const CHAT_PLANNING_STEPS: WorkflowStep[] = [ FILE: setup.py function read_long_description (line 7) | def read_long_description(): function retrieve_metadata (line 15) | def retrieve_metadata(): function read_requirements (line 42) | def read_requirements(): FILE: tools/bocha_search_server.py function bocha_web_search (line 43) | async def bocha_web_search( function bocha_ai_search (line 115) | async def bocha_ai_search( function main (line 198) | def main(): FILE: tools/code_implementation_server.py function initialize_workspace (line 56) | def initialize_workspace(workspace_dir: str = None): function ensure_workspace_exists (line 80) | def ensure_workspace_exists(): function validate_path (line 92) | def validate_path(path: str) -> Path: function log_operation (line 103) | def log_operation(action: str, details: Dict[str, Any]): function read_file (line 114) | async def read_file( function read_multiple_files (line 180) | async def read_multiple_files(file_requests: str, max_files: int = 5) ->... function write_file (line 403) | async def write_file( function write_multiple_files (line 475) | async def write_multiple_files( function execute_python (line 687) | async def execute_python(code: str, timeout: int = 30) -> str: function execute_bash (line 767) | async def execute_bash(command: str, timeout: int = 30) -> str: function read_code_mem (line 853) | async def read_code_mem(file_paths: List[str]) -> str: function _extract_file_section_from_summary (line 986) | def _extract_file_section_from_summary( function _normalize_file_path (line 1038) | def _normalize_file_path(file_path: str) -> str: function _paths_match (line 1055) | def _paths_match( function _remove_common_prefixes (line 1094) | def _remove_common_prefixes(file_path: str) -> str: function _extract_file_section_alternative (line 1106) | def _extract_file_section_alternative( function search_code (line 1156) | async def search_code( function get_file_structure (line 1281) | async def get_file_structure(directory: str = ".", max_depth: int = 5) -... function set_workspace (line 1396) | async def set_workspace(workspace_path: str) -> str: function get_operation_history (line 1451) | async def get_operation_history(last_n: int = 10) -> str: function main (line 1487) | def main(): FILE: tools/code_indexer.py class FileRelationship (line 31) | class FileRelationship: class FileSummary (line 44) | class FileSummary: class RepoIndex (line 58) | class RepoIndex: class CodeIndexer (line 68) | class CodeIndexer: method __init__ (line 71) | def __init__( method _setup_logger (line 251) | def _setup_logger(self) -> logging.Logger: method _load_api_config (line 282) | def _load_api_config(self) -> Dict[str, Any]: method _load_indexer_config (line 294) | def _load_indexer_config(self) -> Dict[str, Any]: method _initialize_llm_client (line 311) | async def _initialize_llm_client(self): method _call_llm (line 383) | async def _call_llm( method _generate_mock_response (line 468) | def _generate_mock_response(self, prompt: str) -> str: method _save_debug_response (line 519) | def _save_debug_response(self, provider: str, prompt: str, response: s... method get_all_repo_files (line 545) | def get_all_repo_files(self, repo_path: Path) -> List[Path]: method generate_file_tree (line 568) | def generate_file_tree(self, repo_path: Path, max_depth: int = 5) -> str: method pre_filter_files (line 617) | async def pre_filter_files(self, repo_path: Path, file_tree: str) -> L... method filter_files_by_paths (line 699) | def filter_files_by_paths( method _get_cache_key (line 727) | def _get_cache_key(self, file_path: Path) -> str: method _manage_cache_size (line 735) | def _manage_cache_size(self): method analyze_file_content (line 753) | async def analyze_file_content(self, file_path: Path) -> FileSummary: method find_relationships (line 865) | async def find_relationships( method _analyze_single_file_with_relationships (line 951) | async def _analyze_single_file_with_relationships( method process_repository (line 966) | async def process_repository(self, repo_path: Path) -> RepoIndex: method _process_files_sequentially (line 1050) | async def _process_files_sequentially(self, files_to_analyze: list) ->... method _process_files_concurrently (line 1070) | async def _process_files_concurrently(self, files_to_analyze: list) ->... method build_all_indexes (line 1189) | async def build_all_indexes(self) -> Dict[str, str]: method _extract_repository_statistics (line 1270) | def _extract_repository_statistics(self, repo_index: RepoIndex) -> Dic... method generate_statistics_report (line 1322) | def generate_statistics_report(self, statistics_data: List[Dict[str, A... method generate_summary_report (line 1429) | def generate_summary_report(self, output_files: Dict[str, str]) -> str: function main (line 1464) | async def main(): function print_usage_example (line 1610) | def print_usage_example(): FILE: tools/code_reference_indexer.py class CodeReference (line 38) | class CodeReference: class RelationshipInfo (line 53) | class RelationshipInfo: function load_index_files_from_directory (line 65) | def load_index_files_from_directory(indexes_directory: str) -> Dict[str,... function extract_code_references (line 88) | def extract_code_references(index_data: Dict) -> List[CodeReference]: function extract_relationships (line 111) | def extract_relationships(index_data: Dict) -> List[RelationshipInfo]: function calculate_relevance_score (line 132) | def calculate_relevance_score( function find_relevant_references_in_cache (line 175) | def find_relevant_references_in_cache( function find_direct_relationships_in_cache (line 198) | def find_direct_relationships_in_cache( function format_reference_output (line 239) | def format_reference_output( function search_code_references (line 335) | async def search_code_references( function get_indexes_overview (line 412) | async def get_indexes_overview(indexes_path: str) -> str: function main (line 479) | def main(): FILE: tools/command_executor.py function handle_list_tools (line 22) | async def handle_list_tools() -> list[types.Tool]: function handle_call_tool (line 91) | async def handle_call_tool(name: str, arguments: dict) -> list[types.Tex... function execute_command_batch (line 116) | async def execute_command_batch( function execute_single_command (line 193) | async def execute_single_command( function generate_execution_summary (line 239) | def generate_execution_summary( function format_single_command_result (line 266) | def format_single_command_result( function main (line 301) | async def main(): FILE: tools/document_segmentation_server.py class DocumentSegment (line 96) | class DocumentSegment: class DocumentIndex (line 112) | class DocumentIndex: class DocumentAnalyzer (line 124) | class DocumentAnalyzer: method analyze_document_type (line 168) | def analyze_document_type(self, content: str) -> Tuple[str, float]: method _calculate_weighted_score (line 214) | def _calculate_weighted_score( method _detect_pattern_score (line 228) | def _detect_pattern_score(self, content: str, patterns: List[str]) -> ... method detect_segmentation_strategy (line 236) | def detect_segmentation_strategy(self, content: str, doc_type: str) ->... method _calculate_algorithm_density (line 259) | def _calculate_algorithm_density(self, content: str) -> float: method _calculate_concept_complexity (line 283) | def _calculate_concept_complexity(self, content: str) -> float: method _calculate_implementation_detail_level (line 296) | def _calculate_implementation_detail_level(self, content: str) -> float: class DocumentSegmenter (line 313) | class DocumentSegmenter: method __init__ (line 316) | def __init__(self): method segment_document (line 319) | def segment_document(self, content: str, strategy: str) -> List[Docume... method _segment_by_headers (line 337) | def _segment_by_headers(self, content: str) -> List[DocumentSegment]: method _segment_preserve_algorithm_integrity (line 407) | def _segment_preserve_algorithm_integrity( method _segment_research_paper_semantically (line 441) | def _segment_research_paper_semantically( method _segment_concept_implementation_hybrid (line 466) | def _segment_concept_implementation_hybrid( method _segment_by_enhanced_semantic_chunks (line 491) | def _segment_by_enhanced_semantic_chunks( method _segment_content_aware (line 533) | def _segment_content_aware(self, content: str) -> List[DocumentSegment]: method _segment_academic_paper (line 556) | def _segment_academic_paper(self, content: str) -> List[DocumentSegment]: method _detect_academic_sections (line 595) | def _detect_academic_sections(self, content: str) -> List[Dict]: method _segment_by_semantic_chunks (line 654) | def _segment_by_semantic_chunks(self, content: str) -> List[DocumentSe... method _segment_by_paragraphs (line 724) | def _segment_by_paragraphs(self, content: str) -> List[DocumentSegment]: method _identify_algorithm_blocks (line 753) | def _identify_algorithm_blocks(self, content: str) -> List[Dict]: method _identify_concept_groups (line 793) | def _identify_concept_groups(self, content: str) -> List[Dict]: method _identify_formula_chains (line 826) | def _identify_formula_chains(self, content: str) -> List[Dict]: method _merge_related_content_blocks (line 893) | def _merge_related_content_blocks( method _are_blocks_related (line 942) | def _are_blocks_related(self, block1: Dict, block2: Dict) -> bool: method _extract_algorithm_title (line 959) | def _extract_algorithm_title(self, text: str) -> str: method _extract_concept_title (line 971) | def _extract_concept_title(self, text: str) -> str: method _create_enhanced_segment (line 982) | def _create_enhanced_segment( method _extract_enhanced_keywords (line 1018) | def _extract_enhanced_keywords(self, content: str, content_type: str) ... method _calculate_enhanced_relevance_scores (line 1073) | def _calculate_enhanced_relevance_scores( method _identify_research_paper_sections (line 1120) | def _identify_research_paper_sections(self, content: str) -> List[Dict]: method _enhance_section_with_context (line 1125) | def _enhance_section_with_context(self, section: Dict, content: str) -... method _identify_concept_implementation_pairs (line 1129) | def _identify_concept_implementation_pairs(self, content: str) -> List... method _merge_concept_with_implementation (line 1133) | def _merge_concept_with_implementation(self, pair: Dict, content: str)... method _detect_semantic_boundaries (line 1137) | def _detect_semantic_boundaries(self, content: str) -> List[Dict]: method _classify_paragraph_type (line 1166) | def _classify_paragraph_type(self, paragraph: str) -> str: method _calculate_paragraph_importance (line 1183) | def _calculate_paragraph_importance( method _extract_paragraph_title (line 1198) | def _extract_paragraph_title(self, paragraph: str, index: int) -> str: method _calculate_optimal_chunk_size (line 1208) | def _calculate_optimal_chunk_size(self, content: str) -> int: method _create_content_aware_chunks (line 1219) | def _create_content_aware_chunks(self, content: str, chunk_size: int) ... method _create_segment (line 1267) | def _create_segment( method _extract_keywords (line 1298) | def _extract_keywords(self, content: str) -> List[str]: method _classify_content_type (line 1338) | def _classify_content_type(self, title: str, content: str) -> str: method _calculate_relevance_scores (line 1364) | def _calculate_relevance_scores( function get_segments_dir (line 1436) | def get_segments_dir(paper_dir: str) -> str: function ensure_segments_dir_exists (line 1441) | def ensure_segments_dir_exists(segments_dir: str): function analyze_and_segment_document (line 1447) | async def analyze_and_segment_document( function read_document_segments (line 1602) | async def read_document_segments( function get_document_overview (line 1727) | async def get_document_overview(paper_dir: str) -> str: function _calculate_adaptive_char_limit (line 1788) | def _calculate_adaptive_char_limit( function _calculate_enhanced_keyword_score (line 1813) | def _calculate_enhanced_keyword_score( function _calculate_completeness_bonus (line 1844) | def _calculate_completeness_bonus( function _select_segments_with_integrity (line 1867) | def _select_segments_with_integrity( FILE: tools/git_command.py class GitHubURLExtractor (line 18) | class GitHubURLExtractor: method extract_github_urls (line 22) | def extract_github_urls(text: str) -> List[str]: method extract_target_path (line 79) | def extract_target_path(text: str) -> Optional[str]: method infer_repo_name (line 108) | def infer_repo_name(url: str) -> str: function check_git_installed (line 118) | async def check_git_installed() -> bool: function clone_repository (line 133) | async def clone_repository(repo_url: str, target_path: str) -> Dict[str,... function download_github_repo (line 158) | async def download_github_repo(instruction: str) -> str: function parse_github_urls (line 253) | async def parse_github_urls(text: str) -> str: function git_clone (line 286) | async def git_clone( FILE: tools/pdf_converter.py class PDFConverter (line 26) | class PDFConverter: method __init__ (line 40) | def __init__(self) -> None: method find_libreoffice_windows (line 45) | def find_libreoffice_windows() -> Optional[str]: method convert_office_to_pdf (line 78) | def convert_office_to_pdf( method convert_text_to_pdf (line 308) | def convert_text_to_pdf( method _process_inline_markdown (line 527) | def _process_inline_markdown(text: str) -> str: method convert_to_pdf (line 570) | def convert_to_pdf( method check_dependencies (line 604) | def check_dependencies(self) -> dict: function main (line 656) | def main(): FILE: tools/pdf_downloader.py function format_success_message (line 72) | def format_success_message(action: str, details: Dict[str, Any]) -> str: function format_error_message (line 77) | def format_error_message(action: str, error: str) -> str: function format_warning_message (line 82) | def format_warning_message(action: str, warning: str) -> str: function perform_document_conversion (line 87) | async def perform_document_conversion( function format_file_operation_result (line 169) | def format_file_operation_result( class LocalPathExtractor (line 223) | class LocalPathExtractor: method is_local_path (line 227) | def is_local_path(path: str) -> bool: method extract_local_paths (line 250) | def extract_local_paths(text: str) -> List[str]: class URLExtractor (line 278) | class URLExtractor: method convert_arxiv_url (line 288) | def convert_arxiv_url(url: str) -> str: method extract_urls (line 299) | def extract_urls(cls, text: str) -> List[str]: method infer_filename_from_url (line 339) | def infer_filename_from_url(url: str) -> str: class PathExtractor (line 402) | class PathExtractor: method extract_target_path (line 406) | def extract_target_path(text: str) -> Optional[str]: class SimplePdfConverter (line 441) | class SimplePdfConverter: method convert_pdf_to_markdown (line 444) | def convert_pdf_to_markdown( class DoclingConverter (line 528) | class DoclingConverter: method __init__ (line 531) | def __init__(self): method is_supported_format (line 555) | def is_supported_format(self, file_path: str) -> bool: method is_url (line 564) | def is_url(self, path: str) -> bool: method extract_images (line 572) | def extract_images(self, doc, output_dir: str) -> Dict[str, str]: method process_markdown_with_images (line 622) | def process_markdown_with_images( method convert_to_markdown (line 650) | def convert_to_markdown( function check_url_accessible (line 764) | async def check_url_accessible(url: str) -> Dict[str, Any]: function download_file (line 785) | async def download_file(url: str, destination: str) -> Dict[str, Any]: function move_local_file (line 843) | async def move_local_file(source_path: str, destination: str) -> Dict[st... function download_files (line 890) | async def download_files(instruction: str) -> str: function parse_download_urls (line 1039) | async def parse_download_urls(text: str) -> str: function download_file_to (line 1086) | async def download_file_to( function move_file_to (line 1195) | async def move_file_to( FILE: tools/pdf_utils.py function read_pdf_metadata (line 9) | def read_pdf_metadata(file_path: Path) -> dict: FILE: ui/components.py function _icon_data_uri (line 27) | def _icon_data_uri(name: str) -> str: function icon_img (line 41) | def icon_img(name: str, size: int = 32, extra_style: str = "") -> str: function clear_guided_answer_inputs (line 51) | def clear_guided_answer_inputs(): function display_header (line 60) | def display_header(): function display_features (line 79) | def display_features(): function display_status (line 138) | def display_status(message: str, status_type: str = "info"): function _render_step_card (line 159) | def _render_step_card(title: str, subtitle: str, state: str) -> str: function enhanced_progress_display_component (line 189) | def enhanced_progress_display_component( function update_step_indicator (line 242) | def update_step_indicator( function chat_input_component (line 272) | def chat_input_component(task_counter: int = 0) -> Optional[str]: function _save_uploaded_pdf (line 283) | def _save_uploaded_pdf(uploaded_file) -> Optional[str]: function input_method_selector (line 298) | def input_method_selector(task_counter: int) -> Tuple[Optional[str], Opt... function results_display_component (line 346) | def results_display_component(result: Any, task_counter: int): function system_status_component (line 396) | def system_status_component(): function error_troubleshooting_component (line 421) | def error_troubleshooting_component(): function footer_component (line 429) | def footer_component(): function render_sidebar_feed (line 441) | def render_sidebar_feed(max_items: int = 12): function render_system_monitor (line 487) | def render_system_monitor(): function render_log_viewer (line 529) | def render_log_viewer(max_lines: int = 50): function reset_guided_workflow_state (line 656) | def reset_guided_workflow_state(preserve_initial: bool = False): function requirement_mode_selector (line 684) | def requirement_mode_selector() -> str: function guided_requirement_workflow (line 710) | def guided_requirement_workflow() -> Tuple[Optional[str], bool]: function sidebar_control_panel (line 942) | def sidebar_control_panel(): FILE: ui/handlers.py function set_abort_requested (line 23) | def set_abort_requested(value: bool = True): function is_abort_requested (line 30) | def is_abort_requested() -> bool: function reset_abort_flag (line 34) | def reset_abort_flag(): function _emergency_cleanup (line 48) | def _emergency_cleanup(): function _signal_handler (line 59) | def _signal_handler(signum, frame): function _safe_register_signal_handlers (line 77) | def _safe_register_signal_handlers(): function process_input_async (line 105) | async def process_input_async( function run_async_task (line 177) | def run_async_task(coro): function run_async_task_simple (line 304) | def run_async_task_simple(coro): function handle_processing_workflow (line 399) | def handle_processing_workflow( function update_session_state_with_result (line 619) | def update_session_state_with_result(result: Dict[str, Any], input_type:... function cleanup_temp_file (line 660) | def cleanup_temp_file(input_source: str, input_type: str): function handle_requirement_analysis_workflow (line 683) | async def handle_requirement_analysis_workflow( function handle_requirement_modification_workflow (line 728) | async def handle_requirement_modification_workflow( function handle_guided_mode_processing (line 786) | def handle_guided_mode_processing(): function _background_workflow_runner (line 880) | def _background_workflow_runner( function handle_start_processing_button (line 933) | def handle_start_processing_button(input_source: str, input_type: str): function check_background_workflow_status (line 994) | def check_background_workflow_status(): function handle_error_display (line 1058) | def handle_error_display(): function initialize_session_state (line 1068) | def initialize_session_state(): function cleanup_resources (line 1137) | def cleanup_resources(): FILE: ui/layout.py function setup_page_config (line 29) | def setup_page_config(): function main_layout (line 42) | def main_layout(): function render_input_area (line 82) | def render_input_area(): FILE: ui/sidebar_feed.py function _init_event_store (line 14) | def _init_event_store(): function log_sidebar_event (line 19) | def log_sidebar_event( class SidebarLogHandler (line 59) | class SidebarLogHandler(logging.Handler): method emit (line 62) | def emit(self, record: logging.LogRecord): function ensure_sidebar_logging (line 78) | def ensure_sidebar_logging(): FILE: ui/streamlit_app.py function main (line 23) | def main(): FILE: ui/styles.py function get_main_styles (line 7) | def get_main_styles() -> str: FILE: utils/cli_interface.py class Colors (line 16) | class Colors: class CLIInterface (line 38) | class CLIInterface: method __init__ (line 41) | def __init__(self): method clear_screen (line 57) | def clear_screen(self): method print_logo (line 61) | def print_logo(self): method print_welcome_banner (line 92) | def print_welcome_banner(self): method print_separator (line 107) | def print_separator(self, char="═", length=79, color=Colors.CYAN): method print_status (line 111) | def print_status(self, message: str, status_type: str = "info"): method create_menu (line 127) | def create_menu(self): method get_user_input (line 145) | def get_user_input(self): method upload_file_gui (line 150) | def upload_file_gui(self) -> Optional[str]: method _get_manual_file_path (line 280) | def _get_manual_file_path(self) -> Optional[str]: method get_url_input (line 325) | def get_url_input(self) -> str: method show_progress_bar (line 366) | def show_progress_bar(self, message: str, duration: float = 2.0): method show_spinner (line 394) | def show_spinner(self, message: str, duration: float = 1.0): method print_results_header (line 412) | def print_results_header(self): method print_error_box (line 421) | def print_error_box(self, title: str, error_msg: str): method print_goodbye (line 434) | def print_goodbye(self): method ask_continue (line 452) | def ask_continue(self) -> bool: FILE: utils/cross_platform_file_handler.py class CrossPlatformFileHandler (line 27) | class CrossPlatformFileHandler: method __init__ (line 38) | def __init__(self, logger: Optional[logging.Logger] = None): method _create_default_logger (line 54) | def _create_default_logger(self) -> logging.Logger: method normalize_path (line 68) | def normalize_path(path: Union[str, Path]) -> Path: method create_safe_temp_file (line 90) | def create_safe_temp_file( method temp_directory (line 155) | def temp_directory(self, prefix: str = "deepcode_"): method safe_copy_file (line 186) | def safe_copy_file( method safe_move_file (line 250) | def safe_move_file( method safe_remove_file (line 305) | def safe_remove_file(self, file_path: Union[str, Path]) -> bool: method cleanup_all_temp_files (line 342) | def cleanup_all_temp_files(self): method get_system_temp_dir (line 369) | def get_system_temp_dir(self) -> Path: method create_workspace_directory (line 378) | def create_workspace_directory( function get_file_handler (line 409) | def get_file_handler( FILE: utils/dialogue_logger.py class DialogueLogger (line 15) | class DialogueLogger: method __init__ (line 21) | def __init__(self, paper_id: str, base_path: str = None): method _initialize_log_file (line 57) | def _initialize_log_file(self): method start_new_round (line 85) | def start_new_round( method log_system_prompt (line 114) | def log_system_prompt(self, prompt: str, prompt_type: str = "system"): method log_user_message (line 134) | def log_user_message(self, message: str, message_type: str = "user_inp... method log_assistant_response (line 154) | def log_assistant_response( method log_tool_calls (line 176) | def log_tool_calls(self, tool_calls: List[Dict[str, Any]]): method log_tool_results (line 196) | def log_tool_results(self, tool_results: List[Dict[str, Any]]): method log_metadata (line 215) | def log_metadata(self, key: str, value: Any): method log_memory_optimization (line 228) | def log_memory_optimization( method complete_round (line 283) | def complete_round(self, summary: str = "", status: str = "completed"): method _write_round_to_log (line 310) | def _write_round_to_log(self): method log_complete_exchange (line 488) | def log_complete_exchange( method get_session_stats (line 531) | def get_session_stats(self) -> Dict[str, Any]: method finalize_session (line 543) | def finalize_session(self, final_summary: str = ""): function create_dialogue_logger (line 576) | def create_dialogue_logger(paper_id: str, base_path: str = None) -> Dial... function extract_paper_id_from_path (line 590) | def extract_paper_id_from_path(path: str) -> str: FILE: utils/file_processor.py class FileProcessor (line 11) | class FileProcessor: method extract_file_path (line 17) | def extract_file_path(file_info: Union[str, Dict]) -> Optional[str]: method find_markdown_file (line 74) | def find_markdown_file(directory: str) -> Optional[str]: method parse_markdown_sections (line 93) | def parse_markdown_sections(content: str) -> List[Dict[str, Union[str,... method _organize_sections (line 144) | def _organize_sections(sections: List[Dict]) -> List[Dict]: method read_file_content (line 171) | async def read_file_content(file_path: str) -> str: method format_section_content (line 226) | def format_section_content(section: Dict) -> str: method standardize_output (line 259) | def standardize_output(sections: List[Dict]) -> str: method process_file_input (line 279) | async def process_file_input( method extract_json_from_text (line 433) | def extract_json_from_text(text: str) -> Optional[Dict]: FILE: utils/llm_utils.py function get_api_keys (line 13) | def get_api_keys(secrets_path: str = "mcp_agent.secrets.yaml") -> Dict[s... function load_api_config (line 57) | def load_api_config(secrets_path: str = "mcp_agent.secrets.yaml") -> Dic... function _get_llm_class (line 89) | def _get_llm_class(provider: str) -> Type[Any]: function get_preferred_llm_class (line 109) | def get_preferred_llm_class(config_path: str = "mcp_agent.secrets.yaml")... function get_token_limits (line 174) | def get_token_limits(config_path: str = "mcp_agent.config.yaml") -> Tupl... function get_default_models (line 214) | def get_default_models(config_path: str = "mcp_agent.config.yaml"): function _get_fallback_models (line 278) | def _get_fallback_models(): function get_document_segmentation_config (line 296) | def get_document_segmentation_config( function should_use_document_segmentation (line 331) | def should_use_document_segmentation( function get_adaptive_agent_config (line 366) | def get_adaptive_agent_config( function get_adaptive_prompts (line 406) | def get_adaptive_prompts(use_segmentation: bool) -> Dict[str, str]: FILE: utils/loop_detector.py class LoopDetector (line 13) | class LoopDetector: method __init__ (line 24) | def __init__(self, max_repeats: int = 5, timeout_seconds: int = 300, method start_file (line 48) | def start_file(self, filename: str): method check_tool_call (line 55) | def check_tool_call(self, tool_name: str) -> Dict[str, Any]: method record_progress (line 112) | def record_progress(self): method record_error (line 117) | def record_error(self, error_message: str): method record_success (line 122) | def record_success(self): method get_status_summary (line 127) | def get_status_summary(self) -> Dict[str, Any]: method should_abort (line 142) | def should_abort(self) -> bool: method get_abort_reason (line 147) | def get_abort_reason(self) -> Optional[str]: class ProgressTracker (line 155) | class ProgressTracker: method __init__ (line 160) | def __init__(self, total_files: int = 0): method set_phase (line 167) | def set_phase(self, phase_name: str, progress_percent: int): method complete_file (line 173) | def complete_file(self, filename: str): method get_progress_info (line 178) | def get_progress_info(self) -> Dict[str, Any]: FILE: utils/model_limits.py function get_model_from_config (line 97) | def get_model_from_config(config_path: str = "mcp_agent.config.yaml") ->... function get_model_limits (line 125) | def get_model_limits(model_name: Optional[str] = None, config_path: str ... function get_safe_max_tokens (line 169) | def get_safe_max_tokens( function calculate_token_cost (line 191) | def calculate_token_cost( function get_retry_token_limits (line 218) | def get_retry_token_limits( function get_provider_from_model (line 258) | def get_provider_from_model(model_name: Optional[str] = None, config_pat... FILE: utils/simple_llm_logger.py class SimpleLLMLogger (line 16) | class SimpleLLMLogger: method __init__ (line 19) | def __init__(self, config_path: str = "mcp_agent.config.yaml"): method _load_config (line 37) | def _load_config(self, config_path: str) -> Dict[str, Any]: method _get_default_config (line 46) | def _get_default_config(self) -> Dict[str, Any]: method _setup_logger (line 60) | def _setup_logger(self): method log_response (line 78) | def log_response(self, content: str, model: str = "", agent: str = "",... method _should_log (line 104) | def _should_log(self, content: str, model: str) -> bool: method _build_entry (line 118) | def _build_entry(self, content: str, model: str, agent: str, extra: Di... method _write_log (line 144) | def _write_log(self, entry: Dict): method _console_log (line 165) | def _console_log(self, content: str, model: str, agent: str): function get_llm_logger (line 175) | def get_llm_logger() -> SimpleLLMLogger: function log_llm_response (line 183) | def log_llm_response(content: str, model: str = "", agent: str = "", **k... FILE: workflows/agent_orchestration_engine.py function _assess_output_completeness (line 68) | def _assess_output_completeness(text: str) -> float: function _adjust_params_for_retry (line 150) | def _adjust_params_for_retry( function execute_requirement_analysis_workflow (line 200) | async def execute_requirement_analysis_workflow( function get_default_search_server (line 254) | def get_default_search_server(config_path: str = "mcp_agent.config.yaml"): function get_search_server_names (line 281) | def get_search_server_names( function extract_clean_json (line 305) | def extract_clean_json(llm_output: str) -> str: function run_research_analyzer (line 374) | async def run_research_analyzer(prompt_text: str, logger) -> str: function run_resource_processor (line 485) | async def run_resource_processor(analysis_result: str, logger) -> str: function run_code_analyzer (line 635) | async def run_code_analyzer( function github_repo_download (line 859) | async def github_repo_download(search_result: str, paper_dir: str, logge... function paper_reference_analyzer (line 894) | async def paper_reference_analyzer(paper_dir: str, logger) -> str: function _process_input_source (line 936) | async def _process_input_source(input_source: str, logger) -> str: function orchestrate_research_analysis_agent (line 955) | async def orchestrate_research_analysis_agent( function synthesize_workspace_infrastructure_agent (line 993) | async def synthesize_workspace_infrastructure_agent( function orchestrate_reference_intelligence_agent (line 1036) | async def orchestrate_reference_intelligence_agent( function orchestrate_document_preprocessing_agent (line 1075) | async def orchestrate_document_preprocessing_agent( function orchestrate_code_planning_agent (line 1235) | async def orchestrate_code_planning_agent( function automate_repository_acquisition_agent (line 1299) | async def automate_repository_acquisition_agent( function orchestrate_codebase_intelligence_agent (line 1373) | async def orchestrate_codebase_intelligence_agent( function synthesize_code_implementation_agent (line 1500) | async def synthesize_code_implementation_agent( function run_chat_planning_agent (line 1589) | async def run_chat_planning_agent(user_input: str, logger) -> str: function execute_multi_agent_research_pipeline (line 1698) | async def execute_multi_agent_research_pipeline( function paper_code_preparation (line 1983) | async def paper_code_preparation( function execute_chat_based_planning_pipeline (line 2005) | async def execute_chat_based_planning_pipeline( FILE: workflows/agents/code_implementation_agent.py class CodeImplementationAgent (line 33) | class CodeImplementationAgent: method __init__ (line 45) | def __init__( method _create_default_logger (line 127) | def _create_default_logger(self) -> logging.Logger: method get_system_prompt (line 134) | def get_system_prompt(self) -> str: method set_memory_agent (line 140) | def set_memory_agent(self, memory_agent, llm_client=None, llm_client_t... method execute_tool_calls (line 154) | async def execute_tool_calls(self, tool_calls: List[Dict]) -> List[Dict]: method _handle_read_file_with_memory_optimization (line 280) | async def _handle_read_file_with_memory_optimization(self, tool_call: ... method _track_file_implementation_with_summary (line 411) | async def _track_file_implementation_with_summary( method _track_file_implementation (line 451) | def _track_file_implementation(self, tool_call: Dict, result: Any): method _track_dependency_analysis (line 548) | def _track_dependency_analysis(self, tool_call: Dict, result: Any): method calculate_messages_token_count (line 575) | def calculate_messages_token_count(self, messages: List[Dict]) -> int: method should_trigger_summary_by_tokens (line 616) | def should_trigger_summary_by_tokens(self, messages: List[Dict]) -> bool: method should_trigger_summary (line 649) | def should_trigger_summary( method mark_summary_triggered (line 677) | def mark_summary_triggered(self, messages: List[Dict] = None): method get_implementation_summary (line 702) | def get_implementation_summary(self) -> Dict[str, Any]: method get_files_implemented_count (line 709) | def get_files_implemented_count(self) -> int: method get_read_tools_status (line 716) | def get_read_tools_status(self) -> Dict[str, Any]: method add_technical_decision (line 731) | def add_technical_decision(self, decision: str, context: str = ""): method add_constraint (line 745) | def add_constraint(self, constraint: str, impact: str = ""): method add_architecture_note (line 759) | def add_architecture_note(self, note: str, component: str = ""): method get_implementation_statistics (line 773) | def get_implementation_statistics(self) -> Dict[str, Any]: method force_enable_optimization (line 803) | def force_enable_optimization(self): method reset_implementation_tracking (line 816) | def reset_implementation_tracking(self): method _track_tool_call_for_loop_detection (line 843) | def _track_tool_call_for_loop_detection(self, tool_name: str): method is_in_analysis_loop (line 858) | def is_in_analysis_loop(self) -> bool: method get_analysis_loop_guidance (line 889) | def get_analysis_loop_guidance(self) -> str: method test_summary_functionality (line 912) | async def test_summary_functionality(self, test_file_path: str = None): method test_automatic_read_file_optimization (line 970) | async def test_automatic_read_file_optimization(self): method test_summary_optimization (line 1035) | async def test_summary_optimization(self, test_file_path: str = "confi... method test_read_tools_configuration (line 1066) | async def test_read_tools_configuration(self): FILE: workflows/agents/document_segmentation_agent.py class DocumentSegmentationAgent (line 16) | class DocumentSegmentationAgent: method __init__ (line 35) | def __init__(self, logger: Optional[logging.Logger] = None): method _create_default_logger (line 39) | def _create_default_logger(self) -> logging.Logger: method __aenter__ (line 45) | async def __aenter__(self): method __aexit__ (line 50) | async def __aexit__(self, exc_type, exc_val, exc_tb): method initialize (line 54) | async def initialize(self): method cleanup (line 91) | async def cleanup(self): method analyze_and_prepare_document (line 99) | async def analyze_and_prepare_document( method get_document_overview (line 169) | async def get_document_overview(self, paper_dir: str) -> Dict[str, Any]: method validate_segmentation_quality (line 207) | async def validate_segmentation_quality(self, paper_dir: str) -> Dict[... function run_document_segmentation_analysis (line 255) | async def run_document_segmentation_analysis( function prepare_document_segments (line 284) | async def prepare_document_segments( FILE: workflows/agents/memory_agent_concise.py class ConciseMemoryAgent (line 27) | class ConciseMemoryAgent: method __init__ (line 43) | def __init__( method _create_default_logger (line 119) | def _create_default_logger(self) -> logging.Logger: method _parse_phase_structure (line 125) | def _parse_phase_structure(self) -> Dict[str, List[str]]: method _extract_all_files (line 158) | def _extract_all_files(self) -> List[str]: method _extract_files_from_generated_directory (line 184) | def _extract_files_from_generated_directory(self) -> List[str]: method _extract_all_files_from_plan (line 303) | def _extract_all_files_from_plan(self) -> List[str]: method _extract_from_tree_structure (line 342) | def _extract_from_tree_structure(self, lines: List[str]) -> List[str]: method _is_directory (line 487) | def _is_directory(self, name: str) -> bool: method _extract_from_simple_list (line 643) | def _extract_from_simple_list(self, lines: List[str]) -> List[str]: method _extract_from_plan_content (line 663) | def _extract_from_plan_content(self, lines: List[str]) -> List[str]: method _clean_and_validate_files (line 802) | def _clean_and_validate_files(self, files: List[str]) -> List[str]: method record_file_implementation (line 977) | def record_file_implementation( method create_code_implementation_summary (line 994) | async def create_code_implementation_summary( method _create_code_summary_prompt (line 1073) | def _create_code_summary_prompt( method _extract_summary_sections (line 1165) | def _extract_summary_sections(self, llm_summary: str) -> Dict[str, str]: method _format_code_implementation_summary (line 1242) | def _format_code_implementation_summary( method _create_fallback_code_summary (line 1288) | def _create_fallback_code_summary( method _save_code_summary_to_file (line 1322) | async def _save_code_summary_to_file(self, new_summary: str, file_path... method _call_llm_for_summary (line 1363) | async def _call_llm_for_summary( method start_new_round (line 1477) | def start_new_round(self, iteration: Optional[int] = None): method record_tool_result (line 1497) | def record_tool_result( method should_use_concise_mode (line 1537) | def should_use_concise_mode(self) -> bool: method create_concise_messages (line 1546) | def create_concise_messages( method _read_code_knowledge_base (line 1681) | def _read_code_knowledge_base(self) -> Optional[str]: method _extract_latest_implementation_entry (line 1706) | def _extract_latest_implementation_entry(self, content: str) -> Option... method _format_tool_results (line 1759) | def _format_tool_results(self) -> str: method _format_tool_result_content (line 1836) | def _format_tool_result_content(self, tool_result: Any) -> str: method get_memory_statistics (line 1867) | def get_memory_statistics(self, files_implemented: int = 0) -> Dict[st... method get_implemented_files (line 1899) | def get_implemented_files(self) -> List[str]: method get_all_files_list (line 1903) | def get_all_files_list(self) -> List[str]: method refresh_files_list_from_directory (line 1907) | def refresh_files_list_from_directory(self) -> bool: method get_unimplemented_files (line 1929) | def get_unimplemented_files(self) -> List[str]: method get_formatted_files_lists (line 1997) | def get_formatted_files_lists(self) -> Dict[str, str]: method get_current_next_steps (line 2019) | def get_current_next_steps(self) -> str: method clear_next_steps (line 2023) | def clear_next_steps(self): method set_next_steps (line 2029) | def set_next_steps(self, next_steps: str): method should_trigger_memory_optimization (line 2036) | def should_trigger_memory_optimization( method apply_memory_optimization (line 2058) | def apply_memory_optimization( method clear_current_round_tool_results (line 2097) | def clear_current_round_tool_results(self): method debug_concise_state (line 2102) | def debug_concise_state(self, files_implemented: int = 0): FILE: workflows/agents/memory_agent_concise_index.py class ConciseMemoryAgent (line 27) | class ConciseMemoryAgent: method __init__ (line 43) | def __init__( method _create_default_logger (line 119) | def _create_default_logger(self) -> logging.Logger: method _parse_phase_structure (line 125) | def _parse_phase_structure(self) -> Dict[str, List[str]]: method _extract_all_files (line 158) | def _extract_all_files(self) -> List[str]: method _extract_files_from_generated_directory (line 184) | def _extract_files_from_generated_directory(self) -> List[str]: method _extract_all_files_from_plan (line 303) | def _extract_all_files_from_plan(self) -> List[str]: method _extract_from_tree_structure (line 342) | def _extract_from_tree_structure(self, lines: List[str]) -> List[str]: method _is_directory (line 487) | def _is_directory(self, name: str) -> bool: method _extract_from_simple_list (line 643) | def _extract_from_simple_list(self, lines: List[str]) -> List[str]: method _extract_from_plan_content (line 663) | def _extract_from_plan_content(self, lines: List[str]) -> List[str]: method _clean_and_validate_files (line 802) | def _clean_and_validate_files(self, files: List[str]) -> List[str]: method record_file_implementation (line 977) | def record_file_implementation( method create_code_implementation_summary (line 994) | async def create_code_implementation_summary( method _create_code_summary_prompt (line 1073) | def _create_code_summary_prompt( method _extract_summary_sections (line 1165) | def _extract_summary_sections(self, llm_summary: str) -> Dict[str, str]: method _format_code_implementation_summary (line 1242) | def _format_code_implementation_summary( method _create_fallback_code_summary (line 1288) | def _create_fallback_code_summary( method _save_code_summary_to_file (line 1322) | async def _save_code_summary_to_file(self, new_summary: str, file_path... method _call_llm_for_summary (line 1363) | async def _call_llm_for_summary( method start_new_round (line 1477) | def start_new_round(self, iteration: Optional[int] = None): method record_tool_result (line 1497) | def record_tool_result( method should_use_concise_mode (line 1537) | def should_use_concise_mode(self) -> bool: method create_concise_messages (line 1546) | def create_concise_messages( method _read_code_knowledge_base (line 1683) | def _read_code_knowledge_base(self) -> Optional[str]: method _extract_latest_implementation_entry (line 1708) | def _extract_latest_implementation_entry(self, content: str) -> Option... method _format_tool_results (line 1761) | def _format_tool_results(self) -> str: method _format_tool_result_content (line 1838) | def _format_tool_result_content(self, tool_result: Any) -> str: method get_memory_statistics (line 1869) | def get_memory_statistics(self, files_implemented: int = 0) -> Dict[st... method get_implemented_files (line 1901) | def get_implemented_files(self) -> List[str]: method get_all_files_list (line 1905) | def get_all_files_list(self) -> List[str]: method refresh_files_list_from_directory (line 1909) | def refresh_files_list_from_directory(self) -> bool: method get_unimplemented_files (line 1931) | def get_unimplemented_files(self) -> List[str]: method get_formatted_files_lists (line 1999) | def get_formatted_files_lists(self) -> Dict[str, str]: method get_current_next_steps (line 2021) | def get_current_next_steps(self) -> str: method clear_next_steps (line 2025) | def clear_next_steps(self): method set_next_steps (line 2031) | def set_next_steps(self, next_steps: str): method should_trigger_memory_optimization (line 2038) | def should_trigger_memory_optimization( method apply_memory_optimization (line 2060) | def apply_memory_optimization( method clear_current_round_tool_results (line 2099) | def clear_current_round_tool_results(self): method debug_concise_state (line 2104) | def debug_concise_state(self, files_implemented: int = 0): FILE: workflows/agents/memory_agent_concise_multi.py class ConciseMemoryAgent (line 30) | class ConciseMemoryAgent: method __init__ (line 48) | def __init__( method _create_default_logger (line 115) | def _create_default_logger(self) -> logging.Logger: method create_multi_code_implementation_summary (line 121) | async def create_multi_code_implementation_summary( method _create_multi_code_summary_prompt (line 223) | def _create_multi_code_summary_prompt( method _extract_multi_summary_sections (line 315) | def _extract_multi_summary_sections( method _format_code_implementation_summary (line 510) | def _format_code_implementation_summary( method _create_fallback_multi_code_summary (line 537) | def _create_fallback_multi_code_summary( method _save_code_summary_to_file (line 567) | async def _save_code_summary_to_file(self, new_summary: str, file_path... method _call_llm_for_summary (line 606) | async def _call_llm_for_summary( method start_new_round (line 712) | def start_new_round(self, iteration: Optional[int] = None): method record_tool_result (line 728) | def record_tool_result( method should_use_concise_mode (line 764) | def should_use_concise_mode(self) -> bool: method create_concise_messages_revise (line 773) | def create_concise_messages_revise( method _calculate_message_statistics (line 881) | def _calculate_message_statistics( method _calculate_memory_savings (line 915) | def _calculate_memory_savings( method _read_code_knowledge_base (line 958) | def _read_code_knowledge_base(self) -> Optional[str]: method _extract_latest_implementation_entry (line 978) | def _extract_latest_implementation_entry(self, content: str) -> Option... method _format_tool_results (line 1025) | def _format_tool_results(self) -> str: method _format_tool_result_content (line 1095) | def _format_tool_result_content(self, tool_result: Any) -> str: method get_memory_statistics (line 1122) | def get_memory_statistics( method record_multi_file_implementation (line 1167) | def record_multi_file_implementation(self, file_implementations: Dict[... method synchronize_revised_file_memory (line 1182) | async def synchronize_revised_file_memory( method synchronize_multiple_revised_files (line 1250) | async def synchronize_multiple_revised_files( method _create_file_revision_summary_prompt (line 1304) | def _create_file_revision_summary_prompt( method _extract_revision_summary_sections (line 1377) | def _extract_revision_summary_sections(self, llm_summary: str) -> Dict... method _format_file_revision_summary (line 1473) | def _format_file_revision_summary( method _create_fallback_revision_summary (line 1540) | def _create_fallback_revision_summary( method _save_revised_file_summary (line 1588) | async def _save_revised_file_summary(self, revision_summary: str, file... method get_revision_memory_statistics (line 1663) | def get_revision_memory_statistics( FILE: workflows/agents/requirement_analysis_agent.py class RequirementAnalysisAgent (line 17) | class RequirementAnalysisAgent: method __init__ (line 33) | def __init__(self, logger: Optional[logging.Logger] = None): method _create_default_logger (line 43) | def _create_default_logger(self) -> logging.Logger: method __aenter__ (line 49) | async def __aenter__(self): method __aexit__ (line 54) | async def __aexit__(self, exc_type, exc_val, exc_tb): method initialize (line 58) | async def initialize(self): method cleanup (line 96) | async def cleanup(self): method generate_guiding_questions (line 104) | async def generate_guiding_questions(self, user_input: str) -> List[Di... method summarize_detailed_requirements (line 224) | async def summarize_detailed_requirements( method modify_requirements (line 323) | async def modify_requirements( FILE: workflows/code_implementation_workflow.py class CodeImplementationWorkflow (line 39) | class CodeImplementationWorkflow: method __init__ (line 51) | def __init__(self, config_path: str = "mcp_agent.secrets.yaml"): method _load_api_config (line 67) | def _load_api_config(self) -> Dict[str, Any]: method _create_logger (line 74) | def _create_logger(self) -> logging.Logger: method _read_plan_file (line 81) | def _read_plan_file(self, plan_file_path: str) -> str: method _check_file_tree_exists (line 92) | def _check_file_tree_exists(self, target_directory: str) -> bool: method run_workflow (line 99) | async def run_workflow( method create_file_structure (line 169) | async def create_file_structure( method implement_code_pure (line 221) | async def implement_code_pure( method _pure_code_implementation_loop (line 298) | async def _pure_code_implementation_loop( method _initialize_mcp_agent (line 510) | async def _initialize_mcp_agent(self, code_directory: str): method _cleanup_mcp_agent (line 542) | async def _cleanup_mcp_agent(self): method _initialize_llm_client (line 553) | async def _initialize_llm_client(self): method _call_llm_with_tools (line 696) | async def _call_llm_with_tools( method _call_anthropic_with_tools (line 719) | async def _call_anthropic_with_tools( method _call_google_with_tools (line 787) | async def _call_google_with_tools( method _transform_schema_for_gemini (line 915) | def _transform_schema_for_gemini(self, schema: dict) -> dict: method _repair_truncated_json (line 982) | def _repair_truncated_json(self, json_str: str, tool_name: str = "") -... method _close_json_structures (line 1042) | def _close_json_structures(self, json_str: str) -> str: method _call_openai_with_tools (line 1069) | async def _call_openai_with_tools( method _validate_messages (line 1263) | def _validate_messages(self, messages: List[Dict]) -> List[Dict]: method _prepare_mcp_tool_definitions (line 1276) | def _prepare_mcp_tool_definitions(self) -> List[Dict[str, Any]]: method _check_tool_results_for_errors (line 1280) | def _check_tool_results_for_errors(self, tool_results: List[Dict]) -> ... method _generate_success_guidance (line 1327) | def _generate_success_guidance(self, files_count: int) -> str: method _generate_error_guidance (line 1340) | def _generate_error_guidance(self) -> str: method _generate_no_tools_guidance (line 1353) | def _generate_no_tools_guidance(self, files_count: int) -> str: method _compile_user_response (line 1368) | def _compile_user_response(self, tool_results: List[Dict], guidance: s... method _generate_pure_code_final_report_with_concise_agents (line 1388) | async def _generate_pure_code_final_report_with_concise_agents( function main (line 1487) | async def main(): FILE: workflows/code_implementation_workflow_index.py class CodeImplementationWorkflowWithIndex (line 39) | class CodeImplementationWorkflowWithIndex: method __init__ (line 52) | def __init__(self, config_path: str = "mcp_agent.secrets.yaml"): method _load_api_config (line 68) | def _load_api_config(self) -> Dict[str, Any]: method _create_logger (line 75) | def _create_logger(self) -> logging.Logger: method _read_plan_file (line 82) | def _read_plan_file(self, plan_file_path: str) -> str: method _check_file_tree_exists (line 93) | def _check_file_tree_exists(self, target_directory: str) -> bool: method run_workflow (line 100) | async def run_workflow( method create_file_structure (line 170) | async def create_file_structure( method implement_code_pure (line 210) | async def implement_code_pure( method _pure_code_implementation_loop (line 287) | async def _pure_code_implementation_loop( method _initialize_mcp_agent (line 459) | async def _initialize_mcp_agent(self, code_directory: str): method _cleanup_mcp_agent (line 491) | async def _cleanup_mcp_agent(self): method _initialize_llm_client (line 502) | async def _initialize_llm_client(self): method _call_llm_with_tools (line 646) | async def _call_llm_with_tools( method _call_anthropic_with_tools (line 669) | async def _call_anthropic_with_tools( method _call_google_with_tools (line 737) | async def _call_google_with_tools( method _transform_schema_for_gemini (line 865) | def _transform_schema_for_gemini(self, schema: dict) -> dict: method _repair_truncated_json (line 932) | def _repair_truncated_json(self, json_str: str, tool_name: str = "") -... method _close_json_structures (line 992) | def _close_json_structures(self, json_str: str) -> str: method _call_openai_with_tools (line 1019) | async def _call_openai_with_tools( method _validate_messages (line 1213) | def _validate_messages(self, messages: List[Dict]) -> List[Dict]: method _prepare_mcp_tool_definitions (line 1226) | def _prepare_mcp_tool_definitions(self) -> List[Dict[str, Any]]: method _check_tool_results_for_errors (line 1250) | def _check_tool_results_for_errors(self, tool_results: List[Dict]) -> ... method _generate_success_guidance (line 1297) | def _generate_success_guidance(self, files_count: int) -> str: method _generate_error_guidance (line 1315) | def _generate_error_guidance(self) -> str: method _generate_no_tools_guidance (line 1333) | def _generate_no_tools_guidance(self, files_count: int) -> str: method _compile_user_response (line 1351) | def _compile_user_response(self, tool_results: List[Dict], guidance: s... method _generate_pure_code_final_report_with_concise_agents (line 1371) | async def _generate_pure_code_final_report_with_concise_agents( function main (line 1470) | async def main(): FILE: workflows/codebase_index_workflow.py class CodebaseIndexWorkflow (line 30) | class CodebaseIndexWorkflow: method __init__ (line 33) | def __init__(self, logger=None): method _setup_default_logger (line 43) | def _setup_default_logger(self) -> logging.Logger: method extract_file_tree_from_plan (line 58) | def extract_file_tree_from_plan(self, plan_content: str) -> Optional[s... method load_target_structure_from_plan (line 196) | def load_target_structure_from_plan(self, plan_path: str) -> str: method get_default_target_structure (line 240) | def get_default_target_structure(self) -> str: method load_or_create_indexer_config (line 278) | def load_or_create_indexer_config(self, paper_dir: str) -> Dict[str, A... method run_indexing_workflow (line 406) | async def run_indexing_workflow( method print_banner (line 664) | def print_banner(self): function run_codebase_indexing (line 682) | async def run_codebase_indexing( function main (line 711) | async def main(): FILE: workflows/plugins/base.py class InteractionPoint (line 34) | class InteractionPoint(Enum): class InteractionRequest (line 58) | class InteractionRequest: class InteractionResponse (line 71) | class InteractionResponse: class InteractionPlugin (line 79) | class InteractionPlugin(ABC): method __init__ (line 110) | def __init__(self, enabled: bool = True, config: Optional[Dict] = None): method should_trigger (line 116) | async def should_trigger(self, context: Dict[str, Any]) -> bool: method create_interaction (line 129) | async def create_interaction(self, context: Dict[str, Any]) -> Interac... method process_response (line 142) | async def process_response( method on_skip (line 157) | async def on_skip(self, context: Dict[str, Any]) -> Dict[str, Any]: method on_timeout (line 171) | async def on_timeout(self, context: Dict[str, Any]) -> Dict[str, Any]: class PluginRegistry (line 193) | class PluginRegistry: method __init__ (line 218) | def __init__(self, interaction_callback: Optional[InteractionCallback]... method register (line 225) | def register(self, plugin: InteractionPlugin) -> None: method unregister (line 233) | def unregister(self, plugin_name: str) -> bool: method enable (line 243) | def enable(self, plugin_name: str) -> bool: method disable (line 253) | def disable(self, plugin_name: str) -> bool: method set_interaction_callback (line 263) | def set_interaction_callback(self, callback: InteractionCallback) -> N... method get_plugins (line 267) | def get_plugins(self, hook_point: InteractionPoint) -> List[Interactio... method run_hook (line 271) | async def run_hook( function get_default_registry (line 361) | def get_default_registry(auto_register: bool = True) -> PluginRegistry: function reset_registry (line 389) | def reset_registry() -> None: FILE: workflows/plugins/integration.py class WorkflowPluginIntegration (line 42) | class WorkflowPluginIntegration: method __init__ (line 75) | def __init__( method create_context (line 94) | def create_context(self, task_id: str, **kwargs) -> Dict[str, Any]: method run_hook (line 102) | async def run_hook( method _handle_interaction (line 115) | async def _handle_interaction( method submit_response (line 186) | def submit_response( method has_pending_interaction (line 218) | def has_pending_interaction(self, task_id: str) -> bool: method cancel_interaction (line 222) | def cancel_interaction(self, task_id: str) -> bool: function create_plugin_enabled_wrapper (line 232) | def create_plugin_enabled_wrapper( FILE: workflows/plugins/plan_review.py class PlanReviewPlugin (line 24) | class PlanReviewPlugin(InteractionPlugin): method __init__ (line 42) | def __init__(self, enabled: bool = True, config: Optional[Dict] = None): method should_trigger (line 48) | async def should_trigger(self, context: Dict[str, Any]) -> bool: method create_interaction (line 80) | async def create_interaction(self, context: Dict[str, Any]) -> Interac... method process_response (line 115) | async def process_response( method _modify_plan (line 184) | async def _modify_plan( method on_skip (line 211) | async def on_skip(self, context: Dict[str, Any]) -> Dict[str, Any]: method on_timeout (line 218) | async def on_timeout(self, context: Dict[str, Any]) -> Dict[str, Any]: FILE: workflows/plugins/requirement_analysis.py class RequirementAnalysisPlugin (line 24) | class RequirementAnalysisPlugin(InteractionPlugin): method __init__ (line 41) | def __init__(self, enabled: bool = True, config: Optional[Dict] = None): method _get_agent (line 45) | async def _get_agent(self): method _cleanup_agent (line 56) | async def _cleanup_agent(self): method should_trigger (line 62) | async def should_trigger(self, context: Dict[str, Any]) -> bool: method create_interaction (line 84) | async def create_interaction(self, context: Dict[str, Any]) -> Interac... method process_response (line 134) | async def process_response( method on_skip (line 173) | async def on_skip(self, context: Dict[str, Any]) -> Dict[str, Any]: method on_timeout (line 180) | async def on_timeout(self, context: Dict[str, Any]) -> Dict[str, Any]: