SYMBOL INDEX (662 symbols across 138 files) FILE: backend/agent/engine.py class AgentEngine (line 22) | class AgentEngine: method __init__ (line 23) | def __init__( method _next_event_id (line 60) | def _next_event_id(self, prefix: str) -> str: method _send (line 63) | async def _send( method _mark_preview_length (line 72) | def _mark_preview_length(self, tool_event_id: Optional[str], length: i... method _stream_code_preview (line 79) | async def _stream_code_preview(self, tool_event_id: Optional[str], con... method _handle_streamed_tool_delta (line 101) | async def _handle_streamed_tool_delta( method _run_with_session (line 149) | async def _run_with_session(self, session: ProviderSession) -> str: method run (line 228) | async def run(self, model: Llm, prompt_messages: List[ChatCompletionMe... method _finalize_response (line 245) | async def _finalize_response(self, assistant_text: str) -> str: FILE: backend/agent/providers/anthropic/image.py function process_image (line 46) | def process_image(image_data_url: str) -> tuple[str, str]: FILE: backend/agent/providers/anthropic/provider.py function _convert_openai_messages_to_claude (line 34) | def _convert_openai_messages_to_claude( function serialize_anthropic_tools (line 63) | def serialize_anthropic_tools( class AnthropicParseState (line 78) | class AnthropicParseState: function _parse_stream_event (line 84) | async def _parse_stream_event( function _extract_tool_calls (line 148) | def _extract_tool_calls(final_message: Any) -> List[ToolCall]: function _extract_anthropic_usage (line 174) | def _extract_anthropic_usage(final_message: Any) -> TokenUsage: class AnthropicProviderSession (line 196) | class AnthropicProviderSession(ProviderSession): method __init__ (line 197) | def __init__( method stream_turn (line 212) | async def stream_turn(self, on_event: EventSink) -> ProviderTurn: method append_tool_results (line 255) | def append_tool_results( method close (line 289) | async def close(self) -> None: FILE: backend/agent/providers/base.py class StreamEvent (line 15) | class StreamEvent: class ProviderTurn (line 24) | class ProviderTurn: class ExecutedToolCall (line 32) | class ExecutedToolCall: class ProviderSession (line 40) | class ProviderSession(Protocol): method stream_turn (line 41) | async def stream_turn(self, on_event: EventSink) -> ProviderTurn: method append_tool_results (line 44) | def append_tool_results( method close (line 51) | async def close(self) -> None: FILE: backend/agent/providers/factory.py function create_provider_session (line 16) | def create_provider_session( FILE: backend/agent/providers/gemini.py function serialize_gemini_tools (line 28) | def serialize_gemini_tools(tools: List[CanonicalToolDefinition]) -> List... function _get_gemini_api_model_name (line 40) | def _get_gemini_api_model_name(model: Llm) -> str: function _get_thinking_level_for_model (line 52) | def _get_thinking_level_for_model(model: Llm) -> str: function _extract_text_from_content (line 67) | def _extract_text_from_content(content: str | List[Dict[str, Any]]) -> str: function _detect_mime_type_from_base64 (line 78) | def _detect_mime_type_from_base64(base64_data: str) -> str | None: function _extract_images_from_content (line 101) | def _extract_images_from_content(content: str | List[Dict[str, Any]]) ->... function _convert_message_to_gemini_content (line 131) | def _convert_message_to_gemini_content( class GeminiParseState (line 176) | class GeminiParseState: function _extract_usage (line 183) | def _extract_usage(chunk: types.GenerateContentResponse) -> TokenUsage |... function _parse_chunk (line 209) | async def _parse_chunk( class GeminiProviderSession (line 260) | class GeminiProviderSession(ProviderSession): method __init__ (line 261) | def __init__( method stream_turn (line 278) | async def stream_turn(self, on_event: EventSink) -> ProviderTurn: method append_tool_results (line 320) | def append_tool_results( method close (line 344) | async def close(self) -> None: FILE: backend/agent/providers/openai.py function _convert_message_to_responses_input (line 27) | def _convert_message_to_responses_input( function _get_event_attr (line 56) | def _get_event_attr(event: Any, key: str, default: Any = None) -> Any: function _copy_schema (line 64) | def _copy_schema(schema: Dict[str, Any]) -> Dict[str, Any]: function _nullable_type (line 68) | def _nullable_type(type_value: Any) -> Any: function _make_responses_schema_strict (line 78) | def _make_responses_schema_strict(schema: Dict[str, Any]) -> Dict[str, A... function serialize_openai_tools (line 109) | def serialize_openai_tools( class OpenAIResponsesParseState (line 126) | class OpenAIResponsesParseState: function _extract_openai_usage (line 136) | def _extract_openai_usage(response: Any) -> TokenUsage: function parse_event (line 161) | async def parse_event( function _build_provider_turn (line 353) | def _build_provider_turn(state: OpenAIResponsesParseState) -> ProviderTurn: class OpenAIProviderSession (line 407) | class OpenAIProviderSession(ProviderSession): method __init__ (line 408) | def __init__( method stream_turn (line 427) | async def stream_turn(self, on_event: EventSink) -> ProviderTurn: method append_tool_results (line 459) | def append_tool_results( method close (line 479) | async def close(self) -> None: FILE: backend/agent/providers/pricing.py class ModelPricing (line 6) | class ModelPricing: FILE: backend/agent/providers/token_usage.py class TokenUsage (line 9) | class TokenUsage: method accumulate (line 40) | def accumulate(self, other: TokenUsage) -> None: method cost (line 47) | def cost(self, pricing: ModelPricing) -> float: method total_input_tokens (line 56) | def total_input_tokens(self) -> int: method cache_hit_rate_percent (line 60) | def cache_hit_rate_percent(self) -> float: FILE: backend/agent/runner.py class Agent (line 4) | class Agent(AgentEngine): FILE: backend/agent/state.py class AgentFileState (line 10) | class AgentFileState: function ensure_str (line 15) | def ensure_str(value: Any) -> str: function extract_text_content (line 21) | def extract_text_content(message: ChatCompletionMessageParam) -> str: function seed_file_state_from_messages (line 32) | def seed_file_state_from_messages( FILE: backend/agent/tools/definitions.py function _create_schema (line 6) | def _create_schema() -> Dict[str, Any]: function _edit_schema (line 23) | def _edit_schema() -> Dict[str, Any]: function _image_schema (line 59) | def _image_schema() -> Dict[str, Any]: function _remove_background_schema (line 75) | def _remove_background_schema() -> Dict[str, Any]: function _retrieve_option_schema (line 91) | def _retrieve_option_schema() -> Dict[str, Any]: function canonical_tool_definitions (line 104) | def canonical_tool_definitions( FILE: backend/agent/tools/parsing.py function parse_json_arguments (line 8) | def parse_json_arguments(raw_args: Any) -> Tuple[Dict[str, Any], Optiona... function _strip_incomplete_escape (line 22) | def _strip_incomplete_escape(value: str) -> str: function _extract_partial_json_string (line 36) | def _extract_partial_json_string(raw_text: str, key: str) -> Optional[str]: function extract_content_from_args (line 83) | def extract_content_from_args(raw_args: Any) -> Optional[str]: function extract_path_from_args (line 93) | def extract_path_from_args(raw_args: Any) -> Optional[str]: FILE: backend/agent/tools/runtime.py class AgentToolRuntime (line 16) | class AgentToolRuntime: method __init__ (line 17) | def __init__( method execute (line 31) | async def execute(self, tool_call: ToolCall) -> ToolExecutionResult: method _create_file (line 59) | def _create_file(self, args: Dict[str, Any]) -> ToolExecutionResult: method _generate_diff (line 93) | def _generate_diff(old_content: str, new_content: str, path: str) -> D... method _apply_single_edit (line 118) | def _apply_single_edit( method _edit_file (line 138) | def _edit_file(self, args: Dict[str, Any]) -> ToolExecutionResult: method _generate_images (line 217) | async def _generate_images(self, args: Dict[str, Any]) -> ToolExecutio... method _remove_background (line 272) | async def _remove_background(self, args: Dict[str, Any]) -> ToolExecut... method _retrieve_option (line 332) | def _retrieve_option(self, args: Dict[str, Any]) -> ToolExecutionResult: FILE: backend/agent/tools/summaries.py function summarize_text (line 8) | def summarize_text(value: str, limit: int = 240) -> str: function summarize_tool_input (line 14) | def summarize_tool_input(tool_call: ToolCall, file_state: AgentFileState... FILE: backend/agent/tools/types.py class ToolCall (line 6) | class ToolCall: class ToolExecutionResult (line 13) | class ToolExecutionResult: class CanonicalToolDefinition (line 21) | class CanonicalToolDefinition: FILE: backend/codegen/test_utils.py class TestUtils (line 5) | class TestUtils(unittest.TestCase): method test_extract_html_content_with_html_tags (line 7) | def test_extract_html_content_with_html_tags(self): method test_extract_html_content_without_html_tags (line 13) | def test_extract_html_content_without_html_tags(self): method test_extract_html_content_with_partial_html_tags (line 19) | def test_extract_html_content_with_partial_html_tags(self): method test_extract_html_content_with_multiple_html_tags (line 25) | def test_extract_html_content_with_multiple_html_tags(self): method test_extract_html_content_some_explanation_before (line 33) | def test_extract_html_content_some_explanation_before(self): method test_markdown_tags (line 43) | def test_markdown_tags(self): method test_doctype_text (line 49) | def test_doctype_text(self): FILE: backend/codegen/utils.py function extract_html_content (line 4) | def extract_html_content(text: str) -> str: FILE: backend/debug/DebugFileWriter.py class DebugFileWriter (line 8) | class DebugFileWriter: method __init__ (line 9) | def __init__(self): method write_to_file (line 22) | def write_to_file(self, filename: str, content: str) -> None: method extract_html_content (line 29) | def extract_html_content(self, text: str) -> str: FILE: backend/evals/core.py function generate_code_for_image (line 15) | async def generate_code_for_image(image_url: str, stack: Stack, model: L... FILE: backend/evals/runner.py function _resolve_eval_filenames (line 16) | def _resolve_eval_filenames(input_files: Optional[List[str]]) -> List[str]: function _output_html_filename (line 23) | def _output_html_filename(original_filename: str, attempt_idx: int) -> str: function get_eval_output_subfolder (line 27) | def get_eval_output_subfolder(stack: Stack, model: str) -> str: function count_pending_eval_tasks (line 33) | def count_pending_eval_tasks( function generate_code_and_time (line 58) | async def generate_code_and_time( function run_image_evals (line 110) | async def run_image_evals( FILE: backend/evals/utils.py function image_to_data_url (line 4) | async def image_to_data_url(filepath: str): FILE: backend/fs_logging/openai_input_compare.py class OpenAIInputDifference (line 15) | class OpenAIInputDifference: class OpenAIInputComparison (line 25) | class OpenAIInputComparison: function _extract_input_items (line 32) | def _extract_input_items(payload: Any) -> list[JSONValue]: function _as_json_dict (line 44) | def _as_json_dict(value: JSONValue) -> dict[str, JSONValue]: function _as_json_list (line 48) | def _as_json_list(value: JSONValue) -> list[JSONValue]: function _append_dict_path (line 52) | def _append_dict_path(path: str, key: str) -> str: function _append_list_path (line 58) | def _append_list_path(path: str, index: int) -> str: function _find_first_value_difference (line 62) | def _find_first_value_difference( function compare_openai_inputs (line 129) | def compare_openai_inputs( function format_openai_input_comparison (line 204) | def format_openai_input_comparison(comparison: OpenAIInputComparison) ->... function compare_openai_input_json_strings (line 234) | def compare_openai_input_json_strings( FILE: backend/fs_logging/openai_input_formatting.py function truncate_for_log (line 8) | def truncate_for_log(value: Any, max_len: int = 120) -> str: function as_dict (line 15) | def as_dict(value: Any) -> dict[str, Any] | None: function to_serializable (line 46) | def to_serializable(value: Any) -> Any: function summarize_content_part (line 63) | def summarize_content_part(part: Any) -> str: function summarize_function_call_output_payload (line 96) | def summarize_function_call_output_payload(output_text: str) -> str: function summarize_responses_input_item (line 158) | def summarize_responses_input_item(index: int, item: Any) -> str: FILE: backend/fs_logging/openai_turn_inputs.py function _render_json_scalar (line 20) | def _render_json_scalar(value: Any) -> str: function _render_json_node (line 38) | def _render_json_node(value: Any, label: str | None = None) -> str: function _render_copy_controls (line 80) | def _render_copy_controls(copy_target_id: str, button_label: str) -> str: function _log_openai_turn_input (line 90) | def _log_openai_turn_input(model: Llm, turn_index: int, input_items: Seq... function _is_openai_turn_input_console_enabled (line 103) | def _is_openai_turn_input_console_enabled() -> bool: class OpenAITurnInputItem (line 109) | class OpenAITurnInputItem: class OpenAITurnUsageSummary (line 116) | class OpenAITurnUsageSummary: class OpenAITurnInputReport (line 127) | class OpenAITurnInputReport: class OpenAITurnInputLogger (line 135) | class OpenAITurnInputLogger: method record_turn_input (line 142) | def record_turn_input( method record_turn_usage (line 170) | def record_turn_usage(self, usage: TokenUsage) -> None: method write_html_report (line 186) | def write_html_report(self) -> str | None: method _render_html_report (line 209) | def _render_html_report(self) -> str: FILE: backend/image_generation/generation.py function process_tasks (line 13) | async def process_tasks( function generate_image_dalle (line 45) | async def generate_image_dalle( function generate_image_replicate (line 63) | async def generate_image_replicate(prompt: str, api_key: str) -> str: FILE: backend/image_generation/replicate.py function _build_headers (line 15) | def _build_headers(api_token: str) -> dict[str, str]: function _extract_prediction_id (line 22) | def _extract_prediction_id(response_json: Mapping[str, Any]) -> str: function _poll_prediction (line 29) | async def _poll_prediction( function _run_prediction (line 55) | async def _run_prediction( function _extract_output_url (line 83) | def _extract_output_url(result: Any, context: str) -> str: function call_replicate_model (line 104) | async def call_replicate_model( function call_replicate_version (line 114) | async def call_replicate_version( function remove_background (line 124) | async def remove_background(image_url: str, api_token: str) -> str: function call_replicate (line 139) | async def call_replicate(input: dict[str, str | int], api_token: str) ->... FILE: backend/llm.py class Llm (line 6) | class Llm(Enum): class Completion (line 35) | class Completion(TypedDict): function get_openai_api_name (line 110) | def get_openai_api_name(model: Llm) -> str: function get_openai_reasoning_effort (line 114) | def get_openai_reasoning_effort(model: Llm) -> str | None: FILE: backend/main.py function log_debug_mode (line 16) | async def log_debug_mode() -> None: FILE: backend/prompts/create/__init__.py function build_create_prompt_from_input (line 9) | def build_create_prompt_from_input( FILE: backend/prompts/create/image.py function build_image_prompt_messages (line 7) | def build_image_prompt_messages( FILE: backend/prompts/create/text.py function build_text_prompt_messages (line 8) | def build_text_prompt_messages( FILE: backend/prompts/create/video.py function build_video_prompt_messages (line 7) | def build_video_prompt_messages( FILE: backend/prompts/message_builder.py function _wrap_assistant_file_content (line 10) | def _wrap_assistant_file_content(content: str, path: str = "index.html")... function build_history_message (line 17) | def build_history_message(item: PromptHistoryMessage) -> ChatCompletionM... FILE: backend/prompts/pipeline.py function build_prompt_messages (line 12) | async def build_prompt_messages( FILE: backend/prompts/plan.py function derive_prompt_construction_plan (line 9) | def derive_prompt_construction_plan( FILE: backend/prompts/policies.py function build_selected_stack_policy (line 4) | def build_selected_stack_policy(stack: Stack) -> str: function build_user_image_policy (line 8) | def build_user_image_policy(image_generation_enabled: bool) -> str: FILE: backend/prompts/prompt_types.py class UserTurnInput (line 4) | class UserTurnInput(TypedDict): class PromptHistoryMessage (line 12) | class PromptHistoryMessage(TypedDict): class PromptConstructionPlan (line 38) | class PromptConstructionPlan(TypedDict): FILE: backend/prompts/request_parsing.py function _to_string_list (line 6) | def _to_string_list(value: object) -> List[str]: function parse_prompt_content (line 13) | def parse_prompt_content(raw_prompt: object) -> UserTurnInput: function parse_prompt_history (line 26) | def parse_prompt_history(raw_history: object) -> List[PromptHistoryMessa... FILE: backend/prompts/update/from_file_snapshot.py function build_update_prompt_from_file_snapshot (line 11) | def build_update_prompt_from_file_snapshot( FILE: backend/prompts/update/from_history.py function build_update_prompt_from_history (line 11) | def build_update_prompt_from_history( FILE: backend/routes/evals.py class Eval (line 26) | class Eval(BaseModel): class InputFile (line 31) | class InputFile(BaseModel): function get_eval_input_files (line 37) | async def get_eval_input_files(): function get_evals (line 54) | async def get_evals(folder: str): class PairwiseEvalResponse (line 105) | class PairwiseEvalResponse(BaseModel): function get_pairwise_evals (line 112) | async def get_pairwise_evals( class RunEvalsRequest (line 183) | class RunEvalsRequest(BaseModel): class OpenAIInputCompareRequest (line 190) | class OpenAIInputCompareRequest(BaseModel): class OpenAIInputCompareDifferenceResponse (line 195) | class OpenAIInputCompareDifferenceResponse(BaseModel): class OpenAIInputCompareResponse (line 204) | class OpenAIInputCompareResponse(BaseModel): function _load_openai_input_compare_payload (line 212) | def _load_openai_input_compare_payload(raw_json: str, side: str) -> object: function compare_openai_inputs_for_evals (line 233) | async def compare_openai_inputs_for_evals( function run_evals (line 261) | async def run_evals(request: RunEvalsRequest) -> List[str]: function _count_eval_files (line 277) | def _count_eval_files(selected_files: List[str]) -> int: function run_evals_stream (line 286) | async def run_evals_stream(request: RunEvalsRequest): function get_models (line 398) | async def get_models(): class BestOfNEvalsResponse (line 407) | class BestOfNEvalsResponse(BaseModel): function get_best_of_n_evals (line 413) | async def get_best_of_n_evals(request: Request): class OutputFolder (line 491) | class OutputFolder(BaseModel): function get_output_folders (line 498) | async def get_output_folders(): FILE: backend/routes/generate_code.py class PipelineContext (line 78) | class PipelineContext: method send_message (line 92) | def send_message(self): method throw_error (line 97) | def throw_error(self): class Middleware (line 102) | class Middleware(ABC): method process (line 106) | async def process( class Pipeline (line 113) | class Pipeline: method __init__ (line 116) | def __init__(self): method use (line 119) | def use(self, middleware: Middleware) -> "Pipeline": method execute (line 124) | async def execute(self, websocket: WebSocket) -> None: method _wrap_middleware (line 138) | def _wrap_middleware( class WebSocketCommunicator (line 151) | class WebSocketCommunicator: method __init__ (line 154) | def __init__(self, websocket: WebSocket): method accept (line 158) | async def accept(self) -> None: method send_message (line 163) | async def send_message( method throw_error (line 198) | async def throw_error(self, message: str) -> None: method receive_params (line 209) | async def receive_params(self) -> Dict[str, Any]: method close (line 215) | async def close(self) -> None: class ExtractedParams (line 226) | class ExtractedParams: class ParameterExtractionStage (line 241) | class ParameterExtractionStage: method __init__ (line 244) | def __init__(self, throw_error: Callable[[str], Coroutine[Any, Any, No... method extract_and_validate (line 247) | async def extract_and_validate(self, params: Dict[str, Any]) -> Extrac... method _get_from_settings_dialog_or_env (line 340) | def _get_from_settings_dialog_or_env( class ModelSelectionStage (line 356) | class ModelSelectionStage: method __init__ (line 359) | def __init__(self, throw_error: Callable[[str], Coroutine[Any, Any, No... method select_models (line 362) | async def select_models( method _get_variant_models (line 396) | def _get_variant_models( class PromptCreationStage (line 447) | class PromptCreationStage: method __init__ (line 450) | def __init__(self, throw_error: Callable[[str], Coroutine[Any, Any, No... method build_prompt_messages (line 453) | async def build_prompt_messages( class PostProcessingStage (line 478) | class PostProcessingStage: method __init__ (line 481) | def __init__(self): method process_completions (line 484) | async def process_completions( class AgenticGenerationStage (line 493) | class AgenticGenerationStage: method __init__ (line 496) | def __init__( method process_variants (line 516) | async def process_variants( method _run_variant (line 540) | async def _run_variant( class WebSocketSetupMiddleware (line 634) | class WebSocketSetupMiddleware(Middleware): method process (line 637) | async def process( class ParameterExtractionMiddleware (line 651) | class ParameterExtractionMiddleware(Middleware): method process (line 654) | async def process( class StatusBroadcastMiddleware (line 675) | class StatusBroadcastMiddleware(Middleware): method process (line 678) | async def process( class PromptCreationMiddleware (line 699) | class PromptCreationMiddleware(Middleware): method process (line 702) | async def process( class CodeGenerationMiddleware (line 713) | class CodeGenerationMiddleware(Middleware): method process (line 716) | async def process( class PostProcessingMiddleware (line 779) | class PostProcessingMiddleware(Middleware): method process (line 782) | async def process( function stream_code (line 794) | async def stream_code(websocket: WebSocket): FILE: backend/routes/home.py function get_status (line 9) | async def get_status(): FILE: backend/routes/screenshot.py function normalize_url (line 10) | def normalize_url(url: str) -> str: function bytes_to_data_url (line 40) | def bytes_to_data_url(image_bytes: bytes, mime_type: str) -> str: function capture_screenshot (line 45) | async def capture_screenshot( class ScreenshotRequest (line 76) | class ScreenshotRequest(BaseModel): class ScreenshotResponse (line 81) | class ScreenshotResponse(BaseModel): function app_screenshot (line 86) | async def app_screenshot(request: ScreenshotRequest): FILE: backend/run_evals.py function main (line 10) | async def main(): FILE: backend/run_image_generation_evals.py function generate_and_save_images (line 42) | async def generate_and_save_images( function main (line 79) | async def main() -> None: FILE: backend/tests/test_agent_tool_runtime.py function test_edit_file_returns_structured_result_with_diff (line 8) | def test_edit_file_returns_structured_result_with_diff() -> None: function test_execute_edit_file_uses_updated_result_shape (line 40) | async def test_execute_edit_file_uses_updated_result_shape() -> None: FILE: backend/tests/test_agent_tools.py function test_canonical_tool_definitions_include_generate_images_when_enabled (line 4) | def test_canonical_tool_definitions_include_generate_images_when_enabled... function test_canonical_tool_definitions_exclude_generate_images_when_disabled (line 9) | def test_canonical_tool_definitions_exclude_generate_images_when_disable... function test_edit_file_tool_description_matches_runtime_output_shape (line 14) | def test_edit_file_tool_description_matches_runtime_output_shape() -> None: FILE: backend/tests/test_batching.py function test_process_tasks_batches_replicate_calls (line 12) | async def test_process_tasks_batches_replicate_calls( function test_remove_background_batches_calls (line 39) | async def test_remove_background_batches_calls( FILE: backend/tests/test_codegen_utils.py function test_extract_html_content_from_wrapped_file_tag (line 4) | def test_extract_html_content_from_wrapped_file_tag() -> None: FILE: backend/tests/test_evals_openai_input_compare.py function test_compare_openai_inputs_for_evals_returns_first_difference (line 8) | async def test_compare_openai_inputs_for_evals_returns_first_difference(... function test_compare_openai_inputs_for_evals_rejects_invalid_json (line 32) | async def test_compare_openai_inputs_for_evals_rejects_invalid_json() ->... FILE: backend/tests/test_image_generation_replicate.py function test_extract_output_url_from_string (line 6) | def test_extract_output_url_from_string() -> None: function test_extract_output_url_from_dict (line 13) | def test_extract_output_url_from_dict() -> None: function test_extract_output_url_from_list (line 20) | def test_extract_output_url_from_list() -> None: function test_extract_output_url_from_list_item_dict (line 27) | def test_extract_output_url_from_list_item_dict() -> None: function test_extract_output_url_invalid_raises (line 36) | def test_extract_output_url_invalid_raises() -> None: function test_call_replicate_uses_flux_model (line 42) | async def test_call_replicate_uses_flux_model(monkeypatch: pytest.Monkey... function test_remove_background_uses_version_and_normalizes_output (line 63) | async def test_remove_background_uses_version_and_normalizes_output( FILE: backend/tests/test_model_selection.py class TestModelSelectionAllKeys (line 7) | class TestModelSelectionAllKeys: method setup_method (line 10) | def setup_method(self): method test_gemini_anthropic_create (line 16) | async def test_gemini_anthropic_create(self): method test_gemini_anthropic_update_text (line 35) | async def test_gemini_anthropic_update_text(self): method test_gemini_anthropic_update (line 52) | async def test_gemini_anthropic_update(self): method test_video_create_prefers_gemini_minimal_then_3_1_high (line 69) | async def test_video_create_prefers_gemini_minimal_then_3_1_high(self): method test_video_update_prefers_gemini_minimal_then_3_1_high (line 86) | async def test_video_update_prefers_gemini_minimal_then_3_1_high(self): class TestModelSelectionOpenAIAnthropic (line 103) | class TestModelSelectionOpenAIAnthropic: method setup_method (line 106) | def setup_method(self): method test_openai_anthropic (line 112) | async def test_openai_anthropic(self): class TestModelSelectionAnthropicOnly (line 131) | class TestModelSelectionAnthropicOnly: method setup_method (line 134) | def setup_method(self): method test_anthropic_only (line 140) | async def test_anthropic_only(self): class TestModelSelectionOpenAIOnly (line 159) | class TestModelSelectionOpenAIOnly: method setup_method (line 162) | def setup_method(self): method test_openai_only (line 168) | async def test_openai_only(self): class TestModelSelectionNoKeys (line 187) | class TestModelSelectionNoKeys: method setup_method (line 190) | def setup_method(self): method test_no_keys_raises_error (line 196) | async def test_no_keys_raises_error(self): FILE: backend/tests/test_openai_input_compare.py function test_compare_openai_inputs_returns_none_for_identical_inputs (line 9) | def test_compare_openai_inputs_returns_none_for_identical_inputs() -> None: function test_compare_openai_inputs_finds_first_different_block_and_field (line 26) | def test_compare_openai_inputs_finds_first_different_block_and_field() -... function test_compare_openai_inputs_accepts_raw_input_arrays (line 70) | def test_compare_openai_inputs_accepts_raw_input_arrays() -> None: FILE: backend/tests/test_openai_provider_session.py class _EmptyAsyncStream (line 12) | class _EmptyAsyncStream: method __aiter__ (line 13) | def __aiter__(self) -> "_EmptyAsyncStream": method __anext__ (line 16) | async def __anext__(self) -> object: class _FakeResponses (line 20) | class _FakeResponses: method __init__ (line 21) | def __init__(self) -> None: method create (line 24) | async def create(self, **kwargs: Any) -> _EmptyAsyncStream: class _FakeOpenAIClient (line 29) | class _FakeOpenAIClient: method __init__ (line 30) | def __init__(self) -> None: method close (line 33) | async def close(self) -> None: function _noop_event_sink (line 37) | async def _noop_event_sink(_: Any) -> None: function _test_tools (line 41) | def _test_tools() -> list[dict[str, Any]]: function test_openai_provider_session_omits_prompt_cache_key_across_turns (line 60) | async def test_openai_provider_session_omits_prompt_cache_key_across_tur... function test_openai_provider_session_omits_prompt_cache_key_for_all_prompts (line 121) | async def test_openai_provider_session_omits_prompt_cache_key_for_all_pr... function test_openai_provider_session_uses_gpt_5_4_none_reasoning_effort (line 155) | async def test_openai_provider_session_uses_gpt_5_4_none_reasoning_effor... function test_openai_provider_session_uses_gpt_5_4_high_reasoning_effort (line 174) | async def test_openai_provider_session_uses_gpt_5_4_high_reasoning_effor... FILE: backend/tests/test_openai_reasoning_parser.py function test_reasoning_summary_part_skipped_after_summary_delta (line 12) | async def test_reasoning_summary_part_skipped_after_summary_delta() -> N... function test_reasoning_summary_part_added_and_done_emits_once (line 38) | async def test_reasoning_summary_part_added_and_done_emits_once() -> None: function test_convert_image_url_defaults_to_high_detail (line 66) | def test_convert_image_url_defaults_to_high_detail() -> None: function test_convert_image_url_preserves_explicit_detail (line 78) | def test_convert_image_url_preserves_explicit_detail() -> None: FILE: backend/tests/test_openai_turn_input_logging.py function test_openai_turn_input_logger_writes_html_report (line 8) | def test_openai_turn_input_logger_writes_html_report(tmp_path, monkeypat... function test_openai_turn_input_logger_preserves_full_large_payloads (line 55) | def test_openai_turn_input_logger_preserves_full_large_payloads( function test_openai_turn_input_logger_includes_request_payload (line 82) | def test_openai_turn_input_logger_includes_request_payload( function test_openai_turn_input_logger_disabled_writes_nothing (line 110) | def test_openai_turn_input_logger_disabled_writes_nothing(tmp_path, monk... function test_openai_turn_input_logger_summarizes_function_call_output (line 123) | def test_openai_turn_input_logger_summarizes_function_call_output( FILE: backend/tests/test_parameter_extraction_stage.py function test_extracts_gemini_api_key_from_settings_dialog (line 9) | async def test_extracts_gemini_api_key_from_settings_dialog() -> None: function test_extracts_gemini_api_key_from_env_when_not_in_request (line 27) | async def test_extracts_gemini_api_key_from_env_when_not_in_request(monk... FILE: backend/tests/test_prompt_summary.py function test_format_prompt_summary (line 15) | def test_format_prompt_summary(): function test_print_prompt_summary (line 39) | def test_print_prompt_summary(): function test_print_prompt_summary_long_content (line 64) | def test_print_prompt_summary_long_content(): function test_format_prompt_summary_no_truncate (line 94) | def test_format_prompt_summary_no_truncate(): function test_print_prompt_summary_no_truncate (line 114) | def test_print_prompt_summary_no_truncate(): function test_format_prompt_preview_collapses_long_content (line 137) | def test_format_prompt_preview_collapses_long_content(): function test_print_prompt_preview (line 153) | def test_print_prompt_preview(): FILE: backend/tests/test_prompts.py class ExpectedResult (line 16) | class ExpectedResult(TypedDict): function assert_structure_match (line 20) | def assert_structure_match(actual: object, expected: object, path: str =... class TestCreatePrompt (line 77) | class TestCreatePrompt: method wrapped_file (line 91) | def wrapped_file(content: str) -> str: method test_plan_create_uses_create_from_input (line 94) | def test_plan_create_uses_create_from_input(self) -> None: method test_plan_update_with_history_uses_history_strategy (line 104) | def test_plan_update_with_history_uses_history_strategy(self) -> None: method test_plan_update_without_history_uses_file_snapshot_strategy (line 114) | def test_plan_update_without_history_uses_file_snapshot_strategy(self)... method test_image_mode_create_single_image (line 125) | async def test_image_mode_create_single_image(self) -> None: method test_image_mode_create_with_image_generation_disabled (line 174) | async def test_image_mode_create_with_image_generation_disabled(self) ... method test_image_mode_update_with_history (line 211) | async def test_image_mode_update_with_history(self) -> None: method test_update_history_with_image_generation_disabled (line 270) | async def test_update_history_with_image_generation_disabled(self) -> ... method test_text_mode_create_generation (line 296) | async def test_text_mode_create_generation(self) -> None: method test_text_mode_update_with_history (line 339) | async def test_text_mode_update_with_history(self) -> None: method test_video_mode_basic_prompt_creation (line 406) | async def test_video_mode_basic_prompt_creation(self) -> None: method test_create_raises_on_unsupported_input_mode (line 460) | async def test_create_raises_on_unsupported_input_mode(self) -> None: method test_image_mode_update_with_single_image_in_history (line 477) | async def test_image_mode_update_with_single_image_in_history(self) ->... method test_image_mode_update_with_multiple_images_in_history (line 547) | async def test_image_mode_update_with_multiple_images_in_history(self)... method test_update_with_empty_images_arrays (line 625) | async def test_update_with_empty_images_arrays(self) -> None: method test_update_bootstraps_from_file_state_when_history_is_empty (line 682) | async def test_update_bootstraps_from_file_state_when_history_is_empty... method test_update_requires_history_or_file_state (line 750) | async def test_update_requires_history_or_file_state(self) -> None: method test_update_history_requires_user_message (line 761) | async def test_update_history_requires_user_message(self) -> None: FILE: backend/tests/test_request_parsing.py function test_parse_prompt_content_with_valid_data (line 4) | def test_parse_prompt_content_with_valid_data() -> None: function test_parse_prompt_content_filters_invalid_media_types (line 20) | def test_parse_prompt_content_filters_invalid_media_types() -> None: function test_parse_prompt_content_defaults_for_invalid_payload (line 36) | def test_parse_prompt_content_defaults_for_invalid_payload() -> None: function test_parse_prompt_history_with_valid_entries (line 42) | def test_parse_prompt_history_with_valid_entries() -> None: function test_parse_prompt_history_filters_invalid_items (line 76) | def test_parse_prompt_history_filters_invalid_items() -> None: function test_parse_prompt_history_defaults_for_invalid_payload (line 102) | def test_parse_prompt_history_defaults_for_invalid_payload() -> None: FILE: backend/tests/test_screenshot.py class TestNormalizeUrl (line 5) | class TestNormalizeUrl: method test_url_without_protocol (line 8) | def test_url_without_protocol(self): method test_url_with_http_protocol (line 14) | def test_url_with_http_protocol(self): method test_url_with_https_protocol (line 19) | def test_url_with_https_protocol(self): method test_url_with_path_and_params (line 24) | def test_url_with_path_and_params(self): method test_url_with_whitespace (line 30) | def test_url_with_whitespace(self): method test_invalid_protocols (line 35) | def test_invalid_protocols(self): method test_localhost_urls (line 43) | def test_localhost_urls(self): method test_ip_address_urls (line 49) | def test_ip_address_urls(self): method test_complex_urls (line 55) | def test_complex_urls(self): FILE: backend/tests/test_status_broadcast.py function test_video_update_broadcasts_two_variants (line 15) | async def test_video_update_broadcasts_two_variants() -> None: function test_image_update_broadcasts_two_variants (line 67) | async def test_image_update_broadcasts_two_variants() -> None: FILE: backend/tests/test_token_usage.py class TestAccumulate (line 17) | class TestAccumulate: method test_sums_all_fields (line 18) | def test_sums_all_fields(self) -> None: method test_accumulate_zero_is_noop (line 26) | def test_accumulate_zero_is_noop(self) -> None: method test_multiple_accumulations (line 31) | def test_multiple_accumulations(self) -> None: class TestCost (line 46) | class TestCost: method test_basic_cost (line 47) | def test_basic_cost(self) -> None: method test_zero_tokens_zero_cost (line 53) | def test_zero_tokens_zero_cost(self) -> None: method test_cache_heavy_scenario (line 58) | def test_cache_heavy_scenario(self) -> None: method test_anthropic_with_cache_write (line 69) | def test_anthropic_with_cache_write(self) -> None: class TestCacheHitRate (line 89) | class TestCacheHitRate: method test_zero_total_input_is_zero_percent (line 90) | def test_zero_total_input_is_zero_percent(self) -> None: method test_cache_hit_rate_without_cache_write (line 95) | def test_cache_hit_rate_without_cache_write(self) -> None: method test_cache_hit_rate_includes_cache_write_in_denominator (line 100) | def test_cache_hit_rate_includes_cache_write_in_denominator(self) -> N... function _gemini_chunk (line 111) | def _gemini_chunk( class TestGeminiExtract (line 130) | class TestGeminiExtract: method test_normal_response (line 131) | def test_normal_response(self) -> None: method test_no_cache (line 143) | def test_no_cache(self) -> None: method test_no_usage_metadata_returns_none (line 150) | def test_no_usage_metadata_returns_none(self) -> None: method test_none_subfields_default_to_zero (line 154) | def test_none_subfields_default_to_zero(self) -> None: function _openai_response (line 173) | def _openai_response( class TestOpenAIExtract (line 190) | class TestOpenAIExtract: method test_normal_response (line 191) | def test_normal_response(self) -> None: method test_no_cache (line 202) | def test_no_cache(self) -> None: method test_no_usage_returns_empty (line 210) | def test_no_usage_returns_empty(self) -> None: method test_no_input_tokens_details (line 215) | def test_no_input_tokens_details(self) -> None: function _anthropic_message (line 233) | def _anthropic_message( class TestAnthropicExtract (line 250) | class TestAnthropicExtract: method test_normal_response (line 251) | def test_normal_response(self) -> None: method test_no_cache (line 262) | def test_no_cache(self) -> None: method test_no_usage_returns_empty (line 270) | def test_no_usage_returns_empty(self) -> None: class TestModelPricing (line 281) | class TestModelPricing: method test_known_models_have_pricing (line 282) | def test_known_models_have_pricing(self) -> None: method test_unknown_model_returns_none (line 294) | def test_unknown_model_returns_none(self) -> None: method test_anthropic_has_cache_write_rate (line 297) | def test_anthropic_has_cache_write_rate(self) -> None: method test_openai_gemini_no_cache_write (line 301) | def test_openai_gemini_no_cache_write(self) -> None: FILE: backend/utils.py function pprint_prompt (line 8) | def pprint_prompt(prompt_messages: List[ChatCompletionMessageParam]): function format_prompt_summary (line 12) | def format_prompt_summary(prompt_messages: List[ChatCompletionMessagePar... function print_prompt_summary (line 39) | def print_prompt_summary(prompt_messages: List[ChatCompletionMessagePara... function _collapse_preview_text (line 79) | def _collapse_preview_text(text: str, max_chars: int = 280) -> str: function format_prompt_preview (line 100) | def format_prompt_preview( function print_prompt_preview (line 142) | def print_prompt_preview(prompt_messages: List[ChatCompletionMessagePara... function truncate_data_strings (line 172) | def truncate_data_strings(data: List[ChatCompletionMessageParam]): # ty... FILE: backend/video/cost_estimation.py class MediaResolution (line 7) | class MediaResolution(Enum): class TokenEstimate (line 14) | class TokenEstimate: class CostEstimate (line 21) | class CostEstimate: function get_model_api_name (line 56) | def get_model_api_name(model: Llm) -> str: function estimate_video_input_tokens (line 68) | def estimate_video_input_tokens( function estimate_output_tokens (line 84) | def estimate_output_tokens( function calculate_cost (line 106) | def calculate_cost( function estimate_video_generation_cost (line 127) | def estimate_video_generation_cost( function format_cost_estimate (line 153) | def format_cost_estimate(cost: CostEstimate) -> str: function format_detailed_input_estimate (line 162) | def format_detailed_input_estimate( function get_video_duration_from_bytes (line 187) | def get_video_duration_from_bytes(video_bytes: bytes) -> float | None: FILE: backend/video/utils.py function extract_tag_content (line 4) | def extract_tag_content(tag: str, text: str) -> str: function get_video_bytes_and_mime_type (line 21) | def get_video_bytes_and_mime_type(video_data_url: str) -> tuple[bytes, s... FILE: frontend/src/App.tsx function App (line 37) | function App() { FILE: frontend/src/components/ImageLightbox.tsx constant MIN_ZOOM (line 5) | const MIN_ZOOM = 0.5; constant MAX_ZOOM (line 6) | const MAX_ZOOM = 10; constant DEFAULT_DISPLAY_WIDTH (line 7) | const DEFAULT_DISPLAY_WIDTH = 1000; type ImageLightboxProps (line 9) | interface ImageLightboxProps { function ImageLightbox (line 14) | function ImageLightbox({ image, onClose }: ImageLightboxProps) { FILE: frontend/src/components/ImageUpload.tsx function fileToDataURL (line 41) | function fileToDataURL(file: File): Promise { type FileWithPreview (line 64) | type FileWithPreview = { type Props (line 68) | interface Props { function ImageUpload (line 79) | function ImageUpload({ setReferenceImages, onUploadStateChange, stack, s... FILE: frontend/src/components/ImportCodeSection.tsx type Props (line 17) | interface Props { function ImportCodeSection (line 21) | function ImportCodeSection({ importFromCode }: Props) { FILE: frontend/src/components/TermsOfServiceDialog.tsx constant LOGOS (line 14) | const LOGOS = ["microsoft", "amazon", "mit", "stanford", "bytedance", "b... FILE: frontend/src/components/UpdateImageUpload.tsx constant MAX_UPDATE_IMAGES (line 6) | const MAX_UPDATE_IMAGES = 5; function fileToDataURL (line 9) | function fileToDataURL(file: File): Promise { type Props (line 18) | interface Props { function UpdateImagePreview (line 23) | function UpdateImagePreview({ updateImages, setUpdateImages }: Props) { function UpdateImageUpload (line 56) | function UpdateImageUpload({ updateImages, setUpdateImages }: Props) { FILE: frontend/src/components/agent/AgentActivity.tsx function CodePreviewBlock (line 29) | function CodePreviewBlock({ code, isGenerating }: { code: string; isGene... function isFiniteNumber (line 52) | function isFiniteNumber(value: unknown): value is number { function formatDurationMs (line 56) | function formatDurationMs(milliseconds: number): string { function formatDuration (line 67) | function formatDuration(startedAt?: number, endedAt?: number): string { function formatElapsedSince (line 72) | function formatElapsedSince(timestampMs: number | undefined, nowMs: numb... function formatVariantWallClockDuration (line 77) | function formatVariantWallClockDuration( function getEventIcon (line 88) | function getEventIcon(type: AgentEventType, toolName?: string) { function getEventTitle (line 113) | function getEventTitle(event: AgentEvent): string { function renderToolDetails (line 158) | function renderToolDetails(event: AgentEvent, variantCode?: string) { function AgentEventCard (line 372) | function AgentEventCard({ function AgentActivity (line 459) | function AgentActivity() { FILE: frontend/src/components/commits/types.ts type CommitHash (line 3) | type CommitHash = string; type VariantStatus (line 5) | type VariantStatus = "generating" | "complete" | "cancelled" | "error"; type AgentEventStatus (line 7) | type AgentEventStatus = "running" | "complete" | "error"; type AgentEventType (line 8) | type AgentEventType = "thinking" | "assistant" | "tool"; type AgentEvent (line 10) | type AgentEvent = { type VariantHistoryMessage (line 22) | type VariantHistoryMessage = { type Variant (line 29) | type Variant = { type BaseCommit (line 43) | type BaseCommit = { type CommitType (line 52) | type CommitType = "ai_create" | "ai_edit" | "code_create"; type AiCreateCommit (line 54) | type AiCreateCommit = BaseCommit & { type AiEditCommit (line 59) | type AiEditCommit = BaseCommit & { type CodeCreateCommit (line 64) | type CodeCreateCommit = BaseCommit & { type Commit (line 69) | type Commit = AiCreateCommit | AiEditCommit | CodeCreateCommit; FILE: frontend/src/components/commits/utils.ts function createCommit (line 9) | function createCommit( FILE: frontend/src/components/core/KeyboardShortcutBadge.tsx type KeyboardShortcutBadgeProps (line 4) | interface KeyboardShortcutBadgeProps { FILE: frontend/src/components/core/Spinner.tsx function Spinner (line 1) | function Spinner() { FILE: frontend/src/components/core/StackLabel.tsx type StackLabelProps (line 4) | interface StackLabelProps { FILE: frontend/src/components/core/WorkingPulse.tsx function WorkingPulse (line 1) | function WorkingPulse() { FILE: frontend/src/components/evals/AllEvalsPage.tsx function AllEvalsPage (line 3) | function AllEvalsPage() { FILE: frontend/src/components/evals/BestOfNEvalsPage.tsx type Eval (line 6) | interface Eval { type Outcome (line 12) | type Outcome = number | "tie" | null; type BestOfNEvalsResponse (line 14) | interface BestOfNEvalsResponse { type OutputFolder (line 19) | interface OutputFolder { function BestOfNEvalsPage (line 25) | function BestOfNEvalsPage() { FILE: frontend/src/components/evals/EvalNavigation.tsx function EvalNavigation (line 3) | function EvalNavigation() { FILE: frontend/src/components/evals/EvalsPage.tsx type Eval (line 6) | interface Eval { type RatingCriteria (line 11) | interface RatingCriteria { type OutputDisplay (line 19) | interface OutputDisplay { function EvalsPage (line 23) | function EvalsPage() { FILE: frontend/src/components/evals/InputFileSelector.tsx type InputFile (line 6) | interface InputFile { type InputFileSelectorProps (line 11) | interface InputFileSelectorProps { function InputFileSelector (line 15) | function InputFileSelector({ onFilesSelected }: InputFileSelectorProps) { FILE: frontend/src/components/evals/OpenAIInputComparePage.tsx type OpenAIInputDifference (line 6) | interface OpenAIInputDifference { type OpenAIInputCompareResponse (line 15) | interface OpenAIInputCompareResponse { function formatJson (line 23) | function formatJson(value: unknown): string { function OpenAIInputComparePage (line 28) | function OpenAIInputComparePage() { FILE: frontend/src/components/evals/PairwiseEvalsPage.tsx type Eval (line 6) | interface Eval { type Outcome (line 11) | type Outcome = "left" | "right" | "tie" | null; type PairwiseEvalsResponse (line 13) | interface PairwiseEvalsResponse { function PairwiseEvalsPage (line 19) | function PairwiseEvalsPage() { FILE: frontend/src/components/evals/RatingPicker.tsx type RatingPickerProps (line 1) | interface RatingPickerProps { function RatingPicker (line 7) | function RatingPicker({ FILE: frontend/src/components/evals/RunEvalsPage.tsx type ModelResponse (line 9) | interface ModelResponse { type EvalProgressEvent (line 14) | interface EvalProgressEvent { type FailedTask (line 34) | interface FailedTask { function RunEvalsPage (line 40) | function RunEvalsPage() { FILE: frontend/src/components/generate-from-text/GenerateFromText.tsx type GenerateFromTextProps (line 6) | interface GenerateFromTextProps { function GenerateFromText (line 10) | function GenerateFromText({ doCreateFromText }: GenerateFromTextProps) { FILE: frontend/src/components/history/HistoryDisplay.tsx function MediaThumbnail (line 6) | function MediaThumbnail({ function ExpandedMedia (line 57) | function ExpandedMedia({ function HistoryDisplay (line 110) | function HistoryDisplay() { FILE: frontend/src/components/history/utils.ts function displayHistoryItemType (line 3) | function displayHistoryItemType(itemType: CommitType) { function extractTagName (line 34) | function extractTagName(html: string): string { function getCommitMedia (line 39) | function getCommitMedia(commit: Commit): { images: string[]; videos: str... function summarizeHistoryItem (line 49) | function summarizeHistoryItem(commit: Commit): string { function getSelectedElementTag (line 65) | function getSelectedElementTag(commit: Commit): string | null { type RenderedHistoryItem (line 72) | type RenderedHistoryItem = Omit & { FILE: frontend/src/components/messages/OnboardingNote.tsx function OnboardingNote (line 1) | function OnboardingNote() { FILE: frontend/src/components/messages/PicoBadge.tsx function PicoBadge (line 1) | function PicoBadge() { FILE: frontend/src/components/messages/TipLink.tsx function TipLink (line 3) | function TipLink() { FILE: frontend/src/components/preview/CodeMirror.tsx type Props (line 16) | interface Props { function CodeMirror (line 22) | function CodeMirror({ code, editorTheme, onCodeChange }: Props) { FILE: frontend/src/components/preview/CodePreview.tsx type Props (line 3) | interface Props { function CodePreview (line 7) | function CodePreview({ code }: Props) { FILE: frontend/src/components/preview/CodeTab.tsx type Props (line 9) | interface Props { function CodeTab (line 15) | function CodeTab({ code, setCode, settings }: Props) { FILE: frontend/src/components/preview/PreviewComponent.tsx type Props (line 7) | interface Props { constant MOBILE_VIEWPORT_WIDTH (line 14) | const MOBILE_VIEWPORT_WIDTH = 375; constant DESKTOP_VIEWPORT_WIDTH (line 15) | const DESKTOP_VIEWPORT_WIDTH = 1366; function PreviewComponent (line 17) | function PreviewComponent({ FILE: frontend/src/components/preview/PreviewPane.tsx function openInNewTab (line 24) | function openInNewTab(code: string) { type Props (line 33) | interface Props { function PreviewPane (line 38) | function PreviewPane({ settings, onOpenVersions }: Props) { FILE: frontend/src/components/preview/extractHtml.ts function extractHtml (line 2) | function extractHtml(code: string): string { FILE: frontend/src/components/preview/simpleHash.ts function simpleHash (line 2) | function simpleHash(str: string, seed = 0) { FILE: frontend/src/components/recording/ScreenRecorder.tsx type Props (line 10) | interface Props { function ScreenRecorder (line 21) | function ScreenRecorder({ FILE: frontend/src/components/recording/utils.ts function downloadBlob (line 1) | function downloadBlob(blob: Blob) { function blobToBase64DataUrl (line 17) | function blobToBase64DataUrl(blob: Blob): Promise { FILE: frontend/src/components/select-and-edit/utils.ts function removeHighlight (line 1) | function removeHighlight(element: HTMLElement) { function addHighlight (line 7) | function addHighlight(element: HTMLElement) { FILE: frontend/src/components/settings/GenerationSettings.tsx type GenerationSettingsProps (line 8) | interface GenerationSettingsProps { function setStack (line 20) | function setStack(stack: Stack) { FILE: frontend/src/components/settings/OutputSettingsSection.tsx type Props (line 12) | interface Props { function OutputSettingsSection (line 19) | function OutputSettingsSection({ FILE: frontend/src/components/settings/SettingsTab.tsx type Props (line 14) | interface Props { function SettingsTab (line 21) | function SettingsTab({ settings, setSettings, appTheme, setAppTheme }: P... FILE: frontend/src/components/sidebar/IconStrip.tsx type IconStripProps (line 3) | interface IconStripProps { function IconStrip (line 16) | function IconStrip({ FILE: frontend/src/components/sidebar/Sidebar.tsx type SidebarProps (line 18) | interface SidebarProps { constant MAX_UPDATE_IMAGES (line 26) | const MAX_UPDATE_IMAGES = 5; function extractTagName (line 28) | function extractTagName(html: string): string { function summarizeLatestChange (line 33) | function summarizeLatestChange(commit: Commit | null): string | null { function getSelectedElementTag (line 53) | function getSelectedElementTag(commit: Commit | null): string | null { function isSlowGeminiModel (line 60) | function isSlowGeminiModel(model?: string): boolean { function Sidebar (line 67) | function Sidebar({ FILE: frontend/src/components/start-pane/StartPane.tsx type Props (line 6) | interface Props { FILE: frontend/src/components/thinking/ThinkingIndicator.tsx function getLastSentence (line 6) | function getLastSentence(text: string): string { function ThinkingIndicator (line 20) | function ThinkingIndicator() { FILE: frontend/src/components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: frontend/src/components/ui/button.tsx type ButtonProps (line 37) | interface ButtonProps FILE: frontend/src/components/ui/input.tsx type InputProps (line 5) | interface InputProps FILE: frontend/src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps FILE: frontend/src/components/unified-input/UnifiedInputPane.tsx type Props (line 10) | interface Props { type InputTab (line 22) | type InputTab = "upload" | "url" | "text" | "import"; function UnifiedInputPane (line 24) | function UnifiedInputPane({ function UploadIcon (line 115) | function UploadIcon() { function UrlIcon (line 135) | function UrlIcon() { function TextIcon (line 154) | function TextIcon() { function ImportIcon (line 174) | function ImportIcon() { FILE: frontend/src/components/unified-input/tabs/ImportTab.tsx type Props (line 9) | interface Props { function ImportTab (line 13) | function ImportTab({ importFromCode }: Props) { FILE: frontend/src/components/unified-input/tabs/TextTab.tsx type Props (line 8) | interface Props { constant EXAMPLE_PROMPTS (line 14) | const EXAMPLE_PROMPTS = [ function TextTab (line 21) | function TextTab({ doCreateFromText, stack, setStack }: Props) { FILE: frontend/src/components/unified-input/tabs/UploadTab.tsx function fileToDataURL (line 11) | function fileToDataURL(file: File): Promise { type FileWithPreview (line 31) | type FileWithPreview = { constant MAX_FILES (line 35) | const MAX_FILES = 5; type Props (line 43) | interface Props { function UploadTab (line 53) | function UploadTab({ doCreate, stack, setStack }: Props) { FILE: frontend/src/components/unified-input/tabs/UrlTab.tsx type Props (line 9) | interface Props { function isFigmaUrl (line 20) | function isFigmaUrl(url: string): boolean { function UrlTab (line 24) | function UrlTab({ doCreate, screenshotOneApiKey, stack, setStack }: Prop... FILE: frontend/src/components/variants/Variants.tsx constant IFRAME_WIDTH (line 10) | const IFRAME_WIDTH = 1280; constant IFRAME_HEIGHT (line 11) | const IFRAME_HEIGHT = 550; type VariantThumbnailProps (line 13) | interface VariantThumbnailProps { function VariantThumbnail (line 18) | function VariantThumbnail({ code, isSelected }: VariantThumbnailProps) { function Variants (line 71) | function Variants() { FILE: frontend/src/config.ts constant IS_RUNNING_ON_CLOUD (line 2) | const IS_RUNNING_ON_CLOUD = constant WS_BACKEND_URL (line 5) | const WS_BACKEND_URL = constant HTTP_BACKEND_URL (line 8) | const HTTP_BACKEND_URL = constant PICO_BACKEND_FORM_SECRET (line 11) | const PICO_BACKEND_FORM_SECRET = FILE: frontend/src/constants.ts constant APP_ERROR_WEB_SOCKET_CODE (line 2) | const APP_ERROR_WEB_SOCKET_CODE = 4332; constant USER_CLOSE_WEB_SOCKET_CODE (line 3) | const USER_CLOSE_WEB_SOCKET_CODE = 4333; FILE: frontend/src/generateCode.ts constant ERROR_MESSAGE (line 9) | const ERROR_MESSAGE = constant CANCEL_MESSAGE (line 12) | const CANCEL_MESSAGE = "Code generation cancelled"; type WebSocketResponse (line 14) | type WebSocketResponse = { type CodeGenerationCallbacks (line 34) | interface CodeGenerationCallbacks { function generateCode (line 53) | function generateCode( FILE: frontend/src/hooks/useBrowserTabIndicator.ts constant CODING_SETTINGS (line 3) | const CODING_SETTINGS = { constant DEFAULT_SETTINGS (line 7) | const DEFAULT_SETTINGS = { constant DEV_FAVICON_COLORS (line 12) | const DEV_FAVICON_COLORS = { FILE: frontend/src/hooks/usePersistedState.ts type PersistedState (line 3) | type PersistedState = [T, Dispatch>]; function usePersistedState (line 5) | function usePersistedState(defaultValue: T, key: string): PersistedSt... FILE: frontend/src/hooks/useThrottle.ts function useThrottle (line 6) | function useThrottle(value: string, interval = 500) { FILE: frontend/src/lib/models.ts type CodeGenerationModel (line 3) | enum CodeGenerationModel { constant CODE_GENERATION_MODEL_DESCRIPTIONS (line 24) | const CODE_GENERATION_MODEL_DESCRIPTIONS: { FILE: frontend/src/lib/prompt-history.ts type GenerationRequest (line 9) | type GenerationRequest = CodeGenerationParams & { type AssetsById (line 13) | type AssetsById = Record; type GetAssetsById (line 14) | type GetAssetsById = () => AssetsById; type UpsertPromptAssets (line 15) | type UpsertPromptAssets = (assets: PromptAsset[]) => void; type CreateId (line 16) | type CreateId = () => string; function cloneVariantHistory (line 18) | function cloneVariantHistory( function registerAssetIds (line 28) | function registerAssetIds( function resolveAssetIdsToDataUrls (line 65) | function resolveAssetIdsToDataUrls( function toRequestHistory (line 75) | function toRequestHistory( function buildUserHistoryMessage (line 87) | function buildUserHistoryMessage( function buildAssistantHistoryMessage (line 100) | function buildAssistantHistoryMessage( FILE: frontend/src/lib/stacks.ts type Stack (line 3) | enum Stack { constant STACK_DESCRIPTIONS (line 12) | const STACK_DESCRIPTIONS: { FILE: frontend/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { function capitalize (line 8) | function capitalize(str: string) { FILE: frontend/src/store/app-store.ts type AppStore (line 5) | interface AppStore { FILE: frontend/src/store/project-store.ts type ProjectStore (line 12) | interface ProjectStore { FILE: frontend/src/tests/qa.test.ts type Window (line 8) | interface Window { constant RUN_E2E (line 15) | const RUN_E2E = process.env.RUN_E2E === "true"; constant TESTS_ROOT_PATH (line 18) | const TESTS_ROOT_PATH = constant FIXTURES_PATH (line 22) | const FIXTURES_PATH = path.join(TESTS_ROOT_PATH, "fixtures"); constant SIMPLE_SCREENSHOT (line 23) | const SIMPLE_SCREENSHOT = path.join(FIXTURES_PATH, "simple_button.png"); constant SCREENSHOT_WITH_IMAGES (line 24) | const SCREENSHOT_WITH_IMAGES = path.join( constant SIMPLE_HTML (line 28) | const SIMPLE_HTML = path.join(FIXTURES_PATH, "simple_page.html"); constant RESULTS_DIR (line 31) | const RESULTS_DIR = path.join(TESTS_ROOT_PATH, "results"); class App (line 197) | class App { method constructor (line 203) | constructor(page: Page, stack: Stack, model: string, testId: string) { method init (line 210) | async init() { method setupLocalStorage (line 215) | async setupLocalStorage() { method resetTestHooks (line 236) | async resetTestHooks() { method takeScreenshot (line 244) | async takeScreenshot(step: string) { method waitUntilVersionIsReady (line 250) | async waitUntilVersionIsReady(version: string) { method switchToTab (line 263) | async switchToTab(testId: string) { method generateFromUrl (line 267) | async generateFromUrl(url: string) { method generateFromText (line 276) | async generateFromText(prompt: string) { method uploadImage (line 285) | async uploadImage(screenshotPath: string) { method importFromCode (line 302) | async importFromCode(code: string) { method edit (line 321) | async edit(edit: string, version: string) { method clickVersion (line 329) | async clickVersion(version: string) { method regenerate (line 339) | async regenerate() { method assertCodeActions (line 345) | async assertCodeActions() { function setupRequestInterception (line 366) | async function setupRequestInterception( function installDomTestHooks (line 394) | async function installDomTestHooks(page: Page) { function installMockWebSocket (line 423) | async function installMockWebSocket(page: Page) { FILE: frontend/src/types.ts type EditorTheme (line 4) | enum EditorTheme { type AppTheme (line 9) | enum AppTheme { type Settings (line 15) | interface Settings { type AppState (line 29) | enum AppState { type ScreenRecorderState (line 35) | enum ScreenRecorderState { type PromptMessageRole (line 41) | type PromptMessageRole = "user" | "assistant"; type PromptAssetType (line 42) | type PromptAssetType = "image" | "video"; type PromptAsset (line 44) | interface PromptAsset { type PromptContent (line 50) | interface PromptContent { type PromptHistoryMessage (line 57) | interface PromptHistoryMessage { type CodeGenerationParams (line 64) | interface CodeGenerationParams { type FullGenerationSettings (line 76) | type FullGenerationSettings = CodeGenerationParams & Settings; FILE: frontend/src/urls.ts constant URLS (line 1) | const URLS = {