runta-sdk 0.2.1__tar.gz → 0.2.2__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 (361) hide show
  1. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/PKG-INFO +64 -16
  2. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/README.md +60 -15
  3. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/environment.py +17 -14
  4. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/pyproject.toml +5 -2
  5. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/PKG-INFO +64 -16
  6. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/SOURCES.txt +40 -1
  7. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/requires.txt +5 -0
  8. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/__init__.py +152 -107
  9. runta_sdk-0.2.2/src/runta/_internal/async_file_io.py +92 -0
  10. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/async_http.py +245 -39
  11. runta_sdk-0.2.2/src/runta/_internal/byte_budget.py +16 -0
  12. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/config.py +5 -1
  13. runta_sdk-0.2.2/src/runta/_internal/execution.py +780 -0
  14. runta_sdk-0.2.2/src/runta/_internal/execution.sh +285 -0
  15. runta_sdk-0.2.2/src/runta/_internal/http_limits.py +13 -0
  16. runta_sdk-0.2.2/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_computer_session.py +215 -0
  17. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_events.py +60 -0
  18. runta_sdk-0.2.2/src/runta/_internal/openapi/api/identity/get_me.py +172 -0
  19. runta_sdk-0.2.2/src/runta/_internal/openapi/api/ssh_keys/__init__.py +1 -0
  20. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/__init__.py +20 -0
  21. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/allowlist_egress_policy.py +1 -1
  22. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint.py +30 -1
  23. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_runtime_restore_request.py +70 -19
  24. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_computer_session.py +78 -0
  25. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_computer_session_channels.py +50 -0
  26. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image.py +61 -0
  27. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image_mime_type.py +11 -0
  28. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image_type.py +8 -0
  29. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_vnc_session_channel.py +50 -0
  30. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cold_restore_resource_requests.py +52 -0
  31. runta_sdk-0.2.2/src/runta/_internal/openapi/models/cold_restore_resources.py +71 -0
  32. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_checkpoint_request.py +3 -2
  33. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_checkpoint_request_kind.py +2 -0
  34. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_request.py +45 -0
  35. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_run_request.py +28 -1
  36. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denylist_egress_policy.py +1 -1
  37. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/fresh_runtime_create_request.py +26 -0
  38. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_request.py +28 -1
  39. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime.py +23 -0
  40. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image.py +10 -1
  41. runta_sdk-0.2.2/src/runta/_internal/openapi/models/user_profile.py +65 -0
  42. runta_sdk-0.2.2/src/runta/_internal/openapi/models/user_profile_response.py +49 -0
  43. runta_sdk-0.2.2/src/runta/_internal/rest_tls.py +12 -0
  44. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/retry.py +94 -3
  45. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/streaming_transfer.py +310 -60
  46. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/sync_http.py +131 -22
  47. runta_sdk-0.2.2/src/runta/_internal/tls_resumption.py +151 -0
  48. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/transport.py +28 -4
  49. runta_sdk-0.2.2/src/runta/_internal/user_agent.py +26 -0
  50. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_api_reference_generation.py +1 -1
  51. runta_sdk-0.2.2/tests/test_async_file_io.py +612 -0
  52. runta_sdk-0.2.2/tests/test_async_http_transport.py +383 -0
  53. runta_sdk-0.2.2/tests/test_checkpoint_metadata.py +137 -0
  54. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_config_and_helpers.py +6 -44
  55. runta_sdk-0.2.2/tests/test_connection_pool.py +98 -0
  56. runta_sdk-0.2.2/tests/test_delete_runtime_retry.py +286 -0
  57. runta_sdk-0.2.2/tests/test_directory_upload.py +151 -0
  58. runta_sdk-0.2.2/tests/test_directory_upload_concurrency.py +162 -0
  59. runta_sdk-0.2.2/tests/test_execution.py +1350 -0
  60. runta_sdk-0.2.2/tests/test_execution_result_stream.py +192 -0
  61. runta_sdk-0.2.2/tests/test_fetch_openapi.py +116 -0
  62. runta_sdk-0.2.2/tests/test_get_runtime_retry.py +265 -0
  63. runta_sdk-0.2.2/tests/test_harbor_directory_download.py +193 -0
  64. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_live.py +78 -18
  65. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openapi_contract.py +2 -2
  66. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openapi_transport.py +88 -3
  67. runta_sdk-0.2.2/tests/test_read_retries.py +336 -0
  68. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_rest_deployment.py +1 -1
  69. runta_sdk-0.2.2/tests/test_rest_tls.py +376 -0
  70. runta_sdk-0.2.2/tests/test_runtime_readiness.py +133 -0
  71. runta_sdk-0.2.2/tests/test_user_agent.py +76 -0
  72. runta_sdk-0.2.2/tests/test_websocket_tls.py +106 -0
  73. runta_sdk-0.2.2/tests/test_websocket_tls_resumption.py +390 -0
  74. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/__init__.py +0 -0
  75. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/py.typed +0 -0
  76. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/__init__.py +0 -0
  77. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/__init__.py +0 -0
  78. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/runner.py +0 -0
  79. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/store.py +0 -0
  80. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/py.typed +0 -0
  81. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/sandbox.py +0 -0
  82. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/dependency_links.txt +0 -0
  83. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/top_level.txt +0 -0
  84. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/setup.cfg +0 -0
  85. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/__init__.py +0 -0
  86. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/helpers.py +0 -0
  87. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/__init__.py +0 -0
  88. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/__init__.py +0 -0
  89. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/__init__.py +0 -0
  90. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/begin_device_authorization.py +0 -0
  91. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/exchange_device_token.py +0 -0
  92. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/revoke_current_token.py +0 -0
  93. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/__init__.py +0 -0
  94. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/create_checkpoint.py +0 -0
  95. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/delete_checkpoint.py +0 -0
  96. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/get_checkpoint.py +0 -0
  97. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/list_checkpoints.py +0 -0
  98. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/__init__.py +0 -0
  99. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/cancel_cloud_agent_run.py +0 -0
  100. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent.py +0 -0
  101. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_artifact.py +0 -0
  102. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_run.py +0 -0
  103. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent.py +0 -0
  104. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent_artifact.py +0 -0
  105. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent_workspace_file.py +0 -0
  106. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/execute_cloud_agent_workspace_operation.py +0 -0
  107. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/follow_up_cloud_agent_run.py +0 -0
  108. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent.py +0 -0
  109. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent_artifact.py +0 -0
  110. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent_run.py +0 -0
  111. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agent_artifacts.py +0 -0
  112. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agent_runs.py +0 -0
  113. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agent_session_events.py +0 -0
  114. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agents.py +0 -0
  115. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/resume_cloud_agent_run.py +0 -0
  116. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/stream_cloud_agent_run_events.py +0 -0
  117. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/update_cloud_agent.py +0 -0
  118. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/write_cloud_agent_workspace_file.py +0 -0
  119. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/__init__.py +0 -0
  120. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/get_organization_event.py +0 -0
  121. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/get_organization_token_analysis.py +0 -0
  122. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_token_analysis.py +0 -0
  123. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_token_savings.py +0 -0
  124. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/__init__.py +0 -0
  125. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/read_runtime_file.py +0 -0
  126. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/write_runtime_file.py +0 -0
  127. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/__init__.py +0 -0
  128. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/create_git_hub_authorization_request.py +0 -0
  129. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/create_git_hub_runtime_binding.py +0 -0
  130. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/delete_git_hub_runtime_binding.py +0 -0
  131. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/get_git_hub_authorization_request.py +0 -0
  132. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/get_git_hub_runtime_binding.py +0 -0
  133. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/list_git_hub_authorization_requests.py +0 -0
  134. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/list_git_hub_branches.py +0 -0
  135. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/list_git_hub_repositories.py +0 -0
  136. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/replace_git_hub_runtime_bindings.py +0 -0
  137. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/__init__.py +0 -0
  138. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/head_healthz.py +0 -0
  139. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/healthz.py +0 -0
  140. {runta_sdk-0.2.1/src/runta/_internal/openapi/api/managed_model_providers → runta_sdk-0.2.2/src/runta/_internal/openapi/api/identity}/__init__.py +0 -0
  141. {runta_sdk-0.2.1/src/runta/_internal/openapi/api/runtimes → runta_sdk-0.2.2/src/runta/_internal/openapi/api/managed_model_providers}/__init__.py +0 -0
  142. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/managed_model_providers/list_managed_model_providers.py +0 -0
  143. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/managed_model_providers/update_managed_model_provider.py +0 -0
  144. {runta_sdk-0.2.1/src/runta/_internal/openapi/api/secrets → runta_sdk-0.2.2/src/runta/_internal/openapi/api/runtimes}/__init__.py +0 -0
  145. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/cancel_runtime_image_build.py +0 -0
  146. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime.py +0 -0
  147. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime_image_build.py +0 -0
  148. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime_vnc_credential.py +0 -0
  149. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/delete_runtime.py +0 -0
  150. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/delete_runtime_image.py +0 -0
  151. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/disable_runtime_vnc.py +0 -0
  152. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/dismiss_runtime_image_build.py +0 -0
  153. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/enable_runtime_vnc.py +0 -0
  154. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/get_runtime.py +0 -0
  155. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/get_runtime_image_build.py +0 -0
  156. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_image_builds.py +0 -0
  157. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_images.py +0 -0
  158. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_vnc_credentials.py +0 -0
  159. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtimes.py +0 -0
  160. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/patch_runtime.py +0 -0
  161. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/pause_runtime.py +0 -0
  162. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/resume_runtime.py +0 -0
  163. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/revoke_runtime_vnc_credential.py +0 -0
  164. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/start_runtime.py +0 -0
  165. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/stop_runtime.py +0 -0
  166. {runta_sdk-0.2.1/src/runta/_internal/openapi/api/ssh_keys → runta_sdk-0.2.2/src/runta/_internal/openapi/api/secrets}/__init__.py +0 -0
  167. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/create_secret.py +0 -0
  168. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/delete_secret.py +0 -0
  169. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/get_secret.py +0 -0
  170. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/list_secrets.py +0 -0
  171. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/set_secret.py +0 -0
  172. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/attach_runtime_ssh_key.py +0 -0
  173. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/create_ssh_key.py +0 -0
  174. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/delete_ssh_key.py +0 -0
  175. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/detach_runtime_ssh_key.py +0 -0
  176. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/get_ssh_host_key.py +0 -0
  177. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/list_runtime_ssh_keys.py +0 -0
  178. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/list_ssh_keys.py +0 -0
  179. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/client.py +0 -0
  180. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/errors.py +0 -0
  181. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/allowlist_egress_policy_mode.py +0 -0
  182. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/approved_git_hub_authorization.py +0 -0
  183. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/approved_git_hub_authorization_status.py +0 -0
  184. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/begin_device_authorization_request.py +0 -0
  185. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/begin_device_authorization_request_client_id.py +0 -0
  186. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_pagination.py +0 -0
  187. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_response.py +0 -0
  188. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_source_runtime.py +0 -0
  189. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent.py +0 -0
  190. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_artifact.py +0 -0
  191. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_event.py +0 -0
  192. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_harness_request.py +0 -0
  193. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_latest_reply.py +0 -0
  194. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_list.py +0 -0
  195. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_run.py +0 -0
  196. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_runtime_reference.py +0 -0
  197. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_runtime_reference_type.py +0 -0
  198. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_session_events.py +0 -0
  199. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_delete_request.py +0 -0
  200. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_write_request.py +0 -0
  201. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_write_result.py +0 -0
  202. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_artifact_request.py +0 -0
  203. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_git_hub_authorization_request_request.py +0 -0
  204. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_git_hub_runtime_binding_request.py +0 -0
  205. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_llm_token_saving_policy.py +0 -0
  206. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_build_request.py +0 -0
  207. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_build_request_architecture.py +0 -0
  208. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_selection.py +0 -0
  209. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_resource_requests.py +0 -0
  210. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_resources.py +0 -0
  211. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_secret_request.py +0 -0
  212. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_ssh_key_request.py +0 -0
  213. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_vnc_credential_request.py +0 -0
  214. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_vnc_credential_response.py +0 -0
  215. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denied_git_hub_authorization.py +0 -0
  216. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denied_git_hub_authorization_status.py +0 -0
  217. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denylist_egress_policy_mode.py +0 -0
  218. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_authorization_start.py +0 -0
  219. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_authorization_start_response.py +0 -0
  220. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_token_error.py +0 -0
  221. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_token_response.py +0 -0
  222. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/disabled_idle_policy.py +0 -0
  223. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/disabled_idle_policy_mode.py +0 -0
  224. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/empty_object.py +0 -0
  225. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/empty_response.py +0 -0
  226. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/error_body.py +0 -0
  227. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/error_envelope.py +0 -0
  228. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event.py +0 -0
  229. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_list.py +0 -0
  230. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_list_response.py +0 -0
  231. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_response.py +0 -0
  232. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/exchange_device_token_request.py +0 -0
  233. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/expired_git_hub_authorization.py +0 -0
  234. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/expired_git_hub_authorization_status.py +0 -0
  235. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/fresh_runtime_create_request_environment_variables.py +0 -0
  236. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_decision_metadata.py +0 -0
  237. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request.py +0 -0
  238. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_list.py +0 -0
  239. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_list_response.py +0 -0
  240. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_response.py +0 -0
  241. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch.py +0 -0
  242. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch_list.py +0 -0
  243. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch_list_response.py +0 -0
  244. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_installation.py +0 -0
  245. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository.py +0 -0
  246. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository_list.py +0 -0
  247. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository_list_response.py +0 -0
  248. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding.py +0 -0
  249. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_list.py +0 -0
  250. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_list_response.py +0 -0
  251. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_response.py +0 -0
  252. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/installed_git_hub_authorization.py +0 -0
  253. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/installed_git_hub_authorization_status.py +0 -0
  254. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_checkpoints_response.py +0 -0
  255. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtime_image_builds_response.py +0 -0
  256. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtime_images_response.py +0 -0
  257. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtimes_response.py +0 -0
  258. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_secrets_response.py +0 -0
  259. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_ssh_keys_response.py +0 -0
  260. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_vnc_credentials_response.py +0 -0
  261. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/llm_token_saving_policy.py +0 -0
  262. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider.py +0 -0
  263. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_list.py +0 -0
  264. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_reference.py +0 -0
  265. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_reference_type.py +0 -0
  266. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_llm_token_saving_policy.py +0 -0
  267. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_request_environment_variables.py +0 -0
  268. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_resource_requests.py +0 -0
  269. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_resources.py +0 -0
  270. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/pending_git_hub_authorization.py +0 -0
  271. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/pending_git_hub_authorization_status.py +0 -0
  272. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_checkpoint_state.py +0 -0
  273. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_error_code.py +0 -0
  274. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_ingress_protocol.py +0 -0
  275. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_ingress_spec.py +0 -0
  276. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_runtime_status.py +0 -0
  277. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/replace_git_hub_runtime_bindings_request.py +0 -0
  278. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/replace_git_hub_runtime_bindings_request_repositories_item.py +0 -0
  279. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_desired_status.py +0 -0
  280. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_environment_variables.py +0 -0
  281. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_architectures_item.py +0 -0
  282. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build.py +0 -0
  283. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_architecture.py +0 -0
  284. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_attempt.py +0 -0
  285. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_attempt_outcome.py +0 -0
  286. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_response.py +0 -0
  287. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_status.py +0 -0
  288. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_disk_capability.py +0 -0
  289. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_model_provider.py +0 -0
  290. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_protocol_binding.py +0 -0
  291. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_recommended_resources.py +0 -0
  292. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_subscription_option.py +0 -0
  293. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_web_ui.py +0 -0
  294. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_pagination.py +0 -0
  295. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_repository_selection.py +0 -0
  296. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_current.py +0 -0
  297. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_limits.py +0 -0
  298. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_requests.py +0 -0
  299. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resources.py +0 -0
  300. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_response.py +0 -0
  301. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_secret_configuration.py +0 -0
  302. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_file_entry.py +0 -0
  303. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_file_kind.py +0 -0
  304. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_kind.py +0 -0
  305. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_request.py +0 -0
  306. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_result.py +0 -0
  307. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_port.py +0 -0
  308. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_search_match.py +0 -0
  309. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret.py +0 -0
  310. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_egress_injection.py +0 -0
  311. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_environment_injection.py +0 -0
  312. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_file_injection.py +0 -0
  313. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_injection_action.py +0 -0
  314. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_response.py +0 -0
  315. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/set_secret_request.py +0 -0
  316. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_host_key.py +0 -0
  317. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_host_key_response.py +0 -0
  318. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_key.py +0 -0
  319. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_key_response.py +0 -0
  320. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_and_wakeup_idle_policy.py +0 -0
  321. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_and_wakeup_idle_policy_mode.py +0 -0
  322. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_only_idle_policy.py +0 -0
  323. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_only_idle_policy_mode.py +0 -0
  324. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_detail.py +0 -0
  325. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_detail_response.py +0 -0
  326. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding.py +0 -0
  327. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_confidence.py +0 -0
  328. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_kind.py +0 -0
  329. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_severity.py +0 -0
  330. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue.py +0 -0
  331. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_confidence.py +0 -0
  332. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_kind.py +0 -0
  333. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_severity.py +0 -0
  334. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_list.py +0 -0
  335. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_list_response.py +0 -0
  336. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_summary.py +0 -0
  337. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_tool_call.py +0 -0
  338. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_event.py +0 -0
  339. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_method.py +0 -0
  340. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_method_method.py +0 -0
  341. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_list.py +0 -0
  342. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_list_response.py +0 -0
  343. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_summary.py +0 -0
  344. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/update_cloud_agent_request.py +0 -0
  345. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/update_managed_model_provider_request.py +0 -0
  346. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential.py +0 -0
  347. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_connection.py +0 -0
  348. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_connection_security_type.py +0 -0
  349. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_response.py +0 -0
  350. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection.py +0 -0
  351. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection_security_type.py +0 -0
  352. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection_username.py +0 -0
  353. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/types.py +0 -0
  354. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/pagination.py +0 -0
  355. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/py.typed +0 -0
  356. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_e2e.py +0 -0
  357. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_integration.py +0 -0
  358. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_runta_environment.py +0 -0
  359. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openai_extra_packaging.py +0 -0
  360. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_retry_policy.py +0 -0
  361. {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_streaming_transfer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runta-sdk
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Python SDK for Runta runtime management
5
5
  Author: Runta
6
6
  License-Expression: MIT
@@ -8,7 +8,10 @@ Requires-Python: >=3.10
8
8
  Description-Content-Type: text/markdown
9
9
  Requires-Dist: attrs>=22.2.0
10
10
  Requires-Dist: httpx>=0.27
11
+ Requires-Dist: aiohttp<3.15,>=3.14.3
12
+ Requires-Dist: certifi>=2024.2.2
11
13
  Requires-Dist: websockets>=13
14
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
12
15
  Provides-Extra: harbor
13
16
  Requires-Dist: harbor>=0.20.0; python_version >= "3.12" and extra == "harbor"
14
17
  Provides-Extra: openai
@@ -85,6 +88,11 @@ print(result.stdout_text)
85
88
  runta.close()
86
89
  ```
87
90
 
91
+ Commands run as independent Runtime tasks. The SDK keeps a WebSocket open to
92
+ observe progress and reconnects to the same task after a disconnect, without
93
+ executing the command again. See [execution and automatic reconnection](docs/background-execution.md)
94
+ for Runtime dependencies, timeouts, and recovering a task by ID.
95
+
88
96
  Authentication uses `Runta(token="rt_...")` or `RUNTA_TOKEN`. The endpoint
89
97
  defaults to `https://api.runta.com`; override it with `Runta(endpoint="...")`,
90
98
  `RUNTA_ENDPOINT`, or `endpoint` from the optional Runta config file.
@@ -126,35 +134,75 @@ runtime.files.upload("./project", "/workspace/project")
126
134
  runtime.files.download("/workspace/dist", "./artifacts/")
127
135
  ```
128
136
 
129
- Runtime creation, resource and egress updates, and streaming transfers retry
130
- transient failures with exponential backoff and Full jitter. The default is
131
- 16 total attempts, including the first request; set `retry_max_attempts` on
137
+ Runtime, Checkpoint, and Secret queries, file reads, Runtime creation and deletion,
138
+ resource and egress updates, and streaming transfers retry transient failures
139
+ with exponential backoff and full jitter. The default is 16 total attempts,
140
+ including the first request; set `retry_max_attempts` on
132
141
  `Runta` or `AsyncRunta` to use 1–16 attempts. Creation uses one idempotency key
133
- per call, and PATCH retries keep the original expected revision. HTTP create
134
- and PATCH operations have an eight-minute deadline. Each transfer connection
135
- uses the client's `timeout` (30 seconds by default); an established transfer
136
- has no overall time limit. Transfers restart from the beginning after a
137
- disconnect.
142
+ per call, and PATCH retries keep the original expected revision. Reads, Runtime
143
+ creation and deletion, and PATCH operations have an eight-minute retry budget.
144
+ Read and Runtime deletion retries use a valid `Retry-After` on HTTP 429 instead of
145
+ full jitter;
146
+ the header accepts seconds or an HTTP date and cannot extend the retry budget.
147
+ Otherwise the jitter bound starts at one second and doubles up to 60 seconds.
148
+ Authentication, permission, not-found, parameter, and certificate errors are
149
+ not retried. Paginated reads retry only the failed page, with one time budget
150
+ shared across all pages. Runtime and Checkpoint readiness queries, their
151
+ name-lookup fallbacks, and polling delays share the readiness timeout instead
152
+ of receiving a separate eight-minute budget. Health checks remain single requests.
153
+
154
+ Runtime, Checkpoint, and Secret lookups retain their direct-GET then list
155
+ fallback. Names and UUIDs use the same retry policy.
156
+
157
+ Runtime deletion retries the revision GET and DELETE together without nested
158
+ GET retries, fetching the current revision for each attempt. A 404 from either
159
+ request means the Runtime is already deleted and is treated as success;
160
+ 202/204 returns immediately without polling for deletion to finish. Revision
161
+ conflicts are not retried.
162
+ Deletion also retries HTTP 500 from either the revision GET or DELETE. HTTP 501
163
+ and revision conflicts still fail immediately; other operations keep their
164
+ existing retry status policy.
165
+
166
+ Async REST requests share one aiohttp session per client. The client's `timeout`
167
+ (30 seconds by default) covers each complete REST request, including connection
168
+ pool waiting and response reading. Use and close an async client in the same
169
+ event loop. Synchronous REST continues to use httpx. New async HTTPS connections attempt TLS
170
+ 1.2/1.3 session resumption using an in-memory cache per client, isolated by
171
+ hostname and port. Missing, expired, or rejected tickets fall back to a full
172
+ handshake. Certificate verification remains enabled; no 0-RTT data is sent.
173
+ Closing the client clears its TLS session cache.
174
+
175
+ Each transfer connection uses the client's `timeout` (30 seconds by default);
176
+ an established transfer has no overall time limit. Transfers restart from the
177
+ beginning after a disconnect.
178
+
179
+ Directory uploads wait for stdin EOF before committing the extracted files and
180
+ reporting completion, so tar's archive trailer cannot close the connection
181
+ before the SDK finishes its upload.
182
+ Async directory uploads wait for archive data in the event loop, keeping
183
+ executor threads available to produce archives under concurrent uploads.
138
184
 
139
185
  ## REST contract
140
186
 
141
187
  `contracts/runta-api.openapi.yaml` is copied from
142
- `runta/crates/runta-openapi/specs/openapi.yaml` and is used by the SDK contract tests.
143
- CI refreshes this file from the latest successful `runta` OpenAPI contract
144
- artifact before running tests. If the artifact is unavailable, it falls back to
145
- the `integration` branch raw YAML and then to the checked-in contract.
188
+ `runta/openapi/public.yaml` and is used by the SDK contract tests.
189
+ CI fetches this file directly from the `runta` repository's `integration` branch
190
+ using the GitHub Contents API and `RUNTA_CONTRACT_TOKEN`. The contract sync check
191
+ fails if the source cannot be fetched or differs from the committed copy.
192
+ The test job may fall back to raw YAML and then to the checked-in contract when
193
+ the source is unavailable.
146
194
 
147
195
  To refresh it locally after changing `runta-api`:
148
196
 
149
197
  ```bash
150
198
  cd ~/runta
151
- cargo make openapi
152
- cp crates/runta-openapi/specs/openapi.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
199
+ mise run api-contract
200
+ cp openapi/public.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
153
201
  cd ~/RuntaPythonSDK
154
202
  uv run python -m pytest tests/test_openapi_contract.py
155
203
  ```
156
204
 
157
- To fetch the latest published contract directly:
205
+ To fetch the current source contract directly:
158
206
 
159
207
  ```bash
160
208
  scripts/fetch-runta-openapi.py
@@ -60,6 +60,11 @@ print(result.stdout_text)
60
60
  runta.close()
61
61
  ```
62
62
 
63
+ Commands run as independent Runtime tasks. The SDK keeps a WebSocket open to
64
+ observe progress and reconnects to the same task after a disconnect, without
65
+ executing the command again. See [execution and automatic reconnection](docs/background-execution.md)
66
+ for Runtime dependencies, timeouts, and recovering a task by ID.
67
+
63
68
  Authentication uses `Runta(token="rt_...")` or `RUNTA_TOKEN`. The endpoint
64
69
  defaults to `https://api.runta.com`; override it with `Runta(endpoint="...")`,
65
70
  `RUNTA_ENDPOINT`, or `endpoint` from the optional Runta config file.
@@ -101,35 +106,75 @@ runtime.files.upload("./project", "/workspace/project")
101
106
  runtime.files.download("/workspace/dist", "./artifacts/")
102
107
  ```
103
108
 
104
- Runtime creation, resource and egress updates, and streaming transfers retry
105
- transient failures with exponential backoff and Full jitter. The default is
106
- 16 total attempts, including the first request; set `retry_max_attempts` on
109
+ Runtime, Checkpoint, and Secret queries, file reads, Runtime creation and deletion,
110
+ resource and egress updates, and streaming transfers retry transient failures
111
+ with exponential backoff and full jitter. The default is 16 total attempts,
112
+ including the first request; set `retry_max_attempts` on
107
113
  `Runta` or `AsyncRunta` to use 1–16 attempts. Creation uses one idempotency key
108
- per call, and PATCH retries keep the original expected revision. HTTP create
109
- and PATCH operations have an eight-minute deadline. Each transfer connection
110
- uses the client's `timeout` (30 seconds by default); an established transfer
111
- has no overall time limit. Transfers restart from the beginning after a
112
- disconnect.
114
+ per call, and PATCH retries keep the original expected revision. Reads, Runtime
115
+ creation and deletion, and PATCH operations have an eight-minute retry budget.
116
+ Read and Runtime deletion retries use a valid `Retry-After` on HTTP 429 instead of
117
+ full jitter;
118
+ the header accepts seconds or an HTTP date and cannot extend the retry budget.
119
+ Otherwise the jitter bound starts at one second and doubles up to 60 seconds.
120
+ Authentication, permission, not-found, parameter, and certificate errors are
121
+ not retried. Paginated reads retry only the failed page, with one time budget
122
+ shared across all pages. Runtime and Checkpoint readiness queries, their
123
+ name-lookup fallbacks, and polling delays share the readiness timeout instead
124
+ of receiving a separate eight-minute budget. Health checks remain single requests.
125
+
126
+ Runtime, Checkpoint, and Secret lookups retain their direct-GET then list
127
+ fallback. Names and UUIDs use the same retry policy.
128
+
129
+ Runtime deletion retries the revision GET and DELETE together without nested
130
+ GET retries, fetching the current revision for each attempt. A 404 from either
131
+ request means the Runtime is already deleted and is treated as success;
132
+ 202/204 returns immediately without polling for deletion to finish. Revision
133
+ conflicts are not retried.
134
+ Deletion also retries HTTP 500 from either the revision GET or DELETE. HTTP 501
135
+ and revision conflicts still fail immediately; other operations keep their
136
+ existing retry status policy.
137
+
138
+ Async REST requests share one aiohttp session per client. The client's `timeout`
139
+ (30 seconds by default) covers each complete REST request, including connection
140
+ pool waiting and response reading. Use and close an async client in the same
141
+ event loop. Synchronous REST continues to use httpx. New async HTTPS connections attempt TLS
142
+ 1.2/1.3 session resumption using an in-memory cache per client, isolated by
143
+ hostname and port. Missing, expired, or rejected tickets fall back to a full
144
+ handshake. Certificate verification remains enabled; no 0-RTT data is sent.
145
+ Closing the client clears its TLS session cache.
146
+
147
+ Each transfer connection uses the client's `timeout` (30 seconds by default);
148
+ an established transfer has no overall time limit. Transfers restart from the
149
+ beginning after a disconnect.
150
+
151
+ Directory uploads wait for stdin EOF before committing the extracted files and
152
+ reporting completion, so tar's archive trailer cannot close the connection
153
+ before the SDK finishes its upload.
154
+ Async directory uploads wait for archive data in the event loop, keeping
155
+ executor threads available to produce archives under concurrent uploads.
113
156
 
114
157
  ## REST contract
115
158
 
116
159
  `contracts/runta-api.openapi.yaml` is copied from
117
- `runta/crates/runta-openapi/specs/openapi.yaml` and is used by the SDK contract tests.
118
- CI refreshes this file from the latest successful `runta` OpenAPI contract
119
- artifact before running tests. If the artifact is unavailable, it falls back to
120
- the `integration` branch raw YAML and then to the checked-in contract.
160
+ `runta/openapi/public.yaml` and is used by the SDK contract tests.
161
+ CI fetches this file directly from the `runta` repository's `integration` branch
162
+ using the GitHub Contents API and `RUNTA_CONTRACT_TOKEN`. The contract sync check
163
+ fails if the source cannot be fetched or differs from the committed copy.
164
+ The test job may fall back to raw YAML and then to the checked-in contract when
165
+ the source is unavailable.
121
166
 
122
167
  To refresh it locally after changing `runta-api`:
123
168
 
124
169
  ```bash
125
170
  cd ~/runta
126
- cargo make openapi
127
- cp crates/runta-openapi/specs/openapi.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
171
+ mise run api-contract
172
+ cp openapi/public.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
128
173
  cd ~/RuntaPythonSDK
129
174
  uv run python -m pytest tests/test_openapi_contract.py
130
175
  ```
131
176
 
132
- To fetch the latest published contract directly:
177
+ To fetch the current source contract directly:
133
178
 
134
179
  ```bash
135
180
  scripts/fetch-runta-openapi.py
@@ -936,25 +936,28 @@ class RuntaEnvironment(BaseEnvironment):
936
936
  async def _runtime_download_dir(
937
937
  self, source_dir: str, target_dir: Path | str
938
938
  ) -> None:
939
+ # Resolve only the source directory: tar otherwise archives a top-level
940
+ # symlink rather than its contents. Keep nested-link extraction checks.
941
+ result = await self._runtime_exec_raw(
942
+ f"CDPATH= cd -P -- {shlex.quote(source_dir)} && pwd -P", timeout_sec=30
943
+ )
944
+ self._check(result, "resolve download source directory")
945
+ source_dir = result.stdout.removesuffix("\n")
939
946
  target = Path(target_dir)
940
947
  target.mkdir(parents=True, exist_ok=True)
941
- archive_name = f"/tmp/runta-harbor-{uuid.uuid4().hex}.tar.gz"
942
- command = f"tar czf {shlex.quote(archive_name)} -C {shlex.quote(source_dir)} ."
943
- result = await self._runtime_exec_raw(command, timeout_sec=120)
944
- self._check(result, f"archive {source_dir}")
945
-
946
948
  with tempfile.TemporaryDirectory() as tmp_dir:
947
- archive_path = Path(tmp_dir) / "download.tar.gz"
948
- await self._runtime_download_file(archive_name, archive_path)
949
- with tarfile.open(archive_path, "r:gz") as archive:
949
+ source = Path(tmp_dir) / "contents"
950
+ await self._require_runtime().files.download(source_dir, str(source))
951
+ # Harbor downloads contents into an existing directory, whereas the
952
+ # SDK downloads the source directory itself to a staged destination.
953
+ # Retain Harbor's safe content merge, including existing destination
954
+ # symlink checks. This merge archive stays local.
955
+ archive_path = Path(tmp_dir) / "merge.tar"
956
+ with tarfile.open(archive_path, "w") as archive:
957
+ archive.add(source, arcname=".")
958
+ with tarfile.open(archive_path, "r") as archive:
950
959
  archive.extractall(target, filter="data")
951
960
 
952
- cleanup = await self._runtime_exec_raw(
953
- f"rm -f {shlex.quote(archive_name)}", timeout_sec=30
954
- )
955
- if cleanup.return_code != 0:
956
- self.logger.warning("failed to remove remote archive %s", archive_name)
957
-
958
961
  async def _runtime_ensure_dirs(self, dirs: list[str]) -> None:
959
962
  if not dirs:
960
963
  return
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "runta-sdk"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "Python SDK for Runta runtime management"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -13,7 +13,10 @@ authors = [{ name = "Runta" }]
13
13
  dependencies = [
14
14
  "attrs>=22.2.0",
15
15
  "httpx>=0.27",
16
+ "aiohttp>=3.14.3,<3.15",
17
+ "certifi>=2024.2.2",
16
18
  "websockets>=13",
19
+ "tomli>=2.0; python_version < '3.11'",
17
20
  ]
18
21
 
19
22
  [project.optional-dependencies]
@@ -38,7 +41,7 @@ dev = [
38
41
  where = ["src", "integrations/harbor", "integrations/openai-agents-runta/src"]
39
42
 
40
43
  [tool.setuptools.package-data]
41
- runta = ["py.typed"]
44
+ runta = ["py.typed", "_internal/execution.sh"]
42
45
  runta_harbor = ["py.typed"]
43
46
  agents_runta = ["py.typed"]
44
47
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: runta-sdk
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Python SDK for Runta runtime management
5
5
  Author: Runta
6
6
  License-Expression: MIT
@@ -8,7 +8,10 @@ Requires-Python: >=3.10
8
8
  Description-Content-Type: text/markdown
9
9
  Requires-Dist: attrs>=22.2.0
10
10
  Requires-Dist: httpx>=0.27
11
+ Requires-Dist: aiohttp<3.15,>=3.14.3
12
+ Requires-Dist: certifi>=2024.2.2
11
13
  Requires-Dist: websockets>=13
14
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
12
15
  Provides-Extra: harbor
13
16
  Requires-Dist: harbor>=0.20.0; python_version >= "3.12" and extra == "harbor"
14
17
  Provides-Extra: openai
@@ -85,6 +88,11 @@ print(result.stdout_text)
85
88
  runta.close()
86
89
  ```
87
90
 
91
+ Commands run as independent Runtime tasks. The SDK keeps a WebSocket open to
92
+ observe progress and reconnects to the same task after a disconnect, without
93
+ executing the command again. See [execution and automatic reconnection](docs/background-execution.md)
94
+ for Runtime dependencies, timeouts, and recovering a task by ID.
95
+
88
96
  Authentication uses `Runta(token="rt_...")` or `RUNTA_TOKEN`. The endpoint
89
97
  defaults to `https://api.runta.com`; override it with `Runta(endpoint="...")`,
90
98
  `RUNTA_ENDPOINT`, or `endpoint` from the optional Runta config file.
@@ -126,35 +134,75 @@ runtime.files.upload("./project", "/workspace/project")
126
134
  runtime.files.download("/workspace/dist", "./artifacts/")
127
135
  ```
128
136
 
129
- Runtime creation, resource and egress updates, and streaming transfers retry
130
- transient failures with exponential backoff and Full jitter. The default is
131
- 16 total attempts, including the first request; set `retry_max_attempts` on
137
+ Runtime, Checkpoint, and Secret queries, file reads, Runtime creation and deletion,
138
+ resource and egress updates, and streaming transfers retry transient failures
139
+ with exponential backoff and full jitter. The default is 16 total attempts,
140
+ including the first request; set `retry_max_attempts` on
132
141
  `Runta` or `AsyncRunta` to use 1–16 attempts. Creation uses one idempotency key
133
- per call, and PATCH retries keep the original expected revision. HTTP create
134
- and PATCH operations have an eight-minute deadline. Each transfer connection
135
- uses the client's `timeout` (30 seconds by default); an established transfer
136
- has no overall time limit. Transfers restart from the beginning after a
137
- disconnect.
142
+ per call, and PATCH retries keep the original expected revision. Reads, Runtime
143
+ creation and deletion, and PATCH operations have an eight-minute retry budget.
144
+ Read and Runtime deletion retries use a valid `Retry-After` on HTTP 429 instead of
145
+ full jitter;
146
+ the header accepts seconds or an HTTP date and cannot extend the retry budget.
147
+ Otherwise the jitter bound starts at one second and doubles up to 60 seconds.
148
+ Authentication, permission, not-found, parameter, and certificate errors are
149
+ not retried. Paginated reads retry only the failed page, with one time budget
150
+ shared across all pages. Runtime and Checkpoint readiness queries, their
151
+ name-lookup fallbacks, and polling delays share the readiness timeout instead
152
+ of receiving a separate eight-minute budget. Health checks remain single requests.
153
+
154
+ Runtime, Checkpoint, and Secret lookups retain their direct-GET then list
155
+ fallback. Names and UUIDs use the same retry policy.
156
+
157
+ Runtime deletion retries the revision GET and DELETE together without nested
158
+ GET retries, fetching the current revision for each attempt. A 404 from either
159
+ request means the Runtime is already deleted and is treated as success;
160
+ 202/204 returns immediately without polling for deletion to finish. Revision
161
+ conflicts are not retried.
162
+ Deletion also retries HTTP 500 from either the revision GET or DELETE. HTTP 501
163
+ and revision conflicts still fail immediately; other operations keep their
164
+ existing retry status policy.
165
+
166
+ Async REST requests share one aiohttp session per client. The client's `timeout`
167
+ (30 seconds by default) covers each complete REST request, including connection
168
+ pool waiting and response reading. Use and close an async client in the same
169
+ event loop. Synchronous REST continues to use httpx. New async HTTPS connections attempt TLS
170
+ 1.2/1.3 session resumption using an in-memory cache per client, isolated by
171
+ hostname and port. Missing, expired, or rejected tickets fall back to a full
172
+ handshake. Certificate verification remains enabled; no 0-RTT data is sent.
173
+ Closing the client clears its TLS session cache.
174
+
175
+ Each transfer connection uses the client's `timeout` (30 seconds by default);
176
+ an established transfer has no overall time limit. Transfers restart from the
177
+ beginning after a disconnect.
178
+
179
+ Directory uploads wait for stdin EOF before committing the extracted files and
180
+ reporting completion, so tar's archive trailer cannot close the connection
181
+ before the SDK finishes its upload.
182
+ Async directory uploads wait for archive data in the event loop, keeping
183
+ executor threads available to produce archives under concurrent uploads.
138
184
 
139
185
  ## REST contract
140
186
 
141
187
  `contracts/runta-api.openapi.yaml` is copied from
142
- `runta/crates/runta-openapi/specs/openapi.yaml` and is used by the SDK contract tests.
143
- CI refreshes this file from the latest successful `runta` OpenAPI contract
144
- artifact before running tests. If the artifact is unavailable, it falls back to
145
- the `integration` branch raw YAML and then to the checked-in contract.
188
+ `runta/openapi/public.yaml` and is used by the SDK contract tests.
189
+ CI fetches this file directly from the `runta` repository's `integration` branch
190
+ using the GitHub Contents API and `RUNTA_CONTRACT_TOKEN`. The contract sync check
191
+ fails if the source cannot be fetched or differs from the committed copy.
192
+ The test job may fall back to raw YAML and then to the checked-in contract when
193
+ the source is unavailable.
146
194
 
147
195
  To refresh it locally after changing `runta-api`:
148
196
 
149
197
  ```bash
150
198
  cd ~/runta
151
- cargo make openapi
152
- cp crates/runta-openapi/specs/openapi.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
199
+ mise run api-contract
200
+ cp openapi/public.yaml ~/RuntaPythonSDK/contracts/runta-api.openapi.yaml
153
201
  cd ~/RuntaPythonSDK
154
202
  uv run python -m pytest tests/test_openapi_contract.py
155
203
  ```
156
204
 
157
- To fetch the latest published contract directly:
205
+ To fetch the current source contract directly:
158
206
 
159
207
  ```bash
160
208
  scripts/fetch-runta-openapi.py
@@ -17,14 +17,22 @@ runta_sdk.egg-info/top_level.txt
17
17
  src/runta/__init__.py
18
18
  src/runta/py.typed
19
19
  src/runta/_internal/__init__.py
20
+ src/runta/_internal/async_file_io.py
20
21
  src/runta/_internal/async_http.py
22
+ src/runta/_internal/byte_budget.py
21
23
  src/runta/_internal/config.py
24
+ src/runta/_internal/execution.py
25
+ src/runta/_internal/execution.sh
22
26
  src/runta/_internal/helpers.py
27
+ src/runta/_internal/http_limits.py
23
28
  src/runta/_internal/pagination.py
29
+ src/runta/_internal/rest_tls.py
24
30
  src/runta/_internal/retry.py
25
31
  src/runta/_internal/streaming_transfer.py
26
32
  src/runta/_internal/sync_http.py
33
+ src/runta/_internal/tls_resumption.py
27
34
  src/runta/_internal/transport.py
35
+ src/runta/_internal/user_agent.py
28
36
  src/runta/_internal/openapi/__init__.py
29
37
  src/runta/_internal/openapi/client.py
30
38
  src/runta/_internal/openapi/errors.py
@@ -43,6 +51,7 @@ src/runta/_internal/openapi/api/cloud_agents/__init__.py
43
51
  src/runta/_internal/openapi/api/cloud_agents/cancel_cloud_agent_run.py
44
52
  src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent.py
45
53
  src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_artifact.py
54
+ src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_computer_session.py
46
55
  src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_run.py
47
56
  src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent.py
48
57
  src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent_artifact.py
@@ -82,6 +91,8 @@ src/runta/_internal/openapi/api/git_hub/replace_git_hub_runtime_bindings.py
82
91
  src/runta/_internal/openapi/api/health/__init__.py
83
92
  src/runta/_internal/openapi/api/health/head_healthz.py
84
93
  src/runta/_internal/openapi/api/health/healthz.py
94
+ src/runta/_internal/openapi/api/identity/__init__.py
95
+ src/runta/_internal/openapi/api/identity/get_me.py
85
96
  src/runta/_internal/openapi/api/managed_model_providers/__init__.py
86
97
  src/runta/_internal/openapi/api/managed_model_providers/list_managed_model_providers.py
87
98
  src/runta/_internal/openapi/api/managed_model_providers/update_managed_model_provider.py
@@ -135,17 +146,25 @@ src/runta/_internal/openapi/models/checkpoint_runtime_restore_request.py
135
146
  src/runta/_internal/openapi/models/checkpoint_source_runtime.py
136
147
  src/runta/_internal/openapi/models/cloud_agent.py
137
148
  src/runta/_internal/openapi/models/cloud_agent_artifact.py
149
+ src/runta/_internal/openapi/models/cloud_agent_computer_session.py
150
+ src/runta/_internal/openapi/models/cloud_agent_computer_session_channels.py
138
151
  src/runta/_internal/openapi/models/cloud_agent_event.py
139
152
  src/runta/_internal/openapi/models/cloud_agent_harness_request.py
140
153
  src/runta/_internal/openapi/models/cloud_agent_latest_reply.py
141
154
  src/runta/_internal/openapi/models/cloud_agent_list.py
155
+ src/runta/_internal/openapi/models/cloud_agent_prompt_image.py
156
+ src/runta/_internal/openapi/models/cloud_agent_prompt_image_mime_type.py
157
+ src/runta/_internal/openapi/models/cloud_agent_prompt_image_type.py
142
158
  src/runta/_internal/openapi/models/cloud_agent_run.py
143
159
  src/runta/_internal/openapi/models/cloud_agent_runtime_reference.py
144
160
  src/runta/_internal/openapi/models/cloud_agent_runtime_reference_type.py
145
161
  src/runta/_internal/openapi/models/cloud_agent_session_events.py
162
+ src/runta/_internal/openapi/models/cloud_agent_vnc_session_channel.py
146
163
  src/runta/_internal/openapi/models/cloud_agent_workspace_delete_request.py
147
164
  src/runta/_internal/openapi/models/cloud_agent_workspace_write_request.py
148
165
  src/runta/_internal/openapi/models/cloud_agent_workspace_write_result.py
166
+ src/runta/_internal/openapi/models/cold_restore_resource_requests.py
167
+ src/runta/_internal/openapi/models/cold_restore_resources.py
149
168
  src/runta/_internal/openapi/models/create_checkpoint_request.py
150
169
  src/runta/_internal/openapi/models/create_checkpoint_request_kind.py
151
170
  src/runta/_internal/openapi/models/create_cloud_agent_artifact_request.py
@@ -299,6 +318,8 @@ src/runta/_internal/openapi/models/token_savings_list_response.py
299
318
  src/runta/_internal/openapi/models/token_savings_summary.py
300
319
  src/runta/_internal/openapi/models/update_cloud_agent_request.py
301
320
  src/runta/_internal/openapi/models/update_managed_model_provider_request.py
321
+ src/runta/_internal/openapi/models/user_profile.py
322
+ src/runta/_internal/openapi/models/user_profile_response.py
302
323
  src/runta/_internal/openapi/models/vnc_credential.py
303
324
  src/runta/_internal/openapi/models/vnc_credential_connection.py
304
325
  src/runta/_internal/openapi/models/vnc_credential_connection_security_type.py
@@ -307,7 +328,19 @@ src/runta/_internal/openapi/models/vnc_gateway_connection.py
307
328
  src/runta/_internal/openapi/models/vnc_gateway_connection_security_type.py
308
329
  src/runta/_internal/openapi/models/vnc_gateway_connection_username.py
309
330
  tests/test_api_reference_generation.py
331
+ tests/test_async_file_io.py
332
+ tests/test_async_http_transport.py
333
+ tests/test_checkpoint_metadata.py
310
334
  tests/test_config_and_helpers.py
335
+ tests/test_connection_pool.py
336
+ tests/test_delete_runtime_retry.py
337
+ tests/test_directory_upload.py
338
+ tests/test_directory_upload_concurrency.py
339
+ tests/test_execution.py
340
+ tests/test_execution_result_stream.py
341
+ tests/test_fetch_openapi.py
342
+ tests/test_get_runtime_retry.py
343
+ tests/test_harbor_directory_download.py
311
344
  tests/test_harbor_e2e.py
312
345
  tests/test_harbor_integration.py
313
346
  tests/test_harbor_runta_environment.py
@@ -315,6 +348,12 @@ tests/test_live.py
315
348
  tests/test_openai_extra_packaging.py
316
349
  tests/test_openapi_contract.py
317
350
  tests/test_openapi_transport.py
351
+ tests/test_read_retries.py
318
352
  tests/test_rest_deployment.py
353
+ tests/test_rest_tls.py
319
354
  tests/test_retry_policy.py
320
- tests/test_streaming_transfer.py
355
+ tests/test_runtime_readiness.py
356
+ tests/test_streaming_transfer.py
357
+ tests/test_user_agent.py
358
+ tests/test_websocket_tls.py
359
+ tests/test_websocket_tls_resumption.py
@@ -1,7 +1,12 @@
1
1
  attrs>=22.2.0
2
2
  httpx>=0.27
3
+ aiohttp<3.15,>=3.14.3
4
+ certifi>=2024.2.2
3
5
  websockets>=13
4
6
 
7
+ [:python_version < "3.11"]
8
+ tomli>=2.0
9
+
5
10
  [dev]
6
11
  griffe>=1.0
7
12
  mkdocs-material