langwatch-scenario 0.7.8__tar.gz → 0.7.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/PKG-INFO +4 -3
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/README.md +1 -1
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/PKG-INFO +4 -3
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/SOURCES.txt +1 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/requires.txt +1 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/pyproject.toml +4 -6
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/event_alert_message_logger.py +20 -29
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/event_bus.py +4 -1
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/event_reporter.py +8 -3
- langwatch_scenario-0.7.10/scenario/_events/utils.py +113 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_utils/__init__.py +2 -2
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_utils/ids.py +12 -12
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/config/scenario.py +8 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/judge_agent.py +4 -3
- langwatch_scenario-0.7.10/scenario/py.typed +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/pytest_plugin.py +5 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/scenario_executor.py +118 -60
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/scenario_state.py +2 -1
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/types.py +54 -2
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/user_simulator_agent.py +3 -2
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_scenario.py +8 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_scenario_agent.py +3 -4
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_scenario_executor.py +24 -1
- langwatch_scenario-0.7.8/scenario/_events/utils.py +0 -97
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/dependency_links.txt +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/entry_points.txt +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/langwatch_scenario.egg-info/top_level.txt +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_error_messages.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/events.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_events/messages.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/README.md +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/delete_api_annotations_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/delete_api_prompts_by_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/delete_api_scenario_events.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_annotations.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_annotations_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_annotations_trace_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_dataset_by_slug_or_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_prompts.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_prompts_by_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_prompts_by_id_versions.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/get_api_trace_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/patch_api_annotations_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_annotations_trace_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_dataset_by_slug_entries.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_prompts.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_prompts_by_id_versions.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_scenario_events.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_trace_id_share.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/post_api_trace_id_unshare.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/default/put_api_prompts_by_id.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/traces/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/api/traces/post_api_trace_search.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/client.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/errors.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/annotation.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/dataset_post_entries.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/dataset_post_entries_entries_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_annotations_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_prompts_by_id_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_scenario_events_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_scenario_events_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_scenario_events_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/delete_api_scenario_events_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/evaluation.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/evaluation_timestamps.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_200_data_item_entry.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_422.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_dataset_by_slug_or_id_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_response_format_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_response_format_type_0_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_response_format_type_0_json_schema_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_200_response_format_type_0_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_demonstrations_rows_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_inputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_inputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_outputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_outputs_item_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_outputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_200_config_data_prompting_technique.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_by_id_versions_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_response_format_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_response_format_type_0_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_response_format_type_0_json_schema_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_200_item_response_format_type_0_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_prompts_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_error_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_evaluations_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_evaluations_item_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_evaluations_item_timestamps.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_input.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_metadata.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_metrics.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_output.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_error_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_input.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_input_value_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_metrics.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_output.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_output_value_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_params.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_spans_item_timestamps.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/get_api_trace_id_response_200_timestamps.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/input_.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/metadata.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/metrics.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/output.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/pagination.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/patch_api_annotations_id_body.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/patch_api_annotations_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_annotations_trace_id_body.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_body.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations_columns_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations_columns_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_demonstrations_rows_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_inputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_inputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_outputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_outputs_item_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_outputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_body_config_data_prompting_technique.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_columns_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_demonstrations_rows_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_inputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_inputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_outputs_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_outputs_item_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_outputs_item_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_200_config_data_prompting_technique.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_by_id_versions_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_messages_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_messages_item_role.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_response_format_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_response_format_type_0_json_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_response_format_type_0_json_schema_schema.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_200_response_format_type_0_type.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_prompts_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_0_metadata.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_1.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_1_results_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_1_results_type_0_verdict.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_1_status.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_0.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_1.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2_tool_calls_item.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_2_tool_calls_item_function.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_3.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_body_type_2_messages_item_type_4.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_response_201.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_scenario_events_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_trace_id_share_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/post_api_trace_id_unshare_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_body.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_200.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_400.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_400_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_401.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_401_error.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_404.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/put_api_prompts_by_id_response_500.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/search_request.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/search_request_filters.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/search_response.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/timestamps.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/models/trace.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/py.typed +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/lang_watch_api_client/types.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_generated/langwatch_api_client/pyproject.toml +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_utils/message_conversion.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/_utils/utils.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/agent_adapter.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/cache.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/config/__init__.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/config/langwatch.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/config/model.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/scenario/script.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/setup.cfg +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/setup.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_event_reporter.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_model_config.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_scenario_event_bus.py +0 -0
- {langwatch_scenario-0.7.8 → langwatch_scenario-0.7.10}/tests/test_scenario_executor_events.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: langwatch-scenario
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.10
|
4
4
|
Summary: The end-to-end agent testing library
|
5
5
|
Author-email: LangWatch Team <support@langwatch.ai>
|
6
6
|
License: MIT
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.9
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
|
-
Requires-Python: >=3.
|
17
|
+
Requires-Python: >=3.10
|
18
18
|
Description-Content-Type: text/markdown
|
19
19
|
Requires-Dist: pytest>=8.1.1
|
20
20
|
Requires-Dist: litellm>=1.49.0
|
@@ -31,6 +31,7 @@ Requires-Dist: httpx>=0.27.0
|
|
31
31
|
Requires-Dist: rx>=3.2.0
|
32
32
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
33
33
|
Requires-Dist: pydantic-settings>=2.9.1
|
34
|
+
Requires-Dist: langwatch>=0.2.19
|
34
35
|
Provides-Extra: dev
|
35
36
|
Requires-Dist: black; extra == "dev"
|
36
37
|
Requires-Dist: isort; extra == "dev"
|
@@ -457,7 +458,7 @@ This will cache any function call you decorate when running the tests and make t
|
|
457
458
|
While optional, we strongly recommend setting stable identifiers for your scenarios, sets, and batches for better organization and tracking in LangWatch.
|
458
459
|
|
459
460
|
- **set_id**: Groups related scenarios into a test suite. This corresponds to the "Simulation Set" in the UI.
|
460
|
-
- **
|
461
|
+
- **SCENARIO_BATCH_RUN_ID**: Env variable that groups all scenarios that were run together in a single execution (e.g., a single CI job). This is automatically generated but can be overridden.
|
461
462
|
|
462
463
|
```python
|
463
464
|
import os
|
@@ -413,7 +413,7 @@ This will cache any function call you decorate when running the tests and make t
|
|
413
413
|
While optional, we strongly recommend setting stable identifiers for your scenarios, sets, and batches for better organization and tracking in LangWatch.
|
414
414
|
|
415
415
|
- **set_id**: Groups related scenarios into a test suite. This corresponds to the "Simulation Set" in the UI.
|
416
|
-
- **
|
416
|
+
- **SCENARIO_BATCH_RUN_ID**: Env variable that groups all scenarios that were run together in a single execution (e.g., a single CI job). This is automatically generated but can be overridden.
|
417
417
|
|
418
418
|
```python
|
419
419
|
import os
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: langwatch-scenario
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.10
|
4
4
|
Summary: The end-to-end agent testing library
|
5
5
|
Author-email: LangWatch Team <support@langwatch.ai>
|
6
6
|
License: MIT
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.9
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
|
-
Requires-Python: >=3.
|
17
|
+
Requires-Python: >=3.10
|
18
18
|
Description-Content-Type: text/markdown
|
19
19
|
Requires-Dist: pytest>=8.1.1
|
20
20
|
Requires-Dist: litellm>=1.49.0
|
@@ -31,6 +31,7 @@ Requires-Dist: httpx>=0.27.0
|
|
31
31
|
Requires-Dist: rx>=3.2.0
|
32
32
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
33
33
|
Requires-Dist: pydantic-settings>=2.9.1
|
34
|
+
Requires-Dist: langwatch>=0.2.19
|
34
35
|
Provides-Extra: dev
|
35
36
|
Requires-Dist: black; extra == "dev"
|
36
37
|
Requires-Dist: isort; extra == "dev"
|
@@ -457,7 +458,7 @@ This will cache any function call you decorate when running the tests and make t
|
|
457
458
|
While optional, we strongly recommend setting stable identifiers for your scenarios, sets, and batches for better organization and tracking in LangWatch.
|
458
459
|
|
459
460
|
- **set_id**: Groups related scenarios into a test suite. This corresponds to the "Simulation Set" in the UI.
|
460
|
-
- **
|
461
|
+
- **SCENARIO_BATCH_RUN_ID**: Env variable that groups all scenarios that were run together in a single execution (e.g., a single CI job). This is automatically generated but can be overridden.
|
461
462
|
|
462
463
|
```python
|
463
464
|
import os
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "langwatch-scenario"
|
7
|
-
version = "0.7.
|
7
|
+
version = "0.7.10"
|
8
8
|
description = "The end-to-end agent testing library"
|
9
9
|
readme = "README.md"
|
10
10
|
authors = [{ name = "LangWatch Team", email = "support@langwatch.ai" }]
|
11
11
|
license = { text = "MIT" }
|
12
|
-
requires-python = ">=3.
|
12
|
+
requires-python = ">=3.10"
|
13
13
|
classifiers = [
|
14
14
|
"Development Status :: 4 - Beta",
|
15
15
|
"Intended Audience :: Developers",
|
@@ -36,6 +36,7 @@ dependencies = [
|
|
36
36
|
"rx>=3.2.0",
|
37
37
|
"python-dateutil>=2.9.0.post0",
|
38
38
|
"pydantic-settings>=2.9.1",
|
39
|
+
"langwatch>=0.2.19",
|
39
40
|
]
|
40
41
|
|
41
42
|
[project.optional-dependencies]
|
@@ -67,14 +68,11 @@ markers = ["agent_test: marks tests as agent scenario tests"]
|
|
67
68
|
|
68
69
|
[dependency-groups]
|
69
70
|
dev = [
|
70
|
-
|
71
71
|
"function-schema>=0.4.5",
|
72
72
|
"pre-commit>=4.2.0",
|
73
73
|
"pydantic-ai>=0.0.52",
|
74
|
-
"pyright>=1.1.
|
74
|
+
"pyright>=1.1.405",
|
75
75
|
"pytest-asyncio-concurrent>=0.4.1",
|
76
76
|
"pdoc3>=0.11.6",
|
77
77
|
"respx>=0.22.0",
|
78
78
|
]
|
79
|
-
|
80
|
-
|
@@ -1,5 +1,8 @@
|
|
1
1
|
import os
|
2
|
+
import webbrowser
|
2
3
|
from typing import Set
|
4
|
+
|
5
|
+
from ..config.scenario import ScenarioConfig
|
3
6
|
from .._utils.ids import get_batch_run_id
|
4
7
|
|
5
8
|
|
@@ -12,6 +15,7 @@ class EventAlertMessageLogger:
|
|
12
15
|
"""
|
13
16
|
|
14
17
|
_shown_batch_ids: Set[str] = set()
|
18
|
+
_shown_watch_urls: Set[str] = set()
|
15
19
|
|
16
20
|
def handle_greeting(self) -> None:
|
17
21
|
"""
|
@@ -37,6 +41,10 @@ class EventAlertMessageLogger:
|
|
37
41
|
if self._is_greeting_disabled():
|
38
42
|
return
|
39
43
|
|
44
|
+
if set_url in EventAlertMessageLogger._shown_watch_urls:
|
45
|
+
return
|
46
|
+
|
47
|
+
EventAlertMessageLogger._shown_watch_urls.add(set_url)
|
40
48
|
self._display_watch_message(set_url)
|
41
49
|
|
42
50
|
def _is_greeting_disabled(self) -> bool:
|
@@ -49,35 +57,13 @@ class EventAlertMessageLogger:
|
|
49
57
|
|
50
58
|
if not os.getenv("LANGWATCH_API_KEY"):
|
51
59
|
print(f"\n{separator}")
|
52
|
-
print("
|
60
|
+
print("🎭 Running Scenario Tests")
|
53
61
|
print(f"{separator}")
|
54
|
-
print("➡️ API key not configured")
|
62
|
+
print("➡️ LangWatch API key not configured")
|
55
63
|
print(" Simulations will only output final results")
|
56
64
|
print("")
|
57
65
|
print("💡 To visualize conversations in real time:")
|
58
66
|
print(" • Set LANGWATCH_API_KEY environment variable")
|
59
|
-
print(" • Or configure apiKey in scenario.config.js")
|
60
|
-
print("")
|
61
|
-
print(f"📦 Batch Run ID: {batch_run_id}")
|
62
|
-
print("")
|
63
|
-
print("🔇 To disable these messages:")
|
64
|
-
print(" • Set SCENARIO_DISABLE_SIMULATION_REPORT_INFO=true")
|
65
|
-
print(f"{separator}\n")
|
66
|
-
else:
|
67
|
-
endpoint = os.getenv("LANGWATCH_ENDPOINT", "https://app.langwatch.ai")
|
68
|
-
api_key = os.getenv("LANGWATCH_API_KEY", "")
|
69
|
-
|
70
|
-
print(f"\n{separator}")
|
71
|
-
print("🚀 LangWatch Simulation Reporting")
|
72
|
-
print(f"{separator}")
|
73
|
-
print("✅ Simulation reporting enabled")
|
74
|
-
print(f" Endpoint: {endpoint}")
|
75
|
-
print(f" API Key: {'Configured' if api_key else 'Not configured'}")
|
76
|
-
print("")
|
77
|
-
print(f"📦 Batch Run ID: {batch_run_id}")
|
78
|
-
print("")
|
79
|
-
print("🔇 To disable these messages:")
|
80
|
-
print(" • Set SCENARIO_DISABLE_SIMULATION_REPORT_INFO=true")
|
81
67
|
print(f"{separator}\n")
|
82
68
|
|
83
69
|
def _display_watch_message(self, set_url: str) -> None:
|
@@ -86,10 +72,15 @@ class EventAlertMessageLogger:
|
|
86
72
|
batch_url = f"{set_url}/{get_batch_run_id()}"
|
87
73
|
|
88
74
|
print(f"\n{separator}")
|
89
|
-
print("
|
75
|
+
print("🎭 Running Scenario Tests")
|
90
76
|
print(f"{separator}")
|
91
|
-
print("
|
92
|
-
print(f" Scenario Set: {set_url}")
|
93
|
-
print(f" Batch Run: {batch_url}")
|
94
|
-
print("")
|
77
|
+
print(f"Follow it live: {batch_url}")
|
95
78
|
print(f"{separator}\n")
|
79
|
+
|
80
|
+
config = ScenarioConfig.default_config
|
81
|
+
if config and not config.headless:
|
82
|
+
# Open the URL in the default browser (cross-platform)
|
83
|
+
try:
|
84
|
+
webbrowser.open(batch_url)
|
85
|
+
except Exception:
|
86
|
+
pass
|
@@ -3,6 +3,7 @@ from typing import Optional, Any, Dict
|
|
3
3
|
from .events import ScenarioEvent
|
4
4
|
from .event_reporter import EventReporter
|
5
5
|
from .event_alert_message_logger import EventAlertMessageLogger
|
6
|
+
from ..config.scenario import ScenarioConfig
|
6
7
|
|
7
8
|
import asyncio
|
8
9
|
import queue
|
@@ -35,7 +36,9 @@ class ScenarioEventBus:
|
|
35
36
|
"""
|
36
37
|
|
37
38
|
def __init__(
|
38
|
-
self,
|
39
|
+
self,
|
40
|
+
event_reporter: Optional[EventReporter] = None,
|
41
|
+
max_retries: int = 3,
|
39
42
|
):
|
40
43
|
"""
|
41
44
|
Initialize the event bus with optional event reporter and retry configuration.
|
@@ -3,7 +3,7 @@ import httpx
|
|
3
3
|
from typing import Optional, Dict, Any
|
4
4
|
from .events import ScenarioEvent
|
5
5
|
from .event_alert_message_logger import EventAlertMessageLogger
|
6
|
-
from scenario.config import LangWatchSettings
|
6
|
+
from scenario.config import LangWatchSettings, ScenarioConfig
|
7
7
|
|
8
8
|
|
9
9
|
class EventReporter:
|
@@ -26,7 +26,11 @@ class EventReporter:
|
|
26
26
|
reporter = EventReporter(api_key="your-api-key")
|
27
27
|
"""
|
28
28
|
|
29
|
-
def __init__(
|
29
|
+
def __init__(
|
30
|
+
self,
|
31
|
+
endpoint: Optional[str] = None,
|
32
|
+
api_key: Optional[str] = None,
|
33
|
+
):
|
30
34
|
# Load settings from environment variables
|
31
35
|
langwatch_settings = LangWatchSettings()
|
32
36
|
|
@@ -69,6 +73,7 @@ class EventReporter:
|
|
69
73
|
"Content-Type": "application/json",
|
70
74
|
"X-Auth-Token": self.api_key,
|
71
75
|
},
|
76
|
+
timeout=httpx.Timeout(30.0),
|
72
77
|
)
|
73
78
|
self.logger.info(
|
74
79
|
f"[{event_type}] POST response status: {response.status_code} ({event.scenario_run_id})"
|
@@ -92,7 +97,7 @@ class EventReporter:
|
|
92
97
|
)
|
93
98
|
except Exception as error:
|
94
99
|
self.logger.error(
|
95
|
-
f"[{event_type}] Event POST error: {error}, event={event}, endpoint={self.endpoint}"
|
100
|
+
f"[{event_type}] Event POST error: {repr(error)}, event={event}, endpoint={self.endpoint}"
|
96
101
|
)
|
97
102
|
|
98
103
|
return result
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import warnings
|
2
|
+
|
3
|
+
from ..types import ChatCompletionMessageParamWithTrace
|
4
|
+
from .events import MessageType
|
5
|
+
from .messages import (
|
6
|
+
SystemMessage,
|
7
|
+
AssistantMessage,
|
8
|
+
UserMessage,
|
9
|
+
ToolMessage,
|
10
|
+
ToolCall,
|
11
|
+
FunctionCall,
|
12
|
+
)
|
13
|
+
from typing import List
|
14
|
+
from pksuid import PKSUID
|
15
|
+
|
16
|
+
|
17
|
+
def convert_messages_to_api_client_messages(
|
18
|
+
messages: list[ChatCompletionMessageParamWithTrace],
|
19
|
+
) -> list[MessageType]:
|
20
|
+
"""
|
21
|
+
Converts OpenAI ChatCompletionMessageParam messages to API client Message format.
|
22
|
+
|
23
|
+
This function transforms messages from OpenAI's format to the API client format
|
24
|
+
that matches the expected schema for ScenarioMessageSnapshotEvent.
|
25
|
+
|
26
|
+
Args:
|
27
|
+
messages: List of OpenAI ChatCompletionMessageParam messages
|
28
|
+
|
29
|
+
Returns:
|
30
|
+
List of API client Message objects
|
31
|
+
|
32
|
+
Raises:
|
33
|
+
ValueError: If message role is not supported or message format is invalid
|
34
|
+
"""
|
35
|
+
|
36
|
+
converted_messages: list[MessageType] = []
|
37
|
+
|
38
|
+
for i, message in enumerate(messages):
|
39
|
+
# Generate unique ID for each message
|
40
|
+
message_id = message.get("id") or str(PKSUID("scenariomsg"))
|
41
|
+
|
42
|
+
role = message.get("role")
|
43
|
+
content = message.get("content")
|
44
|
+
|
45
|
+
if role == "user":
|
46
|
+
if not content:
|
47
|
+
raise ValueError(f"User message at index {i} missing required content")
|
48
|
+
message_ = UserMessage(
|
49
|
+
id=message_id,
|
50
|
+
role="user",
|
51
|
+
content=str(content),
|
52
|
+
)
|
53
|
+
message_.additional_properties = {"trace_id": message.get("trace_id")}
|
54
|
+
converted_messages.append(message_)
|
55
|
+
elif role == "assistant":
|
56
|
+
# Handle tool calls if present
|
57
|
+
tool_calls = message.get("tool_calls")
|
58
|
+
api_tool_calls: List[ToolCall] = []
|
59
|
+
|
60
|
+
if tool_calls:
|
61
|
+
for tool_call in tool_calls:
|
62
|
+
api_tool_calls.append(
|
63
|
+
ToolCall(
|
64
|
+
id=tool_call.get("id", str(PKSUID("scenariotoolcall"))),
|
65
|
+
type_="function",
|
66
|
+
function=FunctionCall(
|
67
|
+
name=tool_call["function"].get("name", "unknown"),
|
68
|
+
arguments=tool_call["function"].get("arguments", "{}"),
|
69
|
+
),
|
70
|
+
)
|
71
|
+
)
|
72
|
+
|
73
|
+
message_ = AssistantMessage(
|
74
|
+
id=message_id,
|
75
|
+
role="assistant",
|
76
|
+
content=str(content),
|
77
|
+
tool_calls=api_tool_calls,
|
78
|
+
)
|
79
|
+
message_.additional_properties = {"trace_id": message.get("trace_id")}
|
80
|
+
converted_messages.append(message_)
|
81
|
+
elif role == "system":
|
82
|
+
if not content:
|
83
|
+
raise ValueError(
|
84
|
+
f"System message at index {i} missing required content"
|
85
|
+
)
|
86
|
+
message_ = SystemMessage(id=message_id, role="system", content=str(content))
|
87
|
+
message_.additional_properties = {"trace_id": message.get("trace_id")}
|
88
|
+
converted_messages.append(message_)
|
89
|
+
elif role == "tool":
|
90
|
+
tool_call_id = message.get("tool_call_id")
|
91
|
+
if not tool_call_id:
|
92
|
+
warnings.warn(
|
93
|
+
f"Tool message at index {i} missing required tool_call_id, skipping tool message"
|
94
|
+
)
|
95
|
+
continue
|
96
|
+
if not content:
|
97
|
+
warnings.warn(
|
98
|
+
f"Tool message at index {i} missing required content, skipping tool message"
|
99
|
+
)
|
100
|
+
continue
|
101
|
+
|
102
|
+
message_ = ToolMessage(
|
103
|
+
id=message_id,
|
104
|
+
role="tool",
|
105
|
+
content=str(content),
|
106
|
+
tool_call_id=tool_call_id,
|
107
|
+
)
|
108
|
+
message_.additional_properties = {"trace_id": message.get("trace_id")}
|
109
|
+
converted_messages.append(message_)
|
110
|
+
else:
|
111
|
+
raise ValueError(f"Unsupported message role '{role}' at index {i}")
|
112
|
+
|
113
|
+
return converted_messages
|
@@ -14,7 +14,7 @@ from .ids import (
|
|
14
14
|
generate_scenario_id,
|
15
15
|
generate_thread_id,
|
16
16
|
generate_message_id,
|
17
|
-
|
17
|
+
safe_parse_ksuid,
|
18
18
|
)
|
19
19
|
from .utils import (
|
20
20
|
SerializableAndPydanticEncoder,
|
@@ -34,7 +34,7 @@ __all__ = [
|
|
34
34
|
"generate_scenario_id",
|
35
35
|
"generate_thread_id",
|
36
36
|
"generate_message_id",
|
37
|
-
"
|
37
|
+
"safe_parse_ksuid",
|
38
38
|
"SerializableAndPydanticEncoder",
|
39
39
|
"SerializableWithStringFallback",
|
40
40
|
"print_openai_messages",
|
@@ -7,7 +7,7 @@ and scenario tracking.
|
|
7
7
|
"""
|
8
8
|
|
9
9
|
import os
|
10
|
-
import
|
10
|
+
from pksuid import PKSUID
|
11
11
|
|
12
12
|
|
13
13
|
def generate_thread_id() -> str:
|
@@ -17,7 +17,7 @@ def generate_thread_id() -> str:
|
|
17
17
|
Returns:
|
18
18
|
str: A new thread ID.
|
19
19
|
"""
|
20
|
-
return f"
|
20
|
+
return f"{PKSUID('scenariothread')}"
|
21
21
|
|
22
22
|
|
23
23
|
def generate_scenario_run_id() -> str:
|
@@ -27,7 +27,7 @@ def generate_scenario_run_id() -> str:
|
|
27
27
|
Returns:
|
28
28
|
str: A new scenario run ID.
|
29
29
|
"""
|
30
|
-
return f"
|
30
|
+
return f"{PKSUID('scenariorun')}"
|
31
31
|
|
32
32
|
|
33
33
|
def generate_scenario_id() -> str:
|
@@ -37,7 +37,7 @@ def generate_scenario_id() -> str:
|
|
37
37
|
Returns:
|
38
38
|
str: A new scenario ID.
|
39
39
|
"""
|
40
|
-
return f"
|
40
|
+
return f"{PKSUID('scenario')}"
|
41
41
|
|
42
42
|
|
43
43
|
def get_batch_run_id() -> str:
|
@@ -52,7 +52,7 @@ def get_batch_run_id() -> str:
|
|
52
52
|
batch_run_id = os.environ.get("SCENARIO_BATCH_RUN_ID")
|
53
53
|
if not batch_run_id:
|
54
54
|
# Generate new batch ID if not set
|
55
|
-
batch_run_id = f"
|
55
|
+
batch_run_id = f"{PKSUID('scenariobatch')}"
|
56
56
|
os.environ["SCENARIO_BATCH_RUN_ID"] = batch_run_id
|
57
57
|
|
58
58
|
return batch_run_id
|
@@ -65,23 +65,23 @@ def generate_message_id() -> str:
|
|
65
65
|
Returns:
|
66
66
|
str: A new message ID.
|
67
67
|
"""
|
68
|
-
return f"
|
68
|
+
return f"{PKSUID('scenariomsg')}"
|
69
69
|
|
70
70
|
|
71
|
-
def
|
71
|
+
def safe_parse_ksuid(id_str: str) -> bool:
|
72
72
|
"""
|
73
|
-
Safely parses a
|
73
|
+
Safely parses a Ksuid string.
|
74
74
|
|
75
75
|
Args:
|
76
|
-
id_str: The
|
76
|
+
id_str: The Ksuid string to parse.
|
77
77
|
|
78
78
|
Returns:
|
79
|
-
bool: True if the
|
79
|
+
bool: True if the Ksuid string is valid, false otherwise.
|
80
80
|
"""
|
81
81
|
try:
|
82
|
-
|
82
|
+
PKSUID.parse(id_str)
|
83
83
|
return True
|
84
|
-
except
|
84
|
+
except Exception:
|
85
85
|
return False
|
86
86
|
|
87
87
|
|
@@ -5,6 +5,7 @@ This module provides the main configuration class for customizing the behavior
|
|
5
5
|
of the Scenario testing framework, including execution parameters and debugging options.
|
6
6
|
"""
|
7
7
|
|
8
|
+
import os
|
8
9
|
from typing import Optional, Union, ClassVar
|
9
10
|
from pydantic import BaseModel
|
10
11
|
|
@@ -53,6 +54,11 @@ class ScenarioConfig(BaseModel):
|
|
53
54
|
verbose: Optional[Union[bool, int]] = True
|
54
55
|
cache_key: Optional[str] = None
|
55
56
|
debug: Optional[bool] = False
|
57
|
+
headless: Optional[bool] = os.getenv("SCENARIO_HEADLESS", "false").lower() not in [
|
58
|
+
"false",
|
59
|
+
"0",
|
60
|
+
"",
|
61
|
+
]
|
56
62
|
|
57
63
|
default_config: ClassVar[Optional["ScenarioConfig"]] = None
|
58
64
|
|
@@ -64,6 +70,7 @@ class ScenarioConfig(BaseModel):
|
|
64
70
|
verbose: Optional[Union[bool, int]] = None,
|
65
71
|
cache_key: Optional[str] = None,
|
66
72
|
debug: Optional[bool] = None,
|
73
|
+
headless: Optional[bool] = None,
|
67
74
|
) -> None:
|
68
75
|
"""
|
69
76
|
Set global configuration settings for all scenario executions.
|
@@ -107,6 +114,7 @@ class ScenarioConfig(BaseModel):
|
|
107
114
|
verbose=verbose,
|
108
115
|
cache_key=cache_key,
|
109
116
|
debug=debug,
|
117
|
+
headless=headless,
|
110
118
|
)
|
111
119
|
)
|
112
120
|
|
@@ -12,7 +12,8 @@ import logging
|
|
12
12
|
import re
|
13
13
|
from typing import List, Optional, cast
|
14
14
|
|
15
|
-
|
15
|
+
import litellm
|
16
|
+
from litellm import Choices
|
16
17
|
from litellm.files.main import ModelResponse
|
17
18
|
|
18
19
|
from scenario.cache import scenario_cache
|
@@ -356,7 +357,7 @@ if you don't have enough information to make a verdict, say inconclusive with ma
|
|
356
357
|
|
357
358
|
response = cast(
|
358
359
|
ModelResponse,
|
359
|
-
completion(
|
360
|
+
litellm.completion(
|
360
361
|
model=self.model,
|
361
362
|
messages=messages,
|
362
363
|
temperature=self.temperature,
|
@@ -398,7 +399,7 @@ if you don't have enough information to make a verdict, say inconclusive with ma
|
|
398
399
|
failed_criteria = [
|
399
400
|
self.criteria[idx]
|
400
401
|
for idx, criterion in enumerate(criteria.values())
|
401
|
-
if criterion == False
|
402
|
+
if criterion == False or criterion == "inconclusive"
|
402
403
|
]
|
403
404
|
|
404
405
|
# Return the appropriate ScenarioResult based on the verdict
|
File without changes
|
@@ -199,6 +199,8 @@ class ScenarioReporter:
|
|
199
199
|
# Store the original run method
|
200
200
|
original_run = ScenarioExecutor.run
|
201
201
|
|
202
|
+
def pytest_addoption(parser):
|
203
|
+
parser.addoption("--headless", action="store_true")
|
202
204
|
|
203
205
|
@pytest.hookimpl(trylast=True)
|
204
206
|
def pytest_configure(config):
|
@@ -240,6 +242,9 @@ def pytest_configure(config):
|
|
240
242
|
print(colored("\nScenario debug mode enabled (--debug).", "yellow"))
|
241
243
|
ScenarioConfig.configure(verbose=True, debug=True)
|
242
244
|
|
245
|
+
if config.getoption("--headless"):
|
246
|
+
ScenarioConfig.configure(headless=True)
|
247
|
+
|
243
248
|
# Create a global reporter instance
|
244
249
|
config._scenario_reporter = ScenarioReporter()
|
245
250
|
|