mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-12 15:10:59 -07:00
72 lines
1.6 KiB
TypeScript
72 lines
1.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { type PartListUnion, type Part } from '@google/genai';
|
|
|
|
/**
|
|
* Represents a request to be sent to the Gemini API.
|
|
* For now, it's an alias to PartListUnion as the primary content.
|
|
* This can be expanded later to include other request parameters.
|
|
*/
|
|
export type GeminiCodeRequest = PartListUnion;
|
|
|
|
export function partListUnionToString(value: PartListUnion): string {
|
|
if (typeof value === 'string') {
|
|
return value;
|
|
}
|
|
|
|
if (Array.isArray(value)) {
|
|
return value.map(partListUnionToString).join('');
|
|
}
|
|
|
|
// Cast to Part, assuming it might contain project-specific fields
|
|
const part = value as Part & {
|
|
videoMetadata?: unknown;
|
|
thought?: string;
|
|
codeExecutionResult?: unknown;
|
|
executableCode?: unknown;
|
|
};
|
|
|
|
if (part.videoMetadata !== undefined) {
|
|
return `[Video Metadata]`;
|
|
}
|
|
|
|
if (part.thought !== undefined) {
|
|
return `[Thought: ${part.thought}]`;
|
|
}
|
|
|
|
if (part.codeExecutionResult !== undefined) {
|
|
return `[Code Execution Result]`;
|
|
}
|
|
|
|
if (part.executableCode !== undefined) {
|
|
return `[Executable Code]`;
|
|
}
|
|
|
|
// Standard Part fields
|
|
if (part.fileData !== undefined) {
|
|
return `[File Data]`;
|
|
}
|
|
|
|
if (part.functionCall !== undefined) {
|
|
return `[Function Call: ${part.functionCall.name}]`;
|
|
}
|
|
|
|
if (part.functionResponse !== undefined) {
|
|
return `[Function Response: ${part.functionResponse.name}]`;
|
|
}
|
|
|
|
if (part.inlineData !== undefined) {
|
|
return `<${part.inlineData.mimeType}>`;
|
|
}
|
|
|
|
if (part.text !== undefined) {
|
|
return part.text;
|
|
}
|
|
|
|
return '';
|
|
}
|