Skip to content

Commit e37b3d2

Browse files
authored
fix: normalize leading question marks in exposed port queries (#3424)
1 parent 94523f9 commit e37b3d2

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

src/agents/sandbox/types.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,8 @@ def url_for(self, scheme: str) -> str:
181181
base = f"{prefix}://{host}:{self.port}/"
182182

183183
if self.query:
184-
return f"{base}?{self.query}"
184+
query = self.query[1:] if self.query.startswith("?") else self.query
185+
if query:
186+
return f"{base}?{query}"
187+
185188
return base

tests/sandbox/test_exposed_ports.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ def test_exposed_port_endpoint_with_query() -> None:
2828
assert endpoint.url_for("ws") == "wss://preview.example.com/?bl_preview_token=abc123"
2929

3030

31+
def test_exposed_port_endpoint_accepts_leading_question_mark_query() -> None:
32+
endpoint = ExposedPortEndpoint(
33+
host="preview.example.com",
34+
port=443,
35+
tls=True,
36+
query="?bl_preview_token=abc123",
37+
)
38+
39+
assert endpoint.url_for("http") == "https://preview.example.com/?bl_preview_token=abc123"
40+
assert endpoint.url_for("ws") == "wss://preview.example.com/?bl_preview_token=abc123"
41+
42+
3143
def test_exposed_port_endpoint_empty_query() -> None:
3244
endpoint = ExposedPortEndpoint(host="127.0.0.1", port=8080, tls=False, query="")
3345
assert endpoint.url_for("http") == "http://127.0.0.1:8080/"

0 commit comments

Comments
 (0)