64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace AxCopilot.Services.Agent;
|
|
|
|
public class SkillDefinition
|
|
{
|
|
public string Id { get; init; } = "";
|
|
|
|
public string Name { get; init; } = "";
|
|
|
|
public string Label { get; init; } = "";
|
|
|
|
public string Description { get; init; } = "";
|
|
|
|
public string Icon { get; init; } = "\ue768";
|
|
|
|
public string SystemPrompt { get; init; } = "";
|
|
|
|
public string FilePath { get; init; } = "";
|
|
|
|
public string License { get; init; } = "";
|
|
|
|
public string Compatibility { get; init; } = "";
|
|
|
|
public string AllowedTools { get; init; } = "";
|
|
|
|
public string Requires { get; init; } = "";
|
|
|
|
public string Tabs { get; init; } = "all";
|
|
|
|
public bool IsAvailable { get; set; } = true;
|
|
|
|
public bool IsStandardFormat => FilePath.EndsWith("SKILL.md", StringComparison.OrdinalIgnoreCase);
|
|
|
|
public string UnavailableHint
|
|
{
|
|
get
|
|
{
|
|
if (IsAvailable || string.IsNullOrEmpty(Requires))
|
|
{
|
|
return "";
|
|
}
|
|
IEnumerable<string> source = from r in Requires.Split(',')
|
|
select r.Trim();
|
|
string[] array = source.Where((string r) => !RuntimeDetector.IsAvailable(r)).ToArray();
|
|
return (array.Length != 0) ? ("(" + string.Join(", ", array.Select((string r) => char.ToUpper(r[0]) + r.Substring(1, r.Length - 1))) + " 필요)") : "";
|
|
}
|
|
}
|
|
|
|
public bool IsVisibleInTab(string activeTab)
|
|
{
|
|
if (string.IsNullOrEmpty(Tabs) || Tabs.Equals("all", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
return true;
|
|
}
|
|
IEnumerable<string> source = from t in Tabs.Split(',')
|
|
select t.Trim().ToLowerInvariant();
|
|
string tab = activeTab.ToLowerInvariant();
|
|
return source.Any((string t) => t == "all" || t == tab);
|
|
}
|
|
}
|