kernel 0.65.0__tar.gz → 0.68.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 (340) hide show
  1. kernel-0.68.0/.release-please-manifest.json +3 -0
  2. {kernel-0.65.0 → kernel-0.68.0}/CHANGELOG.md +48 -0
  3. {kernel-0.65.0 → kernel-0.68.0}/PKG-INFO +3 -3
  4. {kernel-0.65.0 → kernel-0.68.0}/README.md +2 -2
  5. {kernel-0.65.0 → kernel-0.68.0}/api.md +17 -1
  6. {kernel-0.65.0 → kernel-0.68.0}/pyproject.toml +1 -1
  7. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_client.py +54 -0
  8. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_version.py +1 -1
  9. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/pagination.py +26 -10
  10. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/__init__.py +14 -0
  11. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/api_keys.py +165 -3
  12. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/auth/connections.py +12 -12
  13. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browser_pools.py +10 -10
  14. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/browsers.py +36 -10
  15. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/credentials.py +4 -6
  16. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/extensions.py +2 -2
  17. kernel-0.68.0/src/kernel/resources/organization/__init__.py +33 -0
  18. kernel-0.68.0/src/kernel/resources/organization/limits.py +245 -0
  19. kernel-0.68.0/src/kernel/resources/organization/organization.py +108 -0
  20. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/proxies.py +6 -6
  21. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/__init__.py +2 -0
  22. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/api_key.py +6 -0
  23. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/api_key_list_params.py +15 -0
  24. kernel-0.68.0/src/kernel/types/api_key_retrieve_params.py +15 -0
  25. kernel-0.68.0/src/kernel/types/api_key_rotate_params.py +23 -0
  26. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_create_params.py +3 -2
  27. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_login_params.py +3 -2
  28. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_update_params.py +3 -2
  29. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_create_params.py +5 -4
  30. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool.py +1 -1
  31. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_create_params.py +1 -1
  32. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_update_params.py +1 -1
  33. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_update_params.py +16 -0
  34. kernel-0.68.0/src/kernel/types/organization/__init__.py +6 -0
  35. kernel-0.68.0/src/kernel/types/organization/limit_update_params.py +17 -0
  36. kernel-0.68.0/src/kernel/types/organization/org_limits.py +24 -0
  37. kernel-0.68.0/tests/api_resources/organization/test_limits.py +152 -0
  38. kernel-0.68.0/tests/api_resources/projects/__init__.py +1 -0
  39. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_api_keys.py +138 -9
  40. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_browsers.py +10 -0
  41. kernel-0.68.0/tests/test_pagination.py +66 -0
  42. kernel-0.65.0/.release-please-manifest.json +0 -3
  43. {kernel-0.65.0 → kernel-0.68.0}/.gitignore +0 -0
  44. {kernel-0.65.0 → kernel-0.68.0}/CONTRIBUTING.md +0 -0
  45. {kernel-0.65.0 → kernel-0.68.0}/LICENSE +0 -0
  46. {kernel-0.65.0 → kernel-0.68.0}/SECURITY.md +0 -0
  47. {kernel-0.65.0 → kernel-0.68.0}/bin/check-release-environment +0 -0
  48. {kernel-0.65.0 → kernel-0.68.0}/bin/publish-pypi +0 -0
  49. {kernel-0.65.0 → kernel-0.68.0}/examples/.keep +0 -0
  50. {kernel-0.65.0 → kernel-0.68.0}/examples/browser_routing.py +0 -0
  51. {kernel-0.65.0 → kernel-0.68.0}/examples/browser_telemetry.py +0 -0
  52. {kernel-0.65.0 → kernel-0.68.0}/noxfile.py +0 -0
  53. {kernel-0.65.0 → kernel-0.68.0}/release-please-config.json +0 -0
  54. {kernel-0.65.0 → kernel-0.68.0}/requirements-dev.lock +0 -0
  55. {kernel-0.65.0 → kernel-0.68.0}/requirements.lock +0 -0
  56. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/__init__.py +0 -0
  57. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_base_client.py +0 -0
  58. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_compat.py +0 -0
  59. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_constants.py +0 -0
  60. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_exceptions.py +0 -0
  61. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_files.py +0 -0
  62. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_models.py +0 -0
  63. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_qs.py +0 -0
  64. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_resource.py +0 -0
  65. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_response.py +0 -0
  66. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_streaming.py +0 -0
  67. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_types.py +0 -0
  68. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/__init__.py +0 -0
  69. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_compat.py +0 -0
  70. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_datetime_parse.py +0 -0
  71. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_json.py +0 -0
  72. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_logs.py +0 -0
  73. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_path.py +0 -0
  74. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_proxy.py +0 -0
  75. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_reflection.py +0 -0
  76. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_resources_proxy.py +0 -0
  77. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_streams.py +0 -0
  78. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_sync.py +0 -0
  79. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_transform.py +0 -0
  80. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_typing.py +0 -0
  81. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/_utils/_utils.py +0 -0
  82. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/app_framework.py +0 -0
  83. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/lib/.keep +0 -0
  84. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/__init__.py +0 -0
  85. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/raw_http.py +0 -0
  86. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/routing.py +0 -0
  87. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/lib/browser_routing/util.py +0 -0
  88. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/py.typed +0 -0
  89. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/apps.py +0 -0
  90. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/auth/__init__.py +0 -0
  91. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/auth/auth.py +0 -0
  92. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/__init__.py +0 -0
  93. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/computer.py +0 -0
  94. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
  95. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
  96. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
  97. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/logs.py +0 -0
  98. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/playwright.py +0 -0
  99. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/process.py +0 -0
  100. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/replays.py +0 -0
  101. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/browsers/telemetry.py +0 -0
  102. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/credential_providers.py +0 -0
  103. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/deployments.py +0 -0
  104. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/invocations.py +0 -0
  105. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/profiles.py +0 -0
  106. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/projects/__init__.py +0 -0
  107. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/projects/limits.py +0 -0
  108. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/resources/projects/projects.py +0 -0
  109. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/api_key_create_params.py +0 -0
  110. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/api_key_update_params.py +0 -0
  111. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/app_list_params.py +0 -0
  112. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/app_list_response.py +0 -0
  113. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/__init__.py +0 -0
  114. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
  115. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_list_params.py +0 -0
  116. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
  117. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/login_response.py +0 -0
  118. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/managed_auth.py +0 -0
  119. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
  120. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_create_response.py +0 -0
  121. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_curl_params.py +0 -0
  122. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_curl_response.py +0 -0
  123. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_list_params.py +0 -0
  124. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_list_response.py +0 -0
  125. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
  126. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
  127. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
  128. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
  129. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_list_params.py +0 -0
  130. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_ref.py +0 -0
  131. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_pool_release_params.py +0 -0
  132. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_retrieve_params.py +0 -0
  133. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_retrieve_response.py +0 -0
  134. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_update_response.py +0 -0
  135. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browser_usage.py +0 -0
  136. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/__init__.py +0 -0
  137. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_api_call_event.py +0 -0
  138. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_call_stack.py +0 -0
  139. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_captcha_solve_result_event.py +0 -0
  140. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_cdp_connect_event.py +0 -0
  141. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_cdp_disconnect_event.py +0 -0
  142. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_console_error_event.py +0 -0
  143. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_console_log_event.py +0 -0
  144. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_event_context.py +0 -0
  145. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_event_source.py +0 -0
  146. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_http_headers.py +0 -0
  147. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_click_event.py +0 -0
  148. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_key_event.py +0 -0
  149. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_interaction_scroll_settled_event.py +0 -0
  150. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_live_view_connect_event.py +0 -0
  151. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_live_view_disconnect_event.py +0 -0
  152. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_disconnected_event.py +0 -0
  153. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_init_failed_event.py +0 -0
  154. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_reconnect_failed_event.py +0 -0
  155. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_reconnected_event.py +0 -0
  156. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_monitor_screenshot_event.py +0 -0
  157. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_idle_event.py +0 -0
  158. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_loading_failed_event.py +0 -0
  159. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_request_event.py +0 -0
  160. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_network_response_event.py +0 -0
  161. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_dom_content_loaded_event.py +0 -0
  162. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_layout_settled_event.py +0 -0
  163. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_layout_shift_event.py +0 -0
  164. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_lcp_event.py +0 -0
  165. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_load_event.py +0 -0
  166. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_navigation_event.py +0 -0
  167. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_navigation_settled_event.py +0 -0
  168. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_page_tab_opened_event.py +0 -0
  169. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_service_crashed_event.py +0 -0
  170. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_system_oom_kill_event.py +0 -0
  171. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_categories_config.py +0 -0
  172. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_categories_config_param.py +0 -0
  173. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_category_config.py +0 -0
  174. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_category_config_param.py +0 -0
  175. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_config.py +0 -0
  176. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/browser_telemetry_event.py +0 -0
  177. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
  178. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
  179. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
  180. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
  181. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
  182. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
  183. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
  184. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
  185. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
  186. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
  187. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
  188. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
  189. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
  190. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
  191. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
  192. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
  193. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
  194. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
  195. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
  196. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
  197. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
  198. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_move_params.py +0 -0
  199. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
  200. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
  201. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
  202. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
  203. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
  204. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
  205. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
  206. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
  207. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
  208. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
  209. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
  210. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
  211. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
  212. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
  213. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
  214. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
  215. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
  216. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
  217. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
  218. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
  219. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_status_response.py +0 -0
  220. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
  221. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
  222. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
  223. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
  224. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
  225. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
  226. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/browsers/telemetry_stream_response.py +0 -0
  227. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/created_api_key.py +0 -0
  228. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential.py +0 -0
  229. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_create_params.py +0 -0
  230. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_list_params.py +0 -0
  231. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider.py +0 -0
  232. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_create_params.py +0 -0
  233. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_item.py +0 -0
  234. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
  235. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_list_params.py +0 -0
  236. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_test_result.py +0 -0
  237. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_provider_update_params.py +0 -0
  238. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_totp_code_response.py +0 -0
  239. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/credential_update_params.py +0 -0
  240. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_create_params.py +0 -0
  241. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_create_response.py +0 -0
  242. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_follow_params.py +0 -0
  243. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_follow_response.py +0 -0
  244. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_list_params.py +0 -0
  245. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_list_response.py +0 -0
  246. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
  247. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/deployment_state_event.py +0 -0
  248. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
  249. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/extension_list_params.py +0 -0
  250. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/extension_list_response.py +0 -0
  251. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/extension_upload_params.py +0 -0
  252. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/extension_upload_response.py +0 -0
  253. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_create_params.py +0 -0
  254. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_create_response.py +0 -0
  255. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_follow_params.py +0 -0
  256. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_follow_response.py +0 -0
  257. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
  258. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_list_params.py +0 -0
  259. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_list_response.py +0 -0
  260. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
  261. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_state_event.py +0 -0
  262. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_update_params.py +0 -0
  263. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/invocation_update_response.py +0 -0
  264. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/profile.py +0 -0
  265. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/profile_create_params.py +0 -0
  266. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/profile_list_params.py +0 -0
  267. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/project.py +0 -0
  268. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/project_create_params.py +0 -0
  269. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/project_list_params.py +0 -0
  270. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/project_update_params.py +0 -0
  271. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/projects/__init__.py +0 -0
  272. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/projects/limit_update_params.py +0 -0
  273. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/projects/project_limits.py +0 -0
  274. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_check_params.py +0 -0
  275. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_check_response.py +0 -0
  276. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_create_params.py +0 -0
  277. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_create_response.py +0 -0
  278. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_list_params.py +0 -0
  279. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_list_response.py +0 -0
  280. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
  281. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/__init__.py +0 -0
  282. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/app_action.py +0 -0
  283. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/browser_extension.py +0 -0
  284. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/browser_profile.py +0 -0
  285. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/browser_viewport.py +0 -0
  286. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/error_detail.py +0 -0
  287. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/error_event.py +0 -0
  288. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/error_model.py +0 -0
  289. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
  290. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared/log_event.py +0 -0
  291. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared_params/__init__.py +0 -0
  292. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
  293. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
  294. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
  295. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/tags.py +0 -0
  296. {kernel-0.65.0 → kernel-0.68.0}/src/kernel/types/tags_param.py +0 -0
  297. {kernel-0.65.0 → kernel-0.68.0}/tests/__init__.py +0 -0
  298. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/__init__.py +0 -0
  299. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/auth/__init__.py +0 -0
  300. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/auth/test_connections.py +0 -0
  301. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/__init__.py +0 -0
  302. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
  303. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
  304. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_computer.py +0 -0
  305. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_fs.py +0 -0
  306. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_logs.py +0 -0
  307. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_playwright.py +0 -0
  308. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_process.py +0 -0
  309. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_replays.py +0 -0
  310. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/browsers/test_telemetry.py +0 -0
  311. {kernel-0.65.0/tests/api_resources/projects → kernel-0.68.0/tests/api_resources/organization}/__init__.py +0 -0
  312. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/projects/test_limits.py +0 -0
  313. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_apps.py +0 -0
  314. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_browser_pools.py +0 -0
  315. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_credential_providers.py +0 -0
  316. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_credentials.py +0 -0
  317. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_deployments.py +0 -0
  318. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_extensions.py +0 -0
  319. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_invocations.py +0 -0
  320. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_profiles.py +0 -0
  321. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_projects.py +0 -0
  322. {kernel-0.65.0 → kernel-0.68.0}/tests/api_resources/test_proxies.py +0 -0
  323. {kernel-0.65.0 → kernel-0.68.0}/tests/conftest.py +0 -0
  324. {kernel-0.65.0 → kernel-0.68.0}/tests/sample_file.txt +0 -0
  325. {kernel-0.65.0 → kernel-0.68.0}/tests/test_browser_routing.py +0 -0
  326. {kernel-0.65.0 → kernel-0.68.0}/tests/test_client.py +0 -0
  327. {kernel-0.65.0 → kernel-0.68.0}/tests/test_extract_files.py +0 -0
  328. {kernel-0.65.0 → kernel-0.68.0}/tests/test_files.py +0 -0
  329. {kernel-0.65.0 → kernel-0.68.0}/tests/test_models.py +0 -0
  330. {kernel-0.65.0 → kernel-0.68.0}/tests/test_qs.py +0 -0
  331. {kernel-0.65.0 → kernel-0.68.0}/tests/test_required_args.py +0 -0
  332. {kernel-0.65.0 → kernel-0.68.0}/tests/test_response.py +0 -0
  333. {kernel-0.65.0 → kernel-0.68.0}/tests/test_streaming.py +0 -0
  334. {kernel-0.65.0 → kernel-0.68.0}/tests/test_transform.py +0 -0
  335. {kernel-0.65.0 → kernel-0.68.0}/tests/test_utils/test_datetime_parse.py +0 -0
  336. {kernel-0.65.0 → kernel-0.68.0}/tests/test_utils/test_json.py +0 -0
  337. {kernel-0.65.0 → kernel-0.68.0}/tests/test_utils/test_path.py +0 -0
  338. {kernel-0.65.0 → kernel-0.68.0}/tests/test_utils/test_proxy.py +0 -0
  339. {kernel-0.65.0 → kernel-0.68.0}/tests/test_utils/test_typing.py +0 -0
  340. {kernel-0.65.0 → kernel-0.68.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.68.0"
3
+ }
@@ -1,5 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.68.0 (2026-06-15)
4
+
5
+ Full Changelog: [v0.67.0...v0.68.0](https://github.com/kernel/kernel-python-sdk/compare/v0.67.0...v0.68.0)
6
+
7
+ ### Features
8
+
9
+ * Add API key rotate endpoint ([e383f7d](https://github.com/kernel/kernel-python-sdk/commit/e383f7d4b6af4f2921200d4a0f6922e730f58e08))
10
+ * **api:** surface deleted/expired API keys for audit trail (KERNEL-1350) ([55e32db](https://github.com/kernel/kernel-python-sdk/commit/55e32dbaf07275c63623a31ec6df88c6aa128f8f))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **pagination:** correct type:ignore placement; stop on 0 sentinel ([5d2afd7](https://github.com/kernel/kernel-python-sdk/commit/5d2afd7df0f2d21d754ca936286ac3a92762e9db))
16
+ * **pagination:** fail loudly on contradictory headers; test both classes ([4554697](https://github.com/kernel/kernel-python-sdk/commit/4554697a9d850848b602a2422199fb2ce72d8efc))
17
+ * **pagination:** stop skipping a page per auto-pagination iteration ([c0a3e14](https://github.com/kernel/kernel-python-sdk/commit/c0a3e14b51e39dfdba37bacf023b2f98d4a3be69))
18
+
19
+
20
+ ### Styles
21
+
22
+ * ruff import-sort and format the pagination test ([843fade](https://github.com/kernel/kernel-python-sdk/commit/843fadeb07fb7cebd5d2689eb78511bb8ee0d293))
23
+
24
+
25
+ ### Refactors
26
+
27
+ * **api:** align API key audit surface with browser sibling (KERNEL-1350) ([12868d1](https://github.com/kernel/kernel-python-sdk/commit/12868d18dbb081c0e998299b799ac693dd878d0f))
28
+
29
+ ## 0.67.0 (2026-06-11)
30
+
31
+ Full Changelog: [v0.66.0...v0.67.0](https://github.com/kernel/kernel-python-sdk/compare/v0.66.0...v0.67.0)
32
+
33
+ ### Features
34
+
35
+ * Add project_id SDK client option mapped to X-Kernel-Project-Id ([1799732](https://github.com/kernel/kernel-python-sdk/commit/17997322232374c6c49d99333b564a0537f247c0))
36
+
37
+
38
+ ### Documentation
39
+
40
+ * **api:** correct project-scoping descriptions in OpenAPI spec ([5929332](https://github.com/kernel/kernel-python-sdk/commit/592933283ff7bf0e6596ddbfbc4851e285a1d36e))
41
+
42
+ ## 0.66.0 (2026-06-10)
43
+
44
+ Full Changelog: [v0.65.0...v0.66.0](https://github.com/kernel/kernel-python-sdk/compare/v0.65.0...v0.66.0)
45
+
46
+ ### Features
47
+
48
+ * Add org-level default per-project concurrency cap ([2de4525](https://github.com/kernel/kernel-python-sdk/commit/2de45255a1f5ed003ec0492461ee967bf961db2e))
49
+ * Support updating browser session name and tags via PATCH ([e26e9c6](https://github.com/kernel/kernel-python-sdk/commit/e26e9c6b0513a1c7f9723554f4ba977988290d5e))
50
+
3
51
  ## 0.65.0 (2026-06-08)
4
52
 
5
53
  Full Changelog: [v0.64.0...v0.65.0](https://github.com/kernel/kernel-python-sdk/compare/v0.64.0...v0.65.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kernel
3
- Version: 0.65.0
3
+ Version: 0.68.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
@@ -220,8 +220,8 @@ first_page = await client.deployments.list(
220
220
  )
221
221
 
222
222
  print(
223
- f"the current start offset for this page: {first_page.next_offset}"
224
- ) # => "the current start offset for this page: 1"
223
+ f"the offset where the next page starts: {first_page.next_offset}"
224
+ ) # => "the offset where the next page starts: 2"
225
225
  for deployment in first_page.items:
226
226
  print(deployment.id)
227
227
 
@@ -185,8 +185,8 @@ first_page = await client.deployments.list(
185
185
  )
186
186
 
187
187
  print(
188
- f"the current start offset for this page: {first_page.next_offset}"
189
- ) # => "the current start offset for this page: 1"
188
+ f"the offset where the next page starts: {first_page.next_offset}"
189
+ ) # => "the offset where the next page starts: 2"
190
190
  for deployment in first_page.items:
191
191
  print(deployment.id)
192
192
 
@@ -423,6 +423,21 @@ Methods:
423
423
  - <code title="get /org/projects/{id}/limits">client.projects.limits.<a href="./src/kernel/resources/projects/limits.py">retrieve</a>(id) -> <a href="./src/kernel/types/projects/project_limits.py">ProjectLimits</a></code>
424
424
  - <code title="patch /org/projects/{id}/limits">client.projects.limits.<a href="./src/kernel/resources/projects/limits.py">update</a>(id, \*\*<a href="src/kernel/types/projects/limit_update_params.py">params</a>) -> <a href="./src/kernel/types/projects/project_limits.py">ProjectLimits</a></code>
425
425
 
426
+ # Organization
427
+
428
+ ## Limits
429
+
430
+ Types:
431
+
432
+ ```python
433
+ from kernel.types.organization import OrgLimits, UpdateOrgLimitsRequest
434
+ ```
435
+
436
+ Methods:
437
+
438
+ - <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
+ - <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
+
426
441
  # APIKeys
427
442
 
428
443
  Types:
@@ -434,10 +449,11 @@ from kernel.types import APIKey, CreatedAPIKey
434
449
  Methods:
435
450
 
436
451
  - <code title="post /org/api_keys">client.api_keys.<a href="./src/kernel/resources/api_keys.py">create</a>(\*\*<a href="src/kernel/types/api_key_create_params.py">params</a>) -> <a href="./src/kernel/types/created_api_key.py">CreatedAPIKey</a></code>
437
- - <code title="get /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">retrieve</a>(id) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
452
+ - <code title="get /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">retrieve</a>(id, \*\*<a href="src/kernel/types/api_key_retrieve_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
438
453
  - <code title="patch /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">update</a>(id, \*\*<a href="src/kernel/types/api_key_update_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">APIKey</a></code>
439
454
  - <code title="get /org/api_keys">client.api_keys.<a href="./src/kernel/resources/api_keys.py">list</a>(\*\*<a href="src/kernel/types/api_key_list_params.py">params</a>) -> <a href="./src/kernel/types/api_key.py">SyncOffsetPagination[APIKey]</a></code>
440
455
  - <code title="delete /org/api_keys/{id}">client.api_keys.<a href="./src/kernel/resources/api_keys.py">delete</a>(id) -> None</code>
456
+ - <code title="post /org/api_keys/{id}/rotate">client.api_keys.<a href="./src/kernel/resources/api_keys.py">rotate</a>(id, \*\*<a href="src/kernel/types/api_key_rotate_params.py">params</a>) -> <a href="./src/kernel/types/created_api_key.py">CreatedAPIKey</a></code>
441
457
 
442
458
  # CredentialProviders
443
459
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel"
3
- version = "0.65.0"
3
+ version = "0.68.0"
4
4
  description = "The official Python library for the kernel API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -58,6 +58,7 @@ if TYPE_CHECKING:
58
58
  credentials,
59
59
  deployments,
60
60
  invocations,
61
+ organization,
61
62
  browser_pools,
62
63
  credential_providers,
63
64
  )
@@ -74,6 +75,7 @@ if TYPE_CHECKING:
74
75
  from .resources.browsers.browsers import BrowsersResource, AsyncBrowsersResource
75
76
  from .resources.projects.projects import ProjectsResource, AsyncProjectsResource
76
77
  from .resources.credential_providers import CredentialProvidersResource, AsyncCredentialProvidersResource
78
+ from .resources.organization.organization import OrganizationResource, AsyncOrganizationResource
77
79
 
78
80
  __all__ = [
79
81
  "ENVIRONMENTS",
@@ -98,6 +100,8 @@ class Kernel(SyncAPIClient):
98
100
  api_key: str
99
101
  browser_route_cache: BrowserRouteCache
100
102
 
103
+ project_id: str | None
104
+
101
105
  _environment: Literal["production", "development"] | NotGiven
102
106
  _browser_routing: BrowserRoutingConfig
103
107
 
@@ -105,6 +109,7 @@ class Kernel(SyncAPIClient):
105
109
  self,
106
110
  *,
107
111
  api_key: str | None = None,
112
+ project_id: str | None = None,
108
113
  environment: Literal["production", "development"] | NotGiven = not_given,
109
114
  base_url: str | httpx.URL | None | NotGiven = not_given,
110
115
  timeout: float | Timeout | None | NotGiven = not_given,
@@ -138,6 +143,8 @@ class Kernel(SyncAPIClient):
138
143
  )
139
144
  self.api_key = api_key
140
145
 
146
+ self.project_id = project_id
147
+
141
148
  self._environment = environment
142
149
 
143
150
  base_url_env = os.environ.get("KERNEL_BASE_URL")
@@ -262,6 +269,12 @@ class Kernel(SyncAPIClient):
262
269
 
263
270
  return ProjectsResource(self)
264
271
 
272
+ @cached_property
273
+ def organization(self) -> OrganizationResource:
274
+ from .resources.organization import OrganizationResource
275
+
276
+ return OrganizationResource(self)
277
+
265
278
  @cached_property
266
279
  def api_keys(self) -> APIKeysResource:
267
280
  """Create and manage API keys for organization and project-scoped access."""
@@ -301,6 +314,7 @@ class Kernel(SyncAPIClient):
301
314
  return {
302
315
  **super().default_headers,
303
316
  "X-Stainless-Async": "false",
317
+ "X-Kernel-Project-Id": self.project_id if self.project_id is not None else Omit(),
304
318
  **self._custom_headers,
305
319
  }
306
320
 
@@ -339,6 +353,7 @@ class Kernel(SyncAPIClient):
339
353
  self,
340
354
  *,
341
355
  api_key: str | None = None,
356
+ project_id: str | None = None,
342
357
  environment: Literal["production", "development"] | None = None,
343
358
  base_url: str | httpx.URL | None = None,
344
359
  timeout: float | Timeout | None | NotGiven = not_given,
@@ -375,6 +390,7 @@ class Kernel(SyncAPIClient):
375
390
  http_client = http_client or self._client
376
391
  return self.__class__(
377
392
  api_key=api_key or self.api_key,
393
+ project_id=project_id or self.project_id,
378
394
  base_url=base_url or self.base_url,
379
395
  environment=environment or self._environment,
380
396
  timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
@@ -429,6 +445,8 @@ class AsyncKernel(AsyncAPIClient):
429
445
  api_key: str
430
446
  browser_route_cache: BrowserRouteCache
431
447
 
448
+ project_id: str | None
449
+
432
450
  _environment: Literal["production", "development"] | NotGiven
433
451
  _browser_routing: BrowserRoutingConfig
434
452
 
@@ -436,6 +454,7 @@ class AsyncKernel(AsyncAPIClient):
436
454
  self,
437
455
  *,
438
456
  api_key: str | None = None,
457
+ project_id: str | None = None,
439
458
  environment: Literal["production", "development"] | NotGiven = not_given,
440
459
  base_url: str | httpx.URL | None | NotGiven = not_given,
441
460
  timeout: float | Timeout | None | NotGiven = not_given,
@@ -469,6 +488,8 @@ class AsyncKernel(AsyncAPIClient):
469
488
  )
470
489
  self.api_key = api_key
471
490
 
491
+ self.project_id = project_id
492
+
472
493
  self._environment = environment
473
494
 
474
495
  base_url_env = os.environ.get("KERNEL_BASE_URL")
@@ -593,6 +614,12 @@ class AsyncKernel(AsyncAPIClient):
593
614
 
594
615
  return AsyncProjectsResource(self)
595
616
 
617
+ @cached_property
618
+ def organization(self) -> AsyncOrganizationResource:
619
+ from .resources.organization import AsyncOrganizationResource
620
+
621
+ return AsyncOrganizationResource(self)
622
+
596
623
  @cached_property
597
624
  def api_keys(self) -> AsyncAPIKeysResource:
598
625
  """Create and manage API keys for organization and project-scoped access."""
@@ -632,6 +659,7 @@ class AsyncKernel(AsyncAPIClient):
632
659
  return {
633
660
  **super().default_headers,
634
661
  "X-Stainless-Async": f"async:{get_async_library()}",
662
+ "X-Kernel-Project-Id": self.project_id if self.project_id is not None else Omit(),
635
663
  **self._custom_headers,
636
664
  }
637
665
 
@@ -670,6 +698,7 @@ class AsyncKernel(AsyncAPIClient):
670
698
  self,
671
699
  *,
672
700
  api_key: str | None = None,
701
+ project_id: str | None = None,
673
702
  environment: Literal["production", "development"] | None = None,
674
703
  base_url: str | httpx.URL | None = None,
675
704
  timeout: float | Timeout | None | NotGiven = not_given,
@@ -706,6 +735,7 @@ class AsyncKernel(AsyncAPIClient):
706
735
  http_client = http_client or self._client
707
736
  return self.__class__(
708
737
  api_key=api_key or self.api_key,
738
+ project_id=project_id or self.project_id,
709
739
  base_url=base_url or self.base_url,
710
740
  environment=environment or self._environment,
711
741
  timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
@@ -837,6 +867,12 @@ class KernelWithRawResponse:
837
867
 
838
868
  return ProjectsResourceWithRawResponse(self._client.projects)
839
869
 
870
+ @cached_property
871
+ def organization(self) -> organization.OrganizationResourceWithRawResponse:
872
+ from .resources.organization import OrganizationResourceWithRawResponse
873
+
874
+ return OrganizationResourceWithRawResponse(self._client.organization)
875
+
840
876
  @cached_property
841
877
  def api_keys(self) -> api_keys.APIKeysResourceWithRawResponse:
842
878
  """Create and manage API keys for organization and project-scoped access."""
@@ -934,6 +970,12 @@ class AsyncKernelWithRawResponse:
934
970
 
935
971
  return AsyncProjectsResourceWithRawResponse(self._client.projects)
936
972
 
973
+ @cached_property
974
+ def organization(self) -> organization.AsyncOrganizationResourceWithRawResponse:
975
+ from .resources.organization import AsyncOrganizationResourceWithRawResponse
976
+
977
+ return AsyncOrganizationResourceWithRawResponse(self._client.organization)
978
+
937
979
  @cached_property
938
980
  def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithRawResponse:
939
981
  """Create and manage API keys for organization and project-scoped access."""
@@ -1031,6 +1073,12 @@ class KernelWithStreamedResponse:
1031
1073
 
1032
1074
  return ProjectsResourceWithStreamingResponse(self._client.projects)
1033
1075
 
1076
+ @cached_property
1077
+ def organization(self) -> organization.OrganizationResourceWithStreamingResponse:
1078
+ from .resources.organization import OrganizationResourceWithStreamingResponse
1079
+
1080
+ return OrganizationResourceWithStreamingResponse(self._client.organization)
1081
+
1034
1082
  @cached_property
1035
1083
  def api_keys(self) -> api_keys.APIKeysResourceWithStreamingResponse:
1036
1084
  """Create and manage API keys for organization and project-scoped access."""
@@ -1128,6 +1176,12 @@ class AsyncKernelWithStreamedResponse:
1128
1176
 
1129
1177
  return AsyncProjectsResourceWithStreamingResponse(self._client.projects)
1130
1178
 
1179
+ @cached_property
1180
+ def organization(self) -> organization.AsyncOrganizationResourceWithStreamingResponse:
1181
+ from .resources.organization import AsyncOrganizationResourceWithStreamingResponse
1182
+
1183
+ return AsyncOrganizationResourceWithStreamingResponse(self._client.organization)
1184
+
1131
1185
  @cached_property
1132
1186
  def api_keys(self) -> api_keys.AsyncAPIKeysResourceWithStreamingResponse:
1133
1187
  """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.65.0" # x-release-please-version
4
+ __version__ = "0.68.0" # x-release-please-version
@@ -40,12 +40,20 @@ class SyncOffsetPagination(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
40
40
  def next_page_info(self) -> Optional[PageInfo]:
41
41
  next_offset = self.next_offset
42
42
  if next_offset is None:
43
- return None # type: ignore[unreachable]
43
+ if self.has_more: # type: ignore[unreachable]
44
+ raise RuntimeError(
45
+ "Server reported X-Has-More: true without an X-Next-Offset header; "
46
+ "refusing to silently truncate pagination"
47
+ )
48
+ return None
44
49
 
45
- length = len(self._get_page_items())
46
- current_count = next_offset + length
50
+ # X-Next-Offset is the next page's absolute start, or 0 on the last page
51
+ # (the API's stop sentinel). Only a positive offset advances; the old code
52
+ # added the current page length on top, skipping a page per iteration.
53
+ if next_offset == 0:
54
+ return None
47
55
 
48
- return PageInfo(params={"offset": current_count})
56
+ return PageInfo(params={"offset": next_offset})
49
57
 
50
58
  @classmethod
51
59
  def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
@@ -83,12 +91,20 @@ class AsyncOffsetPagination(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
83
91
  def next_page_info(self) -> Optional[PageInfo]:
84
92
  next_offset = self.next_offset
85
93
  if next_offset is None:
86
- return None # type: ignore[unreachable]
87
-
88
- length = len(self._get_page_items())
89
- current_count = next_offset + length
90
-
91
- return PageInfo(params={"offset": current_count})
94
+ if self.has_more: # type: ignore[unreachable]
95
+ raise RuntimeError(
96
+ "Server reported X-Has-More: true without an X-Next-Offset header; "
97
+ "refusing to silently truncate pagination"
98
+ )
99
+ return None
100
+
101
+ # X-Next-Offset is the next page's absolute start, or 0 on the last page
102
+ # (the API's stop sentinel). Only a positive offset advances; the old code
103
+ # added the current page length on top, skipping a page per iteration.
104
+ if next_offset == 0:
105
+ return None
106
+
107
+ return PageInfo(params={"offset": next_offset})
92
108
 
93
109
  @classmethod
94
110
  def build(cls: Type[_BaseModelT], *, response: Response, data: object) -> _BaseModelT: # noqa: ARG003
@@ -88,6 +88,14 @@ from .invocations import (
88
88
  InvocationsResourceWithStreamingResponse,
89
89
  AsyncInvocationsResourceWithStreamingResponse,
90
90
  )
91
+ from .organization import (
92
+ OrganizationResource,
93
+ AsyncOrganizationResource,
94
+ OrganizationResourceWithRawResponse,
95
+ AsyncOrganizationResourceWithRawResponse,
96
+ OrganizationResourceWithStreamingResponse,
97
+ AsyncOrganizationResourceWithStreamingResponse,
98
+ )
91
99
  from .browser_pools import (
92
100
  BrowserPoolsResource,
93
101
  AsyncBrowserPoolsResource,
@@ -172,6 +180,12 @@ __all__ = [
172
180
  "AsyncProjectsResourceWithRawResponse",
173
181
  "ProjectsResourceWithStreamingResponse",
174
182
  "AsyncProjectsResourceWithStreamingResponse",
183
+ "OrganizationResource",
184
+ "AsyncOrganizationResource",
185
+ "OrganizationResourceWithRawResponse",
186
+ "AsyncOrganizationResourceWithRawResponse",
187
+ "OrganizationResourceWithStreamingResponse",
188
+ "AsyncOrganizationResourceWithStreamingResponse",
175
189
  "APIKeysResource",
176
190
  "AsyncAPIKeysResource",
177
191
  "APIKeysResourceWithRawResponse",