Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.5 kB · 87 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788import 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')}