roark-analytics 5.2.0__tar.gz → 5.3.0__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.
- roark_analytics-5.3.0/.release-please-manifest.json +3 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/CHANGELOG.md +12 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/PKG-INFO +1 -1
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/api.md +2 -1
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/pyproject.toml +1 -1
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_version.py +1 -1
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation.py +158 -1
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/__init__.py +2 -0
- roark_analytics-5.3.0/src/roark_analytics/types/simulation_mock_tool_params.py +34 -0
- roark_analytics-5.3.0/src/roark_analytics/types/simulation_mock_tool_response.py +41 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation.py +94 -1
- roark_analytics-5.2.0/.release-please-manifest.json +0 -3
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/.gitignore +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/CONTRIBUTING.md +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/LICENSE +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/README.md +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/SECURITY.md +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/bin/check-release-environment +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/bin/publish-pypi +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/examples/.keep +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/noxfile.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/release-please-config.json +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/requirements-dev.lock +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/requirements.lock +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/__init__.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_base_client.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_client.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_compat.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_constants.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_exceptions.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_files.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_models.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_qs.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_resource.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_streaming.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_types.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/__init__.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_compat.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_datetime_parse.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_json.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_logs.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_proxy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_reflection.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_resources_proxy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_streams.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_sync.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_transform.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_typing.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_utils.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/lib/.keep +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/py.typed +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/__init__.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_config.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_endpoint.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_prompt.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/autoimprove_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/benchmark.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/call.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/config.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/customer_flow.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/customer_flow_edge_case.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/health.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/http_request_definition.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric_collection_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric_policy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric_variant.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_environment.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_persona.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_run_plan.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_run_plan_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_template.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/webhook.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_build_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_build_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_delete_staging_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_promote_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_resolve_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_resolve_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_config_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_endpoint_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_prompt_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_prompt_list_versions_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_prompt_list_versions_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_prompt_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_prompt_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/agent_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_answer_question_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_answer_question_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_cancel_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_dismiss_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_promote_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_send_guidance_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_job_send_guidance_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_log_entry.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/autoimprove_log_entry_param.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_get_leaderboard_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_get_leaderboard_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_get_target_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_get_target_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_metrics_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_metrics_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_suites_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_target_history_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_target_history_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_target_score_samples_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/benchmark_list_target_score_samples_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/bundle.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/bundle_param.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_append_tool_invocations_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_append_tool_invocations_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_get_transcript_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_get_transcript_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_list_metrics_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_list_metrics_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/call_list_sentiment_runs_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_apply_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_apply_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_diff_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_diff_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_flow_step.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/config_flow_step_param.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_duplicate_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_duplicate_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_add_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_add_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_promote_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_promote_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_remove_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_remove_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_edge_case_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_replace_graph_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_replace_graph_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_update_happy_path_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_update_happy_path_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/customer_flow_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/flow_step.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/flow_step_param.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/health_get_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/http_request_definition_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/managed_agent_config_revision.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/managed_agent_config_revision_param.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_collection_job_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_collection_job_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_collection_job_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_collection_job_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_collection_job_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_create_definition_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_create_definition_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_list_definitions_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_list_definitions_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_policy_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_update_definition_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_update_definition_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_delete_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_get_by_id_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/metric_variant_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_environment_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_job_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_job_lookup_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_job_lookup_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_persona_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_cancel_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_start_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_job_start_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_update_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_plan_update_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_run_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/simulation_template_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_create_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_create_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_delete_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_get_by_id_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_list_params.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/types/webhook_list_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/__init__.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/__init__.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_agent.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_agent_config.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_agent_endpoint.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_agent_prompt.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_autoimprove_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_benchmark.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_call.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_config.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_customer_flow.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_customer_flow_edge_case.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_health.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_http_request_definition.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_metric.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_metric_collection_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_metric_policy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_metric_variant.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_environment.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_persona.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_run_plan.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_run_plan_job.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_simulation_template.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/api_resources/test_webhook.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/conftest.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/sample_file.txt +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_client.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_deepcopy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_extract_files.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_files.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_models.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_qs.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_required_args.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_response.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_streaming.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_transform.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_utils/test_json.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_utils/test_proxy.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/test_utils/test_typing.py +0 -0
- {roark_analytics-5.2.0 → roark_analytics-5.3.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.3.0](https://github.com/roarkhq/sdk-roark-analytics-python/compare/v5.2.0...v5.3.0) (2026-09-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **api:** api update ([#584](https://github.com/roarkhq/sdk-roark-analytics-python/issues/584)) ([cee63db](https://github.com/roarkhq/sdk-roark-analytics-python/commit/cee63db9b32260aca49bb546d679c827d92f3f08))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Chores
|
|
12
|
+
|
|
13
|
+
* fold next into main ([b9e8037](https://github.com/roarkhq/sdk-roark-analytics-python/commit/b9e8037016700697f50dd87c97ce06f16f866a1e))
|
|
14
|
+
|
|
3
15
|
## [5.2.0](https://github.com/roarkhq/sdk-roark-analytics-python/compare/v5.1.0...v5.2.0) (2026-09-23)
|
|
4
16
|
|
|
5
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: roark_analytics
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.3.0
|
|
4
4
|
Summary: The official Python library for the roark API
|
|
5
5
|
Project-URL: Homepage, https://github.com/roarkhq/sdk-roark-analytics-python
|
|
6
6
|
Project-URL: Repository, https://github.com/roarkhq/sdk-roark-analytics-python
|
|
@@ -121,11 +121,12 @@ Methods:
|
|
|
121
121
|
Types:
|
|
122
122
|
|
|
123
123
|
```python
|
|
124
|
-
from roark_analytics.types import SimulationRunResponse
|
|
124
|
+
from roark_analytics.types import SimulationMockToolResponse, SimulationRunResponse
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Methods:
|
|
128
128
|
|
|
129
|
+
- <code title="post /v1/simulation/tool-mock">client.simulation.<a href="./src/roark_analytics/resources/simulation.py">mock_tool</a>(\*\*<a href="src/roark_analytics/types/simulation_mock_tool_params.py">params</a>) -> <a href="./src/roark_analytics/types/simulation_mock_tool_response.py">SimulationMockToolResponse</a></code>
|
|
129
130
|
- <code title="post /v1/simulation/run">client.simulation.<a href="./src/roark_analytics/resources/simulation.py">run</a>(\*\*<a href="src/roark_analytics/types/simulation_run_params.py">params</a>) -> <a href="./src/roark_analytics/types/simulation_run_response.py">SimulationRunResponse</a></code>
|
|
130
131
|
|
|
131
132
|
# SimulationJob
|
|
@@ -7,7 +7,7 @@ from typing_extensions import Literal
|
|
|
7
7
|
|
|
8
8
|
import httpx
|
|
9
9
|
|
|
10
|
-
from ..types import simulation_run_params
|
|
10
|
+
from ..types import simulation_run_params, simulation_mock_tool_params
|
|
11
11
|
from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
|
|
12
12
|
from .._utils import required_args, maybe_transform, async_maybe_transform
|
|
13
13
|
from .._compat import cached_property
|
|
@@ -20,6 +20,7 @@ from .._response import (
|
|
|
20
20
|
)
|
|
21
21
|
from .._base_client import make_request_options
|
|
22
22
|
from ..types.simulation_run_response import SimulationRunResponse
|
|
23
|
+
from ..types.simulation_mock_tool_response import SimulationMockToolResponse
|
|
23
24
|
|
|
24
25
|
__all__ = ["SimulationResource", "AsyncSimulationResource"]
|
|
25
26
|
|
|
@@ -44,6 +45,78 @@ class SimulationResource(SyncAPIResource):
|
|
|
44
45
|
"""
|
|
45
46
|
return SimulationResourceWithStreamingResponse(self)
|
|
46
47
|
|
|
48
|
+
def mock_tool(
|
|
49
|
+
self,
|
|
50
|
+
*,
|
|
51
|
+
simulation_job_id: str,
|
|
52
|
+
tool_name: str,
|
|
53
|
+
arguments: Dict[str, object] | Omit = omit,
|
|
54
|
+
session_id: str | Omit = omit,
|
|
55
|
+
tool_description: str | Omit = omit,
|
|
56
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
57
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
58
|
+
extra_headers: Headers | None = None,
|
|
59
|
+
extra_query: Query | None = None,
|
|
60
|
+
extra_body: Body | None = None,
|
|
61
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
62
|
+
) -> SimulationMockToolResponse:
|
|
63
|
+
"""The server half of the tool guard for code-first agents.
|
|
64
|
+
|
|
65
|
+
When a guarded tool
|
|
66
|
+
fires during a Roark test call, send the invocation here instead of executing
|
|
67
|
+
it: Roark answers with a simulated backend response that is valid JSON, shaped
|
|
68
|
+
by the tool contract you pass, consistent with the test scenario, and consistent
|
|
69
|
+
with earlier mocked responses in the same call. Real callers are never affected:
|
|
70
|
+
the guard only diverts when the agent-config resolve response identified the
|
|
71
|
+
session as a Roark simulation, and this endpoint independently re-validates the
|
|
72
|
+
simulation before answering. Failure contract for your wrapper: `404` means the
|
|
73
|
+
simulation id is unknown to this project (treat the session as real). `409`
|
|
74
|
+
means the simulation has already ended (stale session state: do NOT execute the
|
|
75
|
+
real tool; return your static fallback). `5xx` means generation failed (return
|
|
76
|
+
your static fallback). Identical retries (same tool, same arguments) within a
|
|
77
|
+
few minutes return the stored response, so double-fired handlers stay
|
|
78
|
+
consistent.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
simulation_job_id: The simulation this session belongs to, from the agent-config resolve response
|
|
82
|
+
(`simulationJobId`). Roark re-validates it against the live simulation before
|
|
83
|
+
answering.
|
|
84
|
+
|
|
85
|
+
tool_name: The tool the agent invoked.
|
|
86
|
+
|
|
87
|
+
arguments: The arguments the agent called the tool with, verbatim.
|
|
88
|
+
|
|
89
|
+
session_id: Your session or room identifier, echoed back in logs for correlation.
|
|
90
|
+
|
|
91
|
+
tool_description: The tool's contract: its description and, ideally, its parameter and return
|
|
92
|
+
shape. The more contract you pass, the more faithful the simulated response.
|
|
93
|
+
|
|
94
|
+
extra_headers: Send extra headers
|
|
95
|
+
|
|
96
|
+
extra_query: Add additional query parameters to the request
|
|
97
|
+
|
|
98
|
+
extra_body: Add additional JSON properties to the request
|
|
99
|
+
|
|
100
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
101
|
+
"""
|
|
102
|
+
return self._post(
|
|
103
|
+
"/v1/simulation/tool-mock",
|
|
104
|
+
body=maybe_transform(
|
|
105
|
+
{
|
|
106
|
+
"simulation_job_id": simulation_job_id,
|
|
107
|
+
"tool_name": tool_name,
|
|
108
|
+
"arguments": arguments,
|
|
109
|
+
"session_id": session_id,
|
|
110
|
+
"tool_description": tool_description,
|
|
111
|
+
},
|
|
112
|
+
simulation_mock_tool_params.SimulationMockToolParams,
|
|
113
|
+
),
|
|
114
|
+
options=make_request_options(
|
|
115
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
116
|
+
),
|
|
117
|
+
cast_to=SimulationMockToolResponse,
|
|
118
|
+
)
|
|
119
|
+
|
|
47
120
|
@overload
|
|
48
121
|
def run(
|
|
49
122
|
self,
|
|
@@ -377,6 +450,78 @@ class AsyncSimulationResource(AsyncAPIResource):
|
|
|
377
450
|
"""
|
|
378
451
|
return AsyncSimulationResourceWithStreamingResponse(self)
|
|
379
452
|
|
|
453
|
+
async def mock_tool(
|
|
454
|
+
self,
|
|
455
|
+
*,
|
|
456
|
+
simulation_job_id: str,
|
|
457
|
+
tool_name: str,
|
|
458
|
+
arguments: Dict[str, object] | Omit = omit,
|
|
459
|
+
session_id: str | Omit = omit,
|
|
460
|
+
tool_description: str | Omit = omit,
|
|
461
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
462
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
463
|
+
extra_headers: Headers | None = None,
|
|
464
|
+
extra_query: Query | None = None,
|
|
465
|
+
extra_body: Body | None = None,
|
|
466
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
467
|
+
) -> SimulationMockToolResponse:
|
|
468
|
+
"""The server half of the tool guard for code-first agents.
|
|
469
|
+
|
|
470
|
+
When a guarded tool
|
|
471
|
+
fires during a Roark test call, send the invocation here instead of executing
|
|
472
|
+
it: Roark answers with a simulated backend response that is valid JSON, shaped
|
|
473
|
+
by the tool contract you pass, consistent with the test scenario, and consistent
|
|
474
|
+
with earlier mocked responses in the same call. Real callers are never affected:
|
|
475
|
+
the guard only diverts when the agent-config resolve response identified the
|
|
476
|
+
session as a Roark simulation, and this endpoint independently re-validates the
|
|
477
|
+
simulation before answering. Failure contract for your wrapper: `404` means the
|
|
478
|
+
simulation id is unknown to this project (treat the session as real). `409`
|
|
479
|
+
means the simulation has already ended (stale session state: do NOT execute the
|
|
480
|
+
real tool; return your static fallback). `5xx` means generation failed (return
|
|
481
|
+
your static fallback). Identical retries (same tool, same arguments) within a
|
|
482
|
+
few minutes return the stored response, so double-fired handlers stay
|
|
483
|
+
consistent.
|
|
484
|
+
|
|
485
|
+
Args:
|
|
486
|
+
simulation_job_id: The simulation this session belongs to, from the agent-config resolve response
|
|
487
|
+
(`simulationJobId`). Roark re-validates it against the live simulation before
|
|
488
|
+
answering.
|
|
489
|
+
|
|
490
|
+
tool_name: The tool the agent invoked.
|
|
491
|
+
|
|
492
|
+
arguments: The arguments the agent called the tool with, verbatim.
|
|
493
|
+
|
|
494
|
+
session_id: Your session or room identifier, echoed back in logs for correlation.
|
|
495
|
+
|
|
496
|
+
tool_description: The tool's contract: its description and, ideally, its parameter and return
|
|
497
|
+
shape. The more contract you pass, the more faithful the simulated response.
|
|
498
|
+
|
|
499
|
+
extra_headers: Send extra headers
|
|
500
|
+
|
|
501
|
+
extra_query: Add additional query parameters to the request
|
|
502
|
+
|
|
503
|
+
extra_body: Add additional JSON properties to the request
|
|
504
|
+
|
|
505
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
506
|
+
"""
|
|
507
|
+
return await self._post(
|
|
508
|
+
"/v1/simulation/tool-mock",
|
|
509
|
+
body=await async_maybe_transform(
|
|
510
|
+
{
|
|
511
|
+
"simulation_job_id": simulation_job_id,
|
|
512
|
+
"tool_name": tool_name,
|
|
513
|
+
"arguments": arguments,
|
|
514
|
+
"session_id": session_id,
|
|
515
|
+
"tool_description": tool_description,
|
|
516
|
+
},
|
|
517
|
+
simulation_mock_tool_params.SimulationMockToolParams,
|
|
518
|
+
),
|
|
519
|
+
options=make_request_options(
|
|
520
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
521
|
+
),
|
|
522
|
+
cast_to=SimulationMockToolResponse,
|
|
523
|
+
)
|
|
524
|
+
|
|
380
525
|
@overload
|
|
381
526
|
async def run(
|
|
382
527
|
self,
|
|
@@ -694,6 +839,9 @@ class SimulationResourceWithRawResponse:
|
|
|
694
839
|
def __init__(self, simulation: SimulationResource) -> None:
|
|
695
840
|
self._simulation = simulation
|
|
696
841
|
|
|
842
|
+
self.mock_tool = to_raw_response_wrapper(
|
|
843
|
+
simulation.mock_tool,
|
|
844
|
+
)
|
|
697
845
|
self.run = to_raw_response_wrapper(
|
|
698
846
|
simulation.run,
|
|
699
847
|
)
|
|
@@ -703,6 +851,9 @@ class AsyncSimulationResourceWithRawResponse:
|
|
|
703
851
|
def __init__(self, simulation: AsyncSimulationResource) -> None:
|
|
704
852
|
self._simulation = simulation
|
|
705
853
|
|
|
854
|
+
self.mock_tool = async_to_raw_response_wrapper(
|
|
855
|
+
simulation.mock_tool,
|
|
856
|
+
)
|
|
706
857
|
self.run = async_to_raw_response_wrapper(
|
|
707
858
|
simulation.run,
|
|
708
859
|
)
|
|
@@ -712,6 +863,9 @@ class SimulationResourceWithStreamingResponse:
|
|
|
712
863
|
def __init__(self, simulation: SimulationResource) -> None:
|
|
713
864
|
self._simulation = simulation
|
|
714
865
|
|
|
866
|
+
self.mock_tool = to_streamed_response_wrapper(
|
|
867
|
+
simulation.mock_tool,
|
|
868
|
+
)
|
|
715
869
|
self.run = to_streamed_response_wrapper(
|
|
716
870
|
simulation.run,
|
|
717
871
|
)
|
|
@@ -721,6 +875,9 @@ class AsyncSimulationResourceWithStreamingResponse:
|
|
|
721
875
|
def __init__(self, simulation: AsyncSimulationResource) -> None:
|
|
722
876
|
self._simulation = simulation
|
|
723
877
|
|
|
878
|
+
self.mock_tool = async_to_streamed_response_wrapper(
|
|
879
|
+
simulation.mock_tool,
|
|
880
|
+
)
|
|
724
881
|
self.run = async_to_streamed_response_wrapper(
|
|
725
882
|
simulation.run,
|
|
726
883
|
)
|
|
@@ -55,6 +55,7 @@ from .customer_flow_update_params import CustomerFlowUpdateParams as CustomerFlo
|
|
|
55
55
|
from .metric_policy_create_params import MetricPolicyCreateParams as MetricPolicyCreateParams
|
|
56
56
|
from .metric_policy_list_response import MetricPolicyListResponse as MetricPolicyListResponse
|
|
57
57
|
from .metric_policy_update_params import MetricPolicyUpdateParams as MetricPolicyUpdateParams
|
|
58
|
+
from .simulation_mock_tool_params import SimulationMockToolParams as SimulationMockToolParams
|
|
58
59
|
from .agent_config_update_response import AgentConfigUpdateResponse as AgentConfigUpdateResponse
|
|
59
60
|
from .agent_endpoint_create_params import AgentEndpointCreateParams as AgentEndpointCreateParams
|
|
60
61
|
from .agent_endpoint_list_response import AgentEndpointListResponse as AgentEndpointListResponse
|
|
@@ -79,6 +80,7 @@ from .managed_agent_config_revision import ManagedAgentConfigRevision as Managed
|
|
|
79
80
|
from .metric_policy_create_response import MetricPolicyCreateResponse as MetricPolicyCreateResponse
|
|
80
81
|
from .metric_policy_delete_response import MetricPolicyDeleteResponse as MetricPolicyDeleteResponse
|
|
81
82
|
from .metric_policy_update_response import MetricPolicyUpdateResponse as MetricPolicyUpdateResponse
|
|
83
|
+
from .simulation_mock_tool_response import SimulationMockToolResponse as SimulationMockToolResponse
|
|
82
84
|
from .agent_endpoint_create_response import AgentEndpointCreateResponse as AgentEndpointCreateResponse
|
|
83
85
|
from .agent_endpoint_update_response import AgentEndpointUpdateResponse as AgentEndpointUpdateResponse
|
|
84
86
|
from .benchmark_list_suites_response import BenchmarkListSuitesResponse as BenchmarkListSuitesResponse
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Dict
|
|
6
|
+
from typing_extensions import Required, Annotated, TypedDict
|
|
7
|
+
|
|
8
|
+
from .._utils import PropertyInfo
|
|
9
|
+
|
|
10
|
+
__all__ = ["SimulationMockToolParams"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SimulationMockToolParams(TypedDict, total=False):
|
|
14
|
+
simulation_job_id: Required[Annotated[str, PropertyInfo(alias="simulationJobId")]]
|
|
15
|
+
"""
|
|
16
|
+
The simulation this session belongs to, from the agent-config resolve response
|
|
17
|
+
(`simulationJobId`). Roark re-validates it against the live simulation before
|
|
18
|
+
answering.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
tool_name: Required[Annotated[str, PropertyInfo(alias="toolName")]]
|
|
22
|
+
"""The tool the agent invoked."""
|
|
23
|
+
|
|
24
|
+
arguments: Dict[str, object]
|
|
25
|
+
"""The arguments the agent called the tool with, verbatim."""
|
|
26
|
+
|
|
27
|
+
session_id: Annotated[str, PropertyInfo(alias="sessionId")]
|
|
28
|
+
"""Your session or room identifier, echoed back in logs for correlation."""
|
|
29
|
+
|
|
30
|
+
tool_description: Annotated[str, PropertyInfo(alias="toolDescription")]
|
|
31
|
+
"""
|
|
32
|
+
The tool's contract: its description and, ideally, its parameter and return
|
|
33
|
+
shape. The more contract you pass, the more faithful the simulated response.
|
|
34
|
+
"""
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from pydantic import Field as FieldInfo
|
|
6
|
+
|
|
7
|
+
from .._models import BaseModel
|
|
8
|
+
|
|
9
|
+
__all__ = ["SimulationMockToolResponse", "Data"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Data(BaseModel):
|
|
13
|
+
"""
|
|
14
|
+
A simulated backend response for a guarded tool during a Roark test call. The
|
|
15
|
+
real tool was not, and must not be, executed.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
reused: bool
|
|
19
|
+
"""
|
|
20
|
+
True when this exact invocation (same tool, same arguments) was answered moments
|
|
21
|
+
ago and the stored response was returned, e.g. on a retry.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
simulation_job_id: str = FieldInfo(alias="simulationJobId")
|
|
25
|
+
|
|
26
|
+
tool_name: str = FieldInfo(alias="toolName")
|
|
27
|
+
|
|
28
|
+
result: Optional[object] = None
|
|
29
|
+
"""
|
|
30
|
+
The simulated tool response: valid JSON, shaped by the tool contract, consistent
|
|
31
|
+
with the test scenario and with earlier mocked responses in the same call.
|
|
32
|
+
Return this from your tool instead of executing it.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class SimulationMockToolResponse(BaseModel):
|
|
37
|
+
data: Data
|
|
38
|
+
"""
|
|
39
|
+
A simulated backend response for a guarded tool during a Roark test call. The
|
|
40
|
+
real tool was not, and must not be, executed.
|
|
41
|
+
"""
|
|
@@ -9,7 +9,10 @@ import pytest
|
|
|
9
9
|
|
|
10
10
|
from tests.utils import assert_matches_type
|
|
11
11
|
from roark_analytics import Roark, AsyncRoark
|
|
12
|
-
from roark_analytics.types import
|
|
12
|
+
from roark_analytics.types import (
|
|
13
|
+
SimulationRunResponse,
|
|
14
|
+
SimulationMockToolResponse,
|
|
15
|
+
)
|
|
13
16
|
|
|
14
17
|
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
|
15
18
|
|
|
@@ -17,6 +20,51 @@ base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
|
|
17
20
|
class TestSimulation:
|
|
18
21
|
parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
|
|
19
22
|
|
|
23
|
+
@parametrize
|
|
24
|
+
def test_method_mock_tool(self, client: Roark) -> None:
|
|
25
|
+
simulation = client.simulation.mock_tool(
|
|
26
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
27
|
+
tool_name="book_appointment",
|
|
28
|
+
)
|
|
29
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
30
|
+
|
|
31
|
+
@parametrize
|
|
32
|
+
def test_method_mock_tool_with_all_params(self, client: Roark) -> None:
|
|
33
|
+
simulation = client.simulation.mock_tool(
|
|
34
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
35
|
+
tool_name="book_appointment",
|
|
36
|
+
arguments={"date": "2026-10-01", "time": "15:00"},
|
|
37
|
+
session_id="sessionId",
|
|
38
|
+
tool_description="Books an appointment. Args: date (YYYY-MM-DD), time (HH:MM). Returns {confirmationId, status}.",
|
|
39
|
+
)
|
|
40
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
41
|
+
|
|
42
|
+
@parametrize
|
|
43
|
+
def test_raw_response_mock_tool(self, client: Roark) -> None:
|
|
44
|
+
response = client.simulation.with_raw_response.mock_tool(
|
|
45
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
46
|
+
tool_name="book_appointment",
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert response.is_closed is True
|
|
50
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
51
|
+
simulation = response.parse()
|
|
52
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
53
|
+
|
|
54
|
+
@parametrize
|
|
55
|
+
def test_streaming_response_mock_tool(self, client: Roark) -> None:
|
|
56
|
+
with client.simulation.with_streaming_response.mock_tool(
|
|
57
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
58
|
+
tool_name="book_appointment",
|
|
59
|
+
) as response:
|
|
60
|
+
assert not response.is_closed
|
|
61
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
62
|
+
|
|
63
|
+
simulation = response.parse()
|
|
64
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
65
|
+
|
|
66
|
+
assert cast(Any, response.is_closed) is True
|
|
67
|
+
|
|
20
68
|
@parametrize
|
|
21
69
|
def test_method_run_overload_1(self, client: Roark) -> None:
|
|
22
70
|
simulation = client.simulation.run(
|
|
@@ -228,6 +276,51 @@ class TestAsyncSimulation:
|
|
|
228
276
|
"async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
|
|
229
277
|
)
|
|
230
278
|
|
|
279
|
+
@parametrize
|
|
280
|
+
async def test_method_mock_tool(self, async_client: AsyncRoark) -> None:
|
|
281
|
+
simulation = await async_client.simulation.mock_tool(
|
|
282
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
283
|
+
tool_name="book_appointment",
|
|
284
|
+
)
|
|
285
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
286
|
+
|
|
287
|
+
@parametrize
|
|
288
|
+
async def test_method_mock_tool_with_all_params(self, async_client: AsyncRoark) -> None:
|
|
289
|
+
simulation = await async_client.simulation.mock_tool(
|
|
290
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
291
|
+
tool_name="book_appointment",
|
|
292
|
+
arguments={"date": "2026-10-01", "time": "15:00"},
|
|
293
|
+
session_id="sessionId",
|
|
294
|
+
tool_description="Books an appointment. Args: date (YYYY-MM-DD), time (HH:MM). Returns {confirmationId, status}.",
|
|
295
|
+
)
|
|
296
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
297
|
+
|
|
298
|
+
@parametrize
|
|
299
|
+
async def test_raw_response_mock_tool(self, async_client: AsyncRoark) -> None:
|
|
300
|
+
response = await async_client.simulation.with_raw_response.mock_tool(
|
|
301
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
302
|
+
tool_name="book_appointment",
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
assert response.is_closed is True
|
|
306
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
307
|
+
simulation = await response.parse()
|
|
308
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
309
|
+
|
|
310
|
+
@parametrize
|
|
311
|
+
async def test_streaming_response_mock_tool(self, async_client: AsyncRoark) -> None:
|
|
312
|
+
async with async_client.simulation.with_streaming_response.mock_tool(
|
|
313
|
+
simulation_job_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
|
|
314
|
+
tool_name="book_appointment",
|
|
315
|
+
) as response:
|
|
316
|
+
assert not response.is_closed
|
|
317
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
318
|
+
|
|
319
|
+
simulation = await response.parse()
|
|
320
|
+
assert_matches_type(SimulationMockToolResponse, simulation, path=["response"])
|
|
321
|
+
|
|
322
|
+
assert cast(Any, response.is_closed) is True
|
|
323
|
+
|
|
231
324
|
@parametrize
|
|
232
325
|
async def test_method_run_overload_1(self, async_client: AsyncRoark) -> None:
|
|
233
326
|
simulation = await async_client.simulation.run(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_datetime_parse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/_utils/_resources_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_config.py
RENAMED
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_endpoint.py
RENAMED
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/agent_prompt.py
RENAMED
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/autoimprove_job.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/customer_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric_policy.py
RENAMED
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/metric_variant.py
RENAMED
|
File without changes
|
|
File without changes
|
{roark_analytics-5.2.0 → roark_analytics-5.3.0}/src/roark_analytics/resources/simulation_job.py
RENAMED
|
File without changes
|