kernel 0.94.0__tar.gz → 0.95.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.
- kernel-0.95.0/.release-please-manifest.json +3 -0
- {kernel-0.94.0 → kernel-0.95.0}/CHANGELOG.md +8 -0
- {kernel-0.94.0 → kernel-0.95.0}/PKG-INFO +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/pyproject.toml +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_version.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/browser_routing/routing.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/auth/connections.py +16 -6
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browser_pools.py +4 -4
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/browsers.py +8 -8
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_create_params.py +4 -2
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_update_params.py +6 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/managed_auth.py +5 -3
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_create_params.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_create_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_list_params.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_list_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_acquire_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_create_params.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_list_params.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_retrieve_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_update_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_list_browsers_response.py +1 -1
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_browser_routing.py +17 -11
- kernel-0.94.0/.release-please-manifest.json +0 -3
- {kernel-0.94.0 → kernel-0.95.0}/.gitignore +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/CONTRIBUTING.md +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/LICENSE +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/README.md +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/SECURITY.md +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/api.md +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/bin/check-release-environment +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/bin/publish-pypi +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/examples/.keep +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/examples/browser_routing.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/examples/browser_telemetry.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/noxfile.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/release-please-config.json +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/requirements-dev.lock +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/requirements.lock +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_base_client.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_client.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_compat.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_constants.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_exceptions.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_files.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_models.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_qs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_resource.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_streaming.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_types.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_compat.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_datetime_parse.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_json.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_logs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_path.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_proxy.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_reflection.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_resources_proxy.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_streams.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_sync.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_transform.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_typing.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/_utils/_utils.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/app_framework.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/.keep +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/audit_log_download.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/lib/browser_routing/util.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/pagination.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/py.typed +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/api_keys.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/apps.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/audit_logs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/audit_logs/audit_logs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/audit_logs/export_destinations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/auth/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/auth/auth.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/auth/context.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/computer.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/logs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/playwright.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/process.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/replays.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/browsers/telemetry.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/credential_providers.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/credentials.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/deployments.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/extensions.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/invocations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/organization/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/organization/entitlements.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/organization/limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/organization/organization.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/profiles.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/projects/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/projects/limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/projects/projects.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/proxies.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/site_configs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/telemetry/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/telemetry/destinations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/resources/telemetry/telemetry.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/analysis.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/analysis_summary.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key_retrieve_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key_rotate_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/api_key_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/app_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/app_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_log_entry.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_log_export_chunk_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_log_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/audit_log_export_destination.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/audit_log_export_destination_test_result.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/export_destination_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/export_destination_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/audit_logs/export_destination_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/auth_context.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_login_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/connection_timeline_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/login_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/managed_auth_browser_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/managed_auth_browser_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/managed_auth_timeline_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_curl_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_curl_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_memory.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_memory_request.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_network_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_network_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_ref.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_release_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_pool_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_proxy.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_proxy_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_proxy_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_proxy_mode.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_retrieve_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browser_usage.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_cdp_command_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_cdp_command_method.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_crashed_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_platform_api_call_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_proxy_error_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_cdp_control_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_cdp_control_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_control_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_control_config_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_export_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/browser_telemetry_otlp_export_config.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_move_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_status_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/telemetry_events_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/telemetry_events_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/telemetry_stream_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/created_api_key.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_item.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_test_result.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_provider_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_totp_code_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/credential_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_create_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_follow_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_follow_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/deployment_state_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/evidence.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_get_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_upload_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/extension_upload_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_create_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_follow_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_follow_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_state_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/invocation_update_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/lookup_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/no_recommendation.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/organization/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/organization/limit_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/organization/org_entitlements.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/organization/org_limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/profile.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/profile_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/profile_download_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/profile_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/profile_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/project.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/project_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/project_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/project_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/projects/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/projects/limit_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/projects/project_limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_check_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_check_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_create_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_list_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/proxy_update_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/recommendation.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/recommendation_result.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/recommendation_summary.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/app_action.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/browser_extension.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/browser_profile.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/browser_viewport.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/error_detail.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/error_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/error_model.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared/log_event.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared_params/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/site_config_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/site_config_list_recommendations_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/site_config_lookup_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/site_config_resolve_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/site_config_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/tags.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/tags_param.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/target.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/telemetry/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/telemetry/destination_create_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/telemetry/destination_list_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/telemetry/destination_update_params.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/src/kernel/types/telemetry/otlp_destination.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/audit_logs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/audit_logs/test_export_destinations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/auth/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/auth/test_connections.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/auth/test_context.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_computer.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_fs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_logs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_playwright.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_process.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_replays.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/browsers/test_telemetry.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/organization/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/organization/test_entitlements.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/organization/test_limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/projects/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/projects/test_limits.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/telemetry/__init__.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/telemetry/test_destinations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_api_keys.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_apps.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_audit_logs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_browser_pools.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_browsers.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_credential_providers.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_credentials.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_deployments.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_extensions.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_invocations.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_profiles.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_projects.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_proxies.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/api_resources/test_site_configs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/conftest.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/sample_file.txt +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_audit_log_download.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_client.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_extract_files.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_files.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_models.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_pagination.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_qs.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_required_args.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_response.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_streaming.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_transform.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_utils/test_json.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_utils/test_path.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_utils/test_proxy.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/test_utils/test_typing.py +0 -0
- {kernel-0.94.0 → kernel-0.95.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.95.0](https://github.com/kernel/kernel-python-sdk/compare/v0.94.0...v0.95.0) (2026-08-26)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Add OTLP destination delivery health storage ([516cbce](https://github.com/kernel/kernel-python-sdk/commit/516cbce77afab43b346d9e95df2e4a25757c474b))
|
|
9
|
+
* route process calls directly to browser VMs ([f833c55](https://github.com/kernel/kernel-python-sdk/commit/f833c55fee9e7c33c444af6366890a9c876e149c))
|
|
10
|
+
|
|
3
11
|
## [0.94.0](https://github.com/kernel/kernel-python-sdk/compare/v0.93.0...v0.94.0) (2026-08-24)
|
|
4
12
|
|
|
5
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: kernel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.95.0
|
|
4
4
|
Summary: The official Python library for the kernel API
|
|
5
5
|
Project-URL: Homepage, https://github.com/kernel/kernel-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/kernel/kernel-python-sdk
|
|
@@ -44,7 +44,7 @@ def browser_routing_config_from_env() -> BrowserRoutingConfig:
|
|
|
44
44
|
# Path prefixes eligible for direct-to-VM routing. "telemetry/stream" is
|
|
45
45
|
# the live SSE endpoint (VM); "telemetry/events" is a historical read
|
|
46
46
|
# served by the control plane (S2) and must NOT be here.
|
|
47
|
-
return BrowserRoutingConfig(subresources=("curl", "telemetry/stream", "computer", "playwright"))
|
|
47
|
+
return BrowserRoutingConfig(subresources=("curl", "telemetry/stream", "computer", "playwright", "process"))
|
|
48
48
|
if raw.strip() == "":
|
|
49
49
|
return BrowserRoutingConfig()
|
|
50
50
|
|
|
@@ -95,8 +95,10 @@ class ConnectionsResource(SyncAPIResource):
|
|
|
95
95
|
profile_name: Name of the profile to manage authentication for. If the profile does not exist,
|
|
96
96
|
it is created automatically.
|
|
97
97
|
|
|
98
|
-
allowed_domains: Additional
|
|
99
|
-
|
|
98
|
+
allowed_domains: Additional hostname roots valid for this auth flow, besides the primary domain.
|
|
99
|
+
Each value allows credential entry on that exact hostname and its subdomains.
|
|
100
|
+
Leading `www.` and `*.` labels are normalized away. When omitted or empty,
|
|
101
|
+
credential entry is unrestricted.
|
|
100
102
|
|
|
101
103
|
The following SSO/OAuth provider domains are automatically allowed by default
|
|
102
104
|
and do not need to be specified:
|
|
@@ -254,7 +256,10 @@ class ConnectionsResource(SyncAPIResource):
|
|
|
254
256
|
updated.
|
|
255
257
|
|
|
256
258
|
Args:
|
|
257
|
-
allowed_domains: Additional
|
|
259
|
+
allowed_domains: Additional hostname roots valid for this auth flow. Each value allows credential
|
|
260
|
+
entry on that exact hostname and its subdomains; leading `www.` and `*.` labels
|
|
261
|
+
are normalized away. An empty list leaves credential entry unrestricted.
|
|
262
|
+
Replaces the existing list.
|
|
258
263
|
|
|
259
264
|
auto_reauth: Whether automatic re-authentication is permitted for this connection. This is an
|
|
260
265
|
opt-in flag only — it does not check whether re-auth is actually feasible. Even
|
|
@@ -713,8 +718,10 @@ class AsyncConnectionsResource(AsyncAPIResource):
|
|
|
713
718
|
profile_name: Name of the profile to manage authentication for. If the profile does not exist,
|
|
714
719
|
it is created automatically.
|
|
715
720
|
|
|
716
|
-
allowed_domains: Additional
|
|
717
|
-
|
|
721
|
+
allowed_domains: Additional hostname roots valid for this auth flow, besides the primary domain.
|
|
722
|
+
Each value allows credential entry on that exact hostname and its subdomains.
|
|
723
|
+
Leading `www.` and `*.` labels are normalized away. When omitted or empty,
|
|
724
|
+
credential entry is unrestricted.
|
|
718
725
|
|
|
719
726
|
The following SSO/OAuth provider domains are automatically allowed by default
|
|
720
727
|
and do not need to be specified:
|
|
@@ -872,7 +879,10 @@ class AsyncConnectionsResource(AsyncAPIResource):
|
|
|
872
879
|
updated.
|
|
873
880
|
|
|
874
881
|
Args:
|
|
875
|
-
allowed_domains: Additional
|
|
882
|
+
allowed_domains: Additional hostname roots valid for this auth flow. Each value allows credential
|
|
883
|
+
entry on that exact hostname and its subdomains; leading `www.` and `*.` labels
|
|
884
|
+
are normalized away. An empty list leaves credential entry unrestricted.
|
|
885
|
+
Replaces the existing list.
|
|
876
886
|
|
|
877
887
|
auto_reauth: Whether automatic re-authentication is permitted for this connection. This is an
|
|
878
888
|
opt-in flag only — it does not check whether re-auth is actually feasible. Even
|
|
@@ -73,7 +73,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
73
73
|
profile: browser_pool_create_params.Profile | Omit = omit,
|
|
74
74
|
proxy_id: str | Omit = omit,
|
|
75
75
|
refresh_on_profile_update: bool | Omit = omit,
|
|
76
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
76
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
77
77
|
start_url: str | Omit = omit,
|
|
78
78
|
stealth: bool | Omit = omit,
|
|
79
79
|
telemetry: Optional[browser_pool_create_params.Telemetry] | Omit = omit,
|
|
@@ -406,7 +406,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
406
406
|
name: str | Omit = omit,
|
|
407
407
|
offset: int | Omit = omit,
|
|
408
408
|
query: str | Omit = omit,
|
|
409
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
409
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
410
410
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
411
411
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
412
412
|
extra_headers: Headers | None = None,
|
|
@@ -703,7 +703,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
703
703
|
profile: browser_pool_create_params.Profile | Omit = omit,
|
|
704
704
|
proxy_id: str | Omit = omit,
|
|
705
705
|
refresh_on_profile_update: bool | Omit = omit,
|
|
706
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
706
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
707
707
|
start_url: str | Omit = omit,
|
|
708
708
|
stealth: bool | Omit = omit,
|
|
709
709
|
telemetry: Optional[browser_pool_create_params.Telemetry] | Omit = omit,
|
|
@@ -1036,7 +1036,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
1036
1036
|
name: str | Omit = omit,
|
|
1037
1037
|
offset: int | Omit = omit,
|
|
1038
1038
|
query: str | Omit = omit,
|
|
1039
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
1039
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
1040
1040
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1041
1041
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1042
1042
|
extra_headers: Headers | None = None,
|
|
@@ -182,7 +182,7 @@ class BrowsersResource(SyncAPIResource):
|
|
|
182
182
|
profile: BrowserProfile | Omit = omit,
|
|
183
183
|
proxy: BrowserProxyConfigParam | Omit = omit,
|
|
184
184
|
proxy_id: str | Omit = omit,
|
|
185
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
185
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
186
186
|
start_url: str | Omit = omit,
|
|
187
187
|
stealth: bool | Omit = omit,
|
|
188
188
|
tags: TagsParam | Omit = omit,
|
|
@@ -459,7 +459,7 @@ class BrowsersResource(SyncAPIResource):
|
|
|
459
459
|
limit: int | Omit = omit,
|
|
460
460
|
offset: int | Omit = omit,
|
|
461
461
|
query: str | Omit = omit,
|
|
462
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
462
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
463
463
|
status: Literal["active", "deleted", "all"] | Omit = omit,
|
|
464
464
|
tags: Dict[str, str] | Omit = omit,
|
|
465
465
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
@@ -694,8 +694,8 @@ class BrowsersResource(SyncAPIResource):
|
|
|
694
694
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
695
695
|
) -> None:
|
|
696
696
|
"""
|
|
697
|
-
Loads one or more unpacked extensions
|
|
698
|
-
|
|
697
|
+
Loads one or more unpacked extensions using live CDP activation when eligible.
|
|
698
|
+
Chromium restarts when enterprise policy requires it or live activation fails.
|
|
699
699
|
|
|
700
700
|
Args:
|
|
701
701
|
extensions: List of extensions to upload and activate
|
|
@@ -802,7 +802,7 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
802
802
|
profile: BrowserProfile | Omit = omit,
|
|
803
803
|
proxy: BrowserProxyConfigParam | Omit = omit,
|
|
804
804
|
proxy_id: str | Omit = omit,
|
|
805
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
805
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
806
806
|
start_url: str | Omit = omit,
|
|
807
807
|
stealth: bool | Omit = omit,
|
|
808
808
|
tags: TagsParam | Omit = omit,
|
|
@@ -1079,7 +1079,7 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
1079
1079
|
limit: int | Omit = omit,
|
|
1080
1080
|
offset: int | Omit = omit,
|
|
1081
1081
|
query: str | Omit = omit,
|
|
1082
|
-
region: Literal["us-east", "eu-west"] | Omit = omit,
|
|
1082
|
+
region: Literal["us-east", "eu-west", "ap-southeast"] | Omit = omit,
|
|
1083
1083
|
status: Literal["active", "deleted", "all"] | Omit = omit,
|
|
1084
1084
|
tags: Dict[str, str] | Omit = omit,
|
|
1085
1085
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
@@ -1314,8 +1314,8 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
1314
1314
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
1315
1315
|
) -> None:
|
|
1316
1316
|
"""
|
|
1317
|
-
Loads one or more unpacked extensions
|
|
1318
|
-
|
|
1317
|
+
Loads one or more unpacked extensions using live CDP activation when eligible.
|
|
1318
|
+
Chromium restarts when enterprise policy requires it or live activation fails.
|
|
1319
1319
|
|
|
1320
1320
|
Args:
|
|
1321
1321
|
extensions: List of extensions to upload and activate
|
|
@@ -31,9 +31,11 @@ class ConnectionCreateParams(TypedDict, total=False):
|
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
33
|
allowed_domains: SequenceNotStr[str]
|
|
34
|
-
"""Additional
|
|
34
|
+
"""Additional hostname roots valid for this auth flow, besides the primary domain.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Each value allows credential entry on that exact hostname and its subdomains.
|
|
37
|
+
Leading `www.` and `*.` labels are normalized away. When omitted or empty,
|
|
38
|
+
credential entry is unrestricted.
|
|
37
39
|
|
|
38
40
|
The following SSO/OAuth provider domains are automatically allowed by default
|
|
39
41
|
and do not need to be specified:
|
|
@@ -22,7 +22,12 @@ __all__ = [
|
|
|
22
22
|
|
|
23
23
|
class ConnectionUpdateParams(TypedDict, total=False):
|
|
24
24
|
allowed_domains: SequenceNotStr[str]
|
|
25
|
-
"""Additional
|
|
25
|
+
"""Additional hostname roots valid for this auth flow.
|
|
26
|
+
|
|
27
|
+
Each value allows credential entry on that exact hostname and its subdomains;
|
|
28
|
+
leading `www.` and `*.` labels are normalized away. An empty list leaves
|
|
29
|
+
credential entry unrestricted. Replaces the existing list.
|
|
30
|
+
"""
|
|
26
31
|
|
|
27
32
|
auto_reauth: bool
|
|
28
33
|
"""Whether automatic re-authentication is permitted for this connection.
|
|
@@ -309,9 +309,11 @@ class ManagedAuth(BaseModel):
|
|
|
309
309
|
"""Current authentication status of the managed profile"""
|
|
310
310
|
|
|
311
311
|
allowed_domains: Optional[List[str]] = None
|
|
312
|
-
"""
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
"""Additional hostname roots valid for this auth flow, besides the primary domain.
|
|
313
|
+
|
|
314
|
+
Each value allows credential entry on that exact hostname and its subdomains.
|
|
315
|
+
Leading `www.` and `*.` labels are normalized away. When omitted or empty,
|
|
316
|
+
credential entry is unrestricted.
|
|
315
317
|
|
|
316
318
|
The following SSO/OAuth provider domains are automatically allowed by default
|
|
317
319
|
and do not need to be specified:
|
|
@@ -101,7 +101,7 @@ class BrowserCreateParams(TypedDict, total=False):
|
|
|
101
101
|
favor of proxy.
|
|
102
102
|
"""
|
|
103
103
|
|
|
104
|
-
region: Literal["us-east", "eu-west"]
|
|
104
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
105
105
|
"""Geographic region for the browser session.
|
|
106
106
|
|
|
107
107
|
It is fixed once the session is created. Region selection requires a Start-Up or
|
|
@@ -31,7 +31,7 @@ class BrowserCreateResponse(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -27,7 +27,7 @@ class BrowserListParams(TypedDict, total=False):
|
|
|
27
27
|
Search browsers by name, session ID, profile name or ID, proxy ID, or pool name.
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
region: Literal["us-east", "eu-west"]
|
|
30
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
31
31
|
"""Filter sessions by geographic region. Omit to list sessions in all regions."""
|
|
32
32
|
|
|
33
33
|
status: Literal["active", "deleted", "all"]
|
|
@@ -31,7 +31,7 @@ class BrowserListResponse(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -174,7 +174,7 @@ class BrowserPool(BaseModel):
|
|
|
174
174
|
(echoed as sent on create).
|
|
175
175
|
"""
|
|
176
176
|
|
|
177
|
-
region: Literal["us-east", "eu-west"]
|
|
177
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
178
178
|
"""Geographic region of the browser pool. Fixed once the pool is created."""
|
|
179
179
|
|
|
180
180
|
name: Optional[str] = None
|
|
@@ -31,7 +31,7 @@ class BrowserPoolAcquireResponse(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -87,7 +87,7 @@ class BrowserPoolCreateParams(TypedDict, total=False):
|
|
|
87
87
|
creation, this defaults to true. Requires a profile to be set on the pool.
|
|
88
88
|
"""
|
|
89
89
|
|
|
90
|
-
region: Literal["us-east", "eu-west"]
|
|
90
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
91
91
|
"""Geographic region for the browser pool.
|
|
92
92
|
|
|
93
93
|
It is fixed once the pool is created. Region selection requires a Start-Up or
|
|
@@ -28,5 +28,5 @@ class BrowserPoolListParams(TypedDict, total=False):
|
|
|
28
28
|
IDs match by exact value.
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
|
-
region: Literal["us-east", "eu-west"]
|
|
31
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
32
32
|
"""Filter pools by geographic region. Omit to list pools in all regions."""
|
|
@@ -31,7 +31,7 @@ class BrowserRetrieveResponse(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -31,7 +31,7 @@ class BrowserUpdateResponse(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -31,7 +31,7 @@ class Browser(BaseModel):
|
|
|
31
31
|
memory: BrowserMemory
|
|
32
32
|
"""Memory allocated to the browser session."""
|
|
33
33
|
|
|
34
|
-
region: Literal["us-east", "eu-west"]
|
|
34
|
+
region: Literal["us-east", "eu-west", "ap-southeast"]
|
|
35
35
|
"""Geographic region of the browser session. Fixed once the session is created."""
|
|
36
36
|
|
|
37
37
|
session_id: str
|
|
@@ -397,6 +397,7 @@ def test_browser_routing_config_from_env_defaults(monkeypatch: pytest.MonkeyPatc
|
|
|
397
397
|
"telemetry/stream",
|
|
398
398
|
"computer",
|
|
399
399
|
"playwright",
|
|
400
|
+
"process",
|
|
400
401
|
)
|
|
401
402
|
|
|
402
403
|
|
|
@@ -406,7 +407,7 @@ def test_direct_vm_routing_allowlist_segment_boundary() -> None:
|
|
|
406
407
|
# stream-prefixed-but-different path is not matched.
|
|
407
408
|
from kernel.lib.browser_routing.routing import _matches_direct_vm_prefix
|
|
408
409
|
|
|
409
|
-
prefixes = ("curl", "telemetry/stream", "computer", "playwright")
|
|
410
|
+
prefixes = ("curl", "telemetry/stream", "computer", "playwright", "process")
|
|
410
411
|
assert _matches_direct_vm_prefix("telemetry/stream", prefixes) is True
|
|
411
412
|
assert _matches_direct_vm_prefix("telemetry/stream/x", prefixes) is True
|
|
412
413
|
assert _matches_direct_vm_prefix("telemetry/events", prefixes) is False
|
|
@@ -415,7 +416,8 @@ def test_direct_vm_routing_allowlist_segment_boundary() -> None:
|
|
|
415
416
|
assert _matches_direct_vm_prefix("curl/raw", prefixes) is True
|
|
416
417
|
assert _matches_direct_vm_prefix("computer/screenshot", prefixes) is True
|
|
417
418
|
assert _matches_direct_vm_prefix("playwright/execute", prefixes) is True
|
|
418
|
-
assert _matches_direct_vm_prefix("process/exec", prefixes) is
|
|
419
|
+
assert _matches_direct_vm_prefix("process/exec", prefixes) is True
|
|
420
|
+
assert _matches_direct_vm_prefix("process/proc-1/stdout/stream", prefixes) is True
|
|
419
421
|
assert _matches_direct_vm_prefix("fs/read", prefixes) is False
|
|
420
422
|
|
|
421
423
|
|
|
@@ -433,7 +435,7 @@ def test_rewrite_direct_vm_options_keeps_telemetry_events_on_control_plane() ->
|
|
|
433
435
|
|
|
434
436
|
cache = BrowserRouteCache()
|
|
435
437
|
cache.set(BrowserRoute(session_id="sess-1", base_url="http://browser-session.test/browser/kernel", jwt="token-abc"))
|
|
436
|
-
config = BrowserRoutingConfig(subresources=("curl", "telemetry/stream", "computer", "playwright"))
|
|
438
|
+
config = BrowserRoutingConfig(subresources=("curl", "telemetry/stream", "computer", "playwright", "process"))
|
|
437
439
|
|
|
438
440
|
events = rewrite_direct_vm_options(
|
|
439
441
|
FinalRequestOptions(method="get", url="/browsers/sess-1/telemetry/events"), cache=cache, config=config
|
|
@@ -458,7 +460,7 @@ def test_rewrite_direct_vm_options_keeps_telemetry_events_on_control_plane() ->
|
|
|
458
460
|
process = rewrite_direct_vm_options(
|
|
459
461
|
FinalRequestOptions(method="post", url="/browsers/sess-1/process/exec"), cache=cache, config=config
|
|
460
462
|
)
|
|
461
|
-
assert process.url
|
|
463
|
+
assert str(process.url).startswith("http://browser-session.test/browser/kernel/process/exec")
|
|
462
464
|
|
|
463
465
|
fs_read = rewrite_direct_vm_options(
|
|
464
466
|
FinalRequestOptions(method="get", url="/browsers/sess-1/fs/read_file"), cache=cache, config=config
|
|
@@ -472,7 +474,7 @@ def test_browser_routing_config_from_env_empty_string_disables_routing(monkeypat
|
|
|
472
474
|
|
|
473
475
|
|
|
474
476
|
@respx.mock
|
|
475
|
-
def
|
|
477
|
+
def test_default_browser_subresources_route_to_vm(
|
|
476
478
|
monkeypatch: pytest.MonkeyPatch,
|
|
477
479
|
) -> None:
|
|
478
480
|
monkeypatch.delenv("KERNEL_BROWSER_ROUTING_SUBRESOURCES", raising=False)
|
|
@@ -482,10 +484,14 @@ def test_computer_screenshot_and_playwright_execute_route_to_vm_by_default(
|
|
|
482
484
|
execute = respx.post("http://browser-session.test/browser/kernel/playwright/execute").mock(
|
|
483
485
|
return_value=httpx.Response(200, json={"success": True})
|
|
484
486
|
)
|
|
487
|
+
process = respx.post("http://browser-session.test/browser/kernel/process/exec").mock(
|
|
488
|
+
return_value=httpx.Response(200, json={"exit_code": 0, "stdout_b64": "", "stderr_b64": ""})
|
|
489
|
+
)
|
|
485
490
|
with Kernel(base_url=base_url, api_key=api_key, _strict_response_validation=True) as client:
|
|
486
491
|
_cache_browser(client)
|
|
487
492
|
client.browsers.computer.capture_screenshot("sess-1")
|
|
488
493
|
out = client.browsers.playwright.execute("sess-1", code="return 1")
|
|
494
|
+
process_out = client.browsers.process.exec("sess-1", command="echo")
|
|
489
495
|
|
|
490
496
|
assert screenshot.called
|
|
491
497
|
screenshot_req = cast(httpx.Request, cast(Any, screenshot.calls[0]).request)
|
|
@@ -495,28 +501,28 @@ def test_computer_screenshot_and_playwright_execute_route_to_vm_by_default(
|
|
|
495
501
|
execute_req = cast(httpx.Request, cast(Any, execute.calls[0]).request)
|
|
496
502
|
assert execute_req.url.params.get("jwt") == "token-abc"
|
|
497
503
|
assert execute_req.headers.get("Authorization") is None
|
|
504
|
+
assert process.called
|
|
505
|
+
process_req = cast(httpx.Request, cast(Any, process.calls[0]).request)
|
|
506
|
+
assert process_req.url.params.get("jwt") == "token-abc"
|
|
507
|
+
assert process_req.headers.get("Authorization") is None
|
|
498
508
|
assert out.success is True
|
|
509
|
+
assert process_out.exit_code == 0
|
|
499
510
|
|
|
500
511
|
|
|
501
512
|
@respx.mock
|
|
502
|
-
def
|
|
513
|
+
def test_fs_and_telemetry_events_stay_on_api_origin_by_default(
|
|
503
514
|
monkeypatch: pytest.MonkeyPatch,
|
|
504
515
|
) -> None:
|
|
505
516
|
monkeypatch.delenv("KERNEL_BROWSER_ROUTING_SUBRESOURCES", raising=False)
|
|
506
|
-
process = respx.post(f"{base_url}/browsers/sess-1/process/exec").mock(
|
|
507
|
-
return_value=httpx.Response(200, json={"exit_code": 0, "stdout_b64": "", "stderr_b64": ""})
|
|
508
|
-
)
|
|
509
517
|
fs_read = respx.get(f"{base_url}/browsers/sess-1/fs/read_file").mock(
|
|
510
518
|
return_value=httpx.Response(200, content=b"x", headers={"content-type": "application/octet-stream"})
|
|
511
519
|
)
|
|
512
520
|
events = respx.get(f"{base_url}/browsers/sess-1/telemetry/events").mock(return_value=httpx.Response(200, json=[]))
|
|
513
521
|
with Kernel(base_url=base_url, api_key=api_key, _strict_response_validation=True) as client:
|
|
514
522
|
_cache_browser(client)
|
|
515
|
-
client.browsers.process.exec("sess-1", command="echo")
|
|
516
523
|
client.browsers.fs.read_file("sess-1", path="/tmp/x")
|
|
517
524
|
client.browsers.telemetry.events("sess-1")
|
|
518
525
|
|
|
519
|
-
assert process.called
|
|
520
526
|
assert fs_read.called
|
|
521
527
|
assert events.called
|
|
522
528
|
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|