44 lines
996 B
TypeScript
44 lines
996 B
TypeScript
import type { ImageContent } from "@earendil-works/pi-ai";
|
|
import type { Args } from "./args.js";
|
|
|
|
export interface InitialMessageInput {
|
|
parsed: Args;
|
|
fileText?: string;
|
|
fileImages?: ImageContent[];
|
|
stdinContent?: string;
|
|
}
|
|
|
|
export interface InitialMessageResult {
|
|
initialMessage?: string;
|
|
initialImages?: ImageContent[];
|
|
}
|
|
|
|
/**
|
|
* Combine stdin content, @file text, and the first CLI message into a single
|
|
* initial prompt for non-interactive mode.
|
|
*/
|
|
export function buildInitialMessage({
|
|
parsed,
|
|
fileText,
|
|
fileImages,
|
|
stdinContent,
|
|
}: InitialMessageInput): InitialMessageResult {
|
|
const parts: string[] = [];
|
|
if (stdinContent !== undefined) {
|
|
parts.push(stdinContent);
|
|
}
|
|
if (fileText) {
|
|
parts.push(fileText);
|
|
}
|
|
|
|
if (parsed.messages.length > 0) {
|
|
parts.push(parsed.messages[0]);
|
|
parsed.messages.shift();
|
|
}
|
|
|
|
return {
|
|
initialMessage: parts.length > 0 ? parts.join("") : undefined,
|
|
initialImages: fileImages && fileImages.length > 0 ? fileImages : undefined,
|
|
};
|
|
}
|