Add virtualized chat pagination (#1080)
This commit is contained in:
@@ -75,6 +75,10 @@ export interface RunEvent {
|
||||
export interface ResumeSessionPayload {
|
||||
session_id: string
|
||||
messages: any[]
|
||||
messageTotal?: number
|
||||
messageLoadedCount?: number
|
||||
messagePageLimit?: number
|
||||
hasMoreBefore?: boolean
|
||||
isWorking: boolean
|
||||
isAborting?: boolean
|
||||
events: Array<{ event: string; data: RunEvent }>
|
||||
|
||||
@@ -162,8 +162,15 @@ export async function listRooms(): Promise<{ rooms: RoomInfo[] }> {
|
||||
return request('/api/hermes/group-chat/rooms')
|
||||
}
|
||||
|
||||
export async function getRoomDetail(roomId: string): Promise<{ room: RoomInfo; messages: ChatMessage[]; agents: RoomAgent[]; members: MemberInfo[] }> {
|
||||
return request(`/api/hermes/group-chat/rooms/${roomId}`)
|
||||
export async function getRoomDetail(
|
||||
roomId: string,
|
||||
options: { offset?: number; limit?: number } = {},
|
||||
): Promise<{ room: RoomInfo; messages: ChatMessage[]; agents: RoomAgent[]; members: MemberInfo[]; total?: number; offset?: number; limit?: number; hasMore?: boolean }> {
|
||||
const params = new URLSearchParams()
|
||||
if (options.offset != null) params.set('offset', String(options.offset))
|
||||
if (options.limit != null) params.set('limit', String(options.limit))
|
||||
const query = params.toString()
|
||||
return request(`/api/hermes/group-chat/rooms/${roomId}${query ? `?${query}` : ''}`)
|
||||
}
|
||||
|
||||
export async function joinRoomByCode(code: string): Promise<{ room: RoomInfo }> {
|
||||
|
||||
@@ -30,6 +30,15 @@ export interface SessionDetail extends SessionSummary {
|
||||
messages: HermesMessage[]
|
||||
}
|
||||
|
||||
export interface PaginatedSessionMessages {
|
||||
session: SessionSummary
|
||||
messages: HermesMessage[]
|
||||
total: number
|
||||
offset: number
|
||||
limit: number
|
||||
hasMore: boolean
|
||||
}
|
||||
|
||||
export interface SessionSearchResult extends SessionSummary {
|
||||
matched_message_id: number | null
|
||||
snippet: string
|
||||
@@ -96,6 +105,26 @@ export async function fetchSession(id: string, profile?: string | null): Promise
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchSessionMessagesPage(
|
||||
id: string,
|
||||
offset: number,
|
||||
limit = 300,
|
||||
profile?: string | null,
|
||||
): Promise<PaginatedSessionMessages | null> {
|
||||
try {
|
||||
const params = new URLSearchParams()
|
||||
params.set('offset', String(offset))
|
||||
params.set('limit', String(limit))
|
||||
if (profile) params.set('profile', profile)
|
||||
const res = await request<PaginatedSessionMessages>(
|
||||
`/api/hermes/sessions/conversations/${encodeURIComponent(id)}/messages/paginated?${params}`,
|
||||
)
|
||||
return res
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch Hermes session detail only (exclude api_server source)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user