SYMBOL INDEX (1779 symbols across 147 files) FILE: apps/cheapclaw/cheapclaw_hooks.py function on_tool_event (line 21) | def on_tool_event(payload: Dict[str, Any]) -> None: FILE: apps/cheapclaw/cheapclaw_service.py function _tail_text (line 104) | def _tail_text(path: Path, max_chars: int = 4000) -> str: function _atomic_write_text (line 114) | def _atomic_write_text(path: Path, content: str) -> None: function _log (line 126) | def _log(message: str) -> None: function _load_json (line 139) | def _load_json(path: Path, default: Any) -> Any: function _load_cheapclaw_app_config_example (line 146) | def _load_cheapclaw_app_config_example() -> Dict[str, Any]: function _extract_cheapclaw_settings (line 169) | def _extract_cheapclaw_settings(payload: Dict[str, Any]) -> Dict[str, Any]: class CheapClawPaths (line 190) | class CheapClawPaths: method from_user_data_root (line 212) | def from_user_data_root(cls, user_data_root: str | Path, app_name: str... class CheapClawPanelStore (line 241) | class CheapClawPanelStore: method __init__ (line 242) | def __init__(self, paths: CheapClawPaths, history_preview_limit: int =... method ensure_layout (line 248) | def ensure_layout(self) -> None: method _file_lock (line 289) | def _file_lock(self): method load_panel (line 301) | def load_panel(self) -> Dict[str, Any]: method save_panel (line 304) | def save_panel(self, panel: Dict[str, Any], *, backup: bool = True) ->... method mutate (line 310) | def mutate(self, updater: Callable[[Dict[str, Any]], Dict[str, Any] | ... method _write_panel_locked (line 319) | def _write_panel_locked(self, panel: Dict[str, Any], *, backup: bool) ... method _normalize_panel (line 326) | def _normalize_panel(self, panel: Dict[str, Any]) -> Dict[str, Any]: method _normalize_conversation (line 353) | def _normalize_conversation(self, channel: str, conversation_id: str, ... method dirty_conversations (line 419) | def dirty_conversations(self) -> List[Dict[str, Any]]: method record_social_message (line 428) | def record_social_message(self, **kwargs) -> Dict[str, Any]: method set_main_agent_state (line 474) | def set_main_agent_state(self, *, running: bool, run_id: str = "", mar... method mark_watchdog_tick (line 489) | def mark_watchdog_tick(self) -> Dict[str, Any]: class ChannelAdapter (line 496) | class ChannelAdapter: method __init__ (line 499) | def __init__(self, config: Dict[str, Any], service: "CheapClawService"): method poll_events (line 503) | def poll_events(self) -> List[Dict[str, Any]]: method send_message (line 506) | def send_message(self, conversation_id: str, message: str, attachments... method _normalize_attachments (line 510) | def _normalize_attachments(attachments: Optional[List[Dict[str, Any]]]... method handle_webhook_get (line 531) | def handle_webhook_get(self, path: str, query: Dict[str, List[str]], h... method handle_webhook_post (line 534) | def handle_webhook_post(self, path: str, body: bytes, headers: Dict[st... function _ensure_cheapclaw_app_config (line 538) | def _ensure_cheapclaw_app_config(paths: CheapClawPaths) -> Dict[str, Any]: function _sync_root_app_config_from_cheapclaw (line 582) | def _sync_root_app_config_from_cheapclaw(user_data_root: Path, cheapclaw... class TelegramAdapter (line 601) | class TelegramAdapter(ChannelAdapter): method __init__ (line 604) | def __init__(self, config: Dict[str, Any], service: "CheapClawService"): method _request (line 612) | def _request(self, method: str, endpoint: str, **kwargs) -> Dict[str, ... method _get_me (line 620) | def _get_me(self) -> Dict[str, Any]: method _message_mentions_bot (line 630) | def _message_mentions_bot(self, message: Dict[str, Any], text: str, is... method poll_events (line 661) | def poll_events(self) -> List[Dict[str, Any]]: method send_message (line 720) | def send_message(self, conversation_id: str, message: str, attachments... class FeishuAdapter (line 756) | class FeishuAdapter(ChannelAdapter): method __init__ (line 759) | def __init__(self, config: Dict[str, Any], service: "CheapClawService"): method _enqueue_event (line 774) | def _enqueue_event(self, payload: Dict[str, Any]) -> None: method _normalize_message_event (line 778) | def _normalize_message_event(self, header: Dict[str, Any], event: Dict... method _start_long_connection (line 812) | def _start_long_connection(self) -> None: method poll_events (line 852) | def poll_events(self) -> List[Dict[str, Any]]: method _tenant_access_token (line 860) | def _tenant_access_token(self) -> str: method handle_webhook_post (line 881) | def handle_webhook_post(self, path: str, body: bytes, headers: Dict[st... method send_message (line 896) | def send_message(self, conversation_id: str, message: str, attachments... class WhatsAppCloudAdapter (line 953) | class WhatsAppCloudAdapter(ChannelAdapter): method __init__ (line 956) | def __init__(self, config: Dict[str, Any], service: "CheapClawService"): method handle_webhook_get (line 964) | def handle_webhook_get(self, path: str, query: Dict[str, List[str]], h... method handle_webhook_post (line 972) | def handle_webhook_post(self, path: str, body: bytes, headers: Dict[st... method send_message (line 1002) | def send_message(self, conversation_id: str, message: str, attachments... class CheapClawService (line 1064) | class CheapClawService: method __init__ (line 1065) | def __init__( method _runtime_scope (line 1127) | def _runtime_scope(self): method bootstrap_assets (line 1131) | def bootstrap_assets(self, force: bool = False) -> Dict[str, Any]: method describe_runtime (line 1188) | def describe_runtime(self) -> Dict[str, Any]: method list_agent_systems (line 1191) | def list_agent_systems(self) -> Dict[str, Any]: method list_global_skills (line 1194) | def list_global_skills(self) -> Dict[str, Any]: method _find_task_entry (line 1197) | def _find_task_entry(self, task_id: str) -> Tuple[Optional[Dict[str, A... method get_task_preferences (line 1207) | def get_task_preferences(self, *, task_id: str) -> Dict[str, Any]: method update_task_preferences (line 1223) | def update_task_preferences( method load_runtime_state (line 1264) | def load_runtime_state(self) -> Dict[str, Any]: method save_runtime_state (line 1268) | def save_runtime_state(self, payload: Dict[str, Any]) -> Dict[str, Any]: method load_channel_config (line 1272) | def load_channel_config(self) -> Dict[str, Any]: method reload_adapters (line 1275) | def reload_adapters(self) -> Dict[str, ChannelAdapter]: method ingest_event (line 1287) | def ingest_event(self, event: Dict[str, Any]) -> Dict[str, Any]: method build_task_id (line 1291) | def build_task_id(self, *, channel: str, conversation_id: str, task_na... method build_task_skills_overlay (line 1295) | def build_task_skills_overlay(self, *, task_id: str, exposed_skills: O... method record_social_message (line 1300) | def record_social_message(self, **kwargs) -> Dict[str, Any]: method start_task (line 1304) | def start_task(self, **kwargs) -> Dict[str, Any]: method add_task_message (line 1431) | def add_task_message( method fresh_task (line 1456) | def fresh_task(self, *, task_id: str, reason: str = "") -> Dict[str, A... method reset_task (line 1460) | def reset_task(self, *, task_id: str, preserve_history: bool = True, k... method get_task_snapshot (line 1464) | def get_task_snapshot(self, *, task_id: str) -> Dict[str, Any]: method refresh_task_view (line 1478) | def refresh_task_view(self, *, channel: str, conversation_id: str, tas... method process_task_events (line 1493) | def process_task_events(self) -> List[Dict[str, Any]]: method reconcile_task_statuses (line 1553) | def reconcile_task_statuses(self) -> List[Dict[str, Any]]: method queue_message (line 1641) | def queue_message(self, *, channel: str, conversation_id: str, message... method send_message_now (line 1645) | def send_message_now(self, *, channel: str, conversation_id: str, mess... method process_outbox (line 1674) | def process_outbox(self) -> List[Dict[str, Any]]: method poll_channels (line 1705) | def poll_channels(self) -> List[Dict[str, Any]]: method tick_watchdog (line 1713) | def tick_watchdog(self) -> List[Dict[str, Any]]: method _watchdog_due (line 1769) | def _watchdog_due(self) -> bool: method tick_plans (line 1776) | def tick_plans(self) -> List[Dict[str, Any]]: method _build_supervisor_input (line 1828) | def _build_supervisor_input(self, reason: str) -> str: method run_supervisor_once (line 1911) | def run_supervisor_once(self, reason: str = "dirty_panel") -> Dict[str... method run_once (line 1932) | def run_once(self) -> Dict[str, Any]: method run_forever (line 1955) | def run_forever(self, poll_interval: int = 15) -> None: method _task_created_sort_value (line 1976) | def _task_created_sort_value(task: Dict[str, Any]) -> str: method serve_webhooks (line 1991) | def serve_webhooks(self, host: str = "127.0.0.1", port: int = 8765) ->... method dashboard_payload (line 2088) | def dashboard_payload(self) -> Dict[str, Any]: method _adapter_for_webhook (line 2105) | def _adapter_for_webhook(self, path: str) -> Optional[ChannelAdapter]: method credentials_needed (line 2112) | def credentials_needed(self) -> Dict[str, List[str]]: function build_arg_parser (line 2120) | def build_arg_parser() -> argparse.ArgumentParser: function main (line 2137) | def main(argv: Optional[List[str]] = None) -> int: FILE: apps/cheapclaw/tool_runtime_helpers.py function now_iso (line 14) | def now_iso() -> str: function parse_iso (line 18) | def parse_iso(value: str) -> Optional[datetime]: function get_user_data_root (line 31) | def get_user_data_root() -> Path: function get_cheapclaw_root (line 38) | def get_cheapclaw_root() -> Path: function get_panel_path (line 42) | def get_panel_path() -> Path: function get_panel_backups_dir (line 46) | def get_panel_backups_dir() -> Path: function get_plans_path (line 50) | def get_plans_path() -> Path: function get_outbox_dir (line 54) | def get_outbox_dir() -> Path: function get_task_events_dir (line 58) | def get_task_events_dir() -> Path: function get_task_skills_root (line 62) | def get_task_skills_root() -> Path: function get_channels_root (line 66) | def get_channels_root() -> Path: function ensure_cheapclaw_layout (line 70) | def ensure_cheapclaw_layout() -> None: function _atomic_write_json (line 103) | def _atomic_write_json(path: Path, payload: Dict[str, Any]) -> None: function _write_backup (line 115) | def _write_backup(path: Path, payload: str) -> Path: function slugify (line 121) | def slugify(value: str, fallback: str = "item", max_len: int = 80) -> str: function load_panel (line 141) | def load_panel() -> Dict[str, Any]: function save_panel (line 149) | def save_panel(panel: Dict[str, Any], backup: bool = True) -> Dict[str, ... function mutate_panel (line 158) | def mutate_panel(mutator): function _default_task_view (line 164) | def _default_task_view(task_id: str) -> Dict[str, Any]: function ensure_conversation (line 189) | def ensure_conversation( function history_path (line 237) | def history_path(channel: str, conversation_id: str) -> Path: function conversation_context_path (line 243) | def conversation_context_path(channel: str, conversation_id: str) -> Path: function _short_text (line 249) | def _short_text(value: Any, limit: int = 240) -> str: function refresh_conversation_context_file (line 256) | def refresh_conversation_context_file( function append_history (line 347) | def append_history( function read_social_history (line 372) | def read_social_history( function queue_outbound_message (line 412) | def queue_outbound_message( function list_outbox_events (line 435) | def list_outbox_events() -> List[Dict[str, Any]]: function ack_outbox_event (line 446) | def ack_outbox_event(event_id: str) -> None: function emit_task_event (line 454) | def emit_task_event(payload: Dict[str, Any]) -> Dict[str, Any]: function list_task_events (line 464) | def list_task_events() -> List[Dict[str, Any]]: function ack_task_event (line 475) | def ack_task_event(event_id: str) -> None: function load_plans (line 483) | def load_plans() -> Dict[str, Any]: function save_plans (line 491) | def save_plans(payload: Dict[str, Any]) -> Dict[str, Any]: function create_plan (line 497) | def create_plan( function cancel_plan (line 550) | def cancel_plan(plan_id: str) -> bool: function list_plans (line 563) | def list_plans(scope: str = "", enabled_only: bool = False) -> List[Dict... function compute_next_scheduled_run (line 575) | def compute_next_scheduled_run( function list_conversation_tasks (line 610) | def list_conversation_tasks(channel: str, conversation_id: str) -> List[... function bind_messages_to_task (line 627) | def bind_messages_to_task( function update_conversation_task (line 664) | def update_conversation_task(channel: str, conversation_id: str, task_id... function set_task_visible_skills (line 684) | def set_task_visible_skills(task_id: str, skill_names: Iterable[str]) ->... function extend_task_visible_skills (line 702) | def extend_task_visible_skills(task_id: str, skill_names: Iterable[str])... function clear_conversation_dirty (line 721) | def clear_conversation_dirty(channel: str, conversation_id: str) -> Dict... function generate_task_id (line 734) | def generate_task_id(channel: str, conversation_id: str, task_name: str)... function list_global_skills (line 741) | def list_global_skills(skills_root: Optional[str] = None) -> List[Dict[s... function reveal_skills_for_task (line 751) | def reveal_skills_for_task(task_id: str, skill_names: Iterable[str], ski... function set_task_skills_for_task (line 782) | def set_task_skills_for_task(task_id: str, skill_names: Iterable[str], s... FILE: apps/cheapclaw/tools_library/cheapclaw_add_task_message/cheapclaw_add_task_message.py class CheapClawAddTaskMessageTool (line 15) | class CheapClawAddTaskMessageTool(BaseTool): method execute (line 18) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_cancel_plan/cheapclaw_cancel_plan.py class CheapClawCancelPlanTool (line 12) | class CheapClawCancelPlanTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_generate_task_id/cheapclaw_generate_task_id.py class CheapClawGenerateTaskIdTool (line 12) | class CheapClawGenerateTaskIdTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_get_task_status/cheapclaw_get_task_status.py class CheapClawGetTaskStatusTool (line 14) | class CheapClawGetTaskStatusTool(BaseTool): method execute (line 16) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_list_agent_systems/cheapclaw_list_agent_systems.py class CheapClawListAgentSystemsTool (line 6) | class CheapClawListAgentSystemsTool(BaseTool): method execute (line 8) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_list_conversation_tasks/cheapclaw_list_conversation_tasks.py class CheapClawListConversationTasksTool (line 12) | class CheapClawListConversationTasksTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_list_global_skills/cheapclaw_list_global_skills.py class CheapClawListGlobalSkillsTool (line 12) | class CheapClawListGlobalSkillsTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_read_panel/cheapclaw_read_panel.py class CheapClawReadPanelTool (line 12) | class CheapClawReadPanelTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_read_social_history/cheapclaw_read_social_history.py class CheapClawReadSocialHistoryTool (line 12) | class CheapClawReadSocialHistoryTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_reset_task/cheapclaw_reset_task.py class CheapClawResetTaskTool (line 6) | class CheapClawResetTaskTool(BaseTool): method execute (line 8) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_reveal_skills/cheapclaw_reveal_skills.py class CheapClawRevealSkillsTool (line 14) | class CheapClawRevealSkillsTool(BaseTool): method execute (line 16) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_schedule_plan/cheapclaw_schedule_plan.py class CheapClawSchedulePlanTool (line 12) | class CheapClawSchedulePlanTool(BaseTool): method execute (line 14) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_send_file/cheapclaw_send_file.py function _get_active_service (line 13) | def _get_active_service(): class CheapClawSendFileTool (line 25) | class CheapClawSendFileTool(BaseTool): method execute (line 28) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_send_message/cheapclaw_send_message.py function _get_active_service (line 13) | def _get_active_service(): class CheapClawSendMessageTool (line 25) | class CheapClawSendMessageTool(BaseTool): method execute (line 27) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_start_task/cheapclaw_start_task.py function _load_cheapclaw_settings (line 23) | def _load_cheapclaw_settings(user_root: str): function _default_task_view (line 48) | def _default_task_view(task_id): class CheapClawStartTaskTool (line 73) | class CheapClawStartTaskTool(BaseTool): method execute (line 76) | def execute(self, task_id, parameters): FILE: apps/cheapclaw/tools_library/cheapclaw_update_panel/cheapclaw_update_panel.py class CheapClawUpdatePanelTool (line 20) | class CheapClawUpdatePanelTool(BaseTool): method execute (line 23) | def execute(self, task_id, parameters): FILE: core/agent_event_emitter.py class EventHandler (line 11) | class EventHandler(Protocol): method handle (line 16) | def handle(self, event: AgentEvent): class AgentEventEmitter (line 25) | class AgentEventEmitter: method __init__ (line 29) | def __init__(self): method register (line 32) | def register(self, handler: EventHandler): method dispatch (line 42) | def dispatch(self, event: AgentEvent): FILE: core/agent_executor.py class AgentExecutor (line 48) | class AgentExecutor: method __init__ (line 51) | def __init__( method _get_agent_model_preference (line 155) | def _get_agent_model_preference(self, category: str) -> Optional[str]: method _resolve_max_turns (line 169) | def _resolve_max_turns(self) -> int: method _inject_mcp_tools (line 178) | def _inject_mcp_tools(self): method _setup_event_emitter (line 191) | def _setup_event_emitter(self): method _emit_sdk_stream_event (line 202) | def _emit_sdk_stream_event(self, event_type: str, payload: Dict[str, A... method run (line 220) | def run(self, task_id: str, user_input: str) -> Dict: method _load_state_from_storage (line 449) | def _load_state_from_storage(self, task_id: str) -> int: method _build_messages_from_action_history (line 487) | def _build_messages_from_action_history(self) -> List[Dict]: method _should_normalize_kimi_history_tool_ids (line 642) | def _should_normalize_kimi_history_tool_ids(self) -> bool: method _format_kimi_history_tool_call_id (line 649) | def _format_kimi_history_tool_call_id(tool_name: str, sequence_index: ... method _execute_llm_call (line 652) | def _execute_llm_call( method _record_text_response (line 733) | def _record_text_response( method _build_react_reflection_prompt (line 759) | def _build_react_reflection_prompt(self) -> str: method _run_react_reflection (line 768) | def _run_react_reflection( method _execute_tool_call (line 809) | def _execute_tool_call(self, tool_call: Dict, task_id: str, user_input... method _handle_special_tool_side_effects (line 951) | def _handle_special_tool_side_effects(self, tool_name: str, tool_resul... method _maybe_run_scheduled_fresh (line 997) | def _maybe_run_scheduled_fresh(self, task_id: str, user_input: str, tu... method _perform_fresh (line 1008) | def _perform_fresh(self, task_id: str, user_input: str, turn: int, rea... method _handle_execution_error (line 1083) | def _handle_execution_error(self, e: Exception) -> Dict: method _add_uuid_if_needed (line 1138) | def _add_uuid_if_needed( method _trigger_thinking (line 1183) | def _trigger_thinking(self, task_id: str, task_input: str, is_initial:... method _build_llm_stream_callback (line 1268) | def _build_llm_stream_callback( method _build_model_outputs_payload (line 1318) | def _build_model_outputs_payload(self) -> Dict[str, Any]: method _with_model_outputs (line 1331) | def _with_model_outputs(self, result: Dict[str, Any]) -> Dict[str, Any]: method _compress_action_history_if_needed (line 1347) | def _compress_action_history_if_needed(self): method _recover_pending_tools (line 1389) | def _recover_pending_tools(self, task_id: str): method _save_state (line 1435) | def _save_state(self, task_id: str, user_input: str, current_turn: int): FILE: core/context_builder.py class ContextBuilder (line 17) | class ContextBuilder: method __init__ (line 20) | def __init__(self, hierarchy_manager, agent_config: Dict, config_loade... method _resolve_compressor_model (line 52) | def _resolve_compressor_model(self) -> str: method _resolve_compressor_tool_choice (line 56) | def _resolve_compressor_tool_choice(self, model: str) -> str: method _build_task_system_add (line 59) | def _build_task_system_add(self, task_id: str) -> str: method _count_tokens (line 71) | def _count_tokens(self, text: str) -> int: method build_context (line 79) | def build_context(self, task_id: str, agent_id: str, agent_name: str, ... method _select_user_history_entries (line 212) | def _select_user_history_entries(self, history: List[Dict]) -> tuple[L... method _build_task_history_search_hint (line 223) | def _build_task_history_search_hint(self, visible_count: int, total_co... method _build_loaded_skills_xml (line 231) | def _build_loaded_skills_xml(self, agent_id: str) -> str: method _load_general_system_prompt (line 255) | def _load_general_system_prompt(self, agent_name: str) -> str: method _build_user_latest_input (line 292) | def _build_user_latest_input(self, current: Dict) -> str: method _build_user_agent_history (line 308) | def _build_user_agent_history(self, task_id: str, current: Dict = None... method _compress_user_agent_history_with_llm (line 375) | def _compress_user_agent_history_with_llm(self, history: List[Dict], t... method _build_structured_call_info (line 474) | def _build_structured_call_info(self, current: Dict, current_agent_id:... method _compress_structured_call_info_with_llm (line 536) | def _compress_structured_call_info_with_llm(self, call_tree: List[Dict... method _build_agent_tree_json (line 596) | def _build_agent_tree_json( method _format_agent_tree (line 669) | def _format_agent_tree( method _build_current_thinking (line 742) | def _build_current_thinking(self, task_id: str, agent_id: str, current... method _build_action_history (line 776) | def _build_action_history(self, task_id: str, agent_id: str) -> str: FILE: core/event_handlers.py function _normalize_event_value (line 17) | def _normalize_event_value(value: Any) -> Any: function serialize_agent_event (line 29) | def serialize_agent_event(event: AgentEvent) -> Dict[str, Any]: class StructuredEventHandler (line 50) | class StructuredEventHandler: method __init__ (line 53) | def __init__( method handle (line 62) | def handle(self, event: AgentEvent): method emit (line 66) | def emit(self, normalized: Dict[str, Any]): class ConsoleLogHandler (line 72) | class ConsoleLogHandler: method handle (line 77) | def handle(self, event: AgentEvent): method _print_default (line 84) | def _print_default(self, event: AgentEvent): method _print_agent_start (line 89) | def _print_agent_start(self, event: AgentStartEvent): method _print_agent_end (line 95) | def _print_agent_end(self, event: AgentEndEvent): method _print_prepare_model_select (line 104) | def _print_prepare_model_select(self, event: ModelSelectionEvent): method _print_prepare_history_load (line 111) | def _print_prepare_history_load(self, event: HistoryLoadEvent): method _print_run_llm_start (line 118) | def _print_run_llm_start(self, event: LlmCallStartEvent): method _print_run_llm_end (line 122) | def _print_run_llm_end(self, event: LlmCallEndEvent): method _print_run_tool_start (line 126) | def _print_run_tool_start(self, event: ToolCallStartEvent): method _print_run_tool_end (line 130) | def _print_run_tool_end(self, event: ToolCallEndEvent): method _print_run_thinking_start (line 133) | def _print_run_thinking_start(self, event: ThinkingStartEvent): method _print_run_thinking_end (line 142) | def _print_run_thinking_end(self, event: ThinkingEndEvent): method _print_run_thinking_fail (line 145) | def _print_run_thinking_fail(self, event: ThinkingFailEvent): method _print_system_error (line 149) | def _print_system_error(self, event: ErrorEvent): method _print_system_cli_display (line 152) | def _print_system_cli_display(self, event: CliDisplayEvent): class JsonlStreamHandler (line 156) | class JsonlStreamHandler: method __init__ (line 161) | def __init__(self, enabled: bool): method handle (line 165) | def handle(self, event: AgentEvent): method _stream_default (line 176) | def _stream_default(self, event: AgentEvent): method _stream_agent_start (line 180) | def _stream_agent_start(self, event: AgentStartEvent): method _stream_agent_end (line 187) | def _stream_agent_end(self, event: AgentEndEvent): method _stream_run_thinking_start (line 193) | def _stream_run_thinking_start(self, event: ThinkingStartEvent): method _stream_run_tool_start (line 201) | def _stream_run_tool_start(self, event: ToolCallStartEvent): method _stream_run_tool_end (line 209) | def _stream_run_tool_end(self, event: ToolCallEndEvent): method _stream_run_thinking_end (line 233) | def _stream_run_thinking_end(self, event: ThinkingEndEvent): method _stream_run_thinking_fail (line 242) | def _stream_run_thinking_fail(self, event: ThinkingFailEvent): method _stream_system_error (line 245) | def _stream_system_error(self, event: ErrorEvent): FILE: core/events.py class AgentEvent (line 20) | class AgentEvent: class ModelSelectionEvent (line 26) | class ModelSelectionEvent(AgentEvent): class HistoryLoadEvent (line 37) | class HistoryLoadEvent(AgentEvent): class ThinkingStartEvent (line 53) | class ThinkingStartEvent(AgentEvent): class ThinkingEndEvent (line 64) | class ThinkingEndEvent(AgentEvent): class ThinkingFailEvent (line 80) | class ThinkingFailEvent(AgentEvent): class LlmCallStartEvent (line 91) | class LlmCallStartEvent(AgentEvent): class LlmCallEndEvent (line 101) | class LlmCallEndEvent(AgentEvent): class ToolCallStartEvent (line 115) | class ToolCallStartEvent(AgentEvent): class ToolCallEndEvent (line 125) | class ToolCallEndEvent(AgentEvent): class AgentStartEvent (line 140) | class AgentStartEvent(AgentEvent): class AgentEndEvent (line 150) | class AgentEndEvent(AgentEvent): class ErrorEvent (line 161) | class ErrorEvent(AgentEvent): class CliDisplayEvent (line 170) | class CliDisplayEvent(AgentEvent): FILE: core/hierarchy_manager.py class HierarchyManager (line 19) | class HierarchyManager: method __init__ (line 22) | def __init__(self, task_id: str): method _initialize_files (line 49) | def _initialize_files(self): method _load_stack (line 78) | def _load_stack(self) -> List[Dict]: method _save_stack (line 88) | def _save_stack(self, stack: List[Dict]): method _load_context (line 99) | def _load_context(self) -> Dict: method _save_context (line 117) | def _save_context(self, context: Dict): method start_new_instruction (line 126) | def start_new_instruction(self, instruction: str) -> str: method append_instruction (line 138) | def append_instruction(self, instruction: str, dedupe: bool = False, s... method get_runtime_metadata (line 177) | def get_runtime_metadata(self) -> Dict: method set_runtime_metadata (line 183) | def set_runtime_metadata(self, **metadata): method push_agent (line 200) | def push_agent(self, agent_name: str, user_input: str) -> str: method pop_agent (line 284) | def pop_agent(self, agent_id: str, final_output: str = ""): method update_thinking (line 322) | def update_thinking(self, agent_id: str, thinking: str): method get_loaded_skills (line 338) | def get_loaded_skills(self, agent_id: str) -> List[Dict]: method add_loaded_skill (line 345) | def add_loaded_skill(self, agent_id: str, skill_info: Dict): method remove_loaded_skill (line 361) | def remove_loaded_skill(self, agent_id: str, skill_name: str): method add_action (line 374) | def add_action(self, agent_id: str, action: Dict): method get_context (line 386) | def get_context(self) -> Dict: method _check_and_complete_if_all_done (line 390) | def _check_and_complete_if_all_done(self): method get_current_agent_id (line 447) | def get_current_agent_id(self) -> Optional[str]: function get_hierarchy_manager (line 458) | def get_hierarchy_manager(task_id: str) -> HierarchyManager: FILE: core/runtime_exceptions.py class InfiAgentRunError (line 12) | class InfiAgentRunError(RuntimeError): method __init__ (line 15) | def __init__( method from_result (line 35) | def from_result( FILE: core/state_cleaner.py function clean_before_start (line 19) | def clean_before_start(task_id: str, new_user_input: str = None): FILE: core/tool_executor.py class ToolExecutor (line 19) | class ToolExecutor: method __init__ (line 28) | def __init__( method set_agent_context (line 61) | def set_agent_context(self, *, agent_id: str = "", agent_name: str = ""): method _agent_level (line 65) | def _agent_level(self) -> int: method _init_tools_registry (line 73) | def _init_tools_registry(self): method _call_direct (line 85) | def _call_direct(self, tool_name: str, arguments: Dict, task_id: str) ... method set_task_permission (line 180) | def set_task_permission(self, task_id: str, auto_mode: bool): method is_auto_mode (line 185) | def is_auto_mode(self, task_id: str) -> bool: method _request_tool_confirmation (line 189) | def _request_tool_confirmation(self, tool_name: str, arguments: Dict[s... method execute (line 241) | def execute(self, tool_name: str, arguments: Dict[str, Any], task_id: ... method _execute_sub_agent (line 325) | def _execute_sub_agent( FILE: desktop_app/src/main.js function getPythonBackendPath (line 18) | function getPythonBackendPath() { function getPackagedBackendArchDir (line 25) | function getPackagedBackendArchDir() { function getPackagedBackendExecutablePath (line 39) | function getPackagedBackendExecutablePath() { function getPackagedBackendPlaywrightBrowsersPath (line 47) | function getPackagedBackendPlaywrightBrowsersPath() { function getBackendLaunchSpecDev (line 62) | function getBackendLaunchSpecDev(userInput, workspacePath, agentName, ag... function getBackendLaunchSpecPackaged (line 80) | function getBackendLaunchSpecPackaged(userInput, workspacePath, agentNam... function getUserDataRoot (line 98) | function getUserDataRoot() { function getUserConfigDir (line 102) | function getUserConfigDir() { function getAppConfigPath (line 106) | function getAppConfigPath() { function getLlmConfigPath (line 111) | function getLlmConfigPath() { function defaultAppConfig (line 116) | function defaultAppConfig() { function safeReadJsonFile (line 156) | function safeReadJsonFile(filePath) { function ensureUserAppConfigExists (line 166) | function ensureUserAppConfigExists() { function readAppConfig (line 174) | function readAppConfig() { function stripApiKeysFromYaml (line 196) | function stripApiKeysFromYaml(yamlText) { function _parsePathFromPathHelperOutput (line 203) | function _parsePathFromPathHelperOutput(text) { function getSystemPathFromPathHelper (line 212) | function getSystemPathFromPathHelper() { function getZshLoginInteractivePath (line 224) | function getZshLoginInteractivePath() { function computeEffectivePath (line 238) | function computeEffectivePath(appCfg) { function buildRuntimeEnv (line 273) | function buildRuntimeEnv() { function ensureUserDataRootScaffold (line 304) | function ensureUserDataRootScaffold() { function ensureUserLlmConfigExists (line 366) | function ensureUserLlmConfigExists() { function getSkillsLibraryPath (line 401) | function getSkillsLibraryPath() { function getUserAgentLibraryPath (line 406) | function getUserAgentLibraryPath() { function getConversationsPath (line 411) | function getConversationsPath() { function getLogsPath (line 415) | function getLogsPath() { function sanitizeFilenamePart (line 419) | function sanitizeFilenamePart(input) { function createTaskLogger (line 425) | function createTaskLogger({ workspacePath, agentName, agentSystem, mode,... function safeReadJson (line 467) | function safeReadJson(filePath) { function pickPreviewFromShareContext (line 476) | function pickPreviewFromShareContext(data) { function computeTaskNameForConversation (line 492) | function computeTaskNameForConversation(taskId) { function getStackFilePath (line 499) | function getStackFilePath(taskId) { function createWindow (line 507) | function createWindow() { function killPythonProcess (line 795) | function killPythonProcess() { function parseSettingsYaml (line 811) | function parseSettingsYaml(text) { function serializeSettingsYaml (line 816) | function serializeSettingsYaml(obj) { function normalizeMarketBaseUrl (line 976) | function normalizeMarketBaseUrl(url) { function fetchJson (line 982) | async function fetchJson(url) { function fetchBuffer (line 991) | async function fetchBuffer(url) { function resolveUniqueName (line 1001) | function resolveUniqueName(rootDir, baseName) { function extractSingleTopFolderFromZip (line 1012) | function extractSingleTopFolderFromZip(zipBuffer, tempDir) { function copyDirSync (line 1173) | function copyDirSync(src, dest) { FILE: desktop_app/src/renderer.js function reloadAgentSystems (line 26) | async function reloadAgentSystems(selectedValue = null) { function renderMarkdownSafe (line 64) | function renderMarkdownSafe(mdText) { function setMarkdown (line 84) | function setMarkdown(el, mdText) { function refreshResumeButton (line 148) | async function refreshResumeButton() { function sendMessage (line 221) | async function sendMessage() { function addUserMessage (line 370) | function addUserMessage(text) { function addSystemMessage (line 378) | function addSystemMessage(text) { function addErrorMessage (line 385) | function addErrorMessage(text) { function addToolMessage (line 392) | function addToolMessage(toolName, status, args) { function updateLastToolStatus (line 470) | function updateLastToolStatus(status, outputPreview) { function streamToken (line 498) | function streamToken(text) { function finalizeCurrentStream (line 528) | function finalizeCurrentStream() { function streamReasoningToken (line 544) | function streamReasoningToken(text) { function finalizeReasoningStream (line 567) | function finalizeReasoningStream() { function startThinkingAgentStream (line 591) | function startThinkingAgentStream() { function streamThinkingAgentToken (line 609) | function streamThinkingAgentToken(text) { function finalizeThinkingAgentStream (line 616) | function finalizeThinkingAgentStream() { function showTypingIndicator (line 636) | function showTypingIndicator() { function removeTypingIndicator (line 645) | function removeTypingIndicator() { function resetState (line 650) | function resetState() { function scrollToBottom (line 659) | function scrollToBottom() { function forceScrollToBottom (line 666) | function forceScrollToBottom() { function escapeHtml (line 672) | function escapeHtml(text) { function updateAutoScrollBtn (line 679) | function updateAutoScrollBtn() { function loadSettings (line 762) | async function loadSettings() { function setMarketStatus (line 1064) | function setMarketStatus(text, isError = false) { constant MODEL_EDITOR_SLOT_CONFIG_KEYS (line 1070) | const MODEL_EDITOR_SLOT_CONFIG_KEYS = { constant MODEL_EDITOR_PROVIDER_OPTIONS (line 1079) | const MODEL_EDITOR_PROVIDER_OPTIONS = ` function createEmptyModelEditorState (line 1091) | function createEmptyModelEditorState() { function nextModelEditorId (line 1102) | function nextModelEditorId() { function inferModelProviderKind (line 1107) | function inferModelProviderKind(modelName, entryBaseUrl, globalBaseUrl, ... function stripModelNameForProvider (line 1122) | function stripModelNameForProvider(providerKind, modelName, entryBaseUrl... function normalizeModelNameForProvider (line 1139) | function normalizeModelNameForProvider(providerKind, modelName) { function makeBlankModelEditorEntry (line 1156) | function makeBlankModelEditorEntry() { function deserializeModelEditorEntry (line 1168) | function deserializeModelEditorEntry(rawEntry, globalBaseUrl) { function serializeModelEditorComparable (line 1186) | function serializeModelEditorComparable(entry) { function cloneModelEditorEntry (line 1197) | function cloneModelEditorEntry(entry) { function computeSharedModelEntries (line 1209) | function computeSharedModelEntries(slotEntries) { function createModelEntryPayload (line 1218) | function createModelEntryPayload(entry) { function buildModelEditorConfig (line 1229) | function buildModelEditorConfig(baseConfig) { function getModelEditorEntry (line 1240) | function getModelEditorEntry(slotKey, entryId) { function renderModelEditorEntry (line 1244) | function renderModelEditorEntry(slotKey, entry) { function renderModelEditorSlot (line 1295) | function renderModelEditorSlot(slotKey) { function renderAllModelEditorSlots (line 1316) | function renderAllModelEditorSlots() { function loadModelEditorSettings (line 1320) | function loadModelEditorSettings(config) { function addModelEditorEntry (line 1342) | function addModelEditorEntry(slotKey) { function bindModelEditorList (line 1348) | function bindModelEditorList(slotKey) { function readPositiveNumber (line 1399) | function readPositiveNumber(value, fallback) { function readNonNegativeNumber (line 1404) | function readNonNegativeNumber(value, fallback) { function filterMarketItems (line 1409) | function filterMarketItems(items, q) { function renderMarketList (line 1419) | function renderMarketList() { function loadMarketIndex (line 1478) | async function loadMarketIndex() { function installFromMarket (line 1492) | async function installFromMarket(kind, name) { function loadSkills (line 1577) | async function loadSkills() { function loadConversations (line 1619) | async function loadConversations() { function formatRelativeTime (line 1697) | function formatRelativeTime(date) { function loadConversationDetail (line 1712) | async function loadConversationDetail(fileName) { function renderShareContext (line 1731) | function renderShareContext(data) { function addAgentMessage (line 1749) | function addAgentMessage(label, text) { FILE: infiagent/sdk.py function _normalize_path (line 57) | def _normalize_path(path: Optional[str]) -> Optional[str]: function _as_root_dir (line 63) | def _as_root_dir(path: Optional[str], expected_leaf: Optional[str] = Non... function _materialize_inline_llm_config (line 73) | def _materialize_inline_llm_config( class InfiAgent (line 88) | class InfiAgent: method __init__ (line 89) | def __init__( method _runtime_scope (line 207) | def _runtime_scope(self, extra_overrides: Optional[Dict[str, Any]] = N... method _resolve_task_id (line 213) | def _resolve_task_id( method _build_launch_config (line 227) | def _build_launch_config(self) -> Dict[str, Any]: method _build_sdk_event_handler (line 270) | def _build_sdk_event_handler( method _attach_optional_run_artifacts (line 286) | def _attach_optional_run_artifacts( method run (line 302) | def run( method fresh (line 429) | def fresh( method add_message (line 462) | def add_message( method start_background_task (line 494) | def start_background_task( method task_share_context_path (line 525) | def task_share_context_path(self, *, task_id: str) -> Dict[str, Any]: method list_task_ids (line 532) | def list_task_ids(self, *, only_running: bool = False) -> Dict[str, Any]: method describe_runtime (line 539) | def describe_runtime(self) -> Dict[str, Any]: method list_agent_systems (line 560) | def list_agent_systems(self) -> Dict[str, Any]: method task_snapshot (line 594) | def task_snapshot(self, *, task_id: str) -> Dict[str, Any]: method task_trace (line 657) | def task_trace( method reset_task (line 711) | def reset_task( method run_async (line 731) | async def run_async( method fresh_async (line 776) | async def fresh_async(self, *, task_id: str, reason: str = "") -> Dict... method add_message_async (line 779) | async def add_message_async( method start_background_task_async (line 797) | async def start_background_task_async( method task_share_context_path_async (line 821) | async def task_share_context_path_async(self, *, task_id: str) -> Dict... method list_task_ids_async (line 824) | async def list_task_ids_async(self, *, only_running: bool = False) -> ... method describe_runtime_async (line 827) | async def describe_runtime_async(self) -> Dict[str, Any]: method list_agent_systems_async (line 830) | async def list_agent_systems_async(self) -> Dict[str, Any]: method task_snapshot_async (line 833) | async def task_snapshot_async(self, *, task_id: str) -> Dict[str, Any]: method task_trace_async (line 836) | async def task_trace_async( method reset_task_async (line 850) | async def reset_task_async( function infiagent (line 867) | def infiagent(**kwargs) -> InfiAgent: FILE: marketplace_server/app.py function _env_path (line 21) | def _env_path(name: str, default: Path) -> Path: function _mk_item (line 33) | def _mk_item(kind: str, name: str, description: str, updated_at: float, ... function _load_state (line 43) | def _load_state() -> Dict[str, Any]: function _save_state (line 52) | def _save_state(state: Dict[str, Any]) -> None: function _inc_download (line 58) | def _inc_download(kind: str, name: str) -> int: function _get_downloads (line 66) | def _get_downloads(kind: str, name: str) -> int: function _safe_frontmatter_description (line 72) | def _safe_frontmatter_description(skill_md: Path) -> str: function _list_skills (line 90) | def _list_skills() -> List[Dict[str, Any]]: function _list_agent_systems (line 106) | def _list_agent_systems() -> List[Dict[str, Any]]: function _apply_query (line 159) | def _apply_query(items: List[Dict[str, Any]], q: str) -> List[Dict[str, ... function _sort_items (line 172) | def _sort_items(items: List[Dict[str, Any]], sort_by: str, order: str) -... function _zip_dir_to_bytes (line 180) | def _zip_dir_to_bytes(dir_path: Path, top_folder_name: str) -> bytes: function _resolve_item_dir (line 192) | def _resolve_item_dir(kind: str, name: str) -> Path: function _json_response (line 205) | def _json_response(start_response, status: str, data: Dict[str, Any]) ->... function _bytes_response (line 216) | def _bytes_response(start_response, status: str, content_type: str, body... function _not_found (line 228) | def _not_found(start_response, msg: str) -> List[bytes]: function _bad_request (line 232) | def _bad_request(start_response, msg: str) -> List[bytes]: function app (line 236) | def app(environ, start_response): function _run_dev_server (line 409) | def _run_dev_server(host: str, port: int) -> None: function _html_page (line 417) | def _html_page(title: str, body_html: str) -> bytes: function _escape_html (line 447) | def _escape_html(s: str) -> str: function _admin_token_required (line 458) | def _admin_token_required() -> bool: function _check_admin (line 462) | def _check_admin(environ) -> bool: function _extract_zip_to_dest (line 473) | def _extract_zip_to_dest(zip_bytes: bytes, dest_root: Path, strategy: st... FILE: services/action_compressor.py class ActionCompressor (line 19) | class ActionCompressor: method __init__ (line 25) | def __init__( method _resolve_compressor_model (line 50) | def _resolve_compressor_model(self) -> str: method _resolve_compressor_tool_choice (line 53) | def _resolve_compressor_tool_choice(self, model: str) -> str: method count_tokens (line 56) | def count_tokens(self, text: str) -> int: method compress_if_needed (line 65) | def compress_if_needed( method _actions_to_xml (line 143) | def _actions_to_xml(self, actions: List[Dict]) -> str: method _extract_images_from_actions (line 169) | def _extract_images_from_actions(self, actions: List[Dict]) -> List[Di... method _summarize_historical_xml (line 191) | def _summarize_historical_xml( method _single_summarize (line 259) | def _single_summarize( method _chunked_summarize (line 345) | def _chunked_summarize( method _compress_action_fields (line 475) | def _compress_action_fields( method _llm_compress_field (line 547) | def _llm_compress_field( method _chunked_compress_field (line 673) | def _chunked_compress_field( method _fallback_compress (line 805) | def _fallback_compress(self, text: str, max_tokens: int) -> str: FILE: services/context_compressor_backup.py class ContextCompressor (line 29) | class ContextCompressor: method __init__ (line 32) | def __init__(self): method count_tokens (line 42) | def count_tokens(self, text: str) -> int: method compress_action_history (line 52) | def compress_action_history( method _summarize_historical_actions (line 120) | def _summarize_historical_actions(self, actions: List[Dict]) -> Dict: method _create_simple_summary (line 202) | def _create_simple_summary(self, actions: List[Dict]) -> Dict: method _compress_large_action (line 223) | def _compress_large_action(self, action: Dict, max_tokens: int) -> Dict: FILE: services/llm_client.py class ChatMessage (line 32) | class ChatMessage: class ToolCall (line 39) | class ToolCall: class LLMResponse (line 47) | class LLMResponse: function _marker_prefix_overlap (line 68) | def _marker_prefix_overlap(text: str, marker: str) -> int: class _EmbeddedToolCallStreamState (line 79) | class _EmbeddedToolCallStreamState: method __init__ (line 82) | def __init__(self): method feed (line 87) | def feed(self, text: str) -> str: method finish (line 132) | def finish(self) -> tuple[str, str]: function _coerce_text_content (line 143) | def _coerce_text_content(value: Any) -> str: class SimpleLLMClient (line 167) | class SimpleLLMClient: method __init__ (line 170) | def __init__(self, llm_config_path: str = None, tools_config_path: str... method _emit_stream_reset (line 255) | def _emit_stream_reset( method _fetch_response_and_first_chunk_with_timeout (line 278) | def _fetch_response_and_first_chunk_with_timeout( method _parse_models_config (line 314) | def _parse_models_config(self, models_config: List, target_list: List,... method _load_default_tool_choice (line 355) | def _load_default_tool_choice(self) -> Dict[str, str]: method get_default_tool_choice (line 375) | def get_default_tool_choice(self, category: str = "execution") -> str: method _is_kimi_tool_model (line 379) | def _is_kimi_tool_model(model: str, tool_count: int = 0) -> bool: method _contains_embedded_tool_markup (line 388) | def _contains_embedded_tool_markup(text: str) -> bool: method _embedded_tool_name_from_id (line 401) | def _embedded_tool_name_from_id(raw_call_id: str) -> str: method _parse_embedded_tool_calls (line 411) | def _parse_embedded_tool_calls(self, raw_markup: str) -> List[ToolCall]: method _merge_tool_calls (line 443) | def _merge_tool_calls(primary: List[ToolCall], secondary: List[ToolCal... method _extract_embedded_tool_calls_and_visible_text (line 457) | def _extract_embedded_tool_calls_and_visible_text( method _parse_non_stream_tool_calls (line 491) | def _parse_non_stream_tool_calls(self, tool_calls_payload: Any) -> Lis... method _chat_internal_non_stream (line 537) | def _chat_internal_non_stream( method _build_debug_messages_snapshot (line 609) | def _build_debug_messages_snapshot(self, messages: List[Dict[str, Any]... method _resolve_debug_output_path (line 625) | def _resolve_debug_output_path(self, debug_task_id: Optional[str]) -> ... method _append_debug_record (line 636) | def _append_debug_record( method resolve_model (line 663) | def resolve_model(self, category: str = "execution", preferred: Option... method resolve_tool_choice (line 680) | def resolve_tool_choice( method chat (line 698) | def chat( method _chat_internal (line 832) | def _chat_internal( method set_tools_config (line 1257) | def set_tools_config(self, tools_config: Dict): method _try_fix_json (line 1266) | def _try_fix_json(self, json_str: str) -> Dict: method _generate_type_fix_hint (line 1306) | def _generate_type_fix_hint(self, error_info: str) -> str: method _get_error_type (line 1386) | def _get_error_type(self, error_info: str) -> str: method _is_retriable_error (line 1422) | def _is_retriable_error(self, error_info: str) -> bool: method _generate_retry_hint (line 1483) | def _generate_retry_hint(self, error_info: str, retry_count: int) -> str: method _build_tools_definition (line 1605) | def _build_tools_definition(self, tool_list: List[str]) -> List[Dict]: FILE: services/thinking_agent.py class ThinkingAgent (line 13) | class ThinkingAgent: method __init__ (line 16) | def __init__(self, preferred_model: Optional[str] = None, max_tokens: ... method analyze_first_thinking (line 110) | def analyze_first_thinking(self, task_description: str, agent_system_p... method analyze_first_thinking_detail (line 127) | def analyze_first_thinking_detail(self, task_description: str, agent_s... method _extract_images (line 220) | def _extract_images(self, action_history: List[Dict]) -> List[Dict]: method _format_tools_info (line 246) | def _format_tools_info(self, available_tools: List[str], tools_config:... method analyze_progress (line 287) | def analyze_progress(self, task_description: str, agent_system_prompt:... method analyze_progress_detail (line 298) | def analyze_progress_detail(self, task_description: str, agent_system_... FILE: setup.py function _collect_data_files (line 37) | def _collect_data_files(base_dir: Path, install_prefix: str): FILE: skills/algorithmic-art/templates/generator_template.js function initializeSeed (line 43) | function initializeSeed(seed) { function setup (line 53) | function setup() { function draw (line 70) | function draw() { class Entity (line 92) | class Entity { method constructor (line 93) | constructor() { method update (line 98) | update() { method display (line 106) | display() { function hexToRgb (line 132) | function hexToRgb(hex) { function colorFromPalette (line 141) | function colorFromPalette(index) { function mapRange (line 146) | function mapRange(value, inMin, inMax, outMin, outMax) { function easeInOutCubic (line 150) | function easeInOutCubic(t) { function wrapAround (line 155) | function wrapAround(value, max) { function updateParameter (line 165) | function updateParameter(paramName, value) { function regenerate (line 171) | function regenerate() { function fadeBackground (line 183) | function fadeBackground(opacity) { function getNoiseValue (line 190) | function getNoiseValue(x, y, scale = 0.01) { function vectorFromAngle (line 195) | function vectorFromAngle(angle, magnitude = 1) { function exportImage (line 203) | function exportImage() { FILE: skills/docx/scripts/accept_changes.py function accept_changes (line 36) | def accept_changes( function _setup_libreoffice_macro (line 91) | def _setup_libreoffice_macro() -> bool: FILE: skills/docx/scripts/comment.py function _generate_hex_id (line 68) | def _generate_hex_id() -> str: function _encode_smart_quotes (line 80) | def _encode_smart_quotes(text: str) -> str: function _append_xml (line 86) | def _append_xml(xml_path: Path, root_tag: str, content: str) -> None: function _find_para_id (line 98) | def _find_para_id(comments_path: Path, comment_id: int) -> str | None: function _get_next_rid (line 108) | def _get_next_rid(rels_path: Path) -> int: function _has_relationship (line 121) | def _has_relationship(rels_path: Path, target: str) -> bool: function _has_content_type (line 129) | def _has_content_type(ct_path: Path, part_name: str) -> bool: function _ensure_comment_relationships (line 137) | def _ensure_comment_relationships(unpacked_dir: Path) -> None: function _ensure_comment_content_types (line 179) | def _ensure_comment_content_types(unpacked_dir: Path) -> None: function add_comment (line 218) | def add_comment( FILE: skills/docx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: skills/docx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: skills/docx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: skills/docx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: skills/docx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: skills/docx/scripts/office/validate.py function main (line 25) | def main(): FILE: skills/docx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: skills/docx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: skills/docx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: skills/docx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: skills/mac-use/scripts/mac_use.py function get_windows (line 46) | def get_windows(): function find_window (line 75) | def find_window(app_name, window_id=None): function get_display_scale (line 109) | def get_display_scale(): function activate_app (line 131) | def activate_app(app_name): function raise_window (line 141) | def raise_window(app_name, window_title): function activate_and_find (line 156) | def activate_and_find(app_name, window_id=None): function output (line 167) | def output(data): function fail (line 172) | def fail(data): function reliable_click (line 182) | def reliable_click(x, y): function canvas_to_abs (line 208) | def canvas_to_abs(canvas_x, canvas_y, win, scale): function capture_full_screen (line 230) | def capture_full_screen(): function crop_window (line 239) | def crop_window(win): function detect_text_elements (line 276) | def detect_text_elements(image_path): function is_noise (line 328) | def is_noise(elem): function draw_annotations (line 349) | def draw_annotations(image_path, elements, output_path): function cmd_list (line 396) | def cmd_list(_args): function cmd_screenshot (line 401) | def cmd_screenshot(args): function cmd_clicknum (line 465) | def cmd_clicknum(args): function cmd_click (line 505) | def cmd_click(args): function cmd_scroll (line 518) | def cmd_scroll(args): function keystroke_via_osascript (line 543) | def keystroke_via_osascript(key, modifiers=None): function keycode_via_osascript (line 558) | def keycode_via_osascript(code, modifiers=None): function cmd_type (line 573) | def cmd_type(args): function cmd_key (line 586) | def cmd_key(args): function main (line 633) | def main(): FILE: skills/mcp-builder/scripts/connections.py class MCPConnection (line 13) | class MCPConnection(ABC): method __init__ (line 16) | def __init__(self): method _create_context (line 21) | def _create_context(self): method __aenter__ (line 24) | async def __aenter__(self): method __aexit__ (line 48) | async def __aexit__(self, exc_type, exc_val, exc_tb): method list_tools (line 55) | async def list_tools(self) -> list[dict[str, Any]]: method call_tool (line 67) | async def call_tool(self, tool_name: str, arguments: dict[str, Any]) -... class MCPConnectionStdio (line 73) | class MCPConnectionStdio(MCPConnection): method __init__ (line 76) | def __init__(self, command: str, args: list[str] = None, env: dict[str... method _create_context (line 82) | def _create_context(self): class MCPConnectionSSE (line 88) | class MCPConnectionSSE(MCPConnection): method __init__ (line 91) | def __init__(self, url: str, headers: dict[str, str] = None): method _create_context (line 96) | def _create_context(self): class MCPConnectionHTTP (line 100) | class MCPConnectionHTTP(MCPConnection): method __init__ (line 103) | def __init__(self, url: str, headers: dict[str, str] = None): method _create_context (line 108) | def _create_context(self): function create_connection (line 112) | def create_connection( FILE: skills/mcp-builder/scripts/evaluation.py function parse_evaluation_file (line 56) | def parse_evaluation_file(file_path: Path) -> list[dict[str, Any]]: function extract_xml_content (line 79) | def extract_xml_content(text: str, tag: str) -> str | None: function agent_loop (line 86) | async def agent_loop( function evaluate_single_task (line 154) | async def evaluate_single_task( function run_evaluation (line 220) | async def run_evaluation( function parse_headers (line 275) | def parse_headers(header_list: list[str]) -> dict[str, str]: function parse_env_vars (line 290) | def parse_env_vars(env_list: list[str]) -> dict[str, str]: function main (line 305) | async def main(): FILE: skills/pdf/scripts/check_bounding_boxes.py class RectAndField (line 9) | class RectAndField: function get_bounding_box_messages (line 15) | def get_bounding_box_messages(fields_json_stream) -> list[str]: FILE: skills/pdf/scripts/convert_pdf_to_images.py function convert (line 9) | def convert(pdf_path, output_dir, max_dim=1000): FILE: skills/pdf/scripts/create_validation_image.py function create_validation_image (line 9) | def create_validation_image(page_number, fields_json_path, input_path, o... FILE: skills/pdf/scripts/extract_form_field_info.py function get_full_annotation_field_id (line 9) | def get_full_annotation_field_id(annotation): function make_field_dict (line 19) | def make_field_dict(field, field_id): function get_field_info (line 47) | def get_field_info(reader: PdfReader): function write_field_info (line 110) | def write_field_info(pdf_path: str, json_output_path: str): FILE: skills/pdf/scripts/extract_form_structure.py function extract_form_structure (line 20) | def extract_form_structure(pdf_path): function main (line 91) | def main(): FILE: skills/pdf/scripts/fill_fillable_fields.py function fill_pdf_fields (line 11) | def fill_pdf_fields(input_pdf_path: str, fields_json_path: str, output_p... function validation_error_for_field_value (line 55) | def validation_error_for_field_value(field_info, field_value): function monkeypatch_pydpf_method (line 74) | def monkeypatch_pydpf_method(): FILE: skills/pdf/scripts/fill_pdf_form_with_annotations.py function transform_from_image_coords (line 10) | def transform_from_image_coords(bbox, image_width, image_height, pdf_wid... function transform_from_pdf_coords (line 23) | def transform_from_pdf_coords(bbox, pdf_height): function fill_pdf_form (line 33) | def fill_pdf_form(input_pdf_path, fields_json_path, output_pdf_path): FILE: skills/pptx/scripts/add_slide.py function get_next_slide_number (line 27) | def get_next_slide_number(slides_dir: Path) -> int: function create_slide_from_layout (line 33) | def create_slide_from_layout(unpacked_dir: Path, layout_file: str) -> None: function duplicate_slide (line 90) | def duplicate_slide(unpacked_dir: Path, source: str) -> None: function _add_to_content_types (line 130) | def _add_to_content_types(unpacked_dir: Path, dest: str) -> None: function _add_to_presentation_rels (line 141) | def _add_to_presentation_rels(unpacked_dir: Path, dest: str) -> str: function _get_next_slide_id (line 158) | def _get_next_slide_id(unpacked_dir: Path) -> int: function parse_source (line 165) | def parse_source(source: str) -> tuple[str, str | None]: FILE: skills/pptx/scripts/clean.py function get_slides_in_sldidlst (line 27) | def get_slides_in_sldidlst(unpacked_dir: Path) -> set[str]: function remove_orphaned_slides (line 49) | def remove_orphaned_slides(unpacked_dir: Path) -> list[str]: function remove_trash_directory (line 91) | def remove_trash_directory(unpacked_dir: Path) -> list[str]: function get_slide_referenced_files (line 106) | def get_slide_referenced_files(unpacked_dir: Path) -> set: function remove_orphaned_rels_files (line 128) | def remove_orphaned_rels_files(unpacked_dir: Path) -> list[str]: function get_referenced_files (line 153) | def get_referenced_files(unpacked_dir: Path) -> set: function remove_orphaned_files (line 171) | def remove_orphaned_files(unpacked_dir: Path, referenced: set) -> list[s... function update_content_types (line 221) | def update_content_types(unpacked_dir: Path, removed_files: list[str]) -... function clean_unused_files (line 241) | def clean_unused_files(unpacked_dir: Path) -> list[str]: FILE: skills/pptx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: skills/pptx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: skills/pptx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: skills/pptx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: skills/pptx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: skills/pptx/scripts/office/validate.py function main (line 25) | def main(): FILE: skills/pptx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: skills/pptx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: skills/pptx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: skills/pptx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: skills/pptx/scripts/thumbnail.py function main (line 40) | def main(): function get_slide_info (line 95) | def get_slide_info(pptx_path: Path) -> list[dict]: function build_slide_list (line 121) | def build_slide_list( function create_hidden_placeholder (line 149) | def create_hidden_placeholder(size: tuple[int, int]) -> Image.Image: function convert_to_images (line 158) | def convert_to_images(pptx_path: Path, temp_dir: Path) -> list[Path]: function create_grids (line 196) | def create_grids( function create_grid (line 225) | def create_grid( FILE: skills/slack-gif-creator/core/easing.py function linear (line 12) | def linear(t: float) -> float: function ease_in_quad (line 17) | def ease_in_quad(t: float) -> float: function ease_out_quad (line 22) | def ease_out_quad(t: float) -> float: function ease_in_out_quad (line 27) | def ease_in_out_quad(t: float) -> float: function ease_in_cubic (line 34) | def ease_in_cubic(t: float) -> float: function ease_out_cubic (line 39) | def ease_out_cubic(t: float) -> float: function ease_in_out_cubic (line 44) | def ease_in_out_cubic(t: float) -> float: function ease_in_bounce (line 51) | def ease_in_bounce(t: float) -> float: function ease_out_bounce (line 56) | def ease_out_bounce(t: float) -> float: function ease_in_out_bounce (line 71) | def ease_in_out_bounce(t: float) -> float: function ease_in_elastic (line 78) | def ease_in_elastic(t: float) -> float: function ease_out_elastic (line 85) | def ease_out_elastic(t: float) -> float: function ease_in_out_elastic (line 92) | def ease_in_out_elastic(t: float) -> float: function get_easing (line 117) | def get_easing(name: str = "linear"): function interpolate (line 122) | def interpolate(start: float, end: float, t: float, easing: str = "linea... function ease_back_in (line 140) | def ease_back_in(t: float) -> float: function ease_back_out (line 147) | def ease_back_out(t: float) -> float: function ease_back_in_out (line 154) | def ease_back_in_out(t: float) -> float: function apply_squash_stretch (line 163) | def apply_squash_stretch( function calculate_arc_motion (line 195) | def calculate_arc_motion( FILE: skills/slack-gif-creator/core/frame_composer.py function create_blank_frame (line 15) | def create_blank_frame( function draw_circle (line 32) | def draw_circle( function draw_text (line 61) | def draw_text( function create_gradient_background (line 99) | def create_gradient_background( function draw_star (line 137) | def draw_star( FILE: skills/slack-gif-creator/core/gif_builder.py class GIFBuilder (line 17) | class GIFBuilder: method __init__ (line 20) | def __init__(self, width: int = 480, height: int = 480, fps: int = 15): method add_frame (line 34) | def add_frame(self, frame: np.ndarray | Image.Image): method add_frames (line 54) | def add_frames(self, frames: list[np.ndarray | Image.Image]): method optimize_colors (line 59) | def optimize_colors( method deduplicate_frames (line 124) | def deduplicate_frames(self, threshold: float = 0.9995) -> int: method save (line 160) | def save( method clear (line 267) | def clear(self): FILE: skills/slack-gif-creator/core/validators.py function validate_gif (line 11) | def validate_gif( function is_slack_ready (line 121) | def is_slack_ready( FILE: skills/webapp-testing/examples/console_logging.py function handle_console_message (line 14) | def handle_console_message(msg): FILE: skills/webapp-testing/scripts/with_server.py function is_server_ready (line 23) | def is_server_ready(port, timeout=30): function main (line 35) | def main(): FILE: skills/xlsx/scripts/office/helpers/merge_runs.py function merge_runs (line 16) | def merge_runs(input_dir: str) -> tuple[int, str]: function _find_elements (line 44) | def _find_elements(root, tag: str) -> list: function _get_child (line 59) | def _get_child(parent, tag: str): function _get_children (line 68) | def _get_children(parent, tag: str) -> list: function _is_adjacent (line 78) | def _is_adjacent(elem1, elem2) -> bool: function _remove_elements (line 93) | def _remove_elements(root, tag: str): function _strip_run_rsid_attrs (line 99) | def _strip_run_rsid_attrs(root): function _merge_runs_in (line 108) | def _merge_runs_in(container) -> int: function _first_child_run (line 128) | def _first_child_run(container): function _next_element_sibling (line 135) | def _next_element_sibling(node): function _next_sibling_run (line 144) | def _next_sibling_run(node): function _is_run (line 154) | def _is_run(node) -> bool: function _can_merge (line 159) | def _can_merge(run1, run2) -> bool: function _merge_run_content (line 170) | def _merge_run_content(target, source): function _consolidate_text (line 178) | def _consolidate_text(run): FILE: skills/xlsx/scripts/office/helpers/simplify_redlines.py function simplify_redlines (line 22) | def simplify_redlines(input_dir: str) -> tuple[int, str]: function _merge_tracked_changes_in (line 47) | def _merge_tracked_changes_in(container, tag: str) -> int: function _is_element (line 75) | def _is_element(node, tag: str) -> bool: function _get_author (line 80) | def _get_author(elem) -> str: function _can_merge_tracked (line 89) | def _can_merge_tracked(elem1, elem2) -> bool: function _merge_tracked_content (line 104) | def _merge_tracked_content(target, source): function _find_elements (line 111) | def _find_elements(root, tag: str) -> list: function get_tracked_change_authors (line 126) | def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: function _get_authors_from_docx (line 149) | def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: function infer_author (line 172) | def infer_author(modified_dir: Path, original_docx: Path, default: str =... FILE: skills/xlsx/scripts/office/pack.py function pack (line 24) | def pack( function _run_validation (line 69) | def _run_validation( function _condense_xml (line 108) | def _condense_xml(xml_file: Path) -> None: FILE: skills/xlsx/scripts/office/soffice.py function get_soffice_env (line 24) | def get_soffice_env() -> dict: function run_soffice (line 35) | def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: function _needs_shim (line 44) | def _needs_shim() -> bool: function _ensure_shim (line 53) | def _ensure_shim() -> Path: FILE: skills/xlsx/scripts/office/unpack.py function unpack (line 34) | def unpack( function _pretty_print_xml (line 82) | def _pretty_print_xml(xml_file: Path) -> None: function _escape_smart_quotes (line 91) | def _escape_smart_quotes(xml_file: Path) -> None: FILE: skills/xlsx/scripts/office/validate.py function main (line 25) | def main(): FILE: skills/xlsx/scripts/office/validators/base.py class BaseSchemaValidator (line 12) | class BaseSchemaValidator: method __init__ (line 94) | def __init__(self, unpacked_dir, original_file=None, verbose=False): method validate (line 109) | def validate(self): method repair (line 112) | def repair(self) -> int: method repair_whitespace_preservation (line 115) | def repair_whitespace_preservation(self) -> int: method validate_xml (line 143) | def validate_xml(self): method validate_namespaces (line 170) | def validate_namespaces(self): method validate_unique_ids (line 199) | def validate_unique_ids(self): method validate_file_references (line 289) | def validate_file_references(self): method validate_all_relationship_ids (line 385) | def validate_all_relationship_ids(self): method _get_expected_relationship_type (line 469) | def _get_expected_relationship_type(self, element_name): method validate_content_types (line 492) | def validate_content_types(self): method validate_file_against_xsd (line 598) | def validate_file_against_xsd(self, xml_file, verbose=False): method validate_against_xsd (line 636) | def validate_against_xsd(self): method _get_schema_path (line 685) | def _get_schema_path(self, xml_file): method _clean_ignorable_namespaces (line 703) | def _clean_ignorable_namespaces(self, xml_doc): method _remove_ignorable_elements (line 723) | def _remove_ignorable_elements(self, root): method _preprocess_for_mc_ignorable (line 742) | def _preprocess_for_mc_ignorable(self, xml_doc): method _validate_single_file_xsd (line 750) | def _validate_single_file_xsd(self, xml_file, base_path): method _get_original_file_errors (line 787) | def _get_original_file_errors(self, xml_file): method _remove_template_tags_from_text_nodes (line 814) | def _remove_template_tags_from_text_nodes(self, xml_doc): FILE: skills/xlsx/scripts/office/validators/docx.py class DOCXSchemaValidator (line 16) | class DOCXSchemaValidator(BaseSchemaValidator): method validate (line 24) | def validate(self): method validate_whitespace_preservation (line 66) | def validate_whitespace_preservation(self): method validate_deletions (line 112) | def validate_deletions(self): method count_paragraphs_in_unpacked (line 163) | def count_paragraphs_in_unpacked(self): method count_paragraphs_in_original (line 179) | def count_paragraphs_in_original(self): method validate_insertions (line 202) | def validate_insertions(self): method compare_paragraph_counts (line 243) | def compare_paragraph_counts(self): method _parse_id_value (line 251) | def _parse_id_value(self, val: str, base: int = 16) -> int: method validate_id_constraints (line 254) | def validate_id_constraints(self): method validate_comment_markers (line 298) | def validate_comment_markers(self): method repair (line 386) | def repair(self) -> int: method repair_durableId (line 391) | def repair_durableId(self) -> int: FILE: skills/xlsx/scripts/office/validators/pptx.py class PPTXSchemaValidator (line 10) | class PPTXSchemaValidator(BaseSchemaValidator): method validate (line 25) | def validate(self): method validate_uuid_ids (line 62) | def validate_uuid_ids(self): method _looks_like_uuid (line 100) | def _looks_like_uuid(self, value): method validate_slide_layout_ids (line 104) | def validate_slide_layout_ids(self): method validate_no_duplicate_slide_layouts (line 172) | def validate_no_duplicate_slide_layouts(self): method validate_notes_slide_references (line 210) | def validate_notes_slide_references(self): FILE: skills/xlsx/scripts/office/validators/redlining.py class RedliningValidator (line 11) | class RedliningValidator: method __init__ (line 13) | def __init__(self, unpacked_dir, original_docx, verbose=False, author=... method repair (line 22) | def repair(self) -> int: method validate (line 25) | def validate(self): method _generate_detailed_diff (line 104) | def _generate_detailed_diff(self, original_text, modified_text): method _get_git_word_diff (line 127) | def _get_git_word_diff(self, original_text, modified_text): method _remove_author_tracked_changes (line 198) | def _remove_author_tracked_changes(self, root): method _extract_text_content (line 229) | def _extract_text_content(self, root): FILE: skills/xlsx/scripts/recalc.py function has_gtimeout (line 32) | def has_gtimeout(): function setup_libreoffice_macro (line 42) | def setup_libreoffice_macro(): function recalc (line 70) | def recalc(filename, timeout=30): function main (line 164) | def main(): FILE: start.py function _configure_packaged_playwright_runtime (line 69) | def _configure_packaged_playwright_runtime() -> None: function main (line 101) | def main(): FILE: tests/image_read.py function main (line 4) | def main(img_path): FILE: tests/test_cheapclaw_service.py class CheapClawServiceTests (line 45) | class CheapClawServiceTests(unittest.TestCase): method setUp (line 46) | def setUp(self): method test_panel_store_bootstraps_layout (line 52) | def test_panel_store_bootstraps_layout(self): method test_record_social_message_updates_panel_and_history (line 62) | def test_record_social_message_updates_panel_and_history(self): method test_supervisor_input_contains_latest_user_text (line 87) | def test_supervisor_input_contains_latest_user_text(self): method test_supervisor_input_is_event_focused_not_path_heavy (line 109) | def test_supervisor_input_is_event_focused_not_path_heavy(self): method test_compute_next_scheduled_run_supports_daily_and_weekly (line 161) | def test_compute_next_scheduled_run_supports_daily_and_weekly(self): method test_message_ids_can_be_bound_to_task (line 177) | def test_message_ids_can_be_bound_to_task(self): method test_sdk_runtime_introspection_is_public (line 205) | def test_sdk_runtime_introspection_is_public(self): method test_send_file_tool_queues_attachment (line 216) | def test_send_file_tool_queues_attachment(self): method test_reconcile_task_statuses_updates_panel_from_share_history (line 244) | def test_reconcile_task_statuses_updates_panel_from_share_history(self): method test_telegram_group_message_detects_mention_entity (line 283) | def test_telegram_group_message_detects_mention_entity(self): method test_telegram_group_message_detects_reply_to_bot (line 293) | def test_telegram_group_message_detects_reply_to_bot(self): method test_telegram_poll_events_accepts_supergroup_mention (line 303) | def test_telegram_poll_events_accepts_supergroup_mention(self): method test_bootstrap_installs_agent_systems_tools_and_skill (line 326) | def test_bootstrap_installs_agent_systems_tools_and_skill(self): method test_bootstrap_removes_bundled_systems_even_without_force (line 348) | def test_bootstrap_removes_bundled_systems_even_without_force(self): method test_start_task_rejects_supervisor_system (line 361) | def test_start_task_rejects_supervisor_system(self): method test_start_task_uses_default_exposed_skills_and_dispatch_timestamp (line 373) | def test_start_task_uses_default_exposed_skills_and_dispatch_timestamp... method test_runtime_registry_loads_cheapclaw_custom_tools_from_dynamic_tools_dir (line 402) | def test_runtime_registry_loads_cheapclaw_custom_tools_from_dynamic_to... method test_build_task_skills_overlay_creates_manifest (line 415) | def test_build_task_skills_overlay_creates_manifest(self): method test_update_task_preferences_persists_default_skills_and_mcp (line 431) | def test_update_task_preferences_persists_default_skills_and_mcp(self): method test_start_task_binds_panel_entry (line 466) | def test_start_task_binds_panel_entry(self): method test_start_task_falls_back_to_valid_worker_agent (line 507) | def test_start_task_falls_back_to_valid_worker_agent(self): method test_list_conversation_tasks_returns_recommended_task (line 535) | def test_list_conversation_tasks_returns_recommended_task(self): method test_add_task_message_appends_timestamp (line 590) | def test_add_task_message_appends_timestamp(self): method test_reset_task_public_api_clears_current_instructions (line 605) | def test_reset_task_public_api_clears_current_instructions(self): method test_external_copy_can_import_service_module (line 619) | def test_external_copy_can_import_service_module(self): method test_external_copy_can_import_custom_tool_module (line 634) | def test_external_copy_can_import_custom_tool_module(self): FILE: tests/test_code_tools_system_terminal.py function test_find_idle_terminal_window_id_returns_none_when_no_tagged_idle_tab (line 7) | def test_find_idle_terminal_window_id_returns_none_when_no_tagged_idle_t... function test_get_or_create_terminal_window_id_creates_fresh_window_when_all_tagged_tabs_busy (line 15) | def test_get_or_create_terminal_window_id_creates_fresh_window_when_all_... function test_launch_terminal_script_checks_busy_and_updates_cached_window (line 36) | def test_launch_terminal_script_checks_busy_and_updates_cached_window(mo... function test_launch_terminal_script_interrupts_busy_session_instead_of_creating_new_window (line 61) | def test_launch_terminal_script_interrupts_busy_session_instead_of_creat... FILE: tests/test_context_hooks.py class _DummyHierarchyManager (line 12) | class _DummyHierarchyManager: method __init__ (line 13) | def __init__(self): method get_context (line 16) | def get_context(self): method get_loaded_skills (line 19) | def get_loaded_skills(self, agent_id): method _save_context (line 22) | def _save_context(self, context): class _DummyLoader (line 26) | class _DummyLoader: class ContextHookTests (line 30) | class ContextHookTests(unittest.TestCase): method test_after_build_hook_can_modify_context_text (line 31) | def test_after_build_hook_can_modify_context_text(self): FILE: tests/test_file_tools.py function workspace (line 16) | def workspace(tmp_path): class TestFileReadTool (line 20) | class TestFileReadTool: method test_read_single_file_success (line 21) | def test_read_single_file_success(self, workspace): method test_read_single_file_not_found (line 31) | def test_read_single_file_not_found(self, workspace): method test_read_multiple_files_success (line 38) | def test_read_multiple_files_success(self, workspace): method test_read_empty_file (line 48) | def test_read_empty_file(self, workspace): method test_read_binary_file_error (line 57) | def test_read_binary_file_error(self, workspace): method test_read_with_line_range (line 68) | def test_read_with_line_range(self, workspace): method test_read_without_line_numbers (line 82) | def test_read_without_line_numbers(self, workspace): method test_read_missing_path_parameter (line 92) | def test_read_missing_path_parameter(self, workspace): method test_read_with_file_path_alias (line 100) | def test_read_with_file_path_alias(self, workspace): method test_read_multiple_files_partial_error (line 110) | def test_read_multiple_files_partial_error(self, workspace): class TestFileWriteTool (line 122) | class TestFileWriteTool: method test_write_file_success (line 123) | def test_write_file_success(self, workspace): method test_write_creates_parent_dirs (line 130) | def test_write_creates_parent_dirs(self, workspace): method test_write_reference_bib_forbidden (line 138) | def test_write_reference_bib_forbidden(self, workspace): method test_replace_lines_file_not_found (line 146) | def test_replace_lines_file_not_found(self, workspace): method test_append_file_success (line 159) | def test_append_file_success(self, workspace): method test_replace_lines_success (line 169) | def test_replace_lines_success(self, workspace): class TestDirListTool (line 193) | class TestDirListTool: method test_list_dir_success (line 194) | def test_list_dir_success(self, workspace): method test_list_dir_not_found (line 205) | def test_list_dir_not_found(self, workspace): method test_list_not_a_directory (line 213) | def test_list_not_a_directory(self, workspace): method test_list_empty_directory (line 223) | def test_list_empty_directory(self, workspace): method test_list_recursive_success (line 233) | def test_list_recursive_success(self, workspace): class TestDirCreateTool (line 244) | class TestDirCreateTool: method test_create_dir_success (line 245) | def test_create_dir_success(self, workspace): class TestFileMoveTool (line 252) | class TestFileMoveTool: method test_move_file_success (line 253) | def test_move_file_success(self, workspace): method test_copy_file_success (line 265) | def test_copy_file_success(self, workspace): class TestFileDeleteTool (line 277) | class TestFileDeleteTool: method test_delete_file_success (line 278) | def test_delete_file_success(self, workspace): method test_delete_dir_success (line 288) | def test_delete_dir_success(self, workspace): method test_delete_not_found (line 299) | def test_delete_not_found(self, workspace): FILE: tests/test_image_read_message.py function load_and_compress_image (line 24) | def load_and_compress_image(image_path: Path) -> tuple: function build_messages (line 75) | def build_messages(data_uri: str, query: str) -> list: function print_messages_structure (line 132) | def print_messages_structure(messages: list): function call_llm (line 155) | def call_llm(messages: list): FILE: tests/test_kimi_stream_compat.py class KimiStreamCompatTests (line 14) | class KimiStreamCompatTests(unittest.TestCase): method setUp (line 15) | def setUp(self): method _restore_user_data_root (line 25) | def _restore_user_data_root(self): method test_embedded_tool_call_sections_are_hidden_from_visible_text (line 31) | def test_embedded_tool_call_sections_are_hidden_from_visible_text(self): method test_kimi_raw_marker_stream_falls_back_to_non_stream_and_parses_tool (line 52) | def test_kimi_raw_marker_stream_falls_back_to_non_stream_and_parses_to... FILE: tests/test_llm_client_lite_openrouter.py class LLMClientLiteOpenRouterTests (line 9) | class LLMClientLiteOpenRouterTests(unittest.TestCase): method test_openrouter_model_name_is_normalized (line 10) | def test_openrouter_model_name_is_normalized(self): method test_prefixed_openrouter_model_name_is_left_unchanged (line 19) | def test_prefixed_openrouter_model_name_is_left_unchanged(self): method test_non_openrouter_base_url_does_not_change_model_name (line 28) | def test_non_openrouter_base_url_does_not_change_model_name(self): FILE: tests/test_llm_client_resilience.py class LLMClientResilienceTests (line 14) | class LLMClientResilienceTests(unittest.TestCase): method setUp (line 15) | def setUp(self): method _restore_user_data_root (line 25) | def _restore_user_data_root(self): method test_first_chunk_timeout_returns_quickly_without_waiting_for_worker (line 31) | def test_first_chunk_timeout_returns_quickly_without_waiting_for_worke... method test_non_retriable_error_stops_retry_loop_early (line 58) | def test_non_retriable_error_stops_retry_loop_early(self): method test_retry_emits_stream_reset_before_second_attempt (line 87) | def test_retry_emits_stream_reset_before_second_attempt(self): FILE: tests/test_llm_config_builder.py class LlmConfigBuilderTests (line 14) | class LlmConfigBuilderTests(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_unified_profile_builds_all_model_slots (line 20) | def test_unified_profile_builds_all_model_slots(self): method test_split_profiles_support_local_model_without_api_key (line 40) | def test_split_profiles_support_local_model_without_api_key(self): method test_sdk_materializes_model_profiles_to_runtime_yaml (line 63) | def test_sdk_materializes_model_profiles_to_runtime_yaml(self): FILE: tests/test_llm_debug_output.py class LlmDebugOutputTests (line 14) | class LlmDebugOutputTests(unittest.TestCase): method setUp (line 15) | def setUp(self): method _restore_user_data_root (line 25) | def _restore_user_data_root(self): method test_task_scoped_debug_records_append_to_conversation_jsonl (line 31) | def test_task_scoped_debug_records_append_to_conversation_jsonl(self): method test_debug_records_without_task_fall_back_to_runtime_debug_dir (line 69) | def test_debug_records_without_task_fall_back_to_runtime_debug_dir(self): FILE: tests/test_reasoning_modes.py class _DummyEmitter (line 10) | class _DummyEmitter: method dispatch (line 11) | def dispatch(self, _event): class ReasoningModeTests (line 15) | class ReasoningModeTests(unittest.TestCase): method _bare_executor (line 16) | def _bare_executor(self): method test_build_messages_includes_react_reflection_and_text_only_turns (line 29) | def test_build_messages_includes_react_reflection_and_text_only_turns(... method test_run_react_reflection_persists_text_to_action_history (line 72) | def test_run_react_reflection_persists_text_to_action_history(self): method test_model_output_payload_prefers_last_execution_turn_over_react_reflection (line 105) | def test_model_output_payload_prefers_last_execution_turn_over_react_r... FILE: tests/test_sdk_observability.py class _FakeEventEmitter (line 18) | class _FakeEventEmitter: method __init__ (line 19) | def __init__(self): method dispatch (line 22) | def dispatch(self, event): class _FakeAgentExecutor (line 26) | class _FakeAgentExecutor: method __init__ (line 30) | def __init__( method run (line 49) | def run(self, task_id, user_input): class SDKObservabilityTests (line 100) | class SDKObservabilityTests(unittest.TestCase): method setUp (line 101) | def setUp(self): method test_run_can_collect_structured_events_and_callback (line 106) | def test_run_can_collect_structured_events_and_callback(self): method test_run_can_optionally_collect_stream_token_events (line 135) | def test_run_can_optionally_collect_stream_token_events(self): method test_llm_stream_callback_maps_reset_events_and_attempts (line 162) | def test_llm_stream_callback_maps_reset_events_and_attempts(self): method test_run_can_override_max_turns_via_sdk_parameter (line 195) | def test_run_can_override_max_turns_via_sdk_parameter(self): method test_run_raise_on_error_turns_error_result_into_exception (line 213) | def test_run_raise_on_error_turns_error_result_into_exception(self): method test_task_trace_reads_agent_action_files (line 242) | def test_task_trace_reads_agent_action_files(self): method test_agent_executor_returns_error_result_in_library_mode (line 294) | def test_agent_executor_returns_error_result_in_library_mode(self): method test_agent_executor_can_raise_catchable_exception_in_library_mode (line 314) | def test_agent_executor_can_raise_catchable_exception_in_library_mode(... method test_agent_executor_result_enrichment_exposes_raw_model_outputs (line 334) | def test_agent_executor_result_enrichment_exposes_raw_model_outputs(se... FILE: tests/test_sdk_runtime_paths.py class SDKRuntimePathTests (line 24) | class SDKRuntimePathTests(unittest.TestCase): method setUp (line 25) | def setUp(self): method test_default_root_semantics_follow_current_env (line 30) | def test_default_root_semantics_follow_current_env(self): method test_custom_user_data_root_applies_to_sdk_and_runtime_control (line 48) | def test_custom_user_data_root_applies_to_sdk_and_runtime_control(self): method test_task_tools_follow_custom_user_data_root (line 68) | def test_task_tools_follow_custom_user_data_root(self): method test_user_data_root_alone_is_enough_for_agent_library_loading (line 93) | def test_user_data_root_alone_is_enough_for_agent_library_loading(self): method test_sdk_requires_explicit_task_id (line 113) | def test_sdk_requires_explicit_task_id(self): method test_runtime_settings_support_new_reasoning_fields (line 118) | def test_runtime_settings_support_new_reasoning_fields(self): method test_sdk_build_launch_config_includes_visible_skills_and_reasoning_fields (line 159) | def test_sdk_build_launch_config_includes_visible_skills_and_reasoning... method test_run_explicit_reasoning_overrides_take_priority (line 177) | def test_run_explicit_reasoning_overrides_take_priority(self): method test_sdk_instances_do_not_leak_user_data_roots (line 240) | def test_sdk_instances_do_not_leak_user_data_roots(self): method test_run_returns_busy_when_task_already_running (line 263) | def test_run_returns_busy_when_task_already_running(self): method test_background_task_launch_uses_user_data_root (line 276) | def test_background_task_launch_uses_user_data_root(self): method test_task_snapshot_falls_back_to_history_final_output (line 309) | def test_task_snapshot_falls_back_to_history_final_output(self): method test_tool_hooks_are_exposed_in_launch_config (line 348) | def test_tool_hooks_are_exposed_in_launch_config(self): method test_context_hooks_are_exposed_in_launch_config (line 361) | def test_context_hooks_are_exposed_in_launch_config(self): method test_max_turns_is_exposed_in_launch_config (line 373) | def test_max_turns_is_exposed_in_launch_config(self): method test_add_message_resume_if_needed_uses_resume_when_stack_exists (line 383) | def test_add_message_resume_if_needed_uses_resume_when_stack_exists(se... method test_add_message_resume_if_needed_launches_new_task_when_stack_empty (line 419) | def test_add_message_resume_if_needed_launches_new_task_when_stack_emp... FILE: tests/test_task_history_index.py class _DummyHierarchyManager (line 16) | class _DummyHierarchyManager: method __init__ (line 17) | def __init__(self, context): method get_context (line 20) | def get_context(self): method _save_context (line 23) | def _save_context(self, context): class _DummyConfigLoader (line 27) | class _DummyConfigLoader: class TaskHistoryIndexTests (line 32) | class TaskHistoryIndexTests(unittest.TestCase): method setUp (line 33) | def setUp(self): method _sample_context (line 38) | def _sample_context(self, task_id: str): method test_sync_and_sql_search_return_instruction_bundle (line 72) | def test_sync_and_sql_search_return_instruction_bundle(self): method test_task_history_search_tool_reads_index (line 84) | def test_task_history_search_tool_reads_index(self): method test_task_history_records_default_returns_all_entries_for_task (line 96) | def test_task_history_records_default_returns_all_entries_for_task(self): method test_task_history_records_support_start_round (line 106) | def test_task_history_records_support_start_round(self): method test_recent_history_selection_uses_new_setting (line 132) | def test_recent_history_selection_uses_new_setting(self): FILE: tests/test_thinking_prompt_contract.py class _StubThinkingLLMClient (line 13) | class _StubThinkingLLMClient: method resolve_model (line 14) | def resolve_model(self, category, preferred_model=None): method resolve_tool_choice (line 17) | def resolve_tool_choice(self, category, model): method chat (line 20) | def chat(self, **kwargs): class ThinkingPromptContractTests (line 30) | class ThinkingPromptContractTests(unittest.TestCase): method setUp (line 31) | def setUp(self): method _restore_user_data_root (line 38) | def _restore_user_data_root(self): method test_thinking_system_prompt_requires_inner_content_only (line 44) | def test_thinking_system_prompt_requires_inner_content_only(self): method test_initial_analysis_request_requires_inner_content_only (line 53) | def test_initial_analysis_request_requires_inner_content_only(self): FILE: tests/test_tool_hooks.py class ToolHooksTests (line 15) | class ToolHooksTests(unittest.TestCase): method test_after_hook_triggers_with_result_filter (line 16) | def test_after_hook_triggers_with_result_filter(self): FILE: tests/test_web_ui_config_api.py function _load_web_server (line 15) | def _load_web_server(tmp_path): function _auth_client (line 26) | def _auth_client(app): function test_guided_config_roundtrip_and_run_env_list (line 35) | def test_guided_config_roundtrip_and_run_env_list(tmp_path): FILE: tool_server_lite/llm_client_lite.py class LLMClientLite (line 34) | class LLMClientLite: method __init__ (line 37) | def __init__(self, llm_config_path: str = None): method _parse_models (line 99) | def _parse_models(self, models_config: list, target_list: list, catego... method resolve_model (line 121) | def resolve_model(self, category: str = "execution", preferred: Option... method _get_model_api_key (line 137) | def _get_model_api_key(self, model: str) -> str: method _get_model_base_url (line 141) | def _get_model_base_url(self, model: str) -> str: method _is_openrouter_base_url (line 146) | def _is_openrouter_base_url(base_url: Optional[str]) -> bool: method _normalize_openrouter_model_name (line 150) | def _normalize_openrouter_model_name(model: str, base_url: Optional[st... method _extract_image_urls_from_completion_message (line 161) | def _extract_image_urls_from_completion_message(message) -> list[str]: method _create_image_via_litellm_completion (line 186) | def _create_image_via_litellm_completion( method _create_image_via_openrouter_sdk (line 258) | def _create_image_via_openrouter_sdk( method reload_config (line 341) | def reload_config(self): method vision_query (line 381) | def vision_query( method create_image (line 463) | def create_image( method audio_query (line 542) | def audio_query( method text_query (line 658) | def text_query( function get_llm_client (line 715) | def get_llm_client(force_reload: bool = False) -> LLMClientLite: function reload_llm_client (line 763) | def reload_llm_client() -> LLMClientLite: FILE: tool_server_lite/registry.py function _build_builtin_factories (line 29) | def _build_builtin_factories() -> Dict[str, ToolFactory]: function get_builtin_tool_factories (line 152) | def get_builtin_tool_factories() -> Dict[str, ToolFactory]: function _load_module_from_path (line 156) | def _load_module_from_path(file_path: Path) -> types.ModuleType: function _is_valid_custom_tool_class (line 166) | def _is_valid_custom_tool_class(obj: Any, module_name: str) -> bool: function _discover_custom_tool_class (line 180) | def _discover_custom_tool_class(module: types.ModuleType) -> type: function _instantiate_custom_tool (line 192) | def _instantiate_custom_tool(file_path: Path) -> Tuple[str, Any, Dict[st... function build_runtime_registry (line 218) | def build_runtime_registry() -> Tuple[Dict[str, Any], Dict[str, Dict[str... function reload_runtime_registry (line 292) | def reload_runtime_registry() -> Tuple[Dict[str, Any], Dict[str, Dict[st... function get_runtime_registry (line 298) | def get_runtime_registry(force_reload: bool = False) -> Dict[str, Any]: function get_runtime_registry_metadata (line 305) | def get_runtime_registry_metadata(force_reload: bool = False) -> Dict[st... function get_runtime_registry_failures (line 312) | def get_runtime_registry_failures(force_reload: bool = False) -> List[Di... FILE: tool_server_lite/tools/arxiv_tools.py class ArxivSearchTool (line 20) | class ArxivSearchTool(BaseTool): method execute (line 23) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/audio_tools.py class AudioTool (line 16) | class AudioTool(BaseTool): method execute (line 19) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/browser_tools.py function _random_delay (line 30) | def _random_delay(min_ms: int = 50, max_ms: int = 150) -> float: function _generate_bezier_curve (line 35) | def _generate_bezier_curve(start: Tuple[float, float], end: Tuple[float,... function _human_like_mouse_move (line 88) | async def _human_like_mouse_move(page: Page, target_x: float, target_y: ... function _human_like_click (line 115) | async def _human_like_click(page: Page, selector: str = None, x: float =... function _human_like_type (line 159) | async def _human_like_type(page: Page, selector: str, text: str, delay_r... function _auto_snapshot_loop (line 184) | async def _auto_snapshot_loop(browser_id: str, task_id: str, interval_se... function _get_browser_dir (line 210) | def _get_browser_dir(task_id: str, browser_id: str) -> Path: function _save_screenshot (line 218) | async def _save_screenshot(page: Page, browser_id: str, task_id: str): function _save_page_snapshot (line 226) | async def _save_page_snapshot(page: Page, browser_id: str, task_id: str): function _save_page_content (line 233) | async def _save_page_content(page: Page, browser_id: str, task_id: str): function _save_accessibility_tree (line 250) | async def _save_accessibility_tree(page: Page, browser_id: str, task_id:... function _flatten_accessibility_tree (line 400) | def _flatten_accessibility_tree(node: dict, elements: list = None) -> list: class BrowserLaunchTool (line 428) | class BrowserLaunchTool(BaseTool): method execute_async (line 431) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserListSessionsTool (line 592) | class BrowserListSessionsTool(BaseTool): method execute_async (line 595) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserCloseTool (line 660) | class BrowserCloseTool(BaseTool): method execute_async (line 663) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserNewPageTool (line 720) | class BrowserNewPageTool(BaseTool): method execute_async (line 723) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserSwitchPageTool (line 775) | class BrowserSwitchPageTool(BaseTool): method execute_async (line 778) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserClosePageTool (line 835) | class BrowserClosePageTool(BaseTool): method execute_async (line 838) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserListPagesTool (line 910) | class BrowserListPagesTool(BaseTool): method execute_async (line 913) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserNavigateTool (line 971) | class BrowserNavigateTool(BaseTool): method execute_async (line 974) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserSnapshotTool (line 1033) | class BrowserSnapshotTool(BaseTool): method execute_async (line 1036) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserExecuteJsTool (line 1108) | class BrowserExecuteJsTool(BaseTool): method execute_async (line 1111) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserClickTool (line 1183) | class BrowserClickTool(BaseTool): method execute_async (line 1186) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserTypeTool (line 1253) | class BrowserTypeTool(BaseTool): method execute_async (line 1256) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserWaitTool (line 1331) | class BrowserWaitTool(BaseTool): method execute_async (line 1334) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserMouseMoveTool (line 1421) | class BrowserMouseMoveTool(BaseTool): method execute_async (line 1424) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserMouseClickCoordsTool (line 1481) | class BrowserMouseClickCoordsTool(BaseTool): method execute_async (line 1484) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserDragAndDropTool (line 1554) | class BrowserDragAndDropTool(BaseTool): method execute_async (line 1557) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserHoverTool (line 1645) | class BrowserHoverTool(BaseTool): method execute_async (line 1648) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... class BrowserScrollTool (line 1739) | class BrowserScrollTool(BaseTool): method execute_async (line 1742) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... FILE: tool_server_lite/tools/code_tools.py function has_running_background_processes (line 31) | def has_running_background_processes(task_id: str = None) -> bool: class ExecuteCodeTool (line 54) | class ExecuteCodeTool(BaseTool): method _create_venv (line 57) | def _create_venv(self, venv_path: Path) -> Tuple[bool, str]: method execute (line 117) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _get_python_exec (line 207) | def _get_python_exec(self, workspace: Path, use_venv: bool) -> Path: method _execute_python (line 231) | def _execute_python(self, workspace: Path, code_file: Path, exec_dir: ... method _execute_python_background (line 285) | def _execute_python_background(self, workspace: Path, code_file: Path,... class PipInstallTool (line 345) | class PipInstallTool(BaseTool): method _create_venv (line 348) | def _create_venv(self, venv_path: Path) -> Tuple[bool, str]: method execute (line 405) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class ExecuteCommandTool (line 497) | class ExecuteCommandTool(BaseTool): method _is_command_safe (line 547) | def _is_command_safe(self, command: str) -> tuple[bool, str]: method _use_system_terminal_mode (line 595) | def _use_system_terminal_mode(self) -> bool: method _escape_applescript_str (line 600) | def _escape_applescript_str(self, s: str) -> str: method _run_osascript (line 603) | def _run_osascript(self, script: str, timeout: int = 10) -> str: method _find_idle_terminal_window_id (line 616) | def _find_idle_terminal_window_id(self) -> Optional[int]: method _terminal_window_exists (line 643) | def _terminal_window_exists(self, window_id: int) -> bool: method _close_tagged_terminal_windows (line 654) | def _close_tagged_terminal_windows(self) -> None: method _list_tagged_terminal_ttys (line 688) | def _list_tagged_terminal_ttys(self) -> list[str]: method _force_reset_tagged_terminal_windows (line 714) | def _force_reset_tagged_terminal_windows(self) -> None: method _wait_for_terminal_window_idle (line 742) | def _wait_for_terminal_window_idle( method _get_tagged_terminal_tty (line 780) | def _get_tagged_terminal_tty(self, window_id: int) -> Optional[str]: method _interrupt_terminal_window_processes (line 797) | def _interrupt_terminal_window_processes(self, window_id: int) -> bool: method _get_or_create_terminal_window_id (line 867) | def _get_or_create_terminal_window_id(self, force_new: bool = False) -... method _launch_terminal_script (line 908) | def _launch_terminal_script(self, script_path: Path) -> int: method _build_terminal_paths (line 984) | def _build_terminal_paths(self, workspace: Path, output_path: Optional... method _write_terminal_script (line 994) | def _write_terminal_script( method _run_via_terminal_foreground (line 1011) | def _run_via_terminal_foreground( method _run_via_terminal_background (line 1073) | def _run_via_terminal_background( method execute (line 1115) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class GrepTool (line 1312) | class GrepTool(BaseTool): method execute (line 1315) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class CodeProcessManagerTool (line 1478) | class CodeProcessManagerTool(BaseTool): method execute (line 1481) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _list_processes (line 1517) | def _list_processes(self, task_id: str) -> Dict[str, Any]: method _kill_process (line 1569) | def _kill_process(self, task_id: str, process_id: str) -> Dict[str, Any]: FILE: tool_server_lite/tools/convert_tools.py function load_convert_api_config (line 19) | def load_convert_api_config() -> str: class MarkdownToPdfTool (line 41) | class MarkdownToPdfTool(BaseTool): method execute (line 44) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class TexToPdfTool (line 118) | class TexToPdfTool(BaseTool): method execute (line 121) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class MarkdownToDocxTool (line 234) | class MarkdownToDocxTool(BaseTool): method execute (line 237) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/document_tools.py class ParseDocumentTool (line 12) | class ParseDocumentTool(BaseTool): method execute (line 15) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _parse_pdf (line 90) | def _parse_pdf(self, pdf_path: Path, task_id: str, extract_images: boo... method _parse_word (line 150) | def _parse_word(self, doc_path: Path, task_id: str, extract_images: bo... method _table_to_markdown (line 202) | def _table_to_markdown(self, table_data: List[List[str]]) -> str: method _save_pdf_image (line 224) | def _save_pdf_image(self, page, img_info: Dict, task_id: str, images_d... FILE: tool_server_lite/tools/file_tools.py class BaseTool (line 13) | class BaseTool: method execute (line 16) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... function get_abs_path (line 21) | def get_abs_path(task_id: str, relative_path: str) -> Path: function detect_encoding (line 38) | def detect_encoding(file_path: Path) -> str: function is_binary_file (line 67) | def is_binary_file(file_path: Path) -> bool: class FileReadTool (line 88) | class FileReadTool(BaseTool): method execute (line 91) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _read_single_file (line 140) | def _read_single_file(self, task_id: str, path: str, parameters: Dict[... method _read_multiple_files (line 204) | def _read_multiple_files(self, task_id: str, paths: list, parameters: ... class FileWriteTool (line 299) | class FileWriteTool(BaseTool): method execute (line 302) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class DirListTool (line 384) | class DirListTool(BaseTool): method execute (line 387) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _list_recursive (line 437) | def _list_recursive(self, root: Path, current: Path, indent: int = 0) ... class DirCreateTool (line 461) | class DirCreateTool(BaseTool): method execute (line 464) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class FileMoveTool (line 491) | class FileMoveTool(BaseTool): method execute (line 494) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class FileDeleteTool (line 549) | class FileDeleteTool(BaseTool): method execute (line 552) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/human_tools.py class HumanInLoopTool (line 20) | class HumanInLoopTool(BaseTool): method execute_async (line 23) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... function get_hil_status (line 113) | def get_hil_status(hil_id: str) -> Dict[str, Any]: function respond_hil_task (line 131) | def respond_hil_task(hil_id: str, response: str) -> Dict[str, Any]: function list_hil_tasks (line 150) | def list_hil_tasks() -> Dict[str, Any]: function get_hil_task_for_workspace (line 167) | def get_hil_task_for_workspace(task_id: str) -> Dict[str, Any]: function create_tool_confirmation (line 185) | def create_tool_confirmation(confirm_id: str, task_id: str, tool_name: s... function get_tool_confirmation_status (line 212) | def get_tool_confirmation_status(confirm_id: str) -> Dict[str, Any]: function respond_tool_confirmation (line 232) | def respond_tool_confirmation(confirm_id: str, approved: bool) -> Dict[s... function get_tool_confirmation_for_workspace (line 251) | def get_tool_confirmation_for_workspace(task_id: str) -> Dict[str, Any]: function list_tool_confirmations (line 268) | def list_tool_confirmations() -> Dict[str, Any]: FILE: tool_server_lite/tools/paper_tools.py class PaperAnalyzeTool (line 14) | class PaperAnalyzeTool(BaseTool): method execute (line 17) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/powerpoint_tools.py class ImagesToPptTool (line 20) | class ImagesToPptTool(BaseTool): method execute (line 23) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/reference_tools.py class ReferenceListTool (line 13) | class ReferenceListTool(BaseTool): method execute (line 16) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class ReferenceAddTool (line 64) | class ReferenceAddTool(BaseTool): method execute (line 67) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class ReferenceDeleteTool (line 157) | class ReferenceDeleteTool(BaseTool): method execute (line 160) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _parse_bib_entries (line 254) | def _parse_bib_entries(self, content: str) -> List[Dict[str, str]]: FILE: tool_server_lite/tools/skill_tools.py class LoadSkillTool (line 15) | class LoadSkillTool(BaseTool): method __init__ (line 23) | def __init__(self): method execute (line 27) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class OffloadSkillTool (line 119) | class OffloadSkillTool(BaseTool): method execute (line 125) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class FreshTool (line 141) | class FreshTool(BaseTool): method execute (line 151) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/task_tools.py class AddMessageTool (line 30) | class AddMessageTool(BaseTool): method execute (line 35) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class StartBackgroundTaskTool (line 80) | class StartBackgroundTaskTool(BaseTool): method execute (line 85) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class TaskShareContextPathTool (line 136) | class TaskShareContextPathTool(BaseTool): method execute (line 141) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class ListTaskIdsTool (line 163) | class ListTaskIdsTool(BaseTool): method execute (line 168) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class TaskHistorySearchTool (line 194) | class TaskHistorySearchTool(BaseTool): method execute (line 199) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/vision_tools.py class ImageReadTool (line 22) | class ImageReadTool(BaseTool): method __init__ (line 31) | def __init__(self): method multimodal (line 36) | def multimodal(self) -> bool: method execute (line 49) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... method _compress_single_image (line 122) | def _compress_single_image(self, abs_image_path: Path) -> tuple: method _execute_multimodal_batch (line 197) | def _execute_multimodal_batch(self, abs_paths: list, query: str) -> Di... method _execute_text_only (line 231) | def _execute_text_only(self, abs_image_path: Path, image_path: str, qu... class VisionTool (line 274) | class VisionTool(BaseTool): method execute (line 277) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class CreateImageTool (line 356) | class CreateImageTool(BaseTool): method execute (line 359) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: tool_server_lite/tools/web_tools.py function _get_field (line 36) | def _get_field(obj: Any, name: str, default: Any = None) -> Any: class CrawlPageTool (line 51) | class CrawlPageTool(BaseTool): method _crawl4ai_unavailable_error (line 55) | def _crawl4ai_unavailable_error() -> str: method _normalize_runtime_error_message (line 65) | def _normalize_runtime_error_message(error: Exception) -> str: method execute_async (line 77) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... method _crawl_page (line 138) | async def _crawl_page(self, url: str) -> str: class GoogleScholarSearchTool (line 188) | class GoogleScholarSearchTool(BaseTool): method execute_async (line 191) | async def execute_async(self, task_id: str, parameters: Dict[str, Any]... method _crawl_scholar (line 289) | async def _crawl_scholar(self, query: str, year_low: int, year_high: i... class WebSearchTool (line 330) | class WebSearchTool(BaseTool): method execute (line 333) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... class FileDownloadTool (line 415) | class FileDownloadTool(BaseTool): method execute (line 418) | def execute(self, task_id: str, parameters: Dict[str, Any]) -> Dict[st... FILE: utils/cli_mode.py function t (line 45) | def t(key: str, lang: str = 'en') -> str: class InteractiveCLI (line 221) | class InteractiveCLI: method __init__ (line 224) | def __init__(self, task_id: str, agent_system: str = "Test_agent"): method t (line 258) | def t(self, key: str) -> str: method _load_available_agents (line 262) | def _load_available_agents(self): method _check_hil_task (line 279) | def _check_hil_task(self) -> dict: method _respond_hil_task (line 283) | def _respond_hil_task(self, hil_id: str, response: str) -> bool: method _check_tool_confirmation (line 291) | def _check_tool_confirmation(self) -> dict: method _respond_tool_confirmation (line 295) | def _respond_tool_confirmation(self, confirm_id: str, approved: bool) ... method _get_interrupted_task (line 303) | def _get_interrupted_task(self) -> dict: method _start_hil_checker (line 347) | def _start_hil_checker(self): method _send_control_message (line 387) | def _send_control_message(self, payload: dict) -> bool: method _show_hil_prompt (line 398) | def _show_hil_prompt(self, hil_id: str, instruction: str): method _show_tool_confirmation_prompt (line 410) | def _show_tool_confirmation_prompt(self, confirm_id: str, tool_name: s... method get_banner_text (line 430) | def get_banner_text(self): method show_banner (line 448) | def show_banner(self): method parse_input (line 483) | def parse_input(self, user_input: str): method stop_current_task (line 517) | def stop_current_task(self): method run_task (line 543) | def run_task(self, agent_name: str, user_input: str): method get_bottom_toolbar (line 831) | def get_bottom_toolbar(self): method run (line 842) | def run(self): function get_available_agent_systems (line 1154) | def get_available_agent_systems(): function start_cli_mode (line 1169) | def start_cli_mode(agent_system: str = None, language: str = 'en'): FILE: utils/config_loader.py class ConfigLoader (line 15) | class ConfigLoader: method __init__ (line 18) | def __init__(self, agent_system_name: str = "infiHelper", agent_librar... method _find_config_root (line 43) | def _find_config_root(self) -> str: method _find_agent_system_dir (line 52) | def _find_agent_system_dir(self, agent_system_name: str) -> str: method _load_general_prompts (line 73) | def _load_general_prompts(self) -> Dict: method _load_all_tools (line 89) | def _load_all_tools(self) -> Dict[str, Dict]: method _inject_framework_default_tools (line 104) | def _inject_framework_default_tools(self): method get_tool_config (line 147) | def get_tool_config(self, tool_name: str) -> Dict: method _normalize_agent_runtime_config (line 173) | def _normalize_agent_runtime_config(self, config: Dict[str, Any]) -> D... method build_agent_system_prompt (line 210) | def build_agent_system_prompt(self, agent_config: Dict) -> str: method get_available_tools_by_level (line 220) | def get_available_tools_by_level(self, level: int) -> List[str]: FILE: utils/config_manager.py function get_config_path (line 14) | def get_config_path(config_name: str = "llm_config") -> Path: function show_config (line 22) | def show_config(config_name: str = "llm_config"): function set_config (line 39) | def set_config(key: str, value: str, config_name: str = "llm_config"): function reset_config (line 97) | def reset_config(config_name: str = "llm_config"): FILE: utils/context_hooks.py function _load_callback (line 14) | def _load_callback(callback_spec: str): function _load_context_hooks (line 37) | def _load_context_hooks() -> List[Dict[str, Any]]: function apply_context_hooks (line 48) | def apply_context_hooks( FILE: utils/conversation_storage.py class ConversationStorage (line 17) | class ConversationStorage: method __init__ (line 20) | def __init__(self, task_id: str = None): method _generate_filename (line 26) | def _generate_filename(self, task_id: str, agent_id: str) -> str: method save_actions (line 39) | def save_actions(self, task_id: str, agent_id: str, agent_name: str, method load_actions (line 91) | def load_actions(self, task_id: str, agent_id: str) -> Dict: FILE: utils/event_emitter.py class EventEmitter (line 13) | class EventEmitter: method __init__ (line 16) | def __init__(self, enabled: bool = False): method emit (line 25) | def emit(self, event: Dict[str, Any]): method start (line 38) | def start(self, call_id: str, project: str, agent: str, task: str): method token (line 50) | def token(self, text: str): method progress (line 60) | def progress(self, phase: str, pct: int): method notice (line 71) | def notice(self, text: str): method warn (line 81) | def warn(self, text: str): method error (line 91) | def error(self, text: str): method artifact (line 101) | def artifact(self, kind: str, path: Optional[str] = None, method human_in_loop (line 115) | def human_in_loop(self, hil_id: str, title: str, message: str, method result (line 132) | def result(self, ok: bool, summary: str, artifacts: Optional[List[str]... method tool_call (line 144) | def tool_call(self, tool_name: str, parameters: Dict[str, Any]): method agent_call (line 155) | def agent_call(self, agent_name: str, parameters: Dict[str, Any]): method end (line 166) | def end(self, status: str, extra: Optional[Dict] = None): function init_event_emitter (line 190) | def init_event_emitter(enabled: bool = False): function get_event_emitter (line 197) | def get_event_emitter() -> EventEmitter: FILE: utils/llm_config_builder.py function normalize_provider_kind (line 25) | def normalize_provider_kind(value: Optional[str]) -> str: function normalize_model_name (line 42) | def normalize_model_name(provider_kind: str, model_name: str) -> str: function build_model_entry (line 64) | def build_model_entry(profile: Dict[str, Any]) -> Dict[str, Any] | str: function build_llm_config_from_profiles (line 91) | def build_llm_config_from_profiles( FILE: utils/mcp_manager.py function _sanitize_name (line 36) | def _sanitize_name(name: str) -> str: function _normalize_server_entry (line 42) | def _normalize_server_entry(raw: Any) -> Dict[str, Any] | None: function get_mcp_servers (line 87) | def get_mcp_servers() -> List[Dict[str, Any]]: function _open_session (line 101) | async def _open_session(server: Dict[str, Any]): function _dump_model (line 141) | def _dump_model(obj: Any) -> Any: function _format_tool_contents (line 154) | def _format_tool_contents(contents: List[Any]) -> str: function _discover_mcp_tools_async (line 172) | async def _discover_mcp_tools_async() -> Tuple[Dict[str, Dict[str, Any]]... function reload_mcp_tools (line 210) | def reload_mcp_tools() -> Tuple[Dict[str, Dict[str, Any]], List[Dict[str... function get_mcp_tools (line 216) | def get_mcp_tools(force_reload: bool = False) -> Dict[str, Dict[str, Any]]: function get_mcp_failures (line 223) | def get_mcp_failures(force_reload: bool = False) -> List[Dict[str, Any]]: function _call_mcp_tool_async (line 230) | async def _call_mcp_tool_async(tool_config: Dict[str, Any], arguments: D... function call_mcp_tool (line 252) | def call_mcp_tool(tool_config: Dict[str, Any], arguments: Dict[str, Any]... FILE: utils/runtime_control.py function _runtime_root (line 28) | def _runtime_root() -> Path: function _fresh_request_dir (line 34) | def _fresh_request_dir() -> Path: function _running_task_dir (line 40) | def _running_task_dir() -> Path: function _task_key (line 46) | def _task_key(task_id: str) -> str: function _fresh_request_file (line 53) | def _fresh_request_file(task_id: Optional[str]) -> Path: function _running_task_file (line 59) | def _running_task_file(task_id: str) -> Path: function _write_json_atomic (line 63) | def _write_json_atomic(path: Path, payload: Dict): function _read_json (line 70) | def _read_json(path: Path) -> Optional[Dict]: function _is_pid_alive (line 81) | def _is_pid_alive(pid: int) -> bool: function request_fresh (line 95) | def request_fresh(reason: str = "", task_id: Optional[str] = None): function pop_fresh_request (line 107) | def pop_fresh_request(task_id: str) -> Optional[str]: function register_running_task (line 125) | def register_running_task(task_id: str, agent_name: str, user_input: str... function unregister_running_task (line 147) | def unregister_running_task(task_id: str): function get_running_task (line 171) | def get_running_task(task_id: str) -> Optional[Dict]: function is_task_running (line 193) | def is_task_running(task_id: str) -> bool: FILE: utils/skill_loader.py class SkillLoader (line 21) | class SkillLoader: method __init__ (line 24) | def __init__(self, skills_library_path: str = None): method discover_skills (line 42) | def discover_skills(self) -> List[Dict]: method _parse_frontmatter (line 76) | def _parse_frontmatter(self, skill_md_path: Path) -> Optional[Dict]: method build_available_skills_xml (line 124) | def build_available_skills_xml(self, visible_skill_names: Optional[Lis... method get_skill_source_path (line 164) | def get_skill_source_path(self, skill_name: str) -> Optional[Path]: function get_skill_loader (line 187) | def get_skill_loader(skills_library_path: str = None) -> SkillLoader: function reset_skill_loader (line 195) | def reset_skill_loader(skills_library_path: str = None) -> SkillLoader: FILE: utils/task_history_index.py function get_task_history_db_path (line 24) | def get_task_history_db_path() -> Path: function _connect (line 30) | def _connect() -> sqlite3.Connection: function _ensure_schema (line 37) | def _ensure_schema(conn: sqlite3.Connection) -> None: function _json_dumps (line 93) | def _json_dumps(value: Any) -> str: function _entry_key (line 97) | def _entry_key(task_id: str, entry: Dict[str, Any]) -> str: function _chunk_id (line 105) | def _chunk_id(entry_key: str, chunk_type: str, instruction_index: int) -... function _extract_top_level_agents (line 109) | def _extract_top_level_agents(entry: Dict[str, Any]) -> List[Dict[str, A... function _extract_entry_outputs (line 134) | def _extract_entry_outputs(entry: Dict[str, Any]) -> Dict[str, str]: function _build_instruction_bundle_text (line 159) | def _build_instruction_bundle_text( function _build_summary_text (line 185) | def _build_summary_text( function _build_chunks (line 210) | def _build_chunks(task_id: str, entry: Dict[str, Any], entry_index: int,... function sync_task_history_from_context (line 290) | def sync_task_history_from_context(task_id: str, context: Optional[Dict[... function search_task_history_sql (line 370) | def search_task_history_sql( function _simple_cosine_similarity (line 405) | def _simple_cosine_similarity(vec_a: Sequence[float], vec_b: Sequence[fl... function search_task_history_semantic (line 416) | def search_task_history_semantic( function _row_to_result (line 477) | def _row_to_result(row: sqlite3.Row | Dict[str, Any]) -> Dict[str, Any]: function _load_entry_chunks (line 498) | def _load_entry_chunks(conn: sqlite3.Connection, entry_key: str) -> List... function _entry_to_task_result (line 512) | def _entry_to_task_result(entry_row: sqlite3.Row, chunk_rows: Sequence[s... function search_task_history_records (line 549) | def search_task_history_records( FILE: utils/task_runtime.py function _task_file_prefix (line 39) | def _task_file_prefix(task_id: str) -> str: function load_task_resume_meta (line 45) | def load_task_resume_meta(task_id: str, fallback_agent_system: Optional[... function load_task_launch_meta (line 80) | def load_task_launch_meta( function _parse_env_flag (line 114) | def _parse_env_flag(value: Any) -> Optional[bool]: function _build_launch_config_from_env_overrides (line 125) | def _build_launch_config_from_env_overrides(env_overrides: Optional[Dict... function resume_task_with_fresh (line 210) | def resume_task_with_fresh( function append_task_message (line 278) | def append_task_message( function get_task_share_paths (line 363) | def get_task_share_paths(task_id: str) -> Dict[str, str]: function list_known_tasks (line 372) | def list_known_tasks(only_running: bool = False) -> Dict[str, list]: function reset_task_state (line 403) | def reset_task_state( function _as_root_dir (line 494) | def _as_root_dir(path: Optional[str], expected_leaf: Optional[str] = Non... function _runtime_logs_dir (line 503) | def _runtime_logs_dir() -> Path: function launch_task_process (line 509) | def launch_task_process( FILE: utils/tool_hooks.py function _load_hooks_config (line 17) | def _load_hooks_config() -> List[Dict[str, Any]]: function _lookup_path (line 56) | def _lookup_path(payload: Any, dotted_path: str) -> Any: function _match_filters (line 74) | def _match_filters(payload: Dict[str, Any], filters: Dict[str, Any]) -> ... function _resolve_callback (line 89) | def _resolve_callback(spec: str) -> Callable[[Dict[str, Any]], Any]: function trigger_tool_hooks (line 111) | def trigger_tool_hooks( FILE: utils/user_paths.py function get_project_root (line 26) | def get_project_root() -> Path: function get_user_data_root (line 39) | def get_user_data_root() -> Path: function get_user_config_dir (line 47) | def get_user_config_dir() -> Path: function get_user_llm_config_path (line 51) | def get_user_llm_config_path() -> Path: function get_user_app_config_path (line 58) | def get_user_app_config_path() -> Path: function get_user_agent_library_root (line 62) | def get_user_agent_library_root() -> Path: function get_agent_hidden_root (line 66) | def get_agent_hidden_root() -> Path: function get_user_skills_library_root (line 71) | def get_user_skills_library_root() -> Path: function get_user_tools_library_root (line 78) | def get_user_tools_library_root() -> Path: function get_user_conversations_dir (line 85) | def get_user_conversations_dir() -> Path: function get_user_logs_dir (line 89) | def get_user_logs_dir() -> Path: function get_user_runtime_dir (line 93) | def get_user_runtime_dir() -> Path: function get_user_runtime_logs_dir (line 97) | def get_user_runtime_logs_dir() -> Path: function get_user_runtime_events_dir (line 101) | def get_user_runtime_events_dir() -> Path: function get_user_task_history_dir (line 105) | def get_user_task_history_dir() -> Path: function get_task_file_prefix (line 109) | def get_task_file_prefix(task_id: str) -> str: function ensure_user_data_root_scaffold (line 119) | def ensure_user_data_root_scaffold() -> None: function _seed_directory_children (line 136) | def _seed_directory_children(src_root: Path, dest_root: Path) -> None: function seed_user_resources_if_missing (line 149) | def seed_user_resources_if_missing() -> None: function _blank_api_keys (line 164) | def _blank_api_keys(value: Any) -> Any: function ensure_user_llm_config_exists (line 178) | def ensure_user_llm_config_exists() -> Path: function ensure_user_app_config_exists (line 224) | def ensure_user_app_config_exists() -> Path: function load_user_app_config (line 258) | def load_user_app_config() -> Dict[str, Any]: function get_mcp_settings (line 270) | def get_mcp_settings() -> Dict[str, Any]: function get_runtime_settings (line 291) | def get_runtime_settings() -> Dict[str, Any]: function get_context_settings (line 350) | def get_context_settings() -> Dict[str, Any]: function get_default_command_mode (line 367) | def get_default_command_mode() -> str: function get_seed_builtin_resources_enabled (line 384) | def get_seed_builtin_resources_enabled() -> bool: function apply_runtime_env_defaults (line 392) | def apply_runtime_env_defaults() -> None: function runtime_env_scope (line 434) | def runtime_env_scope(overrides: Optional[Dict[str, Any]] = None) -> Ite... FILE: utils/windows_compat.py function setup_console_encoding (line 10) | def setup_console_encoding(): function safe_print (line 25) | def safe_print(*args, **kwargs): FILE: web_ui/server/output_capture.py class OutputCapture (line 19) | class OutputCapture: method __init__ (line 22) | def __init__(self, callback: Callable[[dict], None], agent_name: str =... method start (line 139) | def start(self): method stop (line 144) | def stop(self): method write (line 157) | def write(self, text: str): method _is_important (line 408) | def _is_important(self, text: str) -> bool: method _is_noise (line 445) | def _is_noise(self, text: str) -> bool: method _flush_buffer (line 453) | def _flush_buffer(self): method _output_call_with_params (line 479) | def _output_call_with_params(self): method _output_final_output_with_result (line 514) | def _output_final_output_with_result(self): method flush (line 550) | def flush(self): method _extract_agent_name (line 554) | def _extract_agent_name(self, text: str) -> Optional[str]: method _determine_message_type (line 562) | def _determine_message_type(self, text: str) -> str: method set_agent (line 585) | def set_agent(self, agent_name: str): method parse_jsonl_event (line 590) | def parse_jsonl_event(self, line: str): FILE: web_ui/server/sdk_worker.py function emit_json (line 32) | def emit_json(payload: Dict[str, Any]) -> None: class WorkerBridgeEmitter (line 38) | class WorkerBridgeEmitter: method __init__ (line 39) | def __init__(self): method emit (line 44) | def emit(self, event: Dict[str, Any]): method start (line 51) | def start(self, call_id: str, project: str, agent: str, task: str): method token (line 55) | def token(self, text: str): method progress (line 59) | def progress(self, phase: str, pct: int): method notice (line 62) | def notice(self, text: str): method warn (line 65) | def warn(self, text: str): method error (line 68) | def error(self, text: str): method artifact (line 71) | def artifact(self, kind: str, path: str = None, summary: str = None, p... method human_in_loop (line 80) | def human_in_loop(self, hil_id: str, title: str, message: str, ui: Dic... method result (line 91) | def result(self, ok: bool, summary: str, artifacts=None): method end (line 99) | def end(self, status: str, extra: Dict[str, Any] = None): function map_sdk_event (line 110) | def map_sdk_event(event: Dict[str, Any]) -> Dict[str, Any] | None: function start_control_thread (line 190) | def start_control_thread() -> None: function main (line 218) | def main() -> int: FILE: web_ui/server/server.py function get_user_workspace (line 99) | def get_user_workspace(username: str) -> Path: function get_user_execution (line 106) | def get_user_execution(username: str) -> dict: function ensure_user_runtime_ready (line 123) | def ensure_user_runtime_ready(username: str) -> Path: function get_user_runtime_overrides (line 127) | def get_user_runtime_overrides(username: str) -> dict: function get_agent_system_dir (line 139) | def get_agent_system_dir(username: str, agent_system: str) -> Path: function get_run_env_config_dir (line 144) | def get_run_env_config_dir(username: str) -> Path: function get_config_dir_for_type (line 151) | def get_config_dir_for_type(username: str, config_type: str, agent_syste... function validate_config_filename (line 159) | def validate_config_filename(filename: str, config_type: str) -> None: function ensure_config_path (line 171) | def ensure_config_path(config_dir: Path, filename: str) -> Path: function parse_config_text (line 180) | def parse_config_text(filename: str, content: str): function dump_config_text (line 186) | def dump_config_text(filename: str, payload) -> str: function sanitize_tool_name (line 192) | def sanitize_tool_name(raw_name: str) -> str: function collect_tool_bindings (line 199) | def collect_tool_bindings(username: str) -> dict: function normalize_task_id (line 234) | def normalize_task_id(task_id: str, username: str = None) -> tuple[Path,... function normalize_file_path (line 291) | def normalize_file_path(path: str, task_id: str = None, username: str = ... function login_required (line 341) | def login_required(f): function admin_required (line 352) | def admin_required(f): function run_agent_task (line 365) | def run_agent_task(task_id: str, agent_name: str, user_input: str, function index (line 569) | def index(): function login (line 578) | def login(): function register (line 606) | def register(): function logout (line 628) | def logout(): function check_auth (line 638) | def check_auth(): function health (line 654) | def health(): function api_list_users (line 664) | def api_list_users(): function api_create_user (line 675) | def api_create_user(): function api_update_user (line 690) | def api_update_user(username: str): function api_delete_user (line 712) | def api_delete_user(username: str): function run_task (line 722) | def run_task(): function confirm_task (line 1196) | def confirm_task(): function stop_task (line 1274) | def stop_task(): function get_agents (line 1329) | def get_agents(): function get_agent_systems (line 1361) | def get_agent_systems(): function check_resume (line 1381) | def check_resume(): function get_status (line 1443) | def get_status(): function list_tasks (line 1469) | def list_tasks(): function list_files (line 1510) | def list_files(): function read_file (line 1577) | def read_file(): function clear_task (line 1632) | def clear_task(): function get_copy_progress (line 1729) | def get_copy_progress(username: str, task_id: str) -> dict: function set_copy_progress (line 1736) | def set_copy_progress(username: str, task_id: str, status: str, progress... function clear_copy_progress (line 1743) | def clear_copy_progress(username: str, task_id: str): function copy_tree_with_progress (line 1751) | def copy_tree_with_progress(src: Path, dst: Path, username: str, task_id... function copy_task (line 1796) | def copy_task(): function get_copy_progress_api (line 1881) | def get_copy_progress_api(): function download_task (line 1900) | def download_task(): function delete_file (line 1999) | def delete_file(): function get_chat_history (line 2037) | def get_chat_history(): function create_latest_output (line 2082) | def create_latest_output(chat_history_file: Path): function save_chat_message (line 2138) | def save_chat_message(): function upload_file (line 2338) | def upload_file(): function preview_file (line 2449) | def preview_file(): function download_file (line 2496) | def download_file(): function check_hil_task (line 2551) | def check_hil_task(): function respond_hil_task (line 2575) | def respond_hil_task(): function respond_tool_confirmation (line 2610) | def respond_tool_confirmation(): function list_runtime_tools (line 2644) | def list_runtime_tools(): function reload_runtime_tools (line 2683) | def reload_runtime_tools(): function upload_runtime_tool (line 2700) | def upload_runtime_tool(): function delete_runtime_tool (line 2741) | def delete_runtime_tool(tool_name): function list_config_files (line 2772) | def list_config_files(): function read_config_file (line 2824) | def read_config_file(): function get_agent_tree (line 2872) | def get_agent_tree(): function save_config_file (line 3006) | def save_config_file(): function get_guided_config (line 3053) | def get_guided_config(): function save_guided_config (line 3080) | def save_guided_config(): FILE: web_ui/server/user_accounts.py function _now_iso (line 26) | def _now_iso() -> str: function _validate_username (line 30) | def _validate_username(username: str) -> str: function _validate_password (line 44) | def _validate_password(password: str) -> str: function hash_password (line 53) | def hash_password(password: str) -> str: function verify_password (line 60) | def verify_password(password: str, stored_hash: str) -> bool: function _normalize_record (line 74) | def _normalize_record(username: str, raw: Any, *, default_role: str = "u... function load_user_records (line 99) | def load_user_records() -> Dict[str, Dict[str, Any]]: function save_user_records (line 127) | def save_user_records(records: Dict[str, Dict[str, Any]]) -> None: function ensure_default_accounts (line 144) | def ensure_default_accounts() -> Dict[str, Dict[str, Any]]: function authenticate_user (line 183) | def authenticate_user(username: str, password: str) -> Dict[str, Any] | ... function public_user_record (line 194) | def public_user_record(record: Dict[str, Any]) -> Dict[str, Any]: function list_users (line 204) | def list_users() -> List[Dict[str, Any]]: function register_user (line 209) | def register_user(username: str, password: str, *, role: str = "user") -... function update_user (line 229) | def update_user(username: str, *, password: str | None = None, role: str... function delete_user (line 264) | def delete_user(username: str, *, actor_username: str | None = None) -> ... FILE: web_ui/server/user_runtime.py function sanitize_username (line 30) | def sanitize_username(username: str) -> str: function get_web_user_home (line 36) | def get_web_user_home(username: str) -> Path: function get_web_user_data_root (line 40) | def get_web_user_data_root(username: str) -> Path: function get_web_user_config_dir (line 44) | def get_web_user_config_dir(username: str) -> Path: function get_web_user_llm_config_path (line 48) | def get_web_user_llm_config_path(username: str) -> Path: function get_web_user_app_config_path (line 52) | def get_web_user_app_config_path(username: str) -> Path: function get_web_user_agent_library_root (line 56) | def get_web_user_agent_library_root(username: str) -> Path: function get_web_user_tools_library_root (line 60) | def get_web_user_tools_library_root(username: str) -> Path: function get_web_user_conversations_dir (line 64) | def get_web_user_conversations_dir(username: str) -> Path: function get_web_user_logs_dir (line 68) | def get_web_user_logs_dir(username: str) -> Path: function get_web_user_runtime_dir (line 72) | def get_web_user_runtime_dir(username: str) -> Path: function get_web_user_skills_dir (line 76) | def get_web_user_skills_dir(username: str) -> Path: function _blank_api_keys (line 80) | def _blank_api_keys(value: Any) -> Any: function _seed_directory_children (line 94) | def _seed_directory_children(src_root: Path, dest_root: Path) -> None: function ensure_web_user_runtime (line 107) | def ensure_web_user_runtime(username: str) -> Path: FILE: web_ui/static/app.js function replaceEmojiWithIcons (line 45) | function replaceEmojiWithIcons(text) { function getAgentColor (line 73) | function getAgentColor(agentName) { function checkAndStopOldTask (line 168) | async function checkAndStopOldTask() { function checkAuth (line 194) | async function checkAuth() { function logout (line 226) | async function logout() { function setUsersStatus (line 243) | function setUsersStatus(text, isError = false) { function openUsersModal (line 249) | function openUsersModal() { function closeUsersModal (line 256) | function closeUsersModal() { function resetUserEditor (line 261) | function resetUserEditor() { function fillUserEditor (line 275) | function fillUserEditor(user) { function renderUsersList (line 291) | function renderUsersList(users) { function loadUsers (line 320) | async function loadUsers() { function saveUserRecord (line 337) | async function saveUserRecord() { function deleteSelectedUser (line 390) | async function deleteSelectedUser() { function loadChatHistory (line 584) | async function loadChatHistory(taskId, shouldRemoveWelcome = false) { function loadHistoryMessages (line 654) | function loadHistoryMessages(messages) { function isThinkingPlaceholderMessage (line 679) | function isThinkingPlaceholderMessage(msg) { function normalizeHistoryMessages (line 688) | function normalizeHistoryMessages(messages) { function processSaveQueue (line 720) | async function processSaveQueue() { function saveChatMessageDirect (line 736) | async function saveChatMessageDirect(agent, type, displayContent, isUser) { function saveChatMessage (line 785) | function saveChatMessage(agent, type, displayContent, isUser) { function confirmTask (line 797) | async function confirmTask() { function loadTasks (line 904) | async function loadTasks() { function updateTaskButtonsState (line 964) | function updateTaskButtonsState() { function updateSendButtonState (line 999) | function updateSendButtonState() { function clearTask (line 1015) | async function clearTask() { function copyTask (line 1101) | async function copyTask() { function createProgressModal (line 1206) | function createProgressModal() { function updateProgressModal (line 1270) | function updateProgressModal(modal, progressData) { function closeProgressModal (line 1282) | function closeProgressModal(modal) { function downloadTask (line 1289) | async function downloadTask() { function updateWorkspacePath (line 1327) | function updateWorkspacePath() { function loadFiles (line 1336) | async function loadFiles(path = null) { function isImageFile (line 1487) | function isImageFile(fileName) { function openFile (line 1495) | async function openFile(filePath, fileName) { function downloadFileFromList (line 1554) | async function downloadFileFromList(filePath, fileName) { function handleDownloadFile (line 1601) | async function handleDownloadFile() { function handleDeleteFile (line 1625) | async function handleDeleteFile() { function handleFileUpload (line 1669) | async function handleFileUpload(event) { function formatFileSize (line 1717) | function formatFileSize(bytes) { function deleteFileOrDir (line 1724) | async function deleteFileOrDir(filePath, fileName) { function escapeHtml (line 1755) | function escapeHtml(text) { function updateAgentSelectButton (line 1762) | function updateAgentSelectButton() { function initAgentSystemSelector (line 1769) | async function initAgentSystemSelector() { function loadAgentsList (line 1811) | async function loadAgentsList() { function renderAgentsList (line 1832) | function renderAgentsList(agents, searchTerm = '') { function selectAgent (line 1898) | async function selectAgent(agentName) { function loadAgentTreeForAgent (line 1920) | async function loadAgentTreeForAgent(agentName) { function renderAgentTreeNodeForPanel (line 1952) | function renderAgentTreeNodeForPanel(node, depth = 0, isRoot = false) { function openAgentSelectModal (line 2019) | async function openAgentSelectModal() { function closeAgentSelectModal (line 2045) | function closeAgentSelectModal() { function initAgentSelection (line 2055) | function initAgentSelection() { function resumeTask (line 2090) | async function resumeTask() { function sendMessage (line 2160) | async function sendMessage() { function stopTask (line 2280) | async function stopTask() { function startSSEConnection (line 2330) | function startSSEConnection(taskId, agentName, userInputText, agentSyste... function handleSSEMessage (line 2443) | function handleSSEMessage(data) { function createLiveMessage (line 2541) | function createLiveMessage(agent, type, title) { function renderLiveText (line 2595) | function renderLiveText(textDiv, text) { function scrollToBottom (line 2601) | function scrollToBottom() { function startThinkingStream (line 2608) | function startThinkingStream(agent) { function ensureReasoningStream (line 2615) | function ensureReasoningStream(agent) { function hasMeaningfulText (line 2622) | function hasMeaningfulText(text) { function pruneEmptyThinkingCards (line 2626) | function pruneEmptyThinkingCards() { function streamAgentToken (line 2636) | function streamAgentToken(agent, text) { function finalizeAgentStream (line 2647) | function finalizeAgentStream() { function streamReasoningToken (line 2658) | function streamReasoningToken(agent, text) { function finalizeReasoningStream (line 2668) | function finalizeReasoningStream() { function streamThinkingToken (line 2681) | function streamThinkingToken(agent, text) { function finalizeThinkingStream (line 2691) | function finalizeThinkingStream() { function finalizeAllLiveStreams (line 2704) | function finalizeAllLiveStreams() { function removeAllLoadingAnimations (line 2713) | function removeAllLoadingAnimations() { function addMessage (line 2721) | function addMessage(agent, type, content, isUser = false, saveToHistory ... function renderMessage (line 2870) | function renderMessage(agent, type, content, isUser, saveToHistory = fal... function showMessage (line 2875) | function showMessage(agent, type, content) { function startHILTaskChecking (line 2882) | function startHILTaskChecking() { function stopHILTaskChecking (line 2892) | function stopHILTaskChecking() { function checkHILTask (line 2900) | async function checkHILTask() { function respondToHILTask (line 2962) | async function respondToHILTask(responseText) { function respondToToolConfirmation (line 3013) | async function respondToToolConfirmation(approved) { function clearHILState (line 3056) | function clearHILState() { function clearToolConfirmationState (line 3071) | function clearToolConfirmationState() { constant MODEL_EDITOR_SLOT_CONFIG_KEYS (line 3086) | const MODEL_EDITOR_SLOT_CONFIG_KEYS = { constant MODEL_EDITOR_PROVIDER_OPTIONS (line 3095) | const MODEL_EDITOR_PROVIDER_OPTIONS = ` function getActiveConfigTabName (line 3107) | function getActiveConfigTabName() { function readPositiveNumber (line 3111) | function readPositiveNumber(value, fallback) { function readNonNegativeNumber (line 3116) | function readNonNegativeNumber(value, fallback) { function createEmptyModelEditorState (line 3121) | function createEmptyModelEditorState() { function nextModelEditorId (line 3132) | function nextModelEditorId() { function inferModelProviderKind (line 3137) | function inferModelProviderKind(modelName, entryBaseUrl, globalBaseUrl, ... function stripModelNameForProvider (line 3152) | function stripModelNameForProvider(providerKind, modelName, entryBaseUrl... function normalizeModelNameForProvider (line 3169) | function normalizeModelNameForProvider(providerKind, modelName) { function makeBlankModelEditorEntry (line 3186) | function makeBlankModelEditorEntry() { function deserializeModelEditorEntry (line 3198) | function deserializeModelEditorEntry(rawEntry, globalBaseUrl) { function serializeModelEditorComparable (line 3216) | function serializeModelEditorComparable(entry) { function cloneModelEditorEntry (line 3227) | function cloneModelEditorEntry(entry) { function computeSharedModelEntries (line 3239) | function computeSharedModelEntries(slotEntries) { function createModelEntryPayload (line 3248) | function createModelEntryPayload(entry) { function buildGuidedLlmConfig (line 3259) | function buildGuidedLlmConfig() { function getModelEditorEntry (line 3281) | function getModelEditorEntry(slotKey, entryId) { function renderModelEditorEntry (line 3285) | function renderModelEditorEntry(slotKey, entry) { function renderModelEditorSlot (line 3336) | function renderModelEditorSlot(slotKey) { function renderAllModelEditorSlots (line 3357) | function renderAllModelEditorSlots() { function loadGuidedModelSettings (line 3361) | function loadGuidedModelSettings(config) { function addModelEditorEntry (line 3383) | function addModelEditorEntry(slotKey) { function bindModelEditorList (line 3389) | function bindModelEditorList(slotKey) { function buildGuidedAppConfig (line 3428) | function buildGuidedAppConfig() { function fillGuidedConfig (line 3458) | function fillGuidedConfig(llmConfig, appConfig) { function loadGuidedConfig (line 3487) | async function loadGuidedConfig() { function saveGuidedConfig (line 3511) | async function saveGuidedConfig() { function openConfigModal (line 3564) | function openConfigModal() { function closeConfigModal (line 3574) | function closeConfigModal() { function loadConfigFileLists (line 3580) | async function loadConfigFileLists() { function loadConfigFile (line 3681) | async function loadConfigFile(filename, type = 'run_env') { function saveConfigFile (line 3726) | async function saveConfigFile() { function switchConfigTab (line 3778) | function switchConfigTab(tabName) { function loadAgentTree (line 3810) | async function loadAgentTree() { function renderAgentTreeNode (line 3842) | function renderAgentTreeNode(node, depth = 0) { function setToolsStatus (line 3910) | function setToolsStatus(message, isError = false) { function loadToolsList (line 3919) | async function loadToolsList() { function uploadToolFile (line 4000) | async function uploadToolFile(event) { function reloadToolsRegistry (line 4023) | async function reloadToolsRegistry() { function openToolsModal (line 4038) | function openToolsModal() { function closeToolsModal (line 4044) | function closeToolsModal() { function initToolsModal (line 4049) | function initToolsModal() { function initUsersModal (line 4064) | function initUsersModal() { function initConfigModal (line 4079) | function initConfigModal() {