SYMBOL INDEX (882 symbols across 75 files) FILE: strix/agents/StrixAgent/strix_agent.py class StrixAgent (line 7) | class StrixAgent(BaseAgent): method __init__ (line 10) | def __init__(self, config: dict[str, Any]): method execute_scan (line 21) | async def execute_scan(self, scan_config: dict[str, Any]) -> dict[str,... FILE: strix/agents/base_agent.py class AgentMeta (line 28) | class AgentMeta(type): method __new__ (line 32) | def __new__(cls, name: str, bases: tuple[type, ...], attrs: dict[str, ... class BaseAgent (line 49) | class BaseAgent(metaclass=AgentMeta): method __init__ (line 55) | def __init__(self, config: dict[str, Any]): method _add_to_agents_graph (line 119) | def _add_to_agents_graph(self) -> None: method agent_loop (line 151) | async def agent_loop(self, task: str) -> dict[str, Any]: # noqa: PLR0... method _wait_for_input (line 260) | async def _wait_for_input(self) -> None: method _enter_waiting_state (line 286) | async def _enter_waiting_state( method _initialize_sandbox_and_state (line 330) | async def _initialize_sandbox_and_state(self, task: str) -> None: method _process_iteration (line 367) | async def _process_iteration(self, tracer: Optional["Tracer"]) -> bool... method _execute_actions (line 415) | async def _execute_actions(self, actions: list[Any], tracer: Optional[... method _check_agent_messages (line 447) | def _check_agent_messages(self, state: AgentState) -> None: # noqa: P... method _handle_sandbox_error (line 532) | def _handle_sandbox_error( method _handle_llm_error (line 567) | def _handle_llm_error( method _handle_iteration_error (line 602) | async def _handle_iteration_error( method cancel_current_execution (line 614) | def cancel_current_execution(self) -> None: FILE: strix/agents/state.py function _generate_agent_id (line 8) | def _generate_agent_id() -> str: class AgentState (line 12) | class AgentState(BaseModel): method increment_iteration (line 43) | def increment_iteration(self) -> None: method add_message (line 47) | def add_message( method add_action (line 56) | def add_action(self, action: dict[str, Any]) -> None: method add_observation (line 65) | def add_observation(self, observation: dict[str, Any]) -> None: method add_error (line 74) | def add_error(self, error: str) -> None: method update_context (line 78) | def update_context(self, key: str, value: Any) -> None: method set_completed (line 82) | def set_completed(self, final_result: dict[str, Any] | None = None) ->... method request_stop (line 87) | def request_stop(self) -> None: method should_stop (line 91) | def should_stop(self) -> bool: method is_waiting_for_input (line 94) | def is_waiting_for_input(self) -> bool: method enter_waiting_state (line 97) | def enter_waiting_state(self, llm_failed: bool = False) -> None: method resume_from_waiting (line 103) | def resume_from_waiting(self, new_task: str | None = None) -> None: method has_reached_max_iterations (line 113) | def has_reached_max_iterations(self) -> bool: method is_approaching_max_iterations (line 116) | def is_approaching_max_iterations(self, threshold: float = 0.85) -> bool: method has_waiting_timeout (line 119) | def has_waiting_timeout(self) -> bool: method has_empty_last_messages (line 137) | def has_empty_last_messages(self, count: int = 3) -> bool: method get_conversation_history (line 150) | def get_conversation_history(self) -> list[dict[str, Any]]: method get_execution_summary (line 153) | def get_execution_summary(self) -> dict[str, Any]: FILE: strix/config/config.py class Config (line 11) | class Config: method _tracked_names (line 60) | def _tracked_names(cls) -> list[str]: method tracked_vars (line 68) | def tracked_vars(cls) -> list[str]: method _llm_env_vars (line 72) | def _llm_env_vars(cls) -> set[str]: method _llm_env_changed (line 76) | def _llm_env_changed(cls, saved_env: dict[str, Any]) -> bool: method get (line 86) | def get(cls, name: str) -> str | None: method config_dir (line 92) | def config_dir(cls) -> Path: method config_file (line 96) | def config_file(cls) -> Path: method load (line 102) | def load(cls) -> dict[str, Any]: method save (line 114) | def save(cls, config: dict[str, Any]) -> bool: method apply_saved (line 127) | def apply_saved(cls, force: bool = False) -> dict[str, str]: method capture_current (line 157) | def capture_current(cls) -> dict[str, Any]: method save_current (line 166) | def save_current(cls) -> bool: function apply_saved_config (line 182) | def apply_saved_config(force: bool = False) -> dict[str, str]: function save_current_config (line 186) | def save_current_config() -> bool: function resolve_llm_config (line 190) | def resolve_llm_config() -> tuple[str | None, str | None, str | None]: FILE: strix/interface/cli.py function run_cli (line 23) | async def run_cli(args: Any) -> None: # noqa: PLR0915 FILE: strix/interface/main.py function validate_environment (line 51) | def validate_environment() -> None: # noqa: PLR0912, PLR0915 function check_docker_installed (line 186) | def check_docker_installed() -> None: function warm_up_llm (line 208) | async def warm_up_llm() -> None: function get_version (line 259) | def get_version() -> str: function parse_arguments (line 268) | def parse_arguments() -> argparse.Namespace: function display_completion_message (line 408) | def display_completion_message(args: argparse.Namespace, results_path: P... function pull_docker_image (line 466) | def pull_docker_image() -> None: function apply_config_override (line 510) | def apply_config_override(config_path: str) -> None: function persist_config (line 515) | def persist_config() -> None: function main (line 520) | def main() -> None: FILE: strix/interface/streaming_parser.py function _get_safe_content (line 18) | def _get_safe_content(content: str) -> tuple[str, str]: class StreamSegment (line 35) | class StreamSegment: function parse_streaming_content (line 43) | def parse_streaming_content(content: str) -> list[StreamSegment]: function _parse_streaming_params (line 106) | def _parse_streaming_params(func_body: str) -> dict[str, str]: FILE: strix/interface/tool_components/agent_message_renderer.py function _get_style_colors (line 25) | def _get_style_colors() -> dict[Any, str]: function _get_token_color (line 30) | def _get_token_color(token_type: Any) -> str | None: function _highlight_code (line 39) | def _highlight_code(code: str, language: str | None = None) -> Text: function _try_parse_header (line 57) | def _try_parse_header(line: str) -> tuple[str, str] | None: function _apply_markdown_styles (line 64) | def _apply_markdown_styles(text: str) -> Text: # noqa: PLR0912 function _process_inline_formatting (line 120) | def _process_inline_formatting(line: str) -> Text: class AgentMessageRenderer (line 164) | class AgentMessageRenderer(BaseToolRenderer): method render (line 169) | def render(cls, tool_data: dict[str, Any]) -> Static: method render_simple (line 180) | def render_simple(cls, content: str) -> Text: FILE: strix/interface/tool_components/agents_graph_renderer.py class ViewAgentGraphRenderer (line 11) | class ViewAgentGraphRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: class CreateAgentRenderer (line 28) | class CreateAgentRenderer(BaseToolRenderer): method render (line 33) | def render(cls, tool_data: dict[str, Any]) -> Static: class SendMessageToAgentRenderer (line 54) | class SendMessageToAgentRenderer(BaseToolRenderer): method render (line 59) | def render(cls, tool_data: dict[str, Any]) -> Static: class AgentFinishRenderer (line 82) | class AgentFinishRenderer(BaseToolRenderer): method render (line 87) | def render(cls, tool_data: dict[str, Any]) -> Static: class WaitForMessageRenderer (line 120) | class WaitForMessageRenderer(BaseToolRenderer): method render (line 125) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/base_renderer.py class BaseToolRenderer (line 8) | class BaseToolRenderer(ABC): method render (line 14) | def render(cls, tool_data: dict[str, Any]) -> Static: method build_text (line 18) | def build_text(cls, tool_data: dict[str, Any]) -> Text: # noqa: ARG003 method create_static (line 22) | def create_static(cls, content: Text, status: str) -> Static: method status_icon (line 27) | def status_icon(cls, status: str) -> tuple[str, str]: method get_css_classes (line 37) | def get_css_classes(cls, status: str) -> str: method text_with_style (line 43) | def text_with_style(cls, content: str, style: str | None = None) -> Text: method text_icon_label (line 49) | def text_icon_label( method text_header (line 63) | def text_header( method text_key_value (line 81) | def text_key_value( FILE: strix/interface/tool_components/browser_renderer.py function _get_style_colors (line 14) | def _get_style_colors() -> dict[Any, str]: class BrowserRenderer (line 20) | class BrowserRenderer(BaseToolRenderer): method _get_token_color (line 41) | def _get_token_color(cls, token_type: Any) -> str | None: method _highlight_js (line 50) | def _highlight_js(cls, code: str) -> Text: method render (line 63) | def render(cls, tool_data: dict[str, Any]) -> Static: method _build_url_action (line 74) | def _build_url_action(cls, text: Text, label: str, url: str | None, su... method _build_content (line 82) | def _build_content(cls, action: str, args: dict[str, Any]) -> Text: FILE: strix/interface/tool_components/file_edit_renderer.py function _get_style_colors (line 15) | def _get_style_colors() -> dict[Any, str]: function _get_lexer_for_file (line 20) | def _get_lexer_for_file(path: str) -> Any: class StrReplaceEditorRenderer (line 28) | class StrReplaceEditorRenderer(BaseToolRenderer): method _get_token_color (line 33) | def _get_token_color(cls, token_type: Any) -> str | None: method _highlight_code (line 42) | def _highlight_code(cls, code: str, path: str) -> Text: method render (line 55) | def render(cls, tool_data: dict[str, Any]) -> Static: class ListFilesRenderer (line 125) | class ListFilesRenderer(BaseToolRenderer): method render (line 130) | def render(cls, tool_data: dict[str, Any]) -> Static: class SearchFilesRenderer (line 150) | class SearchFilesRenderer(BaseToolRenderer): method render (line 155) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/finish_renderer.py class FinishScanRenderer (line 14) | class FinishScanRenderer(BaseToolRenderer): method render (line 19) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/load_skill_renderer.py class LoadSkillRenderer (line 11) | class LoadSkillRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/notes_renderer.py class CreateNoteRenderer (line 11) | class CreateNoteRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: class DeleteNoteRenderer (line 46) | class DeleteNoteRenderer(BaseToolRenderer): method render (line 51) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: ARG003 class UpdateNoteRenderer (line 61) | class UpdateNoteRenderer(BaseToolRenderer): method render (line 66) | def render(cls, tool_data: dict[str, Any]) -> Static: class ListNotesRenderer (line 93) | class ListNotesRenderer(BaseToolRenderer): method render (line 98) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/proxy_renderer.py function _truncate (line 15) | def _truncate(text: str, max_len: int = 80) -> str: function _sanitize (line 19) | def _sanitize(text: str, max_len: int = 150) -> str: function _status_style (line 25) | def _status_style(code: int | None) -> str: class ListRequestsRenderer (line 40) | class ListRequestsRenderer(BaseToolRenderer): method render (line 45) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class ViewRequestRenderer (line 113) | class ViewRequestRenderer(BaseToolRenderer): method render (line 118) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class SendRequestRenderer (line 199) | class SendRequestRenderer(BaseToolRenderer): method render (line 204) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class RepeatRequestRenderer (line 273) | class RepeatRequestRenderer(BaseToolRenderer): method render (line 278) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class ScopeRulesRenderer (line 375) | class ScopeRulesRenderer(BaseToolRenderer): method render (line 380) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class ListSitemapRenderer (line 465) | class ListSitemapRenderer(BaseToolRenderer): method render (line 470) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... class ViewSitemapEntryRenderer (line 549) | class ViewSitemapEntryRenderer(BaseToolRenderer): method render (line 554) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912 FILE: strix/interface/tool_components/python_renderer.py function _get_style_colors (line 25) | def _get_style_colors() -> dict[Any, str]: function _get_lexer (line 31) | def _get_lexer() -> PythonLexer: function _get_token_color (line 36) | def _get_token_color(token_type: Any) -> str | None: class PythonRenderer (line 46) | class PythonRenderer(BaseToolRenderer): method _highlight_python (line 51) | def _highlight_python(cls, code: str) -> Text: method _clean_output (line 59) | def _clean_output(cls, output: str) -> str: method _strip_ansi (line 66) | def _strip_ansi(cls, text: str) -> str: method _truncate_line (line 70) | def _truncate_line(cls, line: str) -> str: method _format_output (line 77) | def _format_output(cls, output: str) -> Text: method _append_output (line 115) | def _append_output(cls, text: Text, result: dict[str, Any] | str) -> N... method render (line 131) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/registry.py class ToolTUIRegistry (line 9) | class ToolTUIRegistry: method register (line 13) | def register(cls, renderer_class: type[BaseToolRenderer]) -> None: method get_renderer (line 20) | def get_renderer(cls, tool_name: str) -> type[BaseToolRenderer] | None: method list_tools (line 24) | def list_tools(cls) -> list[str]: method has_renderer (line 28) | def has_renderer(cls, tool_name: str) -> bool: function register_tool_renderer (line 32) | def register_tool_renderer(renderer_class: type[BaseToolRenderer]) -> ty... function get_tool_renderer (line 37) | def get_tool_renderer(tool_name: str) -> type[BaseToolRenderer] | None: function render_tool_widget (line 41) | def render_tool_widget(tool_data: dict[str, Any]) -> Static: function _render_default_tool_widget (line 50) | def _render_default_tool_widget(tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/reporting_renderer.py function _get_style_colors (line 19) | def _get_style_colors() -> dict[Any, str]: class CreateVulnerabilityReportRenderer (line 35) | class CreateVulnerabilityReportRenderer(BaseToolRenderer): method _get_token_color (line 48) | def _get_token_color(cls, token_type: Any) -> str | None: method _highlight_python (line 57) | def _highlight_python(cls, code: str) -> Text: method _get_cvss_color (line 70) | def _get_cvss_color(cls, cvss_score: float) -> str: method render (line 82) | def render(cls, tool_data: dict[str, Any]) -> Static: # noqa: PLR0912... FILE: strix/interface/tool_components/scan_info_renderer.py class ScanStartInfoRenderer (line 11) | class ScanStartInfoRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: method _get_target_display (line 38) | def _get_target_display(cls, target_info: dict[str, Any]) -> str: class SubagentStartInfoRenderer (line 46) | class SubagentStartInfoRenderer(BaseToolRenderer): method render (line 51) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/terminal_renderer.py function _get_style_colors (line 32) | def _get_style_colors() -> dict[Any, str]: class TerminalRenderer (line 38) | class TerminalRenderer(BaseToolRenderer): method _get_token_color (line 106) | def _get_token_color(cls, token_type: Any) -> str | None: method _highlight_bash (line 115) | def _highlight_bash(cls, code: str) -> Text: method render (line 128) | def render(cls, tool_data: dict[str, Any]) -> Static: method _build_content (line 142) | def _build_content( method _clean_output (line 182) | def _clean_output(cls, output: str, command: str = "") -> str: method _append_output (line 210) | def _append_output( method _is_status_message (line 253) | def _is_status_message(cls, message: str) -> bool: method _format_output (line 265) | def _format_output(cls, output: str) -> Text: method _truncate_line (line 303) | def _truncate_line(cls, line: str) -> str: method _format_command (line 310) | def _format_command(cls, command: str) -> Text: FILE: strix/interface/tool_components/thinking_renderer.py class ThinkRenderer (line 11) | class ThinkRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/todo_renderer.py function _format_todo_lines (line 17) | def _format_todo_lines(text: Text, result: dict[str, Any]) -> None: class CreateTodoRenderer (line 43) | class CreateTodoRenderer(BaseToolRenderer): method render (line 48) | def render(cls, tool_data: dict[str, Any]) -> Static: class ListTodosRenderer (line 74) | class ListTodosRenderer(BaseToolRenderer): method render (line 79) | def render(cls, tool_data: dict[str, Any]) -> Static: class UpdateTodoRenderer (line 105) | class UpdateTodoRenderer(BaseToolRenderer): method render (line 110) | def render(cls, tool_data: dict[str, Any]) -> Static: class MarkTodoDoneRenderer (line 136) | class MarkTodoDoneRenderer(BaseToolRenderer): method render (line 141) | def render(cls, tool_data: dict[str, Any]) -> Static: class MarkTodoPendingRenderer (line 167) | class MarkTodoPendingRenderer(BaseToolRenderer): method render (line 172) | def render(cls, tool_data: dict[str, Any]) -> Static: class DeleteTodoRenderer (line 198) | class DeleteTodoRenderer(BaseToolRenderer): method render (line 203) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tool_components/user_message_renderer.py class UserMessageRenderer (line 11) | class UserMessageRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: method render_simple (line 27) | def render_simple(cls, content: str) -> Text: method _format_user_message (line 34) | def _format_user_message(cls, content: str) -> Text: FILE: strix/interface/tool_components/web_search_renderer.py class WebSearchRenderer (line 11) | class WebSearchRenderer(BaseToolRenderer): method render (line 16) | def render(cls, tool_data: dict[str, Any]) -> Static: FILE: strix/interface/tui.py function get_package_version (line 44) | def get_package_version() -> str: class ChatTextArea (line 51) | class ChatTextArea(TextArea): # type: ignore[misc] method __init__ (line 52) | def __init__(self, *args: Any, **kwargs: Any) -> None: method set_app_reference (line 56) | def set_app_reference(self, app: "StrixTUIApp") -> None: method on_mount (line 59) | def on_mount(self) -> None: method _on_key (line 62) | def _on_key(self, event: events.Key) -> None: method _update_height (line 82) | def _update_height(self, _event: TextArea.Changed | None = None) -> None: class SplashScreen (line 96) | class SplashScreen(Static): # type: ignore[misc] method __init__ (line 108) | def __init__(self, *args: Any, **kwargs: Any) -> None: method compose (line 115) | def compose(self) -> ComposeResult: method on_mount (line 125) | def on_mount(self) -> None: method on_unmount (line 128) | def on_unmount(self) -> None: method _animate_start_line (line 133) | def _animate_start_line(self) -> None: method _build_panel (line 142) | def _build_panel(self, start_line: Text) -> Panel: method _build_url_text (line 157) | def _build_url_text(self) -> Text: method _build_welcome_text (line 160) | def _build_welcome_text(self) -> Text: method _build_version_text (line 166) | def _build_version_text(self) -> Text: method _build_tagline_text (line 169) | def _build_tagline_text(self) -> Text: method _build_start_line_text (line 172) | def _build_start_line_text(self, phase: int) -> Text: class HelpScreen (line 196) | class HelpScreen(ModalScreen): # type: ignore[misc] method compose (line 197) | def compose(self) -> ComposeResult: method on_key (line 208) | def on_key(self, _event: events.Key) -> None: class StopAgentScreen (line 212) | class StopAgentScreen(ModalScreen): # type: ignore[misc] method __init__ (line 213) | def __init__(self, agent_name: str, agent_id: str): method compose (line 218) | def compose(self) -> ComposeResult: method on_mount (line 229) | def on_mount(self) -> None: method on_key (line 233) | def on_key(self, event: events.Key) -> None: method on_button_pressed (line 254) | def on_button_pressed(self, event: Button.Pressed) -> None: class VulnerabilityDetailScreen (line 260) | class VulnerabilityDetailScreen(ModalScreen): # type: ignore[misc] method __init__ (line 273) | def __init__(self, vulnerability: dict[str, Any]) -> None: method compose (line 277) | def compose(self) -> ComposeResult: method on_mount (line 289) | def on_mount(self) -> None: method _get_cvss_color (line 293) | def _get_cvss_color(self, cvss_score: float) -> str: method _highlight_python (line 304) | def _highlight_python(self, code: str) -> Text: method _render_vulnerability (line 332) | def _render_vulnerability(self) -> Text: # noqa: PLR0912, PLR0915 method _get_markdown_report (line 458) | def _get_markdown_report(self) -> str: # noqa: PLR0912, PLR0915 method on_key (line 565) | def on_key(self, event: events.Key) -> None: method on_button_pressed (line 570) | def on_button_pressed(self, event: Button.Pressed) -> None: class VulnerabilityItem (line 582) | class VulnerabilityItem(Static): # type: ignore[misc] method __init__ (line 585) | def __init__(self, label: Text, vuln_data: dict[str, Any], **kwargs: A... method on_click (line 589) | def on_click(self, _event: events.Click) -> None: class VulnerabilitiesPanel (line 594) | class VulnerabilitiesPanel(VerticalScroll): # type: ignore[misc] method __init__ (line 605) | def __init__(self, *args: Any, **kwargs: Any) -> None: method compose (line 609) | def compose(self) -> ComposeResult: method update_vulnerabilities (line 612) | def update_vulnerabilities(self, vulnerabilities: list[dict[str, Any]]... method _render_panel (line 619) | def _render_panel(self) -> None: class QuitScreen (line 641) | class QuitScreen(ModalScreen): # type: ignore[misc] method compose (line 642) | def compose(self) -> ComposeResult: method on_mount (line 653) | def on_mount(self) -> None: method on_key (line 657) | def on_key(self, event: events.Key) -> None: method on_button_pressed (line 678) | def on_button_pressed(self, event: Button.Pressed) -> None: class StrixTUIApp (line 685) | class StrixTUIApp(App): # type: ignore[misc] method __init__ (line 701) | def __init__(self, args: argparse.Namespace): method _build_scan_config (line 739) | def _build_scan_config(self, args: argparse.Namespace) -> dict[str, Any]: method _build_agent_config (line 747) | def _build_agent_config(self, args: argparse.Namespace) -> dict[str, A... method _setup_cleanup_handlers (line 761) | def _setup_cleanup_handlers(self) -> None: method compose (line 778) | def compose(self) -> ComposeResult: method watch_show_splash (line 782) | def watch_show_splash(self, show_splash: bool) -> None: method _focus_chat_input (line 846) | def _focus_chat_input(self) -> None: method _focus_agents_tree (line 861) | def _focus_agents_tree(self) -> None: method on_mount (line 878) | def on_mount(self) -> None: method _hide_splash_screen (line 883) | def _hide_splash_screen(self) -> None: method _update_ui_from_tracer (line 890) | def _update_ui_from_tracer(self) -> None: method _update_agent_node (line 929) | def _update_agent_node(self, agent_id: str, agent_data: dict[str, Any]... method _get_chat_content (line 964) | def _get_chat_content( method _update_chat_view (line 994) | def _update_chat_view(self) -> None: method _get_chat_placeholder_content (line 1022) | def _get_chat_placeholder_content( method _merge_renderables (line 1031) | def _merge_renderables(renderables: list[Any]) -> Text: method _sanitize_text (line 1041) | def _sanitize_text(text: Text) -> Text: method _append_renderable (line 1065) | def _append_renderable(combined: Text, item: Any) -> None: method _get_rendered_events_content (line 1081) | def _get_rendered_events_content(self, events: list[dict[str, Any]]) -... method _render_streaming_content (line 1117) | def _render_streaming_content(self, content: str, agent_id: str | None... method _render_streaming_tool (line 1156) | def _render_streaming_tool( method _render_default_streaming_tool (line 1173) | def _render_default_streaming_tool( method _get_status_display_content (line 1196) | def _get_status_display_content( method _update_agent_status_display (line 1253) | def _update_agent_status_display(self) -> None: method _update_stats_display (line 1289) | def _update_stats_display(self) -> None: method _update_vulnerabilities_panel (line 1312) | def _update_vulnerabilities_panel(self) -> None: method _get_agent_name_for_vulnerability (line 1340) | def _get_agent_name_for_vulnerability(self, report_id: str) -> str | N... method _get_sweep_animation (line 1352) | def _get_sweep_animation(self, color_palette: list[str]) -> Text: method _get_animated_verb_text (line 1381) | def _get_animated_verb_text(self, agent_id: str, verb: str) -> Text: ... method _start_dot_animation (line 1392) | def _start_dot_animation(self) -> None: method _stop_dot_animation (line 1396) | def _stop_dot_animation(self) -> None: method _animate_dots (line 1401) | def _animate_dots(self) -> None: method _agent_has_real_activity (line 1427) | def _agent_has_real_activity(self, agent_id: str) -> bool: method _agent_vulnerability_count (line 1439) | def _agent_vulnerability_count(self, agent_id: str) -> int: method _gather_agent_events (line 1452) | def _gather_agent_events(self, agent_id: str) -> list[dict[str, Any]]: method watch_selected_agent_id (line 1479) | def watch_selected_agent_id(self, _agent_id: str | None) -> None: method _start_scan_thread (line 1493) | def _start_scan_thread(self) -> None: method _add_agent_node (line 1524) | def _add_agent_node(self, agent_data: dict[str, Any]) -> None: method _expand_new_agent_nodes (line 1585) | def _expand_new_agent_nodes(self) -> None: method _expand_all_agent_nodes (line 1592) | def _expand_all_agent_nodes(self) -> None: method _expand_node_recursively (line 1605) | def _expand_node_recursively(self, node: TreeNode) -> None: method _copy_node_under (line 1611) | def _copy_node_under(self, node_to_copy: TreeNode, new_parent: TreeNod... method _reorganize_orphaned_agents (line 1646) | def _reorganize_orphaned_agents(self, new_parent_id: str) -> None: method _render_chat_content (line 1676) | def _render_chat_content(self, msg_data: dict[str, Any]) -> Any: method _render_tool_content_simple (line 1697) | def _render_tool_content_simple(self, tool_data: dict[str, Any]) -> Any: method _render_error_details (line 1747) | def _render_error_details(self, text: Any, tool_name: str, args: dict[... method handle_tree_highlight (line 1763) | def handle_tree_highlight(self, event: Tree.NodeHighlighted) -> None: method handle_tree_node_selected (line 1783) | def handle_tree_node_selected(self, event: Tree.NodeSelected) -> None: method _send_user_message (line 1798) | def _send_user_message(self, message: str) -> None: method _get_agent_name (line 1846) | def _get_agent_name(self, agent_id: str) -> str: method action_toggle_help (line 1856) | def action_toggle_help(self) -> None: method action_request_quit (line 1874) | def action_request_quit(self) -> None: method action_stop_selected_agent (line 1890) | def action_stop_selected_agent(self) -> None: method _validate_agent_for_stopping (line 1912) | def _validate_agent_for_stopping(self) -> tuple[str, bool]: method action_confirm_stop_agent (line 1937) | def action_confirm_stop_agent(self, agent_id: str) -> None: method action_custom_quit (line 1955) | def action_custom_quit(self) -> None: method _is_widget_safe (line 1965) | def _is_widget_safe(self, widget: Any) -> bool: method _safe_widget_operation (line 1973) | def _safe_widget_operation( method on_resize (line 1983) | def on_resize(self, event: events.Resize) -> None: method on_mouse_up (line 2000) | def on_mouse_up(self, _event: events.MouseUp) -> None: method _clean_copied_text (line 2040) | def _clean_copied_text(text: str) -> str: method _auto_copy_selection (line 2058) | def _auto_copy_selection(self) -> None: function run_tui (line 2087) | async def run_tui(args: argparse.Namespace) -> None: FILE: strix/interface/utils.py function format_token_count (line 23) | def format_token_count(count: float) -> str: function get_severity_color (line 33) | def get_severity_color(severity: str) -> str: function get_cvss_color (line 44) | def get_cvss_color(cvss_score: float) -> str: function format_vulnerability_report (line 56) | def format_vulnerability_report(report: dict[str, Any]) -> Text: # noqa... function _build_vulnerability_stats (line 205) | def _build_vulnerability_stats(stats_text: Text, tracer: Any) -> None: function _build_llm_stats (line 244) | def _build_llm_stats(stats_text: Text, total_stats: dict[str, Any]) -> N... function build_final_stats_text (line 273) | def build_final_stats_text(tracer: Any) -> Text: function build_live_stats_text (line 298) | def build_live_stats_text(tracer: Any, agent_config: dict[str, Any] | No... function build_tui_stats_text (line 371) | def build_tui_stats_text(tracer: Any, agent_config: dict[str, Any] | Non... function _slugify_for_run_name (line 405) | def _slugify_for_run_name(text: str, max_length: int = 32) -> str: function _derive_target_label_for_run_name (line 414) | def _derive_target_label_for_run_name(targets_info: list[dict[str, Any]]... function generate_run_name (line 453) | def generate_run_name(targets_info: list[dict[str, Any]] | None = None) ... function _is_http_git_repo (line 465) | def _is_http_git_repo(url: str) -> bool: function infer_target_type (line 477) | def infer_target_type(target: str) -> tuple[str, dict[str, str]]: # noq... function sanitize_name (line 545) | def sanitize_name(name: str) -> str: function derive_repo_base_name (line 550) | def derive_repo_base_name(repo_url: str) -> str: function derive_local_base_name (line 566) | def derive_local_base_name(path_str: str) -> str: function assign_workspace_subdirs (line 574) | def assign_workspace_subdirs(targets_info: list[dict[str, Any]]) -> None: function collect_local_sources (line 598) | def collect_local_sources(targets_info: list[dict[str, Any]]) -> list[di... function _is_localhost_host (line 624) | def _is_localhost_host(host: str) -> bool: function rewrite_localhost_targets (line 642) | def rewrite_localhost_targets(targets_info: list[dict[str, Any]], host_g... function clone_repository (line 666) | def clone_repository(repo_url: str, run_name: str, dest_name: str | None... function check_docker_connection (line 743) | def check_docker_connection() -> Any: function image_exists (line 768) | def image_exists(client: Any, image_name: str) -> bool: function update_layer_status (line 777) | def update_layer_status(layers_info: dict[str, str], layer_id: str, laye... function process_pull_line (line 790) | def process_pull_line( function validate_llm_response (line 819) | def validate_llm_response(response: Any) -> None: function validate_config_file (line 824) | def validate_config_file(config_path: str) -> Path: FILE: strix/llm/config.py class LLMConfig (line 6) | class LLMConfig: method __init__ (line 7) | def __init__( FILE: strix/llm/dedupe.py function _prepare_report_for_comparison (line 79) | def _prepare_report_for_comparison(report: dict[str, Any]) -> dict[str, ... function _extract_xml_field (line 103) | def _extract_xml_field(content: str, field: str) -> str: function _parse_dedupe_response (line 111) | def _parse_dedupe_response(content: str) -> dict[str, Any]: function check_duplicate (line 142) | def check_duplicate( FILE: strix/llm/llm.py class LLMRequestFailedError (line 29) | class LLMRequestFailedError(Exception): method __init__ (line 30) | def __init__(self, message: str, details: str | None = None): class LLMResponse (line 37) | class LLMResponse: class RequestStats (line 44) | class RequestStats: method to_dict (line 51) | def to_dict(self) -> dict[str, int | float]: class LLM (line 61) | class LLM: method __init__ (line 62) | def __init__(self, config: LLMConfig, agent_name: str | None = None): method _load_system_prompt (line 79) | def _load_system_prompt(self, agent_name: str | None) -> str: method _get_skills_to_load (line 105) | def _get_skills_to_load(self) -> list[str]: method add_skills (line 118) | def add_skills(self, skill_names: list[str]) -> list[str]: method set_agent_identity (line 135) | def set_agent_identity(self, agent_name: str | None, agent_id: str | N... method generate (line 141) | async def generate( method _stream (line 158) | async def _stream(self, messages: list[dict[str, Any]]) -> AsyncIterat... method _prepare_messages (line 196) | def _prepare_messages(self, conversation_history: list[dict[str, Any]]... method _build_completion_args (line 226) | def _build_completion_args(self, messages: list[dict[str, Any]]) -> di... method _get_chunk_content (line 246) | def _get_chunk_content(self, chunk: Any) -> str: method _extract_thinking (line 251) | def _extract_thinking(self, chunks: list[Any]) -> list[dict[str, Any]]... method _update_usage_stats (line 263) | def _update_usage_stats(self, response: Any) -> None: method _extract_cost (line 290) | def _extract_cost(self, response: Any) -> float: method _should_retry (line 302) | def _should_retry(self, e: Exception) -> bool: method _raise_error (line 308) | def _raise_error(self, e: Exception) -> None: method _is_anthropic (line 314) | def _is_anthropic(self) -> bool: method _supports_vision (line 319) | def _supports_vision(self) -> bool: method _supports_reasoning (line 325) | def _supports_reasoning(self) -> bool: method _strip_images (line 331) | def _strip_images(self, messages: list[dict[str, Any]]) -> list[dict[s... method _add_cache_control (line 347) | def _add_cache_control(self, messages: list[dict[str, Any]]) -> list[d... FILE: strix/llm/memory_compressor.py function _count_tokens (line 46) | def _count_tokens(text: str, model: str) -> int: function _get_message_tokens (line 55) | def _get_message_tokens(msg: dict[str, Any], model: str) -> int: function _extract_message_text (line 68) | def _extract_message_text(msg: dict[str, Any]) -> str: function _summarize_messages (line 86) | def _summarize_messages( function _handle_images (line 134) | def _handle_images(messages: list[dict[str, Any]], max_images: int) -> N... class MemoryCompressor (line 152) | class MemoryCompressor: method __init__ (line 153) | def __init__( method compress_history (line 166) | def compress_history( FILE: strix/llm/utils.py function normalize_tool_format (line 12) | def normalize_tool_format(content: str) -> str: function resolve_strix_model (line 47) | def resolve_strix_model(model_name: str | None) -> tuple[str | None, str... function _truncate_to_first_function (line 64) | def _truncate_to_first_function(content: str) -> str: function parse_tool_invocations (line 80) | def parse_tool_invocations(content: str) -> list[dict[str, Any]] | None: function fix_incomplete_tool_call (line 110) | def fix_incomplete_tool_call(content: str) -> str: function format_tool_call (line 124) | def format_tool_call(tool_name: str, args: dict[str, Any]) -> str: function clean_content (line 135) | def clean_content(content: str) -> str: FILE: strix/runtime/__init__.py class SandboxInitializationError (line 6) | class SandboxInitializationError(Exception): method __init__ (line 9) | def __init__(self, message: str, details: str | None = None): function get_runtime (line 18) | def get_runtime() -> AbstractRuntime: function cleanup_runtime (line 35) | def cleanup_runtime() -> None: FILE: strix/runtime/docker_runtime.py class DockerRuntime (line 28) | class DockerRuntime(AbstractRuntime): method __init__ (line 29) | def __init__(self) -> None: method _find_available_port (line 43) | def _find_available_port(self) -> int: method _get_scan_id (line 48) | def _get_scan_id(self, agent_id: str) -> str: method _verify_image_available (line 59) | def _verify_image_available(self, image_name: str, max_retries: int = ... method _recover_container_state (line 72) | def _recover_container_state(self, container: Container) -> None: method _wait_for_tool_server (line 87) | def _wait_for_tool_server(self, max_retries: int = 30, timeout: int = ... method _create_container (line 111) | def _create_container(self, scan_id: str, max_retries: int = 2) -> Con... method _get_or_create_container (line 175) | def _get_or_create_container(self, scan_id: str) -> Container: method _copy_local_directory_to_container (line 222) | def _copy_local_directory_to_container( method create_sandbox (line 250) | async def create_sandbox( method _register_agent (line 292) | async def _register_agent(self, api_url: str, agent_id: str, token: st... method get_sandbox_url (line 305) | async def get_sandbox_url(self, container_id: str, port: int) -> str: method _resolve_docker_host (line 312) | def _resolve_docker_host(self) -> str: method destroy_sandbox (line 322) | async def destroy_sandbox(self, container_id: str) -> None: method cleanup (line 334) | def cleanup(self) -> None: FILE: strix/runtime/runtime.py class SandboxInfo (line 5) | class SandboxInfo(TypedDict): class AbstractRuntime (line 14) | class AbstractRuntime(ABC): method create_sandbox (line 16) | async def create_sandbox( method get_sandbox_url (line 25) | async def get_sandbox_url(self, container_id: str, port: int) -> str: method destroy_sandbox (line 29) | async def destroy_sandbox(self, container_id: str) -> None: method cleanup (line 32) | def cleanup(self) -> None: FILE: strix/runtime/tool_server.py function verify_token (line 42) | def verify_token(credentials: HTTPAuthorizationCredentials) -> str: class ToolExecutionRequest (line 60) | class ToolExecutionRequest(BaseModel): class ToolExecutionResponse (line 66) | class ToolExecutionResponse(BaseModel): function _run_tool (line 71) | async def _run_tool(agent_id: str, tool_name: str, kwargs: dict[str, Any... function execute_tool (line 87) | async def execute_tool( function register_agent (line 131) | async def register_agent( function health_check (line 139) | async def health_check() -> dict[str, Any]: function signal_handler (line 150) | def signal_handler(_signum: int, _frame: Any) -> None: FILE: strix/skills/__init__.py function get_available_skills (line 10) | def get_available_skills() -> dict[str, list[str]]: function get_all_skill_names (line 36) | def get_all_skill_names() -> set[str]: function validate_skill_names (line 43) | def validate_skill_names(skill_names: list[str]) -> dict[str, list[str]]: function parse_skill_list (line 57) | def parse_skill_list(skills: str | None) -> list[str]: function validate_requested_skills (line 63) | def validate_requested_skills(skill_list: list[str], max_skills: int = 5... function generate_skills_description (line 81) | def generate_skills_description() -> str: function _get_all_categories (line 105) | def _get_all_categories() -> dict[str, list[str]]: function load_skills (line 128) | def load_skills(skill_names: list[str]) -> dict[str, str]: FILE: strix/telemetry/flags.py function _is_enabled (line 7) | def _is_enabled(raw_value: str | None, default: str = "1") -> bool: function is_otel_enabled (line 12) | def is_otel_enabled() -> bool: function is_posthog_enabled (line 19) | def is_posthog_enabled() -> bool: FILE: strix/telemetry/posthog.py function _is_enabled (line 21) | def _is_enabled() -> bool: function _is_first_run (line 25) | def _is_first_run() -> bool: function _get_version (line 37) | def _get_version() -> str: function _send (line 46) | def _send(event: str, properties: dict[str, Any]) -> None: function _base_props (line 67) | def _base_props() -> dict[str, Any]: function start (line 76) | def start( function finding (line 97) | def finding(severity: str) -> None: function end (line 107) | def end(tracer: "Tracer", exit_reason: str = "completed") -> None: function error (line 133) | def error(error_type: str, error_msg: str | None = None) -> None: FILE: strix/telemetry/tracer.py function get_global_tracer (line 39) | def get_global_tracer() -> Optional["Tracer"]: function set_global_tracer (line 43) | def set_global_tracer(tracer: "Tracer") -> None: class Tracer (line 48) | class Tracer: method __init__ (line 49) | def __init__(self, run_name: str | None = None): method events_file_path (line 93) | def events_file_path(self) -> Path: method _active_events_file_path (line 98) | def _active_events_file_path(self) -> Path: method _get_events_write_lock (line 104) | def _get_events_write_lock(self, output_path: Path | None = None) -> t... method _active_run_metadata (line 108) | def _active_run_metadata(self) -> dict[str, Any]: method _setup_telemetry (line 114) | def _setup_telemetry(self) -> None: method _set_association_properties (line 148) | def _set_association_properties(self, properties: dict[str, Any]) -> N... method _sanitize_data (line 157) | def _sanitize_data(self, data: Any, key_hint: str | None = None) -> Any: method _append_event_record (line 160) | def _append_event_record(self, record: dict[str, Any]) -> None: method _enrich_actor (line 166) | def _enrich_actor(self, actor: dict[str, Any] | None) -> dict[str, Any... method _emit_event (line 185) | def _emit_event( method set_run_name (line 268) | def set_run_name(self, run_name: str) -> None: method _emit_run_started_event (line 279) | def _emit_run_started_event(self) -> None: method get_run_dir (line 295) | def get_run_dir(self) -> Path: method add_vulnerability_report (line 306) | def add_vulnerability_report( # noqa: PLR0912 method get_existing_vulnerabilities (line 379) | def get_existing_vulnerabilities(self) -> list[dict[str, Any]]: method update_scan_final_fields (line 382) | def update_scan_final_fields( method log_agent_creation (line 428) | def log_agent_creation( method log_chat_message (line 455) | def log_chat_message( method log_tool_execution_start (line 484) | def log_tool_execution_start( method update_tool_execution (line 525) | def update_tool_execution( method update_agent_status (line 567) | def update_agent_status( method set_scan_config (line 588) | def set_scan_config(self, config: dict[str, Any]) -> None: method save_run_data (line 612) | def save_run_data(self, mark_complete: bool = False) -> None: method _calculate_duration (line 775) | def _calculate_duration(self) -> float: method get_agent_tools (line 785) | def get_agent_tools(self, agent_id: str) -> list[dict[str, Any]]: method get_real_tool_count (line 792) | def get_real_tool_count(self) -> int: method get_total_llm_stats (line 799) | def get_total_llm_stats(self) -> dict[str, Any]: method update_streaming_content (line 826) | def update_streaming_content(self, agent_id: str, content: str) -> None: method clear_streaming_content (line 829) | def clear_streaming_content(self, agent_id: str) -> None: method get_streaming_content (line 832) | def get_streaming_content(self, agent_id: str) -> str | None: method finalize_streaming_as_interrupted (line 835) | def finalize_streaming_as_interrupted(self, agent_id: str) -> str | None: method cleanup (line 849) | def cleanup(self) -> None: FILE: strix/telemetry/utils.py class _SecretFilth (line 57) | class _SecretFilth(Filth): # type: ignore[misc] class _SecretTokenDetector (line 61) | class _SecretTokenDetector(RegexDetector): # type: ignore[misc] class TelemetrySanitizer (line 67) | class TelemetrySanitizer: method __init__ (line 68) | def __init__(self) -> None: method sanitize (line 71) | def sanitize(self, data: Any, key_hint: str | None = None) -> Any: # ... function format_trace_id (line 106) | def format_trace_id(trace_id: int | None) -> str | None: function format_span_id (line 112) | def format_span_id(span_id: int | None) -> str | None: function iso_from_unix_ns (line 118) | def iso_from_unix_ns(unix_ns: int | None) -> str | None: function get_events_write_lock (line 128) | def get_events_write_lock(output_path: Path) -> threading.Lock: function reset_events_write_locks (line 138) | def reset_events_write_locks() -> None: function append_jsonl_record (line 143) | def append_jsonl_record(output_path: Path, record: dict[str, Any]) -> None: function default_resource_attributes (line 149) | def default_resource_attributes() -> dict[str, str]: function parse_traceloop_headers (line 156) | def parse_traceloop_headers(raw_headers: str) -> dict[str, str]: function prune_otel_span_attributes (line 184) | def prune_otel_span_attributes(attributes: dict[str, Any]) -> dict[str, ... class JsonlSpanExporter (line 207) | class JsonlSpanExporter(SpanExporter): # type: ignore[misc] method __init__ (line 210) | def __init__( method export (line 222) | def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult: method shutdown (line 246) | def shutdown(self) -> None: method force_flush (line 249) | def force_flush(self, timeout_millis: int = 30_000) -> bool: # noqa: ... method _span_to_record (line 252) | def _span_to_record( function bootstrap_otel (line 305) | def bootstrap_otel( FILE: strix/tools/agents_graph/agents_graph_actions.py function _run_agent_in_thread (line 24) | def _run_agent_in_thread( function view_agent_graph (line 106) | def view_agent_graph(agent_state: Any) -> dict[str, Any]: function create_agent (line 188) | def create_agent( function send_message_to_agent (line 279) | def send_message_to_agent( function agent_finish (line 350) | def agent_finish( function stop_agent (line 463) | def stop_agent(agent_id: str) -> dict[str, Any]: function send_user_message_to_agent (line 526) | def send_user_message_to_agent(agent_id: str, message: str) -> dict[str,... function wait_for_message (line 572) | def wait_for_message( FILE: strix/tools/argument_parser.py class ArgumentConversionError (line 9) | class ArgumentConversionError(Exception): method __init__ (line 10) | def __init__(self, message: str, param_name: str | None = None) -> None: function convert_arguments (line 15) | def convert_arguments(func: Callable[..., Any], kwargs: dict[str, Any]) ... function convert_string_to_type (line 50) | def convert_string_to_type(value: str, param_type: Any) -> Any: function _convert_basic_types (line 71) | def _convert_basic_types(value: str, param_type: Any, origin: Any = None... function _convert_to_bool (line 92) | def _convert_to_bool(value: str) -> bool: function _convert_to_list (line 100) | def _convert_to_list(value: str) -> list[Any]: function _convert_to_dict (line 113) | def _convert_to_dict(value: str) -> dict[str, Any]: FILE: strix/tools/browser/browser_actions.py function _validate_url (line 35) | def _validate_url(action_name: str, url: str | None) -> None: function _validate_coordinate (line 40) | def _validate_coordinate(action_name: str, coordinate: str | None) -> None: function _validate_text (line 45) | def _validate_text(action_name: str, text: str | None) -> None: function _validate_tab_id (line 50) | def _validate_tab_id(action_name: str, tab_id: str | None) -> None: function _validate_js_code (line 55) | def _validate_js_code(action_name: str, js_code: str | None) -> None: function _validate_duration (line 60) | def _validate_duration(action_name: str, duration: float | None) -> None: function _validate_key (line 65) | def _validate_key(action_name: str, key: str | None) -> None: function _validate_file_path (line 70) | def _validate_file_path(action_name: str, file_path: str | None) -> None: function _handle_navigation_actions (line 75) | def _handle_navigation_actions( function _handle_interaction_actions (line 94) | def _handle_interaction_actions( function _raise_unknown_action (line 128) | def _raise_unknown_action(action: str) -> NoReturn: function _handle_tab_actions (line 132) | def _handle_tab_actions( function _handle_utility_actions (line 153) | def _handle_utility_actions( function browser_action (line 184) | def browser_action( FILE: strix/tools/browser/browser_instance.py class _BrowserState (line 21) | class _BrowserState: function _ensure_event_loop (line 34) | def _ensure_event_loop() -> None: function _create_browser (line 50) | async def _create_browser() -> Browser: function _get_browser (line 76) | def _get_browser() -> tuple[asyncio.AbstractEventLoop, Browser]: class BrowserInstance (line 89) | class BrowserInstance: method __init__ (line 90) | def __init__(self) -> None: method _run_async (line 104) | def _run_async(self, coro: Any) -> dict[str, Any]: method _setup_console_logging (line 111) | async def _setup_console_logging(self, page: Page, tab_id: str) -> None: method _create_context (line 133) | async def _create_context(self, url: str | None = None) -> dict[str, A... method _get_page_state (line 157) | async def _get_page_state(self, tab_id: str | None = None) -> dict[str... method launch (line 191) | def launch(self, url: str | None = None) -> dict[str, Any]: method goto (line 199) | def goto(self, url: str, tab_id: str | None = None) -> dict[str, Any]: method _goto (line 203) | async def _goto(self, url: str, tab_id: str | None = None) -> dict[str... method click (line 215) | def click(self, coordinate: str, tab_id: str | None = None) -> dict[st... method _click (line 219) | async def _click(self, coordinate: str, tab_id: str | None = None) -> ... method type_text (line 236) | def type_text(self, text: str, tab_id: str | None = None) -> dict[str,... method _type_text (line 240) | async def _type_text(self, text: str, tab_id: str | None = None) -> di... method scroll (line 252) | def scroll(self, direction: str, tab_id: str | None = None) -> dict[st... method _scroll (line 256) | async def _scroll(self, direction: str, tab_id: str | None = None) -> ... method back (line 274) | def back(self, tab_id: str | None = None) -> dict[str, Any]: method _back (line 278) | async def _back(self, tab_id: str | None = None) -> dict[str, Any]: method forward (line 290) | def forward(self, tab_id: str | None = None) -> dict[str, Any]: method _forward (line 294) | async def _forward(self, tab_id: str | None = None) -> dict[str, Any]: method new_tab (line 306) | def new_tab(self, url: str | None = None) -> dict[str, Any]: method _new_tab (line 310) | async def _new_tab(self, url: str | None = None) -> dict[str, Any]: method switch_tab (line 327) | def switch_tab(self, tab_id: str) -> dict[str, Any]: method _switch_tab (line 331) | async def _switch_tab(self, tab_id: str) -> dict[str, Any]: method close_tab (line 338) | def close_tab(self, tab_id: str) -> dict[str, Any]: method _close_tab (line 342) | async def _close_tab(self, tab_id: str) -> dict[str, Any]: method wait (line 360) | def wait(self, duration: float, tab_id: str | None = None) -> dict[str... method _wait (line 364) | async def _wait(self, duration: float, tab_id: str | None = None) -> d... method execute_js (line 368) | def execute_js(self, js_code: str, tab_id: str | None = None) -> dict[... method _execute_js (line 372) | async def _execute_js(self, js_code: str, tab_id: str | None = None) -... method get_console_logs (line 398) | def get_console_logs(self, tab_id: str | None = None, clear: bool = Fa... method _get_console_logs (line 402) | async def _get_console_logs( method view_source (line 447) | def view_source(self, tab_id: str | None = None) -> dict[str, Any]: method _view_source (line 451) | async def _view_source(self, tab_id: str | None = None) -> dict[str, A... method double_click (line 476) | def double_click(self, coordinate: str, tab_id: str | None = None) -> ... method _double_click (line 480) | async def _double_click(self, coordinate: str, tab_id: str | None = No... method hover (line 497) | def hover(self, coordinate: str, tab_id: str | None = None) -> dict[st... method _hover (line 501) | async def _hover(self, coordinate: str, tab_id: str | None = None) -> ... method press_key (line 518) | def press_key(self, key: str, tab_id: str | None = None) -> dict[str, ... method _press_key (line 522) | async def _press_key(self, key: str, tab_id: str | None = None) -> dic... method save_pdf (line 534) | def save_pdf(self, file_path: str, tab_id: str | None = None) -> dict[... method _save_pdf (line 538) | async def _save_pdf(self, file_path: str, tab_id: str | None = None) -... method close (line 555) | def close(self) -> None: method _close_context (line 568) | async def _close_context(self) -> None: method is_alive (line 575) | def is_alive(self) -> bool: FILE: strix/tools/browser/tab_manager.py class BrowserTabManager (line 11) | class BrowserTabManager: method __init__ (line 12) | def __init__(self) -> None: method _get_agent_browser (line 18) | def _get_agent_browser(self) -> BrowserInstance | None: method _set_agent_browser (line 23) | def _set_agent_browser(self, browser: BrowserInstance | None) -> None: method launch_browser (line 31) | def launch_browser(self, url: str | None = None) -> dict[str, Any]: method goto_url (line 47) | def goto_url(self, url: str, tab_id: str | None = None) -> dict[str, A... method click (line 60) | def click(self, coordinate: str, tab_id: str | None = None) -> dict[st... method type_text (line 73) | def type_text(self, text: str, tab_id: str | None = None) -> dict[str,... method scroll (line 86) | def scroll(self, direction: str, tab_id: str | None = None) -> dict[st... method back (line 99) | def back(self, tab_id: str | None = None) -> dict[str, Any]: method forward (line 112) | def forward(self, tab_id: str | None = None) -> dict[str, Any]: method new_tab (line 125) | def new_tab(self, url: str | None = None) -> dict[str, Any]: method switch_tab (line 138) | def switch_tab(self, tab_id: str) -> dict[str, Any]: method close_tab (line 151) | def close_tab(self, tab_id: str) -> dict[str, Any]: method wait_browser (line 164) | def wait_browser(self, duration: float, tab_id: str | None = None) -> ... method execute_js (line 177) | def execute_js(self, js_code: str, tab_id: str | None = None) -> dict[... method double_click (line 190) | def double_click(self, coordinate: str, tab_id: str | None = None) -> ... method hover (line 203) | def hover(self, coordinate: str, tab_id: str | None = None) -> dict[st... method press_key (line 216) | def press_key(self, key: str, tab_id: str | None = None) -> dict[str, ... method save_pdf (line 229) | def save_pdf(self, file_path: str, tab_id: str | None = None) -> dict[... method get_console_logs (line 242) | def get_console_logs(self, tab_id: str | None = None, clear: bool = Fa... method view_source (line 264) | def view_source(self, tab_id: str | None = None) -> dict[str, Any]: method list_tabs (line 277) | def list_tabs(self) -> dict[str, Any]: method close_browser (line 306) | def close_browser(self) -> dict[str, Any]: method cleanup_agent (line 324) | def cleanup_agent(self, agent_id: str) -> None: method cleanup_dead_browser (line 332) | def cleanup_dead_browser(self) -> None: method close_all (line 344) | def close_all(self) -> None: method _register_cleanup_handlers (line 353) | def _register_cleanup_handlers(self) -> None: function get_browser_tab_manager (line 360) | def get_browser_tab_manager() -> BrowserTabManager: FILE: strix/tools/context.py function get_current_agent_id (line 7) | def get_current_agent_id() -> str: function set_current_agent_id (line 11) | def set_current_agent_id(agent_id: str) -> None: FILE: strix/tools/executor.py function execute_tool (line 29) | async def execute_tool(tool_name: str, agent_state: Any | None = None, *... function _execute_tool_in_sandbox (line 39) | async def _execute_tool_in_sandbox(tool_name: str, agent_state: Any, **k... function _execute_tool_locally (line 101) | async def _execute_tool_locally(tool_name: str, agent_state: Any | None,... function validate_tool_availability (line 118) | def validate_tool_availability(tool_name: str | None) -> tuple[bool, str]: function _validate_tool_arguments (line 130) | def _validate_tool_arguments(tool_name: str, kwargs: dict[str, Any]) -> ... function _format_schema_hint (line 156) | def _format_schema_hint(tool_name: str, required: set[str], optional: se... function execute_tool_with_validation (line 165) | async def execute_tool_with_validation( function execute_tool_invocation (line 189) | async def execute_tool_invocation(tool_inv: dict[str, Any], agent_state:... function _check_error_result (line 196) | def _check_error_result(result: Any) -> tuple[bool, Any]: function _update_tracer_with_result (line 209) | def _update_tracer_with_result( function _format_tool_result (line 227) | def _format_tool_result(tool_name: str, result: Any) -> tuple[str, list[... function _execute_single_tool (line 259) | async def _execute_single_tool( function _get_tracer_and_agent_id (line 300) | def _get_tracer_and_agent_id(agent_state: Any | None) -> tuple[Any | Non... function process_tool_invocations (line 313) | async def process_tool_invocations( function extract_screenshot_from_result (line 345) | def extract_screenshot_from_result(result: Any) -> str | None: function remove_screenshot_from_result (line 356) | def remove_screenshot_from_result(result: Any) -> Any: FILE: strix/tools/file_edit/file_edit_actions.py function _parse_file_editor_output (line 9) | def _parse_file_editor_output(output: str) -> dict[str, Any]: function str_replace_editor (line 24) | def str_replace_editor( function list_files (line 62) | def list_files( function search_files (line 115) | def search_files( FILE: strix/tools/finish/finish_actions.py function _validate_root_agent (line 6) | def _validate_root_agent(agent_state: Any) -> dict[str, Any] | None: function _check_active_agents (line 17) | def _check_active_agents(agent_state: Any = None) -> dict[str, Any] | None: function finish_scan (line 87) | def finish_scan( FILE: strix/tools/load_skill/load_skill_actions.py function load_skill (line 7) | def load_skill(agent_state: Any, skills: str) -> dict[str, Any]: FILE: strix/tools/notes/notes_actions.py function _filter_notes (line 11) | def _filter_notes( function create_note (line 43) | def create_note( function list_notes (line 89) | def list_notes( function update_note (line 113) | def update_note( function delete_note (line 150) | def delete_note(note_id: str) -> dict[str, Any]: FILE: strix/tools/proxy/proxy_actions.py function list_requests (line 10) | def list_requests( function view_request (line 37) | def view_request( function send_request (line 51) | def send_request( function repeat_request (line 67) | def repeat_request( function scope_rules (line 80) | def scope_rules( function list_sitemap (line 94) | def list_sitemap( function view_sitemap_entry (line 107) | def view_sitemap_entry( FILE: strix/tools/proxy/proxy_manager.py class ProxyManager (line 22) | class ProxyManager: method __init__ (line 23) | def __init__(self, auth_token: str | None = None): method _get_client (line 32) | def _get_client(self) -> Client: method list_requests (line 38) | def list_requests( method view_request (line 114) | def view_request( method _search_content (line 175) | def _search_content( method _paginate_content (line 208) | def _paginate_content( method send_simple_request (line 239) | def send_simple_request( method repeat_request (line 279) | def repeat_request( method _parse_http_request (line 307) | def _parse_http_request(self, raw_content: str) -> dict[str, Any]: method _build_full_url (line 329) | def _build_full_url( method _apply_modifications (line 347) | def _apply_modifications( method _send_modified_request (line 383) | def _send_modified_request( method _handle_scope_list (line 441) | def _handle_scope_list(self) -> dict[str, Any]: method _handle_scope_get (line 448) | def _handle_scope_get(self, scope_id: str | None) -> dict[str, Any]: method _handle_scope_create (line 463) | def _handle_scope_create( method _handle_scope_update (line 499) | def _handle_scope_update( method _handle_scope_delete (line 540) | def _handle_scope_delete(self, scope_id: str) -> dict[str, Any]: method scope_rules (line 554) | def scope_rules( method list_sitemap (line 596) | def list_sitemap( method _process_sitemap_metadata (line 693) | def _process_sitemap_metadata(self, node: dict[str, Any]) -> dict[str,... method _process_sitemap_request (line 708) | def _process_sitemap_request(self, req: dict[str, Any]) -> dict[str, A... method _process_sitemap_response (line 719) | def _process_sitemap_response(self, resp: dict[str, Any]) -> dict[str,... method view_sitemap_entry (line 729) | def view_sitemap_entry(self, entry_id: str) -> dict[str, Any]: method close (line 786) | def close(self) -> None: function get_proxy_manager (line 793) | def get_proxy_manager() -> ProxyManager: FILE: strix/tools/python/python_actions.py function python_action (line 10) | def python_action( FILE: strix/tools/python/python_instance.py class PythonInstance (line 13) | class PythonInstance: method __init__ (line 14) | def __init__(self, session_id: str) -> None: method _setup_proxy_functions (line 30) | def _setup_proxy_functions(self) -> None: method _validate_session (line 49) | def _validate_session(self) -> dict[str, Any] | None: method _truncate_output (line 59) | def _truncate_output(self, content: str, max_length: int, suffix: str)... method _format_execution_result (line 64) | def _format_execution_result( method _handle_execution_error (line 103) | def _handle_execution_error(self, error: BaseException) -> dict[str, A... method execute_code (line 116) | def execute_code(self, code: str, timeout: int = 30) -> dict[str, Any]: method close (line 169) | def close(self) -> None: method is_alive (line 173) | def is_alive(self) -> bool: FILE: strix/tools/python/python_manager.py class PythonSessionManager (line 11) | class PythonSessionManager: method __init__ (line 12) | def __init__(self) -> None: method _get_agent_sessions (line 19) | def _get_agent_sessions(self) -> dict[str, PythonInstance]: method create_session (line 26) | def create_session( method execute_code (line 53) | def execute_code( method close_session (line 73) | def close_session(self, session_id: str | None = None) -> dict[str, Any]: method list_sessions (line 91) | def list_sessions(self) -> dict[str, Any]: method cleanup_agent (line 103) | def cleanup_agent(self, agent_id: str) -> None: method cleanup_dead_sessions (line 111) | def cleanup_dead_sessions(self) -> None: method close_all_sessions (line 124) | def close_all_sessions(self) -> None: method _register_cleanup_handlers (line 135) | def _register_cleanup_handlers(self) -> None: function get_python_session_manager (line 142) | def get_python_session_manager() -> PythonSessionManager: FILE: strix/tools/registry.py class ImplementedInClientSideOnlyError (line 21) | class ImplementedInClientSideOnlyError(Exception): method __init__ (line 22) | def __init__( function _process_dynamic_content (line 30) | def _process_dynamic_content(content: str) -> str: function _load_xml_schema (line 47) | def _load_xml_schema(path: Path) -> Any: function _parse_param_schema (line 90) | def _parse_param_schema(tool_xml: str) -> dict[str, Any]: function _get_module_name (line 118) | def _get_module_name(func: Callable[..., Any]) -> str: function _get_schema_path (line 131) | def _get_schema_path(func: Callable[..., Any]) -> Path | None: function _is_sandbox_mode (line 152) | def _is_sandbox_mode() -> bool: function _is_browser_disabled (line 156) | def _is_browser_disabled() -> bool: function _has_perplexity_api (line 166) | def _has_perplexity_api() -> bool: function _should_register_tool (line 175) | def _should_register_tool( function register_tool (line 190) | def register_tool( function get_tool_by_name (line 253) | def get_tool_by_name(name: str) -> Callable[..., Any] | None: function get_tool_names (line 257) | def get_tool_names() -> list[str]: function get_tool_param_schema (line 261) | def get_tool_param_schema(name: str) -> dict[str, Any] | None: function needs_agent_state (line 265) | def needs_agent_state(tool_name: str) -> bool: function should_execute_in_sandbox (line 273) | def should_execute_in_sandbox(tool_name: str) -> bool: function get_tools_prompt (line 280) | def get_tools_prompt() -> str: function clear_registry (line 303) | def clear_registry() -> None: FILE: strix/tools/reporting/reporting_actions.py function parse_cvss_xml (line 21) | def parse_cvss_xml(xml_str: str) -> dict[str, str] | None: function parse_code_locations_xml (line 32) | def parse_code_locations_xml(xml_str: str) -> list[dict[str, Any]] | None: function _validate_file_path (line 66) | def _validate_file_path(path: str) -> str | None: function _validate_code_locations (line 77) | def _validate_code_locations(locations: list[dict[str, Any]]) -> list[str]: function _extract_cve (line 96) | def _extract_cve(cve: str) -> str: function _validate_cve (line 101) | def _validate_cve(cve: str) -> str | None: function _extract_cwe (line 107) | def _extract_cwe(cwe: str) -> str: function _validate_cwe (line 112) | def _validate_cwe(cwe: str) -> str | None: function calculate_cvss_and_severity (line 118) | def calculate_cvss_and_severity( function _validate_required_fields (line 155) | def _validate_required_fields(**kwargs: str | None) -> list[str]: function _validate_cvss_parameters (line 177) | def _validate_cvss_parameters(**kwargs: str) -> list[str]: function create_vulnerability_report (line 202) | def create_vulnerability_report( # noqa: PLR0912 FILE: strix/tools/terminal/terminal_actions.py function terminal_execute (line 7) | def terminal_execute( FILE: strix/tools/terminal/terminal_manager.py class TerminalManager (line 11) | class TerminalManager: method __init__ (line 12) | def __init__(self) -> None: method _get_agent_sessions (line 20) | def _get_agent_sessions(self) -> dict[str, TerminalSession]: method execute_command (line 27) | def execute_command( method _get_or_create_session (line 73) | def _get_or_create_session(self, terminal_id: str) -> TerminalSession: method close_session (line 80) | def close_session(self, terminal_id: str | None = None) -> dict[str, A... method list_sessions (line 110) | def list_sessions(self) -> dict[str, Any]: method cleanup_agent (line 122) | def cleanup_agent(self, agent_id: str) -> None: method cleanup_dead_sessions (line 130) | def cleanup_dead_sessions(self) -> None: method close_all_sessions (line 143) | def close_all_sessions(self) -> None: method _register_cleanup_handlers (line 154) | def _register_cleanup_handlers(self) -> None: function get_terminal_manager (line 161) | def get_terminal_manager() -> TerminalManager: FILE: strix/tools/terminal/terminal_session.py class BashCommandStatus (line 15) | class BashCommandStatus(Enum): function _remove_command_prefix (line 22) | def _remove_command_prefix(command_output: str, command: str) -> str: class TerminalSession (line 26) | class TerminalSession: method __init__ (line 31) | def __init__(self, session_id: str, work_dir: str = "/workspace") -> N... method PS1 (line 49) | def PS1(self) -> str: # noqa: N802 method PS1_PATTERN (line 53) | def PS1_PATTERN(self) -> str: # noqa: N802 method initialize (line 56) | def initialize(self) -> None: method _get_pane_content (line 96) | def _get_pane_content(self) -> str: method _clear_screen (line 103) | def _clear_screen(self) -> None: method _is_control_key (line 110) | def _is_control_key(self, command: str) -> bool: method _is_function_key (line 118) | def _is_function_key(self, command: str) -> bool: method _is_navigation_or_special_key (line 127) | def _is_navigation_or_special_key(self, command: str) -> bool: method _is_complex_modifier_key (line 134) | def _is_complex_modifier_key(self, command: str) -> bool: method _is_special_key (line 140) | def _is_special_key(self, command: str) -> bool: method _matches_ps1_metadata (line 153) | def _matches_ps1_metadata(self, content: str) -> list[re.Match[str]]: method _get_command_output (line 156) | def _get_command_output( method _combine_outputs_between_matches (line 172) | def _combine_outputs_between_matches( method _extract_exit_code_from_matches (line 192) | def _extract_exit_code_from_matches(self, ps1_matches: list[re.Match[s... method _handle_empty_command (line 202) | def _handle_empty_command( method _handle_input_command (line 261) | def _handle_input_command( method _execute_new_command (line 308) | def _execute_new_command(self, command: str, no_enter: bool, timeout: ... method execute (line 380) | def execute( method _ready_for_next_command (line 418) | def _ready_for_next_command(self) -> None: method is_running (line 421) | def is_running(self) -> bool: method get_working_dir (line 430) | def get_working_dir(self) -> str: method close (line 433) | def close(self) -> None: FILE: strix/tools/thinking/thinking_actions.py function think (line 7) | def think(thought: str) -> dict[str, Any]: FILE: strix/tools/todo/todo_actions.py function _get_agent_todos (line 15) | def _get_agent_todos(agent_id: str) -> dict[str, dict[str, Any]]: function _normalize_priority (line 21) | def _normalize_priority(priority: str | None, default: str = "normal") -... function _sorted_todos (line 28) | def _sorted_todos(agent_id: str) -> list[dict[str, Any]]: function _normalize_todo_ids (line 50) | def _normalize_todo_ids(raw_ids: Any) -> list[str]: function _normalize_bulk_updates (line 72) | def _normalize_bulk_updates(raw_updates: Any) -> list[dict[str, Any]]: function _normalize_bulk_todos (line 114) | def _normalize_bulk_todos(raw_todos: Any) -> list[dict[str, Any]]: function create_todo (line 162) | def create_todo( function list_todos (line 237) | def list_todos( function _apply_single_update (line 300) | def _apply_single_update( function update_todo (line 345) | def update_todo( function mark_todo_done (line 417) | def mark_todo_done( function mark_todo_pending (line 470) | def mark_todo_pending( function delete_todo (line 523) | def delete_todo( FILE: strix/tools/web_search/web_search_actions.py function web_search (line 35) | def web_search(query: str) -> dict[str, Any]: FILE: strix/utils/resource_paths.py function get_strix_resource_path (line 5) | def get_strix_resource_path(*parts: str) -> Path: FILE: tests/config/test_config_telemetry.py function test_traceloop_vars_are_tracked (line 6) | def test_traceloop_vars_are_tracked() -> None: function test_apply_saved_uses_saved_traceloop_vars (line 16) | def test_apply_saved_uses_saved_traceloop_vars(monkeypatch, tmp_path) ->... function test_apply_saved_respects_existing_env_traceloop_vars (line 43) | def test_apply_saved_respects_existing_env_traceloop_vars(monkeypatch, t... FILE: tests/llm/test_llm_otel.py function test_llm_does_not_modify_litellm_callbacks (line 7) | def test_llm_does_not_modify_litellm_callbacks(monkeypatch) -> None: FILE: tests/telemetry/test_flags.py function test_flags_fallback_to_strix_telemetry (line 4) | def test_flags_fallback_to_strix_telemetry(monkeypatch) -> None: function test_otel_flag_overrides_global_telemetry (line 13) | def test_otel_flag_overrides_global_telemetry(monkeypatch) -> None: function test_posthog_flag_overrides_global_telemetry (line 22) | def test_posthog_flag_overrides_global_telemetry(monkeypatch) -> None: FILE: tests/telemetry/test_tracer.py function _load_events (line 15) | def _load_events(events_path: Path) -> list[dict[str, Any]]: function _reset_tracer_globals (line 21) | def _reset_tracer_globals(monkeypatch) -> None: function test_tracer_local_mode_writes_jsonl_with_correlation (line 34) | def test_tracer_local_mode_writes_jsonl_with_correlation(monkeypatch, tm... function test_tracer_redacts_sensitive_payloads (line 62) | def test_tracer_redacts_sensitive_payloads(monkeypatch, tmp_path) -> None: function test_tracer_remote_mode_configures_traceloop_export (line 91) | def test_tracer_remote_mode_configures_traceloop_export(monkeypatch, tmp... function test_tracer_local_mode_avoids_traceloop_remote_endpoint (line 130) | def test_tracer_local_mode_avoids_traceloop_remote_endpoint(monkeypatch,... function test_otlp_fallback_includes_auth_and_custom_headers (line 159) | def test_otlp_fallback_includes_auth_and_custom_headers(monkeypatch, tmp... function test_traceloop_init_failure_does_not_mark_bootstrapped_on_provider_failure (line 200) | def test_traceloop_init_failure_does_not_mark_bootstrapped_on_provider_f... function test_run_completed_event_emitted_once (line 228) | def test_run_completed_event_emitted_once(monkeypatch, tmp_path) -> None: function test_events_with_agent_id_include_agent_name (line 242) | def test_events_with_agent_id_include_agent_name(monkeypatch, tmp_path) ... function test_run_metadata_is_only_on_run_lifecycle_events (line 258) | def test_run_metadata_is_only_on_run_lifecycle_events(monkeypatch, tmp_p... function test_set_run_name_resets_cached_paths (line 278) | def test_set_run_name_resets_cached_paths(monkeypatch, tmp_path) -> None: function test_set_run_name_resets_run_completed_flag (line 297) | def test_set_run_name_resets_run_completed_flag(monkeypatch, tmp_path) -... function test_set_run_name_updates_traceloop_association_properties (line 315) | def test_set_run_name_updates_traceloop_association_properties(monkeypat... function test_events_write_locks_are_scoped_by_events_file (line 340) | def test_events_write_locks_are_scoped_by_events_file(monkeypatch, tmp_p... function test_tracer_skips_jsonl_when_telemetry_disabled (line 355) | def test_tracer_skips_jsonl_when_telemetry_disabled(monkeypatch, tmp_pat... function test_tracer_otel_flag_overrides_global_telemetry (line 368) | def test_tracer_otel_flag_overrides_global_telemetry(monkeypatch, tmp_pa... FILE: tests/telemetry/test_utils.py function test_prune_otel_span_attributes_drops_high_volume_prompt_content (line 4) | def test_prune_otel_span_attributes_drops_high_volume_prompt_content() -... function test_prune_otel_span_attributes_keeps_metadata_when_nothing_is_dropped (line 30) | def test_prune_otel_span_attributes_keeps_metadata_when_nothing_is_dropp... FILE: tests/tools/conftest.py function sample_function_with_types (line 10) | def sample_function_with_types() -> Callable[..., None]: function sample_function_no_annotations (line 28) | def sample_function_no_annotations() -> Callable[..., None]: FILE: tests/tools/test_argument_parser.py class TestConvertToBool (line 16) | class TestConvertToBool: method test_truthy_values (line 23) | def test_truthy_values(self, value: str) -> None: method test_falsy_values (line 31) | def test_falsy_values(self, value: str) -> None: method test_non_standard_truthy_string (line 35) | def test_non_standard_truthy_string(self) -> None: method test_empty_string (line 40) | def test_empty_string(self) -> None: class TestConvertToList (line 45) | class TestConvertToList: method test_json_array_string (line 48) | def test_json_array_string(self) -> None: method test_json_array_with_numbers (line 53) | def test_json_array_with_numbers(self) -> None: method test_comma_separated_string (line 58) | def test_comma_separated_string(self) -> None: method test_comma_separated_no_spaces (line 63) | def test_comma_separated_no_spaces(self) -> None: method test_single_value (line 68) | def test_single_value(self) -> None: method test_json_non_array_wraps_in_list (line 73) | def test_json_non_array_wraps_in_list(self) -> None: method test_json_object_wraps_in_list (line 78) | def test_json_object_wraps_in_list(self) -> None: method test_empty_json_array (line 83) | def test_empty_json_array(self) -> None: class TestConvertToDict (line 89) | class TestConvertToDict: method test_valid_json_object (line 92) | def test_valid_json_object(self) -> None: method test_empty_json_object (line 97) | def test_empty_json_object(self) -> None: method test_invalid_json_returns_empty_dict (line 102) | def test_invalid_json_returns_empty_dict(self) -> None: method test_json_array_returns_empty_dict (line 107) | def test_json_array_returns_empty_dict(self) -> None: method test_nested_json_object (line 112) | def test_nested_json_object(self) -> None: class TestConvertBasicTypes (line 118) | class TestConvertBasicTypes: method test_convert_to_int (line 121) | def test_convert_to_int(self) -> None: method test_convert_to_float (line 126) | def test_convert_to_float(self) -> None: method test_convert_to_str (line 131) | def test_convert_to_str(self) -> None: method test_convert_to_bool (line 135) | def test_convert_to_bool(self) -> None: method test_convert_to_list_type (line 140) | def test_convert_to_list_type(self) -> None: method test_convert_to_dict_type (line 145) | def test_convert_to_dict_type(self) -> None: method test_unknown_type_attempts_json (line 150) | def test_unknown_type_attempts_json(self) -> None: method test_unknown_type_returns_original (line 155) | def test_unknown_type_returns_original(self) -> None: class TestConvertStringToType (line 161) | class TestConvertStringToType: method test_basic_type_conversion (line 164) | def test_basic_type_conversion(self) -> None: method test_optional_type (line 170) | def test_optional_type(self) -> None: method test_union_type (line 175) | def test_union_type(self) -> None: method test_union_type_with_none (line 180) | def test_union_type_with_none(self) -> None: method test_modern_union_syntax (line 185) | def test_modern_union_syntax(self) -> None: class TestConvertArguments (line 191) | class TestConvertArguments: method test_converts_typed_arguments (line 194) | def test_converts_typed_arguments( method test_passes_through_none_values (line 215) | def test_passes_through_none_values( method test_passes_through_non_string_values (line 223) | def test_passes_through_non_string_values( method test_unknown_parameter_passed_through (line 231) | def test_unknown_parameter_passed_through( method test_function_without_annotations (line 239) | def test_function_without_annotations( method test_raises_error_on_conversion_failure (line 248) | def test_raises_error_on_conversion_failure( class TestArgumentConversionError (line 258) | class TestArgumentConversionError: method test_error_with_param_name (line 261) | def test_error_with_param_name(self) -> None: method test_error_without_param_name (line 267) | def test_error_without_param_name(self) -> None: FILE: tests/tools/test_load_skill_tool.py class _DummyLLM (line 7) | class _DummyLLM: method __init__ (line 8) | def __init__(self, initial_skills: list[str] | None = None) -> None: method add_skills (line 11) | def add_skills(self, skill_names: list[str]) -> list[str]: class _DummyAgent (line 17) | class _DummyAgent: method __init__ (line 18) | def __init__(self, initial_skills: list[str] | None = None) -> None: class _DummyAgentState (line 22) | class _DummyAgentState: method __init__ (line 23) | def __init__(self, agent_id: str) -> None: method update_context (line 27) | def update_context(self, key: str, value: Any) -> None: function test_load_skill_success_and_context_update (line 31) | def test_load_skill_success_and_context_update() -> None: function test_load_skill_uses_same_plain_skill_format_as_create_agent (line 50) | def test_load_skill_uses_same_plain_skill_format_as_create_agent() -> None: function test_load_skill_invalid_skill_returns_error (line 69) | def test_load_skill_invalid_skill_returns_error() -> None: function test_load_skill_rejects_more_than_five_skills (line 87) | def test_load_skill_rejects_more_than_five_skills() -> None: function test_load_skill_missing_agent_instance_returns_error (line 106) | def test_load_skill_missing_agent_instance_returns_error() -> None: function test_load_skill_does_not_reload_skill_already_present_from_agent_creation (line 122) | def test_load_skill_does_not_reload_skill_already_present_from_agent_cre... FILE: tests/tools/test_tool_registration_modes.py function _empty_config_load (line 10) | def _empty_config_load(_cls: type[Config]) -> dict[str, dict[str, str]]: function _reload_tools_module (line 14) | def _reload_tools_module() -> ModuleType: function test_non_sandbox_registers_agents_graph_but_not_browser_or_web_search_when_disabled (line 24) | def test_non_sandbox_registers_agents_graph_but_not_browser_or_web_searc... function test_sandbox_registers_sandbox_tools_but_not_non_sandbox_tools (line 40) | def test_sandbox_registers_sandbox_tools_but_not_non_sandbox_tools( function test_load_skill_import_does_not_register_create_agent_in_sandbox (line 61) | def test_load_skill_import_does_not_register_create_agent_in_sandbox(