mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-27 21:33:41 +02:00
Co-authored-by: Devv <devv@Devvs-Mac-mini.local> Co-authored-by: Jiayuan Zhang <forrestchang7@gmail.com>
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import type { InboxItem } from "@multica/core/types";
|
|
|
|
function singleLine(value: string | null | undefined): string {
|
|
return (value ?? "").replace(/\s+/g, " ").trim();
|
|
}
|
|
|
|
function escapeRegExp(value: string): string {
|
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
}
|
|
|
|
export function stripQuickCreatePrefix(title: string, identifier?: string): string {
|
|
const normalized = singleLine(title);
|
|
if (!normalized) return "";
|
|
|
|
if (identifier) {
|
|
const exactPrefix = new RegExp(
|
|
`^Created\\s+${escapeRegExp(identifier)}:\\s*`,
|
|
"i",
|
|
);
|
|
const withoutExactPrefix = normalized.replace(exactPrefix, "");
|
|
if (withoutExactPrefix !== normalized) return withoutExactPrefix.trim();
|
|
}
|
|
|
|
return normalized.replace(/^Created\s+[A-Z][A-Z0-9]*-\d+:\s*/i, "").trim();
|
|
}
|
|
|
|
export function getInboxDisplayTitle(item: InboxItem): string {
|
|
const details = item.details ?? {};
|
|
|
|
if (item.type === "quick_create_done") {
|
|
const cleanedTitle = stripQuickCreatePrefix(item.title, details.identifier);
|
|
if (cleanedTitle) return cleanedTitle;
|
|
|
|
const prompt = singleLine(details.original_prompt);
|
|
if (prompt) return prompt;
|
|
}
|
|
|
|
if (item.type === "quick_create_failed") {
|
|
const prompt = singleLine(details.original_prompt);
|
|
if (prompt) return prompt;
|
|
}
|
|
|
|
return item.title;
|
|
}
|
|
|
|
export function getQuickCreateFailureDetail(item: InboxItem): string {
|
|
const details = item.details ?? {};
|
|
return singleLine(details.error) || singleLine(item.body);
|
|
}
|