kernel 0.107.0__tar.gz → 0.108.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 (507) hide show
  1. kernel-0.108.0/.release-please-manifest.json +3 -0
  2. {kernel-0.107.0 → kernel-0.108.0}/CHANGELOG.md +7 -0
  3. {kernel-0.107.0 → kernel-0.108.0}/PKG-INFO +1 -1
  4. {kernel-0.107.0 → kernel-0.108.0}/pyproject.toml +1 -1
  5. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_version.py +1 -1
  6. kernel-0.108.0/src/kernel/lib/config_registry_wait.py +63 -0
  7. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/config_registry/analyses.py +107 -0
  8. kernel-0.108.0/tests/test_config_registry_wait.py +181 -0
  9. kernel-0.107.0/.release-please-manifest.json +0 -3
  10. {kernel-0.107.0 → kernel-0.108.0}/.gitignore +0 -0
  11. {kernel-0.107.0 → kernel-0.108.0}/CONTRIBUTING.md +0 -0
  12. {kernel-0.107.0 → kernel-0.108.0}/LICENSE +0 -0
  13. {kernel-0.107.0 → kernel-0.108.0}/README.md +0 -0
  14. {kernel-0.107.0 → kernel-0.108.0}/SECURITY.md +0 -0
  15. {kernel-0.107.0 → kernel-0.108.0}/api.md +0 -0
  16. {kernel-0.107.0 → kernel-0.108.0}/bin/check-release-environment +0 -0
  17. {kernel-0.107.0 → kernel-0.108.0}/bin/publish-pypi +0 -0
  18. {kernel-0.107.0 → kernel-0.108.0}/examples/.keep +0 -0
  19. {kernel-0.107.0 → kernel-0.108.0}/examples/browser_routing.py +0 -0
  20. {kernel-0.107.0 → kernel-0.108.0}/examples/browser_telemetry.py +0 -0
  21. {kernel-0.107.0 → kernel-0.108.0}/noxfile.py +0 -0
  22. {kernel-0.107.0 → kernel-0.108.0}/release-please-config.json +0 -0
  23. {kernel-0.107.0 → kernel-0.108.0}/requirements-dev.lock +0 -0
  24. {kernel-0.107.0 → kernel-0.108.0}/requirements.lock +0 -0
  25. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/__init__.py +0 -0
  26. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_base_client.py +0 -0
  27. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_client.py +0 -0
  28. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_compat.py +0 -0
  29. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_constants.py +0 -0
  30. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_exceptions.py +0 -0
  31. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_files.py +0 -0
  32. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_models.py +0 -0
  33. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_qs.py +0 -0
  34. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_resource.py +0 -0
  35. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_response.py +0 -0
  36. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_streaming.py +0 -0
  37. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_types.py +0 -0
  38. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/__init__.py +0 -0
  39. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_compat.py +0 -0
  40. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_datetime_parse.py +0 -0
  41. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_json.py +0 -0
  42. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_logs.py +0 -0
  43. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_path.py +0 -0
  44. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_proxy.py +0 -0
  45. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_reflection.py +0 -0
  46. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_resources_proxy.py +0 -0
  47. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_streams.py +0 -0
  48. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_sync.py +0 -0
  49. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_transform.py +0 -0
  50. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_typing.py +0 -0
  51. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/_utils/_utils.py +0 -0
  52. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/app_framework.py +0 -0
  53. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/.keep +0 -0
  54. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/audit_log_download.py +0 -0
  55. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
  56. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
  57. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/browser_routing/routing.py +0 -0
  58. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/browser_routing/util.py +0 -0
  59. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/lib/multipart.py +0 -0
  60. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/pagination.py +0 -0
  61. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/py.typed +0 -0
  62. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/__init__.py +0 -0
  63. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/api_keys.py +0 -0
  64. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/apps.py +0 -0
  65. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/audit_logs/__init__.py +0 -0
  66. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/audit_logs/audit_logs.py +0 -0
  67. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/audit_logs/export_destinations.py +0 -0
  68. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/auth/__init__.py +0 -0
  69. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/auth/auth.py +0 -0
  70. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/auth/connections.py +0 -0
  71. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/auth/context.py +0 -0
  72. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browser_pools.py +0 -0
  73. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/__init__.py +0 -0
  74. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/browsers.py +0 -0
  75. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/computer.py +0 -0
  76. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
  77. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
  78. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
  79. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/logs.py +0 -0
  80. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/playwright.py +0 -0
  81. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/process.py +0 -0
  82. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/replays.py +0 -0
  83. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/telemetry.py +0 -0
  84. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/browsers/webmcp.py +0 -0
  85. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/config_registry/__init__.py +0 -0
  86. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/config_registry/config_registry.py +0 -0
  87. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/credential_providers.py +0 -0
  88. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/credentials.py +0 -0
  89. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/deployments.py +0 -0
  90. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/extensions.py +0 -0
  91. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/invocations.py +0 -0
  92. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/organization/__init__.py +0 -0
  93. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/organization/entitlements.py +0 -0
  94. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/organization/limits.py +0 -0
  95. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/organization/organization.py +0 -0
  96. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/profiles.py +0 -0
  97. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/projects/__init__.py +0 -0
  98. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/projects/limits.py +0 -0
  99. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/projects/projects.py +0 -0
  100. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/proxies.py +0 -0
  101. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/telemetry/__init__.py +0 -0
  102. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/telemetry/destinations.py +0 -0
  103. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/telemetry/telemetry.py +0 -0
  104. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/vault_provider_configs.py +0 -0
  105. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/vaults/__init__.py +0 -0
  106. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/vaults/items.py +0 -0
  107. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/resources/vaults/vaults.py +0 -0
  108. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/__init__.py +0 -0
  109. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/analysis.py +0 -0
  110. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/analysis_summary.py +0 -0
  111. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key.py +0 -0
  112. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key_create_params.py +0 -0
  113. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key_list_params.py +0 -0
  114. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key_retrieve_params.py +0 -0
  115. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key_rotate_params.py +0 -0
  116. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/api_key_update_params.py +0 -0
  117. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/app_list_params.py +0 -0
  118. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/app_list_response.py +0 -0
  119. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_log_entry.py +0 -0
  120. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_log_export_chunk_params.py +0 -0
  121. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_log_list_params.py +0 -0
  122. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/__init__.py +0 -0
  123. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/audit_log_export_destination.py +0 -0
  124. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/audit_log_export_destination_test_result.py +0 -0
  125. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/export_destination_create_params.py +0 -0
  126. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/export_destination_list_params.py +0 -0
  127. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/audit_logs/export_destination_update_params.py +0 -0
  128. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/__init__.py +0 -0
  129. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/auth_context.py +0 -0
  130. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_create_params.py +0 -0
  131. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
  132. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_list_params.py +0 -0
  133. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_login_params.py +0 -0
  134. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
  135. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_timeline_params.py +0 -0
  136. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/connection_update_params.py +0 -0
  137. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/login_response.py +0 -0
  138. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/managed_auth.py +0 -0
  139. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/managed_auth_browser_config.py +0 -0
  140. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/managed_auth_browser_config_param.py +0 -0
  141. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/managed_auth_timeline_event.py +0 -0
  142. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
  143. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser.py +0 -0
  144. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_create_params.py +0 -0
  145. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_create_response.py +0 -0
  146. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_curl_params.py +0 -0
  147. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_curl_response.py +0 -0
  148. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_list_params.py +0 -0
  149. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_list_response.py +0 -0
  150. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
  151. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_memory.py +0 -0
  152. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_memory_request.py +0 -0
  153. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_network_config.py +0 -0
  154. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_network_config_param.py +0 -0
  155. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool.py +0 -0
  156. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
  157. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
  158. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_create_params.py +0 -0
  159. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
  160. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_list_params.py +0 -0
  161. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_ref.py +0 -0
  162. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_release_params.py +0 -0
  163. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_pool_update_params.py +0 -0
  164. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_proxy.py +0 -0
  165. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_proxy_config.py +0 -0
  166. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_proxy_config_param.py +0 -0
  167. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_proxy_mode.py +0 -0
  168. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_repl_content.py +0 -0
  169. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_repl_image_content.py +0 -0
  170. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_repl_params.py +0 -0
  171. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_repl_result.py +0 -0
  172. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_repl_text_content.py +0 -0
  173. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_retrieve_params.py +0 -0
  174. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_retrieve_response.py +0 -0
  175. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_update_params.py +0 -0
  176. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_update_response.py +0 -0
  177. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browser_usage.py +0 -0
  178. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/__init__.py +0 -0
  179. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
  180. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
  181. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_captcha_challenge_result_event.py +0 -0
  182. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
  183. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_captcha_solve_started_event.py +0 -0
  184. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_cdp_command_event.py +0 -0
  185. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_cdp_command_method.py +0 -0
  186. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
  187. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
  188. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
  189. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
  190. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
  191. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
  192. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
  193. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
  194. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
  195. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
  196. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
  197. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
  198. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
  199. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
  200. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
  201. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
  202. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
  203. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
  204. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
  205. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
  206. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
  207. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_crashed_event.py +0 -0
  208. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
  209. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
  210. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
  211. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
  212. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
  213. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
  214. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
  215. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
  216. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_platform_api_call_event.py +0 -0
  217. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_proxy_error_event.py +0 -0
  218. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
  219. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
  220. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
  221. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
  222. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
  223. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
  224. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_cdp_control_config.py +0 -0
  225. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_cdp_control_config_param.py +0 -0
  226. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
  227. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_control_config.py +0 -0
  228. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_control_config_param.py +0 -0
  229. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
  230. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_export_config.py +0 -0
  231. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/browser_telemetry_otlp_export_config.py +0 -0
  232. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
  233. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
  234. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
  235. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
  236. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
  237. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
  238. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
  239. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
  240. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
  241. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
  242. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
  243. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
  244. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
  245. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
  246. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
  247. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
  248. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
  249. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
  250. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
  251. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
  252. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
  253. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_move_params.py +0 -0
  254. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
  255. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
  256. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
  257. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
  258. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
  259. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
  260. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
  261. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
  262. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
  263. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/invocation_result.py +0 -0
  264. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
  265. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
  266. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
  267. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
  268. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
  269. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
  270. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
  271. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
  272. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
  273. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
  274. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
  275. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_status_response.py +0 -0
  276. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
  277. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
  278. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
  279. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
  280. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
  281. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
  282. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/telemetry_events_params.py +0 -0
  283. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/telemetry_events_response.py +0 -0
  284. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/telemetry_stream_params.py +0 -0
  285. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
  286. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/tool.py +0 -0
  287. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/tool_annotations.py +0 -0
  288. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/tool_frame.py +0 -0
  289. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/tool_source.py +0 -0
  290. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/tools_response.py +0 -0
  291. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/browsers/webmcp_invoke_tool_params.py +0 -0
  292. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry/__init__.py +0 -0
  293. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry/analysis_list_params.py +0 -0
  294. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry_list_params.py +0 -0
  295. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry_lookup_params.py +0 -0
  296. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry_resolve_params.py +0 -0
  297. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/config_registry_response.py +0 -0
  298. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/created_api_key.py +0 -0
  299. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential.py +0 -0
  300. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_create_params.py +0 -0
  301. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_list_params.py +0 -0
  302. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider.py +0 -0
  303. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_create_params.py +0 -0
  304. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_item.py +0 -0
  305. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
  306. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_list_params.py +0 -0
  307. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_test_result.py +0 -0
  308. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_provider_update_params.py +0 -0
  309. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_totp_code_response.py +0 -0
  310. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/credential_update_params.py +0 -0
  311. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_create_params.py +0 -0
  312. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_create_response.py +0 -0
  313. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_follow_params.py +0 -0
  314. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_follow_response.py +0 -0
  315. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_list_params.py +0 -0
  316. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_list_response.py +0 -0
  317. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
  318. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/deployment_state_event.py +0 -0
  319. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/evidence.py +0 -0
  320. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
  321. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_get_response.py +0 -0
  322. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_list_params.py +0 -0
  323. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_list_response.py +0 -0
  324. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_upload_params.py +0 -0
  325. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/extension_upload_response.py +0 -0
  326. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_create_params.py +0 -0
  327. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_create_response.py +0 -0
  328. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_follow_params.py +0 -0
  329. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_follow_response.py +0 -0
  330. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
  331. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_list_params.py +0 -0
  332. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_list_response.py +0 -0
  333. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
  334. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_state_event.py +0 -0
  335. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_update_params.py +0 -0
  336. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/invocation_update_response.py +0 -0
  337. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/lookup_response.py +0 -0
  338. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/no_recommendation.py +0 -0
  339. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/organization/__init__.py +0 -0
  340. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/organization/limit_update_params.py +0 -0
  341. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/organization/org_entitlements.py +0 -0
  342. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/organization/org_limits.py +0 -0
  343. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/profile.py +0 -0
  344. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/profile_create_params.py +0 -0
  345. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/profile_download_params.py +0 -0
  346. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/profile_list_params.py +0 -0
  347. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/profile_update_params.py +0 -0
  348. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/project.py +0 -0
  349. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/project_create_params.py +0 -0
  350. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/project_list_params.py +0 -0
  351. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/project_update_params.py +0 -0
  352. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/projects/__init__.py +0 -0
  353. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/projects/limit_update_params.py +0 -0
  354. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/projects/project_limits.py +0 -0
  355. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy.py +0 -0
  356. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_check_params.py +0 -0
  357. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_check_response.py +0 -0
  358. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_create_params.py +0 -0
  359. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_create_response.py +0 -0
  360. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_list_params.py +0 -0
  361. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_list_response.py +0 -0
  362. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
  363. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_update_params.py +0 -0
  364. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/proxy_update_response.py +0 -0
  365. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/recommendation.py +0 -0
  366. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/recommendation_result.py +0 -0
  367. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/recommendation_summary.py +0 -0
  368. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/__init__.py +0 -0
  369. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/app_action.py +0 -0
  370. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/browser_extension.py +0 -0
  371. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/browser_profile.py +0 -0
  372. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/browser_viewport.py +0 -0
  373. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/error_detail.py +0 -0
  374. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/error_event.py +0 -0
  375. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/error_model.py +0 -0
  376. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
  377. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared/log_event.py +0 -0
  378. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared_params/__init__.py +0 -0
  379. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
  380. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
  381. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
  382. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/tags.py +0 -0
  383. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/tags_param.py +0 -0
  384. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/target.py +0 -0
  385. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/telemetry/__init__.py +0 -0
  386. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/telemetry/destination_create_params.py +0 -0
  387. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/telemetry/destination_list_params.py +0 -0
  388. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/telemetry/destination_update_params.py +0 -0
  389. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/telemetry/otlp_destination.py +0 -0
  390. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault.py +0 -0
  391. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_list_params.py +0 -0
  392. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_provider_config.py +0 -0
  393. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_provider_config_create_params.py +0 -0
  394. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_provider_config_list_params.py +0 -0
  395. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_provider_config_update_params.py +0 -0
  396. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_reference.py +0 -0
  397. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_reference_param.py +0 -0
  398. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vault_upsert_params.py +0 -0
  399. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/__init__.py +0 -0
  400. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/agentcard_checkout_authorization.py +0 -0
  401. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/agentcard_checkout_preparation.py +0 -0
  402. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/agentcard_prepared_processor.py +0 -0
  403. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/authorize_vault_item_operation_request_param.py +0 -0
  404. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/card_vault_item_spec.py +0 -0
  405. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/card_vault_item_spec_param.py +0 -0
  406. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/card_vault_item_state.py +0 -0
  407. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/collect_vault_item_operation_request_param.py +0 -0
  408. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_collection_action.py +0 -0
  409. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_field_definition.py +0 -0
  410. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_field_input_param.py +0 -0
  411. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_field_state.py +0 -0
  412. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_field_type.py +0 -0
  413. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_field_update_param.py +0 -0
  414. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item.py +0 -0
  415. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_request_param.py +0 -0
  416. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_spec.py +0 -0
  417. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_spec_input_param.py +0 -0
  418. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_spec_update_param.py +0 -0
  419. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_state.py +0 -0
  420. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/credential_vault_item_update_request_param.py +0 -0
  421. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/fill_vault_item_operation_request_param.py +0 -0
  422. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/fill_vault_item_operation_result.py +0 -0
  423. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_events_params.py +0 -0
  424. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_events_response.py +0 -0
  425. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_list_response.py +0 -0
  426. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_perform_operation_params.py +0 -0
  427. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_retrieve_params.py +0 -0
  428. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_update_params.py +0 -0
  429. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/item_upsert_params.py +0 -0
  430. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/prepare_checkout_vault_item_operation_request_param.py +0 -0
  431. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_card_aliases.py +0 -0
  432. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_checkout_context_param.py +0 -0
  433. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_fill_field_param.py +0 -0
  434. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_fill_field_result.py +0 -0
  435. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_item.py +0 -0
  436. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_item_action.py +0 -0
  437. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_item_event.py +0 -0
  438. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_item_operation_response.py +0 -0
  439. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/vault_payment_method.py +0 -0
  440. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/wallet_vault_item_spec.py +0 -0
  441. {kernel-0.107.0 → kernel-0.108.0}/src/kernel/types/vaults/wallet_vault_item_state.py +0 -0
  442. {kernel-0.107.0 → kernel-0.108.0}/tests/__init__.py +0 -0
  443. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/__init__.py +0 -0
  444. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/audit_logs/__init__.py +0 -0
  445. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/audit_logs/test_export_destinations.py +0 -0
  446. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/auth/__init__.py +0 -0
  447. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/auth/test_connections.py +0 -0
  448. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/auth/test_context.py +0 -0
  449. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/__init__.py +0 -0
  450. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
  451. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
  452. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_computer.py +0 -0
  453. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_fs.py +0 -0
  454. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_logs.py +0 -0
  455. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_playwright.py +0 -0
  456. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_process.py +0 -0
  457. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_replays.py +0 -0
  458. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_telemetry.py +0 -0
  459. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/browsers/test_webmcp.py +0 -0
  460. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/config_registry/__init__.py +0 -0
  461. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/config_registry/test_analyses.py +0 -0
  462. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/organization/__init__.py +0 -0
  463. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/organization/test_entitlements.py +0 -0
  464. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/organization/test_limits.py +0 -0
  465. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/projects/__init__.py +0 -0
  466. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/projects/test_limits.py +0 -0
  467. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/telemetry/__init__.py +0 -0
  468. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/telemetry/test_destinations.py +0 -0
  469. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_api_keys.py +0 -0
  470. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_apps.py +0 -0
  471. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_audit_logs.py +0 -0
  472. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_browser_pools.py +0 -0
  473. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_browsers.py +0 -0
  474. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_config_registry.py +0 -0
  475. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_credential_providers.py +0 -0
  476. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_credentials.py +0 -0
  477. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_deployments.py +0 -0
  478. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_extensions.py +0 -0
  479. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_invocations.py +0 -0
  480. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_profiles.py +0 -0
  481. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_projects.py +0 -0
  482. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_proxies.py +0 -0
  483. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_vault_provider_configs.py +0 -0
  484. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/test_vaults.py +0 -0
  485. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/vaults/__init__.py +0 -0
  486. {kernel-0.107.0 → kernel-0.108.0}/tests/api_resources/vaults/test_items.py +0 -0
  487. {kernel-0.107.0 → kernel-0.108.0}/tests/conftest.py +0 -0
  488. {kernel-0.107.0 → kernel-0.108.0}/tests/sample_file.txt +0 -0
  489. {kernel-0.107.0 → kernel-0.108.0}/tests/test_audit_log_download.py +0 -0
  490. {kernel-0.107.0 → kernel-0.108.0}/tests/test_browser_routing.py +0 -0
  491. {kernel-0.107.0 → kernel-0.108.0}/tests/test_client.py +0 -0
  492. {kernel-0.107.0 → kernel-0.108.0}/tests/test_extract_files.py +0 -0
  493. {kernel-0.107.0 → kernel-0.108.0}/tests/test_files.py +0 -0
  494. {kernel-0.107.0 → kernel-0.108.0}/tests/test_models.py +0 -0
  495. {kernel-0.107.0 → kernel-0.108.0}/tests/test_pagination.py +0 -0
  496. {kernel-0.107.0 → kernel-0.108.0}/tests/test_qs.py +0 -0
  497. {kernel-0.107.0 → kernel-0.108.0}/tests/test_required_args.py +0 -0
  498. {kernel-0.107.0 → kernel-0.108.0}/tests/test_response.py +0 -0
  499. {kernel-0.107.0 → kernel-0.108.0}/tests/test_streaming.py +0 -0
  500. {kernel-0.107.0 → kernel-0.108.0}/tests/test_transform.py +0 -0
  501. {kernel-0.107.0 → kernel-0.108.0}/tests/test_utils/test_datetime_parse.py +0 -0
  502. {kernel-0.107.0 → kernel-0.108.0}/tests/test_utils/test_json.py +0 -0
  503. {kernel-0.107.0 → kernel-0.108.0}/tests/test_utils/test_path.py +0 -0
  504. {kernel-0.107.0 → kernel-0.108.0}/tests/test_utils/test_proxy.py +0 -0
  505. {kernel-0.107.0 → kernel-0.108.0}/tests/test_utils/test_typing.py +0 -0
  506. {kernel-0.107.0 → kernel-0.108.0}/tests/test_vault_operation_retries.py +0 -0
  507. {kernel-0.107.0 → kernel-0.108.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.108.0"
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.108.0](https://github.com/kernel/kernel-python-sdk/compare/v0.107.0...v0.108.0) (2026-09-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * feat: add config registry analysis waiter ([e38c887](https://github.com/kernel/kernel-python-sdk/commit/e38c8878f9f80f5d28fce9f92df6f0a18a48e2bb))
9
+
3
10
  ## [0.107.0](https://github.com/kernel/kernel-python-sdk/compare/v0.106.0...v0.107.0) (2026-09-16)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kernel
3
- Version: 0.107.0
3
+ Version: 0.108.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel"
3
- version = "0.107.0"
3
+ version = "0.108.0"
4
4
  description = "The official Python library for the kernel API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -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.107.0" # x-release-please-version
4
+ __version__ = "0.108.0" # x-release-please-version
@@ -0,0 +1,63 @@
1
+ from __future__ import annotations
2
+
3
+ import math
4
+ import time
5
+ import random
6
+ from datetime import datetime
7
+
8
+ from .._types import Omit, Headers
9
+ from .._exceptions import KernelError
10
+ from ..types.config_registry_response import ConfigRegistryResponse
11
+
12
+ DEFAULT_CONFIG_REGISTRY_POLL_INTERVAL = 5.0
13
+ _TERMINAL_STATUSES = frozenset({"completed", "failed", "canceled", "expired"})
14
+
15
+
16
+ def validate_wait_options(poll_interval: float, max_wait_seconds: float | None) -> None:
17
+ if not math.isfinite(poll_interval) or poll_interval <= 0:
18
+ raise ValueError("Expected a finite, positive value for `poll_interval`")
19
+ if max_wait_seconds is not None and (not math.isfinite(max_wait_seconds) or max_wait_seconds < 0):
20
+ raise ValueError("Expected a finite, non-negative value for `max_wait_seconds`")
21
+
22
+
23
+ def poll_headers(extra_headers: Headers | None) -> Headers:
24
+ headers: dict[str, str | Omit] = dict(extra_headers or {})
25
+ headers["X-Stainless-Poll-Helper"] = "true"
26
+ return headers
27
+
28
+
29
+ def poll_delay(poll_interval: float) -> float:
30
+ return poll_interval * random.uniform(0.9, 1.1)
31
+
32
+
33
+ def wait_timeout_error(id: str, polls: int, last_status: str | None, started_at: float) -> TimeoutError:
34
+ elapsed = time.monotonic() - started_at
35
+ return TimeoutError(
36
+ f"Timed out waiting for config registry analysis {id!r} after {elapsed:.1f}s "
37
+ f"and {polls} polls; last status was {last_status!r}"
38
+ )
39
+
40
+
41
+ def analysis_finished(response: ConfigRegistryResponse, requested_id: str) -> tuple[bool, str]:
42
+ analysis = response.analysis
43
+ if analysis is None:
44
+ raise KernelError(f"Config registry response for {requested_id!r} is missing an analysis")
45
+
46
+ analysis_id = getattr(analysis, "id", None)
47
+ if not isinstance(analysis_id, str) or not analysis_id:
48
+ raise KernelError(f"Config registry response for {requested_id!r} has no valid analysis ID")
49
+ if analysis_id != requested_id:
50
+ raise KernelError(f"Config registry response for {requested_id!r} returned analysis {analysis_id!r}")
51
+
52
+ status = getattr(analysis, "status", None)
53
+ if not isinstance(status, str) or not status:
54
+ raise KernelError(f"Config registry analysis {requested_id!r} has no valid status")
55
+
56
+ if "finished_at" not in analysis.model_fields_set:
57
+ raise KernelError(f"Config registry analysis {requested_id!r} is missing `finished_at`")
58
+
59
+ finished_at = getattr(analysis, "finished_at", None)
60
+ if finished_at is not None and not isinstance(finished_at, datetime):
61
+ raise KernelError(f"Config registry analysis {requested_id!r} has an invalid `finished_at`")
62
+
63
+ return finished_at is not None or status in _TERMINAL_STATUSES, status
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import time
6
+
5
7
  import httpx
6
8
 
7
9
  from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
@@ -18,6 +20,14 @@ from ...pagination import SyncOffsetPagination, AsyncOffsetPagination
18
20
  from ..._base_client import AsyncPaginator, make_request_options
19
21
  from ...types.config_registry import analysis_list_params
20
22
  from ...types.analysis_summary import AnalysisSummary
23
+ from ...lib.config_registry_wait import (
24
+ DEFAULT_CONFIG_REGISTRY_POLL_INTERVAL,
25
+ poll_delay,
26
+ poll_headers,
27
+ analysis_finished,
28
+ wait_timeout_error,
29
+ validate_wait_options,
30
+ )
21
31
  from ...types.config_registry_response import ConfigRegistryResponse
22
32
 
23
33
  __all__ = ["AnalysesResource", "AsyncAnalysesResource"]
@@ -79,6 +89,54 @@ class AnalysesResource(SyncAPIResource):
79
89
  cast_to=ConfigRegistryResponse,
80
90
  )
