{nls.localizeByDefault('ID')}: {exchange.id}
{exchange.metadata.agent && (
{nls.localize('theia/ai/history/exchange-card/agentId', 'Agent')}: {exchange.metadata.agent}
)}
{exchange.requests.map((request, index) => (
))}
{earliestTimestamp > 0 && (
{nls.localize('theia/ai/history/exchange-card/timestamp', 'Started')}: {formatTimestamp(earliestTimestamp)}
)}
);
};
interface RequestCardProps {
request: LanguageModelExchangeRequest;
index: number;
totalRequests: number;
selectedAgentId?: string;
compactView?: boolean;
renderNewlines?: boolean;
}
const RequestCard: React.FC = ({ request, index, totalRequests, selectedAgentId, compactView = true, renderNewlines = false }) => {
const isFromDifferentAgent = selectedAgentId &&
request.metadata.agent &&
request.metadata.agent !== selectedAgentId;
const isStreamResponse = 'parts' in request.response;
const getRequestContent = () => {
if (compactView) {
const content = formatJson(request.request.messages);
return (
{renderNewlines ? renderTextWithNewlines(content) : content}
);
} else {
const content = formatJson(request.request);
return (
{renderNewlines ? renderTextWithNewlines(content) : content}
);
}
};
const getResponseContent = () => {
if (compactView) {
const content = getTextFromResponse(request.response);
return (
{renderNewlines ? renderTextWithNewlines(content) : content}
);
} else if (isStreamResponse) {
const streamResponse = request.response as LanguageModelMonitoredStreamResponse;
return streamResponse.parts.map((part, i) => (
{renderNewlines ? renderTextWithNewlines(JSON.stringify(part, undefined, 2)) : JSON.stringify(part, undefined, 2)}
));
} else {
const content = formatJson(request.response);
return (
{renderNewlines ? renderTextWithNewlines(content) : content}
);
}
};
return (
{totalRequests > 1 && (
{nls.localize('theia/ai/history/request-card/title', 'Request')} {index + 1}
)}
ID: {request.id}
{request.metadata.agent && (
{nls.localize('theia/ai/history/request-card/agent', 'Agent')}: {request.metadata.agent}
)}
{nls.localize('theia/ai/history/request-card/model', 'Model')}: {request.languageModel}
{!!request.metadata.promptVariantId && (
{!!request.metadata.isPromptVariantCustomized && (
[{nls.localize('theia/ai/history/edited', 'edited')}]{' '}
)}
{nls.localize('theia/ai/history/request-card/promptVariant', 'Prompt Variant')}: {request.metadata.promptVariantId as string}
)}
{nls.localize('theia/ai/history/request-card/request', 'Request')}
{getRequestContent()}
{nls.localize('theia/ai/history/request-card/response', 'Response')}
{getResponseContent()}
{request.metadata.timestamp && (
{nls.localize('theia/ai/history/request-card/timestamp', 'Timestamp')}: {formatTimestamp(request.metadata.timestamp as number)}
)}
);
};