MCPcopy Create free account
hub / github.com/21st-dev/21st-sdk / ThreadsResource

Class ThreadsResource

packages/python-sdk/src/twentyfirst_sdk/client.py:264–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

262
263
264class ThreadsResource:
265 def __init__(self, client: AgentClient):
266 self.client = client
267
268 def list(self, sandbox_id: str) -> Any:
269 return self.client._fetch("/v1/sandboxes/%s/threads" % sandbox_id)
270
271 def create(self, sandbox_id: str, *, name: Optional[str] = None) -> Any:
272 body: Dict[str, Any] = {}
273 if name is not None:
274 body["name"] = name
275
276 return self.client._fetch(
277 "/v1/sandboxes/%s/threads" % sandbox_id,
278 method="POST",
279 body=body,
280 )
281
282 def get(self, sandbox_id: str, thread_id: str) -> Any:
283 return self.client._fetch(
284 "/v1/sandboxes/%s/threads/%s" % (sandbox_id, thread_id),
285 )
286
287 def delete(self, sandbox_id: str, thread_id: str) -> Any:
288 return self.client._fetch(
289 "/v1/sandboxes/%s/threads/%s" % (sandbox_id, thread_id),
290 method="DELETE",
291 )
292
293 def run(
294 self,
295 agent: str,
296 messages: Sequence[RunThreadMessage],
297 *,
298 sandbox_id: Optional[str] = None,
299 thread_id: Optional[str] = None,
300 name: Optional[str] = None,
301 options: Optional[Dict[str, Any]] = None,
302 ) -> Any:
303 if thread_id and not sandbox_id:
304 raise AgentClientError("threadId requires sandboxId")
305
306 if not sandbox_id:
307 sandbox_id = self.client.sandboxes.create(agent).id
308
309 if not thread_id:
310 thread_id = self.create(sandbox_id, name=name).id
311
312 encoded_agent = quote(agent, safe="")
313 body: Dict[str, Any] = {
314 "messages": list(messages),
315 "sandboxId": sandbox_id,
316 "threadId": thread_id,
317 }
318 if options:
319 body["options"] = options
320
321 response = self.client._request(

Callers 1

__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected