File: Model\Assistant\InitialPrompt.cs
Web Access
Project: src\src\Aspire.Dashboard\Aspire.Dashboard.csproj (Aspire.Dashboard)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.AI;
using Microsoft.FluentUI.AspNetCore.Components;
 
namespace Aspire.Dashboard.Model.Assistant;
 
public class InitialPrompt
{
    public InitialPrompt(Icon icon, string buttonTitle, string buttonDescription, string chatDisplayText, ChatMessage promptMessage)
        : this(icon, buttonTitle, buttonDescription, (context) => { context.ChatBuilder.AddUserMessage(chatDisplayText, promptMessage.Text); return Task.CompletedTask; })
    {
    }
 
    public InitialPrompt(Icon icon, string buttonTitle, string buttonDescription, Action<InitializePromptContext> createPrompt)
        : this(icon, buttonTitle, buttonDescription, (context) => { createPrompt(context); return Task.CompletedTask; })
    {
    }
 
    public InitialPrompt(Icon icon, string buttonTitle, string buttonDescription, Func<InitializePromptContext, Task> createPrompt)
    {
        Icon = icon;
        ButtonTitle = buttonTitle;
        ButtonDescription = buttonDescription;
        CreatePrompt = createPrompt;
    }
 
    public Icon Icon { get; }
    public string ButtonTitle { get; }
    public string ButtonDescription { get; }
    public Func<InitializePromptContext, Task> CreatePrompt { get; }
}