81
91
 
92
+ def wait_for_result(
93
+ self,
94
+ id: str,
95
+ *,
96
+ poll_interval: float = DEFAULT_CONFIG_REGISTRY_POLL_INTERVAL,
97
+ max_wait_seconds: float | None = None,
98
+ extra_headers: Headers | None = None,
99
+ extra_query: Query | None = None,
100
+ extra_body: Body | None = None,
101
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
102
+ ) -> ConfigRegistryResponse:
103
+ """Wait for an analysis to finish and return its complete result.
104
+
105
+ The first retrieval happens immediately. ``max_wait_seconds`` is a soft
106
+ polling deadline: an in-flight request and its normal retries may finish
107
+ after it. Timing out does not cancel the remote analysis.
108
+ """
109
+ validate_wait_options(poll_interval, max_wait_seconds)
110
+ started_at = time.monotonic()
111
+ deadline = started_at + max_wait_seconds if max_wait_seconds is not None else None
112
+ headers = poll_headers(extra_headers)
113
+ polls = 0
114
+ last_status: str | None = None
115
+
116
+ while True:
117
+ if polls > 0 and deadline is not None and time.monotonic() >= deadline:
118
+ raise wait_timeout_error(id, polls, last_status, started_at)
119
+
120
+ response = self.retrieve(
121
+ id,
122
+ extra_headers=headers,
123
+ extra_query=extra_query,
124
+ extra_body=extra_body,
125
+ timeout=timeout,
126
+ )
127
+ polls += 1
128
+ finished, last_status = analysis_finished(response, id)
129
+ if finished:
130
+ return response
131
+
132
+ delay = poll_delay(poll_interval)
133
+ if deadline is not None:
134
+ remaining = deadline - time.monotonic()
135
+ if remaining <= 0:
136
+ raise wait_timeout_error(id, polls, last_status, started_at)
137
+ delay = min(delay, remaining)
138
+ self._sleep(delay)
139
+
82
140
  def list(
83
141
  self,
84
142
  *,
@@ -220,6 +278,55 @@ class AsyncAnalysesResource(AsyncAPIResource):
220
278
  cast_to=ConfigRegistryResponse,
221
279
  )
