Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .trajectories/completed/2026-02/traj_nck4ip3pfbfz.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"id": "traj_nck4ip3pfbfz",
"version": 1,
"task": {
"title": "Update Python SDK WebSocket endpoint to /v1/ws"
},
"status": "completed",
"startedAt": "2026-02-20T14:14:09.112Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-02-20T14:14:18.841Z"
}
],
"chapters": [
{
"id": "chap_cfpp72xul54u",
"title": "Work",
"agentName": "default",
"startedAt": "2026-02-20T14:14:18.841Z",
"events": [
{
"ts": 1771596858842,
"type": "decision",
"content": "Switch Python SDK websocket endpoint to /v1/ws: Switch Python SDK websocket endpoint to /v1/ws",
"raw": {
"question": "Switch Python SDK websocket endpoint to /v1/ws",
"chosen": "Switch Python SDK websocket endpoint to /v1/ws",
"alternatives": [],
"reasoning": "Server route is /v1/ws and /v1/stream returns 404 Route not found"
},
"significance": "high"
}
],
"endedAt": "2026-02-20T14:15:19.338Z"
}
],
"commits": [],
"filesChanged": [],
"projectId": "/Users/will/Projects/relaycast",
"tags": [],
"_trace": {
"startRef": "e08d637cf6e6311c9a2c30e5c88c07ad4622903a",
"endRef": "e08d637cf6e6311c9a2c30e5c88c07ad4622903a"
},
"completedAt": "2026-02-20T14:15:19.338Z",
"retrospective": {
"summary": "Updated Python SDK websocket endpoint to /v1/ws and added regression assertion in ws tests",
"approach": "Standard approach",
"confidence": 0.95
}
}
31 changes: 31 additions & 0 deletions .trajectories/completed/2026-02/traj_nck4ip3pfbfz.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Trajectory: Update Python SDK WebSocket endpoint to /v1/ws

> **Status:** ✅ Completed
> **Confidence:** 95%
> **Started:** February 20, 2026 at 09:14 AM
> **Completed:** February 20, 2026 at 09:15 AM

---

## Summary

Updated Python SDK websocket endpoint to /v1/ws and added regression assertion in ws tests

**Approach:** Standard approach

---

## Key Decisions

### Switch Python SDK websocket endpoint to /v1/ws
- **Chose:** Switch Python SDK websocket endpoint to /v1/ws
- **Reasoning:** Server route is /v1/ws and /v1/stream returns 404 Route not found

---

## Chapters

### 1. Work
*Agent: default*

- Switch Python SDK websocket endpoint to /v1/ws: Switch Python SDK websocket endpoint to /v1/ws
53 changes: 53 additions & 0 deletions .trajectories/completed/2026-02/traj_vwrhp5hvaml2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"id": "traj_vwrhp5hvaml2",
"version": 1,
"task": {
"title": "Remove stale root-level test-prod-ws.mjs script"
},
"status": "completed",
"startedAt": "2026-02-20T14:23:42.546Z",
"agents": [
{
"name": "default",
"role": "lead",
"joinedAt": "2026-02-20T14:23:49.484Z"
}
],
"chapters": [
{
"id": "chap_jaariusqakfd",
"title": "Work",
"agentName": "default",
"startedAt": "2026-02-20T14:23:49.484Z",
"events": [
{
"ts": 1771597429485,
"type": "decision",
"content": "Remove stale manual WS smoke script: Remove stale manual WS smoke script",
"raw": {
"question": "Remove stale manual WS smoke script",
"chosen": "Remove stale manual WS smoke script",
"alternatives": [],
"reasoning": "Its coverage is duplicated by scripts/e2e.ts in CI and it used legacy /v1/stream route"
},
"significance": "high"
}
],
"endedAt": "2026-02-20T14:23:52.308Z"
}
],
"commits": [],
"filesChanged": [],
"projectId": "/Users/will/Projects/relaycast",
"tags": [],
"_trace": {
"startRef": "e08d637cf6e6311c9a2c30e5c88c07ad4622903a",
"endRef": "e08d637cf6e6311c9a2c30e5c88c07ad4622903a"
},
"completedAt": "2026-02-20T14:23:52.308Z",
"retrospective": {
"summary": "Deleted stale test-prod-ws.mjs script",
"approach": "Standard approach",
"confidence": 0.98
}
}
31 changes: 31 additions & 0 deletions .trajectories/completed/2026-02/traj_vwrhp5hvaml2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Trajectory: Remove stale root-level test-prod-ws.mjs script

> **Status:** ✅ Completed
> **Confidence:** 98%
> **Started:** February 20, 2026 at 09:23 AM
> **Completed:** February 20, 2026 at 09:23 AM

---

## Summary

Deleted stale test-prod-ws.mjs script

**Approach:** Standard approach

---

## Key Decisions

### Remove stale manual WS smoke script
- **Chose:** Remove stale manual WS smoke script
- **Reasoning:** Its coverage is duplicated by scripts/e2e.ts in CI and it used legacy /v1/stream route

---

## Chapters

### 1. Work
*Agent: default*

- Remove stale manual WS smoke script: Remove stale manual WS smoke script
16 changes: 15 additions & 1 deletion .trajectories/index.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": 1,
"lastUpdated": "2026-02-20T01:42:34.863Z",
"lastUpdated": "2026-02-20T14:23:52.381Z",
"trajectories": {
"traj_mcpcredfallback": {
"title": "Add credential file fallback to MCP stdio entry point",
Expand Down Expand Up @@ -698,6 +698,20 @@
"startedAt": "2026-02-20T01:35:18.494Z",
"completedAt": "2026-02-20T01:42:34.786Z",
"path": "/Users/will/Projects/relaycast/.trajectories/completed/2026-02/traj_6vawys36wf3u.json"
},
"traj_nck4ip3pfbfz": {
"title": "Update Python SDK WebSocket endpoint to /v1/ws",
"status": "completed",
"startedAt": "2026-02-20T14:14:09.112Z",
"completedAt": "2026-02-20T14:15:19.338Z",
"path": "/Users/will/Projects/relaycast/.trajectories/completed/2026-02/traj_nck4ip3pfbfz.json"
},
"traj_vwrhp5hvaml2": {
"title": "Remove stale root-level test-prod-ws.mjs script",
"status": "completed",
"startedAt": "2026-02-20T14:23:42.546Z",
"completedAt": "2026-02-20T14:23:52.308Z",
"path": "/Users/will/Projects/relaycast/.trajectories/completed/2026-02/traj_vwrhp5hvaml2.json"
}
}
}
2 changes: 1 addition & 1 deletion packages/python-sdk/src/relay_sdk/ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ async def connect(self) -> None:

async def _connect_once(self) -> None:
url = (
f"{self._base_url}/v1/stream"
f"{self._base_url}/v1/ws"
f"?token={quote(self._token, safe='')}"
f"&origin_surface={quote(self._origin_surface, safe='')}"
f"&origin_client={quote(self._origin_client, safe='')}"
Expand Down
1 change: 1 addition & 0 deletions packages/python-sdk/tests/test_ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ async def test_connect_url_includes_origin_query_params(self):
await ws._connect_once()

url = connect_mock.call_args.args[0]
assert "/v1/ws?" in url
assert "token=at_xxx" in url
assert "origin_surface=sdk" in url
assert "origin_client=%40relaycast%2Fpython-sdk" in url
Expand Down
167 changes: 0 additions & 167 deletions test-prod-ws.mjs

This file was deleted.

Loading