Skip to content
Merged
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
74 changes: 73 additions & 1 deletion src/truefoundry_gateway_sdk/agents/agent_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

from ..core.pagination import AsyncPager, SyncPager
from ..core.request_options import RequestOptions
from ..types.list_session_events_response import ListSessionEventsResponse
from ..types.list_turns_response import ListTurnsResponse
from ..types.session_event_item import SessionEventItem
from ..types.previous_turn_id_input import PreviousTurnIdInput
from ..types.session import Session as RawSession
from ..types.subject import Subject
Expand Down Expand Up @@ -60,7 +62,7 @@ async def get_next() -> typing.Optional[AsyncPager[AsyncTurn, ListTurnsResponse]

class AgentSession:
"""
A session enriched with convenience methods: prepare_turn, list_turns, get_turn, cancel.
A session enriched with convenience methods: prepare_turn, list_turns, get_turn, list_events, cancel.
"""

def __init__(self, session: RawSession, client: typing.Any) -> None:
Expand Down Expand Up @@ -231,6 +233,41 @@ def cancel(self, *, request_options: typing.Optional[RequestOptions] = None) ->
"""
self._client.agents.sessions.cancel(self._id, request_options=request_options)

def list_events(
self,
*,
page_token: typing.Optional[str] = None,
last_turn_id: typing.Optional[str] = None,
limit: typing.Optional[int] = 100,
request_options: typing.Optional[RequestOptions] = None,
) -> SyncPager[SessionEventItem, ListSessionEventsResponse]:
"""
Paginated session events across turns (newest first); subscribe to a running turn for live events.

Parameters
----------
page_token : typing.Optional[str]
Token from the previous response ``next_page_token``.
last_turn_id : typing.Optional[str]
Newest turn in the listing window (initial load only). Omit to use the session last turn.
limit : typing.Optional[int]
Page size. Default 100.
request_options : typing.Optional[RequestOptions]
Overrides client timeout, retries, headers, and stream reconnect.

Returns
-------
SyncPager[SessionEventItem, ListSessionEventsResponse]
Paginated session events.
"""
return self._client.agents.sessions.list_events(
self._id,
page_token=page_token,
last_turn_id=last_turn_id,
limit=limit,
request_options=request_options,
)


class AsyncAgentSession:
"""
Expand Down Expand Up @@ -404,3 +441,38 @@ async def cancel(self, *, request_options: typing.Optional[RequestOptions] = Non
None
"""
await self._client.agents.sessions.cancel(self._id, request_options=request_options)

async def list_events(
self,
*,
page_token: typing.Optional[str] = None,
last_turn_id: typing.Optional[str] = None,
limit: typing.Optional[int] = 100,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncPager[SessionEventItem, ListSessionEventsResponse]:
"""
Paginated session events across turns (newest first); subscribe to a running turn for live events.

Parameters
----------
page_token : typing.Optional[str]
Token from the previous response ``next_page_token``.
last_turn_id : typing.Optional[str]
Newest turn in the listing window (initial load only). Omit to use the session last turn.
limit : typing.Optional[int]
Page size. Default 100.
request_options : typing.Optional[RequestOptions]
Overrides client timeout, retries, headers, and stream reconnect.

Returns
-------
AsyncPager[SessionEventItem, ListSessionEventsResponse]
Paginated session events.
"""
return await self._client.agents.sessions.list_events(
self._id,
page_token=page_token,
last_turn_id=last_turn_id,
limit=limit,
request_options=request_options,
)
Loading