SYMBOL INDEX (3430 symbols across 375 files) FILE: .github/scripts/check_copyright_headers.py function git_ls_files (line 48) | def git_ls_files() -> list[str]: function is_excluded (line 59) | def is_excluded(path: str) -> bool: function has_spdx_header (line 64) | def has_spdx_header(filepath: str) -> bool: function main (line 78) | def main() -> int: FILE: agent/docker/cleanup_vulnerabilities.py function remove_path (line 27) | def remove_path(path): function find_all_expat_files (line 49) | def find_all_expat_files(): function main (line 71) | def main(): FILE: agent/docker/verify_ffmpeg_tarball.py function find_tarball (line 40) | def find_tarball(search_dir: Path) -> Path | None: function is_valid_gzip (line 46) | def is_valid_gzip(filepath: Path) -> bool: function get_file_info (line 57) | def get_file_info(filepath: Path) -> str: function main (line 70) | def main() -> int: FILE: agent/src/sitecustomize.py function _load_env_file (line 38) | def _load_env_file(env_path: Path) -> None: function _auto_load_env_files (line 51) | def _auto_load_env_files() -> None: FILE: agent/src/vss_agents/agents/critic_agent.py class CriticAgentConfig (line 87) | class CriticAgentConfig(FunctionBaseConfig, name="critic_agent"): class VideoInfo (line 111) | class VideoInfo(BaseModel): class CriticAgentInput (line 125) | class CriticAgentInput(BaseModel): class CriticAgentResult (line 137) | class CriticAgentResult(Enum): class VideoResult (line 146) | class VideoResult(BaseModel): class CriticAgentOutput (line 157) | class CriticAgentOutput(BaseModel): function get_json_from_string (line 163) | def get_json_from_string(string: str) -> str: function _convert_to_seconds (line 171) | def _convert_to_seconds(timestamp: str, video_start_dt: datetime) -> float: function critic_agent (line 178) | async def critic_agent(config: CriticAgentConfig, builder: Builder) -> A... FILE: agent/src/vss_agents/agents/data_models.py class AgentDecision (line 26) | class AgentDecision(enum.StrEnum): class AgentMessageChunkType (line 35) | class AgentMessageChunkType(enum.StrEnum): class AgentMessageChunk (line 45) | class AgentMessageChunk(BaseModel): class AgentOutput (line 52) | class AgentOutput(BaseModel): FILE: agent/src/vss_agents/agents/multi_report_agent.py class MultiReportAgentInput (line 43) | class MultiReportAgentInput(BaseModel): class MultiReportAgentConfig (line 68) | class MultiReportAgentConfig(FunctionBaseConfig, name="multi_report_agen... function multi_report_agent (line 88) | async def multi_report_agent(config: MultiReportAgentConfig, builder: Bu... FILE: agent/src/vss_agents/agents/postprocessing/data_models.py class ValidatorResult (line 27) | class ValidatorResult(BaseModel): class PostprocessingResult (line 35) | class PostprocessingResult(BaseModel): class BaseValidatorConfig (line 45) | class BaseValidatorConfig(BaseModel): class URLValidatorConfig (line 51) | class URLValidatorConfig(BaseValidatorConfig): class NonEmptyResponseValidatorConfig (line 59) | class NonEmptyResponseValidatorConfig(BaseValidatorConfig): class LLMBasedRuleValidatorConfig (line 65) | class LLMBasedRuleValidatorConfig(BaseValidatorConfig): class ValidatorsConfig (line 75) | class ValidatorsConfig(BaseModel): class PostprocessingConfig (line 83) | class PostprocessingConfig(BaseModel): FILE: agent/src/vss_agents/agents/postprocessing/postprocessing_node.py function _format_message (line 44) | def _format_message(msg: BaseMessage) -> str: function extract_current_trajectory (line 65) | def extract_current_trajectory(scratchpad: list[BaseMessage]) -> str: class PostprocessingNode (line 99) | class PostprocessingNode: method __init__ (line 102) | def __init__( method _create_validators (line 114) | def _create_validators(self) -> None: method _run_validator (line 142) | async def _run_validator(self, validator: BaseValidator, **kwargs: Any... method process (line 163) | async def process( FILE: agent/src/vss_agents/agents/postprocessing/validators/base.py class BaseValidator (line 26) | class BaseValidator(ABC): method __init__ (line 31) | def __init__( method validate (line 43) | async def validate(self, output: str, **kwargs: Any) -> ValidatorResult: method format_feedback (line 52) | def format_feedback(self, issues: list[str]) -> str: FILE: agent/src/vss_agents/agents/postprocessing/validators/llm_based_rule_validator.py class LLMBasedRuleValidatorOutput (line 39) | class LLMBasedRuleValidatorOutput(BaseModel): class LLMBasedRuleValidator (line 59) | class LLMBasedRuleValidator(BaseValidator): method __init__ (line 64) | def __init__( method validate (line 89) | async def validate(self, output: str, **kwargs: Any) -> ValidatorResult: FILE: agent/src/vss_agents/agents/postprocessing/validators/non_empty_response_validator.py class NonEmptyResponseValidator (line 27) | class NonEmptyResponseValidator(BaseValidator): method __init__ (line 32) | def __init__( method validate (line 46) | async def validate(self, output: str, **kwargs: Any) -> ValidatorResul... FILE: agent/src/vss_agents/agents/postprocessing/validators/url_validator.py function _strip_url (line 75) | def _strip_url(url: str) -> str: function extract_urls_from_tags_with_alt (line 80) | def extract_urls_from_tags_with_alt(text: str) -> list[str]: function extract_urls_from_markdown_links (line 96) | def extract_urls_from_markdown_links(text: str) -> list[str]: function is_valid_url (line 106) | def is_valid_url(src: str) -> bool: function extract_urls (line 111) | def extract_urls(text: str) -> list[str]: class URLValidator (line 123) | class URLValidator(BaseValidator): method __init__ (line 128) | def __init__( method validate (line 153) | async def validate(self, output: str, **kwargs: Any) -> ValidatorResul... method _validate_url (line 195) | async def _validate_url(self, session: aiohttp.ClientSession, url: str... method _try_request (line 217) | async def _try_request(self, session: aiohttp.ClientSession, url: str)... FILE: agent/src/vss_agents/agents/report_agent.py class ReportAgentInput (line 54) | class ReportAgentInput(BaseModel): class VideoReportAgentInput (line 90) | class VideoReportAgentInput(BaseModel): class ReportAgentConfig (line 112) | class ReportAgentConfig(FunctionBaseConfig, name="report_agent"): function report_agent (line 135) | async def report_agent(config: ReportAgentConfig, builder: Builder) -> A... FILE: agent/src/vss_agents/agents/search_agent.py function _to_search_results (line 58) | def _to_search_results(raw: list) -> list[SearchResult]: class SearchAgentInput (line 79) | class SearchAgentInput(BaseModel): class SearchAgentConfig (line 98) | class SearchAgentConfig(FunctionBaseConfig, name="search_agent"): function _to_incidents_output (line 177) | def _to_incidents_output(search_output: SearchOutput) -> str: function _helper_markdown_bullet_list (line 207) | def _helper_markdown_bullet_list(search_output: SearchOutput) -> str: function _to_chat_response (line 230) | def _to_chat_response(search_output: SearchOutput) -> ChatResponse: function _to_chat_response_chunk (line 236) | def _to_chat_response_chunk(search_output: SearchOutput) -> ChatResponse... function search_agent (line 243) | async def search_agent(config: SearchAgentConfig, builder: Builder) -> A... FILE: agent/src/vss_agents/agents/top_agent.py class TopAgentRequest (line 90) | class TopAgentRequest(ChatRequestOrMessage): function _extract_text_content (line 100) | def _extract_text_content(message: "Message") -> dict: function _get_content_text (line 132) | def _get_content_text(msg: BaseMessage) -> str: function strip_frontend_tags (line 147) | def strip_frontend_tags(content: str) -> str: class TopAgentState (line 166) | class TopAgentState(BaseModel): class TopAgentConfig (line 186) | class TopAgentConfig(FunctionBaseConfig, name="top_agent"): class TopAgent (line 229) | class TopAgent(AsyncMixin): method __ainit__ (line 250) | async def __ainit__( method _get_tool (line 313) | def _get_tool(self, tool_name: str) -> BaseTool | None: method _plan_update_node (line 320) | async def _plan_update_node(self, state: TopAgentState) -> TopAgentState: method _tool_accepts_param (line 407) | def _tool_accepts_param(self, tool_name: str, param_name: str) -> bool: method astream (line 415) | async def astream( method _plan_node (line 539) | async def _plan_node(self, state: TopAgentState) -> TopAgentState: method agent_node (line 651) | async def agent_node(self, state: TopAgentState) -> TopAgentState: method tool_or_subagent_node (line 757) | async def tool_or_subagent_node(self, state: TopAgentState) -> TopAgen... method _postprocessing_node (line 1031) | async def _postprocessing_node(self, state: TopAgentState) -> TopAgent... method _conditional_edge (line 1058) | async def _conditional_edge(self, state: TopAgentState) -> str: method _conditional_edge_from_tool (line 1091) | async def _conditional_edge_from_tool(self, state: TopAgentState) -> str: method finalize_node (line 1104) | async def finalize_node(self, state: TopAgentState) -> TopAgentState: method _build_graph (line 1129) | async def _build_graph(self) -> CompiledStateGraph: function _extract_prompt_sections (line 1197) | async def _extract_prompt_sections( function _get_subagents (line 1248) | async def _get_subagents(subagent_names: list[str], builder: Builder) ->... function top_agent (line 1288) | async def top_agent(config: TopAgentConfig, builder: Builder) -> AsyncGe... FILE: agent/src/vss_agents/api/custom_fastapi_worker.py class CustomFastApiFrontEndWorker (line 31) | class CustomFastApiFrontEndWorker(FastApiFrontEndPluginWorker): method __init__ (line 36) | def __init__(self, config: Config): method add_routes (line 40) | async def add_routes(self, app: FastAPI, builder: WorkflowBuilder) -> ... method _maybe_register_streaming_routes (line 65) | def _maybe_register_streaming_routes(self, app: FastAPI) -> None: FILE: agent/src/vss_agents/api/health_endpoint.py class HealthEndpointConfig (line 35) | class HealthEndpointConfig(FunctionBaseConfig, name="health_endpoint"): function health_endpoint (line 42) | async def health_endpoint(config: HealthEndpointConfig, _: Builder) -> A... FILE: agent/src/vss_agents/api/rtsp_stream_api.py class StreamMode (line 39) | class StreamMode(StrEnum): class ServiceConfig (line 53) | class ServiceConfig: method __init__ (line 56) | def __init__( class AddStreamRequest (line 78) | class AddStreamRequest(BaseModel): class AddStreamResponse (line 91) | class AddStreamResponse(BaseModel): class DeleteStreamResponse (line 99) | class DeleteStreamResponse(BaseModel): function add_to_vst (line 112) | async def add_to_vst(config: ServiceConfig, request: AddStreamRequest) -... function cleanup_vst_sensor (line 141) | async def cleanup_vst_sensor(config: ServiceConfig, sensor_id: str | Non... function cleanup_vst_storage (line 146) | async def cleanup_vst_storage(config: ServiceConfig, sensor_id: str | No... function get_stream_info_by_name (line 151) | async def get_stream_info_by_name(config: ServiceConfig, name: str) -> t... function add_to_rtvi_cv (line 167) | async def add_to_rtvi_cv( function add_to_rtvi_embed (line 210) | async def add_to_rtvi_embed( function start_embedding_generation (line 253) | async def start_embedding_generation( function cleanup_rtvi_cv (line 305) | async def cleanup_rtvi_cv( function cleanup_rtvi_embed_stream (line 337) | async def cleanup_rtvi_embed_stream( function cleanup_rtvi_embed_generation (line 357) | async def cleanup_rtvi_embed_generation( function create_rtsp_stream_api_router (line 382) | def create_rtsp_stream_api_router( function register_rtsp_stream_api_routes (line 619) | def register_rtsp_stream_api_routes(app: FastAPI, config: Any) -> None: FILE: agent/src/vss_agents/api/video_delete.py class DeleteVideoResponse (line 50) | class DeleteVideoResponse(BaseModel): function _remove_from_rtvi_cv (line 63) | async def _remove_from_rtvi_cv( function _delete_es_documents (line 113) | async def _delete_es_documents(es_endpoint: str, index_pattern: str, id_... function create_video_delete_router (line 163) | def create_video_delete_router( function register_video_delete_routes (line 315) | def register_video_delete_routes(app: "FastAPI", config: "Any") -> None: FILE: agent/src/vss_agents/api/video_search_ingest.py class VideoIngestResponse (line 48) | class VideoIngestResponse(BaseModel): function create_streaming_video_ingest_router (line 57) | def create_streaming_video_ingest_router( function register_streaming_routes (line 350) | def register_streaming_routes(app: "FastAPI", config: "Any") -> None: FILE: agent/src/vss_agents/api/video_upload_url.py class VideoUploadURLConfig (line 34) | class VideoUploadURLConfig(FunctionBaseConfig, name="video_upload_url"): class VideoUploadURLInput (line 47) | class VideoUploadURLInput(BaseModel): class VideoUploadURLOutput (line 61) | class VideoUploadURLOutput(BaseModel): function video_upload_url (line 71) | async def video_upload_url(config: VideoUploadURLConfig, _builder: Build... FILE: agent/src/vss_agents/data_models/__init__.py class ParserMixin (line 20) | class ParserMixin(ABC): method get_output_parser (line 24) | def get_output_parser(cls) -> PydanticOutputParser: FILE: agent/src/vss_agents/data_models/vss.py function float_to_int (line 27) | def float_to_int(v: float | int) -> int: class MediaInfoOffset (line 31) | class MediaInfoOffset(BaseModel): method validate_start_and_end (line 62) | def validate_start_and_end(cls, data: dict[str, Any]) -> dict[str, Any]: function timestamp_validator (line 76) | def timestamp_validator(v: str, validation_info: Any) -> str: function remove_timezone (line 88) | def remove_timezone(dt: datetime | str) -> datetime: FILE: agent/src/vss_agents/embed/cosmos_embed.py class CosmosEmbedClient (line 25) | class CosmosEmbedClient(EmbedClient): method __init__ (line 26) | def __init__(self, endpoint: str): method get_image_embedding (line 33) | async def get_image_embedding(self, image_url: str) -> list[float]: method get_text_embedding (line 62) | async def get_text_embedding(self, text: str) -> list[float]: method get_video_embedding (line 82) | async def get_video_embedding(self, video_url: str) -> list[float]: method get_video_embeddings_from_urls (line 86) | async def get_video_embeddings_from_urls(self, urls: list[str]) -> lis... FILE: agent/src/vss_agents/embed/embed.py class EmbedClient (line 19) | class EmbedClient(ABC): method get_image_embedding (line 23) | async def get_image_embedding(self, image_url: str) -> list[float]: method get_text_embedding (line 28) | async def get_text_embedding(self, text: str) -> list[float]: method get_video_embedding (line 33) | async def get_video_embedding(self, video_url: str) -> list[float]: FILE: agent/src/vss_agents/embed/rtvi_cv_embed.py class RTVICVEmbedClient (line 26) | class RTVICVEmbedClient(EmbedClient): method __init__ (line 29) | def __init__(self, endpoint: str): method get_text_embedding (line 40) | async def get_text_embedding(self, text: str) -> list[float]: method get_image_embedding (line 77) | async def get_image_embedding(self, image_url: str) -> list[float]: method get_video_embedding (line 82) | async def get_video_embedding(self, video_url: str) -> list[float]: FILE: agent/src/vss_agents/evaluators/customized_qa_evaluator/evaluate.py class CustomizedQAEvaluator (line 80) | class CustomizedQAEvaluator(BaseEvaluator): method __init__ (line 90) | def __init__( method evaluate_item (line 124) | async def evaluate_item(self, item: EvalInputItem) -> EvalOutputItem: FILE: agent/src/vss_agents/evaluators/customized_qa_evaluator/register.py class CustomizedQAEvaluatorConfig (line 26) | class CustomizedQAEvaluatorConfig(EvaluatorBaseConfig, name="customized_... function register_customized_qa_evaluator (line 55) | async def register_customized_qa_evaluator( FILE: agent/src/vss_agents/evaluators/customized_trajectory_evaluator/evaluate.py class CustomizedTrajectoryEvaluator (line 41) | class CustomizedTrajectoryEvaluator(BaseEvaluator): method __init__ (line 42) | def __init__( method _format_tool_schemas (line 72) | def _format_tool_schemas(self) -> str: method _extract_tool_calls_from_llm_end (line 94) | def _extract_tool_calls_from_llm_end(self, llm_end_step: Any) -> list[... method _get_agent_selected_uuids (line 119) | def _get_agent_selected_uuids(self, trajectory: list[Any]) -> set[str]: method evaluate_item (line 185) | async def evaluate_item(self, item: EvalInputItem) -> EvalOutputItem: FILE: agent/src/vss_agents/evaluators/customized_trajectory_evaluator/register.py class CustomizedTrajectoryEvaluatorConfig (line 28) | class CustomizedTrajectoryEvaluatorConfig(EvaluatorBaseConfig, name="cus... function register_customized_trajectory_evaluator (line 64) | async def register_customized_trajectory_evaluator( FILE: agent/src/vss_agents/evaluators/evaluate_patch.py class DatasetFilter (line 76) | class DatasetFilter(enum.StrEnum): function _get_conversation (line 83) | def _get_conversation(dataset_entry: dict) -> list: function is_multi_turn_item (line 94) | def is_multi_turn_item(dataset_entry: dict) -> bool: function _expand_multi_turn_items (line 104) | def _expand_multi_turn_items(eval_input_items: list) -> list: function _filter_by_dataset_filter (line 146) | def _filter_by_dataset_filter(items: list, dataset_filter: list[str]) ->... function _write_latency_summary (line 201) | def _write_latency_summary(evaluation_run: Any, items: list[Any]) -> flo... function apply_patch (line 232) | def apply_patch() -> None: FILE: agent/src/vss_agents/evaluators/report_evaluator/data_models.py class EvaluationScore (line 23) | class EvaluationScore(BaseModel): method from_error (line 36) | def from_error( FILE: agent/src/vss_agents/evaluators/report_evaluator/eval_config_models.py class FieldConfig (line 23) | class FieldConfig(BaseModel): method validate_and_collect_methods (line 40) | def validate_and_collect_methods(self) -> "FieldConfig": class EvalMetricsConfig (line 75) | class EvalMetricsConfig(BaseModel): method from_dict (line 94) | def from_dict(cls, config: dict[str, Any]) -> "EvalMetricsConfig": FILE: agent/src/vss_agents/evaluators/report_evaluator/evaluate.py class ExtendedEvalOutputItem (line 49) | class ExtendedEvalOutputItem(EvalOutputItem): class ExtendedEvalOutput (line 55) | class ExtendedEvalOutput(EvalOutput): class ReportEvaluatorConfig (line 63) | class ReportEvaluatorConfig(EvaluatorBaseConfig, name="report_evaluator"): function _load_eval_metrics_yaml (line 99) | def _load_eval_metrics_yaml(config_path: str) -> EvalMetricsConfig: function _fetch_and_parse_report (line 127) | async def _fetch_and_parse_report( class ReportEvaluator (line 165) | class ReportEvaluator(BaseEvaluator): method __init__ (line 172) | def __init__( method evaluate (line 209) | async def evaluate(self, eval_input_items: list[EvalInputItem]) -> Ext... method evaluate_item (line 248) | async def evaluate_item(self, item: EvalInputItem) -> ExtendedEvalOutp... method evaluate_tree (line 343) | async def evaluate_tree(self, reference: Any, actual: Any, config: Fie... method _score_value (line 488) | async def _score_value(self, reference: Any, actual: Any, method: str,... FILE: agent/src/vss_agents/evaluators/report_evaluator/field_evaluators/base.py function register_metric (line 27) | def register_metric(name: str) -> Callable[[type["EvaluationMetric"]], t... class EvaluationMetric (line 56) | class EvaluationMetric(ABC): method evaluate (line 60) | async def evaluate(self, actual: Any, reference: Any, field_name: str ... FILE: agent/src/vss_agents/evaluators/report_evaluator/field_evaluators/common.py function tokenize_text (line 25) | def tokenize_text(text: str) -> list[str]: function calculate_f1_score (line 31) | def calculate_f1_score(pred_tokens: list[str], ref_tokens: list[str]) ->... class NonEmptyMetric (line 57) | class NonEmptyMetric(EvaluationMetric): method evaluate (line 60) | async def evaluate(self, actual: str, reference: str, field_name: str ... class F1Metric (line 65) | class F1Metric(EvaluationMetric): method evaluate (line 68) | async def evaluate(self, actual: str, reference: str, field_name: str ... class ExactMatchMetric (line 76) | class ExactMatchMetric(EvaluationMetric): method evaluate (line 79) | async def evaluate(self, actual: str, reference: str, field_name: str ... class RegexMetric (line 89) | class RegexMetric(EvaluationMetric): method evaluate (line 92) | async def evaluate(self, actual: str, reference: str, field_name: str ... FILE: agent/src/vss_agents/evaluators/report_evaluator/field_evaluators/llm_judge.py class FieldEvaluation (line 46) | class FieldEvaluation(BaseModel): class LLMJudgeMetric (line 54) | class LLMJudgeMetric(EvaluationMetric): method __init__ (line 63) | def __init__(self, **kwargs: Any) -> None: method _invoke_llm (line 97) | async def _invoke_llm( method evaluate (line 153) | async def evaluate(self, actual: Any, reference: Any, field_name: str ... method evaluate_with_field_discovery (line 201) | async def evaluate_with_field_discovery( FILE: agent/src/vss_agents/evaluators/report_evaluator/register.py function register_report_evaluator (line 33) | async def register_report_evaluator( FILE: agent/src/vss_agents/evaluators/utils.py function compute_item_latency (line 39) | def compute_item_latency(item: EvalInputItem) -> float | None: function should_evaluate (line 55) | def should_evaluate(item: EvalInputItem, evaluator_type: str) -> bool: class ScoreOutputParser (line 88) | class ScoreOutputParser: method parse (line 95) | def parse(self, response: Any) -> dict: function strip_agent_think_tags (line 135) | def strip_agent_think_tags(text: str) -> str: function invoke_llm_with_retry (line 153) | async def invoke_llm_with_retry( FILE: agent/src/vss_agents/tools/attribute_search.py class AttributeSearchInput (line 51) | class AttributeSearchInput(BaseModel): class AttributeSearchMetadata (line 99) | class AttributeSearchMetadata(BaseModel): class AttributeSearchResult (line 114) | class AttributeSearchResult(BaseModel): class AttributeSearchConfig (line 121) | class AttributeSearchConfig(FunctionBaseConfig, name="attribute_search"): function _perform_frame_lookups (line 224) | async def _perform_frame_lookups( function _get_frame_from_behavior (line 291) | async def _get_frame_from_behavior( function _search_behavior (line 421) | async def _search_behavior( function _build_result (line 562) | async def _build_result( function _extend_clip_to_one_second (line 685) | async def _extend_clip_to_one_second( function _deduplicate_by_object (line 767) | def _deduplicate_by_object( function search_by_attributes (line 877) | async def search_by_attributes( function search_single_attribute (line 984) | async def search_single_attribute( function search_attributes (line 1010) | async def search_attributes( function _fuse_multi_attribute (line 1078) | async def _fuse_multi_attribute( function _append_multi_attribute (line 1179) | async def _append_multi_attribute( function build_attribute_search (line 1269) | async def build_attribute_search(config: AttributeSearchConfig, _builder... FILE: agent/src/vss_agents/tools/chart_generator.py class ChartType (line 46) | class ChartType(StrEnum): class ChartFileFormat (line 51) | class ChartFileFormat(StrEnum): class ChartData (line 57) | class ChartData(BaseModel): class BarChartData (line 62) | class BarChartData(ChartData): class PieChartData (line 69) | class PieChartData(ChartData): class ChartGeneratorConfig (line 77) | class ChartGeneratorConfig(FunctionBaseConfig, name="chart_generator"): method must_be_directory_url (line 89) | def must_be_directory_url(cls, v: str) -> str: class ChartGeneratorInput (line 107) | class ChartGeneratorInput(BaseModel): method validate_and_sanitize_output_dir (line 116) | def validate_and_sanitize_output_dir(cls, v: str | None) -> str | None: class ChartGenExecOutput (line 124) | class ChartGenExecOutput(BaseModel): function plot_bar_chart (line 133) | def plot_bar_chart(bar_chart_data: BarChartData) -> matplotlib.figure.Fi... function plot_pie_chart (line 174) | def plot_pie_chart(pie_chart_data: PieChartData) -> matplotlib.figure.Fi... function convert_to_format (line 210) | def convert_to_format(chart: matplotlib.figure.Figure, chart_file_format... function _str_input_converter (line 217) | def _str_input_converter(input: str) -> ChartGeneratorInput: function _chat_request_input_converter (line 221) | def _chat_request_input_converter(request: ChatRequest) -> ChartGenerato... function chart_generator (line 230) | async def chart_generator(config: ChartGeneratorConfig, builder: Builder... FILE: agent/src/vss_agents/tools/code_executor/docker_backend/__init__.py function cleanup_docker_resources (line 28) | def cleanup_docker_resources() -> None: FILE: agent/src/vss_agents/tools/code_executor/docker_backend/docker_executor.py class DockerExecutor (line 30) | class DockerExecutor: method __init__ (line 31) | def __init__(self, gpu: bool = False): method _pack_files (line 36) | def _pack_files(self, files: dict[str, str | bytes]) -> bytes: method run_code (line 80) | def run_code( method build_image (line 159) | def build_image(self, image: str, base_image: str, language_packages: ... FILE: agent/src/vss_agents/tools/code_executor/docker_backend/image_builder.py class ImageInfo (line 27) | class ImageInfo(TypedDict): class ImageBuilder (line 34) | class ImageBuilder: method __new__ (line 50) | def __new__(cls) -> "ImageBuilder": method _cleanup_at_exit (line 65) | def _cleanup_at_exit(cls) -> None: method __del__ (line 71) | def __del__(self) -> None: method reset_instance (line 80) | def reset_instance(cls) -> None: method cleanup (line 91) | def cleanup(self) -> None: method _generate_dockerfile (line 113) | def _generate_dockerfile( method _create_dockerfile_tar (line 177) | def _create_dockerfile_tar(self, dockerfile_content: str) -> bytes: method build_image (line 189) | def build_image( method get_image_tag (line 240) | def get_image_tag(self, image: str) -> str | None: method get_all_images (line 244) | def get_all_images(self) -> dict[str, ImageInfo]: FILE: agent/src/vss_agents/tools/code_executor/python_executor.py class CodeExecutorConfig (line 35) | class CodeExecutorConfig(FunctionBaseConfig, name="python_executor"): class CodeExecutorInput (line 56) | class CodeExecutorInput(BaseModel): class CodeExecutorOutput (line 69) | class CodeExecutorOutput(BaseModel): function python_executor (line 76) | async def python_executor(config: CodeExecutorConfig, _builder: Builder)... FILE: agent/src/vss_agents/tools/embed_search.py function _sanitize_for_logging (line 51) | def _sanitize_for_logging(obj: Any) -> Any: class EmbedSearchResultItem (line 85) | class EmbedSearchResultItem(BaseModel): class EmbedSearchOutput (line 97) | class EmbedSearchOutput(BaseModel): class QueryInput (line 104) | class QueryInput(BaseModel): class EmbedSearchConfig (line 121) | class EmbedSearchConfig(FunctionBaseConfig, name="embed_search"): function _str_input_converter (line 151) | def _str_input_converter(input: str) -> QueryInput: function _chat_request_input_converter (line 168) | def _chat_request_input_converter(request: ChatRequest) -> QueryInput: function _to_str_output (line 188) | def _to_str_output(output: EmbedSearchOutput) -> str: function _generate_query_embedding (line 193) | async def _generate_query_embedding(query_input: QueryInput, embed_clien... function _build_es_query (line 224) | def _build_es_query(query_input: QueryInput, query_embedding: list[float... function _process_search_hit (line 399) | async def _process_search_hit( function embed_search (line 591) | async def embed_search(config: EmbedSearchConfig, _builder: Builder) -> ... FILE: agent/src/vss_agents/tools/evaluation_compressor.py class EvaluationCompressorConfig (line 46) | class EvaluationCompressorConfig(FunctionBaseConfig, name="evaluation_co... class EvaluationCompressorInput (line 56) | class EvaluationCompressorInput(BaseModel): function remove_caption_details (line 60) | def remove_caption_details(text: str) -> str: function count_sections_by_token_limit (line 78) | def count_sections_by_token_limit(input_text: str, token_limit: int, llm... function split_text_by_sections (line 97) | def split_text_by_sections(input_text: str, num_sections: int) -> list: function evaluation_compressor (line 136) | async def evaluation_compressor(config: EvaluationCompressorConfig, buil... FILE: agent/src/vss_agents/tools/fov_counts_with_chart.py class FOVCountsWithChartConfig (line 32) | class FOVCountsWithChartConfig(FunctionBaseConfig, name="get_fov_counts_... class FOVCountsWithChartInput (line 49) | class FOVCountsWithChartInput(BaseModel): class FOVCountsWithChartOutput (line 71) | class FOVCountsWithChartOutput(BaseModel): function get_fov_counts_with_chart (line 82) | async def get_fov_counts_with_chart(config: FOVCountsWithChartConfig, bu... FILE: agent/src/vss_agents/tools/geolocation.py class GeolocationConfig (line 32) | class GeolocationConfig(FunctionBaseConfig, name="geolocation"): class GeolocationInput (line 38) | class GeolocationInput(BaseModel): class GeolocationOutput (line 45) | class GeolocationOutput(BaseModel): function geolocation (line 71) | async def geolocation(config: GeolocationConfig, __builder: Builder) -> ... FILE: agent/src/vss_agents/tools/incidents.py class VARetrievalConfig (line 37) | class VARetrievalConfig(FunctionBaseConfig, name="va_retrieval"): class VARetrievalInput (line 74) | class VARetrievalInput(BaseModel): class DuckDBIncidentsManager (line 102) | class DuckDBIncidentsManager: method __init__ (line 109) | def __init__(self, config: "VARetrievalConfig") -> None: method normalize_timestamp (line 116) | def normalize_timestamp(timestamp: str | None) -> str | None: method get_instance (line 149) | async def get_instance(cls, config: VARetrievalConfig) -> "DuckDBIncid... method _async_init (line 175) | async def _async_init(self) -> None: method clear_instances (line 200) | def clear_instances(cls) -> None: method refresh_data (line 205) | async def refresh_data(self) -> None: method _setup_database (line 213) | def _setup_database(self) -> None: method load_incidents_from_bucket (line 251) | async def load_incidents_from_bucket(self) -> int: method load_json_content (line 331) | async def load_json_content(self, content: bytes, source_file: str) ->... method run_sql (line 389) | def run_sql(self, sql: str) -> list[dict[str, Any]]: method get_schema (line 395) | def get_schema(self) -> list[tuple[Any, ...]]: function va_retrieval (line 401) | async def va_retrieval(config: VARetrievalConfig, _builder: Builder) -> ... FILE: agent/src/vss_agents/tools/lvs_video_understanding.py class LVSStatus (line 55) | class LVSStatus(StrEnum): class LVSVideoUnderstandingConfig (line 74) | class LVSVideoUnderstandingConfig(FunctionBaseConfig, name="lvs_video_un... class LVSVideoUnderstandingInput (line 224) | class LVSVideoUnderstandingInput(BaseModel): function lvs_video_understanding (line 235) | async def lvs_video_understanding( FILE: agent/src/vss_agents/tools/multi_incident_formatter.py function _normalize_timestamp (line 40) | def _normalize_timestamp(timestamp: str) -> str: class MultiIncidentFormatterConfig (line 62) | class MultiIncidentFormatterConfig(FunctionBaseConfig, name="multi_incid... class IncidentData (line 98) | class IncidentData(BaseModel): class MultiIncidentFormatterInput (line 108) | class MultiIncidentFormatterInput(BaseModel): method normalize_timestamps (line 135) | def normalize_timestamps(cls, v: str | None) -> str | None: class MultiIncidentFormatterOutput (line 142) | class MultiIncidentFormatterOutput(BaseModel): function _fetch_incidents (line 159) | async def _fetch_incidents( function _format_single_incident (line 228) | async def _format_single_incident( function _generate_incidents_chart (line 313) | async def _generate_incidents_chart( function _determine_optimal_bin_size (line 361) | def _determine_optimal_bin_size(incidents: list[IncidentData]) -> str | ... function _generate_time_series_chart (line 450) | async def _generate_time_series_chart( function _multi_incident_formatter_impl (line 546) | async def _multi_incident_formatter_impl( function multi_incident_formatter (line 661) | async def multi_incident_formatter( FILE: agent/src/vss_agents/tools/prompt_gen.py class PromptGenConfig (line 32) | class PromptGenConfig(FunctionBaseConfig, name="prompt_gen"): class PromptGenInput (line 39) | class PromptGenInput(BaseModel): function prompt_gen (line 49) | async def prompt_gen(config: PromptGenConfig, builder: Builder) -> Async... FILE: agent/src/vss_agents/tools/report_gen.py class ReportGenConfig (line 37) | class ReportGenConfig(FunctionBaseConfig, name="report_gen"): class ReportGenInput (line 68) | class ReportGenInput(BaseModel): class ReportGenOutput (line 77) | class ReportGenOutput(BaseModel): function _format_messages_to_markdown (line 93) | def _format_messages_to_markdown(messages: list[Any]) -> str: function _load_custom_template (line 178) | def _load_custom_template(template_path: str, template_name: str) -> str: function _format_custom_report (line 205) | async def _format_custom_report( function report_gen (line 246) | async def report_gen(config: ReportGenConfig, builder: Builder) -> Async... FILE: agent/src/vss_agents/tools/rtvi_vlm_alert.py class RTVIVLMAlertConfig (line 39) | class RTVIVLMAlertConfig(FunctionBaseConfig, name="rtvi_vlm_alert"): class RTVIVLMAlertInput (line 77) | class RTVIVLMAlertInput(BaseModel): class RTVIVLMAlertOutput (line 115) | class RTVIVLMAlertOutput(BaseModel): function rtvi_vlm_alert (line 133) | async def rtvi_vlm_alert(config: RTVIVLMAlertConfig, builder: Builder) -... FILE: agent/src/vss_agents/tools/s3_picture_url.py class S3PictureURLConfig (line 33) | class S3PictureURLConfig(FunctionBaseConfig, name="s3_picture_url"): class S3PictureURLInput (line 54) | class S3PictureURLInput(BaseModel): class S3PictureURLOutput (line 64) | class S3PictureURLOutput(BaseModel): function s3_picture_url (line 82) | async def s3_picture_url(config: S3PictureURLConfig, _builder: Builder) ... FILE: agent/src/vss_agents/tools/search.py class DecomposedQuery (line 110) | class DecomposedQuery(BaseModel): function _run_attribute_only_search (line 127) | async def _run_attribute_only_search( function attribute_result_to_search_result (line 187) | def attribute_result_to_search_result( function decompose_query (line 245) | async def decompose_query( function _apply_weighted_linear_fusion (line 357) | def _apply_weighted_linear_fusion( function _apply_rrf_fusion (line 396) | def _apply_rrf_fusion( function _apply_rrf_fusion_with_attribute_rank (line 437) | def _apply_rrf_fusion_with_attribute_rank( function fusion_search_rerank (line 487) | async def fusion_search_rerank( function execute_core_search (line 662) | async def execute_core_search( function execute_core_search_wrapper (line 1121) | async def execute_core_search_wrapper( class SearchConfig (line 1150) | class SearchConfig(FunctionBaseConfig, name="search"): class SearchInput (line 1237) | class SearchInput(BaseModel): class SearchResult (line 1296) | class SearchResult(BaseModel): class SearchOutput (line 1311) | class SearchOutput(BaseModel): function search (line 1323) | async def search(config: SearchConfig, _builder: Builder) -> AsyncGenera... FILE: agent/src/vss_agents/tools/template_report_gen.py function _get_object_store_url (line 55) | def _get_object_store_url(object_store: Any, filename: str, config: "Tem... function _replace_public_urls_with_private (line 86) | def _replace_public_urls_with_private( class TemplateReportGenConfig (line 145) | class TemplateReportGenConfig(FunctionBaseConfig, name="template_report_... class TemplateReportGenInput (line 226) | class TemplateReportGenInput(BaseModel): class TemplateReportGenOutput (line 237) | class TemplateReportGenOutput(BaseModel): function _convert_markdown_to_pdf (line 251) | def _convert_markdown_to_pdf(markdown_file_path: str, output_pdf_path: s... function _load_custom_template (line 478) | def _load_custom_template(template_path: str, template_name: str) -> str: function _fetch_cv_metadata (line 503) | async def _fetch_cv_metadata( function _fetch_proximity_data (line 528) | async def _fetch_proximity_data( function _fetch_geolocation_data (line 544) | async def _fetch_geolocation_data( function _extract_object_ids_from_incident (line 589) | def _extract_object_ids_from_incident(alert_metadata: dict) -> list[str]: function _run_vlm_analysis (line 623) | async def _run_vlm_analysis( function _fetch_media_urls_for_report (line 662) | async def _fetch_media_urls_for_report( function _save_markdown_to_object_store (line 704) | async def _save_markdown_to_object_store( function _save_pdf_to_object_store (line 736) | async def _save_pdf_to_object_store( function _fetch_behavior_data (line 801) | async def _fetch_behavior_data( function _fetch_proximity_threshold (line 878) | async def _fetch_proximity_threshold( function _format_custom_report (line 926) | async def _format_custom_report( function template_report_gen (line 1019) | async def template_report_gen(config: TemplateReportGenConfig, builder: ... FILE: agent/src/vss_agents/tools/video_caption.py class VideoCaptionConfig (line 61) | class VideoCaptionConfig(FunctionBaseConfig, name="video_caption"): class VideoCaptionInput (line 102) | class VideoCaptionInput(BaseModel): method validate_end_timestamp (line 135) | def validate_end_timestamp(cls, info: dict) -> dict: function call_vlm_partition (line 151) | async def call_vlm_partition( function video_caption (line 201) | async def video_caption(config: VideoCaptionConfig, builder: Builder) ->... FILE: agent/src/vss_agents/tools/video_detailed_caption.py class VideoDetailedCaptionConfig (line 30) | class VideoDetailedCaptionConfig(FunctionBaseConfig, name="video_detaile... class VideoDetailedCaptionInput (line 43) | class VideoDetailedCaptionInput(BaseModel): method validate_end_timestamp (line 72) | def validate_end_timestamp(cls, info: dict) -> dict: function video_detailed_caption (line 82) | async def video_detailed_caption(config: VideoDetailedCaptionConfig, bui... FILE: agent/src/vss_agents/tools/video_frame_timestamp.py class VideoFrameTimestampConfig (line 36) | class VideoFrameTimestampConfig(FunctionBaseConfig, name="video_frame_ti... class VideoFrameTimestampInput (line 49) | class VideoFrameTimestampInput(BaseModel): function video_frame_timestamp (line 63) | async def video_frame_timestamp(config: VideoFrameTimestampConfig, build... FILE: agent/src/vss_agents/tools/video_report_gen.py function _get_object_store_url (line 79) | def _get_object_store_url(object_store: Any, filename: str, config: "Vid... function _divide_video_into_chunks (line 107) | def _divide_video_into_chunks( function _remove_som_markers (line 142) | def _remove_som_markers(prompt: str) -> str: function _replace_public_urls_with_private (line 183) | def _replace_public_urls_with_private( function _convert_markdown_to_pdf (line 251) | def _convert_markdown_to_pdf(markdown_file_path: str, output_pdf_path: s... class VideoReportGenConfig (line 358) | class VideoReportGenConfig(FunctionBaseConfig, name="video_report_gen"): class VideoReportGenInput (line 470) | class VideoReportGenInput(BaseModel): class VideoReportGenOutput (line 490) | class VideoReportGenOutput(BaseModel): function _save_markdown_to_object_store (line 504) | async def _save_markdown_to_object_store( function _save_pdf_to_object_store (line 533) | async def _save_pdf_to_object_store( class TimestampMatch (line 595) | class TimestampMatch(NamedTuple): function _parse_timestamps (line 602) | def _parse_timestamps(content: str) -> list[TimestampMatch]: function _normalize_chunk_timestamps (line 632) | def _normalize_chunk_timestamps(content: str, chunk_start: float, chunk_... function _filter_short_duration_from_markdown (line 700) | def _filter_short_duration_from_markdown(content: str, min_duration_seco... function _mmss_to_iso (line 758) | def _mmss_to_iso(time_str: str, ref_timestamp: str) -> str: function _inject_video_clips (line 786) | async def _inject_video_clips( function _inject_snapshots (line 866) | async def _inject_snapshots( function _clean_vlm_response (line 923) | def _clean_vlm_response(vlm_response: str) -> str: function _filter_short_events (line 977) | def _filter_short_events(events: list[dict | Any], min_duration_seconds:... function _format_lvs_response (line 1019) | def _format_lvs_response(lvs_response: str) -> str: function _create_report_header (line 1101) | def _create_report_header( function video_report_gen (line 1162) | async def video_report_gen(config: VideoReportGenConfig, builder: Builde... FILE: agent/src/vss_agents/tools/video_skim_caption.py class VideoSkimCaptionConfig (line 30) | class VideoSkimCaptionConfig(FunctionBaseConfig, name="video_skim_captio... class VideoSkimCaptionInput (line 39) | class VideoSkimCaptionInput(BaseModel): method validate_end_timestamp (line 68) | def validate_end_timestamp(cls, info: dict) -> dict: function video_skim_caption (line 78) | async def video_skim_caption(config: VideoSkimCaptionConfig, builder: Bu... FILE: agent/src/vss_agents/tools/video_understanding.py function _parse_thinking_from_content (line 49) | def _parse_thinking_from_content(content: str) -> tuple[str | None, str]: class VideoUnderstandingConfig (line 87) | class VideoUnderstandingConfig(FunctionBaseConfig, name="video_understan... class VideoUnderstandingInput (line 176) | class VideoUnderstandingInput(BaseModel): class VideoUnderstandingOffsetInput (line 210) | class VideoUnderstandingOffsetInput(BaseModel): method validate_start_and_end_time (line 244) | def validate_start_and_end_time(cls, info: dict) -> dict: function extend_timestamp (line 266) | def extend_timestamp(start_time: str, end_time: str) -> str: function _build_vlm_messages (line 277) | async def _build_vlm_messages( function video_understanding (line 334) | async def video_understanding(config: VideoUnderstandingConfig, builder:... FILE: agent/src/vss_agents/tools/vss_summarize.py class VSSSummarizeConfig (line 40) | class VSSSummarizeConfig(FunctionBaseConfig, name="vss_summarize"): class VSSSummarizeInput (line 71) | class VSSSummarizeInput(BaseModel): method validate_all (line 126) | def validate_all(cls, data: dict) -> Any: class VSSSummarizeOutput (line 139) | class VSSSummarizeOutput(BaseModel): method __str__ (line 146) | def __str__(self) -> str: function vss_summarize (line 156) | async def vss_summarize(config: VSSSummarizeConfig, _builder: Builder) -... FILE: agent/src/vss_agents/tools/vst/duration.py class VSTDurationConfig (line 34) | class VSTDurationConfig(FunctionBaseConfig, name="vst.duration"): class VSTDurationInput (line 43) | class VSTDurationInput(BaseModel): class VSTDurationOutput (line 53) | class VSTDurationOutput(BaseModel): function vst_duration (line 63) | async def vst_duration(config: VSTDurationConfig, _: Builder) -> AsyncGe... FILE: agent/src/vss_agents/tools/vst/sensor_list.py class VSTSensorListConfig (line 34) | class VSTSensorListConfig(FunctionBaseConfig, name="vst.sensor_list"): class VSTSensorListInput (line 43) | class VSTSensorListInput(BaseModel): class VSTSensorListOutput (line 49) | class VSTSensorListOutput(BaseModel): function vst_sensor_list (line 59) | async def vst_sensor_list(config: VSTSensorListConfig, _: Builder) -> As... FILE: agent/src/vss_agents/tools/vst/snapshot.py function build_screenshot_url (line 49) | def build_screenshot_url(vst_external_url: str, stream_id: str, timestam... class VSTSnapshotConfig (line 64) | class VSTSnapshotConfig(FunctionBaseConfig, name="vst.snapshot"): class VSTSnapshotOffsetInput (line 87) | class VSTSnapshotOffsetInput(BaseModel): class VSTSnapshotISOInput (line 104) | class VSTSnapshotISOInput(BaseModel): class VSTSnapshotOutput (line 126) | class VSTSnapshotOutput(BaseModel): function get_snapshot_url (line 139) | async def get_snapshot_url( function vst_snapshot (line 190) | async def vst_snapshot(config: VSTSnapshotConfig, _builder: Builder) -> ... FILE: agent/src/vss_agents/tools/vst/timeline.py class VSTTimelineConfig (line 38) | class VSTTimelineConfig(FunctionBaseConfig, name="vst.timeline"): class VSTTimelineInput (line 47) | class VSTTimelineInput(BaseModel): class VSTTimelineOutput (line 56) | class VSTTimelineOutput(BaseModel): function get_timeline (line 69) | async def get_timeline(stream_id: str, vst_internal_url: str | None = No... function vst_timeline (line 127) | async def vst_timeline(config: VSTTimelineConfig, _: Builder) -> AsyncGe... FILE: agent/src/vss_agents/tools/vst/utils.py function build_vst_url (line 31) | def build_vst_url(base_url: str, url: str) -> str: function build_overlay_config (line 56) | def build_overlay_config( class VSTError (line 89) | class VSTError(Exception): function get_name_to_stream_id_map (line 95) | async def get_name_to_stream_id_map(vst_internal_url: str | None = None)... function get_stream_id (line 124) | async def get_stream_id(sensor_id: str, vst_internal_url: str | None = N... function get_sensor_id_from_stream_id (line 144) | async def get_sensor_id_from_stream_id(stream_id: str, vst_internal_url:... function validate_video_url (line 181) | async def validate_video_url(url: str, timeout: int = 30) -> bool: function delete_vst_sensor (line 254) | async def delete_vst_sensor(vst_url: str, sensor_id: str) -> tuple[bool,... function delete_vst_storage (line 285) | async def delete_vst_storage(vst_url: str, sensor_id: str) -> tuple[bool... class VSTDirectUploader (line 343) | class VSTDirectUploader: method __init__ (line 346) | def __init__(self, vst_api_url: str): method upload_media_file (line 355) | async def upload_media_file( function get_streams_info (line 445) | async def get_streams_info(vst_internal_url: str | None = None) -> dict[... function get_stream_info_by_name (line 479) | async def get_stream_info_by_name(name: str, vst_internal_url: str | Non... function add_sensor (line 491) | async def add_sensor( function delete_sensor (line 555) | async def delete_sensor(sensor_id: str | None, vst_internal_url: str | N... function get_storage_timeline (line 583) | async def get_storage_timeline( function delete_storage (line 623) | async def delete_storage(sensor_id: str | None, vst_internal_url: str | ... function get_rtsp_url (line 662) | async def get_rtsp_url(sensor_id: str, vst_internal_url: str | None = No... FILE: agent/src/vss_agents/tools/vst/video_clip.py class VSTVideoClipConfig (line 52) | class VSTVideoClipConfig(FunctionBaseConfig, name="vst.video_clip"): class VSTVideoClipOffsetInput (line 75) | class VSTVideoClipOffsetInput(BaseModel): method validate_start_and_end_time (line 101) | def validate_start_and_end_time(cls, info: dict) -> dict: class VSTVideoClipISOInput (line 123) | class VSTVideoClipISOInput(BaseModel): class VSTVideoClipOutput (line 152) | class VSTVideoClipOutput(BaseModel): function get_video_url (line 165) | async def get_video_url( function vst_video_clip (line 270) | async def vst_video_clip(config: VSTVideoClipConfig, _: Builder) -> Asyn... FILE: agent/src/vss_agents/tools/vst/video_list.py class VSTVideoListConfig (line 34) | class VSTVideoListConfig(FunctionBaseConfig, name="vst.video_list"): class VSTVideoListInput (line 43) | class VSTVideoListInput(BaseModel): class VSTVideoListOutput (line 49) | class VSTVideoListOutput(BaseModel): function _vst_video_list (line 59) | async def _vst_video_list(config: VSTVideoListConfig, _builder: Builder)... FILE: agent/src/vss_agents/tools/vst_download.py class VSTDownloadConfig (line 32) | class VSTDownloadConfig(FunctionBaseConfig, name="vst_download"): class VSTDownloadInput (line 40) | class VSTDownloadInput(BaseModel): class VSTDownloadOutput (line 51) | class VSTDownloadOutput(BaseModel): function vst_download (line 62) | async def vst_download(config: VSTDownloadConfig, _builder: Builder) -> ... FILE: agent/src/vss_agents/tools/vst_files.py class VSTFilesConfig (line 32) | class VSTFilesConfig(FunctionBaseConfig, name="vst_files"): class VSTFilesInput (line 61) | class VSTFilesInput(BaseModel): function vst_files (line 68) | async def vst_files(config: VSTFilesConfig, _builder: Builder) -> AsyncG... FILE: agent/src/vss_agents/utils/asyncmixin.py class AsyncMixin (line 19) | class AsyncMixin: method __init__ (line 23) | def __init__(self, *args: Any, **kwargs: Any) -> None: method __ainit__ (line 31) | async def __ainit__(self, *args: Any, **kwargs: Any) -> None: method __initobj (line 34) | async def __initobj(self) -> "AsyncMixin": method __await__ (line 42) | def __await__(self) -> Generator[Any, None, "AsyncMixin"]: FILE: agent/src/vss_agents/utils/file_mapping.py class StorageType (line 26) | class StorageType(Enum): class VideoFileInfo (line 35) | class VideoFileInfo: class FileMapping (line 47) | class FileMapping: method __init__ (line 53) | def __init__(self) -> None: method add_vst_files (line 58) | def add_vst_files(self, vst_files_data: dict[str, dict]) -> None: method add_vss_files (line 90) | def add_vss_files(self, vss_files_data: dict[str, str]) -> None: method get_file_info (line 112) | def get_file_info(self, filename: str) -> VideoFileInfo | None: method get_vst_id (line 116) | def get_vst_id(self, filename: str) -> str | None: method get_vss_id (line 120) | def get_vss_id(self, filename: str) -> str | None: method get_storage_type (line 124) | def get_storage_type(self, filename: str) -> StorageType | None: method has_vst_file (line 129) | def has_vst_file(self, filename: str) -> bool: method has_vss_file (line 133) | def has_vss_file(self, filename: str) -> bool: method get_all_filenames (line 137) | def get_all_filenames(self) -> list[str]: method add_local_files (line 141) | def add_local_files(self, local_files_data: dict[str, dict]) -> None: method get_files_by_storage_type (line 167) | def get_files_by_storage_type(self, storage_type: StorageType) -> dict... method clear (line 173) | def clear(self) -> None: function resolve_video_file (line 185) | async def resolve_video_file( FILE: agent/src/vss_agents/utils/frame_select.py function frame_select (line 26) | def frame_select(video_path: str, start_timestamp: float, end_timestamp:... function has_nvidia_gpu (line 79) | def has_nvidia_gpu() -> bool: FILE: agent/src/vss_agents/utils/markdown_parser.py function parse_table_or_blocktext (line 24) | def parse_table_or_blocktext( function parse_markdown_to_json (line 56) | def parse_markdown_to_json(content: str) -> dict[str, Any]: FILE: agent/src/vss_agents/utils/parser.py class ReActOutputParserError (line 24) | class ReActOutputParserError(ValueError, LangChainException): method __init__ (line 25) | def __init__( function parse_function_calls (line 38) | def parse_function_calls(text: str) -> list[dict[str, Any]]: FILE: agent/src/vss_agents/utils/reasoning_parsing.py function parse_content_blocks (line 19) | def parse_content_blocks(response: Any) -> tuple[str | None, str | None]: function parse_reasoning_content (line 47) | def parse_reasoning_content(response: Any) -> tuple[str | None, str | No... FILE: agent/src/vss_agents/utils/reasoning_utils.py function get_llm_reasoning_bind_kwargs (line 23) | def get_llm_reasoning_bind_kwargs(llm: Any, llm_reasoning: bool | None) ... function get_thinking_tag (line 59) | def get_thinking_tag(llm: Any, thinking: bool | None) -> str | None: FILE: agent/src/vss_agents/utils/retry.py function create_retry_strategy (line 28) | def create_retry_strategy( FILE: agent/src/vss_agents/utils/time_convert.py function datetime_to_iso8601 (line 22) | def datetime_to_iso8601(dt: datetime) -> str: function iso8601_to_datetime (line 27) | def iso8601_to_datetime(timestamp: str) -> datetime: function utc_timestamp_to_tz_timestamp (line 35) | def utc_timestamp_to_tz_timestamp(timestamp: str) -> str: function tz_timestamp_to_utc_timestamp (line 42) | def tz_timestamp_to_utc_timestamp(timestamp: str) -> str: FILE: agent/src/vss_agents/utils/time_measure.py class TimeMeasure (line 28) | class TimeMeasure: method __init__ (line 33) | def __init__(self, string: str, print: bool = True) -> None: method __enter__ (line 43) | def __enter__(self) -> "TimeMeasure": method __exit__ (line 48) | def __exit__(self, type: type[BaseException] | None, value: BaseExcept... method execution_time (line 72) | def execution_time(self) -> float: method current_execution_time (line 82) | def current_execution_time(self) -> float: FILE: agent/src/vss_agents/utils/url_translation.py function translate_url (line 43) | def translate_url( function rewrite_url_host (line 169) | def rewrite_url_host(url: str, target_ip: str) -> str: function _translate_proxy_url (line 214) | def _translate_proxy_url(url: str, parsed: ParseResult, vst_internal_url... FILE: agent/src/vss_agents/utils/video_file.py function get_video_duration (line 25) | def get_video_duration(file_path: str) -> float: function pad_media_info (line 60) | def pad_media_info(media_info: MediaInfoOffset, video_duration: float, m... FILE: agent/src/vss_agents/video_analytics/embeddings.py class EmbeddingModel (line 30) | class EmbeddingModel: method __init__ (line 39) | def __init__(self, model_name: str = "sentence-transformers/all-MiniLM... method _load_model (line 49) | def _load_model(self) -> None: method encode (line 61) | def encode(self, text: str) -> np.ndarray: method encode_batch (line 81) | def encode_batch(self, texts: list[str]) -> np.ndarray: class PlaceEmbeddingCache (line 107) | class PlaceEmbeddingCache: method __init__ (line 115) | def __init__(self) -> None: method add_places_batch (line 120) | def add_places_batch(self, names: list[str], embeddings: np.ndarray) -... method find_similar (line 141) | def find_similar( method size (line 181) | def size(self) -> int: FILE: agent/src/vss_agents/video_analytics/es_client.py class ESClient (line 29) | class ESClient: method __init__ (line 43) | def __init__(self, es_url: str, index_prefix: str = ""): method close (line 54) | async def close(self) -> None: method __aenter__ (line 58) | async def __aenter__(self) -> "ESClient": method __aexit__ (line 62) | async def __aexit__( method get_index (line 68) | def get_index(self, index_key: str) -> str: method search (line 88) | async def search( method aggregate (line 144) | async def aggregate(self, index_key: str, query_body: dict, aggs: dict... method get_by_id (line 175) | async def get_by_id(self, index_key: str, doc_id: str) -> dict | None: method count (line 204) | async def count(self, index_key: str, query_body: dict) -> int: FILE: agent/src/vss_agents/video_analytics/interface.py class IncidentMetadata (line 24) | class IncidentMetadata(StrEnum): class VideoAnalyticsInterface (line 35) | class VideoAnalyticsInterface(ABC): method get_incident (line 41) | async def get_incident( method get_incidents (line 64) | async def get_incidents( method get_sensor_ids (line 104) | async def get_sensor_ids(self, place: str | None = None) -> list[str]: method get_places (line 118) | async def get_places(self) -> dict: method get_fov_histogram (line 134) | async def get_fov_histogram( method get_average_speeds (line 179) | async def get_average_speeds( method analyze (line 213) | async def analyze( FILE: agent/src/vss_agents/video_analytics/nvschema.py class Location (line 22) | class Location(BaseModel): class Coordinates (line 28) | class Coordinates(BaseModel): class Place (line 34) | class Place(BaseModel): class Incident (line 42) | class Incident(BaseModel): FILE: agent/src/vss_agents/video_analytics/query_builders.py class IncidentQueryBuilder (line 26) | class IncidentQueryBuilder: method build_query_by_id (line 34) | def build_query_by_id(incident_id: str) -> dict: method build_query (line 52) | def build_query( class FramesQueryBuilder (line 111) | class FramesQueryBuilder: method build_query (line 120) | def build_query(sensor_id: str, start_time: str, end_time: str) -> dict: method fov_histogram_aggregation (line 143) | def fov_histogram_aggregation(bucket_size_sec: int, object_type: str |... class BehaviorQueryBuilder (line 189) | class BehaviorQueryBuilder: method build_average_speed_query (line 201) | def build_average_speed_query(source: str, source_type: str, start_tim... method average_speed_per_direction_aggregation (line 250) | def average_speed_per_direction_aggregation() -> dict: FILE: agent/src/vss_agents/video_analytics/tools.py class EmptyInput (line 47) | class EmptyInput(BaseModel): class GetSensorIdsInput (line 53) | class GetSensorIdsInput(BaseModel): class GetIncidentInput (line 59) | class GetIncidentInput(BaseModel): class GetIncidentsInputBase (line 66) | class GetIncidentsInputBase(BaseModel): method validate_timestamps (line 90) | def validate_timestamps(cls, v: str | None) -> str | None: method validate_source_type (line 98) | def validate_source_type(cls, v: str | None) -> str | None: method validate_source_and_type_together (line 105) | def validate_source_and_type_together(self) -> "GetIncidentsInputBase": method validate_timestamps_together (line 112) | def validate_timestamps_together(self) -> "GetIncidentsInputBase": class GetIncidentsInputWithVLM (line 119) | class GetIncidentsInputWithVLM(GetIncidentsInputBase): method validate_vlm_verdict (line 129) | def validate_vlm_verdict(cls, v: str | None) -> str | None: class FovHistogramInput (line 138) | class FovHistogramInput(BaseModel): method validate_timestamps (line 149) | def validate_timestamps(cls, v: str) -> str: class AverageSpeedsInput (line 154) | class AverageSpeedsInput(BaseModel): method validate_timestamps (line 164) | def validate_timestamps(cls, v: str) -> str: method validate_source_type (line 170) | def validate_source_type(cls, v: str) -> str: class AnalyzeInput (line 177) | class AnalyzeInput(BaseModel): method validate_timestamps (line 196) | def validate_timestamps(cls, v: str) -> str: method validate_source_type (line 202) | def validate_source_type(cls, v: str) -> str: method validate_analysis_type (line 210) | def validate_analysis_type(cls, v: str) -> str: class VideoAnalyticsToolConfig (line 218) | class VideoAnalyticsToolConfig(FunctionGroupBaseConfig, name="video_anal... function video_analytics (line 248) | async def video_analytics(_config: VideoAnalyticsToolConfig, _builder: B... FILE: agent/src/vss_agents/video_analytics/utils.py function validate_iso_timestamp (line 28) | def validate_iso_timestamp(timestamp: str) -> str: function build_sensor_map (line 63) | def build_sensor_map(sensors: list[dict[str, Any]]) -> dict[str, dict[st... function build_place_map (line 120) | def build_place_map(sensors: list[dict[str, Any]]) -> dict[str, list[str]]: function parse_vst_sensor_list_response (line 164) | def parse_vst_sensor_list_response(sensors_str: str) -> set[str]: function compute_bucket_size_seconds (line 211) | def compute_bucket_size_seconds(start_time: str, end_time: str, bucket_c... function create_empty_histogram_buckets (line 236) | def create_empty_histogram_buckets(start_time: str, end_time: str, bucke... function create_events_from_incidents (line 277) | def create_events_from_incidents(incidents: list[dict[str, Any]]) -> tup... function sweep_overlapping_incidents (line 312) | def sweep_overlapping_incidents( FILE: agent/stubs/nat/data_models/common.pyi class BaseModelRegistryTag (line 18) | class BaseModelRegistryTag: ... class TypedBaseModel (line 20) | class TypedBaseModel(BaseModel): method __init_subclass__ (line 21) | def __init_subclass__(cls, name: str | None = None, **kwargs: object) ... FILE: agent/stubs/nat/data_models/evaluator.pyi class EvaluatorBaseConfig (line 19) | class EvaluatorBaseConfig(TypedBaseModel, BaseModelRegistryTag): ... FILE: agent/stubs/nat/data_models/function.pyi class FunctionBaseConfig (line 19) | class FunctionBaseConfig(TypedBaseModel, BaseModelRegistryTag): ... class FunctionGroupBaseConfig (line 20) | class FunctionGroupBaseConfig(TypedBaseModel, BaseModelRegistryTag): ... FILE: agent/tests/unit_test/agents/postprocessing/test_llm_based_rule_validator.py function mock_llm (line 30) | def mock_llm(): class TestLLMBasedRuleValidatorInit (line 40) | class TestLLMBasedRuleValidatorInit: method test_custom_prompt_template (line 43) | def test_custom_prompt_template(self, mock_llm): method test_negative_max_retries_raises (line 47) | def test_negative_max_retries_raises(self, mock_llm): class TestLLMBasedRuleValidatorValidate (line 52) | class TestLLMBasedRuleValidatorValidate: method test_passes_when_llm_says_passed (line 56) | async def test_passes_when_llm_says_passed(self, mock_llm): method test_fails_when_llm_says_failed (line 75) | async def test_fails_when_llm_says_failed(self, mock_llm): method test_retries_on_output_parser_exception (line 94) | async def test_retries_on_output_parser_exception(self, mock_llm): method test_raises_after_all_retries_exhausted (line 115) | async def test_raises_after_all_retries_exhausted(self, mock_llm): method test_unexpected_exception_breaks_retry_loop (line 135) | async def test_unexpected_exception_breaks_retry_loop(self, mock_llm): method test_bad_prompt_template_falls_back_to_default (line 156) | async def test_bad_prompt_template_falls_back_to_default(self, mock_llm): FILE: agent/tests/unit_test/agents/postprocessing/test_non_empty_response_validator.py function validator (line 24) | def validator(): function validator_with_template (line 29) | def validator_with_template(): class TestNonEmptyResponseValidator (line 33) | class TestNonEmptyResponseValidator: method test_passes_on_non_empty_output (line 37) | async def test_passes_on_non_empty_output(self, validator): method test_fails_on_empty_string (line 43) | async def test_fails_on_empty_string(self, validator): method test_fails_on_whitespace_only (line 49) | async def test_fails_on_whitespace_only(self, validator): method test_feedback_template (line 54) | def test_feedback_template(self, validator_with_template): method test_feedback_template_none_normalized (line 58) | def test_feedback_template_none_normalized(self): FILE: agent/tests/unit_test/agents/postprocessing/test_postprocessing_node.py class TestPostprocessingNodeInit (line 30) | class TestPostprocessingNodeInit: method test_default_config (line 33) | def test_default_config(self): method test_creates_non_empty_validator (line 39) | def test_creates_non_empty_validator(self): method test_creates_url_validator (line 46) | def test_creates_url_validator(self): method test_custom_validation_order (line 53) | def test_custom_validation_order(self): method test_default_validation_order_is_sequential (line 64) | def test_default_validation_order_is_sequential(self): class TestPostprocessingNodeProcess (line 77) | class TestPostprocessingNodeProcess: method test_empty_output_passes_without_non_empty_validator (line 81) | async def test_empty_output_passes_without_non_empty_validator(self): method test_empty_output_fails_with_non_empty_validator (line 90) | async def test_empty_output_fails_with_non_empty_validator(self): method test_non_empty_output_passes_non_empty_validator (line 99) | async def test_non_empty_output_passes_non_empty_validator(self): method test_no_validators_passes (line 108) | async def test_no_validators_passes(self): class TestPostprocessingNodeFailOpen (line 114) | class TestPostprocessingNodeFailOpen: method test_fail_open_on_validator_exception (line 118) | async def test_fail_open_on_validator_exception(self): method test_fail_closed_on_validator_exception (line 133) | async def test_fail_closed_on_validator_exception(self): class TestPostprocessingNodeGroupTimeout (line 148) | class TestPostprocessingNodeGroupTimeout: method test_group_timeout_fail_open (line 152) | async def test_group_timeout_fail_open(self): method test_group_timeout_fail_closed (line 174) | async def test_group_timeout_fail_closed(self): FILE: agent/tests/unit_test/agents/postprocessing/test_url_validator.py class TestExtractUrls (line 29) | class TestExtractUrls: method test_extracts_http_urls (line 32) | def test_extracts_http_urls(self): method test_extracts_https_urls (line 36) | def test_extracts_https_urls(self): method test_deduplicates (line 40) | def test_deduplicates(self): method test_strips_trailing_punctuation (line 44) | def test_strips_trailing_punctuation(self): method test_no_urls (line 50) | def test_no_urls(self): method test_multiple_urls (line 53) | def test_multiple_urls(self): method test_ignores_non_http_schemes (line 60) | def test_ignores_non_http_schemes(self): function _mock_response (line 65) | def _mock_response(status): class TestURLValidator (line 74) | class TestURLValidator: method validator (line 78) | def validator(self): method test_passes_when_no_urls (line 82) | async def test_passes_when_no_urls(self, validator): method test_fails_when_tag_src_is_placeholder (line 89) | async def test_fails_when_tag_src_is_placeholder(self, validator): method test_fails_when_markdown_link_url_is_placeholder (line 96) | async def test_fails_when_markdown_link_url_is_placeholder(self, valid... method test_passes_when_tag_src_url_returns_200 (line 103) | async def test_passes_when_tag_src_url_returns_200(self, validator): method test_fails_when_tag_src_url_returns_500 (line 117) | async def test_fails_when_tag_src_url_returns_500(self, validator): method test_head_405_falls_back_to_get (line 131) | async def test_head_405_falls_back_to_get(self, validator): method test_head_exception_falls_back_to_get (line 147) | async def test_head_exception_falls_back_to_get(self, validator): method test_returns_all_invalid_and_inaccessible_urls_at_once (line 162) | async def test_returns_all_invalid_and_inaccessible_urls_at_once(self,... method test_multiple_tags_partial_failure (line 180) | async def test_multiple_tags_partial_failure(self, validator): method test_deduplicates_invalid_urls (line 204) | async def test_deduplicates_invalid_urls(self, validator): method test_accepts_uppercase_scheme (line 213) | async def test_accepts_uppercase_scheme(self, validator): method test_feedback_template (line 226) | def test_feedback_template(self): method test_fails_when_tag_has_backslash_escaped_src (line 232) | async def test_fails_when_tag_has_backslash_escaped_src(self, validator): method test_passes_when_backslash_escaped_src_url_returns_200 (line 241) | async def test_passes_when_backslash_escaped_src_url_returns_200(self,... class TestExtractUrlsFromTagsWithAlt (line 257) | class TestExtractUrlsFromTagsWithAlt: method test_normal_double_quotes (line 260) | def test_normal_double_quotes(self): method test_normal_single_quotes (line 265) | def test_normal_single_quotes(self): method test_backslash_escaped_double_quotes (line 270) | def test_backslash_escaped_double_quotes(self): method test_backslash_escaped_single_quotes (line 275) | def test_backslash_escaped_single_quotes(self): method test_alt_before_src_with_backslash_quotes (line 280) | def test_alt_before_src_with_backslash_quotes(self): FILE: agent/tests/unit_test/agents/test_data_models.py class TestAgentDecision (line 23) | class TestAgentDecision: method test_agent_decision_values (line 26) | def test_agent_decision_values(self): method test_agent_decision_is_string_enum (line 33) | def test_agent_decision_is_string_enum(self): class TestAgentMessageChunkType (line 39) | class TestAgentMessageChunkType: method test_message_chunk_type_values (line 42) | def test_message_chunk_type_values(self): class TestAgentMessageChunk (line 51) | class TestAgentMessageChunk: method test_create_message_chunk_defaults (line 54) | def test_create_message_chunk_defaults(self): method test_create_message_chunk_with_values (line 60) | def test_create_message_chunk_with_values(self): method test_message_chunk_all_types (line 69) | def test_message_chunk_all_types(self): method test_message_chunk_long_content (line 75) | def test_message_chunk_long_content(self): class TestAgentOutput (line 82) | class TestAgentOutput: method test_create_agent_output_defaults (line 85) | def test_create_agent_output_defaults(self): method test_create_agent_output_success (line 94) | def test_create_agent_output_success(self): method test_create_agent_output_error (line 106) | def test_create_agent_output_error(self): method test_create_agent_output_partial_success (line 116) | def test_create_agent_output_partial_success(self): method test_agent_output_status_literal (line 126) | def test_agent_output_status_literal(self): method test_agent_output_side_effects_types (line 133) | def test_agent_output_side_effects_types(self): method test_agent_output_metadata_types (line 147) | def test_agent_output_metadata_types(self): method test_agent_output_empty_error_message (line 161) | def test_agent_output_empty_error_message(self): method test_agent_output_messages_types (line 166) | def test_agent_output_messages_types(self): FILE: agent/tests/unit_test/agents/test_multi_report_agent.py class TestMultiReportAgentInput (line 24) | class TestMultiReportAgentInput: method test_input_minimal_sensor (line 27) | def test_input_minimal_sensor(self): method test_input_minimal_place (line 38) | def test_input_minimal_place(self): method test_input_with_time_range (line 45) | def test_input_with_time_range(self): method test_input_with_max_result_size (line 55) | def test_input_with_max_result_size(self): method test_input_max_result_size_must_be_positive (line 63) | def test_input_max_result_size_must_be_positive(self): method test_input_invalid_source_type (line 77) | def test_input_invalid_source_type(self): class TestMultiReportAgentConfig (line 85) | class TestMultiReportAgentConfig: method test_config_creation (line 88) | def test_config_creation(self): method test_config_custom_max_incidents (line 95) | def test_config_custom_max_incidents(self): method test_config_max_incidents_minimum (line 102) | def test_config_max_incidents_minimum(self): method test_config_max_incidents_maximum (line 109) | def test_config_max_incidents_maximum(self): method test_config_max_incidents_below_minimum (line 116) | def test_config_max_incidents_below_minimum(self): method test_config_max_incidents_above_maximum (line 123) | def test_config_max_incidents_above_maximum(self): FILE: agent/tests/unit_test/agents/test_report_agent.py class TestReportAgentInput (line 26) | class TestReportAgentInput: method test_defaults (line 29) | def test_defaults(self): method test_with_incident_id (line 38) | def test_with_incident_id(self): method test_with_time_range (line 42) | def test_with_time_range(self): method test_with_source_sensor (line 49) | def test_with_source_sensor(self): method test_with_source_place (line 54) | def test_with_source_place(self): method test_invalid_source_type (line 58) | def test_invalid_source_type(self): method test_vlm_reasoning_enabled (line 62) | def test_vlm_reasoning_enabled(self): method test_vlm_reasoning_disabled (line 66) | def test_vlm_reasoning_disabled(self): class TestVideoReportAgentInput (line 71) | class TestVideoReportAgentInput: method test_all_fields (line 74) | def test_all_fields(self): method test_missing_sensor_id (line 79) | def test_missing_sensor_id(self): method test_only_sensor_id (line 83) | def test_only_sensor_id(self): FILE: agent/tests/unit_test/agents/test_search_agent.py class TestSearchAgentConfig (line 35) | class TestSearchAgentConfig: method test_required_fields (line 38) | def test_required_fields(self): method test_all_fields (line 49) | def test_all_fields(self): method test_defaults (line 64) | def test_defaults(self): method test_custom_use_attribute_search (line 75) | def test_custom_use_attribute_search(self): class TestSearchAgentInput (line 86) | class TestSearchAgentInput: method test_required_query (line 89) | def test_required_query(self): method test_missing_query_raises (line 94) | def test_missing_query_raises(self): method test_defaults (line 99) | def test_defaults(self): method test_all_fields (line 109) | def test_all_fields(self): method test_agent_mode_disabled (line 128) | def test_agent_mode_disabled(self): method test_fusion_disabled (line 136) | def test_fusion_disabled(self): method test_custom_max_results (line 144) | def test_custom_max_results(self): method test_top_k_override (line 152) | def test_top_k_override(self): method test_time_filters (line 162) | def test_time_filters(self): method test_only_start_time (line 172) | def test_only_start_time(self): method test_only_end_time (line 181) | def test_only_end_time(self): function _make_search_output (line 194) | def _make_search_output(num_results=1): class TestToIncidentsOutput (line 212) | class TestToIncidentsOutput: method test_empty_search_output (line 215) | def test_empty_search_output(self): method test_with_results (line 222) | def test_with_results(self): method test_incidents_json_structure (line 230) | def test_incidents_json_structure(self): class TestToChatResponse (line 245) | class TestToChatResponse: method test_empty_search_output (line 248) | def test_empty_search_output(self): method test_with_results (line 254) | def test_with_results(self): class TestToChatResponseChunk (line 260) | class TestToChatResponseChunk: method test_empty_search_output (line 263) | def test_empty_search_output(self): method test_with_results (line 268) | def test_with_results(self): class TestHelperMarkdownBulletList (line 274) | class TestHelperMarkdownBulletList: method test_empty_search_output (line 277) | def test_empty_search_output(self): method test_with_results (line 283) | def test_with_results(self): FILE: agent/tests/unit_test/agents/test_top_agent.py class TestTopAgentConstants (line 26) | class TestTopAgentConstants: method test_tool_not_found_error_message (line 29) | def test_tool_not_found_error_message(self): method test_no_input_error_message (line 33) | def test_no_input_error_message(self): method test_empty_messages_error (line 36) | def test_empty_messages_error(self): method test_empty_scratchpad_error (line 39) | def test_empty_scratchpad_error(self): class TestStripFrontendTags (line 43) | class TestStripFrontendTags: method test_strip_frontend_tags (line 98) | def test_strip_frontend_tags(self, content, expected): method test_none_content_returns_empty (line 101) | def test_none_content_returns_empty(self): FILE: agent/tests/unit_test/api/conftest.py function block_outbound_network (line 23) | def block_outbound_network(monkeypatch): FILE: agent/tests/unit_test/api/test_health_endpoint_coverage.py class TestHealthEndpointConfig (line 25) | class TestHealthEndpointConfig: method test_defaults (line 28) | def test_defaults(self): method test_custom (line 32) | def test_custom(self): class TestHealthEndpointInner (line 37) | class TestHealthEndpointInner: method test_health_check (line 41) | async def test_health_check(self): FILE: agent/tests/unit_test/api/test_rtsp_stream_api.py class TestStreamMode (line 43) | class TestStreamMode: method test_search_mode (line 46) | def test_search_mode(self): method test_other_mode (line 49) | def test_other_mode(self): method test_from_string (line 52) | def test_from_string(self): class TestServiceConfig (line 57) | class TestServiceConfig: method test_basic_config (line 60) | def test_basic_config(self): method test_full_config (line 69) | def test_full_config(self): class TestAddStreamRequest (line 86) | class TestAddStreamRequest: method test_required_fields (line 89) | def test_required_fields(self): method test_all_fields (line 98) | def test_all_fields(self): method test_alias_sensor_url (line 112) | def test_alias_sensor_url(self): method test_missing_required_fields_fails (line 117) | def test_missing_required_fields_fails(self): class TestAddStreamResponse (line 122) | class TestAddStreamResponse: method test_success_response (line 125) | def test_success_response(self): method test_failure_response (line 131) | def test_failure_response(self): class TestDeleteStreamResponse (line 137) | class TestDeleteStreamResponse: method test_success_response (line 140) | def test_success_response(self): method test_partial_response (line 145) | def test_partial_response(self): class TestAddToVst (line 150) | class TestAddToVst: method test_successful_add (line 156) | async def test_successful_add(self, mock_get_rtsp_url, mock_add_sensor): method test_vst_returns_error (line 173) | async def test_vst_returns_error(self, mock_add_sensor): method test_vst_missing_sensor_id (line 187) | async def test_vst_missing_sensor_id(self, mock_add_sensor): class TestAddToRtviCv (line 199) | class TestAddToRtviCv: method test_successful_add (line 203) | async def test_successful_add(self): method test_skipped_when_not_configured (line 217) | async def test_skipped_when_not_configured(self): method test_rtvi_cv_error (line 228) | async def test_rtvi_cv_error(self): class TestAddToRtviEmbed (line 243) | class TestAddToRtviEmbed: method test_successful_add (line 247) | async def test_successful_add(self): method test_skipped_when_not_configured (line 264) | async def test_skipped_when_not_configured(self): method test_fallback_to_sensor_id (line 277) | async def test_fallback_to_sensor_id(self): class TestStartEmbeddingGeneration (line 295) | class TestStartEmbeddingGeneration: method test_successful_start (line 299) | async def test_successful_start(self): method test_skipped_when_not_configured (line 321) | async def test_skipped_when_not_configured(self): class TestGetStreamInfoByName (line 331) | class TestGetStreamInfoByName: method test_successful_lookup (line 336) | async def test_successful_lookup(self, mock_vst_get_stream_info): method test_name_not_found (line 349) | async def test_name_not_found(self, mock_vst_get_stream_info): class TestCleanupFunctions (line 360) | class TestCleanupFunctions: method test_cleanup_vst_sensor_success (line 365) | async def test_cleanup_vst_sensor_success(self, mock_vst_delete_sensor): method test_cleanup_vst_storage_no_timeline (line 376) | async def test_cleanup_vst_storage_no_timeline(self, mock_vst_delete_s... method test_cleanup_rtvi_cv_skipped (line 387) | async def test_cleanup_rtvi_cv_skipped(self): method test_cleanup_rtvi_embed_stream_success (line 397) | async def test_cleanup_rtvi_embed_stream_success(self): method test_cleanup_rtvi_embed_generation_success (line 410) | async def test_cleanup_rtvi_embed_generation_success(self): class TestCreateRtspStreamApiRouter (line 423) | class TestCreateRtspStreamApiRouter: method test_create_router (line 426) | def test_create_router(self): method test_create_router_with_all_params (line 430) | def test_create_router_with_all_params(self): method test_router_has_routes (line 441) | def test_router_has_routes(self): class TestAddStreamEndpoint (line 446) | class TestAddStreamEndpoint: method test_successful_add_search_mode (line 455) | async def test_successful_add_search_mode( method test_successful_add_other_mode (line 487) | async def test_successful_add_other_mode(self, mock_add_vst): method test_vst_failure_no_rollback_needed (line 505) | async def test_vst_failure_no_rollback_needed(self, mock_add_vst): method test_rtvi_cv_failure_triggers_rollback (line 527) | async def test_rtvi_cv_failure_triggers_rollback( class TestDeleteStreamEndpoint (line 560) | class TestDeleteStreamEndpoint: method test_successful_delete_search_mode (line 570) | async def test_successful_delete_search_mode( method test_delete_stream_not_found (line 607) | async def test_delete_stream_not_found(self, mock_get_stream_info): method test_partial_delete (line 629) | async def test_partial_delete( class TestRegisterRtspStreamApiRoutes (line 664) | class TestRegisterRtspStreamApiRoutes: method test_register_with_config (line 667) | def test_register_with_config(self): method test_register_with_env_vars (line 686) | def test_register_with_env_vars(self): method test_register_missing_vst_url (line 704) | def test_register_missing_vst_url(self): method test_register_missing_rtvi_embed_url (line 713) | def test_register_missing_rtvi_embed_url(self): FILE: agent/tests/unit_test/api/test_video_search_ingest.py class TestAllowedVideoTypes (line 32) | class TestAllowedVideoTypes: method test_mp4_allowed (line 35) | def test_mp4_allowed(self): method test_mkv_allowed (line 38) | def test_mkv_allowed(self): method test_only_two_types (line 41) | def test_only_two_types(self): class TestVideoIngestResponse (line 45) | class TestVideoIngestResponse: method test_response_creation (line 48) | def test_response_creation(self): method test_response_default_chunks (line 57) | def test_response_default_chunks(self): method test_response_serialization (line 61) | def test_response_serialization(self): class TestCreateStreamingVideoIngestRouter (line 72) | class TestCreateStreamingVideoIngestRouter: method test_create_router (line 75) | def test_create_router(self): method test_create_router_custom_params (line 81) | def test_create_router_custom_params(self): method test_router_has_routes (line 90) | def test_router_has_routes(self): class TestStreamVideoToVstEndpoint (line 98) | class TestStreamVideoToVstEndpoint: method test_successful_upload (line 102) | async def test_successful_upload(self): method test_missing_content_type (line 153) | async def test_missing_content_type(self): method test_invalid_content_type (line 171) | async def test_invalid_content_type(self): method test_missing_content_length (line 192) | async def test_missing_content_length(self): method test_zero_content_length (line 210) | async def test_zero_content_length(self): method test_invalid_content_length_format (line 228) | async def test_invalid_content_length_format(self): method test_vst_upload_failure (line 246) | async def test_vst_upload_failure(self): method test_filename_without_extension (line 278) | async def test_filename_without_extension(self): class TestRegisterStreamingRoutes (line 318) | class TestRegisterStreamingRoutes: method test_register_with_env_vars (line 321) | def test_register_with_env_vars(self): method test_register_with_config (line 335) | def test_register_with_config(self): method test_register_missing_vst_url (line 352) | def test_register_missing_vst_url(self): method test_register_missing_rtvi_url (line 361) | def test_register_missing_rtvi_url(self): FILE: agent/tests/unit_test/api/test_video_upload_url.py class TestVideoUploadURLConfig (line 25) | class TestVideoUploadURLConfig: method test_with_required_fields (line 28) | def test_with_required_fields(self): method test_missing_vst_external_url_fails (line 36) | def test_missing_vst_external_url_fails(self): method test_missing_agent_base_url_fails (line 40) | def test_missing_agent_base_url_fails(self): class TestVideoUploadURLInput (line 45) | class TestVideoUploadURLInput: method test_basic_input (line 48) | def test_basic_input(self): method test_with_embedding (line 53) | def test_with_embedding(self): method test_empty_filename_fails (line 60) | def test_empty_filename_fails(self): method test_missing_filename_fails (line 64) | def test_missing_filename_fails(self): method test_various_filenames (line 68) | def test_various_filenames(self): class TestVideoUploadURLOutput (line 75) | class TestVideoUploadURLOutput: method test_output_creation (line 78) | def test_output_creation(self): method test_output_with_different_urls (line 83) | def test_output_with_different_urls(self): class TestVideoUploadURLFunction (line 94) | class TestVideoUploadURLFunction: method test_vst_url_construction (line 97) | def test_vst_url_construction(self): method test_embedding_url_construction (line 110) | def test_embedding_url_construction(self): method test_url_with_trailing_slash (line 121) | def test_url_with_trailing_slash(self): method test_filename_without_extension (line 132) | def test_filename_without_extension(self): method test_filename_with_multiple_dots (line 139) | def test_filename_with_multiple_dots(self): method test_input_json_parsing (line 146) | def test_input_json_parsing(self): method test_output_json_serialization (line 154) | def test_output_json_serialization(self): FILE: agent/tests/unit_test/api/test_video_upload_url_converters.py class TestVideoUploadURLConverters (line 27) | class TestVideoUploadURLConverters: method config (line 31) | def config(self): method mock_builder (line 38) | def mock_builder(self): method test_str_input_converter (line 42) | async def test_str_input_converter(self, config, mock_builder): method test_chat_request_input_converter (line 52) | async def test_chat_request_input_converter(self, config, mock_builder): method test_chat_request_converter_error (line 66) | async def test_chat_request_converter_error(self, config, mock_builder): method test_output_converter (line 80) | async def test_output_converter(self, config, mock_builder): method test_chat_response_converter (line 91) | async def test_chat_response_converter(self, config, mock_builder): FILE: agent/tests/unit_test/api/test_video_upload_url_coverage.py class TestVideoUploadURLConfig (line 25) | class TestVideoUploadURLConfig: method test_required_fields (line 28) | def test_required_fields(self): method test_missing_vst_url_raises (line 36) | def test_missing_vst_url_raises(self): method test_missing_agent_url_raises (line 40) | def test_missing_agent_url_raises(self): class TestVideoUploadURLInput (line 45) | class TestVideoUploadURLInput: method test_basic (line 48) | def test_basic(self): method test_with_embedding (line 53) | def test_with_embedding(self): method test_empty_filename_raises (line 57) | def test_empty_filename_raises(self): method test_missing_filename_raises (line 61) | def test_missing_filename_raises(self): class TestVideoUploadURLOutput (line 66) | class TestVideoUploadURLOutput: method test_basic (line 69) | def test_basic(self): method test_missing_url_raises (line 73) | def test_missing_url_raises(self): FILE: agent/tests/unit_test/api/test_video_upload_url_inner.py class TestVideoUploadUrlInner (line 27) | class TestVideoUploadUrlInner: method config (line 31) | def config(self): method mock_builder (line 38) | def mock_builder(self): method test_upload_url_normal (line 42) | async def test_upload_url_normal(self, config, mock_builder): method test_upload_url_embedding (line 56) | async def test_upload_url_embedding(self, config, mock_builder): method test_upload_url_filename_without_extension (line 70) | async def test_upload_url_filename_without_extension(self, config, moc... method test_upload_url_trailing_slash_stripped (line 82) | async def test_upload_url_trailing_slash_stripped(self, mock_builder): method test_converters_registered (line 96) | async def test_converters_registered(self, config, mock_builder): FILE: agent/tests/unit_test/conftest.py function mock_llm (line 26) | def mock_llm(): function mock_llm_response (line 34) | def mock_llm_response(): function sample_video_event (line 45) | def sample_video_event(): function sample_incidents (line 51) | def sample_incidents(): function sample_sensors (line 76) | def sample_sensors(): function sample_markdown_report (line 104) | def sample_markdown_report(): function sample_geocoding_response (line 127) | def sample_geocoding_response(): function mock_async_http_response (line 152) | def mock_async_http_response(): function utc_now (line 160) | def utc_now(): FILE: agent/tests/unit_test/data_models/test_vss.py class TestFloatToInt (line 28) | class TestFloatToInt: method test_float_to_int_positive (line 31) | def test_float_to_int_positive(self): method test_float_to_int_zero (line 37) | def test_float_to_int_zero(self): method test_float_to_int_already_int (line 41) | def test_float_to_int_already_int(self): method test_float_to_int_none (line 45) | def test_float_to_int_none(self): method test_float_to_int_large (line 49) | def test_float_to_int_large(self): class TestTimestampValidator (line 54) | class TestTimestampValidator: method test_valid_rfc3339_timestamp (line 57) | def test_valid_rfc3339_timestamp(self): method test_invalid_timestamp_format (line 67) | def test_invalid_timestamp_format(self): method test_invalid_timestamp_values (line 76) | def test_invalid_timestamp_values(self): class TestRemoveTimezone (line 86) | class TestRemoveTimezone: method test_remove_timezone_from_z_suffix (line 89) | def test_remove_timezone_from_z_suffix(self): method test_remove_timezone_from_offset (line 97) | def test_remove_timezone_from_offset(self): method test_remove_timezone_from_datetime (line 102) | def test_remove_timezone_from_datetime(self): method test_remove_timezone_naive_datetime (line 110) | def test_remove_timezone_naive_datetime(self): method test_remove_timezone_invalid_string (line 117) | def test_remove_timezone_invalid_string(self): method test_remove_timezone_invalid_type (line 122) | def test_remove_timezone_invalid_type(self): method test_remove_timezone_without_microseconds (line 127) | def test_remove_timezone_without_microseconds(self): class TestMediaInfoOffset (line 133) | class TestMediaInfoOffset: method test_create_media_info_offset (line 136) | def test_create_media_info_offset(self): method test_media_info_offset_defaults (line 143) | def test_media_info_offset_defaults(self): method test_media_info_offset_float_conversion (line 149) | def test_media_info_offset_float_conversion(self): method test_media_info_offset_none_to_default (line 155) | def test_media_info_offset_none_to_default(self): method test_media_info_offset_alias_start (line 161) | def test_media_info_offset_alias_start(self): method test_media_info_offset_type_literal (line 170) | def test_media_info_offset_type_literal(self): method test_media_info_offset_large_values (line 175) | def test_media_info_offset_large_values(self): method test_media_info_offset_forbid_extra (line 180) | def test_media_info_offset_forbid_extra(self): FILE: agent/tests/unit_test/embed/test_cosmos_embed.py class TestCosmosEmbedClient (line 27) | class TestCosmosEmbedClient: method test_init (line 30) | def test_init(self): method test_init_with_trailing_slash (line 37) | def test_init_with_trailing_slash(self): class TestGetImageEmbedding (line 44) | class TestGetImageEmbedding: method client (line 48) | def client(self): method test_get_image_embedding_base64 (line 52) | async def test_get_image_embedding_base64(self, client): method test_get_image_embedding_url (line 67) | async def test_get_image_embedding_url(self, client): method test_get_image_embedding_http_error (line 85) | async def test_get_image_embedding_http_error(self, client): class TestGetTextEmbedding (line 95) | class TestGetTextEmbedding: method client (line 99) | def client(self): method test_get_text_embedding_success (line 103) | async def test_get_text_embedding_success(self, client): method test_get_text_embedding_http_error (line 120) | async def test_get_text_embedding_http_error(self, client): class TestGetVideoEmbedding (line 130) | class TestGetVideoEmbedding: method client (line 134) | def client(self): method test_get_video_embedding_success (line 138) | async def test_get_video_embedding_success(self, client): class TestGetVideoEmbeddingsFromUrls (line 148) | class TestGetVideoEmbeddingsFromUrls: method client (line 152) | def client(self): method test_get_video_embeddings_single_url (line 156) | async def test_get_video_embeddings_single_url(self, client): method test_get_video_embeddings_multiple_urls (line 174) | async def test_get_video_embeddings_multiple_urls(self, client): method test_get_video_embeddings_url_formatting (line 200) | async def test_get_video_embeddings_url_formatting(self, client): FILE: agent/tests/unit_test/evaluators/test_custom_qa.py class TestDefaultQAEvalPrompt (line 27) | class TestDefaultQAEvalPrompt: method test_prompt_exists (line 30) | def test_prompt_exists(self): method test_prompt_has_input_variables (line 33) | def test_prompt_has_input_variables(self): method test_prompt_template_content (line 38) | def test_prompt_template_content(self): class TestCustomizedQAEvaluator (line 43) | class TestCustomizedQAEvaluator: method test_init_default_prompt (line 46) | def test_init_default_prompt(self): method test_init_custom_prompt (line 56) | def test_init_custom_prompt(self): method test_init_custom_params (line 68) | def test_init_custom_params(self): method test_evaluate_item_skips_wrong_method (line 83) | async def test_evaluate_item_skips_wrong_method(self): method test_evaluate_item_missing_ground_truth (line 102) | async def test_evaluate_item_missing_ground_truth(self): method test_evaluate_item_success (line 121) | async def test_evaluate_item_success(self): method test_evaluate_item_strips_agent_think_tags (line 150) | async def test_evaluate_item_strips_agent_think_tags(self): FILE: agent/tests/unit_test/evaluators/test_custom_trajectory.py class TestScoreOutputParser (line 29) | class TestScoreOutputParser: method test_parse_simple_score (line 32) | def test_parse_simple_score(self): method test_parse_with_thinking (line 45) | def test_parse_with_thinking(self): method test_parse_with_reasoning_content_attribute (line 58) | def test_parse_with_reasoning_content_attribute(self): method test_parse_score_zero (line 71) | def test_parse_score_zero(self): method test_parse_score_one (line 83) | def test_parse_score_one(self): method test_parse_no_score_raises_error (line 95) | def test_parse_no_score_raises_error(self): method test_parse_score_out_of_range_raises_error (line 107) | def test_parse_score_out_of_range_raises_error(self): class TestCustomizedTrajectoryEvaluatorInit (line 120) | class TestCustomizedTrajectoryEvaluatorInit: method test_init_with_dual_prompts (line 123) | def test_init_with_dual_prompts(self): method test_init_defaults_to_none_prompts (line 137) | def test_init_defaults_to_none_prompts(self): class TestExtractToolCallsFromLlmEnd (line 144) | class TestExtractToolCallsFromLlmEnd: method evaluator (line 148) | def evaluator(self): method test_parses_tool_calls_from_data_output (line 152) | def test_parses_tool_calls_from_data_output(self, evaluator): method test_parses_openai_format_tool_calls (line 164) | def test_parses_openai_format_tool_calls(self, evaluator): method test_parses_multiple_tool_calls (line 173) | def test_parses_multiple_tool_calls(self, evaluator): method test_returns_empty_for_no_data (line 185) | def test_returns_empty_for_no_data(self, evaluator): method test_returns_empty_for_no_tool_calls_string (line 190) | def test_returns_empty_for_no_tool_calls_string(self, evaluator): method test_returns_empty_for_malformed_tool_calls (line 198) | def test_returns_empty_for_malformed_tool_calls(self, evaluator): class TestGetAgentSelectedUuids (line 207) | class TestGetAgentSelectedUuids: method evaluator (line 211) | def evaluator(self): method _create_mock_step (line 216) | def _create_mock_step(self, event_type, uuid, parent_id, payload_name=... method test_returns_llm_end_that_made_tool_selection (line 234) | def test_returns_llm_end_that_made_tool_selection(self, evaluator): method test_excludes_llm_end_without_tool_calls (line 254) | def test_excludes_llm_end_without_tool_calls(self, evaluator): method test_multiple_tool_selections (line 270) | def test_multiple_tool_selections(self, evaluator): method test_nested_tool_calls_filtered (line 293) | def test_nested_tool_calls_filtered(self, evaluator): method test_tool_name_must_match (line 335) | def test_tool_name_must_match(self, evaluator): method test_tool_matching_respects_order (line 364) | def test_tool_matching_respects_order(self, evaluator): method test_openai_format_tool_name (line 392) | def test_openai_format_tool_name(self, evaluator): class TestEvaluateItem (line 417) | class TestEvaluateItem: method _make_evaluator (line 420) | def _make_evaluator(self, prompt_with_ref=None, prompt_without_ref=None): method _make_item (line 428) | def _make_item(self, item_id="test_001", query="What?", output="Answer... method _make_agent_action (line 439) | def _make_agent_action(self, tool_name, tool_input): method test_uses_prompt_with_reference (line 452) | async def test_uses_prompt_with_reference(self, mock_adapter, mock_inv... method test_uses_prompt_without_reference (line 480) | async def test_uses_prompt_without_reference(self, mock_adapter, mock_... method test_raises_when_reference_but_no_prompt (line 501) | async def test_raises_when_reference_but_no_prompt(self, mock_adapter): method test_raises_when_no_reference_and_no_prompt (line 518) | async def test_raises_when_no_reference_and_no_prompt(self, mock_adapt... method test_structured_tool_calls_step_numbering (line 533) | async def test_structured_tool_calls_step_numbering(self, mock_adapter... method test_tool_with_no_preceding_llm_defaults_to_step_1 (line 573) | async def test_tool_with_no_preceding_llm_defaults_to_step_1(self, moc... method test_string_tool_input_is_parsed (line 601) | async def test_string_tool_input_is_parsed(self, mock_adapter, mock_in... method test_conversation_history_formatted_in_prompt (line 631) | async def test_conversation_history_formatted_in_prompt(self, mock_ada... method test_no_conversation_history_shows_placeholder (line 661) | async def test_no_conversation_history_shows_placeholder(self, mock_ad... method test_build_reasoning_includes_all_fields (line 681) | async def test_build_reasoning_includes_all_fields(self, mock_adapter,... FILE: agent/tests/unit_test/evaluators/test_data_models.py class TestEvaluationScore (line 20) | class TestEvaluationScore: method test_create_evaluation_score (line 23) | def test_create_evaluation_score(self): method test_evaluation_score_with_error (line 38) | def test_evaluation_score_with_error(self): method test_evaluation_score_with_field_scores (line 48) | def test_evaluation_score_with_field_scores(self): method test_evaluation_score_bounds (line 62) | def test_evaluation_score_bounds(self): method test_evaluation_score_from_error (line 70) | def test_evaluation_score_from_error(self): method test_evaluation_score_from_error_with_field_scores (line 84) | def test_evaluation_score_from_error_with_field_scores(self): method test_evaluation_score_from_error_defaults (line 93) | def test_evaluation_score_from_error_defaults(self): method test_evaluation_score_optional_fields (line 102) | def test_evaluation_score_optional_fields(self): method test_evaluation_score_none_section_score (line 112) | def test_evaluation_score_none_section_score(self): FILE: agent/tests/unit_test/evaluators/test_eval_config_models.py class TestFieldConfig (line 24) | class TestFieldConfig: method test_create_field_config_defaults (line 27) | def test_create_field_config_defaults(self): method test_create_field_config_with_method (line 34) | def test_create_field_config_with_method(self): method test_field_config_with_nested_fields (line 39) | def test_field_config_with_nested_fields(self): method test_field_config_dynamic_discovery (line 51) | def test_field_config_dynamic_discovery(self): method test_field_config_method_collection (line 59) | def test_field_config_method_collection(self): method test_field_config_nested_method_collection (line 64) | def test_field_config_nested_method_collection(self): method test_field_config_average_without_fields_error (line 76) | def test_field_config_average_without_fields_error(self): method test_field_config_empty_fields_error (line 81) | def test_field_config_empty_fields_error(self): method test_field_config_forbid_extra (line 86) | def test_field_config_forbid_extra(self): method test_default_method_is_llm_judge (line 91) | def test_default_method_is_llm_judge(self): method test_methods_collected_from_nested_structure (line 97) | def test_methods_collected_from_nested_structure(self): method test_validation_errors_parametrized (line 125) | def test_validation_errors_parametrized(self, invalid_config, expected... class TestEvalMetricsConfig (line 131) | class TestEvalMetricsConfig: method test_create_from_dict (line 134) | def test_create_from_dict(self): method test_from_dict_single_root_key (line 150) | def test_from_dict_single_root_key(self): method test_from_dict_empty_dict (line 155) | def test_from_dict_empty_dict(self): method test_from_dict_invalid_type (line 160) | def test_from_dict_invalid_type(self): method test_methods_collected (line 165) | def test_methods_collected(self): method test_config_with_dynamic_discovery (line 179) | def test_config_with_dynamic_discovery(self): method test_deep_nesting (line 190) | def test_deep_nesting(self): FILE: agent/tests/unit_test/evaluators/test_evaluate.py class TestEvaluateModuleImports (line 19) | class TestEvaluateModuleImports: method test_module_import (line 22) | def test_module_import(self): class TestEvaluationHelpers (line 29) | class TestEvaluationHelpers: method test_evaluation_metrics_exist (line 32) | def test_evaluation_metrics_exist(self): FILE: agent/tests/unit_test/evaluators/test_evaluate_patch.py function _make_item (line 35) | def _make_item(item_id: str, query: str = "q", full_dataset_entry: dict ... function _make_multi_turn_entry (line 45) | def _make_multi_turn_entry(turns: list[dict]) -> dict: class TestGetConversation (line 56) | class TestGetConversation: method test_returns_list_when_present (line 57) | def test_returns_list_when_present(self): method test_returns_empty_for_missing_key (line 61) | def test_returns_empty_for_missing_key(self): method test_returns_empty_for_non_list (line 65) | def test_returns_empty_for_non_list(self, value): method test_returns_empty_list_as_is (line 68) | def test_returns_empty_list_as_is(self): class TestIsMultiTurnItem (line 75) | class TestIsMultiTurnItem: method test_true_with_conversation (line 76) | def test_true_with_conversation(self): method test_false_without_conversation (line 80) | def test_false_without_conversation(self): method test_false_with_empty_conversation (line 83) | def test_false_with_empty_conversation(self): class TestExpandMultiTurnItems (line 90) | class TestExpandMultiTurnItems: method test_single_turn_passes_through (line 91) | def test_single_turn_passes_through(self): method test_multi_turn_expanded (line 97) | def test_multi_turn_expanded(self): method test_expanded_items_share_conversation_id (line 116) | def test_expanded_items_share_conversation_id(self): method test_default_turn_id (line 131) | def test_default_turn_id(self): method test_mixed_single_and_multi (line 139) | def test_mixed_single_and_multi(self): method test_preserves_turn_fields (line 155) | def test_preserves_turn_fields(self): class TestFilterByDatasetFilter (line 171) | class TestFilterByDatasetFilter: method test_empty_filter_returns_all (line 172) | def test_empty_filter_returns_all(self): method test_single_turn_matching (line 176) | def test_single_turn_matching(self): method test_single_turn_no_match (line 184) | def test_single_turn_no_match(self): method test_narrows_evaluation_method (line 189) | def test_narrows_evaluation_method(self): method test_narrows_multi_method_to_multiple (line 194) | def test_narrows_multi_method_to_multiple(self): method test_multi_turn_keeps_whole_conversation_if_any_turn_matches (line 199) | def test_multi_turn_keeps_whole_conversation_if_any_turn_matches(self): method test_multi_turn_narrows_evaluation_methods (line 219) | def test_multi_turn_narrows_evaluation_methods(self): method test_multi_turn_filters_out_entire_conversation_if_no_turn_matches (line 240) | def test_multi_turn_filters_out_entire_conversation_if_no_turn_matches... method test_mixed_single_and_multi_turn (line 260) | def test_mixed_single_and_multi_turn(self): method test_non_list_evaluation_method_skipped (line 287) | def test_non_list_evaluation_method_skipped(self): method test_missing_evaluation_method_skipped (line 292) | def test_missing_evaluation_method_skipped(self): class TestWriteLatencySummary (line 301) | class TestWriteLatencySummary: method test_writes_json_file (line 302) | def test_writes_json_file(self, tmp_path): method test_returns_none_for_no_trajectory (line 325) | def test_returns_none_for_no_trajectory(self, tmp_path): method test_returns_none_on_error (line 339) | def test_returns_none_on_error(self): class TestDatasetFilterValidation (line 350) | class TestDatasetFilterValidation: method _validate_dataset_filter (line 358) | def _validate_dataset_filter(env_value: str) -> list[str]: method test_all_is_valid (line 374) | def test_all_is_valid(self): method test_single_filter (line 377) | def test_single_filter(self): method test_multiple_filters (line 382) | def test_multiple_filters(self): method test_whitespace_handling (line 386) | def test_whitespace_handling(self): method test_case_insensitive (line 390) | def test_case_insensitive(self): method test_invalid_value_raises (line 394) | def test_invalid_value_raises(self): method test_all_combined_with_others_raises (line 398) | def test_all_combined_with_others_raises(self): FILE: agent/tests/unit_test/evaluators/test_field_evaluators.py class TestTokenizeText (line 30) | class TestTokenizeText: method test_tokenize_simple_text (line 33) | def test_tokenize_simple_text(self): method test_tokenize_with_punctuation (line 38) | def test_tokenize_with_punctuation(self): method test_tokenize_numbers (line 45) | def test_tokenize_numbers(self): method test_tokenize_empty_string (line 51) | def test_tokenize_empty_string(self): method test_tokenize_case_insensitive (line 56) | def test_tokenize_case_insensitive(self): class TestCalculateF1Score (line 62) | class TestCalculateF1Score: method test_f1_identical_tokens (line 65) | def test_f1_identical_tokens(self): method test_f1_no_overlap (line 70) | def test_f1_no_overlap(self): method test_f1_partial_overlap (line 75) | def test_f1_partial_overlap(self): method test_f1_both_empty (line 80) | def test_f1_both_empty(self): method test_f1_pred_empty (line 85) | def test_f1_pred_empty(self): method test_f1_ref_empty (line 90) | def test_f1_ref_empty(self): method test_f1_single_token_match (line 95) | def test_f1_single_token_match(self): method test_f1_zero_precision_recall_edge_case (line 100) | def test_f1_zero_precision_recall_edge_case(self): class TestNonEmptyMetric (line 108) | class TestNonEmptyMetric: method test_non_empty_with_content (line 112) | async def test_non_empty_with_content(self): method test_non_empty_with_empty_string (line 119) | async def test_non_empty_with_empty_string(self): method test_non_empty_with_whitespace_only (line 126) | async def test_non_empty_with_whitespace_only(self): method test_non_empty_with_none (line 133) | async def test_non_empty_with_none(self): class TestF1Metric (line 140) | class TestF1Metric: method test_f1_metric_identical (line 144) | async def test_f1_metric_identical(self): method test_f1_metric_different (line 151) | async def test_f1_metric_different(self): method test_f1_metric_partial (line 158) | async def test_f1_metric_partial(self): class TestExactMatchMetric (line 165) | class TestExactMatchMetric: method test_exact_match_identical (line 169) | async def test_exact_match_identical(self): method test_exact_match_different (line 176) | async def test_exact_match_different(self): method test_exact_match_whitespace_normalized (line 183) | async def test_exact_match_whitespace_normalized(self): method test_exact_match_case_sensitive (line 190) | async def test_exact_match_case_sensitive(self): class TestRegexMetric (line 197) | class TestRegexMetric: method test_regex_match (line 201) | async def test_regex_match(self): method test_regex_no_match (line 208) | async def test_regex_no_match(self): method test_regex_invalid_pattern (line 215) | async def test_regex_invalid_pattern(self): method test_regex_email_pattern (line 222) | async def test_regex_email_pattern(self): class TestRegisterMetric (line 229) | class TestRegisterMetric: method test_register_new_metric (line 232) | def test_register_new_metric(self): method test_duplicate_registration_raises (line 241) | def test_duplicate_registration_raises(self): FILE: agent/tests/unit_test/evaluators/test_llm_judge.py class TestFieldEvaluation (line 27) | class TestFieldEvaluation: method test_field_evaluation_basic (line 30) | def test_field_evaluation_basic(self): method test_field_evaluation_no_match (line 35) | def test_field_evaluation_no_match(self): method test_field_evaluation_perfect_score (line 40) | def test_field_evaluation_perfect_score(self): method test_field_evaluation_score_bounds (line 44) | def test_field_evaluation_score_bounds(self): method test_field_evaluation_invalid_score_above (line 52) | def test_field_evaluation_invalid_score_above(self): method test_field_evaluation_invalid_score_below (line 56) | def test_field_evaluation_invalid_score_below(self): class TestLLMJudgeMetric (line 61) | class TestLLMJudgeMetric: method test_init_missing_llm (line 64) | def test_init_missing_llm(self): method test_init_missing_prompt (line 68) | def test_init_missing_prompt(self): method test_init_success (line 73) | def test_init_success(self): method test_init_custom_max_retries (line 82) | def test_init_custom_max_retries(self): method test_init_with_multi_field_prompt (line 91) | def test_init_with_multi_field_prompt(self): method test_evaluate_with_strings (line 101) | async def test_evaluate_with_strings(self): method test_evaluate_with_dicts (line 123) | async def test_evaluate_with_dicts(self): method test_evaluate_llm_error_returns_none (line 144) | async def test_evaluate_llm_error_returns_none(self): method test_evaluate_with_field_discovery_no_prompt (line 159) | async def test_evaluate_with_field_discovery_no_prompt(self): method test_evaluate_with_field_discovery_empty_fields (line 174) | async def test_evaluate_with_field_discovery_empty_fields(self): FILE: agent/tests/unit_test/evaluators/test_llm_judge_coverage.py class TestFieldEvaluation (line 27) | class TestFieldEvaluation: method test_basic (line 30) | def test_basic(self): method test_no_match (line 35) | def test_no_match(self): method test_score_bounds (line 40) | def test_score_bounds(self): class TestLLMJudgeMetricInit (line 47) | class TestLLMJudgeMetricInit: method test_missing_llm_raises (line 50) | def test_missing_llm_raises(self): method test_missing_prompt_raises (line 54) | def test_missing_prompt_raises(self): method test_valid_init (line 67) | def test_valid_init(self): method test_with_thinking_tag (line 85) | def test_with_thinking_tag(self): method test_with_multi_field_prompt (line 102) | def test_with_multi_field_prompt(self): class TestLLMJudgeMetricEvaluate (line 120) | class TestLLMJudgeMetricEvaluate: method mock_metric (line 124) | def mock_metric(self): method test_evaluate_success (line 140) | async def test_evaluate_success(self, mock_metric): method test_evaluate_with_dict_values (line 153) | async def test_evaluate_with_dict_values(self, mock_metric): method test_evaluate_failure_returns_none (line 166) | async def test_evaluate_failure_returns_none(self, mock_metric): class TestLLMJudgeMetricInvokeLLM (line 172) | class TestLLMJudgeMetricInvokeLLM: method mock_metric (line 176) | def mock_metric(self): method test_invoke_with_retries (line 193) | async def test_invoke_with_retries(self, mock_metric): method test_invoke_all_retries_fail (line 211) | async def test_invoke_all_retries_fail(self, mock_metric): class TestLLMJudgeMetricFieldDiscovery (line 221) | class TestLLMJudgeMetricFieldDiscovery: method mock_metric (line 225) | def mock_metric(self): method test_empty_unspecified_fields (line 242) | async def test_empty_unspecified_fields(self, mock_metric): method test_missing_multi_field_prompt_raises (line 249) | async def test_missing_multi_field_prompt_raises(self): method test_field_discovery_exception_returns_none (line 271) | async def test_field_discovery_exception_returns_none(self, mock_metric): FILE: agent/tests/unit_test/evaluators/test_llm_judge_field_discovery.py class TestLLMJudgeFieldDiscoverySuccess (line 26) | class TestLLMJudgeFieldDiscoverySuccess: method test_field_discovery_success (line 30) | async def test_field_discovery_success(self): method test_field_discovery_missing_attribute (line 69) | async def test_field_discovery_missing_attribute(self): method test_evaluate_with_non_str_actual (line 103) | async def test_evaluate_with_non_str_actual(self): method test_invoke_with_thinking_tag (line 133) | async def test_invoke_with_thinking_tag(self): FILE: agent/tests/unit_test/evaluators/test_register_coverage.py class TestCustomizedQAEvaluatorConfig (line 24) | class TestCustomizedQAEvaluatorConfig: method test_required_fields (line 27) | def test_required_fields(self): method test_custom_values (line 35) | def test_custom_values(self): method test_missing_llm_name_raises (line 48) | def test_missing_llm_name_raises(self): class TestCustomizedTrajectoryEvaluatorConfig (line 53) | class TestCustomizedTrajectoryEvaluatorConfig: method test_required_fields (line 56) | def test_required_fields(self): method test_custom_values (line 66) | def test_custom_values(self): method test_missing_llm_name_raises (line 81) | def test_missing_llm_name_raises(self): FILE: agent/tests/unit_test/evaluators/test_report_evaluator.py class MockMetric (line 40) | class MockMetric(EvaluationMetric): method __init__ (line 43) | def __init__(self, score: float = 1.0): method evaluate (line 46) | async def evaluate(self, actual: Any, reference: Any, field_name: str ... class MockLLMJudge (line 51) | class MockLLMJudge(EvaluationMetric): method __init__ (line 54) | def __init__(self, score: float = 1.0): method evaluate (line 57) | async def evaluate(self, actual: Any, reference: Any, field_name: str ... method evaluate_with_field_discovery (line 61) | async def evaluate_with_field_discovery( class TestLoadEvalMetricsYAML (line 74) | class TestLoadEvalMetricsYAML: method test_load_eval_metrics_yaml_success (line 77) | def test_load_eval_metrics_yaml_success(self): method test_load_eval_metrics_yaml_errors (line 110) | def test_load_eval_metrics_yaml_errors(self, yaml_content, expected_er... class TestFetchAndParseReport (line 125) | class TestFetchAndParseReport: method test_fetch_and_parse_report_success (line 129) | async def test_fetch_and_parse_report_success(self): method test_fetch_and_parse_report_errors (line 156) | async def test_fetch_and_parse_report_errors(self, response, url_patte... class TestReportEvaluator (line 166) | class TestReportEvaluator: method setup_method (line 167) | def setup_method(self): method test_evaluate_tree_section_with_fields_verifies_averaging (line 196) | async def test_evaluate_tree_section_with_fields_verifies_averaging(se... method test_evaluate_tree_default_to_llm_judge_when_method_none (line 234) | async def test_evaluate_tree_default_to_llm_judge_when_method_none(self): method test_evaluate_tree_error_scenarios (line 252) | async def test_evaluate_tree_error_scenarios(self, setup_func, expecte... method test_evaluate_tree_dynamic_discovery_reference_field_scenarios (line 288) | async def test_evaluate_tree_dynamic_discovery_reference_field_scenari... method test_evaluate_tree_nested_sections (line 349) | async def test_evaluate_tree_nested_sections(self): method test_evaluate_tree_explicit_plus_dynamic_discovery (line 409) | async def test_evaluate_tree_explicit_plus_dynamic_discovery(self): method test_score_value_with_env_vars (line 457) | async def test_score_value_with_env_vars(self): method test_evaluate_item_success (line 481) | async def test_evaluate_item_success(self): method test_evaluate_item_error_handling (line 519) | async def test_evaluate_item_error_handling(self): method test_evaluate_item_with_vlm_scoring (line 541) | async def test_evaluate_item_with_vlm_scoring(self): method test_evaluate_item_with_vlm_scoring_disabled (line 616) | async def test_evaluate_item_with_vlm_scoring_disabled(self): method test_evaluate_item_vlm_scoring_treats_none_as_zero (line 658) | async def test_evaluate_item_vlm_scoring_treats_none_as_zero(self): FILE: agent/tests/unit_test/evaluators/test_utils.py class TestShouldEvaluate (line 30) | class TestShouldEvaluate: method test_missing_full_dataset_entry (line 33) | def test_missing_full_dataset_entry(self): method test_missing_evaluation_method (line 47) | def test_missing_evaluation_method(self): method test_evaluation_method_not_list (line 59) | def test_evaluation_method_not_list(self): method test_evaluator_type_in_list (line 71) | def test_evaluator_type_in_list(self): method test_evaluator_type_not_in_list (line 83) | def test_evaluator_type_not_in_list(self): method test_empty_evaluation_method_list (line 94) | def test_empty_evaluation_method_list(self): class TestComputeItemLatency (line 106) | class TestComputeItemLatency: method _make_item (line 109) | def _make_item(self, trajectory_timestamps=None): method test_computes_latency_from_timestamps (line 123) | def test_computes_latency_from_timestamps(self): method test_single_timestamp_returns_zero (line 127) | def test_single_timestamp_returns_zero(self): method test_two_timestamps (line 131) | def test_two_timestamps(self): method test_returns_none_for_empty_trajectory (line 135) | def test_returns_none_for_empty_trajectory(self): method test_returns_none_for_no_trajectory (line 139) | def test_returns_none_for_no_trajectory(self): method test_rounds_to_3_decimals (line 143) | def test_rounds_to_3_decimals(self): class TestStripAgentThinkTags (line 148) | class TestStripAgentThinkTags: method test_no_tags (line 151) | def test_no_tags(self): method test_single_tag (line 155) | def test_single_tag(self): method test_multiple_tags (line 159) | def test_multiple_tags(self): method test_multiline_tags (line 163) | def test_multiline_tags(self): method test_empty_string (line 170) | def test_empty_string(self): method test_none_input (line 173) | def test_none_input(self): method test_only_tags (line 176) | def test_only_tags(self): class TestScoreOutputParser (line 181) | class TestScoreOutputParser: method test_parse_simple_score (line 184) | def test_parse_simple_score(self): method test_parse_score_with_text (line 197) | def test_parse_score_with_text(self): method test_parse_with_think_tags (line 209) | def test_parse_with_think_tags(self): class TestInvokeLLMWithRetry (line 223) | class TestInvokeLLMWithRetry: method test_successful_invocation (line 227) | async def test_successful_invocation(self): method test_retry_on_failure (line 260) | async def test_retry_on_failure(self): method test_exhausted_retries (line 294) | async def test_exhausted_retries(self): method test_llm_judge_reasoning_disabled (line 322) | async def test_llm_judge_reasoning_disabled(self): FILE: agent/tests/unit_test/test_prompt.py class TestVlmPromptExamples (line 24) | class TestVlmPromptExamples: method test_examples_is_list (line 27) | def test_examples_is_list(self): method test_examples_not_empty (line 31) | def test_examples_not_empty(self): class TestVlmFormatInstruction (line 36) | class TestVlmFormatInstruction: method test_instruction_is_string (line 39) | def test_instruction_is_string(self): method test_instruction_mentions_timestamp (line 43) | def test_instruction_mentions_timestamp(self): class TestInitSummarizePrompt (line 48) | class TestInitSummarizePrompt: method test_prompt_is_dict (line 51) | def test_prompt_is_dict(self): method test_prompt_has_required_keys (line 55) | def test_prompt_has_required_keys(self): class TestVideoFrameTimestampPrompt (line 62) | class TestVideoFrameTimestampPrompt: method test_prompt_is_string (line 65) | def test_prompt_is_string(self): class TestVssSummarizePrompt (line 70) | class TestVssSummarizePrompt: method test_prompt_is_string (line 73) | def test_prompt_is_string(self): method test_prompt_contains_placeholders (line 77) | def test_prompt_contains_placeholders(self): FILE: agent/tests/unit_test/test_sitecustomize.py class TestSiteCustomize (line 21) | class TestSiteCustomize: method test_load_env_file_with_dotenv (line 24) | def test_load_env_file_with_dotenv(self, tmp_path): method test_load_env_file_without_dotenv (line 36) | def test_load_env_file_without_dotenv(self, tmp_path): method test_load_env_file_nonexistent (line 47) | def test_load_env_file_nonexistent(self, tmp_path): method test_auto_load_env_files_no_pointer (line 58) | def test_auto_load_env_files_no_pointer(self, tmp_path): method test_auto_load_env_files_with_pointer (line 70) | def test_auto_load_env_files_with_pointer(self, tmp_path): method test_auto_load_env_files_empty_pointer (line 98) | def test_auto_load_env_files_empty_pointer(self, tmp_path): FILE: agent/tests/unit_test/tools/test_build_vst_url.py class TestBuildVstUrl (line 23) | class TestBuildVstUrl: method test_replaces_scheme_and_host (line 26) | def test_replaces_scheme_and_host(self): method test_preserves_path_query_fragment (line 33) | def test_preserves_path_query_fragment(self): method test_https_base_url (line 40) | def test_https_base_url(self): method test_base_url_trailing_slash (line 47) | def test_base_url_trailing_slash(self): method test_no_path (line 54) | def test_no_path(self): method test_root_path (line 61) | def test_root_path(self): method test_same_host (line 68) | def test_same_host(self): method test_parametrized (line 90) | def test_parametrized(self, base, url, expected): FILE: agent/tests/unit_test/tools/test_chart_generator.py class TestChartType (line 34) | class TestChartType: method test_chart_type_values (line 37) | def test_chart_type_values(self): method test_chart_type_all_values (line 41) | def test_chart_type_all_values(self): class TestChartFileFormat (line 45) | class TestChartFileFormat: method test_chart_file_format_values (line 48) | def test_chart_file_format_values(self): class TestChartData (line 54) | class TestChartData: method test_chart_data_defaults (line 57) | def test_chart_data_defaults(self): method test_chart_data_with_values (line 62) | def test_chart_data_with_values(self): class TestBarChartData (line 68) | class TestBarChartData: method test_bar_chart_data_creation (line 71) | def test_bar_chart_data_creation(self): method test_bar_chart_data_full (line 81) | def test_bar_chart_data_full(self): method test_bar_chart_data_empty_series (line 95) | def test_bar_chart_data_empty_series(self): class TestPieChartData (line 103) | class TestPieChartData: method test_pie_chart_data_creation (line 106) | def test_pie_chart_data_creation(self): method test_pie_chart_data_with_title (line 115) | def test_pie_chart_data_with_title(self): class TestChartGeneratorConfig (line 124) | class TestChartGeneratorConfig: method test_config_defaults (line 127) | def test_config_defaults(self): method test_config_with_custom_url (line 132) | def test_config_with_custom_url(self): method test_config_url_with_trailing_slash (line 137) | def test_config_url_with_trailing_slash(self): method test_config_url_with_query_fails (line 141) | def test_config_url_with_query_fails(self): method test_config_url_with_fragment_fails (line 145) | def test_config_url_with_fragment_fails(self): method test_config_url_pointing_to_file_fails (line 149) | def test_config_url_pointing_to_file_fails(self): class TestChartGeneratorInput (line 154) | class TestChartGeneratorInput: method test_input_with_bar_chart (line 157) | def test_input_with_bar_chart(self): method test_input_with_pie_chart (line 167) | def test_input_with_pie_chart(self): method test_input_with_mixed_charts (line 175) | def test_input_with_mixed_charts(self): method test_input_output_dir_sanitization (line 181) | def test_input_output_dir_sanitization(self): method test_input_output_dir_absolute_path (line 189) | def test_input_output_dir_absolute_path(self): method test_input_output_dir_none (line 196) | def test_input_output_dir_none(self): class TestChartGenExecOutput (line 201) | class TestChartGenExecOutput: method test_output_success (line 204) | def test_output_success(self): method test_output_failure (line 214) | def test_output_failure(self): class TestPlotBarChart (line 224) | class TestPlotBarChart: method test_plot_bar_chart_single_series (line 227) | def test_plot_bar_chart_single_series(self): method test_plot_bar_chart_multiple_series (line 242) | def test_plot_bar_chart_multiple_series(self): method test_plot_bar_chart_empty_series (line 257) | def test_plot_bar_chart_empty_series(self): class TestPlotPieChart (line 269) | class TestPlotPieChart: method test_plot_pie_chart_basic (line 272) | def test_plot_pie_chart_basic(self): method test_plot_pie_chart_no_title (line 284) | def test_plot_pie_chart_no_title(self): class TestConvertToFormat (line 296) | class TestConvertToFormat: method test_convert_to_png (line 299) | def test_convert_to_png(self): method test_convert_to_svg (line 314) | def test_convert_to_svg(self): class TestStrInputConverter (line 328) | class TestStrInputConverter: method test_convert_json_string (line 331) | def test_convert_json_string(self): method test_convert_with_chart_data (line 337) | def test_convert_with_chart_data(self): method test_convert_invalid_json (line 351) | def test_convert_invalid_json(self): FILE: agent/tests/unit_test/tools/test_chart_generator_converters.py class TestChartGeneratorConverters (line 26) | class TestChartGeneratorConverters: method config (line 30) | def config(self): method mock_builder (line 37) | def mock_builder(self): method test_output_converter_with_success (line 43) | async def test_output_converter_with_success(self, config, mock_builder): method test_output_converter_all_failed (line 59) | async def test_output_converter_all_failed(self, config, mock_builder): method test_chat_response_converter (line 70) | async def test_chat_response_converter(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_chart_generator_coverage.py class TestChartType (line 39) | class TestChartType: method test_bar (line 42) | def test_bar(self): method test_pie (line 45) | def test_pie(self): class TestChartFileFormat (line 49) | class TestChartFileFormat: method test_png (line 52) | def test_png(self): method test_svg (line 55) | def test_svg(self): method test_jpeg (line 58) | def test_jpeg(self): class TestBarChartData (line 62) | class TestBarChartData: method test_basic (line 65) | def test_basic(self): method test_with_labels (line 75) | def test_with_labels(self): class TestPieChartData (line 88) | class TestPieChartData: method test_basic (line 91) | def test_basic(self): method test_with_title (line 96) | def test_with_title(self): class TestPlotBarChart (line 101) | class TestPlotBarChart: method test_basic_bar_chart (line 104) | def test_basic_bar_chart(self): method test_multiple_series (line 116) | def test_multiple_series(self): class TestPlotPieChart (line 126) | class TestPlotPieChart: method test_basic_pie_chart (line 129) | def test_basic_pie_chart(self): method test_pie_chart_no_title (line 135) | def test_pie_chart_no_title(self): class TestConvertToFormat (line 142) | class TestConvertToFormat: method test_convert_to_png (line 145) | def test_convert_to_png(self): method test_convert_to_svg (line 153) | def test_convert_to_svg(self): class TestChartGeneratorConfig (line 162) | class TestChartGeneratorConfig: method test_defaults (line 165) | def test_defaults(self): method test_custom_url (line 170) | def test_custom_url(self): method test_url_with_query_raises (line 174) | def test_url_with_query_raises(self): method test_url_with_fragment_raises (line 178) | def test_url_with_fragment_raises(self): method test_url_pointing_to_file_raises (line 182) | def test_url_pointing_to_file_raises(self): method test_url_normalization (line 186) | def test_url_normalization(self): class TestChartGeneratorInput (line 191) | class TestChartGeneratorInput: method test_basic (line 194) | def test_basic(self): method test_output_dir_sanitized (line 201) | def test_output_dir_sanitized(self): method test_output_dir_none (line 206) | def test_output_dir_none(self): class TestChartGenExecOutput (line 212) | class TestChartGenExecOutput: method test_success (line 215) | def test_success(self): method test_failure (line 224) | def test_failure(self): class TestStrInputConverter (line 233) | class TestStrInputConverter: method test_valid_json (line 236) | def test_valid_json(self): method test_invalid_json_raises (line 242) | def test_invalid_json_raises(self): class TestChatRequestInputConverter (line 247) | class TestChatRequestInputConverter: method test_valid_request (line 250) | def test_valid_request(self): method test_invalid_content_raises (line 261) | def test_invalid_content_raises(self): FILE: agent/tests/unit_test/tools/test_chart_generator_inner.py class TestChartGeneratorInner (line 29) | class TestChartGeneratorInner: method config (line 33) | def config(self): method mock_builder (line 40) | def mock_builder(self): method test_generate_bar_chart (line 48) | async def test_generate_bar_chart(self, config, mock_builder): method test_generate_pie_chart (line 63) | async def test_generate_pie_chart(self, config, mock_builder): method test_generate_multiple_charts (line 77) | async def test_generate_multiple_charts(self, config, mock_builder): method test_no_object_store_raises (line 92) | async def test_no_object_store_raises(self, mock_builder): method test_output_converter (line 105) | async def test_output_converter(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_code_executor.py class TestCodeExecutorConfig (line 28) | class TestCodeExecutorConfig: method test_config_creation (line 31) | def test_config_creation(self): method test_config_with_gpu (line 41) | def test_config_with_gpu(self): method test_config_missing_base_image (line 49) | def test_config_missing_base_image(self): method test_config_missing_language_packages (line 53) | def test_config_missing_language_packages(self): method test_config_empty_packages (line 57) | def test_config_empty_packages(self): class TestCodeExecutorInput (line 65) | class TestCodeExecutorInput: method test_input_with_code (line 68) | def test_input_with_code(self): method test_input_with_files (line 76) | def test_input_with_files(self): method test_input_none_code (line 83) | def test_input_none_code(self): method test_input_multiple_files (line 90) | def test_input_multiple_files(self): class TestCodeExecutorOutput (line 102) | class TestCodeExecutorOutput: method test_output_success (line 105) | def test_output_success(self): method test_output_error (line 109) | def test_output_error(self): method test_output_empty_message (line 113) | def test_output_empty_message(self): method test_output_multiline (line 117) | def test_output_multiline(self): method test_output_serialization (line 121) | def test_output_serialization(self): class TestDockerBackendModule (line 127) | class TestDockerBackendModule: method test_cleanup_docker_resources (line 130) | def test_cleanup_docker_resources(self): FILE: agent/tests/unit_test/tools/test_embed_search.py class TestChatRequestInputConverter (line 30) | class TestChatRequestInputConverter: method test_valid_json_params (line 33) | def test_valid_json_params(self): method test_valid_json_prompts (line 43) | def test_valid_json_prompts(self): method test_invalid_json_uses_content_as_query (line 53) | def test_invalid_json_uses_content_as_query(self): method test_json_without_params_or_prompts (line 63) | def test_json_without_params_or_prompts(self): class TestEmbedSearchConfigValidation (line 74) | class TestEmbedSearchConfigValidation: method test_missing_cosmos_endpoint_raises (line 77) | def test_missing_cosmos_endpoint_raises(self): method test_missing_es_endpoint_raises (line 84) | def test_missing_es_endpoint_raises(self): method test_missing_vst_base_url_raises (line 91) | def test_missing_vst_base_url_raises(self): class TestQueryInputValidation (line 99) | class TestQueryInputValidation: method test_empty_embeddings_list (line 102) | def test_empty_embeddings_list(self): method test_embeddings_with_nested_dict (line 106) | def test_embeddings_with_nested_dict(self): class TestEmbedSearchResultItem (line 115) | class TestEmbedSearchResultItem: method test_defaults (line 118) | def test_defaults(self): method test_with_values (line 128) | def test_with_values(self): method test_serialization (line 146) | def test_serialization(self): class TestEmbedSearchOutput (line 157) | class TestEmbedSearchOutput: method test_defaults (line 160) | def test_defaults(self): method test_with_results (line 165) | def test_with_results(self): method test_serialization (line 177) | def test_serialization(self): FILE: agent/tests/unit_test/tools/test_embed_search_coverage.py class TestSanitizeForLogging (line 25) | class TestSanitizeForLogging: method test_dict_with_vector_field (line 28) | def test_dict_with_vector_field(self): method test_dict_with_empty_vector (line 34) | def test_dict_with_empty_vector(self): method test_dict_with_query_vector (line 39) | def test_dict_with_query_vector(self): method test_dict_with_embeddings_list (line 44) | def test_dict_with_embeddings_list(self): method test_nested_dict (line 49) | def test_nested_dict(self): method test_list_of_dicts (line 54) | def test_list_of_dicts(self): method test_plain_value (line 60) | def test_plain_value(self): method test_vector_non_list (line 65) | def test_vector_non_list(self): class TestStrInputConverterEdgeCases (line 71) | class TestStrInputConverterEdgeCases: method test_json_with_both_params_and_prompts_and_source_type (line 74) | def test_json_with_both_params_and_prompts_and_source_type(self): method test_json_missing_source_type_falls_back (line 80) | def test_json_missing_source_type_falls_back(self): class TestBase2025Constant (line 88) | class TestBase2025Constant: method test_base_2025_is_utc (line 91) | def test_base_2025_is_utc(self): method test_base_2025_is_jan_1 (line 96) | def test_base_2025_is_jan_1(self): class TestEmbedSearchOutputEdgeCases (line 102) | class TestEmbedSearchOutputEdgeCases: method test_with_query_embedding (line 105) | def test_with_query_embedding(self): method test_empty_results_serialization (line 109) | def test_empty_results_serialization(self): FILE: agent/tests/unit_test/tools/test_embed_search_edge_cases.py function _make_es_response (line 30) | def _make_es_response(hits): class TestEmbedSearchEdgeCases (line 37) | class TestEmbedSearchEdgeCases: method config (line 41) | def config(self): method mock_builder (line 50) | def mock_builder(self): method mock_es_client (line 54) | def mock_es_client(self): method mock_embed_client (line 60) | def mock_embed_client(self): method _get_inner_fn (line 65) | async def _get_inner_fn(self, config, mock_builder, mock_es_client, mo... method test_top_k_limits_results (line 73) | async def test_top_k_limits_results(self, config, mock_builder, mock_e... method test_empty_response_field (line 111) | async def test_empty_response_field(self, config, mock_builder, mock_e... method test_no_sensor_description (line 130) | async def test_no_sensor_description(self, config, mock_builder, mock_... method test_response_data_not_dict (line 158) | async def test_response_data_not_dict(self, config, mock_builder, mock... method test_with_filters_and_timestamps (line 177) | async def test_with_filters_and_timestamps(self, config, mock_builder,... method test_timestamp_without_tz (line 198) | async def test_timestamp_without_tz(self, config, mock_builder, mock_e... FILE: agent/tests/unit_test/tools/test_embed_search_inner.py function _make_es_hit (line 30) | def _make_es_hit(source, score=0.9): function _make_es_response (line 35) | def _make_es_response(hits): class TestEmbedSearchInner (line 43) | class TestEmbedSearchInner: method config (line 47) | def config(self): method mock_builder (line 56) | def mock_builder(self): method mock_es_client (line 60) | def mock_es_client(self): method mock_embed_client (line 66) | def mock_embed_client(self): method _get_inner_fn (line 73) | async def _get_inner_fn(self, config, mock_builder, mock_es_client, mo... method test_text_query (line 81) | async def test_text_query(self, config, mock_builder, mock_es_client, ... method test_image_url_query (line 114) | async def test_image_url_query(self, config, mock_builder, mock_es_cli... method test_video_url_query (line 133) | async def test_video_url_query(self, config, mock_builder, mock_es_cli... method test_precomputed_embeddings (line 144) | async def test_precomputed_embeddings(self, config, mock_builder, mock... method test_no_query_raises (line 154) | async def test_no_query_raises(self, config, mock_builder, mock_es_cli... method test_with_video_sources_filter (line 161) | async def test_with_video_sources_filter(self, config, mock_builder, m... method test_with_comma_separated_video_sources (line 172) | async def test_with_comma_separated_video_sources(self, config, mock_b... method test_with_description_filter (line 183) | async def test_with_description_filter(self, config, mock_builder, moc... method test_with_timestamp_filters (line 192) | async def test_with_timestamp_filters(self, config, mock_builder, mock... method test_with_top_k (line 208) | async def test_with_top_k(self, config, mock_builder, mock_es_client, ... method test_with_min_cosine_similarity (line 217) | async def test_with_min_cosine_similarity(self, config, mock_builder, ... method test_es_index_not_found (line 237) | async def test_es_index_not_found(self, config, mock_builder, mock_es_... method test_hit_without_llm_skipped (line 252) | async def test_hit_without_llm_skipped(self, config, mock_builder, moc... method test_hit_with_location_and_coordinate (line 268) | async def test_hit_with_location_and_coordinate(self, config, mock_bui... method test_hit_with_no_queries (line 304) | async def test_hit_with_no_queries(self, config, mock_builder, mock_es... method test_invalid_timestamp_in_response (line 323) | async def test_invalid_timestamp_in_response(self, config, mock_builde... method test_timestamp_start_only (line 349) | async def test_timestamp_start_only(self, config, mock_builder, mock_e... method test_invalid_timestamp_in_params (line 360) | async def test_invalid_timestamp_in_params(self, config, mock_builder,... method test_with_vst_internal_url (line 372) | async def test_with_vst_internal_url(self, mock_builder, mock_es_clien... method test_single_video_source_not_list (line 392) | async def test_single_video_source_not_list(self, config, mock_builder... method test_queries_data_not_list (line 401) | async def test_queries_data_not_list(self, config, mock_builder, mock_... method test_response_not_json (line 418) | async def test_response_not_json(self, config, mock_builder, mock_es_c... method test_rtsp_source_type (line 437) | async def test_rtsp_source_type(self, config, mock_builder, mock_es_cl... method test_video_file_index_not_exists (line 447) | async def test_video_file_index_not_exists(self, config, mock_builder,... FILE: agent/tests/unit_test/tools/test_evaluation_compressor.py class TestEvaluationCompressorConfig (line 26) | class TestEvaluationCompressorConfig: method test_required_fields (line 29) | def test_required_fields(self): method test_custom_remove_caption_details (line 38) | def test_custom_remove_caption_details(self): method test_missing_llm_name_fails (line 46) | def test_missing_llm_name_fails(self): method test_missing_token_limit_fails (line 50) | def test_missing_token_limit_fails(self): class TestEvaluationCompressorInput (line 55) | class TestEvaluationCompressorInput: method test_basic_input (line 58) | def test_basic_input(self): method test_empty_string (line 62) | def test_empty_string(self): method test_long_text (line 66) | def test_long_text(self): class TestRemoveCaptionDetails (line 72) | class TestRemoveCaptionDetails: method test_removes_timestamp_lines (line 75) | def test_removes_timestamp_lines(self): method test_preserves_non_timestamp_lines (line 84) | def test_preserves_non_timestamp_lines(self): method test_empty_input (line 93) | def test_empty_input(self): method test_mixed_content (line 97) | def test_mixed_content(self): method test_timestamp_with_spaces (line 116) | def test_timestamp_with_spaces(self): class TestSplitTextBySections (line 124) | class TestSplitTextBySections: method test_single_section (line 127) | def test_single_section(self): method test_two_sections (line 133) | def test_two_sections(self): method test_more_sections_than_paragraphs (line 142) | def test_more_sections_than_paragraphs(self): method test_equal_sections (line 148) | def test_equal_sections(self): method test_invalid_num_sections (line 159) | def test_invalid_num_sections(self): method test_negative_num_sections (line 163) | def test_negative_num_sections(self): method test_many_paragraphs (line 167) | def test_many_paragraphs(self): FILE: agent/tests/unit_test/tools/test_fov_counts.py class TestFOVCountsWithChartConfig (line 22) | class TestFOVCountsWithChartConfig: method test_config_creation (line 25) | def test_config_creation(self): method test_config_custom_base_url (line 34) | def test_config_custom_base_url(self): class TestFOVCountsWithChartInput (line 43) | class TestFOVCountsWithChartInput: method test_input_minimal (line 46) | def test_input_minimal(self): method test_input_full (line 56) | def test_input_full(self): method test_input_various_object_types (line 67) | def test_input_various_object_types(self): class TestFOVCountsWithChartOutput (line 78) | class TestFOVCountsWithChartOutput: method test_output_creation (line 81) | def test_output_creation(self): method test_output_with_chart_url (line 93) | def test_output_with_chart_url(self): method test_output_zero_counts (line 103) | def test_output_zero_counts(self): method test_output_serialization (line 113) | def test_output_serialization(self): FILE: agent/tests/unit_test/tools/test_geolocation.py class TestGeolocationConfig (line 22) | class TestGeolocationConfig: method test_config_defaults (line 25) | def test_config_defaults(self): method test_config_custom_timeout (line 29) | def test_config_custom_timeout(self): class TestGeolocationInput (line 34) | class TestGeolocationInput: method test_input_creation (line 37) | def test_input_creation(self): method test_input_zero_coordinates (line 42) | def test_input_zero_coordinates(self): method test_input_negative_coordinates (line 47) | def test_input_negative_coordinates(self): method test_input_extreme_latitude (line 52) | def test_input_extreme_latitude(self): method test_input_extreme_longitude (line 56) | def test_input_extreme_longitude(self): class TestGeolocationOutput (line 61) | class TestGeolocationOutput: method test_output_defaults (line 64) | def test_output_defaults(self): method test_output_full_data (line 77) | def test_output_full_data(self): method test_output_partial_data (line 97) | def test_output_partial_data(self): method test_output_serialization (line 106) | def test_output_serialization(self): FILE: agent/tests/unit_test/tools/test_incidents.py class TestVARetrievalConfig (line 22) | class TestVARetrievalConfig: method test_defaults (line 25) | def test_defaults(self): method test_custom_values (line 36) | def test_custom_values(self): class TestVARetrievalInput (line 57) | class TestVARetrievalInput: method test_defaults (line 60) | def test_defaults(self): method test_sql_query_action (line 72) | def test_sql_query_action(self): method test_get_schema_action (line 77) | def test_get_schema_action(self): method test_single_incident_retrieval (line 81) | def test_single_incident_retrieval(self): method test_time_range_query (line 85) | def test_time_range_query(self): method test_place_source_type (line 99) | def test_place_source_type(self): method test_with_includes (line 107) | def test_with_includes(self): class TestDuckDBIncidentsManagerNormalizeTimestamp (line 112) | class TestDuckDBIncidentsManagerNormalizeTimestamp: method test_none_timestamp (line 115) | def test_none_timestamp(self): method test_z_suffix_conversion (line 119) | def test_z_suffix_conversion(self): method test_timestamp_with_offset (line 123) | def test_timestamp_with_offset(self): method test_timestamp_with_milliseconds (line 127) | def test_timestamp_with_milliseconds(self): method test_timestamp_with_microseconds (line 131) | def test_timestamp_with_microseconds(self): class TestDuckDBIncidentsManagerInit (line 136) | class TestDuckDBIncidentsManagerInit: method test_init (line 139) | def test_init(self): method test_class_level_instances (line 147) | def test_class_level_instances(self): FILE: agent/tests/unit_test/tools/test_lvs_video_understanding.py class TestLVSVideoUnderstandingConfig (line 24) | class TestLVSVideoUnderstandingConfig: method test_with_required_fields (line 27) | def test_with_required_fields(self): method test_custom_timeouts (line 44) | def test_custom_timeouts(self): method test_custom_model (line 56) | def test_custom_model(self): method test_custom_video_url_tool (line 66) | def test_custom_video_url_tool(self): method test_missing_lvs_backend_url_fails (line 76) | def test_missing_lvs_backend_url_fails(self): method test_missing_hitl_template_fails (line 84) | def test_missing_hitl_template_fails(self): class TestLVSVideoUnderstandingInput (line 93) | class TestLVSVideoUnderstandingInput: method test_basic_input (line 96) | def test_basic_input(self): method test_missing_sensor_id_fails (line 102) | def test_missing_sensor_id_fails(self): method test_empty_sensor_id_fails (line 106) | def test_empty_sensor_id_fails(self): FILE: agent/tests/unit_test/tools/test_multi_incident_formatter.py class TestNormalizeTimestamp (line 27) | class TestNormalizeTimestamp: method test_normalize_microseconds (line 30) | def test_normalize_microseconds(self): method test_normalize_already_correct (line 35) | def test_normalize_already_correct(self): method test_normalize_short_milliseconds (line 40) | def test_normalize_short_milliseconds(self): method test_normalize_no_fractional (line 45) | def test_normalize_no_fractional(self): class TestIncidentData (line 52) | class TestIncidentData: method test_create_incident_data (line 55) | def test_create_incident_data(self): method test_incident_data_default_metadata (line 68) | def test_incident_data_default_metadata(self): class TestMultiIncidentFormatterInput (line 79) | class TestMultiIncidentFormatterInput: method test_create_input_basic (line 82) | def test_create_input_basic(self): method test_create_input_with_times (line 92) | def test_create_input_with_times(self): method test_create_input_timestamp_normalization (line 103) | def test_create_input_timestamp_normalization(self): class TestMultiIncidentFormatterOutput (line 115) | class TestMultiIncidentFormatterOutput: method test_create_output (line 118) | def test_create_output(self): method test_create_output_no_chart (line 128) | def test_create_output_no_chart(self): class TestDetermineOptimalBinSize (line 137) | class TestDetermineOptimalBinSize: method test_determine_bin_size_empty (line 140) | def test_determine_bin_size_empty(self): method test_determine_bin_size_single_incident (line 145) | def test_determine_bin_size_single_incident(self): method test_determine_bin_size_hour_range (line 159) | def test_determine_bin_size_hour_range(self): method test_determine_bin_size_day_range (line 178) | def test_determine_bin_size_day_range(self): method test_determine_bin_size_invalid_timestamps (line 197) | def test_determine_bin_size_invalid_timestamps(self): FILE: agent/tests/unit_test/tools/test_prompt_gen.py class TestPromptGenConfig (line 21) | class TestPromptGenConfig: method test_with_required_field (line 24) | def test_with_required_field(self): method test_custom_prompt (line 29) | def test_custom_prompt(self): class TestPromptGenInput (line 38) | class TestPromptGenInput: method test_basic_input (line 41) | def test_basic_input(self): method test_with_detailed_thinking (line 51) | def test_with_detailed_thinking(self): method test_with_previous_prompt (line 59) | def test_with_previous_prompt(self): method test_all_fields (line 67) | def test_all_fields(self): FILE: agent/tests/unit_test/tools/test_prompt_gen_coverage.py class TestPromptGenConfig (line 24) | class TestPromptGenConfig: method test_required_fields (line 27) | def test_required_fields(self): method test_custom_prompt (line 32) | def test_custom_prompt(self): method test_missing_llm_raises (line 36) | def test_missing_llm_raises(self): class TestPromptGenInput (line 41) | class TestPromptGenInput: method test_required_fields (line 44) | def test_required_fields(self): method test_all_fields (line 51) | def test_all_fields(self): method test_missing_user_query_raises (line 61) | def test_missing_user_query_raises(self): method test_missing_user_intent_raises (line 65) | def test_missing_user_intent_raises(self): FILE: agent/tests/unit_test/tools/test_prompt_gen_inner.py class TestPromptGenInner (line 27) | class TestPromptGenInner: method config (line 31) | def config(self): method mock_builder (line 37) | def mock_builder(self): method test_basic_prompt_gen (line 41) | async def test_basic_prompt_gen(self, config, mock_builder): method test_prompt_gen_with_detailed_thinking (line 57) | async def test_prompt_gen_with_detailed_thinking(self, config, mock_bu... method test_prompt_gen_with_previous_prompt (line 73) | async def test_prompt_gen_with_previous_prompt(self, config, mock_buil... FILE: agent/tests/unit_test/tools/test_python_executor.py class TestCodeExecutorConfig (line 25) | class TestCodeExecutorConfig: method test_with_required_fields (line 28) | def test_with_required_fields(self): method test_with_gpu (line 38) | def test_with_gpu(self): method test_empty_packages (line 46) | def test_empty_packages(self): method test_missing_base_image_fails (line 53) | def test_missing_base_image_fails(self): method test_missing_packages_fails (line 57) | def test_missing_packages_fails(self): class TestCodeExecutorInput (line 62) | class TestCodeExecutorInput: method test_basic_input (line 65) | def test_basic_input(self): method test_with_files (line 73) | def test_with_files(self): method test_none_code (line 85) | def test_none_code(self): method test_multiline_code (line 92) | def test_multiline_code(self): class TestCodeExecutorOutput (line 103) | class TestCodeExecutorOutput: method test_successful_output (line 106) | def test_successful_output(self): method test_error_output (line 110) | def test_error_output(self): method test_multiline_output (line 114) | def test_multiline_output(self): method test_serialization (line 119) | def test_serialization(self): FILE: agent/tests/unit_test/tools/test_python_executor_coverage.py class TestCodeExecutorConfig (line 25) | class TestCodeExecutorConfig: method test_required_fields (line 28) | def test_required_fields(self): method test_with_gpu (line 38) | def test_with_gpu(self): method test_missing_base_image_raises (line 46) | def test_missing_base_image_raises(self): method test_missing_packages_raises (line 50) | def test_missing_packages_raises(self): class TestCodeExecutorInput (line 55) | class TestCodeExecutorInput: method test_with_code (line 58) | def test_with_code(self): method test_no_code (line 66) | def test_no_code(self): method test_empty_files (line 70) | def test_empty_files(self): class TestCodeExecutorOutput (line 75) | class TestCodeExecutorOutput: method test_success_output (line 78) | def test_success_output(self): method test_error_output (line 82) | def test_error_output(self): method test_missing_message_raises (line 86) | def test_missing_message_raises(self): FILE: agent/tests/unit_test/tools/test_report_gen.py class TestReportGenConfig (line 26) | class TestReportGenConfig: method test_with_required_field (line 29) | def test_with_required_field(self): method test_custom_values (line 40) | def test_custom_values(self): class TestReportGenInput (line 60) | class TestReportGenInput: method test_with_string_messages (line 63) | def test_with_string_messages(self): method test_with_list_messages (line 67) | def test_with_list_messages(self): method test_with_empty_list (line 75) | def test_with_empty_list(self): method test_missing_messages_fails (line 79) | def test_missing_messages_fails(self): class TestReportGenOutput (line 84) | class TestReportGenOutput: method test_output_creation (line 87) | def test_output_creation(self): method test_output_serialization (line 103) | def test_output_serialization(self): class TestFormatMessagesToMarkdown (line 121) | class TestFormatMessagesToMarkdown: method test_format_empty_messages (line 124) | def test_format_empty_messages(self): method test_format_dict_messages (line 129) | def test_format_dict_messages(self): method test_format_string_message (line 140) | def test_format_string_message(self): method test_format_object_with_content (line 145) | def test_format_object_with_content(self): method test_format_nested_content (line 154) | def test_format_nested_content(self): FILE: agent/tests/unit_test/tools/test_rtvi_vlm_alert.py class TestRTVIVLMAlertConfig (line 26) | class TestRTVIVLMAlertConfig: method test_required_fields (line 29) | def test_required_fields(self): method test_custom_defaults (line 41) | def test_custom_defaults(self): method test_optional_va_tool (line 59) | def test_optional_va_tool(self): method test_missing_required_raises (line 67) | def test_missing_required_raises(self): class TestRTVIVLMAlertInput (line 74) | class TestRTVIVLMAlertInput: method test_start_action (line 77) | def test_start_action(self): method test_stop_action (line 86) | def test_stop_action(self): method test_get_incidents_action (line 90) | def test_get_incidents_action(self): method test_defaults (line 103) | def test_defaults(self): method test_invalid_action_raises (line 113) | def test_invalid_action_raises(self): class TestRTVIVLMAlertOutput (line 118) | class TestRTVIVLMAlertOutput: method test_success_output (line 121) | def test_success_output(self): method test_failure_output (line 131) | def test_failure_output(self): method test_incidents_output (line 138) | def test_incidents_output(self): method test_defaults (line 149) | def test_defaults(self): class TestSensorToRtviStreamIdMapping (line 157) | class TestSensorToRtviStreamIdMapping: method test_mapping_is_dict (line 160) | def test_mapping_is_dict(self): FILE: agent/tests/unit_test/tools/test_rtvi_vlm_alert_inner.py class TestRTVIVLMAlertInner (line 31) | class TestRTVIVLMAlertInner: method config (line 35) | def config(self): method mock_builder (line 42) | def mock_builder(self): method _get_inner_fn (line 45) | async def _get_inner_fn(self, config, mock_builder): method test_get_incidents_no_sensor_name (line 51) | async def test_get_incidents_no_sensor_name(self, config, mock_builder): method test_get_incidents_no_va_tool (line 59) | async def test_get_incidents_no_va_tool(self, config, mock_builder): method test_get_incidents_with_va_tool (line 67) | async def test_get_incidents_with_va_tool(self, mock_builder): method test_get_incidents_string_result (line 89) | async def test_get_incidents_string_result(self, mock_builder): method test_get_incidents_va_tool_error (line 106) | async def test_get_incidents_va_tool_error(self, mock_builder): method test_start_no_sensor_name (line 123) | async def test_start_no_sensor_name(self, config, mock_builder): method test_stop_no_sensor_name (line 131) | async def test_stop_no_sensor_name(self, config, mock_builder): method test_start_sensor_not_found (line 139) | async def test_start_sensor_not_found(self, config, mock_builder): method test_stop_404_response (line 164) | async def test_stop_404_response(self, config, mock_builder): method test_stop_error_response (line 197) | async def test_stop_error_response(self, config, mock_builder): method test_stop_caption_error_continues (line 231) | async def test_stop_caption_error_continues(self, config, mock_builder): method test_stop_no_active_alert (line 261) | async def test_stop_no_active_alert(self, config, mock_builder): method test_stop_success (line 280) | async def test_stop_success(self, config, mock_builder): method test_connection_error (line 311) | async def test_connection_error(self, config, mock_builder): method test_generic_error (line 327) | async def test_generic_error(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_s3_picture_url.py class TestS3PictureURLConfig (line 25) | class TestS3PictureURLConfig: method test_defaults (line 28) | def test_defaults(self): method test_custom_values (line 35) | def test_custom_values(self): class TestS3PictureURLInput (line 48) | class TestS3PictureURLInput: method test_valid_sensor_id (line 51) | def test_valid_sensor_id(self): method test_various_sensor_ids (line 55) | def test_various_sensor_ids(self): method test_empty_sensor_id_fails (line 61) | def test_empty_sensor_id_fails(self): method test_missing_sensor_id_fails (line 65) | def test_missing_sensor_id_fails(self): class TestS3PictureURLOutput (line 70) | class TestS3PictureURLOutput: method test_output_creation (line 73) | def test_output_creation(self): method test_output_serialization (line 83) | def test_output_serialization(self): method test_output_various_urls (line 94) | def test_output_various_urls(self): FILE: agent/tests/unit_test/tools/test_search.py class TestSearchConfig (line 38) | class TestSearchConfig: method test_required_fields (line 41) | def test_required_fields(self): method test_custom_prompt (line 52) | def test_custom_prompt(self): method test_fusion_method_defaults (line 61) | def test_fusion_method_defaults(self): method test_fusion_method_weighted_linear (line 74) | def test_fusion_method_weighted_linear(self): method test_fusion_method_rrf_custom (line 88) | def test_fusion_method_rrf_custom(self): class TestSearchInput (line 103) | class TestSearchInput: method test_required_fields (line 106) | def test_required_fields(self): method test_all_fields (line 115) | def test_all_fields(self): method test_defaults (line 134) | def test_defaults(self): method test_missing_query_raises (line 147) | def test_missing_query_raises(self): method test_missing_agent_mode_raises (line 151) | def test_missing_agent_mode_raises(self): method test_extra_fields_forbidden (line 155) | def test_extra_fields_forbidden(self): class TestSearchResult (line 165) | class TestSearchResult: method test_valid_result (line 168) | def test_valid_result(self): method test_missing_required_field_raises (line 186) | def test_missing_required_field_raises(self): class TestSearchOutput (line 194) | class TestSearchOutput: method test_empty_data (line 197) | def test_empty_data(self): method test_with_results (line 201) | def test_with_results(self): method test_extra_fields_forbidden (line 225) | def test_extra_fields_forbidden(self): method test_serialization (line 232) | def test_serialization(self): class TestQueryInput (line 248) | class TestQueryInput: method test_defaults (line 251) | def test_defaults(self): method test_with_values (line 260) | def test_with_values(self): class TestEmbedSearchConfig (line 274) | class TestEmbedSearchConfig: method test_required_fields (line 277) | def test_required_fields(self): method test_custom_index (line 288) | def test_custom_index(self): class TestStrInputConverter (line 298) | class TestStrInputConverter: method test_json_with_params (line 301) | def test_json_with_params(self): method test_json_with_prompts (line 307) | def test_json_with_prompts(self): method test_invalid_json_format (line 313) | def test_invalid_json_format(self): method test_json_without_params_or_prompts (line 318) | def test_json_without_params_or_prompts(self): class TestDecomposedQuery (line 325) | class TestDecomposedQuery: method test_defaults (line 328) | def test_defaults(self): method test_with_values (line 339) | def test_with_values(self): method test_with_negative_min_cosine_similarity (line 359) | def test_with_negative_min_cosine_similarity(self): class TestQueryDecompositionPrompt (line 368) | class TestQueryDecompositionPrompt: method test_prompt_has_placeholders (line 371) | def test_prompt_has_placeholders(self): method test_prompt_contains_instructions (line 376) | def test_prompt_contains_instructions(self): class TestDecomposeQuery (line 388) | class TestDecomposeQuery: method mock_llm (line 392) | def mock_llm(self): method test_simple_query (line 399) | async def test_simple_query(self, mock_llm): method test_query_with_time_range (line 413) | async def test_query_with_time_range(self, mock_llm): method test_query_with_video_sources (line 426) | async def test_query_with_video_sources(self, mock_llm): method test_complex_query_all_parameters (line 443) | async def test_complex_query_all_parameters(self, mock_llm): method test_query_with_json_code_block (line 470) | async def test_query_with_json_code_block(self, mock_llm): method test_query_with_plain_code_block (line 482) | async def test_query_with_plain_code_block(self, mock_llm): method test_fallback_on_invalid_json (line 494) | async def test_fallback_on_invalid_json(self, mock_llm): method test_fallback_on_llm_exception (line 505) | async def test_fallback_on_llm_exception(self, mock_llm): method test_with_video_file_names (line 515) | async def test_with_video_file_names(self, mock_llm): method test_empty_response_fields (line 532) | async def test_empty_response_fields(self, mock_llm): method test_custom_few_shot_examples (line 546) | async def test_custom_few_shot_examples(self, mock_llm): method test_query_with_only_attributes (line 563) | async def test_query_with_only_attributes(self, mock_llm): method test_partial_time_range (line 576) | async def test_partial_time_range(self, mock_llm): method test_query_with_top_k (line 589) | async def test_query_with_top_k(self, mock_llm): method test_query_with_min_cosine_similarity (line 599) | async def test_query_with_min_cosine_similarity(self, mock_llm): method test_query_with_all_filtering_params (line 609) | async def test_query_with_all_filtering_params(self, mock_llm): method test_invalid_top_k_ignored (line 622) | async def test_invalid_top_k_ignored(self, mock_llm): method test_invalid_min_cosine_similarity_ignored (line 632) | async def test_invalid_min_cosine_similarity_ignored(self, mock_llm): method test_negative_min_cosine_similarity (line 642) | async def test_negative_min_cosine_similarity(self, mock_llm): class TestQueryInputSourceType (line 652) | class TestQueryInputSourceType: method test_source_type_required (line 655) | def test_source_type_required(self): method test_source_type_rtsp (line 659) | def test_source_type_rtsp(self): method test_source_type_video_file (line 663) | def test_source_type_video_file(self): method test_source_type_in_serialization (line 667) | def test_source_type_in_serialization(self): FILE: agent/tests/unit_test/tools/test_search_converters.py function _make_embed_output (line 31) | def _make_embed_output(results): class TestSearchConverters (line 49) | class TestSearchConverters: method config (line 53) | def config(self): method mock_builder (line 59) | def mock_builder(self): method test_str_input_converter (line 63) | async def test_str_input_converter(self, config, mock_builder): method test_chat_request_converter (line 80) | async def test_chat_request_converter(self, config, mock_builder): method test_chat_request_converter_error (line 99) | async def test_chat_request_converter_error(self, config, mock_builder): method test_output_converter (line 117) | async def test_output_converter(self, config, mock_builder): method test_chat_response_converter (line 144) | async def test_chat_response_converter(self, config, mock_builder): method test_chat_response_chunk_converter (line 158) | async def test_chat_response_chunk_converter(self, config, mock_builder): method test_search_dict_output (line 172) | async def test_search_dict_output(self, config, mock_builder): method test_search_embed_error_with_meta (line 190) | async def test_search_embed_error_with_meta(self, config, mock_builder): method test_search_embed_error_with_int_arg (line 212) | async def test_search_embed_error_with_int_arg(self, config, mock_buil... method test_search_sensor_description_fallback (line 232) | async def test_search_sensor_description_fallback(self, config, mock_b... method test_search_invalid_end_time_iso (line 260) | async def test_search_invalid_end_time_iso(self, config, mock_builder): method test_search_no_base_timestamp (line 287) | async def test_search_no_base_timestamp(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_search_coverage.py class TestSearchInputConversion (line 28) | class TestSearchInputConversion: method test_json_str_conversion (line 31) | def test_json_str_conversion(self): method test_json_with_all_fields (line 37) | def test_json_with_all_fields(self): class TestSearchOutputSerialization (line 57) | class TestSearchOutputSerialization: method test_round_trip_serialization (line 60) | def test_round_trip_serialization(self): class TestEmbedSearchOutputConversion (line 78) | class TestEmbedSearchOutputConversion: method test_embed_search_result_item_to_search_result (line 81) | def test_embed_search_result_item_to_search_result(self): method test_embed_search_output_with_results (line 106) | def test_embed_search_output_with_results(self): method test_embed_search_output_empty (line 123) | def test_embed_search_output_empty(self): method test_search_result_with_none_similarity (line 128) | def test_search_result_with_none_similarity(self): method test_search_result_empty_video_name_skipped (line 136) | def test_search_result_empty_video_name_skipped(self): method test_end_time_iso_string_parsing (line 141) | def test_end_time_iso_string_parsing(self): method test_end_time_default_value (line 150) | def test_end_time_default_value(self): method test_start_time_invalid_iso_string (line 162) | def test_start_time_invalid_iso_string(self): method test_screenshot_url_fallback_to_empty (line 173) | def test_screenshot_url_fallback_to_empty(self): method test_parse_base_timestamp_invalid (line 178) | def test_parse_base_timestamp_invalid(self): method test_embed_search_output_serialization_round_trip (line 188) | def test_embed_search_output_serialization_round_trip(self): FILE: agent/tests/unit_test/tools/test_search_inner.py function _make_embed_output_with_results (line 31) | def _make_embed_output_with_results(results): class TestSearchInner (line 49) | class TestSearchInner: method config (line 53) | def config(self): method mock_builder (line 61) | def mock_builder(self): method _get_inner_fn (line 65) | async def _get_inner_fn(self, config, mock_builder, embed_output): method test_basic_search_no_agent_mode (line 78) | async def test_basic_search_no_agent_mode(self, config, mock_builder): method test_search_with_video_sources (line 102) | async def test_search_with_video_sources(self, config, mock_builder): method test_search_with_timestamps (line 127) | async def test_search_with_timestamps(self, config, mock_builder): method test_search_no_results (line 155) | async def test_search_no_results(self, config, mock_builder): method test_search_empty_video_name_skipped (line 165) | async def test_search_empty_video_name_skipped(self, config, mock_buil... method test_search_string_output (line 181) | async def test_search_string_output(self, config, mock_builder): method test_search_with_agent_mode (line 209) | async def test_search_with_agent_mode(self, config, mock_builder): method test_search_agent_mode_json_code_block (line 248) | async def test_search_agent_mode_json_code_block(self, config, mock_bu... method test_search_agent_mode_code_block_no_json (line 279) | async def test_search_agent_mode_code_block_no_json(self, config, mock... method test_search_agent_mode_invalid_json (line 310) | async def test_search_agent_mode_invalid_json(self, config, mock_build... method test_search_agent_mode_llm_error (line 341) | async def test_search_agent_mode_llm_error(self, config, mock_builder): method test_search_embed_value_error (line 371) | async def test_search_embed_value_error(self, config, mock_builder): method test_search_embed_generic_error (line 390) | async def test_search_embed_generic_error(self, config, mock_builder): method test_search_embed_error_with_status_code (line 409) | async def test_search_embed_error_with_status_code(self, config, mock_... method test_search_with_description_in_results (line 430) | async def test_search_with_description_in_results(self, config, mock_b... method test_search_with_float_timestamps_in_response (line 450) | async def test_search_with_float_timestamps_in_response(self, config, ... method test_search_agent_mode_with_min_cosine_similarity (line 470) | async def test_search_agent_mode_with_min_cosine_similarity(self, conf... method test_search_agent_mode_invalid_timestamps (line 509) | async def test_search_agent_mode_invalid_timestamps(self, config, mock... method test_search_agent_mode_json_block_no_closing (line 548) | async def test_search_agent_mode_json_block_no_closing(self, config, m... method test_search_converters (line 580) | async def test_search_converters(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_search_more_edge_cases.py function _make_embed_output (line 30) | def _make_embed_output(results): class TestSearchMoreEdgeCases (line 48) | class TestSearchMoreEdgeCases: method config (line 52) | def config(self): method mock_builder (line 58) | def mock_builder(self): method test_agent_mode_code_block_no_closing (line 62) | async def test_agent_mode_code_block_no_closing(self, config, mock_bui... method test_query_exception_skipped (line 93) | async def test_query_exception_skipped(self, config, mock_builder): method test_agent_mode_not_dict_extracted (line 121) | async def test_agent_mode_not_dict_extracted(self, config, mock_builder): method test_no_timestamp_no_base (line 143) | async def test_no_timestamp_no_base(self, config, mock_builder): method test_agent_mode_response_without_content_attr (line 168) | async def test_agent_mode_response_without_content_attr(self, config, ... FILE: agent/tests/unit_test/tools/test_template_report_gen.py class TestGetObjectStoreUrl (line 23) | class TestGetObjectStoreUrl: method test_s3_object_store (line 26) | def test_s3_object_store(self): method test_s3_object_store_with_trailing_slash (line 37) | def test_s3_object_store_with_trailing_slash(self): method test_in_memory_store (line 47) | def test_in_memory_store(self): method test_in_memory_store_base_url_no_trailing_slash (line 56) | def test_in_memory_store_base_url_no_trailing_slash(self): class TestPdfConversionAvailable (line 66) | class TestPdfConversionAvailable: method test_pdf_conversion_flag_is_bool (line 69) | def test_pdf_conversion_flag_is_bool(self): FILE: agent/tests/unit_test/tools/test_video_caption.py class TestVideoCaptionConfig (line 30) | class TestVideoCaptionConfig: method test_required_fields (line 33) | def test_required_fields(self): method test_custom_values (line 42) | def test_custom_values(self): class TestVideoCaptionInput (line 58) | class TestVideoCaptionInput: method test_valid_input (line 61) | def test_valid_input(self): method test_end_timestamp_clamped_to_duration (line 75) | def test_end_timestamp_clamped_to_duration(self): method test_end_timestamp_none_uses_duration (line 86) | def test_end_timestamp_none_uses_duration(self): method test_negative_duration_raises (line 96) | def test_negative_duration_raises(self): method test_zero_duration_raises (line 106) | def test_zero_duration_raises(self): method test_extra_fields_forbidden (line 116) | def test_extra_fields_forbidden(self): class TestErrorMessages (line 128) | class TestErrorMessages: method test_error_messages_defined (line 131) | def test_error_messages_defined(self): class TestCallVlmPartition (line 137) | class TestCallVlmPartition: method test_successful_caption (line 141) | async def test_successful_caption(self): method test_retry_on_error_message (line 156) | async def test_retry_on_error_message(self): method test_success_without_retry (line 182) | async def test_success_without_retry(self): class TestVLMPrompt (line 198) | class TestVLMPrompt: method test_prompt_contains_placeholders (line 201) | def test_prompt_contains_placeholders(self): method test_prompt_formatting (line 206) | def test_prompt_formatting(self): FILE: agent/tests/unit_test/tools/test_video_caption_coverage.py class TestVideoCaptionConfig (line 29) | class TestVideoCaptionConfig: method test_required_fields (line 32) | def test_required_fields(self): method test_custom_fields (line 39) | def test_custom_fields(self): class TestVideoCaptionInput (line 53) | class TestVideoCaptionInput: method test_valid_input (line 56) | def test_valid_input(self): method test_end_timestamp_capped_to_duration (line 69) | def test_end_timestamp_capped_to_duration(self): method test_end_timestamp_none_capped (line 80) | def test_end_timestamp_none_capped(self): method test_zero_duration_raises (line 91) | def test_zero_duration_raises(self): method test_negative_duration_raises (line 102) | def test_negative_duration_raises(self): method test_extra_fields_forbidden (line 113) | def test_extra_fields_forbidden(self): class TestErrorMessages (line 126) | class TestErrorMessages: method test_error_messages_exist (line 129) | def test_error_messages_exist(self): class TestCallVlmPartition (line 135) | class TestCallVlmPartition: method test_successful_caption (line 139) | async def test_successful_caption(self): method test_retry_on_error_message (line 158) | async def test_retry_on_error_message(self): method test_no_retry_for_long_error_message (line 188) | async def test_no_retry_for_long_error_message(self): FILE: agent/tests/unit_test/tools/test_video_caption_inner.py class TestVideoDetailedCaptionInner (line 29) | class TestVideoDetailedCaptionInner: method config (line 33) | def config(self): method mock_builder (line 37) | def mock_builder(self): method test_caption_success (line 41) | async def test_caption_success(self, config, mock_builder): method test_duration_too_long (line 61) | async def test_duration_too_long(self, config, mock_builder): method test_caption_tool_error (line 77) | async def test_caption_tool_error(self, config, mock_builder): class TestVideoSkimCaptionInner (line 97) | class TestVideoSkimCaptionInner: method config (line 101) | def config(self): method mock_builder (line 105) | def mock_builder(self): method test_skim_success (line 109) | async def test_skim_success(self, config, mock_builder): method test_skim_tool_error (line 129) | async def test_skim_tool_error(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_video_caption_vss_inner.py class TestVideoCaptionVSSInner (line 30) | class TestVideoCaptionVSSInner: method config_vss (line 34) | def config_vss(self): method mock_builder (line 42) | def mock_builder(self): method test_vss_caption_success (line 46) | async def test_vss_caption_success(self, config_vss, mock_builder): method test_vss_caption_with_cleanup (line 112) | async def test_vss_caption_with_cleanup(self, config_vss, mock_builder): class TestVideoCaptionNonVSSInner (line 167) | class TestVideoCaptionNonVSSInner: method config_no_vss (line 171) | def config_no_vss(self): method mock_builder (line 180) | def mock_builder(self): method test_non_vss_caption (line 184) | async def test_non_vss_caption(self, config_no_vss, mock_builder): FILE: agent/tests/unit_test/tools/test_video_detailed_caption.py class TestVideoDetailedCaptionConfig (line 24) | class TestVideoDetailedCaptionConfig: method test_defaults (line 27) | def test_defaults(self): method test_custom_values (line 32) | def test_custom_values(self): class TestVideoDetailedCaptionInput (line 41) | class TestVideoDetailedCaptionInput: method test_valid_input (line 44) | def test_valid_input(self): method test_end_timestamp_clamped_to_duration (line 58) | def test_end_timestamp_clamped_to_duration(self): method test_end_timestamp_none_uses_duration (line 69) | def test_end_timestamp_none_uses_duration(self): method test_negative_duration_raises (line 79) | def test_negative_duration_raises(self): method test_zero_duration_raises (line 89) | def test_zero_duration_raises(self): method test_extra_fields_forbidden (line 99) | def test_extra_fields_forbidden(self): method test_missing_filename_raises (line 110) | def test_missing_filename_raises(self): method test_missing_start_timestamp_raises (line 119) | def test_missing_start_timestamp_raises(self): method test_missing_user_prompt_raises (line 128) | def test_missing_user_prompt_raises(self): method test_missing_video_duration_raises (line 137) | def test_missing_video_duration_raises(self): FILE: agent/tests/unit_test/tools/test_video_detailed_caption_coverage.py class TestVideoDetailedCaptionConfig (line 24) | class TestVideoDetailedCaptionConfig: method test_defaults (line 27) | def test_defaults(self): method test_custom (line 32) | def test_custom(self): class TestVideoDetailedCaptionInput (line 41) | class TestVideoDetailedCaptionInput: method test_valid_input (line 44) | def test_valid_input(self): method test_end_timestamp_capped (line 56) | def test_end_timestamp_capped(self): method test_end_timestamp_none (line 66) | def test_end_timestamp_none(self): method test_zero_duration_raises (line 76) | def test_zero_duration_raises(self): method test_extra_fields_forbidden (line 86) | def test_extra_fields_forbidden(self): FILE: agent/tests/unit_test/tools/test_video_frame_timestamp.py class TestVideoFrameTimestampConfig (line 25) | class TestVideoFrameTimestampConfig: method test_defaults (line 28) | def test_defaults(self): method test_custom_values (line 33) | def test_custom_values(self): class TestVideoFrameTimestampInput (line 42) | class TestVideoFrameTimestampInput: method test_valid_input (line 45) | def test_valid_input(self): method test_zero_offset (line 53) | def test_zero_offset(self): method test_large_offset (line 60) | def test_large_offset(self): method test_missing_asset_file_path_raises (line 67) | def test_missing_asset_file_path_raises(self): method test_missing_frame_offset_raises (line 73) | def test_missing_frame_offset_raises(self): method test_negative_offset_allowed (line 79) | def test_negative_offset_allowed(self): class TestVideoFrameTimestampPrompt (line 88) | class TestVideoFrameTimestampPrompt: method test_prompt_is_string (line 91) | def test_prompt_is_string(self): method test_prompt_not_empty (line 94) | def test_prompt_not_empty(self): FILE: agent/tests/unit_test/tools/test_video_frame_timestamp_coverage.py class TestVideoFrameTimestampConfig (line 24) | class TestVideoFrameTimestampConfig: method test_defaults (line 27) | def test_defaults(self): method test_custom (line 32) | def test_custom(self): class TestVideoFrameTimestampInput (line 40) | class TestVideoFrameTimestampInput: method test_valid_input (line 43) | def test_valid_input(self): method test_missing_path_raises (line 51) | def test_missing_path_raises(self): method test_missing_offset_raises (line 55) | def test_missing_offset_raises(self): FILE: agent/tests/unit_test/tools/test_video_report_gen.py class TestTimestampMatch (line 33) | class TestTimestampMatch: method test_creation (line 36) | def test_creation(self): method test_named_access (line 41) | def test_named_access(self): method test_tuple_unpacking (line 46) | def test_tuple_unpacking(self): class TestParseTimestamps (line 53) | class TestParseTimestamps: method test_parse_simple_timestamp (line 56) | def test_parse_simple_timestamp(self): method test_parse_multiple_timestamps (line 62) | def test_parse_multiple_timestamps(self): method test_parse_with_spaces (line 69) | def test_parse_with_spaces(self): method test_parse_decimal_timestamps (line 75) | def test_parse_decimal_timestamps(self): method test_parse_no_timestamps (line 81) | def test_parse_no_timestamps(self): method test_parse_preserves_position (line 86) | def test_parse_preserves_position(self): method test_parse_large_timestamps (line 92) | def test_parse_large_timestamps(self): class TestNormalizeChunkTimestamps (line 99) | class TestNormalizeChunkTimestamps: method test_timestamps_match_chunk_duration (line 102) | def test_timestamps_match_chunk_duration(self): method test_normalization_ratio_scaling_down (line 110) | def test_normalization_ratio_scaling_down(self): method test_normalization_ratio_scaling_up (line 119) | def test_normalization_ratio_scaling_up(self): method test_multiple_timestamps_normalized (line 128) | def test_multiple_timestamps_normalized(self): method test_no_timestamps_returns_original (line 138) | def test_no_timestamps_returns_original(self): method test_ratio_close_to_one_no_normalization (line 144) | def test_ratio_close_to_one_no_normalization(self): method test_chunk_offset_applied_with_matching_duration (line 152) | def test_chunk_offset_applied_with_matching_duration(self): method test_small_timestamps_scaled_up_with_offset (line 160) | def test_small_timestamps_scaled_up_with_offset(self): class TestDivideVideoIntoChunks (line 169) | class TestDivideVideoIntoChunks: method test_single_chunk (line 172) | def test_single_chunk(self): method test_exact_division (line 178) | def test_exact_division(self): method test_with_remainder (line 185) | def test_with_remainder(self): method test_zero_duration (line 193) | def test_zero_duration(self): class TestVideoReportGenInput (line 199) | class TestVideoReportGenInput: method test_required_fields (line 202) | def test_required_fields(self): method test_optional_vlm_reasoning (line 211) | def test_optional_vlm_reasoning(self): method test_missing_required_fails (line 220) | def test_missing_required_fails(self): class TestVideoReportGenOutput (line 229) | class TestVideoReportGenOutput: method test_output_creation (line 232) | def test_output_creation(self): method test_output_optional_fields (line 251) | def test_output_optional_fields(self): method test_output_serialization (line 266) | def test_output_serialization(self): class TestTimestampFormatDetection (line 287) | class TestTimestampFormatDetection: method test_non_stream_model_has_float_timestamp (line 296) | def test_non_stream_model_has_float_timestamp(self): method test_stream_model_has_str_timestamp (line 304) | def test_stream_model_has_str_timestamp(self): method test_detection_logic_identifies_float_schema (line 309) | def test_detection_logic_identifies_float_schema(self): method test_detection_logic_identifies_str_schema (line 317) | def test_detection_logic_identifies_str_schema(self): method test_non_stream_model_accepts_float_offsets (line 325) | def test_non_stream_model_accepts_float_offsets(self): method test_non_stream_model_rejects_iso_timestamps (line 337) | def test_non_stream_model_rejects_iso_timestamps(self): method test_stream_model_accepts_iso_timestamps (line 352) | def test_stream_model_accepts_iso_timestamps(self): class TestResourcesSectionFormatting (line 365) | class TestResourcesSectionFormatting: method test_video_playback_url_on_separate_paragraph (line 372) | def test_video_playback_url_on_separate_paragraph(self): method test_pdf_css_has_word_break_for_links (line 399) | def test_pdf_css_has_word_break_for_links(self): FILE: agent/tests/unit_test/tools/test_video_skim_caption.py class TestVideoSkimCaptionConfig (line 24) | class TestVideoSkimCaptionConfig: method test_defaults (line 27) | def test_defaults(self): method test_custom_values (line 31) | def test_custom_values(self): class TestVideoSkimCaptionInput (line 36) | class TestVideoSkimCaptionInput: method test_valid_input (line 39) | def test_valid_input(self): method test_end_timestamp_clamped_to_duration (line 53) | def test_end_timestamp_clamped_to_duration(self): method test_end_timestamp_none_uses_duration (line 64) | def test_end_timestamp_none_uses_duration(self): method test_negative_duration_raises (line 74) | def test_negative_duration_raises(self): method test_zero_duration_raises (line 84) | def test_zero_duration_raises(self): method test_extra_fields_forbidden (line 94) | def test_extra_fields_forbidden(self): method test_long_video_input (line 105) | def test_long_video_input(self): FILE: agent/tests/unit_test/tools/test_video_skim_caption_coverage.py class TestVideoSkimCaptionConfig (line 24) | class TestVideoSkimCaptionConfig: method test_defaults (line 27) | def test_defaults(self): method test_custom_fps (line 31) | def test_custom_fps(self): class TestVideoSkimCaptionInput (line 36) | class TestVideoSkimCaptionInput: method test_valid_input (line 39) | def test_valid_input(self): method test_end_timestamp_capped (line 51) | def test_end_timestamp_capped(self): method test_end_timestamp_none (line 61) | def test_end_timestamp_none(self): method test_zero_duration_raises (line 71) | def test_zero_duration_raises(self): method test_extra_fields_forbidden (line 81) | def test_extra_fields_forbidden(self): FILE: agent/tests/unit_test/tools/test_video_understanding.py class TestParseThinkingFromContent (line 20) | class TestParseThinkingFromContent: method test_empty_content (line 23) | def test_empty_content(self): method test_none_content (line 29) | def test_none_content(self): method test_no_tags (line 35) | def test_no_tags(self): method test_think_and_answer_tags (line 42) | def test_think_and_answer_tags(self): method test_only_think_tags (line 49) | def test_only_think_tags(self): method test_think_tags_with_whitespace (line 56) | def test_think_tags_with_whitespace(self): method test_malformed_tags_start_after_end (line 63) | def test_malformed_tags_start_after_end(self): method test_nested_content_in_think (line 70) | def test_nested_content_in_think(self): method test_empty_think_tags (line 77) | def test_empty_think_tags(self): method test_content_before_think (line 84) | def test_content_before_think(self): method test_empty_answer_after_think (line 91) | def test_empty_answer_after_think(self): FILE: agent/tests/unit_test/tools/test_video_upload_url.py class TestVideoUploadURLConfig (line 25) | class TestVideoUploadURLConfig: method test_config_creation (line 28) | def test_config_creation(self): method test_config_missing_vst_base_url (line 36) | def test_config_missing_vst_base_url(self): method test_config_missing_agent_base_url (line 42) | def test_config_missing_agent_base_url(self): class TestVideoUploadURLInput (line 49) | class TestVideoUploadURLInput: method test_input_basic (line 52) | def test_input_basic(self): method test_input_with_embedding (line 57) | def test_input_with_embedding(self): method test_input_empty_filename_fails (line 61) | def test_input_empty_filename_fails(self): method test_input_with_extension (line 65) | def test_input_with_extension(self): method test_input_without_extension (line 69) | def test_input_without_extension(self): class TestVideoUploadURLOutput (line 74) | class TestVideoUploadURLOutput: method test_output_creation (line 77) | def test_output_creation(self): method test_output_embedding_url (line 83) | def test_output_embedding_url(self): method test_output_serialization (line 87) | def test_output_serialization(self): FILE: agent/tests/unit_test/tools/test_vss_summarize.py class TestVSSSummarizeConfig (line 29) | class TestVSSSummarizeConfig: method test_required_fields (line 32) | def test_required_fields(self): method test_custom_values (line 41) | def test_custom_values(self): method test_missing_backend_url_raises (line 55) | def test_missing_backend_url_raises(self): class TestVSSSummarizeInput (line 60) | class TestVSSSummarizeInput: method test_valid_input_with_uuid (line 63) | def test_valid_input_with_uuid(self): method test_valid_input_with_media_info (line 77) | def test_valid_input_with_media_info(self): method test_media_info_end_clamped_to_duration (line 89) | def test_media_info_end_clamped_to_duration(self): method test_step_size_bounds (line 101) | def test_step_size_bounds(self): method test_step_size_too_small_raises (line 112) | def test_step_size_too_small_raises(self): method test_step_size_too_large_raises (line 122) | def test_step_size_too_large_raises(self): method test_default_prompts (line 132) | def test_default_prompts(self): method test_custom_prompts (line 142) | def test_custom_prompts(self): method test_list_of_uuids (line 154) | def test_list_of_uuids(self): method test_prompt_max_length (line 163) | def test_prompt_max_length(self): method test_prompt_exceeds_max_length_raises (line 174) | def test_prompt_exceeds_max_length_raises(self): class TestVSSSummarizeOutput (line 184) | class TestVSSSummarizeOutput: method test_valid_output (line 187) | def test_valid_output(self): method test_str_representation (line 197) | def test_str_representation(self): method test_step_size_none (line 212) | def test_step_size_none(self): method test_empty_summary (line 221) | def test_empty_summary(self): FILE: agent/tests/unit_test/tools/test_vss_summarize_coverage.py class TestVSSSummarizeConfig (line 28) | class TestVSSSummarizeConfig: method test_required_fields (line 31) | def test_required_fields(self): method test_custom_config (line 40) | def test_custom_config(self): method test_extra_fields_forbidden (line 52) | def test_extra_fields_forbidden(self): class TestVSSSummarizeInput (line 60) | class TestVSSSummarizeInput: method test_basic_input (line 63) | def test_basic_input(self): method test_with_media_info (line 77) | def test_with_media_info(self): method test_media_info_end_capped_to_duration (line 89) | def test_media_info_end_capped_to_duration(self): method test_step_size (line 100) | def test_step_size(self): method test_custom_prompts (line 110) | def test_custom_prompts(self): method test_list_of_ids (line 122) | def test_list_of_ids(self): method test_extra_fields_forbidden (line 131) | def test_extra_fields_forbidden(self): class TestVSSSummarizeOutput (line 141) | class TestVSSSummarizeOutput: method test_basic_output (line 144) | def test_basic_output(self): method test_str_representation (line 153) | def test_str_representation(self): method test_str_representation_no_step_size (line 164) | def test_str_representation_no_step_size(self): FILE: agent/tests/unit_test/tools/test_vss_summarize_inner.py class TestVSSSummarizeInner (line 30) | class TestVSSSummarizeInner: method config (line 34) | def config(self): method mock_builder (line 42) | def mock_builder(self): method test_summarize_success (line 46) | async def test_summarize_success(self, config, mock_builder): method test_summarize_with_step_size (line 83) | async def test_summarize_with_step_size(self, config, mock_builder): method test_summarize_api_error (line 116) | async def test_summarize_api_error(self, config, mock_builder): method test_summarize_empty_choices (line 143) | async def test_summarize_empty_choices(self, config, mock_builder): method test_summarize_connection_error (line 170) | async def test_summarize_connection_error(self, config, mock_builder): method test_init_model_error (line 193) | async def test_init_model_error(self, config, mock_builder): FILE: agent/tests/unit_test/tools/test_vst_tools.py class TestVSTDownloadConfig (line 24) | class TestVSTDownloadConfig: method test_with_required_field (line 27) | def test_with_required_field(self): method test_custom_values (line 33) | def test_custom_values(self): class TestVSTDownloadInput (line 43) | class TestVSTDownloadInput: method test_basic_input (line 46) | def test_basic_input(self): method test_with_custom_container (line 61) | def test_with_custom_container(self): class TestVSTDownloadOutput (line 73) | class TestVSTDownloadOutput: method test_output_creation (line 76) | def test_output_creation(self): method test_output_no_cleanup (line 87) | def test_output_no_cleanup(self): class TestVSTFilesConfig (line 97) | class TestVSTFilesConfig: method test_with_required_field (line 100) | def test_with_required_field(self): method test_custom_values (line 109) | def test_custom_values(self): class TestVSTFilesInput (line 123) | class TestVSTFilesInput: method test_basic_input (line 126) | def test_basic_input(self): FILE: agent/tests/unit_test/tools/vst/test_bounding_box.py class TestBuildOverlayConfig (line 38) | class TestBuildOverlayConfig: method test_overlay_disabled_returns_none (line 41) | def test_overlay_disabled_returns_none(self): method test_overlay_disabled_with_object_ids_returns_none (line 46) | def test_overlay_disabled_with_object_ids_returns_none(self): method test_overlay_enabled_no_object_ids_shows_all (line 51) | def test_overlay_enabled_no_object_ids_shows_all(self): method test_overlay_enabled_with_empty_object_ids (line 63) | def test_overlay_enabled_with_empty_object_ids(self): method test_overlay_enabled_with_object_ids (line 71) | def test_overlay_enabled_with_object_ids(self): method test_overlay_result_is_url_encoded (line 79) | def test_overlay_result_is_url_encoded(self): method test_overlay_with_single_object_id (line 90) | def test_overlay_with_single_object_id(self): class TestSnapshotBoundingBox (line 98) | class TestSnapshotBoundingBox: method config_with_overlay (line 102) | def config_with_overlay(self): method config_without_overlay (line 111) | def config_without_overlay(self): method mock_builder (line 119) | def mock_builder(self): method test_get_snapshot_url_with_overlay (line 123) | async def test_get_snapshot_url_with_overlay(self): method test_get_snapshot_url_without_overlay (line 164) | async def test_get_snapshot_url_without_overlay(self): method test_snapshot_tool_passes_overlay_config (line 201) | async def test_snapshot_tool_passes_overlay_config(self, config_with_o... class TestVideoClipBoundingBox (line 225) | class TestVideoClipBoundingBox: method test_get_video_url_with_overlay_and_object_ids (line 229) | async def test_get_video_url_with_overlay_and_object_ids(self): method test_get_video_url_with_overlay_no_object_ids (line 271) | async def test_get_video_url_with_overlay_no_object_ids(self): method test_get_video_url_without_overlay (line 310) | async def test_get_video_url_without_overlay(self): FILE: agent/tests/unit_test/tools/vst/test_duration_coverage.py class TestVSTDurationConfig (line 25) | class TestVSTDurationConfig: method test_required_fields (line 28) | def test_required_fields(self): method test_missing_url_raises (line 32) | def test_missing_url_raises(self): class TestVSTDurationInput (line 37) | class TestVSTDurationInput: method test_valid (line 40) | def test_valid(self): method test_empty_sensor_id_raises (line 44) | def test_empty_sensor_id_raises(self): method test_missing_sensor_id_raises (line 48) | def test_missing_sensor_id_raises(self): class TestVSTDurationOutput (line 53) | class TestVSTDurationOutput: method test_valid (line 56) | def test_valid(self): method test_missing_duration_raises (line 60) | def test_missing_duration_raises(self): FILE: agent/tests/unit_test/tools/vst/test_sensor_list.py class TestVSTSensorListConfig (line 25) | class TestVSTSensorListConfig: method test_required_fields (line 28) | def test_required_fields(self): method test_missing_required_fields (line 34) | def test_missing_required_fields(self): class TestVSTSensorListInput (line 39) | class TestVSTSensorListInput: method test_empty_input (line 42) | def test_empty_input(self): class TestVSTSensorListOutput (line 47) | class TestVSTSensorListOutput: method test_empty_list (line 50) | def test_empty_list(self): method test_single_sensor (line 54) | def test_single_sensor(self): method test_multiple_sensors (line 59) | def test_multiple_sensors(self): method test_serialization (line 65) | def test_serialization(self): method test_various_sensor_names (line 71) | def test_various_sensor_names(self): FILE: agent/tests/unit_test/tools/vst/test_snapshot.py class TestVSTSnapshotConfig (line 26) | class TestVSTSnapshotConfig: method test_valid_config (line 29) | def test_valid_config(self): method test_config_with_overlay (line 37) | def test_config_with_overlay(self): method test_config_with_time_format_iso (line 46) | def test_config_with_time_format_iso(self): method test_config_with_time_format_offset (line 55) | def test_config_with_time_format_offset(self): method test_config_with_host_ip_placeholder (line 64) | def test_config_with_host_ip_placeholder(self): method test_config_with_trailing_slash (line 72) | def test_config_with_trailing_slash(self): method test_missing_vst_urls_raises (line 80) | def test_missing_vst_urls_raises(self): method test_config_description (line 85) | def test_config_description(self): class TestVSTSnapshotOffsetInput (line 91) | class TestVSTSnapshotOffsetInput: method test_valid_input_with_seconds (line 94) | def test_valid_input_with_seconds(self): method test_input_with_zero_start_time (line 100) | def test_input_with_zero_start_time(self): method test_input_with_large_start_time (line 105) | def test_input_with_large_start_time(self): method test_missing_sensor_id_raises (line 110) | def test_missing_sensor_id_raises(self): method test_empty_sensor_id_raises (line 115) | def test_empty_sensor_id_raises(self): method test_missing_start_time_raises (line 120) | def test_missing_start_time_raises(self): method test_input_descriptions (line 125) | def test_input_descriptions(self): class TestVSTSnapshotISOInput (line 133) | class TestVSTSnapshotISOInput: method test_valid_input_with_iso_timestamp (line 136) | def test_valid_input_with_iso_timestamp(self): method test_missing_sensor_id_raises (line 142) | def test_missing_sensor_id_raises(self): method test_empty_sensor_id_raises (line 147) | def test_empty_sensor_id_raises(self): method test_missing_start_time_raises (line 152) | def test_missing_start_time_raises(self): method test_empty_start_time_raises (line 157) | def test_empty_start_time_raises(self): method test_input_descriptions (line 162) | def test_input_descriptions(self): class TestVSTSnapshotOutput (line 170) | class TestVSTSnapshotOutput: method test_valid_output (line 173) | def test_valid_output(self): method test_output_with_real_url_format (line 182) | def test_output_with_real_url_format(self): method test_missing_image_url_raises (line 190) | def test_missing_image_url_raises(self): method test_missing_stream_id_raises (line 195) | def test_missing_stream_id_raises(self): method test_output_json_serializable (line 200) | def test_output_json_serializable(self): method test_output_description (line 210) | def test_output_description(self): FILE: agent/tests/unit_test/tools/vst/test_snapshot_coverage.py class TestVSTSnapshotConfig (line 26) | class TestVSTSnapshotConfig: method test_required_fields (line 29) | def test_required_fields(self): method test_missing_fields_raises (line 39) | def test_missing_fields_raises(self): method test_overlay_config_enabled (line 43) | def test_overlay_config_enabled(self): method test_time_format_iso (line 51) | def test_time_format_iso(self): class TestVSTSnapshotOffsetInput (line 60) | class TestVSTSnapshotOffsetInput: method test_valid_input_seconds (line 63) | def test_valid_input_seconds(self): method test_empty_sensor_id_raises (line 71) | def test_empty_sensor_id_raises(self): method test_zero_start_time (line 75) | def test_zero_start_time(self): method test_missing_fields_raises (line 79) | def test_missing_fields_raises(self): class TestVSTSnapshotISOInput (line 84) | class TestVSTSnapshotISOInput: method test_valid_input_iso_timestamp (line 87) | def test_valid_input_iso_timestamp(self): method test_empty_sensor_id_raises (line 95) | def test_empty_sensor_id_raises(self): method test_missing_start_time_raises (line 99) | def test_missing_start_time_raises(self): method test_empty_start_time_raises (line 103) | def test_empty_start_time_raises(self): class TestVSTSnapshotOutput (line 108) | class TestVSTSnapshotOutput: method test_valid (line 111) | def test_valid(self): method test_missing_url_raises (line 116) | def test_missing_url_raises(self): method test_missing_stream_id_raises (line 120) | def test_missing_stream_id_raises(self): method test_serialization (line 124) | def test_serialization(self): FILE: agent/tests/unit_test/tools/vst/test_snapshot_inner.py class TestVSTSnapshotInner (line 31) | class TestVSTSnapshotInner: method config (line 35) | def config(self): method config_iso (line 42) | def config_iso(self): method config_with_overlay (line 50) | def config_with_overlay(self): method mock_builder (line 58) | def mock_builder(self): method test_snapshot_success_with_seconds (line 62) | async def test_snapshot_success_with_seconds(self, config, mock_builder): method test_snapshot_success_with_iso_timestamp (line 106) | async def test_snapshot_success_with_iso_timestamp(self, config_iso, m... method test_snapshot_uses_correct_input_schema_offset (line 144) | async def test_snapshot_uses_correct_input_schema_offset(self, config,... method test_snapshot_uses_correct_input_schema_iso (line 151) | async def test_snapshot_uses_correct_input_schema_iso(self, config_iso... method test_snapshot_out_of_range (line 158) | async def test_snapshot_out_of_range(self, config, mock_builder): FILE: agent/tests/unit_test/tools/vst/test_stream_list.py class TestVSTVideoListConfig (line 24) | class TestVSTVideoListConfig: method test_valid_config (line 27) | def test_valid_config(self): method test_config_with_trailing_slash (line 32) | def test_config_with_trailing_slash(self): method test_config_with_vst_suffix (line 37) | def test_config_with_vst_suffix(self): method test_missing_vst_internal_url_raises (line 42) | def test_missing_vst_internal_url_raises(self): method test_config_inherits_function_base_config (line 47) | def test_config_inherits_function_base_config(self): class TestVSTStreamListInput (line 54) | class TestVSTStreamListInput: method test_empty_input (line 57) | def test_empty_input(self): method test_input_is_pydantic_model (line 62) | def test_input_is_pydantic_model(self): method test_input_json_serializable (line 69) | def test_input_json_serializable(self): FILE: agent/tests/unit_test/tools/vst/test_timeline.py class TestVSTTimelineConfig (line 25) | class TestVSTTimelineConfig: method test_valid_config (line 28) | def test_valid_config(self): method test_config_with_trailing_slash (line 33) | def test_config_with_trailing_slash(self): method test_missing_vst_internal_url_raises (line 38) | def test_missing_vst_internal_url_raises(self): method test_config_description (line 43) | def test_config_description(self): class TestVSTTimelineInput (line 50) | class TestVSTTimelineInput: method test_valid_sensor_id (line 53) | def test_valid_sensor_id(self): method test_sensor_id_with_uuid (line 58) | def test_sensor_id_with_uuid(self): method test_missing_sensor_id_raises (line 63) | def test_missing_sensor_id_raises(self): method test_input_description (line 68) | def test_input_description(self): class TestVSTTimelineOutput (line 74) | class TestVSTTimelineOutput: method test_valid_output (line 77) | def test_valid_output(self): method test_output_with_real_data_timestamps (line 86) | def test_output_with_real_data_timestamps(self): method test_missing_start_timestamp_raises (line 95) | def test_missing_start_timestamp_raises(self): method test_missing_end_timestamp_raises (line 100) | def test_missing_end_timestamp_raises(self): method test_output_json_serializable (line 105) | def test_output_json_serializable(self): method test_output_descriptions (line 115) | def test_output_descriptions(self): FILE: agent/tests/unit_test/tools/vst/test_utils.py class TestVSTError (line 83) | class TestVSTError: method test_vst_error_is_exception (line 86) | def test_vst_error_is_exception(self): method test_vst_error_message (line 90) | def test_vst_error_message(self): method test_vst_error_raise_and_catch (line 94) | def test_vst_error_raise_and_catch(self): function create_mock_response (line 99) | def create_mock_response(status: int, text_data: str): function create_mock_session (line 109) | def create_mock_session(mock_response): function no_retry_generator (line 118) | async def no_retry_generator(*_args, **_kwargs): class TestGetNameToStreamIdMap (line 131) | class TestGetNameToStreamIdMap: method test_successful_mapping (line 135) | async def test_successful_mapping(self): method test_handles_trailing_slash_in_url (line 152) | async def test_handles_trailing_slash_in_url(self): method test_non_200_status_raises_error (line 166) | async def test_non_200_status_raises_error(self): method test_empty_response (line 179) | async def test_empty_response(self): class TestGetTimeline (line 193) | class TestGetTimeline: method test_successful_timeline_retrieval (line 197) | async def test_successful_timeline_retrieval(self): method test_timeline_with_vst_suffix_in_url (line 212) | async def test_timeline_with_vst_suffix_in_url(self): method test_timeline_not_found_and_stream_id_not_found_raises_vst_error (line 229) | async def test_timeline_not_found_and_stream_id_not_found_raises_vst_e... method test_timeline_with_sensor_name_converts_to_stream_id (line 262) | async def test_timeline_with_sensor_name_converts_to_stream_id(self): method test_timeline_non_200_status_raises_error (line 300) | async def test_timeline_non_200_status_raises_error(self): method test_timeline_uses_env_default (line 313) | async def test_timeline_uses_env_default(self): class TestValidateVideoUrl (line 328) | class TestValidateVideoUrl: method test_successful_head_validation (line 332) | async def test_successful_head_validation(self): method test_head_fails_get_succeeds (line 350) | async def test_head_fails_get_succeeds(self): method test_both_head_and_get_fail_raises_error (line 374) | async def test_both_head_and_get_fail_raises_error(self): method test_warns_on_non_video_content_type (line 399) | async def test_warns_on_non_video_content_type(self): method test_warns_on_zero_content_length (line 417) | async def test_warns_on_zero_content_length(self): method test_custom_timeout (line 435) | async def test_custom_timeout(self): FILE: agent/tests/unit_test/tools/vst/test_video_clip.py class TestVSTVideoClipConfig (line 26) | class TestVSTVideoClipConfig: method test_valid_config (line 29) | def test_valid_config(self): method test_config_with_overlay (line 37) | def test_config_with_overlay(self): method test_config_with_time_format_iso (line 46) | def test_config_with_time_format_iso(self): method test_config_with_time_format_offset (line 55) | def test_config_with_time_format_offset(self): method test_config_with_host_ip_placeholder (line 64) | def test_config_with_host_ip_placeholder(self): method test_config_with_trailing_slash (line 72) | def test_config_with_trailing_slash(self): method test_missing_vst_urls_raises (line 80) | def test_missing_vst_urls_raises(self): method test_config_description (line 85) | def test_config_description(self): class TestVSTVideoClipOffsetInput (line 91) | class TestVSTVideoClipOffsetInput: method test_valid_input_with_times (line 94) | def test_valid_input_with_times(self): method test_valid_input_without_times (line 101) | def test_valid_input_without_times(self): method test_valid_input_with_object_ids (line 108) | def test_valid_input_with_object_ids(self): method test_input_object_ids_default_none (line 118) | def test_input_object_ids_default_none(self): method test_input_with_uuid_sensor_id (line 123) | def test_input_with_uuid_sensor_id(self): method test_input_with_only_start_time (line 128) | def test_input_with_only_start_time(self): method test_input_with_only_end_time (line 134) | def test_input_with_only_end_time(self): method test_missing_sensor_id_raises (line 140) | def test_missing_sensor_id_raises(self): method test_empty_sensor_id_raises (line 145) | def test_empty_sensor_id_raises(self): method test_negative_start_time_raises (line 150) | def test_negative_start_time_raises(self): method test_negative_end_time_raises (line 155) | def test_negative_end_time_raises(self): method test_start_time_equals_end_time_raises (line 160) | def test_start_time_equals_end_time_raises(self): method test_start_time_greater_than_end_time_raises (line 165) | def test_start_time_greater_than_end_time_raises(self): method test_validator_with_integer_times (line 170) | def test_validator_with_integer_times(self): method test_input_descriptions (line 176) | def test_input_descriptions(self): class TestVSTVideoClipISOInput (line 189) | class TestVSTVideoClipISOInput: method test_valid_input_with_iso_timestamps (line 192) | def test_valid_input_with_iso_timestamps(self): method test_valid_input_without_times (line 203) | def test_valid_input_without_times(self): method test_valid_input_with_object_ids (line 209) | def test_valid_input_with_object_ids(self): method test_missing_sensor_id_raises (line 219) | def test_missing_sensor_id_raises(self): method test_empty_sensor_id_raises (line 224) | def test_empty_sensor_id_raises(self): method test_input_descriptions (line 229) | def test_input_descriptions(self): class TestVSTVideoClipOutput (line 242) | class TestVSTVideoClipOutput: method test_valid_output (line 245) | def test_valid_output(self): method test_output_with_real_url_format (line 254) | def test_output_with_real_url_format(self): method test_missing_video_url_raises (line 263) | def test_missing_video_url_raises(self): method test_missing_stream_id_raises (line 268) | def test_missing_stream_id_raises(self): method test_output_json_serializable (line 273) | def test_output_json_serializable(self): method test_output_descriptions (line 283) | def test_output_descriptions(self): class TestVSTVideoClipOffsetInputEdgeCases (line 293) | class TestVSTVideoClipOffsetInputEdgeCases: method test_very_small_time_difference (line 296) | def test_very_small_time_difference(self): method test_large_time_values (line 303) | def test_large_time_values(self): method test_float_precision (line 308) | def test_float_precision(self): FILE: agent/tests/unit_test/tools/vst/test_video_clip_coverage.py class TestVSTVideoClipConfig (line 26) | class TestVSTVideoClipConfig: method test_required_fields (line 29) | def test_required_fields(self): method test_missing_fields_raises (line 39) | def test_missing_fields_raises(self): method test_overlay_config_enabled (line 43) | def test_overlay_config_enabled(self): method test_time_format_iso (line 51) | def test_time_format_iso(self): class TestVSTVideoClipOffsetInput (line 60) | class TestVSTVideoClipOffsetInput: method test_sensor_id_only (line 63) | def test_sensor_id_only(self): method test_with_times (line 69) | def test_with_times(self): method test_with_object_ids (line 78) | def test_with_object_ids(self): method test_empty_sensor_id_raises (line 87) | def test_empty_sensor_id_raises(self): method test_negative_start_time_raises (line 91) | def test_negative_start_time_raises(self): method test_negative_end_time_raises (line 95) | def test_negative_end_time_raises(self): method test_start_after_end_raises (line 99) | def test_start_after_end_raises(self): method test_start_equals_end_raises (line 103) | def test_start_equals_end_raises(self): method test_float_conversion (line 107) | def test_float_conversion(self): class TestVSTVideoClipISOInput (line 113) | class TestVSTVideoClipISOInput: method test_with_iso_timestamps (line 116) | def test_with_iso_timestamps(self): method test_sensor_id_only (line 125) | def test_sensor_id_only(self): method test_empty_sensor_id_raises (line 130) | def test_empty_sensor_id_raises(self): class TestVSTVideoClipOutput (line 135) | class TestVSTVideoClipOutput: method test_valid (line 138) | def test_valid(self): method test_missing_fields_raises (line 146) | def test_missing_fields_raises(self): FILE: agent/tests/unit_test/tools/vst/test_video_clip_inner.py class TestGetVideoUrl (line 32) | class TestGetVideoUrl: method test_get_video_url_full_video (line 36) | async def test_get_video_url_full_video(self): method test_get_video_url_with_time_range (line 66) | async def test_get_video_url_with_time_range(self): method test_get_video_url_with_iso_timestamps (line 98) | async def test_get_video_url_with_iso_timestamps(self): method test_get_video_url_invalid_range (line 130) | async def test_get_video_url_invalid_range(self): class TestVSTVideoClipInner (line 141) | class TestVSTVideoClipInner: method config (line 145) | def config(self): method config_iso (line 152) | def config_iso(self): method config_with_overlay (line 160) | def config_with_overlay(self): method config_iso_with_overlay (line 168) | def config_iso_with_overlay(self): method mock_builder (line 177) | def mock_builder(self): method test_video_clip_inner (line 181) | async def test_video_clip_inner(self, config, mock_builder): method test_video_clip_inner_with_iso_timestamps (line 199) | async def test_video_clip_inner_with_iso_timestamps(self, config_iso, ... method test_video_clip_uses_correct_input_schema_offset (line 222) | async def test_video_clip_uses_correct_input_schema_offset(self, confi... method test_video_clip_uses_correct_input_schema_iso (line 229) | async def test_video_clip_uses_correct_input_schema_iso(self, config_i... method test_video_clip_inner_with_object_ids (line 236) | async def test_video_clip_inner_with_object_ids(self, config_iso_with_... FILE: agent/tests/unit_test/tools/vst/test_video_list_coverage.py class TestVSTVideoListConfig (line 25) | class TestVSTVideoListConfig: method test_required_fields (line 28) | def test_required_fields(self): method test_missing_url_raises (line 32) | def test_missing_url_raises(self): class TestVSTVideoListInput (line 37) | class TestVSTVideoListInput: method test_empty_input (line 40) | def test_empty_input(self): class TestVSTVideoListOutput (line 45) | class TestVSTVideoListOutput: method test_valid (line 48) | def test_valid(self): method test_empty_list (line 58) | def test_empty_list(self): method test_missing_field_raises (line 62) | def test_missing_field_raises(self): FILE: agent/tests/unit_test/utils/test_asyncmixin.py class TestAsyncMixin (line 22) | class TestAsyncMixin: method test_async_initialization (line 26) | async def test_async_initialization(self): method test_stored_args (line 38) | async def test_stored_args(self): method test_async_initialized_flag (line 53) | async def test_async_initialized_flag(self): method test_await_returns_self (line 67) | async def test_await_returns_self(self): method test_async_init_with_no_params (line 79) | async def test_async_init_with_no_params(self): method test_double_await_raises (line 90) | async def test_double_await_raises(self): method test_async_init_exception (line 104) | async def test_async_init_exception(self): method test_async_init_with_async_operations (line 115) | async def test_async_init_with_async_operations(self): FILE: agent/tests/unit_test/utils/test_file_mapping.py class TestStorageType (line 29) | class TestStorageType: method test_storage_type_values (line 32) | def test_storage_type_values(self): class TestVideoFileInfo (line 39) | class TestVideoFileInfo: method test_create_video_file_info (line 42) | def test_create_video_file_info(self): method test_video_file_info_defaults (line 60) | def test_video_file_info_defaults(self): class TestFileMapping (line 73) | class TestFileMapping: method test_init (line 76) | def test_init(self): method test_add_vst_files (line 83) | def test_add_vst_files(self): method test_add_vss_files (line 105) | def test_add_vss_files(self): method test_add_local_files (line 119) | def test_add_local_files(self): method test_get_file_info (line 136) | def test_get_file_info(self): method test_get_file_info_not_found (line 153) | def test_get_file_info_not_found(self): method test_get_storage_type (line 159) | def test_get_storage_type(self): method test_get_all_filenames (line 174) | def test_get_all_filenames(self): method test_get_files_by_storage_type (line 188) | def test_get_files_by_storage_type(self): method test_clear (line 210) | def test_clear(self): method test_has_vst_file_false (line 219) | def test_has_vst_file_false(self): method test_has_vss_file_false (line 224) | def test_has_vss_file_false(self): class TestResolveVideoFile (line 230) | class TestResolveVideoFile: method test_resolve_local_file (line 234) | async def test_resolve_local_file(self, tmp_path): method test_resolve_file_not_found (line 259) | async def test_resolve_file_not_found(self): method test_resolve_vst_file_no_tool (line 268) | async def test_resolve_vst_file_no_tool(self): method test_resolve_local_file_not_exists (line 285) | async def test_resolve_local_file_not_exists(self): method test_resolve_vst_file_with_tool (line 303) | async def test_resolve_vst_file_with_tool(self): method test_resolve_vss_file_not_implemented (line 338) | async def test_resolve_vss_file_not_implemented(self): FILE: agent/tests/unit_test/utils/test_frame_select.py class TestFrameSelect (line 27) | class TestFrameSelect: method test_invalid_video_path (line 30) | def test_invalid_video_path(self): method test_successful_frame_extraction (line 38) | def test_successful_frame_extraction(self): method test_no_frames_selected (line 54) | def test_no_frames_selected(self): method test_frame_read_failure (line 67) | def test_frame_read_failure(self): class TestHasNvidiaGpu (line 82) | class TestHasNvidiaGpu: method test_no_nvidia_smi (line 85) | def test_no_nvidia_smi(self): method test_nvidia_smi_success (line 89) | def test_nvidia_smi_success(self): method test_nvidia_smi_failure (line 96) | def test_nvidia_smi_failure(self): FILE: agent/tests/unit_test/utils/test_markdown_parser.py class TestParseTable (line 21) | class TestParseTable: method test_parse_simple_table (line 24) | def test_parse_simple_table(self): method test_parse_table_with_empty_lines (line 35) | def test_parse_table_with_empty_lines(self): method test_parse_table_with_bold_text (line 47) | def test_parse_table_with_bold_text(self): method test_parse_table_with_multiple_values (line 57) | def test_parse_table_with_multiple_values(self): method test_parse_empty_table (line 67) | def test_parse_empty_table(self): method test_parse_table_skip_header (line 73) | def test_parse_table_skip_header(self): method test_parse_blocktext_with_multiple_paras_time_and_image (line 83) | def test_parse_blocktext_with_multiple_paras_time_and_image(self): class TestParseMarkdownToJson (line 99) | class TestParseMarkdownToJson: method test_parse_title (line 102) | def test_parse_title(self): method test_parse_section_with_table (line 108) | def test_parse_section_with_table(self): method test_parse_subsections (line 122) | def test_parse_subsections(self): method test_parse_incident_snapshot_url (line 141) | def test_parse_incident_snapshot_url(self): method test_parse_incident_video_url (line 150) | def test_parse_incident_video_url(self): method test_parse_incident_url_plain (line 159) | def test_parse_incident_url_plain(self): method test_parse_multiple_sections (line 169) | def test_parse_multiple_sections(self): method test_parse_empty_content (line 187) | def test_parse_empty_content(self): method test_parse_content_without_tables (line 193) | def test_parse_content_without_tables(self): method test_parse_subsection_with_table_then_new_section (line 203) | def test_parse_subsection_with_table_then_new_section(self): method test_parse_subsection_without_prior_section_dict (line 222) | def test_parse_subsection_without_prior_section_dict(self): method test_parse_incident_video_url_plain (line 242) | def test_parse_incident_video_url_plain(self): method test_parse_subsection_table_at_end (line 252) | def test_parse_subsection_table_at_end(self): method test_section_not_in_result_when_new_section_starts (line 265) | def test_section_not_in_result_when_new_section_starts(self): method test_section_table_without_subsection_when_new_subsection_starts (line 285) | def test_section_table_without_subsection_when_new_subsection_starts(s... method test_consecutive_subsections_with_tables (line 306) | def test_consecutive_subsections_with_tables(self): FILE: agent/tests/unit_test/utils/test_parser.py class TestReActOutputParserError (line 23) | class TestReActOutputParserError: method test_error_initialization (line 26) | def test_error_initialization(self): method test_error_with_observation (line 34) | def test_error_with_observation(self): method test_error_flags (line 39) | def test_error_flags(self): class TestParseFunctionCalls (line 51) | class TestParseFunctionCalls: method test_parse_single_function_no_params (line 54) | def test_parse_single_function_no_params(self): method test_parse_single_function_with_string_param (line 62) | def test_parse_single_function_with_string_param(self): method test_parse_function_with_numeric_params (line 70) | def test_parse_function_with_numeric_params(self): method test_parse_function_with_float_params (line 78) | def test_parse_function_with_float_params(self): method test_parse_multiple_functions (line 85) | def test_parse_multiple_functions(self): method test_parse_function_with_list_param (line 93) | def test_parse_function_with_list_param(self): method test_parse_function_with_dict_param (line 99) | def test_parse_function_with_dict_param(self): method test_parse_function_with_double_quotes (line 105) | def test_parse_function_with_double_quotes(self): method test_parse_function_with_nested_quotes (line 111) | def test_parse_function_with_nested_quotes(self): method test_parse_function_with_boolean (line 117) | def test_parse_function_with_boolean(self): method test_parse_function_with_none (line 124) | def test_parse_function_with_none(self): method test_parse_no_function_calls (line 130) | def test_parse_no_function_calls(self): method test_parse_function_with_whitespace (line 136) | def test_parse_function_with_whitespace(self): method test_parse_function_has_unique_ids (line 143) | def test_parse_function_has_unique_ids(self): method test_parse_function_with_nested_parens (line 151) | def test_parse_function_with_nested_parens(self): method test_parse_function_with_mixed_params (line 158) | def test_parse_function_with_mixed_params(self): method test_parse_function_with_closing_paren_in_tuple (line 167) | def test_parse_function_with_closing_paren_in_tuple(self): method test_parse_function_with_json_string_fallback (line 174) | def test_parse_function_with_json_string_fallback(self): method test_parse_function_with_invalid_json_stays_string (line 181) | def test_parse_function_with_invalid_json_stays_string(self): method test_parse_function_with_complex_nested_structures (line 188) | def test_parse_function_with_complex_nested_structures(self): FILE: agent/tests/unit_test/utils/test_reasoning_parsing.py class TestParseReasoningContent (line 22) | class TestParseReasoningContent: method test_parse_with_reasoning_content_attribute (line 25) | def test_parse_with_reasoning_content_attribute(self): method test_parse_with_reasoning_in_additional_kwargs (line 37) | def test_parse_with_reasoning_in_additional_kwargs(self): method test_parse_with_reasoning_in_response_metadata (line 49) | def test_parse_with_reasoning_in_response_metadata(self): method test_parse_with_single_think_end_tag (line 61) | def test_parse_with_single_think_end_tag(self): method test_parse_with_paired_think_tags (line 73) | def test_parse_with_paired_think_tags(self): method test_parse_without_reasoning (line 85) | def test_parse_without_reasoning(self): method test_parse_with_empty_reasoning (line 97) | def test_parse_with_empty_reasoning(self): method test_parse_with_whitespace_in_reasoning (line 109) | def test_parse_with_whitespace_in_reasoning(self): method test_parse_with_empty_content (line 121) | def test_parse_with_empty_content(self): method test_parse_think_tags_multiline (line 133) | def test_parse_think_tags_multiline(self): method test_parse_think_tags_take_priority_over_reasoning_field (line 152) | def test_parse_think_tags_take_priority_over_reasoning_field(self): method test_parse_paired_think_tags_take_priority_over_reasoning_field (line 164) | def test_parse_paired_think_tags_take_priority_over_reasoning_field(se... method test_parse_think_tags_wrong_order (line 176) | def test_parse_think_tags_wrong_order(self): method test_parse_content_blocks_reasoning_and_text (line 190) | def test_parse_content_blocks_reasoning_and_text(self): method test_parse_content_blocks_multiple_blocks (line 206) | def test_parse_content_blocks_multiple_blocks(self): method test_parse_content_blocks_only_reasoning (line 224) | def test_parse_content_blocks_only_reasoning(self): method test_parse_content_blocks_only_text (line 239) | def test_parse_content_blocks_only_text(self): method test_parse_content_blocks_empty_list (line 254) | def test_parse_content_blocks_empty_list(self): method test_parse_content_blocks_skips_non_dict_items (line 267) | def test_parse_content_blocks_skips_non_dict_items(self): method test_parse_content_blocks_empty_strings (line 286) | def test_parse_content_blocks_empty_strings(self): method test_reasoning_field_takes_priority_over_content_blocks (line 302) | def test_reasoning_field_takes_priority_over_content_blocks(self): method test_think_tags_take_priority_over_content_blocks (line 318) | def test_think_tags_take_priority_over_content_blocks(self): method test_parse_list_content (line 334) | def test_parse_list_content(self): FILE: agent/tests/unit_test/utils/test_reasoning_utils.py class TestGetThinkingTag (line 23) | class TestGetThinkingTag: method test_thinking_none_returns_none (line 26) | def test_thinking_none_returns_none(self): method test_nvidia_nemotron_thinking_enabled (line 33) | def test_nvidia_nemotron_thinking_enabled(self): method test_nvidia_nemotron_thinking_disabled (line 40) | def test_nvidia_nemotron_thinking_disabled(self): method test_nvidia_nemotron_3_nano (line 47) | def test_nvidia_nemotron_3_nano(self): method test_llama_nemotron_v1_0_thinking_enabled (line 54) | def test_llama_nemotron_v1_0_thinking_enabled(self): method test_llama_nemotron_v1_0_thinking_disabled (line 61) | def test_llama_nemotron_v1_0_thinking_disabled(self): method test_llama_nemotron_v1_1_thinking_enabled (line 68) | def test_llama_nemotron_v1_1_thinking_enabled(self): method test_llama_nemotron_v1_5_thinking_enabled (line 75) | def test_llama_nemotron_v1_5_thinking_enabled(self): method test_llama_nemotron_v1_5_thinking_disabled (line 82) | def test_llama_nemotron_v1_5_thinking_disabled(self): method test_llama_nemotron_newer_version (line 89) | def test_llama_nemotron_newer_version(self): method test_unknown_model (line 96) | def test_unknown_model(self): method test_model_name_with_underscores (line 103) | def test_model_name_with_underscores(self): method test_model_name_with_dots (line 110) | def test_model_name_with_dots(self): method test_azure_deployment_key (line 117) | def test_azure_deployment_key(self): method test_model_key (line 126) | def test_model_key(self): method test_no_model_keys (line 135) | def test_no_model_keys(self): method test_llama_ends_with_v1 (line 141) | def test_llama_ends_with_v1(self): function _make_mock (line 149) | def _make_mock(class_name, model_name="", model=""): class TestGetLlmReasoningBindKwargs (line 158) | class TestGetLlmReasoningBindKwargs: method test_chatnvidia_gpt_oss_reasoning_false (line 163) | def test_chatnvidia_gpt_oss_reasoning_false(self): method test_chatnvidia_gpt_oss_reasoning_true (line 168) | def test_chatnvidia_gpt_oss_reasoning_true(self): method test_chatnvidia_gpt_oss_reasoning_none (line 173) | def test_chatnvidia_gpt_oss_reasoning_none(self): method test_chatnvidia_nemotron_reasoning_true (line 180) | def test_chatnvidia_nemotron_reasoning_true(self): method test_chatnvidia_nemotron_reasoning_false (line 185) | def test_chatnvidia_nemotron_reasoning_false(self): method test_chatnvidia_nemotron_reasoning_none (line 190) | def test_chatnvidia_nemotron_reasoning_none(self): method test_chatnvidia_unknown_model_returns_empty (line 197) | def test_chatnvidia_unknown_model_returns_empty(self): method test_chatnvidia_fallback_to_model_attribute (line 204) | def test_chatnvidia_fallback_to_model_attribute(self): method test_chatopenai_reasoning_true (line 211) | def test_chatopenai_reasoning_true(self): method test_chatopenai_reasoning_false (line 216) | def test_chatopenai_reasoning_false(self): method test_chatopenai_reasoning_none (line 221) | def test_chatopenai_reasoning_none(self): method test_other_llm_type_returns_empty (line 228) | def test_other_llm_type_returns_empty(self): method test_other_llm_type_reasoning_false_returns_empty (line 233) | def test_other_llm_type_reasoning_false_returns_empty(self): FILE: agent/tests/unit_test/utils/test_retry.py class TestCreateRetryStrategy (line 22) | class TestCreateRetryStrategy: method test_create_retry_strategy_returns_async_retrying (line 25) | def test_create_retry_strategy_returns_async_retrying(self): method test_create_retry_strategy_default_delay (line 32) | def test_create_retry_strategy_default_delay(self): method test_create_retry_strategy_custom_delay (line 38) | def test_create_retry_strategy_custom_delay(self): method test_create_retry_strategy_single_retry (line 43) | def test_create_retry_strategy_single_retry(self): method test_create_retry_strategy_many_retries (line 48) | def test_create_retry_strategy_many_retries(self): method test_retry_strategy_on_success (line 54) | async def test_retry_strategy_on_success(self): method test_retry_strategy_on_other_exception (line 72) | async def test_retry_strategy_on_other_exception(self): FILE: agent/tests/unit_test/utils/test_rewrite_url_host.py class TestRewriteUrlHost (line 23) | class TestRewriteUrlHost: method test_replaces_host_keeps_port (line 28) | def test_replaces_host_keeps_port(self): method test_preserves_scheme (line 35) | def test_preserves_scheme(self): method test_preserves_query_and_fragment (line 42) | def test_preserves_query_and_fragment(self): method test_no_path (line 49) | def test_no_path(self): method test_root_path (line 53) | def test_root_path(self): method test_same_host_with_port (line 57) | def test_same_host_with_port(self): method test_parametrized (line 79) | def test_parametrized(self, url, target_ip, expected): method test_already_target_ip_no_port_returns_unchanged (line 84) | def test_already_target_ip_no_port_returns_unchanged(self): method test_proxy_vst_url_rewrites_to_port_30888 (line 90) | def test_proxy_vst_url_rewrites_to_port_30888(self): method test_proxy_static_url_rewrites_to_port_8000 (line 95) | def test_proxy_static_url_rewrites_to_port_8000(self): method test_proxy_api_url_rewrites_to_port_8000 (line 100) | def test_proxy_api_url_rewrites_to_port_8000(self): method test_proxy_health_url_rewrites_to_port_8000 (line 105) | def test_proxy_health_url_rewrites_to_port_8000(self): method test_proxy_incidents_url_rewrites_to_port_8081 (line 110) | def test_proxy_incidents_url_rewrites_to_port_8081(self): method test_proxy_unknown_path_uses_default_port (line 115) | def test_proxy_unknown_path_uses_default_port(self): method test_proxy_preserves_path_query_fragment (line 121) | def test_proxy_preserves_path_query_fragment(self): FILE: agent/tests/unit_test/utils/test_screenshot.py class TestBuildScreenshotUrl (line 20) | class TestBuildScreenshotUrl: method test_build_screenshot_url (line 23) | def test_build_screenshot_url(self): method test_build_screenshot_url_different_params (line 29) | def test_build_screenshot_url_different_params(self): method test_build_screenshot_url_always_returns_string (line 35) | def test_build_screenshot_url_always_returns_string(self): method test_build_screenshot_url_strips_trailing_slash (line 41) | def test_build_screenshot_url_strips_trailing_slash(self): method test_build_screenshot_url_empty_stream_id (line 46) | def test_build_screenshot_url_empty_stream_id(self): method test_build_screenshot_url_empty_timestamp (line 51) | def test_build_screenshot_url_empty_timestamp(self): FILE: agent/tests/unit_test/utils/test_time_measure.py class TestTimeMeasure (line 23) | class TestTimeMeasure: method test_context_manager_basic (line 26) | def test_context_manager_basic(self): method test_execution_time_property (line 34) | def test_execution_time_property(self): method test_current_execution_time_property (line 42) | def test_current_execution_time_property(self): method test_timing_accuracy (line 50) | def test_timing_accuracy(self): method test_print_enabled (line 60) | def test_print_enabled(self): method test_print_disabled (line 68) | def test_print_disabled(self): method test_string_parameter (line 76) | def test_string_parameter(self): method test_nested_context_managers (line 82) | def test_nested_context_managers(self): method test_millisecond_format (line 91) | def test_millisecond_format(self): method test_second_format (line 99) | def test_second_format(self): method test_context_manager_enter_return (line 108) | def test_context_manager_enter_return(self): method test_context_manager_exit_no_exception (line 115) | def test_context_manager_exit_no_exception(self): method test_zero_execution_time_handling (line 121) | def test_zero_execution_time_handling(self): method test_seconds_format_output (line 129) | def test_seconds_format_output(self): method test_nanoseconds_format_output (line 138) | def test_nanoseconds_format_output(self): FILE: agent/tests/unit_test/utils/test_url_translation.py class TestTranslateUrl (line 20) | class TestTranslateUrl: method test_empty_url_returns_empty (line 23) | def test_empty_url_returns_empty(self): method test_none_vlm_mode_returns_original (line 27) | def test_none_vlm_mode_returns_original(self): method test_empty_vlm_mode_returns_original (line 32) | def test_empty_vlm_mode_returns_original(self): method test_missing_external_ip_returns_original (line 37) | def test_missing_external_ip_returns_original(self): method test_empty_external_ip_returns_original (line 42) | def test_empty_external_ip_returns_original(self): method test_missing_internal_ip_returns_original (line 47) | def test_missing_internal_ip_returns_original(self): method test_empty_internal_ip_returns_original (line 52) | def test_empty_internal_ip_returns_original(self): method test_same_ips_returns_original (line 57) | def test_same_ips_returns_original(self): method test_remote_mode_internal_to_external (line 62) | def test_remote_mode_internal_to_external(self): method test_remote_mode_no_match (line 67) | def test_remote_mode_no_match(self): method test_local_mode_external_to_internal (line 72) | def test_local_mode_external_to_internal(self): method test_local_shared_mode_external_to_internal (line 77) | def test_local_shared_mode_external_to_internal(self): method test_unknown_vlm_mode_returns_original (line 82) | def test_unknown_vlm_mode_returns_original(self): method test_url_without_netloc_returns_original (line 87) | def test_url_without_netloc_returns_original(self): method test_case_insensitive_vlm_mode (line 92) | def test_case_insensitive_vlm_mode(self): method test_local_mode_no_match (line 97) | def test_local_mode_no_match(self): method test_proxy_url_local_mode_with_vst_internal_url (line 106) | def test_proxy_url_local_mode_with_vst_internal_url(self): method test_proxy_url_local_mode_without_vst_internal_url (line 112) | def test_proxy_url_local_mode_without_vst_internal_url(self): method test_proxy_url_remote_mode_no_fallback (line 118) | def test_proxy_url_remote_mode_no_fallback(self): method test_proxy_url_preserves_path_and_query (line 124) | def test_proxy_url_preserves_path_and_query(self): method test_proxy_url_vst_internal_url_trailing_slash (line 130) | def test_proxy_url_vst_internal_url_trailing_slash(self): method test_ip_match_takes_priority_over_proxy_fallback (line 136) | def test_ip_match_takes_priority_over_proxy_fallback(self): FILE: agent/tests/unit_test/utils/test_video_file.py class TestGetVideoDuration (line 25) | class TestGetVideoDuration: method test_get_video_duration_file_not_exists (line 28) | def test_get_video_duration_file_not_exists(self, tmp_path): method test_get_video_duration_success (line 33) | def test_get_video_duration_success(self): method test_get_video_duration_cannot_open (line 56) | def test_get_video_duration_cannot_open(self): method test_get_video_duration_invalid_fps (line 67) | def test_get_video_duration_invalid_fps(self): method test_get_video_duration_invalid_frame_count (line 89) | def test_get_video_duration_invalid_frame_count(self): class TestPadMediaInfo (line 112) | class TestPadMediaInfo: method test_pad_media_info_basic (line 115) | def test_pad_media_info_basic(self): method test_pad_media_info_start_near_zero (line 127) | def test_pad_media_info_start_near_zero(self): method test_pad_media_info_end_exceeds_duration (line 139) | def test_pad_media_info_end_exceeds_duration(self): method test_pad_media_info_end_clamped_to_duration (line 149) | def test_pad_media_info_end_clamped_to_duration(self): method test_pad_media_info_zero_start (line 160) | def test_pad_media_info_zero_start(self): method test_pad_media_info_default_chunk_duration (line 170) | def test_pad_media_info_default_chunk_duration(self): FILE: agent/tests/unit_test/video_analytics/test_embeddings.py function add_place (line 27) | def add_place(cache: PlaceEmbeddingCache, name: str, embedding: np.ndarr... class TestEmbeddingModel (line 33) | class TestEmbeddingModel: method test_init_success (line 37) | def test_init_success(self, mock_st_class): method test_encode_without_model_raises (line 48) | def test_encode_without_model_raises(self): method test_encode_batch_without_model_raises (line 56) | def test_encode_batch_without_model_raises(self): method test_encode_batch_empty_list (line 64) | def test_encode_batch_empty_list(self): method test_encode_success (line 72) | def test_encode_success(self): method test_encode_batch_success (line 84) | def test_encode_batch_success(self): method test_encode_exception (line 95) | def test_encode_exception(self): method test_encode_batch_exception (line 106) | def test_encode_batch_exception(self): method test_load_model_success (line 117) | def test_load_model_success(self): method test_load_model_failure (line 137) | def test_load_model_failure(self): class TestPlaceEmbeddingCache (line 150) | class TestPlaceEmbeddingCache: method test_init (line 153) | def test_init(self): method test_add_place (line 159) | def test_add_place(self): method test_add_multiple_places (line 170) | def test_add_multiple_places(self): method test_find_similar_empty_cache (line 181) | def test_find_similar_empty_cache(self): method test_find_similar_with_results (line 189) | def test_find_similar_with_results(self): method test_find_similar_with_threshold (line 205) | def test_find_similar_with_threshold(self): method test_cache_length (line 218) | def test_cache_length(self): method test_find_similar_top_k (line 230) | def test_find_similar_top_k(self): method test_2d_embedding (line 242) | def test_2d_embedding(self): method test_size_method (line 251) | def test_size_method(self): method test_add_places_batch_empty (line 262) | def test_add_places_batch_empty(self): method test_add_places_batch_mismatch_raises (line 269) | def test_add_places_batch_mismatch_raises(self): method test_add_places_batch_multiple (line 275) | def test_add_places_batch_multiple(self): FILE: agent/tests/unit_test/video_analytics/test_es_client.py class TestBaseQueryTemplate (line 25) | class TestBaseQueryTemplate: method test_template_structure (line 28) | def test_template_structure(self): method test_template_is_dict (line 34) | def test_template_is_dict(self): method test_template_deepcopy_independence (line 38) | def test_template_deepcopy_independence(self): method test_template_must_is_list (line 50) | def test_template_must_is_list(self): class TestESClient (line 55) | class TestESClient: method test_client_initialization (line 58) | def test_client_initialization(self): method test_client_with_prefix (line 64) | def test_client_with_prefix(self): method test_get_index_valid_key (line 69) | def test_get_index_valid_key(self): method test_get_index_with_prefix (line 75) | def test_get_index_with_prefix(self): method test_get_index_invalid_key (line 81) | def test_get_index_invalid_key(self): method test_indexes_whitelist (line 87) | def test_indexes_whitelist(self): method test_all_indexes_are_strings (line 93) | def test_all_indexes_are_strings(self): method test_incidents_index_pattern (line 99) | def test_incidents_index_pattern(self): method test_calibration_index_no_wildcard (line 103) | def test_calibration_index_no_wildcard(self): FILE: agent/tests/unit_test/video_analytics/test_interface.py class TestIncidentMetadata (line 23) | class TestIncidentMetadata: method test_place_value (line 26) | def test_place_value(self): method test_category_value (line 29) | def test_category_value(self): method test_is_anomaly_value (line 32) | def test_is_anomaly_value(self): method test_object_ids_value (line 35) | def test_object_ids_value(self): method test_frame_ids_value (line 38) | def test_frame_ids_value(self): method test_analytics_module_value (line 41) | def test_analytics_module_value(self): method test_type_value (line 44) | def test_type_value(self): method test_info_value (line 47) | def test_info_value(self): method test_all_values_count (line 50) | def test_all_values_count(self): class TestVideoAnalyticsInterface (line 54) | class TestVideoAnalyticsInterface: method test_interface_is_abstract (line 57) | def test_interface_is_abstract(self): method test_interface_defines_methods (line 62) | def test_interface_defines_methods(self): method test_concrete_implementation (line 72) | def test_concrete_implementation(self): FILE: agent/tests/unit_test/video_analytics/test_nvschema.py class TestLocation (line 23) | class TestLocation: method test_location_defaults (line 26) | def test_location_defaults(self): method test_location_with_values (line 32) | def test_location_with_values(self): method test_location_with_aliases (line 39) | def test_location_with_aliases(self): class TestCoordinates (line 46) | class TestCoordinates: method test_coordinates_defaults (line 49) | def test_coordinates_defaults(self): method test_coordinates_with_values (line 55) | def test_coordinates_with_values(self): method test_coordinates_with_aliases (line 61) | def test_coordinates_with_aliases(self): class TestPlace (line 67) | class TestPlace: method test_place_minimal (line 70) | def test_place_minimal(self): method test_place_with_location (line 79) | def test_place_with_location(self): method test_place_with_coordinates (line 90) | def test_place_with_coordinates(self): method test_place_with_aliases (line 101) | def test_place_with_aliases(self): class TestIncident (line 110) | class TestIncident: method test_incident_minimal (line 113) | def test_incident_minimal(self): method test_incident_with_aliases (line 125) | def test_incident_with_aliases(self): method test_incident_with_optional_fields (line 137) | def test_incident_with_optional_fields(self): method test_incident_with_aliased_optional_fields (line 163) | def test_incident_with_aliased_optional_fields(self): method test_incident_allows_extra_fields (line 179) | def test_incident_allows_extra_fields(self): method test_incident_serialization (line 190) | def test_incident_serialization(self): FILE: agent/tests/unit_test/video_analytics/test_query_builders.py class TestIncidentQueryBuilder (line 22) | class TestIncidentQueryBuilder: method test_build_query_by_id (line 25) | def test_build_query_by_id(self): method test_build_query_basic (line 34) | def test_build_query_basic(self): method test_build_query_with_sensor (line 45) | def test_build_query_with_sensor(self): method test_build_query_with_place (line 57) | def test_build_query_with_place(self): method test_build_query_with_time_range (line 69) | def test_build_query_with_time_range(self): method test_build_query_vlm_verified (line 81) | def test_build_query_vlm_verified(self): method test_build_query_vlm_not_confirmed (line 95) | def test_build_query_vlm_not_confirmed(self): method test_build_query_vlm_verdict_all (line 109) | def test_build_query_vlm_verdict_all(self): class TestFramesQueryBuilder (line 125) | class TestFramesQueryBuilder: method test_build_query (line 128) | def test_build_query(self): method test_fov_histogram_aggregation (line 142) | def test_fov_histogram_aggregation(self): method test_fov_histogram_with_object_type (line 149) | def test_fov_histogram_with_object_type(self): class TestBehaviorQueryBuilder (line 158) | class TestBehaviorQueryBuilder: method test_default_constants (line 161) | def test_default_constants(self): method test_build_average_speed_query_sensor (line 167) | def test_build_average_speed_query_sensor(self): method test_build_average_speed_query_place (line 182) | def test_build_average_speed_query_place(self): method test_average_speed_per_direction_aggregation (line 194) | def test_average_speed_per_direction_aggregation(self): FILE: agent/tests/unit_test/video_analytics/test_tools.py class TestEmptyInput (line 31) | class TestEmptyInput: method test_empty_input_creation (line 34) | def test_empty_input_creation(self): class TestGetSensorIdsInput (line 39) | class TestGetSensorIdsInput: method test_no_place_filter (line 42) | def test_no_place_filter(self): method test_with_place_filter (line 46) | def test_with_place_filter(self): class TestGetIncidentInput (line 51) | class TestGetIncidentInput: method test_basic_input (line 54) | def test_basic_input(self): method test_with_includes (line 59) | def test_with_includes(self): class TestGetIncidentsInputBase (line 64) | class TestGetIncidentsInputBase: method test_defaults (line 67) | def test_defaults(self): method test_with_source_and_type_sensor (line 76) | def test_with_source_and_type_sensor(self): method test_with_source_and_type_place (line 81) | def test_with_source_and_type_place(self): method test_invalid_source_type (line 85) | def test_invalid_source_type(self): method test_source_without_type_fails (line 89) | def test_source_without_type_fails(self): method test_type_without_source_fails (line 93) | def test_type_without_source_fails(self): method test_with_time_range (line 97) | def test_with_time_range(self): method test_start_time_without_end_time_fails (line 102) | def test_start_time_without_end_time_fails(self): method test_end_time_without_start_time_fails (line 106) | def test_end_time_without_start_time_fails(self): method test_with_includes (line 110) | def test_with_includes(self): method test_custom_max_count (line 114) | def test_custom_max_count(self): class TestGetIncidentsInputWithVLM (line 119) | class TestGetIncidentsInputWithVLM: method test_vlm_verdict_all (line 122) | def test_vlm_verdict_all(self): method test_vlm_verdict_confirmed (line 126) | def test_vlm_verdict_confirmed(self): method test_vlm_verdict_rejected (line 130) | def test_vlm_verdict_rejected(self): method test_vlm_verdict_verification_failed (line 134) | def test_vlm_verdict_verification_failed(self): method test_vlm_verdict_not_confirmed (line 138) | def test_vlm_verdict_not_confirmed(self): method test_vlm_verdict_invalid (line 142) | def test_vlm_verdict_invalid(self): method test_vlm_verdict_none (line 146) | def test_vlm_verdict_none(self): class TestFovHistogramInput (line 151) | class TestFovHistogramInput: method test_basic_input (line 154) | def test_basic_input(self): method test_with_object_type (line 162) | def test_with_object_type(self): method test_custom_bucket_count (line 171) | def test_custom_bucket_count(self): class TestAverageSpeedsInput (line 181) | class TestAverageSpeedsInput: method test_sensor_source (line 184) | def test_sensor_source(self): method test_place_source (line 193) | def test_place_source(self): method test_invalid_source_type (line 202) | def test_invalid_source_type(self): class TestAnalyzeInput (line 212) | class TestAnalyzeInput: method test_max_min_incidents (line 215) | def test_max_min_incidents(self): method test_average_speed (line 225) | def test_average_speed(self): method test_avg_num_people (line 235) | def test_avg_num_people(self): method test_avg_num_vehicles (line 245) | def test_avg_num_vehicles(self): method test_invalid_analysis_type (line 255) | def test_invalid_analysis_type(self): method test_invalid_source_type (line 265) | def test_invalid_source_type(self): class TestVideoAnalyticsToolConfig (line 276) | class TestVideoAnalyticsToolConfig: method test_defaults (line 279) | def test_defaults(self): method test_custom_es_url (line 289) | def test_custom_es_url(self): method test_with_index_prefix (line 293) | def test_with_index_prefix(self): method test_vlm_verified_enabled (line 297) | def test_vlm_verified_enabled(self): method test_custom_include_list (line 301) | def test_custom_include_list(self): method test_no_embedding_model (line 305) | def test_no_embedding_model(self): method test_with_vst_sensor_list_tool (line 309) | def test_with_vst_sensor_list_tool(self): class TestTimestampValidation (line 314) | class TestTimestampValidation: method test_valid_time_formats (line 317) | def test_valid_time_formats(self): method test_invalid_timestamp_no_z (line 328) | def test_invalid_timestamp_no_z(self): method test_invalid_timestamp_no_milliseconds (line 333) | def test_invalid_timestamp_no_milliseconds(self): method test_fov_histogram_timestamp_validation (line 338) | def test_fov_histogram_timestamp_validation(self): method test_average_speeds_timestamp_validation (line 343) | def test_average_speeds_timestamp_validation(self): class TestAnalyzeInputValidation (line 351) | class TestAnalyzeInputValidation: method test_all_analysis_types (line 354) | def test_all_analysis_types(self): method test_place_source_type (line 367) | def test_place_source_type(self): class TestGetIncidentsInputValidation (line 379) | class TestGetIncidentsInputValidation: method test_full_input_with_all_fields (line 382) | def test_full_input_with_all_fields(self): method test_vlm_input_with_time_and_source (line 395) | def test_vlm_input_with_time_and_source(self): class TestInputModelSerialization (line 409) | class TestInputModelSerialization: method test_empty_input_serialization (line 412) | def test_empty_input_serialization(self): method test_get_sensor_ids_input_serialization (line 418) | def test_get_sensor_ids_input_serialization(self): method test_get_incident_input_serialization (line 424) | def test_get_incident_input_serialization(self): method test_fov_histogram_input_serialization (line 431) | def test_fov_histogram_input_serialization(self): method test_analyze_input_serialization (line 444) | def test_analyze_input_serialization(self): FILE: agent/tests/unit_test/video_analytics/test_tools_deep_coverage.py function _setup (line 33) | async def _setup(config, mock_builder, mock_es_client): function config (line 54) | def config(): function mock_builder (line 63) | def mock_builder(): function mock_es_client (line 68) | def mock_es_client(): function test_get_sensor_ids_with_place_filter (line 94) | async def test_get_sensor_ids_with_place_filter(config, mock_builder, mo... function test_get_sensor_ids_all (line 101) | async def test_get_sensor_ids_all(config, mock_builder, mock_es_client): function test_get_incident_found (line 108) | async def test_get_incident_found(config, mock_builder, mock_es_client): function test_get_incident_not_found (line 116) | async def test_get_incident_not_found(config, mock_builder, mock_es_clie... function test_get_incident_with_includes (line 124) | async def test_get_incident_with_includes(config, mock_builder, mock_es_... function test_get_incidents_with_source_and_time (line 132) | async def test_get_incidents_with_source_and_time(config, mock_builder, ... function test_get_incidents_has_more (line 154) | async def test_get_incidents_has_more(config, mock_builder, mock_es_clie... function test_get_fov_histogram_with_data (line 164) | async def test_get_fov_histogram_with_data(config, mock_builder, mock_es... function test_get_average_speeds_no_data (line 198) | async def test_get_average_speeds_no_data(config, mock_builder, mock_es_... function test_get_average_speeds_null_value (line 213) | async def test_get_average_speeds_null_value(config, mock_builder, mock_... function test_analyze_max_min_with_data (line 230) | async def test_analyze_max_min_with_data(config, mock_builder, mock_es_c... function test_analyze_average_speed_with_data (line 252) | async def test_analyze_average_speed_with_data(config, mock_builder, moc... function test_analyze_avg_num_people_with_data (line 276) | async def test_analyze_avg_num_people_with_data(config, mock_builder, mo... function test_analyze_avg_num_vehicles_with_data (line 305) | async def test_analyze_avg_num_vehicles_with_data(config, mock_builder, ... function test_analyze_average_speed_no_data (line 334) | async def test_analyze_average_speed_no_data(config, mock_builder, mock_... function test_get_places_from_cache (line 350) | async def test_get_places_from_cache(config, mock_builder, mock_es_client): function test_get_places_empty_cache (line 357) | async def test_get_places_empty_cache(mock_builder): FILE: agent/tests/unit_test/video_analytics/test_tools_edge_cases.py function _setup (line 29) | async def _setup(config, mock_builder, mock_es_client): function test_get_sensor_ids_empty_cache (line 49) | async def test_get_sensor_ids_empty_cache(): function test_get_sensor_ids_empty_cache_no_calibration (line 66) | async def test_get_sensor_ids_empty_cache_no_calibration(): function test_get_places_empty_cache (line 82) | async def test_get_places_empty_cache(): function test_get_places_empty_cache_no_data (line 105) | async def test_get_places_empty_cache_no_data(): function test_analyze_max_min_no_valid_timestamps (line 120) | async def test_analyze_max_min_no_valid_timestamps(): function test_init_with_vst_sensor_list (line 146) | async def test_init_with_vst_sensor_list(): FILE: agent/tests/unit_test/video_analytics/test_tools_functions.py class MockESClient (line 38) | class MockESClient: method __init__ (line 41) | def __init__(self, es_url, index_prefix=""): method set_search_results (line 48) | def set_search_results(self, results): method set_aggregate_results (line 51) | def set_aggregate_results(self, results): method set_get_by_id_results (line 54) | def set_get_by_id_results(self, results): method get_by_id (line 57) | async def get_by_id(self, index_key, doc_id): method search (line 60) | async def search(self, index_key, query_body, size=100, sort=None, sou... method aggregate (line 63) | async def aggregate(self, index_key, query_body, aggs): method close (line 66) | async def close(self): function mock_builder (line 71) | def mock_builder(): function sample_calibration_data (line 78) | def sample_calibration_data(): function sample_incidents (line 91) | def sample_incidents(): function invoke_function (line 108) | async def invoke_function(group, name, input_obj): class TestVideoAnalyticsFunctions (line 119) | class TestVideoAnalyticsFunctions: method test_get_incident_found (line 123) | async def test_get_incident_found(self, mock_builder, sample_calibrati... method test_get_incident_not_found (line 146) | async def test_get_incident_not_found(self, mock_builder, sample_calib... method test_get_incidents_basic (line 160) | async def test_get_incidents_basic(self, mock_builder, sample_calibrat... method test_get_incidents_with_source (line 175) | async def test_get_incidents_with_source(self, mock_builder, sample_ca... method test_get_incidents_has_more (line 198) | async def test_get_incidents_has_more(self, mock_builder, sample_calib... method test_get_sensor_ids_all (line 217) | async def test_get_sensor_ids_all(self, mock_builder, sample_calibrati... method test_get_sensor_ids_with_place (line 231) | async def test_get_sensor_ids_with_place(self, mock_builder, sample_ca... method test_get_places (line 244) | async def test_get_places(self, mock_builder, sample_calibration_data): method test_get_fov_histogram (line 258) | async def test_get_fov_histogram(self, mock_builder, sample_calibratio... method test_get_average_speeds (line 298) | async def test_get_average_speeds(self, mock_builder, sample_calibrati... method test_analyze_max_min_incidents (line 322) | async def test_analyze_max_min_incidents(self, mock_builder, sample_ca... method test_analyze_no_incidents (line 351) | async def test_analyze_no_incidents(self, mock_builder, sample_calibra... method test_analyze_average_speed (line 375) | async def test_analyze_average_speed(self, mock_builder, sample_calibr... method test_analyze_avg_num_people (line 399) | async def test_analyze_avg_num_people(self, mock_builder, sample_calib... method test_analyze_avg_num_vehicles (line 439) | async def test_analyze_avg_num_vehicles(self, mock_builder, sample_cal... class TestVideoAnalyticsWithVLM (line 479) | class TestVideoAnalyticsWithVLM: method test_get_incidents_vlm_verified (line 483) | async def test_get_incidents_vlm_verified(self, mock_builder, sample_c... class TestVideoAnalyticsNoCalibration (line 499) | class TestVideoAnalyticsNoCalibration: method test_no_calibration_data (line 503) | async def test_no_calibration_data(self, mock_builder): method test_calibration_error (line 516) | async def test_calibration_error(self, mock_builder): class TestVideoAnalyticsIncludeConfig (line 532) | class TestVideoAnalyticsIncludeConfig: method test_include_only_get_incidents (line 536) | async def test_include_only_get_incidents(self, mock_builder, sample_c... method test_include_empty (line 550) | async def test_include_empty(self, mock_builder, sample_calibration_da... FILE: agent/tests/unit_test/video_analytics/test_tools_inner.py class TestVideoAnalyticsInitialization (line 26) | class TestVideoAnalyticsInitialization: method mock_builder (line 30) | def mock_builder(self): method test_init_with_calibration (line 34) | async def test_init_with_calibration(self, mock_builder): method test_init_calibration_failure (line 54) | async def test_init_calibration_failure(self, mock_builder): method test_init_calibration_none (line 68) | async def test_init_calibration_none(self, mock_builder): method test_init_with_embeddings (line 82) | async def test_init_with_embeddings(self, mock_builder): method test_init_with_vlm_verified (line 103) | async def test_init_with_vlm_verified(self, mock_builder): method test_init_with_vst_sensor_tool (line 118) | async def test_init_with_vst_sensor_tool(self, mock_builder): method test_init_custom_include (line 133) | async def test_init_custom_include(self, mock_builder): FILE: agent/tests/unit_test/video_analytics/test_tools_inner_fns.py function _get_fns (line 33) | async def _get_fns(config, mock_builder, mock_es_client): function config (line 56) | def config(): function mock_builder (line 65) | def mock_builder(): function mock_es_client (line 70) | def mock_es_client(): function test_get_sensor_ids_fn (line 96) | async def test_get_sensor_ids_fn(config, mock_builder, mock_es_client): function test_get_places_fn (line 104) | async def test_get_places_fn(config, mock_builder, mock_es_client): function test_get_incident_fn (line 113) | async def test_get_incident_fn(config, mock_builder, mock_es_client): function test_get_incidents_fn (line 123) | async def test_get_incidents_fn(config, mock_builder, mock_es_client): function test_get_incidents_with_sensor (line 133) | async def test_get_incidents_with_sensor(config, mock_builder, mock_es_c... function test_get_incidents_with_place (line 150) | async def test_get_incidents_with_place(config, mock_builder, mock_es_cl... function test_get_fov_histogram_fn (line 160) | async def test_get_fov_histogram_fn(config, mock_builder, mock_es_client): function test_get_average_speeds_fn (line 176) | async def test_get_average_speeds_fn(config, mock_builder, mock_es_client): function test_analyze_max_min_incidents (line 195) | async def test_analyze_max_min_incidents(config, mock_builder, mock_es_c... function test_analyze_no_incidents (line 217) | async def test_analyze_no_incidents(config, mock_builder, mock_es_client): function test_analyze_average_speed (line 236) | async def test_analyze_average_speed(config, mock_builder, mock_es_client): function test_analyze_avg_num_people (line 256) | async def test_analyze_avg_num_people(config, mock_builder, mock_es_clie... function test_analyze_avg_num_vehicles (line 274) | async def test_analyze_avg_num_vehicles(config, mock_builder, mock_es_cl... FILE: agent/tests/unit_test/video_analytics/test_tools_integration.py class MockESClient (line 34) | class MockESClient: method __init__ (line 37) | def __init__(self, url, prefix): method get_by_id (line 49) | async def get_by_id(self, index_key, doc_id): method search (line 54) | async def search(self, index_key, query, size=10): method scroll (line 57) | async def scroll(self, scroll_id): function mock_es_client (line 62) | def mock_es_client(): function mock_builder (line 68) | def mock_builder(): function config (line 76) | def config(): function config_with_vlm (line 87) | def config_with_vlm(): class TestVideoAnalyticsConfig (line 97) | class TestVideoAnalyticsConfig: method test_config_with_all_options (line 100) | def test_config_with_all_options(self): method test_config_minimal (line 116) | def test_config_minimal(self): class TestInputModelEdgeCases (line 124) | class TestInputModelEdgeCases: method test_get_incidents_with_all_fields_populated (line 127) | def test_get_incidents_with_all_fields_populated(self): method test_get_incidents_vlm_with_all_verdicts (line 140) | def test_get_incidents_vlm_with_all_verdicts(self): method test_fov_histogram_bucket_counts (line 147) | def test_fov_histogram_bucket_counts(self): method test_average_speeds_source_types (line 159) | def test_average_speeds_source_types(self): method test_analyze_all_types (line 170) | def test_analyze_all_types(self): class TestGetSensorIdsInput (line 184) | class TestGetSensorIdsInput: method test_place_filter_variations (line 187) | def test_place_filter_variations(self): method test_none_place (line 194) | def test_none_place(self): class TestGetIncidentInput (line 200) | class TestGetIncidentInput: method test_various_id_formats (line 203) | def test_various_id_formats(self): method test_includes_variations (line 210) | def test_includes_variations(self): class TestConfigInclude (line 226) | class TestConfigInclude: method test_include_all_functions (line 229) | def test_include_all_functions(self): method test_include_single_function (line 244) | def test_include_single_function(self): method test_include_empty_list (line 249) | def test_include_empty_list(self): class TestVideoAnalyticsAsyncGenerator (line 255) | class TestVideoAnalyticsAsyncGenerator: method test_video_analytics_initialization (line 259) | async def test_video_analytics_initialization(self, config, mock_build... method test_video_analytics_with_calibration_error (line 284) | async def test_video_analytics_with_calibration_error(self, config, mo... method test_video_analytics_with_empty_calibration (line 300) | async def test_video_analytics_with_empty_calibration(self, config, mo... method test_video_analytics_with_embedding_model (line 315) | async def test_video_analytics_with_embedding_model(self, mock_builder): FILE: agent/tests/unit_test/video_analytics/test_utils.py class TestValidateIsoTimestamp (line 32) | class TestValidateIsoTimestamp: method test_valid_timestamp (line 35) | def test_valid_timestamp(self): method test_invalid_format_no_milliseconds (line 41) | def test_invalid_format_no_milliseconds(self): method test_invalid_format_no_z (line 46) | def test_invalid_format_no_z(self): method test_invalid_date_values (line 51) | def test_invalid_date_values(self): class TestBuildSensorMap (line 57) | class TestBuildSensorMap: method test_build_sensor_map_basic (line 60) | def test_build_sensor_map_basic(self, sample_sensors): method test_build_sensor_map_multiple_cities (line 67) | def test_build_sensor_map_multiple_cities(self, sample_sensors): method test_build_sensor_map_missing_place (line 73) | def test_build_sensor_map_missing_place(self): method test_build_sensor_map_malformed_place (line 79) | def test_build_sensor_map_malformed_place(self): method test_build_sensor_map_missing_id (line 85) | def test_build_sensor_map_missing_id(self): method test_build_sensor_map_missing_city_value (line 94) | def test_build_sensor_map_missing_city_value(self): method test_build_sensor_map_missing_intersection_value (line 100) | def test_build_sensor_map_missing_intersection_value(self): class TestBuildPlaceMap (line 107) | class TestBuildPlaceMap: method test_build_place_map_basic (line 110) | def test_build_place_map_basic(self, sample_sensors): method test_build_place_map_sorted (line 117) | def test_build_place_map_sorted(self, sample_sensors): method test_build_place_map_no_duplicates (line 124) | def test_build_place_map_no_duplicates(self): method test_build_place_map_missing_place (line 133) | def test_build_place_map_missing_place(self): method test_build_place_map_malformed_place (line 139) | def test_build_place_map_malformed_place(self): method test_build_place_map_missing_city_value (line 145) | def test_build_place_map_missing_city_value(self): method test_build_place_map_missing_intersection_value (line 151) | def test_build_place_map_missing_intersection_value(self): class TestParseVstSensorListResponse (line 158) | class TestParseVstSensorListResponse: method test_parse_empty_response (line 161) | def test_parse_empty_response(self): method test_parse_dict_response (line 166) | def test_parse_dict_response(self): method test_parse_quoted_response (line 173) | def test_parse_quoted_response(self): method test_parse_invalid_json (line 180) | def test_parse_invalid_json(self): class TestComputeBucketSizeSeconds (line 186) | class TestComputeBucketSizeSeconds: method test_compute_bucket_size_hour (line 189) | def test_compute_bucket_size_hour(self): method test_compute_bucket_size_minimum (line 196) | def test_compute_bucket_size_minimum(self): method test_compute_bucket_size_invalid_count (line 203) | def test_compute_bucket_size_invalid_count(self): class TestCreateEmptyHistogramBuckets (line 211) | class TestCreateEmptyHistogramBuckets: method test_create_buckets (line 214) | def test_create_buckets(self): method test_create_buckets_invalid_size (line 224) | def test_create_buckets_invalid_size(self): method test_create_buckets_truncated_last_bucket (line 231) | def test_create_buckets_truncated_last_bucket(self): class TestCreateEventsFromIncidents (line 243) | class TestCreateEventsFromIncidents: method test_create_events_basic (line 246) | def test_create_events_basic(self, sample_incidents): method test_create_events_empty (line 252) | def test_create_events_empty(self): method test_create_events_missing_timestamps (line 258) | def test_create_events_missing_timestamps(self): class TestSweepOverlappingIncidents (line 265) | class TestSweepOverlappingIncidents: method test_sweep_no_overlap (line 268) | def test_sweep_no_overlap(self): method test_sweep_with_overlap (line 279) | def test_sweep_with_overlap(self): method test_sweep_empty_events (line 290) | def test_sweep_empty_events(self): FILE: deployments/foundational/elk/pb_definitions/ruby/ext_pb.rb type Nv (line 98) | module Nv FILE: deployments/foundational/elk/pb_definitions/ruby/schema_pb.rb type Nv (line 231) | module Nv FILE: deployments/vlm-as-verifier/scripts/env-substitute.py function substitute_env_vars (line 32) | def substitute_env_vars(content): function main (line 48) | def main(): FILE: ui/apps/nemo-agent-toolkit-ui/__mocks__/websocket.ts type MockWebSocket (line 6) | interface MockWebSocket { class MockWebSocketClass (line 25) | class MockWebSocketClass implements MockWebSocket { method constructor (line 44) | constructor(url: string) { method mockOpen (line 51) | public mockOpen() { method mockMessage (line 58) | public mockMessage(data: any) { method mockClose (line 67) | public mockClose() { method mockError (line 74) | public mockError() { FILE: ui/apps/nemo-agent-toolkit-ui/__tests__/api/httpEndpoints.test.ts function testProcessGenerate (line 40) | async function testProcessGenerate(responseData: string): Promise { function testProcessChat (line 118) | async function testProcessChat(responseData: string): Promise { function createMockStreamResponse (line 192) | function createMockStreamResponse(chunks: string[]): any { function processStreamChunks (line 211) | async function processStreamChunks(chunks: string[], additionalProps = {... function createMockStreamResponse (line 362) | function createMockStreamResponse(chunks: string[]): any { function processChatStreamChunks (line 381) | async function processChatStreamChunks(chunks: string[], additionalProps... function testBuildGeneratePayload (line 510) | function testBuildGeneratePayload(messages: any[]) { function testBuildOpenAIChatPayload (line 539) | function testBuildOpenAIChatPayload(messages: any[]) { FILE: ui/apps/nemo-agent-toolkit-ui/__tests__/components/Chat.streaming-edge-cases.test.tsx function normalizeNewlines (line 5) | function normalizeNewlines(s: string): string { function extractSsePayloads (line 9) | function extractSsePayloads(buffer: string): { function splitNdjson (line 34) | function splitNdjson(buffer: string): { lines: string[]; rest: string } { function tryParseJson (line 42) | function tryParseJson(s: string): T | null { function parsePossiblyConcatenatedJson (line 50) | function parsePossiblyConcatenatedJson(payload: string): any[] { FILE: ui/apps/nemo-agent-toolkit-ui/next.config.js method webpack (line 22) | webpack(config, { isServer, dev }) { method redirects (line 30) | async redirects() { FILE: ui/apps/nemo-agent-toolkit-ui/pages/_app.tsx function App (line 12) | function App({ Component, pageProps }: AppProps<{}>) { FILE: ui/apps/nemo-agent-toolkit-ui/pages/_document.tsx type Props (line 5) | type Props = DocumentProps & { function Document (line 9) | function Document(props: Props) { FILE: ui/apps/nemo-agent-toolkit-ui/pages/index.tsx function HomePage (line 6) | function HomePage() { FILE: ui/apps/nv-metropolis-bp-vss-ui/components/Home.tsx type AlertsData (line 42) | interface AlertsData { type SearchData (line 49) | interface SearchData { type DashboardData (line 54) | interface DashboardData { type MapData (line 59) | interface MapData { type VideoManagementData (line 64) | interface VideoManagementData { type HomeProps (line 69) | interface HomeProps { type TabConfig (line 80) | interface TabConfig { function Home (line 233) | function Home({ alertsData, searchData, dashboardData, mapData, videoMan... FILE: ui/apps/nv-metropolis-bp-vss-ui/components/ModeControlsSection.tsx type ModeControlsSectionProps (line 14) | interface ModeControlsSectionProps { FILE: ui/apps/nv-metropolis-bp-vss-ui/components/TabWithChatSidebarLayout.tsx type TabWithChatSidebarLayoutProps (line 6) | type TabWithChatSidebarLayoutProps = { function TabWithChatSidebarLayout (line 26) | function TabWithChatSidebarLayout({ FILE: ui/apps/nv-metropolis-bp-vss-ui/constants/constants.tsx constant APPLICATION_TITLE (line 5) | const APPLICATION_TITLE = constant APPLICATION_SUBTITLE (line 10) | const APPLICATION_SUBTITLE = FILE: ui/apps/nv-metropolis-bp-vss-ui/hooks/useTabChatSidebarResize.ts function useTabChatSidebarResize (line 8) | function useTabChatSidebarResize( FILE: ui/apps/nv-metropolis-bp-vss-ui/hooks/useTabChatSidebars.ts type TabChatSidebarState (line 9) | type TabChatSidebarState = { type TabChatSidebarApi (line 14) | type TabChatSidebarApi = { function useTabChatSidebars (line 26) | function useTabChatSidebars( FILE: ui/apps/nv-metropolis-bp-vss-ui/hooks/useTheme.ts type Theme (line 5) | type Theme = 'light' | 'dark'; FILE: ui/apps/nv-metropolis-bp-vss-ui/next.config.js method webpack (line 33) | webpack(config, { isServer, dev }) { method redirects (line 57) | async redirects() { FILE: ui/apps/nv-metropolis-bp-vss-ui/pages/_app.tsx function App (line 14) | function App({ Component, pageProps }: AppProps) { FILE: ui/apps/nv-metropolis-bp-vss-ui/pages/_document.tsx type Props (line 8) | type Props = DocumentProps & { function Document (line 12) | function Document(props: Props) { FILE: ui/apps/nv-metropolis-bp-vss-ui/pages/index.tsx type HomePageProps (line 57) | interface HomePageProps { function HomePage (line 66) | function HomePage(props: HomePageProps) { FILE: ui/apps/nv-metropolis-bp-vss-ui/utils/searchTabChatEnv.ts constant SEARCH_TAB_KEY (line 14) | const SEARCH_TAB_KEY = 'SEARCH_TAB'; function getSearchTabChatWorkflow (line 17) | function getSearchTabChatWorkflow(): string { type SearchTabChatInitialStateOverride (line 22) | type SearchTabChatInitialStateOverride = TabChatInitialStateOverride; function getSearchTabChatInitialStateOverride (line 25) | function getSearchTabChatInitialStateOverride(): SearchTabChatInitialSta... FILE: ui/apps/nv-metropolis-bp-vss-ui/utils/tabChatEnv.ts function tabChatEnvKey (line 13) | function tabChatEnvKey(tabKey: string, suffix: string): string { function get (line 17) | function get(tabKey: string, suffix: string, mainKey: string): string { function getBool (line 27) | function getBool(tabKey: string, suffix: string, mainKey: string): boole... function getBoolDefaultTrue (line 32) | function getBoolDefaultTrue(tabKey: string, suffix: string, mainKey: str... function getTabChatWorkflow (line 40) | function getTabChatWorkflow( type TabChatInitialStateOverride (line 51) | type TabChatInitialStateOverride = { function getTabChatInitialStateOverride (line 77) | function getTabChatInitialStateOverride( FILE: ui/apps/nv-metropolis-bp-vss-ui/utils/tabChatSidebarConfig.ts constant TAB_IDS_WITH_CHAT_SIDEBAR (line 7) | const TAB_IDS_WITH_CHAT_SIDEBAR = ['search', 'alerts'] as const; type TabIdWithChatSidebar (line 9) | type TabIdWithChatSidebar = (typeof TAB_IDS_WITH_CHAT_SIDEBAR)[number]; function getTabEnvKey (line 12) | function getTabEnvKey(tabId: string): string { function getTabChatSidebarEnabled (line 17) | function getTabChatSidebarEnabled(tabId: string): boolean { function getTabChatSidebarOpenDefault (line 23) | function getTabChatSidebarOpenDefault(tabId: string): boolean { constant CHAT_SIDEBAR_OPEN_SESSION_KEY_PREFIX (line 28) | const CHAT_SIDEBAR_OPEN_SESSION_KEY_PREFIX = 'nvMetropolis_chatSidebarOp... function getTabChatSidebarOpenSessionKey (line 31) | function getTabChatSidebarOpenSessionKey(tabId: string): string { function getTabChatSidebarOpenFromSession (line 36) | function getTabChatSidebarOpenFromSession(tabId: string): boolean | null { function setTabChatSidebarOpenInSession (line 45) | function setTabChatSidebarOpenInSession(tabId: string, open: boolean): v... function getTabStorageKeyPrefix (line 51) | function getTabStorageKeyPrefix(tabId: string): string { FILE: ui/custom-server.js constant RUN_APP_NAME (line 8) | const RUN_APP_NAME = process.env.RUN_APP_NAME || 'nemo-agent-toolkit-ui' FILE: ui/packages/nemo-agent-toolkit-ui/__mocks__/websocket.ts type MockWebSocket (line 6) | interface MockWebSocket { class MockWebSocketClass (line 25) | class MockWebSocketClass implements MockWebSocket { method constructor (line 44) | constructor(url: string) { method mockOpen (line 51) | public mockOpen() { method mockMessage (line 58) | public mockMessage(data: any) { method mockClose (line 67) | public mockClose() { method mockError (line 74) | public mockError() { FILE: ui/packages/nemo-agent-toolkit-ui/__tests__/api/routes.test.ts function createBuildContextAwareRAGPayload (line 280) | function createBuildContextAwareRAGPayload() { function createStreamingResponse (line 607) | function createStreamingResponse(chunks) { function createStreamingResponse (line 706) | function createStreamingResponse(chunks) { FILE: ui/packages/nemo-agent-toolkit-ui/__tests__/components/Chat.streaming-edge-cases.test.tsx function normalizeNewlines (line 5) | function normalizeNewlines(s: string): string { function extractSsePayloads (line 9) | function extractSsePayloads(buffer: string): { function splitNdjson (line 34) | function splitNdjson(buffer: string): { lines: string[]; rest: string } { function tryParseJson (line 42) | function tryParseJson(s: string): T | null { function parsePossiblyConcatenatedJson (line 50) | function parsePossiblyConcatenatedJson(payload: string): any[] { FILE: ui/packages/nemo-agent-toolkit-ui/__tests__/proxy/proxy-integration.test.js constant PROXY_PORT (line 17) | const PROXY_PORT = 3000; constant TEST_TIMEOUT (line 18) | const TEST_TIMEOUT = 10000; FILE: ui/packages/nemo-agent-toolkit-ui/components/Buttons/SidebarActionButton/SidebarActionButton.tsx type Props (line 3) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/Chat.tsx function normalizeNewlines (line 60) | function normalizeNewlines(s: string): string { function extractSsePayloads (line 65) | function extractSsePayloads(buffer: string): { function splitNdjson (line 99) | function splitNdjson(buffer: string): { lines: string[]; rest: string } { function tryParseJson (line 108) | function tryParseJson(s: string): T | null { function parsePossiblyConcatenatedJson (line 116) | function parsePossiblyConcatenatedJson(payload: string): any[] { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ChatFileUpload.tsx type UploadFileFieldType (line 11) | type UploadFileFieldType = 'boolean' | 'string' | 'number' | 'array' | '... type UploadFileFieldConfig (line 13) | interface UploadFileFieldConfig { type UploadFileConfigTemplate (line 23) | interface UploadFileConfigTemplate { type FileUploadStatus (line 28) | type FileUploadStatus = 'pending' | 'uploading' | 'success' | 'error' | ... type FileWithFormData (line 31) | interface FileWithFormData { constant INPUT_CLASS (line 44) | const INPUT_CLASS = 'w-full rounded-lg border border-gray-300 bg-white p... constant POPUP_OVERLAY_CLASS (line 45) | const POPUP_OVERLAY_CLASS = 'fixed inset-0 z-50 flex items-center justif... constant POPUP_CONTAINER_CLASS (line 46) | const POPUP_CONTAINER_CLASS = 'mx-4 w-full max-w-xl rounded-lg bg-white ... type ChatFileUploadProps (line 48) | interface ChatFileUploadProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ChatHeader.tsx type ChatHeaderProps (line 21) | interface ChatHeaderProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ChatInput.tsx type Props (line 46) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ChatLoader.tsx type Props (line 5) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ChatMessage.tsx type Props (line 33) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/CustomAgentParams.tsx type ParamType (line 4) | type ParamType = 'string' | 'number' | 'boolean' | 'select'; type ParamFieldConfig (line 6) | interface ParamFieldConfig { type ParamField (line 16) | interface ParamField extends ParamFieldConfig { type CustomAgentParamsValues (line 21) | type CustomAgentParamsValues = Record; type CustomAgentParamsProps (line 23) | interface CustomAgentParamsProps { constant STORAGE_KEY_CUSTOM_AGENT_PARAMS (line 201) | const STORAGE_KEY_CUSTOM_AGENT_PARAMS = 'customAgentParamsValues'; FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/ErrorMessageDiv.tsx type Props (line 6) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chat/Regenerate.tsx type Props (line 6) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/Chatbar.context.tsx type ChatbarContextProps (line 10) | interface ChatbarContextProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/Chatbar.state.tsx type ChatbarInitialState (line 3) | interface ChatbarInitialState { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/Chatbar.tsx type ChatbarProps (line 27) | interface ChatbarProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/components/ChatFolders.tsx type Props (line 11) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/components/ChatbarSettings.tsx type ChatbarSettingsProps (line 15) | interface ChatbarSettingsProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/components/ClearConversations.tsx type Props (line 8) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/components/Conversation.tsx type Props (line 24) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Chatbar/components/Conversations.tsx type Props (line 5) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Folder/Folder.tsx type Props (line 25) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Markdown/AgentThink.tsx type AgentThinkProps (line 75) | interface AgentThinkProps { type AgentThinkStepProps (line 170) | interface AgentThinkStepProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Markdown/CodeBlock.tsx type Props (line 14) | interface Props { constant VERY_LARGE_CONTENT_THRESHOLD (line 21) | const VERY_LARGE_CONTENT_THRESHOLD = 50000; constant CONTENT_STABLE_DELAY_MS (line 23) | const CONTENT_STABLE_DELAY_MS = 500; FILE: ui/packages/nemo-agent-toolkit-ui/components/Markdown/CustomIncidents.tsx constant INITIAL_VISIBLE_COUNT (line 16) | const INITIAL_VISIBLE_COUNT = 3; constant INCREMENT_COUNT (line 17) | const INCREMENT_COUNT = 3; type CVMetadata (line 19) | interface CVMetadata { type ClipInformation (line 25) | interface ClipInformation { type AlertDetails (line 34) | interface AlertDetails { type Incident (line 40) | interface Incident { type IncidentsData (line 46) | interface IncidentsData { type CustomIncidentsProps (line 51) | interface CustomIncidentsProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Markdown/Image.tsx type ImageProps (line 8) | interface ImageProps extends React.ImgHTMLAttributes { FILE: ui/packages/nemo-agent-toolkit-ui/components/Markdown/VideoModal.tsx type VideoModalProps (line 16) | interface VideoModalProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Mobile/Navbar.tsx type Props (line 6) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Search/Search.tsx type Props (line 6) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Settings/Import.tsx type Props (line 10) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Settings/SettingDialog.tsx type Props (line 8) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Sidebar/Sidebar.tsx type Props (line 10) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Sidebar/SidebarButton.tsx type Props (line 3) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Sidebar/SidebarInner.tsx type SidebarInnerProps (line 7) | interface SidebarInnerProps { FILE: ui/packages/nemo-agent-toolkit-ui/components/Sidebar/components/OpenCloseButton.tsx type Props (line 3) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/components/Spinner/Spinner.tsx type Props (line 3) | interface Props { FILE: ui/packages/nemo-agent-toolkit-ui/constants/constants.tsx constant APPLICATION_NAME (line 5) | const APPLICATION_NAME = 'NeMo Agent Toolkit'; constant APPLICATION_UI_NAME (line 6) | const APPLICATION_UI_NAME = 'NeMo Agent Toolkit UI'; constant SESSION_COOKIE_NAME (line 13) | const SESSION_COOKIE_NAME = 'nemo-agent-toolkit-session'; constant MAX_FILE_SIZE_BYTES (line 14) | const MAX_FILE_SIZE_BYTES = 5242880; constant HTTP_PROXY_PATH (line 20) | const HTTP_PROXY_PATH = process.env.HTTP_PUBLIC_PATH || '/api'; constant WEBSOCKET_PROXY_PATH (line 21) | const WEBSOCKET_PROXY_PATH = process.env.WS_PUBLIC_PATH || '/ws'; constant WEBSOCKET_BACKEND_PATH (line 22) | const WEBSOCKET_BACKEND_PATH = '/websocket'; constant CHAT_STREAM (line 28) | const CHAT_STREAM = '/chat/stream'; constant CHAT (line 29) | const CHAT = '/chat'; constant GENERATE_STREAM (line 30) | const GENERATE_STREAM = '/generate/stream'; constant GENERATE (line 31) | const GENERATE = '/generate'; constant CA_RAG_INIT (line 32) | const CA_RAG_INIT = '/init'; constant CHAT_CA_RAG (line 33) | const CHAT_CA_RAG = '/call'; constant UPDATE_DATA_STREAM (line 34) | const UPDATE_DATA_STREAM = '/update-data-stream'; constant MCP_CLIENT_TOOL_LIST (line 35) | const MCP_CLIENT_TOOL_LIST = '/mcp/client/tool/list'; constant FEEDBACK (line 36) | const FEEDBACK = '/feedback'; constant CORE_ROUTES (line 42) | const CORE_ROUTES = { constant EXTENDED_ROUTES (line 50) | const EXTENDED_ROUTES = { constant CORE_ROUTE_OPTIONS (line 61) | const CORE_ROUTE_OPTIONS = [ constant DEFAULT_CORE_ROUTE (line 72) | const DEFAULT_CORE_ROUTE = CHAT_STREAM; constant ALLOWED_PATHS (line 78) | const ALLOWED_PATHS = [ constant HTTP_METHOD_GET (line 87) | const HTTP_METHOD_GET = 'GET'; constant HTTP_METHOD_POST (line 88) | const HTTP_METHOD_POST = 'POST'; constant HTTP_METHOD_PUT (line 89) | const HTTP_METHOD_PUT = 'PUT'; constant HTTP_METHOD_DELETE (line 90) | const HTTP_METHOD_DELETE = 'DELETE'; constant HTTP_METHOD_OPTIONS (line 91) | const HTTP_METHOD_OPTIONS = 'OPTIONS'; constant HTTP_HEADER_CONTENT_TYPE (line 97) | const HTTP_HEADER_CONTENT_TYPE = 'Content-Type'; constant HTTP_HEADER_AUTHORIZATION (line 98) | const HTTP_HEADER_AUTHORIZATION = 'Authorization'; constant HTTP_HEADER_CONVERSATION_ID (line 99) | const HTTP_HEADER_CONVERSATION_ID = 'Conversation-Id'; constant HTTP_HEADER_TIMEZONE (line 100) | const HTTP_HEADER_TIMEZONE = 'X-Timezone'; constant HTTP_HEADER_USER_MESSAGE_ID (line 101) | const HTTP_HEADER_USER_MESSAGE_ID = 'User-Message-ID'; constant CORS_METHODS (line 107) | const CORS_METHODS = [ constant CORS_HEADERS (line 115) | const CORS_HEADERS = [ constant CORS_ORIGIN (line 123) | const CORS_ORIGIN = process.env.CORS_ORIGIN || 'http://localhost:3000'; FILE: ui/packages/nemo-agent-toolkit-ui/hooks/useCreateReducer.ts type FieldNames (line 4) | type FieldNames = { type ActionType (line 9) | type ActionType = type Action (line 15) | type Action = FILE: ui/packages/nemo-agent-toolkit-ui/jest.setup.js method constructor (line 6) | constructor() {} method disconnect (line 7) | disconnect() {} method observe (line 8) | observe() {} method unobserve (line 9) | unobserve() {} method constructor (line 14) | constructor() {} method disconnect (line 15) | disconnect() {} method observe (line 16) | observe() {} method unobserve (line 17) | unobserve() {} method encode (line 71) | encode(string) { method decode (line 77) | decode(bytes, options = {}) { FILE: ui/packages/nemo-agent-toolkit-ui/lib-src/contexts/RuntimeConfigContext.tsx type RuntimeConfig (line 13) | interface RuntimeConfig { function getStorageKey (line 26) | function getStorageKey(baseKey: string, prefix?: string | null): string { type RuntimeConfigProviderProps (line 32) | interface RuntimeConfigProviderProps { function RuntimeConfigProvider (line 37) | function RuntimeConfigProvider({ value, children }: RuntimeConfigProvide... function useRuntimeConfig (line 45) | function useRuntimeConfig(): RuntimeConfig | undefined { function useWorkflowName (line 50) | function useWorkflowName(): string { function useRightMenuOpenDefault (line 57) | function useRightMenuOpenDefault(): boolean { FILE: ui/packages/nemo-agent-toolkit-ui/lib-src/index.d.ts type VideoModalProps (line 5) | interface VideoModalProps { type ChatSidebarControlHandlers (line 15) | interface ChatSidebarControlHandlers { type NemoAgentToolkitAppProps (line 31) | interface NemoAgentToolkitAppProps { type HomeContextProps (line 66) | interface HomeContextProps { type RuntimeConfig (line 70) | interface RuntimeConfig { type RuntimeConfigProviderProps (line 76) | interface RuntimeConfigProviderProps { type HomeInitialState (line 85) | interface HomeInitialState { type Conversation (line 92) | interface Conversation { type Message (line 96) | interface Message { type ChatBody (line 100) | interface ChatBody { type FolderInterface (line 104) | interface FolderInterface { type FolderType (line 108) | type FolderType = string; type KeyValuePair (line 110) | interface KeyValuePair { type FileUploadResult (line 122) | interface FileUploadResult { FILE: ui/packages/nemo-agent-toolkit-ui/middleware.ts function middleware (line 5) | function middleware(req: NextRequest) { FILE: ui/packages/nemo-agent-toolkit-ui/next.config.js method webpack (line 17) | webpack(config, { isServer, dev }) { method redirects (line 25) | async redirects() { FILE: ui/packages/nemo-agent-toolkit-ui/pages/_app.tsx function App (line 12) | function App({ Component, pageProps }: AppProps<{}>) { FILE: ui/packages/nemo-agent-toolkit-ui/pages/_document.tsx type Props (line 6) | type Props = DocumentProps & { function Document (line 10) | function Document(props: Props) { FILE: ui/packages/nemo-agent-toolkit-ui/pages/api/chat.ts type CustomAgentParams (line 18) | type CustomAgentParams = Record; function buildGeneratePayload (line 20) | function buildGeneratePayload(messages: any[], customAgentParams?: Custo... function buildOpenAIChatPayload (line 31) | function buildOpenAIChatPayload(messages: any[], customAgentParams?: Cus... function processGenerate (line 47) | async function processGenerate(response: Response): Promise { function processChat (line 64) | async function processChat(response: Response): Promise { function processGenerateStream (line 83) | async function processGenerateStream(response: Response, encoder: TextEn... function processChatStream (line 175) | async function processChatStream(response: Response, encoder: TextEncode... FILE: ui/packages/nemo-agent-toolkit-ui/pages/api/home/home.context.tsx type HomeContextProps (line 11) | interface HomeContextProps { FILE: ui/packages/nemo-agent-toolkit-ui/pages/api/home/home.state.tsx type HomeInitialState (line 8) | interface HomeInitialState { FILE: ui/packages/nemo-agent-toolkit-ui/pages/api/home/home.tsx type ChatSidebarControlHandlers (line 37) | interface ChatSidebarControlHandlers { type NemoAgentToolkitAppProps (line 53) | interface NemoAgentToolkitAppProps { FILE: ui/packages/nemo-agent-toolkit-ui/proxy/request-transformers.js function parseOptionalParams (line 12) | function parseOptionalParams(paramsString) { function buildGenerateStreamPayload (line 47) | function buildGenerateStreamPayload(message) { function buildGeneratePayload (line 60) | function buildGeneratePayload(message) { function buildChatPayload (line 75) | function buildChatPayload(messages, useChatHistory, optionalParams) { function buildChatStreamPayload (line 114) | function buildChatStreamPayload(messages, useChatHistory, optionalParams) { FILE: ui/packages/nemo-agent-toolkit-ui/proxy/response-processors.js function processIntermediateData (line 21) | function processIntermediateData(line, res) { function processObservabilityTrace (line 48) | function processObservabilityTrace(line, res) { function processCommonLineTypes (line 68) | function processCommonLineTypes(line, res) { function processRemainingBuffer (line 90) | function processRemainingBuffer(buffer, res) { function processChatStream (line 102) | async function processChatStream(backendRes, res) { function processChat (line 168) | async function processChat(backendRes, res) { function processGenerateStream (line 205) | async function processGenerateStream(backendRes, res) { function processGenerate (line 268) | async function processGenerate(backendRes, res) { function processCaRag (line 294) | async function processCaRag(backendRes, res) { FILE: ui/packages/nemo-agent-toolkit-ui/types/chat.ts type Message (line 1) | interface Message { type Role (line 13) | type Role = 'assistant' | 'user' | 'agent' | 'system'; type CustomAgentParams (line 16) | type CustomAgentParams = Record; type ChatBody (line 18) | interface ChatBody { type Conversation (line 26) | interface Conversation { type WebSocketMessageBase (line 35) | interface WebSocketMessageBase { type SystemResponseMessage (line 43) | interface SystemResponseMessage extends WebSocketMessageBase { type SystemIntermediateMessage (line 51) | interface SystemIntermediateMessage extends WebSocketMessageBase { type SystemInteractionMessage (line 58) | interface SystemInteractionMessage extends WebSocketMessageBase { type ErrorMessage (line 68) | interface ErrorMessage extends WebSocketMessageBase { type WebSocketMessage (line 73) | type WebSocketMessage = FILE: ui/packages/nemo-agent-toolkit-ui/types/data.ts type KeyValuePair (line 1) | interface KeyValuePair { FILE: ui/packages/nemo-agent-toolkit-ui/types/env.ts type ProcessEnv (line 1) | interface ProcessEnv {} FILE: ui/packages/nemo-agent-toolkit-ui/types/error.ts type ErrorMessage (line 1) | interface ErrorMessage { FILE: ui/packages/nemo-agent-toolkit-ui/types/export.ts type SupportedExportFormats (line 5) | type SupportedExportFormats = type LatestExportFormat (line 10) | type LatestExportFormat = ExportFormatV4; type ConversationV1 (line 13) | interface ConversationV1 { type ExportFormatV1 (line 19) | type ExportFormatV1 = ConversationV1[]; type ChatFolder (line 22) | interface ChatFolder { type ExportFormatV2 (line 27) | interface ExportFormatV2 { type ExportFormatV3 (line 33) | interface ExportFormatV3 { type ExportFormatV4 (line 39) | interface ExportFormatV4 { FILE: ui/packages/nemo-agent-toolkit-ui/types/folder.ts type FolderInterface (line 1) | interface FolderInterface { type FolderType (line 7) | type FolderType = 'chat' | 'prompt'; FILE: ui/packages/nemo-agent-toolkit-ui/types/prompt.ts type Prompt (line 1) | interface Prompt { FILE: ui/packages/nemo-agent-toolkit-ui/types/settings.ts type Settings (line 1) | interface Settings { FILE: ui/packages/nemo-agent-toolkit-ui/types/storage.ts type LocalStorage (line 6) | interface LocalStorage { FILE: ui/packages/nemo-agent-toolkit-ui/types/websocket.ts type WebSocketMessageBase (line 7) | interface WebSocketMessageBase { type SystemResponseStatus (line 16) | type SystemResponseStatus = 'in_progress' | 'complete'; type SystemResponseMessage (line 18) | interface SystemResponseMessage extends WebSocketMessageBase { type SystemIntermediateMessage (line 27) | interface SystemIntermediateMessage extends WebSocketMessageBase { type SystemInteractionMessage (line 38) | interface SystemInteractionMessage extends WebSocketMessageBase { type ErrorMessage (line 50) | interface ErrorMessage extends WebSocketMessageBase { type WebSocketInbound (line 59) | type WebSocketInbound = type IntermediateStep (line 66) | interface IntermediateStep { function isSystemResponseMessage (line 76) | function isSystemResponseMessage(message: any): message is SystemRespons... function isSystemResponseInProgress (line 80) | function isSystemResponseInProgress(message: any): message is SystemResp... function isSystemResponseComplete (line 87) | function isSystemResponseComplete(message: any): message is SystemRespon... function isSystemIntermediateMessage (line 94) | function isSystemIntermediateMessage(message: any): message is SystemInt... function isSystemInteractionMessage (line 98) | function isSystemInteractionMessage(message: any): message is SystemInte... function isErrorMessage (line 102) | function isErrorMessage(message: any): message is ErrorMessage { function isOAuthConsentMessage (line 106) | function isOAuthConsentMessage(message: any): message is SystemInteracti... function validateConversationId (line 116) | function validateConversationId(message: any): boolean { function validateWebSocketMessage (line 131) | function validateWebSocketMessage(message: any): message is WebSocketInb... function validateWebSocketMessageWithConversationId (line 151) | function validateWebSocketMessageWithConversationId(message: any): messa... function extractOAuthUrl (line 172) | function extractOAuthUrl(message: SystemInteractionMessage): string | nu... function shouldAppendResponseContent (line 188) | function shouldAppendResponseContent(message: WebSocketInbound): boolean { FILE: ui/packages/nemo-agent-toolkit-ui/utils/app/codeblock.ts type languageMap (line 1) | interface languageMap { FILE: ui/packages/nemo-agent-toolkit-ui/utils/app/helper.ts type IntermediateStep (line 132) | interface IntermediateStep { FILE: ui/packages/nemo-agent-toolkit-ui/utils/app/importExport.ts function isExportFormatV1 (line 17) | function isExportFormatV1(obj: any): obj is ExportFormatV1 { function isExportFormatV2 (line 21) | function isExportFormatV2(obj: any): obj is ExportFormatV2 { function isExportFormatV3 (line 25) | function isExportFormatV3(obj: any): obj is ExportFormatV3 { function isExportFormatV4 (line 29) | function isExportFormatV4(obj: any): obj is ExportFormatV4 { function cleanData (line 35) | function cleanData(data: SupportedExportFormats): LatestExportFormat { function currentDate (line 69) | function currentDate() { FILE: ui/packages/nemo-agent-toolkit-ui/utils/app/settings.ts constant STORAGE_KEY (line 4) | const STORAGE_KEY = 'settings'; FILE: ui/packages/nemo-agent-toolkit-ui/utils/chatTransform.ts function shouldAppendResponse (line 19) | function shouldAppendResponse(message: WebSocketInbound): boolean { function appendAssistantText (line 38) | function appendAssistantText(previousContent: string, newText: string): ... function mergeIntermediateSteps (line 70) | function mergeIntermediateSteps( function applyMessageUpdate (line 91) | function applyMessageUpdate( function createAssistantMessage (line 119) | function createAssistantMessage( function updateAssistantMessage (line 142) | function updateAssistantMessage( function shouldRenderAssistantMessage (line 159) | function shouldRenderAssistantMessage(message: Message): boolean { function extractConversationContent (line 174) | function extractConversationContent(conversation: Conversation): string { FILE: ui/packages/nemo-agent-toolkit-ui/utils/data/throttle.ts function throttle (line 1) | function throttle any>( FILE: ui/packages/nemo-agent-toolkit-ui/utils/media/validation.ts function isValidMediaURL (line 6) | function isValidMediaURL(url: string): boolean { FILE: ui/packages/nemo-agent-toolkit-ui/utils/security/import-validation.ts function validateImportData (line 11) | function validateImportData(rawJson: string): SupportedExportFormats | n... FILE: ui/packages/nemo-agent-toolkit-ui/utils/security/oauth-validation.ts function isValidConsentPromptURL (line 6) | function isValidConsentPromptURL(raw: string): boolean { FILE: ui/packages/nemo-agent-toolkit-ui/utils/security/url-validation.js function validateProxyHttpPath (line 26) | function validateProxyHttpPath(pathname) { function validateProxyWebSocketPath (line 90) | function validateProxyWebSocketPath(pathname) { function validateBackendUrl (line 110) | function validateBackendUrl(url) { FILE: ui/packages/nemo-agent-toolkit-ui/utils/server/apiWrapper.ts type ApiWrapperOptions (line 3) | interface ApiWrapperOptions { function createApiWrapper (line 16) | function createApiWrapper( function createChatApiWrapper (line 89) | function createChatApiWrapper(edgeHandler: (request: Request) => Promise... FILE: ui/packages/nemo-agent-toolkit-ui/utils/shared/videoUpload.ts type AgentUploadUrlResponse (line 9) | interface AgentUploadUrlResponse { type FileUploadResult (line 16) | interface FileUploadResult { function getUploadUrl (line 29) | async function getUploadUrl( function uploadFile (line 66) | async function uploadFile( FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/jest.setup.js method constructor (line 7) | constructor() {} method disconnect (line 8) | disconnect() {} method observe (line 9) | observe() {} method unobserve (line 10) | unobserve() {} method constructor (line 15) | constructor() {} method disconnect (line 16) | disconnect() {} method observe (line 17) | observe() {} method unobserve (line 18) | unobserve() {} method encode (line 72) | encode(string) { method decode (line 78) | decode(bytes, options = {}) { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/AlertsComponent.tsx constant FILTER_COLORS (line 33) | const FILTER_COLORS = { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/AlertsSidebarControls.tsx type AlertsSidebarControlsProps (line 11) | interface AlertsSidebarControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/AlertsTable.tsx type AlertsTableProps (line 35) | interface AlertsTableProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/AutoRefreshControl.tsx type AutoRefreshControlProps (line 30) | interface AutoRefreshControlProps { constant PRESETS (line 41) | const PRESETS = [ FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/CustomTimeInput.tsx type CustomTimeInputProps (line 31) | interface CustomTimeInputProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/FilterControls.tsx type FilterControlsProps (line 27) | interface FilterControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/FilterTag.tsx type FilterTagProps (line 24) | interface FilterTagProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/MetadataSection.tsx type MetadataSectionProps (line 26) | interface MetadataSectionProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/ThumbnailButton.tsx type ThumbnailButtonProps (line 13) | interface ThumbnailButtonProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/components/TimeFormatSwitch.tsx type TimeFormat (line 8) | type TimeFormat = 'local' | 'utc'; type TimeFormatSwitchProps (line 10) | interface TimeFormatSwitchProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/hooks/useAlerts.ts type UseAlertsOptions (line 17) | interface UseAlertsOptions { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/hooks/useAutoRefresh.ts type UseAutoRefreshOptions (line 16) | interface UseAutoRefreshOptions { type UseAutoRefreshReturn (line 26) | interface UseAutoRefreshReturn { constant STORAGE_KEY_INTERVAL (line 35) | const STORAGE_KEY_INTERVAL = 'alertAutoRefreshInterval'; constant STORAGE_KEY_ENABLED (line 36) | const STORAGE_KEY_ENABLED = 'alertAutoRefreshEnabled'; FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/hooks/useFilters.ts type UniqueValuesState (line 29) | interface UniqueValuesState { type UseFiltersOptions (line 53) | interface UseFiltersOptions { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/hooks/useTimeWindow.ts type UseTimeWindowOptions (line 13) | interface UseTimeWindowOptions { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/server.ts constant DEFAULT_ALERT_REPORT_PROMPT_TEMPLATE (line 23) | const DEFAULT_ALERT_REPORT_PROMPT_TEMPLATE = "Generate a report for inci... constant MDX_WEB_API_URL (line 26) | const MDX_WEB_API_URL = env('NEXT_PUBLIC_MDX_WEB_API_URL') || process?.e... constant VST_API_URL (line 27) | const VST_API_URL = env('NEXT_PUBLIC_VST_API_URL') || process?.env?.NEXT... constant ALERTS_TAB_DEFAULT_TIME_WINDOW_IN_MINUTES (line 28) | const ALERTS_TAB_DEFAULT_TIME_WINDOW_IN_MINUTES = env('NEXT_PUBLIC_ALERT... constant ALERTS_TAB_DEFAULT_AUTO_REFRESH_IN_MILLISECONDS (line 29) | const ALERTS_TAB_DEFAULT_AUTO_REFRESH_IN_MILLISECONDS = env('NEXT_PUBLIC... constant ALERTS_TAB_VERIFIED_FLAG_DEFAULT (line 30) | const ALERTS_TAB_VERIFIED_FLAG_DEFAULT = env('NEXT_PUBLIC_ALERTS_TAB_VER... constant ALERTS_TAB_MAX_RESULT_SIZE (line 31) | const ALERTS_TAB_MAX_RESULT_SIZE = env('NEXT_PUBLIC_ALERTS_TAB_MAX_RESUL... constant ALERTS_TAB_ALERT_REPORT_PROMPT_TEMPLATE (line 32) | const ALERTS_TAB_ALERT_REPORT_PROMPT_TEMPLATE = env('NEXT_PUBLIC_ALERTS_... constant ALERTS_TAB_MAX_SEARCH_TIME_LIMIT (line 33) | const ALERTS_TAB_MAX_SEARCH_TIME_LIMIT = env('NEXT_PUBLIC_ALERTS_TAB_MAX... constant ALERTS_TAB_MEDIA_WITH_OBJECTS_BBOX (line 34) | const ALERTS_TAB_MEDIA_WITH_OBJECTS_BBOX = env('NEXT_PUBLIC_ALERTS_TAB_M... function fetchAlertsData (line 37) | async function fetchAlertsData() { FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/types.ts type AlertData (line 13) | interface AlertData { type AlertsSidebarControlHandlers (line 27) | interface AlertsSidebarControlHandlers { type AlertsComponentProps (line 43) | interface AlertsComponentProps { type VideoModalState (line 68) | interface VideoModalState { type FilterState (line 77) | interface FilterState { type FilterType (line 88) | type FilterType = keyof FilterState; constant VLM_VERDICT (line 93) | const VLM_VERDICT = { type VlmVerdict (line 104) | type VlmVerdict = typeof VLM_VERDICT[keyof typeof VLM_VERDICT]; FILE: ui/packages/nv-metropolis-bp-vss-ui/alerts/lib-src/utils/timeUtils.ts type TimeParseResult (line 17) | interface TimeParseResult { constant TIME_CONVERSIONS (line 25) | const TIME_CONVERSIONS = { function parseTimeString (line 98) | function parseTimeString(input: string): TimeParseResult { constant TIME_WINDOW_OPTIONS (line 186) | const TIME_WINDOW_OPTIONS = [ type AlertTimeFormat (line 240) | type AlertTimeFormat = 'local' | 'utc'; constant LOCALE_OPTS (line 242) | const LOCALE_OPTS = { FILE: ui/packages/nv-metropolis-bp-vss-ui/all/lib-src/index.d.ts type AlertsComponentProps (line 3) | type AlertsComponentProps = any; type AlertsSidebarControlHandlers (line 4) | type AlertsSidebarControlHandlers = any; type SearchComponentProps (line 8) | type SearchComponentProps = any; type SearchSidebarControlHandlers (line 9) | type SearchSidebarControlHandlers = any; type DashboardComponentProps (line 13) | type DashboardComponentProps = any; type DashboardSidebarControlHandlers (line 14) | type DashboardSidebarControlHandlers = any; type MapComponentProps (line 18) | type MapComponentProps = any; type MapSidebarControlHandlers (line 19) | type MapSidebarControlHandlers = any; type VideoManagementComponentProps (line 23) | type VideoManagementComponentProps = any; type VideoManagementSidebarControlHandlers (line 24) | type VideoManagementSidebarControlHandlers = any; type VideoManagementData (line 25) | type VideoManagementData = any; FILE: ui/packages/nv-metropolis-bp-vss-ui/dashboard/lib-src/DashboardComponent.tsx type SavedDashboard (line 21) | interface SavedDashboard { type DashboardData (line 29) | interface DashboardData { type DashboardSidebarControlHandlers (line 34) | interface DashboardSidebarControlHandlers { type DashboardComponentProps (line 38) | interface DashboardComponentProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/dashboard/lib-src/components/DashboardSidebarControls.tsx type DashboardSidebarControlsProps (line 4) | interface DashboardSidebarControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/dashboard/lib-src/server.ts constant KIBANA_BASE_URL (line 7) | const KIBANA_BASE_URL = env('NEXT_PUBLIC_DASHBOARD_TAB_KIBANA_BASE_URL')... constant FETCH_TIMEOUT_MS (line 9) | const FETCH_TIMEOUT_MS = 5000; function fetchKibanaDashboards (line 11) | async function fetchKibanaDashboards() { function fetchDashboardData (line 44) | async function fetchDashboardData() { FILE: ui/packages/nv-metropolis-bp-vss-ui/map/lib-src/MapComponent.tsx type MapData (line 21) | interface MapData { type MapSidebarControlHandlers (line 25) | interface MapSidebarControlHandlers { type MapComponentProps (line 29) | interface MapComponentProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/map/lib-src/components/MapSidebarControls.tsx type MapSidebarControlsProps (line 4) | interface MapSidebarControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/map/lib-src/server.ts constant MAP_URL (line 7) | const MAP_URL = env('NEXT_PUBLIC_MAP_URL') || process?.env?.NEXT_PUBLIC_... function fetchMapData (line 9) | async function fetchMapData() { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/__tests__/hooks/useFilter.test.ts type FilterTag (line 5) | interface FilterTag { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/jest.setup.js method constructor (line 7) | constructor() {} method disconnect (line 8) | disconnect() {} method observe (line 9) | observe() {} method unobserve (line 10) | unobserve() {} method constructor (line 15) | constructor() {} method disconnect (line 16) | disconnect() {} method observe (line 17) | observe() {} method unobserve (line 18) | unobserve() {} method encode (line 72) | encode(string) { method decode (line 78) | decode(bytes, options = {}) { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/components/FilterPopover.tsx constant FILTER_POPOVER_Z_INDEX (line 8) | const FILTER_POPOVER_Z_INDEX = 10600; type FilterDialogProps (line 10) | interface FilterDialogProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/components/SearchHeader.tsx type SearchHeaderProps (line 10) | interface SearchHeaderProps { constant SOURCE_TYPE_OPTIONS (line 27) | const SOURCE_TYPE_OPTIONS = [ constant SOURCE_TYPE_STORAGE_KEY (line 32) | const SOURCE_TYPE_STORAGE_KEY = 'vss_search_sourceType'; constant VALID_SOURCE_TYPES (line 33) | const VALID_SOURCE_TYPES = new Set(['video_file', 'rtsp']); function getOnlyOneSourceType (line 36) | function getOnlyOneSourceType(streams: StreamInfo[]): 'video_file' | 'rt... function getStoredSourceType (line 44) | function getStoredSourceType(): string | null { constant SEARCH_HEADER_SPIN_STYLE_ID (line 53) | const SEARCH_HEADER_SPIN_STYLE_ID = 'search-header-spin-keyframes'; FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/components/SearchSidebarControls.tsx type SearchSidebarControlsProps (line 11) | interface SearchSidebarControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/components/VideoSearchList.tsx type VideoSearchListProps (line 8) | interface VideoSearchListProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/hooks/useFilter.ts constant DEFAULT_TOP_K (line 7) | const DEFAULT_TOP_K = 10; FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/hooks/useSearch.ts type UseSearchOptions (line 19) | interface UseSearchOptions { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/hooks/useVideoModal.ts type VideoModalState (line 21) | interface VideoModalState { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/server.ts constant VST_API_URL (line 22) | const VST_API_URL = env('NEXT_PUBLIC_VST_API_URL') || process?.env?.NEXT... constant AGENT_API_URL_BASE (line 23) | const AGENT_API_URL_BASE = env('NEXT_PUBLIC_AGENT_API_URL_BASE') || proc... constant SEARCH_TAB_MEDIA_WITH_OBJECTS_BBOX (line 24) | const SEARCH_TAB_MEDIA_WITH_OBJECTS_BBOX = env('NEXT_PUBLIC_SEARCH_TAB_M... function fetchSearchData (line 26) | async function fetchSearchData() { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/types.ts type SearchData (line 13) | interface SearchData { type SearchSidebarControlHandlers (line 27) | interface SearchSidebarControlHandlers { type SearchComponentProps (line 36) | interface SearchComponentProps { type SearchParams (line 60) | interface SearchParams { type FilterTag (line 71) | interface FilterTag { type FilterProps (line 77) | interface FilterProps { type StreamInfo (line 81) | interface StreamInfo { FILE: ui/packages/nv-metropolis-bp-vss-ui/search/lib-src/utils/agentResponseParser.ts type SearchApiShape (line 9) | interface SearchApiShape { function extractSearchResultsFromAgentResponse (line 18) | function extractSearchResultsFromAgentResponse(responseText: string): Se... FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/__tests__/components/StreamsGrid.test.tsx function makeStream (line 19) | function makeStream(overrides: Partial & { name: string; str... function renderStreamsGrid (line 46) | function renderStreamsGrid(props: Partial... FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/__tests__/utils/filterStreams.test.ts function makeStream (line 13) | function makeStream(overrides: Partial & { name: string; str... FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/jest.setup.js method constructor (line 7) | constructor() {} method disconnect (line 8) | disconnect() {} method observe (line 9) | observe() {} method unobserve (line 10) | unobserve() {} method constructor (line 15) | constructor() {} method disconnect (line 16) | disconnect() {} method observe (line 17) | observe() {} method unobserve (line 18) | unobserve() {} method encode (line 72) | encode(string) { method decode (line 78) | decode(bytes, options = {}) { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/AddRtspDialog.tsx type AddRtspDialogProps (line 6) | interface AddRtspDialogProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/AgentUploadDialog.tsx constant INPUT_CLASS (line 5) | const INPUT_CLASS = constant POPUP_OVERLAY_CLASS (line 7) | const POPUP_OVERLAY_CLASS = 'fixed inset-0 z-50 flex items-center justif... constant POPUP_CONTAINER_CLASS (line 8) | const POPUP_CONTAINER_CLASS = 'mx-4 w-full max-w-xl rounded-lg bg-white ... type AgentUploadFileItem (line 10) | interface AgentUploadFileItem { type AgentUploadDialogProps (line 17) | interface AgentUploadDialogProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/EmptyState.tsx type EmptyStateProps (line 4) | interface EmptyStateProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/LoadingState.tsx type LoadingStateProps (line 4) | type LoadingStateProps = Record; FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/StreamCard.tsx type StreamCardProps (line 9) | interface StreamCardProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/StreamsGrid.tsx constant CARD_MIN_WIDTH (line 7) | const CARD_MIN_WIDTH = 240; constant GRID_GAP (line 8) | const GRID_GAP = 16; constant TARGET_ROWS (line 9) | const TARGET_ROWS = 4; type StreamsGridProps (line 11) | interface StreamsGridProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/Toolbar.tsx type ToolbarProps (line 4) | interface ToolbarProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/UploadProgressPanel.tsx type UploadProgressPanelProps (line 10) | interface UploadProgressPanelProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/components/VideoManagementSidebarControls.tsx type VideoManagementSidebarControlsProps (line 4) | interface VideoManagementSidebarControlsProps { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/constants.ts constant NUM_PARALLEL_FILE_UPLOADS (line 3) | const NUM_PARALLEL_FILE_UPLOADS = 3; constant NUM_PARALLEL_GET_PICTURES (line 6) | const NUM_PARALLEL_GET_PICTURES = 3; constant NUM_STREAMS_PER_PAGE (line 9) | const NUM_STREAMS_PER_PAGE = 24; FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/hooks/useStorageTimelines.ts type UseStorageTimelinesOptions (line 6) | interface UseStorageTimelinesOptions { type TimelineRange (line 10) | interface TimelineRange { type UseStorageTimelinesResult (line 15) | interface UseStorageTimelinesResult { function useStorageTimelines (line 24) | function useStorageTimelines({ vstApiUrl }: UseStorageTimelinesOptions =... FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/hooks/useStreams.ts type UseStreamsOptions (line 7) | interface UseStreamsOptions { type UseStreamsResult (line 11) | interface UseStreamsResult { function useStreams (line 18) | function useStreams({ vstApiUrl }: UseStreamsOptions = {}): UseStreamsRe... FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/rtspStream.ts type AddRtspStreamRequest (line 14) | interface AddRtspStreamRequest { type AddRtspStreamResult (line 22) | interface AddRtspStreamResult { type DeleteRtspStreamResult (line 36) | interface DeleteRtspStreamResult { function addRtspStream (line 48) | async function addRtspStream( function deleteRtspStream (line 91) | async function deleteRtspStream( FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/server.ts constant VST_API_URL (line 4) | const VST_API_URL = env('NEXT_PUBLIC_VST_API_URL') || process?.env?.NEXT... constant AGENT_API_URL_BASE (line 5) | const AGENT_API_URL_BASE = env('NEXT_PUBLIC_AGENT_API_URL_BASE') || proc... constant CHAT_UPLOAD_FILE_CONFIG_TEMPLATE_JSON (line 6) | const CHAT_UPLOAD_FILE_CONFIG_TEMPLATE_JSON = env('NEXT_PUBLIC_CHAT_UPLO... constant ENABLE_ADD_RTSP_BUTTON (line 7) | const ENABLE_ADD_RTSP_BUTTON = env('NEXT_PUBLIC_VIDEO_MANAGEMENT_TAB_ADD... constant ENABLE_VIDEO_UPLOAD (line 8) | const ENABLE_VIDEO_UPLOAD = env('NEXT_PUBLIC_VIDEO_MANAGEMENT_VIDEO_UPLO... function fetchVideoManagementData (line 10) | async function fetchVideoManagementData() { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/types.ts type StreamMetadata (line 2) | interface StreamMetadata { type StreamInfo (line 10) | interface StreamInfo { type StreamsApiResponse (line 20) | type StreamsApiResponse = Array(task: () => Promise): Promise { method processNext (line 211) | private processNext(): void { method fetch (line 221) | async fetch(url: string): Promise { function fetchPictureWithQueue (line 244) | async function fetchPictureWithQueue(url: string): Promise { FILE: ui/packages/nv-metropolis-bp-vss-ui/video-management/lib-src/videoDelete.ts type DeleteVideoResult (line 9) | interface DeleteVideoResult { function deleteVideo (line 23) | async function deleteVideo(