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.
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/PKG-INFO +64 -16
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/README.md +60 -15
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/environment.py +17 -14
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/pyproject.toml +5 -2
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/PKG-INFO +64 -16
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/SOURCES.txt +40 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/requires.txt +5 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/__init__.py +152 -107
- runta_sdk-0.2.2/src/runta/_internal/async_file_io.py +92 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/async_http.py +245 -39
- runta_sdk-0.2.2/src/runta/_internal/byte_budget.py +16 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/config.py +5 -1
- runta_sdk-0.2.2/src/runta/_internal/execution.py +780 -0
- runta_sdk-0.2.2/src/runta/_internal/execution.sh +285 -0
- runta_sdk-0.2.2/src/runta/_internal/http_limits.py +13 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_computer_session.py +215 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_events.py +60 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/api/identity/get_me.py +172 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/api/ssh_keys/__init__.py +1 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/__init__.py +20 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/allowlist_egress_policy.py +1 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint.py +30 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_runtime_restore_request.py +70 -19
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_computer_session.py +78 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_computer_session_channels.py +50 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image.py +61 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image_mime_type.py +11 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_prompt_image_type.py +8 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cloud_agent_vnc_session_channel.py +50 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cold_restore_resource_requests.py +52 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/cold_restore_resources.py +71 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_checkpoint_request.py +3 -2
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_checkpoint_request_kind.py +2 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_request.py +45 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_run_request.py +28 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denylist_egress_policy.py +1 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/fresh_runtime_create_request.py +26 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_request.py +28 -1
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime.py +23 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image.py +10 -1
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/user_profile.py +65 -0
- runta_sdk-0.2.2/src/runta/_internal/openapi/models/user_profile_response.py +49 -0
- runta_sdk-0.2.2/src/runta/_internal/rest_tls.py +12 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/retry.py +94 -3
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/streaming_transfer.py +310 -60
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/sync_http.py +131 -22
- runta_sdk-0.2.2/src/runta/_internal/tls_resumption.py +151 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/transport.py +28 -4
- runta_sdk-0.2.2/src/runta/_internal/user_agent.py +26 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_api_reference_generation.py +1 -1
- runta_sdk-0.2.2/tests/test_async_file_io.py +612 -0
- runta_sdk-0.2.2/tests/test_async_http_transport.py +383 -0
- runta_sdk-0.2.2/tests/test_checkpoint_metadata.py +137 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_config_and_helpers.py +6 -44
- runta_sdk-0.2.2/tests/test_connection_pool.py +98 -0
- runta_sdk-0.2.2/tests/test_delete_runtime_retry.py +286 -0
- runta_sdk-0.2.2/tests/test_directory_upload.py +151 -0
- runta_sdk-0.2.2/tests/test_directory_upload_concurrency.py +162 -0
- runta_sdk-0.2.2/tests/test_execution.py +1350 -0
- runta_sdk-0.2.2/tests/test_execution_result_stream.py +192 -0
- runta_sdk-0.2.2/tests/test_fetch_openapi.py +116 -0
- runta_sdk-0.2.2/tests/test_get_runtime_retry.py +265 -0
- runta_sdk-0.2.2/tests/test_harbor_directory_download.py +193 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_live.py +78 -18
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openapi_contract.py +2 -2
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openapi_transport.py +88 -3
- runta_sdk-0.2.2/tests/test_read_retries.py +336 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_rest_deployment.py +1 -1
- runta_sdk-0.2.2/tests/test_rest_tls.py +376 -0
- runta_sdk-0.2.2/tests/test_runtime_readiness.py +133 -0
- runta_sdk-0.2.2/tests/test_user_agent.py +76 -0
- runta_sdk-0.2.2/tests/test_websocket_tls.py +106 -0
- runta_sdk-0.2.2/tests/test_websocket_tls_resumption.py +390 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/harbor/runta_harbor/py.typed +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/runner.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/durable/store.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/py.typed +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/integrations/openai-agents-runta/src/agents_runta/sandbox.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/dependency_links.txt +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/runta_sdk.egg-info/top_level.txt +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/setup.cfg +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/helpers.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/begin_device_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/exchange_device_token.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/auth/revoke_current_token.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/create_checkpoint.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/delete_checkpoint.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/get_checkpoint.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/checkpoints/list_checkpoints.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/cancel_cloud_agent_run.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_artifact.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/create_cloud_agent_run.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/delete_cloud_agent_artifact.py +0 -0
- {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
- {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
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent_artifact.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/get_cloud_agent_run.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agent_artifacts.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agent_runs.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/list_cloud_agents.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/resume_cloud_agent_run.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/cloud_agents/update_cloud_agent.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/get_organization_event.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/get_organization_token_analysis.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_token_analysis.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/events/list_organization_token_savings.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/read_runtime_file.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/files/write_runtime_file.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/list_git_hub_branches.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/git_hub/list_git_hub_repositories.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/__init__.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/head_healthz.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/health/healthz.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/cancel_runtime_image_build.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime_image_build.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/create_runtime_vnc_credential.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/delete_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/delete_runtime_image.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/disable_runtime_vnc.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/dismiss_runtime_image_build.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/enable_runtime_vnc.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/get_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/get_runtime_image_build.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_image_builds.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_images.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtime_vnc_credentials.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/list_runtimes.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/patch_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/pause_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/resume_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/revoke_runtime_vnc_credential.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/start_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/runtimes/stop_runtime.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/create_secret.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/delete_secret.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/get_secret.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/list_secrets.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/secrets/set_secret.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/attach_runtime_ssh_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/create_ssh_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/delete_ssh_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/detach_runtime_ssh_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/get_ssh_host_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/list_runtime_ssh_keys.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/api/ssh_keys/list_ssh_keys.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/client.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/errors.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/allowlist_egress_policy_mode.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/approved_git_hub_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/approved_git_hub_authorization_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/begin_device_authorization_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/begin_device_authorization_request_client_id.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_pagination.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/checkpoint_source_runtime.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_artifact.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_event.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_harness_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_latest_reply.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_run.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_runtime_reference.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_runtime_reference_type.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_session_events.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_delete_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_write_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/cloud_agent_workspace_write_result.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_cloud_agent_artifact_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_git_hub_authorization_request_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_git_hub_runtime_binding_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_llm_token_saving_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_build_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_build_request_architecture.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_image_selection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_resource_requests.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_runtime_resources.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_secret_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_ssh_key_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_vnc_credential_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/create_vnc_credential_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denied_git_hub_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denied_git_hub_authorization_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/denylist_egress_policy_mode.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_authorization_start.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_authorization_start_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_token_error.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/device_token_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/disabled_idle_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/disabled_idle_policy_mode.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/empty_object.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/empty_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/error_body.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/error_envelope.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/event_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/exchange_device_token_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/expired_git_hub_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/expired_git_hub_authorization_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/fresh_runtime_create_request_environment_variables.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_decision_metadata.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_authorization_request_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_branch_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_installation.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_repository_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/git_hub_runtime_binding_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/installed_git_hub_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/installed_git_hub_authorization_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_checkpoints_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtime_image_builds_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtime_images_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_runtimes_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_secrets_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_ssh_keys_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/list_vnc_credentials_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/llm_token_saving_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_reference.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/managed_model_provider_reference_type.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_llm_token_saving_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_request_environment_variables.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_resource_requests.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/patch_runtime_resources.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/pending_git_hub_authorization.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/pending_git_hub_authorization_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_checkpoint_state.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_error_code.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_ingress_protocol.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_ingress_spec.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/public_runtime_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/replace_git_hub_runtime_bindings_request.py +0 -0
- {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
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_desired_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_environment_variables.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_architectures_item.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_architecture.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_attempt.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_attempt_outcome.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_build_status.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_disk_capability.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_model_provider.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_protocol_binding.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_recommended_resources.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_subscription_option.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_image_web_ui.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_pagination.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_repository_selection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_current.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_limits.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resource_requests.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_resources.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_secret_configuration.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_file_entry.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_file_kind.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_kind.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_operation_result.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_port.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/runtime_workspace_search_match.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_egress_injection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_environment_injection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_file_injection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_injection_action.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/secret_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/set_secret_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_host_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_host_key_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_key.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/ssh_key_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_and_wakeup_idle_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_and_wakeup_idle_policy_mode.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_only_idle_policy.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/suspend_only_idle_policy_mode.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_detail.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_detail_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_confidence.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_kind.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_finding_severity.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_confidence.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_kind.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_issue_severity.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_summary.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_analysis_tool_call.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_event.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_method.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_saving_method_method.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_list.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_list_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/token_savings_summary.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/update_cloud_agent_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/update_managed_model_provider_request.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_connection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_connection_security_type.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_credential_response.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection_security_type.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/models/vnc_gateway_connection_username.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/openapi/types.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/_internal/pagination.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/src/runta/py.typed +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_e2e.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_integration.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_harbor_runta_environment.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_openai_extra_packaging.py +0 -0
- {runta_sdk-0.2.1 → runta_sdk-0.2.2}/tests/test_retry_policy.py +0 -0
- {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.
|
|
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
|
|
130
|
-
|
|
131
|
-
|
|
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.
|
|
134
|
-
and PATCH operations have an eight-minute
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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/
|
|
143
|
-
CI
|
|
144
|
-
|
|
145
|
-
the
|
|
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
|
-
|
|
152
|
-
cp
|
|
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
|
|
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
|
|
105
|
-
|
|
106
|
-
|
|
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.
|
|
109
|
-
and PATCH operations have an eight-minute
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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/
|
|
118
|
-
CI
|
|
119
|
-
|
|
120
|
-
the
|
|
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
|
-
|
|
127
|
-
cp
|
|
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
|
|
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
|
-
|
|
948
|
-
await self.
|
|
949
|
-
|
|
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.
|
|
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.
|
|
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
|
|
130
|
-
|
|
131
|
-
|
|
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.
|
|
134
|
-
and PATCH operations have an eight-minute
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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/
|
|
143
|
-
CI
|
|
144
|
-
|
|
145
|
-
the
|
|
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
|
-
|
|
152
|
-
cp
|
|
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
|
|
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/
|
|
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
|