Skip to content

Commit d18a4ea

Browse files
fix: update openapi.stainless.yaml for PTY server methods (#9218)
1 parent 4a31166 commit d18a4ea

14 files changed

Lines changed: 988 additions & 3 deletions

File tree

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 116
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-ed882d001bcf991e0081d3bde40bdad5e0083cef74f181964d5f9f76b6ceb3c5.yml
1+
configured_endpoints: 119
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-40b78fbce4172c1fdab1559718cc9a7ba6b47402ee0bcb8dbefa582448958384.yml
33
openapi_spec_hash: 78673375a4e58f7b4cea847ce2686b0e
4-
config_hash: 436c8d4e665915db22b5d98fe58382c1
4+
config_hash: 07d725fff578f22e8cb52e3c588f24c6

api.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ from runloop_api_client.types import (
198198
DevboxSnapshotListView,
199199
DevboxSnapshotView,
200200
DevboxView,
201+
PtyTunnelView,
201202
TunnelView,
202203
DevboxCreateSSHKeyResponse,
203204
DevboxReadFileContentsResponse,
@@ -211,6 +212,7 @@ Methods:
211212
- <code title="get /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">retrieve</a>(id) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
212213
- <code title="post /v1/devboxes/{id}">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">update</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_update_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">DevboxView</a></code>
213214
- <code title="get /v1/devboxes">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">list</a>(\*\*<a href="src/runloop_api_client/types/devbox_list_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devbox_view.py">SyncDevboxesCursorIDPage[DevboxView]</a></code>
215+
- <code title="post /v1/devboxes/{id}/create_pty_tunnel">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_pty_tunnel</a>(id) -> <a href="./src/runloop_api_client/types/pty_tunnel_view.py">PtyTunnelView</a></code>
214216
- <code title="post /v1/devboxes/{id}/create_ssh_key">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">create_ssh_key</a>(id) -> <a href="./src/runloop_api_client/types/devbox_create_ssh_key_response.py">DevboxCreateSSHKeyResponse</a></code>
215217
- <code title="post /v1/devboxes/disk_snapshots/{id}/delete">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">delete_disk_snapshot</a>(id) -> object</code>
216218
- <code title="post /v1/devboxes/{id}/download_file">client.devboxes.<a href="./src/runloop_api_client/resources/devboxes/devboxes.py">download_file</a>(id, \*\*<a href="src/runloop_api_client/types/devbox_download_file_params.py">params</a>) -> BinaryAPIResponse</code>
@@ -278,6 +280,19 @@ Methods:
278280
- <code title="get /v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stderr_updates">client.devboxes.executions.<a href="./src/runloop_api_client/resources/devboxes/executions.py">stream_stderr_updates</a>(execution_id, \*, devbox_id, \*\*<a href="src/runloop_api_client/types/devboxes/execution_stream_stderr_updates_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/execution_update_chunk.py">ExecutionUpdateChunk</a></code>
279281
- <code title="get /v1/devboxes/{devbox_id}/executions/{execution_id}/stream_stdout_updates">client.devboxes.executions.<a href="./src/runloop_api_client/resources/devboxes/executions.py">stream_stdout_updates</a>(execution_id, \*, devbox_id, \*\*<a href="src/runloop_api_client/types/devboxes/execution_stream_stdout_updates_params.py">params</a>) -> <a href="./src/runloop_api_client/types/devboxes/execution_update_chunk.py">ExecutionUpdateChunk</a></code>
280282

283+
# Pty
284+
285+
Types:
286+
287+
```python
288+
from runloop_api_client.types import PtyConnectView, PtyControlParameters, PtyControlResultView
289+
```
290+
291+
Methods:
292+
293+
- <code title="get /pty/{session_name}">client.pty.<a href="./src/runloop_api_client/resources/pty.py">connect</a>(session_name, \*\*<a href="src/runloop_api_client/types/pty_connect_params.py">params</a>) -> <a href="./src/runloop_api_client/types/pty_connect_view.py">PtyConnectView</a></code>
294+
- <code title="post /pty/{session_name}/control">client.pty.<a href="./src/runloop_api_client/resources/pty.py">control</a>(session_name, \*\*<a href="src/runloop_api_client/types/pty_control_params.py">params</a>) -> <a href="./src/runloop_api_client/types/pty_control_result_view.py">PtyControlResultView</a></code>
295+
281296
# Scenarios
282297

283298
Types:

src/runloop_api_client/_client.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
if TYPE_CHECKING:
3838
from .resources import (
39+
pty,
3940
axons,
4041
agents,
4142
apikeys,
@@ -52,6 +53,7 @@
5253
restricted_keys,
5354
network_policies,
5455
)
56+
from .resources.pty import PtyResource, AsyncPtyResource
5557
from .resources.agents import AgentsResource, AsyncAgentsResource
5658
from .resources.apikeys import ApikeysResource, AsyncApikeysResource
5759
from .resources.objects import ObjectsResource, AsyncObjectsResource
@@ -184,6 +186,12 @@ def devboxes(self) -> DevboxesResource:
184186

185187
return DevboxesResource(self)
186188

189+
@cached_property
190+
def pty(self) -> PtyResource:
191+
from .resources.pty import PtyResource
192+
193+
return PtyResource(self)
194+
187195
@cached_property
188196
def scenarios(self) -> ScenariosResource:
189197
from .resources.scenarios import ScenariosResource
@@ -466,6 +474,12 @@ def devboxes(self) -> AsyncDevboxesResource:
466474

467475
return AsyncDevboxesResource(self)
468476

477+
@cached_property
478+
def pty(self) -> AsyncPtyResource:
479+
from .resources.pty import AsyncPtyResource
480+
481+
return AsyncPtyResource(self)
482+
469483
@cached_property
470484
def scenarios(self) -> AsyncScenariosResource:
471485
from .resources.scenarios import AsyncScenariosResource
@@ -683,6 +697,12 @@ def devboxes(self) -> devboxes.DevboxesResourceWithRawResponse:
683697

684698
return DevboxesResourceWithRawResponse(self._client.devboxes)
685699

700+
@cached_property
701+
def pty(self) -> pty.PtyResourceWithRawResponse:
702+
from .resources.pty import PtyResourceWithRawResponse
703+
704+
return PtyResourceWithRawResponse(self._client.pty)
705+
686706
@cached_property
687707
def scenarios(self) -> scenarios.ScenariosResourceWithRawResponse:
688708
from .resources.scenarios import ScenariosResourceWithRawResponse
@@ -780,6 +800,12 @@ def devboxes(self) -> devboxes.AsyncDevboxesResourceWithRawResponse:
780800

781801
return AsyncDevboxesResourceWithRawResponse(self._client.devboxes)
782802

803+
@cached_property
804+
def pty(self) -> pty.AsyncPtyResourceWithRawResponse:
805+
from .resources.pty import AsyncPtyResourceWithRawResponse
806+
807+
return AsyncPtyResourceWithRawResponse(self._client.pty)
808+
783809
@cached_property
784810
def scenarios(self) -> scenarios.AsyncScenariosResourceWithRawResponse:
785811
from .resources.scenarios import AsyncScenariosResourceWithRawResponse
@@ -877,6 +903,12 @@ def devboxes(self) -> devboxes.DevboxesResourceWithStreamingResponse:
877903

878904
return DevboxesResourceWithStreamingResponse(self._client.devboxes)
879905

906+
@cached_property
907+
def pty(self) -> pty.PtyResourceWithStreamingResponse:
908+
from .resources.pty import PtyResourceWithStreamingResponse
909+
910+
return PtyResourceWithStreamingResponse(self._client.pty)
911+
880912
@cached_property
881913
def scenarios(self) -> scenarios.ScenariosResourceWithStreamingResponse:
882914
from .resources.scenarios import ScenariosResourceWithStreamingResponse
@@ -974,6 +1006,12 @@ def devboxes(self) -> devboxes.AsyncDevboxesResourceWithStreamingResponse:
9741006

9751007
return AsyncDevboxesResourceWithStreamingResponse(self._client.devboxes)
9761008

1009+
@cached_property
1010+
def pty(self) -> pty.AsyncPtyResourceWithStreamingResponse:
1011+
from .resources.pty import AsyncPtyResourceWithStreamingResponse
1012+
1013+
return AsyncPtyResourceWithStreamingResponse(self._client.pty)
1014+
9771015
@cached_property
9781016
def scenarios(self) -> scenarios.AsyncScenariosResourceWithStreamingResponse:
9791017
from .resources.scenarios import AsyncScenariosResourceWithStreamingResponse

src/runloop_api_client/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3+
from .pty import (
4+
PtyResource,
5+
AsyncPtyResource,
6+
PtyResourceWithRawResponse,
7+
AsyncPtyResourceWithRawResponse,
8+
PtyResourceWithStreamingResponse,
9+
AsyncPtyResourceWithStreamingResponse,
10+
)
311
from .axons import (
412
AxonsResource,
513
AsyncAxonsResource,
@@ -164,6 +172,12 @@
164172
"AsyncDevboxesResourceWithRawResponse",
165173
"DevboxesResourceWithStreamingResponse",
166174
"AsyncDevboxesResourceWithStreamingResponse",
175+
"PtyResource",
176+
"AsyncPtyResource",
177+
"PtyResourceWithRawResponse",
178+
"AsyncPtyResourceWithRawResponse",
179+
"PtyResourceWithStreamingResponse",
180+
"AsyncPtyResourceWithStreamingResponse",
167181
"ScenariosResource",
168182
"AsyncScenariosResource",
169183
"ScenariosResourceWithRawResponse",

src/runloop_api_client/resources/devboxes/devboxes.py

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
from ...types.devbox_view import DevboxView
8787
from ...types.tunnel_view import TunnelView
8888
from ...lib.wait_for_status import wait_for_status, async_wait_for_status
89+
from ...types.pty_tunnel_view import PtyTunnelView
8990
from ...types.shared_params.mount import Mount
9091
from ...types.devbox_snapshot_view import DevboxSnapshotView
9192
from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters
@@ -582,6 +583,50 @@ def list(
582583
model=DevboxView,
583584
)
584585

586+
def create_pty_tunnel(
587+
self,
588+
id: str,
589+
*,
590+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
591+
# The extra values given here take precedence over values defined on the client or passed to this method.
592+
extra_headers: Headers | None = None,
593+
extra_query: Query | None = None,
594+
extra_body: Body | None = None,
595+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
596+
idempotency_key: str | None = None,
597+
) -> PtyTunnelView:
598+
"""Create an ephemeral authenticated tunnel for terminal access to a running
599+
Devbox.
600+
601+
This tunnel is not persisted on the Devbox and is generated fresh on
602+
each request. The returned auth_token must be passed as a Bearer token in the
603+
Authorization header.
604+
605+
Args:
606+
extra_headers: Send extra headers
607+
608+
extra_query: Add additional query parameters to the request
609+
610+
extra_body: Add additional JSON properties to the request
611+
612+
timeout: Override the client-level default timeout for this request, in seconds
613+
614+
idempotency_key: Specify a custom idempotency key for this request
615+
"""
616+
if not id:
617+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
618+
return self._post(
619+
path_template("/v1/devboxes/{id}/create_pty_tunnel", id=id),
620+
options=make_request_options(
621+
extra_headers=extra_headers,
622+
extra_query=extra_query,
623+
extra_body=extra_body,
624+
timeout=timeout,
625+
idempotency_key=idempotency_key,
626+
),
627+
cast_to=PtyTunnelView,
628+
)
629+
585630
def create_ssh_key(
586631
self,
587632
id: str,
@@ -2200,6 +2245,50 @@ def list(
22002245
model=DevboxView,
22012246
)
22022247

2248+
async def create_pty_tunnel(
2249+
self,
2250+
id: str,
2251+
*,
2252+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2253+
# The extra values given here take precedence over values defined on the client or passed to this method.
2254+
extra_headers: Headers | None = None,
2255+
extra_query: Query | None = None,
2256+
extra_body: Body | None = None,
2257+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
2258+
idempotency_key: str | None = None,
2259+
) -> PtyTunnelView:
2260+
"""Create an ephemeral authenticated tunnel for terminal access to a running
2261+
Devbox.
2262+
2263+
This tunnel is not persisted on the Devbox and is generated fresh on
2264+
each request. The returned auth_token must be passed as a Bearer token in the
2265+
Authorization header.
2266+
2267+
Args:
2268+
extra_headers: Send extra headers
2269+
2270+
extra_query: Add additional query parameters to the request
2271+
2272+
extra_body: Add additional JSON properties to the request
2273+
2274+
timeout: Override the client-level default timeout for this request, in seconds
2275+
2276+
idempotency_key: Specify a custom idempotency key for this request
2277+
"""
2278+
if not id:
2279+
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
2280+
return await self._post(
2281+
path_template("/v1/devboxes/{id}/create_pty_tunnel", id=id),
2282+
options=make_request_options(
2283+
extra_headers=extra_headers,
2284+
extra_query=extra_query,
2285+
extra_body=extra_body,
2286+
timeout=timeout,
2287+
idempotency_key=idempotency_key,
2288+
),
2289+
cast_to=PtyTunnelView,
2290+
)
2291+
22032292
async def create_ssh_key(
22042293
self,
22052294
id: str,
@@ -3375,6 +3464,9 @@ def __init__(self, devboxes: DevboxesResource) -> None:
33753464
self.list = to_raw_response_wrapper(
33763465
devboxes.list,
33773466
)
3467+
self.create_pty_tunnel = to_raw_response_wrapper(
3468+
devboxes.create_pty_tunnel,
3469+
)
33783470
self.create_ssh_key = to_raw_response_wrapper(
33793471
devboxes.create_ssh_key,
33803472
)
@@ -3468,6 +3560,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
34683560
self.list = async_to_raw_response_wrapper(
34693561
devboxes.list,
34703562
)
3563+
self.create_pty_tunnel = async_to_raw_response_wrapper(
3564+
devboxes.create_pty_tunnel,
3565+
)
34713566
self.create_ssh_key = async_to_raw_response_wrapper(
34723567
devboxes.create_ssh_key,
34733568
)
@@ -3561,6 +3656,9 @@ def __init__(self, devboxes: DevboxesResource) -> None:
35613656
self.list = to_streamed_response_wrapper(
35623657
devboxes.list,
35633658
)
3659+
self.create_pty_tunnel = to_streamed_response_wrapper(
3660+
devboxes.create_pty_tunnel,
3661+
)
35643662
self.create_ssh_key = to_streamed_response_wrapper(
35653663
devboxes.create_ssh_key,
35663664
)
@@ -3654,6 +3752,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None:
36543752
self.list = async_to_streamed_response_wrapper(
36553753
devboxes.list,
36563754
)
3755+
self.create_pty_tunnel = async_to_streamed_response_wrapper(
3756+
devboxes.create_pty_tunnel,
3757+
)
36573758
self.create_ssh_key = async_to_streamed_response_wrapper(
36583759
devboxes.create_ssh_key,
36593760
)

0 commit comments

Comments
 (0)