feat(agent): add structured outputs and media archive support

This commit is contained in:
2026-04-10 19:01:04 +02:00
parent a1df097f9c
commit 9732022461
34 changed files with 3276 additions and 482 deletions

View File

@@ -1,3 +1,5 @@
import { AGENT_DEFINITIONS } from "@/lib/agent-definitions";
export type AgentTemplateId = "campaign-distributor";
export type AgentTemplate = {
@@ -15,46 +17,19 @@ export type AgentTemplate = {
};
export const AGENT_TEMPLATES: readonly AgentTemplate[] = [
{
id: "campaign-distributor",
name: "Campaign Distributor",
description:
"Develops and distributes LemonSpace campaign content across social media and messenger channels.",
emoji: "lemon",
color: "yellow",
vibe: "Transforms canvas outputs into campaign-ready channel content.",
tools: ["WebFetch", "WebSearch", "Read", "Write", "Edit"],
channels: [
"Instagram Feed",
"Instagram Stories",
"Instagram Reels",
"LinkedIn",
"Twitter / X",
"TikTok",
"Pinterest",
"WhatsApp Business",
"Telegram",
"E-Mail Newsletter",
"Discord",
],
expectedInputs: [
"Render-Node-Export",
"Compare-Varianten",
"KI-Bild-Output",
"Frame-Dimensionen",
],
expectedOutputs: [
"Caption-Pakete",
"Kanal-Matrix",
"Posting-Plan",
"Hashtag-Sets",
"Messenger-Texte",
],
notes: [
"MVP: static input-only node, no execution flow.",
"agent-output remains pending until runtime orchestration exists.",
],
},
...AGENT_DEFINITIONS.map((definition) => ({
id: definition.id,
name: definition.metadata.name,
description: definition.metadata.description,
emoji: definition.metadata.emoji,
color: definition.metadata.color,
vibe: definition.metadata.vibe,
tools: definition.uiReference.tools,
channels: definition.channelCatalog,
expectedInputs: definition.uiReference.expectedInputs,
expectedOutputs: definition.uiReference.expectedOutputs,
notes: definition.uiReference.notes,
})),
] as const;
const AGENT_TEMPLATE_BY_ID = new Map<AgentTemplateId, AgentTemplate>(
@@ -62,8 +37,5 @@ const AGENT_TEMPLATE_BY_ID = new Map<AgentTemplateId, AgentTemplate>(
);
export function getAgentTemplate(id: string): AgentTemplate | undefined {
if (id === "campaign-distributor") {
return AGENT_TEMPLATE_BY_ID.get(id);
}
return undefined;
return AGENT_TEMPLATE_BY_ID.get(id as AgentTemplateId);
}