using Agent.Core.Ollama; using Agent.Core.Sessions; namespace Agent.Core.Prompts; public sealed record PromptContext( string FixedSystemPrompt, string UserSystemPrompt, string Locale, IReadOnlyList Skills, string SandboxCapabilitySummary, string TaskGraphSummary, string PreviousSummary, IReadOnlyList Conversation, string Request, IReadOnlyList? Images = null); public static class PromptComposer { public static IReadOnlyList Compose(PromptContext context) { var messages = new List { new("system", context.FixedSystemPrompt), new("system", context.UserSystemPrompt), new("system", $"Respond in locale: {context.Locale}."), new("system", string.Join("\n\n", context.Skills)), new("system", context.SandboxCapabilitySummary), new("system", context.TaskGraphSummary), new("system", context.PreviousSummary) }; messages.AddRange(context.Conversation.Select(static item => new OllamaMessage(item.Role, item.Content))); messages.Add(new OllamaMessage("user", context.Request, context.Images)); return messages; } }