/
aqa
/
claude-code
Обзор
Документация
Войти
/
aqa
/
claude-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
assistant/sessionHistory.ts
87 строк
2 KB
kuberwastaken
new initial commit (history rewritten)
01 апр 2026, 14:57
01 апр 2026, 14:57
c1996f2
Код
Авторство
О чём код?
import axios from 'axios' import { getOauthConfig } from '../constants/oauth.js' import type { SDKMessage } from '../entrypoints/agentSdkTypes.js' import { logForDebugging } from '../utils/debug.js' import { getOAuthHeaders, prepareApiRequest } from '../utils/teleport/api.js' export const HISTORY_PAGE_SIZE = 100 export type HistoryPage = { /** Chronological order within the page. */ events: SDKMessage[] /** Oldest event ID in this page → before_id cursor for next-older page. */ firstId: string | null /** true = older events exist. */ hasMore: boolean } type SessionEventsResponse = { data: SDKMessage[] has_more: boolean first_id: string | null last_id: string | null } export type HistoryAuthCtx = { baseUrl: string headers: Record<string, string> } /** Prepare auth + headers + base URL once, reuse across pages. */ export async function createHistoryAuthCtx( sessionId: string, ): Promise<HistoryAuthCtx> { const { accessToken, orgUUID } = await prepareApiRequest() return { baseUrl: `${getOauthConfig().BASE_API_URL}/v1/sessions/${sessionId}/events`, headers: { ...getOAuthHeaders(accessToken), 'anthropic-beta': 'ccr-byoc-2025-07-29', 'x-organization-uuid': orgUUID, }, } } async function fetchPage( ctx: HistoryAuthCtx, params: Record<string, string | number | boolean>, label: string, ): Promise<HistoryPage | null> { const resp = await axios .get<SessionEventsResponse>(ctx.baseUrl, { headers: ctx.headers, params, timeout: 15000, validateStatus: () => true, }) .catch(() => null) if (!resp || resp.status !== 200) { logForDebugging(`[${label}] HTTP ${resp?.status ?? 'error'}`) return null } return { events: Array.isArray(resp.data.data) ? resp.data.data : [], firstId: resp.data.first_id, hasMore: resp.data.has_more, } } /** * Newest page: last `limit` events, chronological, via anchor_to_latest. * has_more=true means older events exist. */ export async function fetchLatestEvents( ctx: HistoryAuthCtx, limit = HISTORY_PAGE_SIZE, ): Promise<HistoryPage | null> { return fetchPage(ctx, { limit, anchor_to_latest: true }, 'fetchLatestEvents') } /** Older page: events immediately before `beforeId` cursor. */ export async function fetchOlderEvents( ctx: HistoryAuthCtx, beforeId: string, limit = HISTORY_PAGE_SIZE, ): Promise<HistoryPage | null> { return fetchPage(ctx, { limit, before_id: beforeId }, 'fetchOlderEvents') }