kernel 0.69.0__tar.gz → 0.71.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.
Files changed (352) hide show
  1. kernel-0.71.0/.release-please-manifest.json +3 -0
  2. {kernel-0.69.0 → kernel-0.71.0}/CHANGELOG.md +27 -0
  3. {kernel-0.69.0 → kernel-0.71.0}/PKG-INFO +1 -1
  4. {kernel-0.69.0 → kernel-0.71.0}/api.md +19 -2
  5. {kernel-0.69.0 → kernel-0.71.0}/pyproject.toml +1 -1
  6. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_client.py +44 -0
  7. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_version.py +1 -1
  8. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/lib/browser_routing/routing.py +20 -2
  9. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/pagination.py +81 -1
  10. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/__init__.py +14 -0
  11. kernel-0.71.0/src/kernel/resources/audit_logs.py +269 -0
  12. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/auth/connections.py +127 -0
  13. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browser_pools.py +28 -8
  14. kernel-0.71.0/src/kernel/resources/browsers/telemetry.py +403 -0
  15. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/extensions.py +81 -0
  16. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/projects/projects.py +6 -4
  17. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/__init__.py +5 -0
  18. kernel-0.71.0/src/kernel/types/audit_log_entry.py +45 -0
  19. kernel-0.71.0/src/kernel/types/audit_log_list_params.py +44 -0
  20. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/__init__.py +2 -0
  21. kernel-0.71.0/src/kernel/types/auth/connection_timeline_params.py +18 -0
  22. kernel-0.71.0/src/kernel/types/auth/managed_auth_timeline_event.py +77 -0
  23. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool.py +6 -2
  24. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_acquire_params.py +7 -0
  25. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_create_params.py +6 -2
  26. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_update_params.py +6 -2
  27. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/__init__.py +3 -0
  28. kernel-0.71.0/src/kernel/types/browsers/telemetry_events_params.py +52 -0
  29. kernel-0.71.0/src/kernel/types/browsers/telemetry_events_response.py +36 -0
  30. kernel-0.71.0/src/kernel/types/browsers/telemetry_stream_params.py +20 -0
  31. kernel-0.71.0/src/kernel/types/extension_get_response.py +30 -0
  32. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/browser_viewport.py +4 -3
  33. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared_params/browser_viewport.py +4 -3
  34. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/auth/test_connections.py +107 -0
  35. kernel-0.71.0/tests/api_resources/browsers/test_telemetry.py +237 -0
  36. kernel-0.71.0/tests/api_resources/test_audit_logs.py +134 -0
  37. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_browser_pools.py +6 -4
  38. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_extensions.py +85 -0
  39. {kernel-0.69.0 → kernel-0.71.0}/tests/test_browser_routing.py +47 -2
  40. kernel-0.69.0/.release-please-manifest.json +0 -3
  41. kernel-0.69.0/src/kernel/resources/browsers/telemetry.py +0 -195
  42. kernel-0.69.0/tests/api_resources/browsers/test_telemetry.py +0 -122
  43. {kernel-0.69.0 → kernel-0.71.0}/.gitignore +0 -0
  44. {kernel-0.69.0 → kernel-0.71.0}/CONTRIBUTING.md +0 -0
  45. {kernel-0.69.0 → kernel-0.71.0}/LICENSE +0 -0
  46. {kernel-0.69.0 → kernel-0.71.0}/README.md +0 -0
  47. {kernel-0.69.0 → kernel-0.71.0}/SECURITY.md +0 -0
  48. {kernel-0.69.0 → kernel-0.71.0}/bin/check-release-environment +0 -0
  49. {kernel-0.69.0 → kernel-0.71.0}/bin/publish-pypi +0 -0
  50. {kernel-0.69.0 → kernel-0.71.0}/examples/.keep +0 -0
  51. {kernel-0.69.0 → kernel-0.71.0}/examples/browser_routing.py +0 -0
  52. {kernel-0.69.0 → kernel-0.71.0}/examples/browser_telemetry.py +0 -0
  53. {kernel-0.69.0 → kernel-0.71.0}/noxfile.py +0 -0
  54. {kernel-0.69.0 → kernel-0.71.0}/release-please-config.json +0 -0
  55. {kernel-0.69.0 → kernel-0.71.0}/requirements-dev.lock +0 -0
  56. {kernel-0.69.0 → kernel-0.71.0}/requirements.lock +0 -0
  57. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/__init__.py +0 -0
  58. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_base_client.py +0 -0
  59. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_compat.py +0 -0
  60. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_constants.py +0 -0
  61. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_exceptions.py +0 -0
  62. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_files.py +0 -0
  63. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_models.py +0 -0
  64. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_qs.py +0 -0
  65. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_resource.py +0 -0
  66. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_response.py +0 -0
  67. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_streaming.py +0 -0
  68. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_types.py +0 -0
  69. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/__init__.py +0 -0
  70. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_compat.py +0 -0
  71. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_datetime_parse.py +0 -0
  72. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_json.py +0 -0
  73. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_logs.py +0 -0
  74. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_path.py +0 -0
  75. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_proxy.py +0 -0
  76. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_reflection.py +0 -0
  77. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_resources_proxy.py +0 -0
  78. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_streams.py +0 -0
  79. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_sync.py +0 -0
  80. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_transform.py +0 -0
  81. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_typing.py +0 -0
  82. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/_utils/_utils.py +0 -0
  83. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/app_framework.py +0 -0
  84. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/lib/.keep +0 -0
  85. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
  86. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
  87. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/lib/browser_routing/util.py +0 -0
  88. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/py.typed +0 -0
  89. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/api_keys.py +0 -0
  90. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/apps.py +0 -0
  91. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/auth/__init__.py +0 -0
  92. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/auth/auth.py +0 -0
  93. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/__init__.py +0 -0
  94. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/browsers.py +0 -0
  95. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/computer.py +0 -0
  96. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
  97. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
  98. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
  99. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/logs.py +0 -0
  100. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/playwright.py +0 -0
  101. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/process.py +0 -0
  102. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/browsers/replays.py +0 -0
  103. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/credential_providers.py +0 -0
  104. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/credentials.py +0 -0
  105. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/deployments.py +0 -0
  106. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/invocations.py +0 -0
  107. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/organization/__init__.py +0 -0
  108. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/organization/limits.py +0 -0
  109. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/organization/organization.py +0 -0
  110. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/profiles.py +0 -0
  111. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/projects/__init__.py +0 -0
  112. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/projects/limits.py +0 -0
  113. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/resources/proxies.py +0 -0
  114. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key.py +0 -0
  115. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key_create_params.py +0 -0
  116. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key_list_params.py +0 -0
  117. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key_retrieve_params.py +0 -0
  118. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key_rotate_params.py +0 -0
  119. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/api_key_update_params.py +0 -0
  120. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/app_list_params.py +0 -0
  121. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/app_list_response.py +0 -0
  122. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_create_params.py +0 -0
  123. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
  124. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_list_params.py +0 -0
  125. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_login_params.py +0 -0
  126. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
  127. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/connection_update_params.py +0 -0
  128. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/login_response.py +0 -0
  129. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/managed_auth.py +0 -0
  130. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
  131. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_create_params.py +0 -0
  132. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_create_response.py +0 -0
  133. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_curl_params.py +0 -0
  134. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_curl_response.py +0 -0
  135. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_list_params.py +0 -0
  136. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_list_response.py +0 -0
  137. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
  138. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
  139. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
  140. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_list_params.py +0 -0
  141. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_ref.py +0 -0
  142. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_pool_release_params.py +0 -0
  143. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_retrieve_params.py +0 -0
  144. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_retrieve_response.py +0 -0
  145. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_update_params.py +0 -0
  146. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_update_response.py +0 -0
  147. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browser_usage.py +0 -0
  148. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
  149. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
  150. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
  151. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
  152. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
  153. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
  154. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
  155. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
  156. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
  157. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
  158. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
  159. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
  160. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
  161. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
  162. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
  163. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
  164. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
  165. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
  166. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
  167. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
  168. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
  169. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
  170. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
  171. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
  172. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
  173. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
  174. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
  175. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
  176. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
  177. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
  178. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
  179. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
  180. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
  181. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
  182. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
  183. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
  184. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
  185. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
  186. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
  187. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
  188. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
  189. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
  190. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
  191. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
  192. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
  193. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
  194. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
  195. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
  196. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
  197. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
  198. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
  199. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
  200. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
  201. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
  202. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
  203. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
  204. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
  205. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
  206. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
  207. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
  208. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
  209. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_move_params.py +0 -0
  210. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
  211. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
  212. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
  213. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
  214. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
  215. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
  216. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
  217. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
  218. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
  219. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
  220. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
  221. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
  222. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
  223. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
  224. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
  225. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
  226. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
  227. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
  228. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
  229. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
  230. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_status_response.py +0 -0
  231. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
  232. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
  233. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
  234. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
  235. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
  236. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
  237. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
  238. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/created_api_key.py +0 -0
  239. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential.py +0 -0
  240. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_create_params.py +0 -0
  241. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_list_params.py +0 -0
  242. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider.py +0 -0
  243. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_create_params.py +0 -0
  244. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_item.py +0 -0
  245. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
  246. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_list_params.py +0 -0
  247. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_test_result.py +0 -0
  248. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_provider_update_params.py +0 -0
  249. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_totp_code_response.py +0 -0
  250. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/credential_update_params.py +0 -0
  251. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_create_params.py +0 -0
  252. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_create_response.py +0 -0
  253. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_follow_params.py +0 -0
  254. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_follow_response.py +0 -0
  255. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_list_params.py +0 -0
  256. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_list_response.py +0 -0
  257. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
  258. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/deployment_state_event.py +0 -0
  259. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
  260. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/extension_list_params.py +0 -0
  261. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/extension_list_response.py +0 -0
  262. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/extension_upload_params.py +0 -0
  263. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/extension_upload_response.py +0 -0
  264. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_create_params.py +0 -0
  265. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_create_response.py +0 -0
  266. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_follow_params.py +0 -0
  267. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_follow_response.py +0 -0
  268. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
  269. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_list_params.py +0 -0
  270. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_list_response.py +0 -0
  271. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
  272. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_state_event.py +0 -0
  273. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_update_params.py +0 -0
  274. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/invocation_update_response.py +0 -0
  275. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/organization/__init__.py +0 -0
  276. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/organization/limit_update_params.py +0 -0
  277. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/organization/org_limits.py +0 -0
  278. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/profile.py +0 -0
  279. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/profile_create_params.py +0 -0
  280. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/profile_list_params.py +0 -0
  281. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/project.py +0 -0
  282. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/project_create_params.py +0 -0
  283. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/project_list_params.py +0 -0
  284. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/project_update_params.py +0 -0
  285. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/projects/__init__.py +0 -0
  286. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/projects/limit_update_params.py +0 -0
  287. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/projects/project_limits.py +0 -0
  288. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_check_params.py +0 -0
  289. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_check_response.py +0 -0
  290. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_create_params.py +0 -0
  291. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_create_response.py +0 -0
  292. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_list_params.py +0 -0
  293. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_list_response.py +0 -0
  294. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
  295. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/__init__.py +0 -0
  296. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/app_action.py +0 -0
  297. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/browser_extension.py +0 -0
  298. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/browser_profile.py +0 -0
  299. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/error_detail.py +0 -0
  300. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/error_event.py +0 -0
  301. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/error_model.py +0 -0
  302. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
  303. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared/log_event.py +0 -0
  304. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared_params/__init__.py +0 -0
  305. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
  306. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
  307. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/tags.py +0 -0
  308. {kernel-0.69.0 → kernel-0.71.0}/src/kernel/types/tags_param.py +0 -0
  309. {kernel-0.69.0 → kernel-0.71.0}/tests/__init__.py +0 -0
  310. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/__init__.py +0 -0
  311. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/auth/__init__.py +0 -0
  312. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/__init__.py +0 -0
  313. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
  314. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
  315. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_computer.py +0 -0
  316. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_fs.py +0 -0
  317. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_logs.py +0 -0
  318. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_playwright.py +0 -0
  319. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_process.py +0 -0
  320. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/browsers/test_replays.py +0 -0
  321. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/organization/__init__.py +0 -0
  322. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/organization/test_limits.py +0 -0
  323. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/projects/__init__.py +0 -0
  324. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/projects/test_limits.py +0 -0
  325. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_api_keys.py +0 -0
  326. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_apps.py +0 -0
  327. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_browsers.py +0 -0
  328. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_credential_providers.py +0 -0
  329. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_credentials.py +0 -0
  330. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_deployments.py +0 -0
  331. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_invocations.py +0 -0
  332. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_profiles.py +0 -0
  333. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_projects.py +0 -0
  334. {kernel-0.69.0 → kernel-0.71.0}/tests/api_resources/test_proxies.py +0 -0
  335. {kernel-0.69.0 → kernel-0.71.0}/tests/conftest.py +0 -0
  336. {kernel-0.69.0 → kernel-0.71.0}/tests/sample_file.txt +0 -0
  337. {kernel-0.69.0 → kernel-0.71.0}/tests/test_client.py +0 -0
  338. {kernel-0.69.0 → kernel-0.71.0}/tests/test_extract_files.py +0 -0
  339. {kernel-0.69.0 → kernel-0.71.0}/tests/test_files.py +0 -0
  340. {kernel-0.69.0 → kernel-0.71.0}/tests/test_models.py +0 -0
  341. {kernel-0.69.0 → kernel-0.71.0}/tests/test_pagination.py +0 -0
  342. {kernel-0.69.0 → kernel-0.71.0}/tests/test_qs.py +0 -0
  343. {kernel-0.69.0 → kernel-0.71.0}/tests/test_required_args.py +0 -0
  344. {kernel-0.69.0 → kernel-0.71.0}/tests/test_response.py +0 -0
  345. {kernel-0.69.0 → kernel-0.71.0}/tests/test_streaming.py +0 -0
  346. {kernel-0.69.0 → kernel-0.71.0}/tests/test_transform.py +0 -0
  347. {kernel-0.69.0 → kernel-0.71.0}/tests/test_utils/test_datetime_parse.py +0 -0
  348. {kernel-0.69.0 → kernel-0.71.0}/tests/test_utils/test_json.py +0 -0
  349. {kernel-0.69.0 → kernel-0.71.0}/tests/test_utils/test_path.py +0 -0
  350. {kernel-0.69.0 → kernel-0.71.0}/tests/test_utils/test_proxy.py +0 -0
  351. {kernel-0.69.0 → kernel-0.71.0}/tests/test_utils/test_typing.py +0 -0
  352. {kernel-0.69.0 → kernel-0.71.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.71.0"
3
+ }
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.71.0 (2026-06-26)
4
+
5
+ Full Changelog: [v0.70.0...v0.71.0](https://github.com/kernel/kernel-python-sdk/compare/v0.70.0...v0.71.0)
6
+
7
+ ### Features
8
+
9
+ * Add auth connection event timeline endpoint ([871432f](https://github.com/kernel/kernel-python-sdk/commit/871432f827c95b11d132f60b3547c9986e266f6b))
10
+ * Expose audit logs in public SDK ([9c8e9ac](https://github.com/kernel/kernel-python-sdk/commit/9c8e9ace1cdddc6ce727b38fec62beaba6c6fa20))
11
+
12
+ ## 0.70.0 (2026-06-24)
13
+
14
+ Full Changelog: [v0.69.0...v0.70.0](https://github.com/kernel/kernel-python-sdk/compare/v0.69.0...v0.70.0)
15
+
16
+ ### Features
17
+
18
+ * Add GET /browsers/{id}/telemetry/events (read from S2) ([57eb393](https://github.com/kernel/kernel-python-sdk/commit/57eb393ea1eb5fb0d2e5211845f338610198a0fd))
19
+ * Align browser-pool timeout/viewport/fill-rate contract with implementation; reject save_changes on update ([4fddd6b](https://github.com/kernel/kernel-python-sdk/commit/4fddd6bb3f2ccb86ec3cc492311d5fe9c061ba49))
20
+ * api: support per-acquire start_url override on browser pool acquire ([3e11311](https://github.com/kernel/kernel-python-sdk/commit/3e11311f835d558c4fa6ab0c0fb8a9c7e3536a13))
21
+ * **api:** add GET /extensions/{id_or_name}/metadata ([681a8fc](https://github.com/kernel/kernel-python-sdk/commit/681a8fcd7d8ec5c3373a66c81fb405a6844308eb))
22
+ * **api:** resolve GET /org/projects/{id} by ID or name ([52eb598](https://github.com/kernel/kernel-python-sdk/commit/52eb598c7bfd6e696f0d510585439ba5658dc161))
23
+ * Forward replay param through telemetry stream passthrough ([a8001d2](https://github.com/kernel/kernel-python-sdk/commit/a8001d239ae583fa177164e1ce900e767797c853))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * don't misroute telemetry/events to the browser VM ([9bcc418](https://github.com/kernel/kernel-python-sdk/commit/9bcc418b4294295c0d8377adfc921c3748d42019))
29
+
3
30
  ## 0.69.0 (2026-06-18)
4
31
 
5
32
  Full Changelog: [v0.68.0...v0.69.0](https://github.com/kernel/kernel-python-sdk/compare/v0.68.0...v0.69.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kernel
3
- Version: 0.69.0
3
+ Version: 0.71.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
@@ -146,13 +146,15 @@ from kernel.types.browsers import (
146
146
  BrowserTelemetryCategoryConfig,
147
147
  BrowserTelemetryConfig,
148
148
  BrowserTelemetryEvent,
149
+ TelemetryEventsResponse,
149
150
  TelemetryStreamResponse,
150
151
  )
151
152
  ```
152
153
 
153
154
  Methods:
154
155
 
155
- - <code title="get /browsers/{id}/telemetry/stream">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">stream</a>(id) -> <a href="./src/kernel/types/browsers/telemetry_stream_response.py">TelemetryStreamResponse</a></code>
156
+ - <code title="get /browsers/{id}/telemetry/events">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">events</a>(id, \*\*<a href="src/kernel/types/browsers/telemetry_events_params.py">params</a>) -> <a href="./src/kernel/types/browsers/telemetry_events_response.py">SyncOffsetPagination[TelemetryEventsResponse]</a></code>
157
+ - <code title="get /browsers/{id}/telemetry/stream">client.browsers.telemetry.<a href="./src/kernel/resources/browsers/telemetry.py">stream</a>(id, \*\*<a href="src/kernel/types/browsers/telemetry_stream_params.py">params</a>) -> <a href="./src/kernel/types/browsers/telemetry_stream_response.py">TelemetryStreamResponse</a></code>
156
158
 
157
159
  ## Replays
158
160
 
@@ -298,6 +300,7 @@ from kernel.types.auth import (
298
300
  LoginResponse,
299
301
  ManagedAuth,
300
302
  ManagedAuthCreateRequest,
303
+ ManagedAuthTimelineEvent,
301
304
  ManagedAuthUpdateRequest,
302
305
  SubmitFieldsRequest,
303
306
  SubmitFieldsResponse,
@@ -315,6 +318,7 @@ Methods:
315
318
  - <code title="get /auth/connections/{id}/events">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">follow</a>(id) -> <a href="./src/kernel/types/auth/connection_follow_response.py">ConnectionFollowResponse</a></code>
316
319
  - <code title="post /auth/connections/{id}/login">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">login</a>(id, \*\*<a href="src/kernel/types/auth/connection_login_params.py">params</a>) -> <a href="./src/kernel/types/auth/login_response.py">LoginResponse</a></code>
317
320
  - <code title="post /auth/connections/{id}/submit">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">submit</a>(id, \*\*<a href="src/kernel/types/auth/connection_submit_params.py">params</a>) -> <a href="./src/kernel/types/auth/submit_fields_response.py">SubmitFieldsResponse</a></code>
321
+ - <code title="get /auth/connections/{id}/timeline">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">timeline</a>(id, \*\*<a href="src/kernel/types/auth/connection_timeline_params.py">params</a>) -> <a href="./src/kernel/types/auth/managed_auth_timeline_event.py">SyncOffsetPagination[ManagedAuthTimelineEvent]</a></code>
318
322
 
319
323
  # Proxies
320
324
 
@@ -342,7 +346,7 @@ Methods:
342
346
  Types:
343
347
 
344
348
  ```python
345
- from kernel.types import ExtensionListResponse, ExtensionUploadResponse
349
+ from kernel.types import ExtensionListResponse, ExtensionGetResponse, ExtensionUploadResponse
346
350
  ```
347
351
 
348
352
  Methods:
@@ -351,6 +355,7 @@ Methods:
351
355
  - <code title="delete /extensions/{id_or_name}">client.extensions.<a href="./src/kernel/resources/extensions.py">delete</a>(id_or_name) -> None</code>
352
356
  - <code title="get /extensions/{id_or_name}">client.extensions.<a href="./src/kernel/resources/extensions.py">download</a>(id_or_name) -> BinaryAPIResponse</code>
353
357
  - <code title="get /extensions/from_chrome_store">client.extensions.<a href="./src/kernel/resources/extensions.py">download_from_chrome_store</a>(\*\*<a href="src/kernel/types/extension_download_from_chrome_store_params.py">params</a>) -> BinaryAPIResponse</code>
358
+ - <code title="get /extensions/{id_or_name}/metadata">client.extensions.<a href="./src/kernel/resources/extensions.py">get</a>(id_or_name) -> <a href="./src/kernel/types/extension_get_response.py">ExtensionGetResponse</a></code>
354
359
  - <code title="post /extensions">client.extensions.<a href="./src/kernel/resources/extensions.py">upload</a>(\*\*<a href="src/kernel/types/extension_upload_params.py">params</a>) -> <a href="./src/kernel/types/extension_upload_response.py">ExtensionUploadResponse</a></code>
355
360
 
356
361
  # BrowserPools
@@ -438,6 +443,18 @@ Methods:
438
443
  - <code title="get /org/limits">client.organization.limits.<a href="./src/kernel/resources/organization/limits.py">retrieve</a>() -> <a href="./src/kernel/types/organization/org_limits.py">OrgLimits</a></code>
439
444
  - <code title="patch /org/limits">client.organization.limits.<a href="./src/kernel/resources/organization/limits.py">update</a>(\*\*<a href="src/kernel/types/organization/limit_update_params.py">params</a>) -> <a href="./src/kernel/types/organization/org_limits.py">OrgLimits</a></code>
440
445
 
446
+ # AuditLogs
447
+
448
+ Types:
449
+
450
+ ```python
451
+ from kernel.types import AuditLogEntry
452
+ ```
453
+
454
+ Methods:
455
+
456
+ - <code title="get /audit-logs">client.audit_logs.<a href="./src/kernel/resources/audit_logs.py">list</a>(\*\*<a href="src/kernel/types/audit_log_list_params.py">params</a>) -> <a href="./src/kernel/types/audit_log_entry.py">SyncPageTokenPagination[AuditLogEntry]</a></code>
457
+
441
458
  # APIKeys
442
459
 
443
460
  Types:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel"
3
- version = "0.69.0"
3
+ version = "0.71.0"
4
4
  description = "The official Python library for the kernel API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -54,6 +54,7 @@ if TYPE_CHECKING:
54
54
  browsers,
55
55
  profiles,
56
56
  projects,
57
+ audit_logs,
57
58
  extensions,
58
59
  credentials,
59
60
  deployments,
@@ -67,6 +68,7 @@ if TYPE_CHECKING:
67
68
  from .resources.api_keys import APIKeysResource, AsyncAPIKeysResource
68
69
  from .resources.profiles import ProfilesResource, AsyncProfilesResource
69
70
  from .resources.auth.auth import AuthResource, AsyncAuthResource
71
+ from .resources.audit_logs import AuditLogsResource, AsyncAuditLogsResource
70
72
  from .resources.extensions import ExtensionsResource, AsyncExtensionsResource
71
73
  from .resources.credentials import CredentialsResource, AsyncCredentialsResource
72
74
  from .resources.deployments import DeploymentsResource, AsyncDeploymentsResource
@@ -275,6 +277,13 @@ class Kernel(SyncAPIClient):
275
277
 
276
278
  return OrganizationResource(self)
277
279
 
280
+ @cached_property
281
+ def audit_logs(self) -> AuditLogsResource:
282
+ """Read audit log records for the authenticated organization."""
283
+ from .resources.audit_logs import AuditLogsResource
284
+
285
+ return AuditLogsResource(self)
286
+
278
287
  @cached_property
279
288
  def api_keys(self) -> APIKeysResource:
280
289
  """Create and manage API keys for organization and project-scoped access."""
@@ -620,6 +629,13 @@ class AsyncKernel(AsyncAPIClient):
620
629
 
621
630
  return AsyncOrganizationResource(self)
622
631
 
632
+ @cached_property
633
+ def audit_logs(self) -> AsyncAuditLogsResource:
634
+ """Read audit log records for the authenticated organization."""
635
+ from .resources.audit_logs import AsyncAuditLogsResource
636
+
637
+ return AsyncAuditLogsResource(self)
638
+
623
639
  @cached_property
624
640
  def api_keys(self) -> AsyncAPIKeysResource:
625
641
  """Create and manage API keys for organization and project-scoped access."""
@@ -873,6 +889,13 @@ class KernelWithRawResponse:
873
889
 
874
890
  return OrganizationResourceWithRawResponse(self._client.organization)
875
891
 
892
+ @cached_property
893
+ def audit_logs(self) -> audit_logs.AuditLogsResourceWithRawResponse:
894
+ """Read audit log records for the authenticated organization."""
895
+ from .resources.audit_logs import AuditLogsResourceWithRawResponse
896
+
897
+ return AuditLogsResourceWithRawResponse(self._client.audit_logs)
898
+
876
899
  @cached_property
877
900
  def api_keys(self) -> api_keys.APIKeysResourceWithRawResponse:
878
901
  """Create and manage API keys for organization and project-scoped access."""
@@ -976,6 +999,13 @@ class AsyncKernelWithRawResponse:
976
999
 
977
1000
  return AsyncOrganizationResourceWithRawResponse(self._client.organization)
978
1001
 
1002
+ @cached_property
1003
+ def audit_logs(self) -> audit_logs.AsyncAuditLogsResourceWithRawResponse:
1004
+ """Read audit log records for the authenticated organization."""
1005
+ from .resources.audit_logs import AsyncAuditLogsResourceWithRawResponse
1006
+
1007
+ return AsyncAuditLogsResourceWithRawResponse(self._client.audit_logs)
1008
+
979
1009
  @cached_property
980
1010
  def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithRawResponse:
981
1011
  """Create and manage API keys for organization and project-scoped access."""
@@ -1079,6 +1109,13 @@ class KernelWithStreamedResponse:
1079
1109
 
1080
1110
  return OrganizationResourceWithStreamingResponse(self._client.organization)
1081
1111
 
1112
+ @cached_property
1113
+ def audit_logs(self) -> audit_logs.AuditLogsResourceWithStreamingResponse:
1114
+ """Read audit log records for the authenticated organization."""
1115
+ from .resources.audit_logs import AuditLogsResourceWithStreamingResponse
1116
+
1117
+ return AuditLogsResourceWithStreamingResponse(self._client.audit_logs)
1118
+
1082
1119
  @cached_property
1083
1120
  def api_keys(self) -> api_keys.APIKeysResourceWithStreamingResponse:
1084
1121
  """Create and manage API keys for organization and project-scoped access."""
@@ -1182,6 +1219,13 @@ class AsyncKernelWithStreamedResponse:
1182
1219
 
1183
1220
  return AsyncOrganizationResourceWithStreamingResponse(self._client.organization)
1184
1221
 
1222
+ @cached_property
1223
+ def audit_logs(self) -> audit_logs.AsyncAuditLogsResourceWithStreamingResponse:
1224
+ """Read audit log records for the authenticated organization."""
1225
+ from .resources.audit_logs import AsyncAuditLogsResourceWithStreamingResponse
1226
+
1227
+ return AsyncAuditLogsResourceWithStreamingResponse(self._client.audit_logs)
1228
+
1185
1229
  @cached_property
1186
1230
  def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithStreamingResponse:
1187
1231
  """Create and manage API keys for organization and project-scoped access."""
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "kernel"
4
- __version__ = "0.69.0" # x-release-please-version
4
+ __version__ = "0.71.0" # x-release-please-version
@@ -41,7 +41,10 @@ _BROWSER_POOL_RELEASE_PATH = re.compile(r"^/(?:v\d+/)?browser_pools/[^/]+/releas
41
41
  def browser_routing_config_from_env() -> BrowserRoutingConfig:
42
42
  raw = os.environ.get("KERNEL_BROWSER_ROUTING_SUBRESOURCES")
43
43
  if raw is None:
44
- return BrowserRoutingConfig(subresources=("curl", "telemetry"))
44
+ # Path prefixes eligible for direct-to-VM routing. "telemetry/stream" is
45
+ # the live SSE endpoint (VM); "telemetry/events" is a historical read
46
+ # served by the control plane (S2) and must NOT be here.
47
+ return BrowserRoutingConfig(subresources=("curl", "telemetry/stream"))
45
48
  if raw.strip() == "":
46
49
  return BrowserRoutingConfig()
47
50
 
@@ -188,6 +191,21 @@ def _session_id_from_browser_pool_release_request(request: httpx.Request, path:
188
191
  return normalized or None
189
192
 
190
193
 
194
+ def _matches_direct_vm_prefix(tail: str, prefixes: tuple[str, ...]) -> bool:
195
+ """Whether tail (the path after browsers/{id}/) is covered by an allow prefix,
196
+ matching on segment boundaries: "telemetry/stream" matches "telemetry/stream"
197
+ and "telemetry/stream/...", but not "telemetry/events" or "telemetry/streamfoo".
198
+ Keeps historical control-plane reads (e.g. telemetry/events, served from S2)
199
+ off the VM.
200
+ """
201
+ tail = tail.strip("/")
202
+ for prefix in prefixes:
203
+ prefix = prefix.strip("/")
204
+ if prefix and (tail == prefix or tail.startswith(prefix + "/")):
205
+ return True
206
+ return False
207
+
208
+
191
209
  def rewrite_direct_vm_options(
192
210
  options: FinalRequestOptions,
193
211
  *,
@@ -199,7 +217,7 @@ def rewrite_direct_vm_options(
199
217
  return options
200
218
 
201
219
  session_id, subresource, suffix = match
202
- if subresource not in set(config.subresources):
220
+ if not _matches_direct_vm_prefix(f"{subresource}{suffix}", config.subresources):
203
221
  return options
204
222
 
205
223
  route = cache.get(session_id)
@@ -9,13 +9,93 @@ from ._utils import is_mapping, maybe_coerce_boolean, maybe_coerce_integer
9
9
  from ._models import BaseModel
10
10
  from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
11
11
 
12
- __all__ = ["SyncOffsetPagination", "AsyncOffsetPagination"]
12
+ __all__ = ["SyncPageTokenPagination", "AsyncPageTokenPagination", "SyncOffsetPagination", "AsyncOffsetPagination"]
13
13
 
14
14
  _BaseModelT = TypeVar("_BaseModelT", bound=BaseModel)
15
15
 
16
16
  _T = TypeVar("_T")
17
17
 
18
18
 
19
+ class SyncPageTokenPagination(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
20
+ items: List[_T]
21
+ next_page_token: Optional[str] = None
22
+ has_more: Optional[bool] = None
23
+
24
+ @override
25
+ def _get_page_items(self) -> List[_T]:
26
+ items = self.items
27
+ if not items:
28
+ return []
29
+ return items
30
+
31
+ @override
32
+ def has_next_page(self) -> bool:
33
+ has_more = self.has_more
34
+ if has_more is not None and has_more is False:
35
+ return False
36
+
37
+ return super().has_next_page()
38
+
39
+ @override
40
+ def next_page_info(self) -> Optional[PageInfo]:
41
+ next_page_token = self.next_page_token
42
+ if not next_page_token:
43
+ return None
44
+
45
+ return PageInfo(params={"page_token": next_page_token})
46
+
47
+ @classmethod
48
+ def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
49
+ return cls.construct(
50
+ None,
51
+ **{
52
+ **(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
53
+ "next_page_token": response.headers.get("X-Next-Page-Token"),
54
+ "has_more": maybe_coerce_boolean(response.headers.get("X-Has-More")),
55
+ },
56
+ )
57
+
58
+
59
+ class AsyncPageTokenPagination(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
60
+ items: List[_T]
61
+ next_page_token: Optional[str] = None
62
+ has_more: Optional[bool] = None
63
+
64
+ @override
65
+ def _get_page_items(self) -> List[_T]:
66
+ items = self.items
67
+ if not items:
68
+ return []
69
+ return items
70
+
71
+ @override
72
+ def has_next_page(self) -> bool:
73
+ has_more = self.has_more
74
+ if has_more is not None and has_more is False:
75
+ return False
76
+
77
+ return super().has_next_page()
78
+
79
+ @override
80
+ def next_page_info(self) -> Optional[PageInfo]:
81
+ next_page_token = self.next_page_token
82
+ if not next_page_token:
83
+ return None
84
+
85
+ return PageInfo(params={"page_token": next_page_token})
86
+
87
+ @classmethod
88
+ def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
89
+ return cls.construct(
90
+ None,
91
+ **{
92
+ **(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
93
+ "next_page_token": response.headers.get("X-Next-Page-Token"),
94
+ "has_more": maybe_coerce_boolean(response.headers.get("X-Has-More")),
95
+ },
96
+ )
97
+
98
+
19
99
  class SyncOffsetPagination(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
20
100
  items: List[_T]
21
101
  has_more: Optional[bool] = None
@@ -56,6 +56,14 @@ from .projects import (
56
56
  ProjectsResourceWithStreamingResponse,
57
57
  AsyncProjectsResourceWithStreamingResponse,
58
58
  )
59
+ from .audit_logs import (
60
+ AuditLogsResource,
61
+ AsyncAuditLogsResource,
62
+ AuditLogsResourceWithRawResponse,
63
+ AsyncAuditLogsResourceWithRawResponse,
64
+ AuditLogsResourceWithStreamingResponse,
65
+ AsyncAuditLogsResourceWithStreamingResponse,
66
+ )
59
67
  from .extensions import (
60
68
  ExtensionsResource,
61
69
  AsyncExtensionsResource,
@@ -186,6 +194,12 @@ __all__ = [
186
194
  "AsyncOrganizationResourceWithRawResponse",
187
195
  "OrganizationResourceWithStreamingResponse",
188
196
  "AsyncOrganizationResourceWithStreamingResponse",
197
+ "AuditLogsResource",
198
+ "AsyncAuditLogsResource",
199
+ "AuditLogsResourceWithRawResponse",
200
+ "AsyncAuditLogsResourceWithRawResponse",
201
+ "AuditLogsResourceWithStreamingResponse",
202
+ "AsyncAuditLogsResourceWithStreamingResponse",
189
203
  "APIKeysResource",
190
204
  "AsyncAPIKeysResource",
191
205
  "APIKeysResourceWithRawResponse",
@@ -0,0 +1,269 @@
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 Union
6
+ from datetime import datetime
7
+
8
+ import httpx
9
+
10
+ from ..types import audit_log_list_params
11
+ from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
12
+ from .._utils import maybe_transform
13
+ from .._compat import cached_property
14
+ from .._resource import SyncAPIResource, AsyncAPIResource
15
+ from .._response import (
16
+ to_raw_response_wrapper,
17
+ to_streamed_response_wrapper,
18
+ async_to_raw_response_wrapper,
19
+ async_to_streamed_response_wrapper,
20
+ )
21
+ from ..pagination import SyncPageTokenPagination, AsyncPageTokenPagination
22
+ from .._base_client import AsyncPaginator, make_request_options
23
+ from ..types.audit_log_entry import AuditLogEntry
24
+
25
+ __all__ = ["AuditLogsResource", "AsyncAuditLogsResource"]
26
+
27
+
28
+ class AuditLogsResource(SyncAPIResource):
29
+ """Read audit log records for the authenticated organization."""
30
+
31
+ @cached_property
32
+ def with_raw_response(self) -> AuditLogsResourceWithRawResponse:
33
+ """
34
+ This property can be used as a prefix for any HTTP method call to return
35
+ the raw response object instead of the parsed content.
36
+
37
+ For more information, see https://www.github.com/kernel/kernel-python-sdk#accessing-raw-response-data-eg-headers
38
+ """
39
+ return AuditLogsResourceWithRawResponse(self)
40
+
41
+ @cached_property
42
+ def with_streaming_response(self) -> AuditLogsResourceWithStreamingResponse:
43
+ """
44
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
45
+
46
+ For more information, see https://www.github.com/kernel/kernel-python-sdk#with_streaming_response
47
+ """
48
+ return AuditLogsResourceWithStreamingResponse(self)
49
+
50
+ def list(
51
+ self,
52
+ *,
53
+ end: Union[str, datetime],
54
+ start: Union[str, datetime],
55
+ auth_strategy: str | Omit = omit,
56
+ exclude_method: str | Omit = omit,
57
+ limit: int | Omit = omit,
58
+ method: str | Omit = omit,
59
+ page_token: str | Omit = omit,
60
+ search: str | Omit = omit,
61
+ search_user_id: SequenceNotStr[str] | Omit = omit,
62
+ service: str | Omit = omit,
63
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
64
+ # The extra values given here take precedence over values defined on the client or passed to this method.
65
+ extra_headers: Headers | None = None,
66
+ extra_query: Query | None = None,
67
+ extra_body: Body | None = None,
68
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
69
+ ) -> SyncPageTokenPagination[AuditLogEntry]:
70
+ """API for searching audit logs.
71
+
72
+ Limited to at most 30 day search, returns up to
73
+ 100 records per page. Not recommended for bulk export.
74
+
75
+ Args:
76
+ end: Upper bound (exclusive) for the audit record timestamp.
77
+
78
+ start: Lower bound (inclusive) for the audit record timestamp.
79
+
80
+ auth_strategy: Filter by authentication strategy.
81
+
82
+ exclude_method: Filter out results by HTTP method.
83
+
84
+ limit: Maximum number of results to return.
85
+
86
+ method: Filter by HTTP method.
87
+
88
+ page_token: Opaque page token from X-Next-Page-Token for the next page of older records.
89
+
90
+ search: Free-text search over path, user ID, email, client IP, and status.
91
+
92
+ search_user_id: Additional user IDs to OR into free-text search.
93
+
94
+ service: Filter by service name.
95
+
96
+ extra_headers: Send extra headers
97
+
98
+ extra_query: Add additional query parameters to the request
99
+
100
+ extra_body: Add additional JSON properties to the request
101
+
102
+ timeout: Override the client-level default timeout for this request, in seconds
103
+ """
104
+ return self._get_api_list(
105
+ "/audit-logs",
106
+ page=SyncPageTokenPagination[AuditLogEntry],
107
+ options=make_request_options(
108
+ extra_headers=extra_headers,
109
+ extra_query=extra_query,
110
+ extra_body=extra_body,
111
+ timeout=timeout,
112
+ query=maybe_transform(
113
+ {
114
+ "end": end,
115
+ "start": start,
116
+ "auth_strategy": auth_strategy,
117
+ "exclude_method": exclude_method,
118
+ "limit": limit,
119
+ "method": method,
120
+ "page_token": page_token,
121
+ "search": search,
122
+ "search_user_id": search_user_id,
123
+ "service": service,
124
+ },
125
+ audit_log_list_params.AuditLogListParams,
126
+ ),
127
+ ),
128
+ model=AuditLogEntry,
129
+ )
130
+
131
+
132
+ class AsyncAuditLogsResource(AsyncAPIResource):
133
+ """Read audit log records for the authenticated organization."""
134
+
135
+ @cached_property
136
+ def with_raw_response(self) -> AsyncAuditLogsResourceWithRawResponse:
137
+ """
138
+ This property can be used as a prefix for any HTTP method call to return
139
+ the raw response object instead of the parsed content.
140
+
141
+ For more information, see https://www.github.com/kernel/kernel-python-sdk#accessing-raw-response-data-eg-headers
142
+ """
143
+ return AsyncAuditLogsResourceWithRawResponse(self)
144
+
145
+ @cached_property
146
+ def with_streaming_response(self) -> AsyncAuditLogsResourceWithStreamingResponse:
147
+ """
148
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
149
+
150
+ For more information, see https://www.github.com/kernel/kernel-python-sdk#with_streaming_response
151
+ """
152
+ return AsyncAuditLogsResourceWithStreamingResponse(self)
153
+
154
+ def list(
155
+ self,
156
+ *,
157
+ end: Union[str, datetime],
158
+ start: Union[str, datetime],
159
+ auth_strategy: str | Omit = omit,
160
+ exclude_method: str | Omit = omit,
161
+ limit: int | Omit = omit,
162
+ method: str | Omit = omit,
163
+ page_token: str | Omit = omit,
164
+ search: str | Omit = omit,
165
+ search_user_id: SequenceNotStr[str] | Omit = omit,
166
+ service: str | Omit = omit,
167
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
168
+ # The extra values given here take precedence over values defined on the client or passed to this method.
169
+ extra_headers: Headers | None = None,
170
+ extra_query: Query | None = None,
171
+ extra_body: Body | None = None,
172
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
173
+ ) -> AsyncPaginator[AuditLogEntry, AsyncPageTokenPagination[AuditLogEntry]]:
174
+ """API for searching audit logs.
175
+
176
+ Limited to at most 30 day search, returns up to
177
+ 100 records per page. Not recommended for bulk export.
178
+
179
+ Args:
180
+ end: Upper bound (exclusive) for the audit record timestamp.
181
+
182
+ start: Lower bound (inclusive) for the audit record timestamp.
183
+
184
+ auth_strategy: Filter by authentication strategy.
185
+
186
+ exclude_method: Filter out results by HTTP method.
187
+
188
+ limit: Maximum number of results to return.
189
+
190
+ method: Filter by HTTP method.
191
+
192
+ page_token: Opaque page token from X-Next-Page-Token for the next page of older records.
193
+
194
+ search: Free-text search over path, user ID, email, client IP, and status.
195
+
196
+ search_user_id: Additional user IDs to OR into free-text search.
197
+
198
+ service: Filter by service name.
199
+
200
+ extra_headers: Send extra headers
201
+
202
+ extra_query: Add additional query parameters to the request
203
+
204
+ extra_body: Add additional JSON properties to the request
205
+
206
+ timeout: Override the client-level default timeout for this request, in seconds
207
+ """
208
+ return self._get_api_list(
209
+ "/audit-logs",
210
+ page=AsyncPageTokenPagination[AuditLogEntry],
211
+ options=make_request_options(
212
+ extra_headers=extra_headers,
213
+ extra_query=extra_query,
214
+ extra_body=extra_body,
215
+ timeout=timeout,
216
+ query=maybe_transform(
217
+ {
218
+ "end": end,
219
+ "start": start,
220
+ "auth_strategy": auth_strategy,
221
+ "exclude_method": exclude_method,
222
+ "limit": limit,
223
+ "method": method,
224
+ "page_token": page_token,
225
+ "search": search,
226
+ "search_user_id": search_user_id,
227
+ "service": service,
228
+ },
229
+ audit_log_list_params.AuditLogListParams,
230
+ ),
231
+ ),
232
+ model=AuditLogEntry,
233
+ )
234
+
235
+
236
+ class AuditLogsResourceWithRawResponse:
237
+ def __init__(self, audit_logs: AuditLogsResource) -> None:
238
+ self._audit_logs = audit_logs
239
+
240
+ self.list = to_raw_response_wrapper(
241
+ audit_logs.list,
242
+ )
243
+
244
+
245
+ class AsyncAuditLogsResourceWithRawResponse:
246
+ def __init__(self, audit_logs: AsyncAuditLogsResource) -> None:
247
+ self._audit_logs = audit_logs
248
+
249
+ self.list = async_to_raw_response_wrapper(
250
+ audit_logs.list,
251
+ )
252
+
253
+
254
+ class AuditLogsResourceWithStreamingResponse:
255
+ def __init__(self, audit_logs: AuditLogsResource) -> None:
256
+ self._audit_logs = audit_logs
257
+
258
+ self.list = to_streamed_response_wrapper(
259
+ audit_logs.list,
260
+ )
261
+
262
+
263
+ class AsyncAuditLogsResourceWithStreamingResponse:
264
+ def __init__(self, audit_logs: AsyncAuditLogsResource) -> None:
265
+ self._audit_logs = audit_logs
266
+
267
+ self.list = async_to_streamed_response_wrapper(
268
+ audit_logs.list,
269
+ )