222
280
 
281
+ async def wait_for_result(
282
+ self,
283
+ id: str,
284
+ *,
285
+ poll_interval: float = DEFAULT_CONFIG_REGISTRY_POLL_INTERVAL,
286
+ max_wait_seconds: float | None = None,
287
+ extra_headers: Headers | None = None,
288
+ extra_query: Query | None = None,
289
+ extra_body: Body | None = None,
290
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
291
+ ) -> ConfigRegistryResponse:
292
+ """Wait for an analysis to finish and return its complete result.
293
+
294
+ The first retrieval happens immediately. ``max_wait_seconds`` is a soft
295
+ polling deadline: an in-flight request and its normal retries may finish
296
+ after it. Timing out does not cancel the remote analysis. Cancelling the
297
+ calling task stops the wait without cancelling the remote analysis.
298
+ """
299
+ validate_wait_options(poll_interval, max_wait_seconds)
300
+ started_at = time.monotonic()
301
+ deadline = started_at + max_wait_seconds if max_wait_seconds is not None else None
302
+ headers = poll_headers(extra_headers)
303
+ polls = 0
304
+ last_status: str | None = None
305
+
306
+ while True:
307
+ if polls > 0 and deadline is not None and time.monotonic() >= deadline:
308
+ raise wait_timeout_error(id, polls, last_status, started_at)
309
+
310
+ response = await self.retrieve(
311
+ id,
312
+ extra_headers=headers,
313
+ extra_query=extra_query,
314
+ extra_body=extra_body,
315
+ timeout=timeout,
316
+ )
317
+ polls += 1
318
+ finished, last_status = analysis_finished(response, id)
319
+ if finished:
320
+ return response
321
+
322
+ delay = poll_delay(poll_interval)
323
+ if deadline is not None:
324
+ remaining = deadline - time.monotonic()
325
+ if remaining <= 0:
326
+ raise wait_timeout_error(id, polls, last_status, started_at)
327
+ delay = min(delay, remaining)
328
+ await self._sleep(delay)
329
+
223
330
  def list(
224
331
  self,
225
332
  *,
@@ -0,0 +1,181 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ from typing import Any
5
+ from collections.abc import Iterator
6
+
7
+ import httpx
8
+ import pytest
9
+
10
+ from kernel import Kernel, AsyncKernel
11
+ from kernel._exceptions import KernelError
12
+
13
+
14
+ def analysis_response(
15
+ status: str,
16
+ *,
17
+ analysis_id: str = "analysis-1",
18
+ finished_at: str | None = None,
19
+ ) -> dict[str, Any]:
20
+ return {
21
+ "analysis": {
22
+ "id": analysis_id,
23
+ "created_at": "2026-09-16T00:00:00Z",
24
+ "expires_at": "2026-09-16T00:45:00Z",
25
+ "failure": None,
26
+ "finished_at": finished_at,
27
+ "status": status,
28
+ "intent": None,
29
+ },
30
+ "recommendation": None,
31
+ "target": {
32
+ "domain": "example.com",
33
+ "host": "example.com",
34
+ "normalized": "https://example.com/",
35
+ },
36
+ "working_configurations": [],
37
+ "guidance": None,
38
+ "workload_outcome": None,
39
+ }
40
+
41
+
42
+ def response_sequence(payloads: list[dict[str, Any]]) -> tuple[httpx.MockTransport, list[httpx.Request]]:
43
+ remaining: Iterator[dict[str, Any]] = iter(payloads)
44
+ requests: list[httpx.Request] = []
45
+
46
+ def handler(request: httpx.Request) -> httpx.Response:
47
+ requests.append(request)
48
+ return httpx.Response(200, json=next(remaining))
49
+
50
+ return httpx.MockTransport(handler), requests
51
+
52
+
53
+ def test_wait_for_result_polls_unknown_unfinished_status_until_finished() -> None:
54
+ transport, requests = response_sequence(
55
+ [
56
+ analysis_response("running"),
57
+ analysis_response("queued"),
58
+ analysis_response("archived", finished_at="2026-09-16T00:01:00Z"),
59
+ ]
60
+ )
61
+
62
+ with httpx.Client(transport=transport) as http_client:
63
+ client = Kernel(api_key="test", base_url="https://api.example", http_client=http_client)
64
+ result = client.config_registry.analyses.wait_for_result(
65
+ "analysis-1",
66
+ poll_interval=0.001,
67
+ extra_headers={"X-Test": "preserved", "X-Stainless-Poll-Helper": "caller"},
68
+ )
69
+
70
+ assert result.analysis is not None
71
+ assert result.analysis.status == "archived"
72
+ assert len(requests) == 3
73
+ assert all(request.headers["X-Test"] == "preserved" for request in requests)
74
+ assert all(request.headers["X-Stainless-Poll-Helper"] == "true" for request in requests)
75
+
76
+
77
+ @pytest.mark.parametrize("status", ["completed", "failed", "canceled", "expired"])
78
+ def test_wait_for_result_returns_known_terminal_status_without_finished_at(status: str) -> None:
79
+ transport, requests = response_sequence([analysis_response(status)])
80
+
81
+ with httpx.Client(transport=transport) as http_client:
82
+ client = Kernel(api_key="test", base_url="https://api.example", http_client=http_client)
83
+ result = client.config_registry.analyses.wait_for_result("analysis-1")
84
+
85
+ assert result.analysis is not None
86
+ assert result.analysis.status == status
87
+ assert len(requests) == 1
88
+
89
+
90
+ def test_wait_for_result_zero_max_wait_reads_once_then_times_out() -> None:
91
+ transport, requests = response_sequence([analysis_response("running")])
92
+
93
+ with httpx.Client(transport=transport) as http_client:
94
+ client = Kernel(api_key="test", base_url="https://api.example", http_client=http_client)
95
+ with pytest.raises(TimeoutError, match="analysis-1"):
96
+ client.config_registry.analyses.wait_for_result("analysis-1", max_wait_seconds=0)
97
+
98
+ assert len(requests) == 1
99
+
100
+
101
+ @pytest.mark.parametrize(
102
+ "payload, message",
103
+ [
104
+ ({"analysis": None}, "missing an analysis"),
105
+ (analysis_response("running", analysis_id="analysis-2"), "analysis-2"),
106
+ ],
107
+ )
108
+ def test_wait_for_result_rejects_invalid_analysis_response(payload: dict[str, Any], message: str) -> None:
109
+ transport, _ = response_sequence([payload])
110
+
111
+ with httpx.Client(transport=transport) as http_client:
112
+ client = Kernel(api_key="test", base_url="https://api.example", http_client=http_client)
113
+ with pytest.raises(KernelError, match=message):
114
+ client.config_registry.analyses.wait_for_result("analysis-1")
115
+
116
+
117
+ def test_wait_for_result_rejects_missing_finished_at() -> None:
118
+ payload = analysis_response("running")
119
+ analysis = payload["analysis"]
120
+ assert isinstance(analysis, dict)
121
+ del analysis["finished_at"]
122
+ transport, _ = response_sequence([payload])
123
+
124
+ with httpx.Client(transport=transport) as http_client:
125
+ client = Kernel(api_key="test", base_url="https://api.example", http_client=http_client)
126
+ with pytest.raises(KernelError, match="finished_at"):
127
+ client.config_registry.analyses.wait_for_result("analysis-1")
128
+
129
+
130
+ @pytest.mark.parametrize(
131
+ "kwargs",
132
+ [
133
+ {"poll_interval": 0},
134
+ {"poll_interval": float("nan")},
135
+ {"max_wait_seconds": -1},
136
+ {"max_wait_seconds": float("inf")},
137
+ ],
138
+ )
139
+ def test_wait_for_result_rejects_invalid_timing_options(kwargs: dict[str, float]) -> None:
140
+ client = Kernel(api_key="test", base_url="https://api.example")
141
+
142
+ with pytest.raises(ValueError):
143
+ client.config_registry.analyses.wait_for_result("analysis-1", **kwargs) # type: ignore[arg-type]
144
+
145
+
146
+ async def test_async_wait_for_result_matches_sync_behavior() -> None:
147
+ transport, requests = response_sequence(
148
+ [
149
+ analysis_response("running"),
150
+ analysis_response("completed", finished_at="2026-09-16T00:01:00Z"),
151
+ ]
152
+ )
153
+
154
+ async with httpx.AsyncClient(transport=transport) as http_client:
155
+ client = AsyncKernel(api_key="test", base_url="https://api.example", http_client=http_client)
156
+ result = await client.config_registry.analyses.wait_for_result("analysis-1", poll_interval=0.001)
157
+
158
+ assert result.analysis is not None
159
+ assert result.analysis.status == "completed"
160
+ assert len(requests) == 2
161
+
162
+
163
+ async def test_async_wait_for_result_is_cancellable_during_poll_sleep() -> None:
164
+ first_request = asyncio.Event()
165
+ requests: list[httpx.Request] = []
166
+
167
+ def handler(request: httpx.Request) -> httpx.Response:
168
+ requests.append(request)
169
+ first_request.set()
170
+ return httpx.Response(200, json=analysis_response("running"))
171
+
172
+ async with httpx.AsyncClient(transport=httpx.MockTransport(handler)) as http_client:
173
+ client = AsyncKernel(api_key="test", base_url="https://api.example", http_client=http_client)
174
+ task = asyncio.create_task(client.config_registry.analyses.wait_for_result("analysis-1", poll_interval=60))
175
+ await first_request.wait()
176
+ await asyncio.sleep(0)
177
+ task.cancel()
178
+ with pytest.raises(asyncio.CancelledError):
179
+ await task
180
+
181
+ assert len(requests) == 1
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.107.0"
3
- }
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