chore: test deploy snapshot

This commit is contained in:
2026-05-28 19:44:56 +09:00
parent c7f29bdc33
commit 753fd423db
6 changed files with 1461 additions and 188 deletions

View File

@@ -1891,6 +1891,78 @@ export async function fetchChatConversationDetail(
};
}
export async function fetchChatShareConversationDetail(
token: string,
options: {
sessionId: string;
limit?: number;
beforeMessageId?: number | null;
sharePin?: string | null;
},
) {
const query = new URLSearchParams();
if (options.limit != null) {
query.set('limit', String(options.limit));
}
if (Number.isFinite(options.beforeMessageId) && (options.beforeMessageId ?? 0) > 0) {
query.set('beforeMessageId', String(options.beforeMessageId));
}
const response = await requestChatApi<ChatConversationDetailResponse>(
`/shares/${encodeURIComponent(token)}/conversations/${encodeURIComponent(options.sessionId)}${query.toString() ? `?${query.toString()}` : ''}`,
undefined,
{
allowUnauthenticated: true,
sharePin: options.sharePin,
timeoutMs: 20000,
},
);
const normalizedMessages = Array.isArray(response.messages)
? response.messages.map((message, index) => normalizeChatMessage(message, index))
: [];
const normalizedRequests = enrichFailedRequestsWithActivityLogs(
response.requests.map((item) => normalizeChatConversationRequest(item)),
response.activityLogs,
);
const visibleRequestIds = new Set(
normalizedMessages
.map((message) => message.clientRequestId?.trim() ?? '')
.filter(Boolean),
);
const hydratedMessages = hydrateActivityLogMessages(
replaceGenericFailureMessages(normalizedMessages, normalizedRequests, response.activityLogs),
response.activityLogs.filter((item) => visibleRequestIds.has(item.requestId?.trim() ?? '')),
).filter(
(message) =>
message.author !== 'system' ||
isActivityLogMessage(message) ||
isMissingRequestMessage(message) ||
isExecutionFailureMessage(message),
);
const recoveredMessages = buildRecoveredMessagesFromConversationDetail(normalizedRequests, response.activityLogs);
return {
...response,
messages: mergeRecoveredChatMessages(recoveredMessages, hydratedMessages),
item: {
...response.item,
lastMessagePreview: resolveConversationFailurePreview(
response.item.lastMessagePreview,
normalizedRequests,
response.activityLogs,
),
notifyOffline: resolveSyncedChatOfflineNotificationSetting(
response.item.sessionId,
response.item.notifyOffline,
getOrCreateClientId(),
),
},
requests: normalizedRequests,
};
}
export async function fetchChatRuntimeSnapshot() {
const response = await requestChatApi<{ ok: boolean; item: ChatRuntimeSnapshot }>('/runtime');
return response.item;
@@ -2576,6 +2648,8 @@ export type ChatShareSnapshot = {
processingCount: number;
unansweredCount: number;
};
oldestLoadedMessageId?: number | null;
hasOlderMessages?: boolean;
promptTarget?: {
sourceMessageId: number;
promptIndex: number;
@@ -2799,6 +2873,8 @@ export async function fetchChatShareSnapshot(
rooms?: ChatShareRoomSummary[];
activeSessionId?: string | null;
roomRequestCounts?: ChatShareSnapshot['roomRequestCounts'];
oldestLoadedMessageId?: number | null;
hasOlderMessages?: boolean;
promptTarget?: ChatShareSnapshot['promptTarget'];
refreshedAt: string;
}>(
@@ -2906,6 +2982,11 @@ export async function fetchChatShareSnapshot(
unansweredCount: Number.isFinite(response.roomRequestCounts.unansweredCount) ? response.roomRequestCounts.unansweredCount : 0,
}
: undefined,
oldestLoadedMessageId:
Number.isFinite(response.oldestLoadedMessageId) && Number(response.oldestLoadedMessageId) > 0
? Number(response.oldestLoadedMessageId)
: null,
hasOlderMessages: response.hasOlderMessages === true,
promptTarget: response.promptTarget ?? null,
refreshedAt: response.refreshedAt,
} satisfies ChatShareSnapshot;