fix(usage): regenerate lazy openapi snapshot and stay under lint budgets

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
kerry 2026-09-24 02:10:20 +00:00
parent 79e579246e
commit dd0358ea03
3 changed files with 27 additions and 9 deletions

View file

@ -3095,6 +3095,18 @@
"title": "Has More",
"type": "boolean"
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque cursor for the next page of api_keys; None when every key is loaded",
"title": "Next Cursor"
},
"page": {
"default": 1,
"title": "Page",

View file

@ -168,13 +168,15 @@ const EntityUsage: React.FC<EntityUsageProps> = ({
const spendData = loadedPages?.base === spendDataBase ? loadedPages.merged : spendDataBase;
const apiKeyTruncation = getApiKeyTruncation(spendData.metadata?.api_key_limit, spendData.metadata?.total_api_keys);
const keyPageWindow =
accessToken && startTime && endTime ? { accessToken, startTime, endTime } : null;
const loadMoreKeys =
aggregatedFetchFn && accessToken && startTime && endTime && spendData.metadata?.next_cursor
aggregatedFetchFn && keyPageWindow && spendData.metadata?.next_cursor
? () =>
teamDailyActivityAggregatedCall(
accessToken,
startTime,
endTime,
keyPageWindow.accessToken,
keyPageWindow.startTime,
keyPageWindow.endTime,
Array.isArray(entityFilterArg) ? entityFilterArg : null,
spendData.metadata?.next_cursor ?? null,
).then((page: EntitySpendData) => {

View file

@ -440,13 +440,17 @@ const UsagePage: React.FC<UsagePageProps> = ({ teams, organizations }) => {
);
const keyMetrics = useMemo(() => processActivityData(userSpendData, "api_keys", teams), [userSpendData, teams]);
const aggregatedCursor = activeAggregated?.metadata?.next_cursor;
const keyPageWindow = useMemo(
() => (accessToken && startTime && endTime ? { accessToken, startTime, endTime } : null),
[accessToken, startTime, endTime],
);
const loadMoreKeys = useCallback(() => {
if (!accessToken || !startTime || !endTime || !aggregatedCursor) return Promise.resolve();
if (!keyPageWindow || !aggregatedCursor) return Promise.resolve();
const rangeKey = currentAggregatedRangeKey;
return userDailyActivityAggregatedCall(
accessToken,
startTime,
endTime,
keyPageWindow.accessToken,
keyPageWindow.startTime,
keyPageWindow.endTime,
effectiveUserId,
false,
null,
@ -456,7 +460,7 @@ const UsagePage: React.FC<UsagePageProps> = ({ teams, organizations }) => {
prev && prev.rangeKey === rangeKey ? { rangeKey, value: mergeKeyPage(prev.value, page) } : prev,
);
});
}, [accessToken, startTime, endTime, effectiveUserId, aggregatedCursor, currentAggregatedRangeKey]);
}, [keyPageWindow, effectiveUserId, aggregatedCursor, currentAggregatedRangeKey]);
const searchKeys = useCallback(
(q: string) => {
if (!accessToken || !startTime || !endTime) return Promise.resolve({});