Initial commit to new repository

This commit is contained in:
2026-04-03 18:22:19 +09:00
commit 4458bb0f52
7672 changed files with 452440 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class AgentHookEntry
{
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("toolName")]
public string ToolName { get; set; } = "*";
[JsonPropertyName("timing")]
public string Timing { get; set; } = "post";
[JsonPropertyName("scriptPath")]
public string ScriptPath { get; set; } = "";
[JsonPropertyName("arguments")]
public string Arguments { get; set; } = "";
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;
}

View File

@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class AliasEntry
{
[JsonPropertyName("key")]
public string Key { get; set; } = "";
[JsonPropertyName("type")]
public string Type { get; set; } = "url";
[JsonPropertyName("target")]
public string Target { get; set; } = "";
[JsonPropertyName("description")]
public string? Description { get; set; }
[JsonPropertyName("showWindow")]
public bool ShowWindow { get; set; } = false;
[JsonPropertyName("adapter")]
public string? Adapter { get; set; }
[JsonPropertyName("query")]
public string? Query { get; set; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ApiAdapter
{
[JsonPropertyName("id")]
public string Id { get; set; } = "";
[JsonPropertyName("baseUrl")]
public string BaseUrl { get; set; } = "";
[JsonPropertyName("credentialKey")]
public string CredentialKey { get; set; } = "";
}

View File

@@ -0,0 +1,70 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class AppSettings
{
[JsonPropertyName("version")]
public string Version { get; set; } = "1.0";
[JsonPropertyName("ai_enabled")]
public bool AiEnabled { get; set; } = false;
[JsonPropertyName("hotkey")]
public string Hotkey { get; set; } = "Alt+Space";
[JsonPropertyName("launcher")]
public LauncherSettings Launcher { get; set; } = new LauncherSettings();
[JsonPropertyName("indexPaths")]
public List<string> IndexPaths { get; set; } = new List<string> { "%USERPROFILE%\\Desktop", "%APPDATA%\\Microsoft\\Windows\\Start Menu" };
[JsonPropertyName("indexExtensions")]
public List<string> IndexExtensions { get; set; } = new List<string>
{
".exe", ".lnk", ".bat", ".ps1", ".url", ".cmd", ".msi", ".pdf", ".doc", ".docx",
".xls", ".xlsx", ".ppt", ".pptx", ".hwp", ".hwpx", ".txt", ".md", ".csv", ".json",
".xml", ".yaml", ".yml", ".log", ".ini", ".cfg", ".conf", ".png", ".jpg", ".jpeg",
".gif", ".bmp", ".svg", ".webp", ".ico", ".tiff", ".zip", ".7z", ".rar"
};
[JsonPropertyName("indexSpeed")]
public string IndexSpeed { get; set; } = "normal";
[JsonPropertyName("monitorMismatch")]
public string MonitorMismatch { get; set; } = "warn";
[JsonPropertyName("profiles")]
public List<WorkspaceProfile> Profiles { get; set; } = new List<WorkspaceProfile>();
[JsonPropertyName("aliases")]
public List<AliasEntry> Aliases { get; set; } = new List<AliasEntry>();
[JsonPropertyName("clipboardTransformers")]
public List<ClipboardTransformer> ClipboardTransformers { get; set; } = new List<ClipboardTransformer>();
[JsonPropertyName("apiAdapters")]
public List<ApiAdapter> ApiAdapters { get; set; } = new List<ApiAdapter>();
[JsonPropertyName("plugins")]
public List<PluginEntry> Plugins { get; set; } = new List<PluginEntry>();
[JsonPropertyName("snippets")]
public List<SnippetEntry> Snippets { get; set; } = new List<SnippetEntry>();
[JsonPropertyName("clipboardHistory")]
public ClipboardHistorySettings ClipboardHistory { get; set; } = new ClipboardHistorySettings();
[JsonPropertyName("systemCommands")]
public SystemCommandSettings SystemCommands { get; set; } = new SystemCommandSettings();
[JsonPropertyName("screenCapture")]
public ScreenCaptureSettings ScreenCapture { get; set; } = new ScreenCaptureSettings();
[JsonPropertyName("reminder")]
public ReminderSettings Reminder { get; set; } = new ReminderSettings();
[JsonPropertyName("llm")]
public LlmSettings Llm { get; set; } = new LlmSettings();
}

View File

@@ -0,0 +1,71 @@
namespace AxCopilot.Models;
public static class ChatCategory
{
public const string General = "일반";
public const string Management = "경영";
public const string HR = "인사";
public const string Finance = "재무";
public const string RnD = "연구개발";
public const string Product = "제품분석";
public const string Yield = "수율분석";
public const string MfgTech = "제조기술";
public const string System = "시스템";
public static readonly (string Key, string Label, string Symbol, string Color)[] All = new(string, string, string, string)[9]
{
("일반", "일반", "\ue8bd", "#6B7280"),
("경영", "경영", "\ue902", "#8B5CF6"),
("인사", "인사", "\ue716", "#0EA5E9"),
("재무", "재무", "\ue8c7", "#D97706"),
("연구개발", "연구개발", "\ue9a8", "#3B82F6"),
("제품분석", "제품분석", "\ue9d9", "#EC4899"),
("수율분석", "수율분석", "\ue9f9", "#F59E0B"),
("제조기술", "제조기술", "\ue90f", "#10B981"),
("시스템", "시스템", "\ue770", "#EF4444")
};
public static string GetSymbol(string? category)
{
if (string.IsNullOrEmpty(category))
{
return "\ue8bd";
}
(string, string, string, string)[] all = All;
for (int i = 0; i < all.Length; i++)
{
var (text, _, result, _) = all[i];
if (text == category)
{
return result;
}
}
return "\ue8bd";
}
public static string GetColor(string? category)
{
if (string.IsNullOrEmpty(category))
{
return "#6B7280";
}
(string, string, string, string)[] all = All;
for (int i = 0; i < all.Length; i++)
{
var (text, _, _, result) = all[i];
if (text == category)
{
return result;
}
}
return "#6B7280";
}
}

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ChatConversation
{
[JsonPropertyName("id")]
public string Id { get; set; } = Guid.NewGuid().ToString("N");
[JsonPropertyName("title")]
public string Title { get; set; } = "새 대화";
[JsonPropertyName("createdAt")]
public DateTime CreatedAt { get; set; } = DateTime.Now;
[JsonPropertyName("updatedAt")]
public DateTime UpdatedAt { get; set; } = DateTime.Now;
[JsonPropertyName("pinned")]
public bool Pinned { get; set; } = false;
[JsonPropertyName("tab")]
public string Tab { get; set; } = "Chat";
[JsonPropertyName("category")]
public string Category { get; set; } = "일반";
[JsonPropertyName("systemCommand")]
public string SystemCommand { get; set; } = "";
[JsonPropertyName("workFolder")]
public string WorkFolder { get; set; } = "";
[JsonPropertyName("preview")]
public string Preview { get; set; } = "";
[JsonPropertyName("parentId")]
public string? ParentId { get; set; }
[JsonPropertyName("branchLabel")]
public string? BranchLabel { get; set; }
[JsonPropertyName("branchAtIndex")]
public int? BranchAtIndex { get; set; }
[JsonPropertyName("permission")]
public string? Permission { get; set; }
[JsonPropertyName("dataUsage")]
public string? DataUsage { get; set; }
[JsonPropertyName("outputFormat")]
public string? OutputFormat { get; set; }
[JsonPropertyName("mood")]
public string? Mood { get; set; }
[JsonPropertyName("messages")]
public List<ChatMessage> Messages { get; set; } = new List<ChatMessage>();
[JsonPropertyName("executionEvents")]
public List<ChatExecutionEvent> ExecutionEvents { get; set; } = new List<ChatExecutionEvent>();
}

View File

@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ChatExecutionEvent
{
[JsonPropertyName("timestamp")]
public DateTime Timestamp { get; set; } = DateTime.Now;
[JsonPropertyName("type")]
public string Type { get; set; } = "Thinking";
[JsonPropertyName("toolName")]
public string ToolName { get; set; } = "";
[JsonPropertyName("summary")]
public string Summary { get; set; } = "";
[JsonPropertyName("filePath")]
public string? FilePath { get; set; }
[JsonPropertyName("success")]
public bool Success { get; set; } = true;
[JsonPropertyName("stepCurrent")]
public int StepCurrent { get; set; }
[JsonPropertyName("stepTotal")]
public int StepTotal { get; set; }
[JsonPropertyName("steps")]
public List<string>? Steps { get; set; }
[JsonPropertyName("elapsedMs")]
public long ElapsedMs { get; set; }
[JsonPropertyName("inputTokens")]
public int InputTokens { get; set; }
[JsonPropertyName("outputTokens")]
public int OutputTokens { get; set; }
[JsonPropertyName("toolInput")]
public string? ToolInput { get; set; }
[JsonPropertyName("iteration")]
public int Iteration { get; set; }
}

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ChatMessage
{
[JsonPropertyName("role")]
public string Role { get; set; } = "user";
[JsonPropertyName("content")]
public string Content { get; set; } = "";
[JsonPropertyName("timestamp")]
public DateTime Timestamp { get; set; } = DateTime.Now;
[JsonPropertyName("feedback")]
public string? Feedback { get; set; }
[JsonPropertyName("attachedFiles")]
public List<string>? AttachedFiles { get; set; }
[JsonPropertyName("images")]
public List<ImageAttachment>? Images { get; set; }
}

View File

@@ -0,0 +1,16 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ClipboardHistorySettings
{
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;
[JsonPropertyName("maxItems")]
public int MaxItems { get; set; } = 50;
[JsonPropertyName("excludePatterns")]
public List<string> ExcludePatterns { get; set; } = new List<string> { "^\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}$", "^(?:\\d{1,3}\\.){3}\\d{1,3}$" };
}

View File

@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ClipboardTransformer
{
[JsonPropertyName("key")]
public string Key { get; set; } = "";
[JsonPropertyName("type")]
public string Type { get; set; } = "regex";
[JsonPropertyName("pattern")]
public string? Pattern { get; set; }
[JsonPropertyName("replace")]
public string? Replace { get; set; }
[JsonPropertyName("command")]
public string? Command { get; set; }
[JsonPropertyName("timeout")]
public int Timeout { get; set; } = 5000;
[JsonPropertyName("description")]
public string? Description { get; set; }
}

View File

@@ -0,0 +1,48 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class CodeSettings
{
[JsonPropertyName("nexusBaseUrl")]
public string NexusBaseUrl { get; set; } = "";
[JsonPropertyName("nugetSource")]
public string NugetSource { get; set; } = "https://api.nuget.org/v3/index.json";
[JsonPropertyName("pypiSource")]
public string PypiSource { get; set; } = "https://conda.anaconda.org/conda-forge";
[JsonPropertyName("mavenSource")]
public string MavenSource { get; set; } = "https://repo1.maven.org/maven2";
[JsonPropertyName("npmSource")]
public string NpmSource { get; set; } = "https://registry.npmjs.org";
[JsonPropertyName("preferredIdePath")]
public string PreferredIdePath { get; set; } = "";
[JsonPropertyName("buildTimeout")]
public int BuildTimeout { get; set; } = 120;
[JsonPropertyName("enableLsp")]
public bool EnableLsp { get; set; } = true;
[JsonPropertyName("enableCodeIndex")]
public bool EnableCodeIndex { get; set; } = true;
[JsonPropertyName("codeIndexMaxFileKb")]
public int CodeIndexMaxFileKb { get; set; } = 500;
[JsonPropertyName("enableAutoDiff")]
public bool EnableAutoDiff { get; set; } = true;
[JsonPropertyName("enableCodeReview")]
public bool EnableCodeReview { get; set; } = true;
[JsonPropertyName("enableSnippetRunner")]
public bool EnableSnippetRunner { get; set; } = true;
[JsonPropertyName("enableCodeVerification")]
public bool EnableCodeVerification { get; set; } = false;
}

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class CustomMoodEntry
{
[JsonPropertyName("key")]
public string Key { get; set; } = "";
[JsonPropertyName("label")]
public string Label { get; set; } = "";
[JsonPropertyName("icon")]
public string Icon { get; set; } = "\ud83c\udfaf";
[JsonPropertyName("description")]
public string Description { get; set; } = "";
[JsonPropertyName("css")]
public string Css { get; set; } = "";
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class CustomPresetEntry
{
[JsonPropertyName("id")]
public string Id { get; set; } = Guid.NewGuid().ToString("N").Substring(0, 8);
[JsonPropertyName("label")]
public string Label { get; set; } = "";
[JsonPropertyName("description")]
public string Description { get; set; } = "";
[JsonPropertyName("systemPrompt")]
public string SystemPrompt { get; set; } = "";
[JsonPropertyName("color")]
public string Color { get; set; } = "#6366F1";
[JsonPropertyName("symbol")]
public string Symbol { get; set; } = "\ue713";
[JsonPropertyName("tab")]
public string Tab { get; set; } = "Chat";
}

View File

@@ -0,0 +1,54 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class CustomThemeColors
{
[JsonPropertyName("launcherBackground")]
public string LauncherBackground { get; set; } = "#1A1B2E";
[JsonPropertyName("itemBackground")]
public string ItemBackground { get; set; } = "#252637";
[JsonPropertyName("itemSelectedBackground")]
public string ItemSelectedBackground { get; set; } = "#3B4BDB";
[JsonPropertyName("itemHoverBackground")]
public string ItemHoverBackground { get; set; } = "#22233A";
[JsonPropertyName("primaryText")]
public string PrimaryText { get; set; } = "#F0F0FF";
[JsonPropertyName("secondaryText")]
public string SecondaryText { get; set; } = "#7A7D9C";
[JsonPropertyName("placeholderText")]
public string PlaceholderText { get; set; } = "#464868";
[JsonPropertyName("accentColor")]
public string AccentColor { get; set; } = "#4B5EFC";
[JsonPropertyName("separatorColor")]
public string SeparatorColor { get; set; } = "#252637";
[JsonPropertyName("hintBackground")]
public string HintBackground { get; set; } = "#252637";
[JsonPropertyName("hintText")]
public string HintText { get; set; } = "#4B5070";
[JsonPropertyName("borderColor")]
public string BorderColor { get; set; } = "#2E2F4A";
[JsonPropertyName("scrollbarThumb")]
public string ScrollbarThumb { get; set; } = "#3A3B5A";
[JsonPropertyName("shadowColor")]
public string ShadowColor { get; set; } = "#000000";
[JsonPropertyName("windowCornerRadius")]
public int WindowCornerRadius { get; set; } = 20;
[JsonPropertyName("itemCornerRadius")]
public int ItemCornerRadius { get; set; } = 10;
}

View File

@@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class DailyUsageStats
{
[JsonPropertyName("date")]
public string Date { get; set; } = "";
[JsonPropertyName("launcherOpens")]
public int LauncherOpens { get; set; }
[JsonPropertyName("commandUsage")]
public Dictionary<string, int> CommandUsage { get; set; } = new Dictionary<string, int>();
[JsonPropertyName("activeSeconds")]
public int ActiveSeconds { get; set; }
[JsonPropertyName("chatCounts")]
public Dictionary<string, int> ChatCounts { get; set; } = new Dictionary<string, int>();
[JsonPropertyName("totalTokens")]
public long TotalTokens { get; set; }
[JsonPropertyName("promptTokens")]
public long PromptTokens { get; set; }
[JsonPropertyName("completionTokens")]
public long CompletionTokens { get; set; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ImageAttachment
{
[JsonPropertyName("base64")]
public string Base64 { get; set; } = "";
[JsonPropertyName("mimeType")]
public string MimeType { get; set; } = "image/png";
[JsonPropertyName("fileName")]
public string FileName { get; set; } = "";
}

View File

@@ -0,0 +1,106 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class LauncherSettings
{
[JsonPropertyName("opacity")]
public double Opacity { get; set; } = 0.96;
[JsonPropertyName("maxResults")]
public int MaxResults { get; set; } = 7;
[JsonPropertyName("theme")]
public string Theme { get; set; } = "system";
[JsonPropertyName("position")]
public string Position { get; set; } = "center-top";
[JsonPropertyName("width")]
public double Width { get; set; } = 680.0;
[JsonPropertyName("webSearchEngine")]
public string WebSearchEngine { get; set; } = "g";
[JsonPropertyName("snippetAutoExpand")]
public bool SnippetAutoExpand { get; set; } = true;
[JsonPropertyName("language")]
public string Language { get; set; } = "ko";
[JsonPropertyName("customTheme")]
public CustomThemeColors? CustomTheme { get; set; }
[JsonPropertyName("showNumberBadges")]
public bool ShowNumberBadges { get; set; } = true;
[JsonPropertyName("enableFavorites")]
public bool EnableFavorites { get; set; } = true;
[JsonPropertyName("enableRecent")]
public bool EnableRecent { get; set; } = true;
[JsonPropertyName("enableActionMode")]
public bool EnableActionMode { get; set; } = true;
[JsonPropertyName("closeOnFocusLost")]
public bool CloseOnFocusLost { get; set; } = true;
[JsonPropertyName("showPrefixBadge")]
public bool ShowPrefixBadge { get; set; } = true;
[JsonPropertyName("enableIconAnimation")]
public bool EnableIconAnimation { get; set; } = true;
[JsonPropertyName("enableRandomPlaceholder")]
public bool EnableRandomPlaceholder { get; set; } = true;
[JsonPropertyName("enableRainbowGlow")]
public bool EnableRainbowGlow { get; set; } = false;
[JsonPropertyName("enableSelectionGlow")]
public bool EnableSelectionGlow { get; set; } = false;
[JsonPropertyName("showLauncherBorder")]
public bool ShowLauncherBorder { get; set; } = true;
[JsonPropertyName("shortcutHelpUseThemeColor")]
public bool ShortcutHelpUseThemeColor { get; set; } = true;
[JsonPropertyName("enableTextAction")]
public bool EnableTextAction { get; set; } = true;
[JsonPropertyName("textActionCommands")]
public List<string> TextActionCommands { get; set; } = new List<string> { "translate", "summarize", "grammar", "explain", "rewrite" };
[JsonPropertyName("textActionTranslateLanguage")]
public string TextActionTranslateLanguage { get; set; } = "auto";
[JsonPropertyName("enableFileDialogIntegration")]
public bool EnableFileDialogIntegration { get; set; } = false;
[JsonPropertyName("enableClipboardAutoCategory")]
public bool EnableClipboardAutoCategory { get; set; } = true;
[JsonPropertyName("maxPinnedClipboardItems")]
public int MaxPinnedClipboardItems { get; set; } = 20;
[JsonPropertyName("dockBarItems")]
public List<string> DockBarItems { get; set; } = new List<string> { "launcher", "clipboard", "capture", "agent", "clock", "cpu" };
[JsonPropertyName("dockBarAutoShow")]
public bool DockBarAutoShow { get; set; } = false;
[JsonPropertyName("dockBarOpacity")]
public double DockBarOpacity { get; set; } = 0.92;
[JsonPropertyName("dockBarRainbowGlow")]
public bool DockBarRainbowGlow { get; set; } = false;
[JsonPropertyName("dockBarLeft")]
public double DockBarLeft { get; set; } = -1.0;
[JsonPropertyName("dockBarTop")]
public double DockBarTop { get; set; } = -1.0;
}

View File

@@ -0,0 +1,256 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class LlmSettings
{
[JsonPropertyName("service")]
public string Service { get; set; } = "ollama";
[JsonPropertyName("endpoint")]
public string Endpoint { get; set; } = "http://localhost:11434";
[JsonPropertyName("model")]
public string Model { get; set; } = "";
[JsonPropertyName("encryptedApiKey")]
public string EncryptedApiKey { get; set; } = "";
[JsonPropertyName("apiKey")]
public string ApiKey { get; set; } = "";
[JsonPropertyName("streaming")]
public bool Streaming { get; set; } = true;
[JsonPropertyName("maxContextTokens")]
public int MaxContextTokens { get; set; } = 4096;
[JsonPropertyName("retentionDays")]
public int RetentionDays { get; set; } = 30;
[JsonPropertyName("temperature")]
public double Temperature { get; set; } = 0.7;
[JsonPropertyName("registeredModels")]
public List<RegisteredModel> RegisteredModels { get; set; } = new List<RegisteredModel>();
[JsonPropertyName("encryptionEnabled")]
public bool EncryptionEnabled { get; set; } = false;
[JsonPropertyName("promptTemplates")]
public List<PromptTemplate> PromptTemplates { get; set; } = new List<PromptTemplate>();
[JsonPropertyName("workFolder")]
public string WorkFolder { get; set; } = "";
[JsonPropertyName("recentWorkFolders")]
public List<string> RecentWorkFolders { get; set; } = new List<string>();
[JsonPropertyName("maxRecentFolders")]
public int MaxRecentFolders { get; set; } = 10;
[JsonPropertyName("showFileBrowser")]
public bool ShowFileBrowser { get; set; } = false;
[JsonPropertyName("filePermission")]
public string FilePermission { get; set; } = "Ask";
[JsonPropertyName("defaultAgentPermission")]
public string DefaultAgentPermission { get; set; } = "Ask";
[JsonPropertyName("ollamaEndpoint")]
public string OllamaEndpoint { get; set; } = "http://localhost:11434";
[JsonPropertyName("ollamaApiKey")]
public string OllamaApiKey { get; set; } = "";
[JsonPropertyName("ollamaModel")]
public string OllamaModel { get; set; } = "";
[JsonPropertyName("vllmEndpoint")]
public string VllmEndpoint { get; set; } = "";
[JsonPropertyName("vllmApiKey")]
public string VllmApiKey { get; set; } = "";
[JsonPropertyName("vllmModel")]
public string VllmModel { get; set; } = "";
[JsonPropertyName("geminiApiKey")]
public string GeminiApiKey { get; set; } = "";
[JsonPropertyName("geminiModel")]
public string GeminiModel { get; set; } = "gemini-2.5-flash";
[JsonPropertyName("claudeApiKey")]
public string ClaudeApiKey { get; set; } = "";
[JsonPropertyName("claudeModel")]
public string ClaudeModel { get; set; } = "claude-sonnet-4-6";
[JsonPropertyName("defaultOutputFormat")]
public string DefaultOutputFormat { get; set; } = "auto";
[JsonPropertyName("defaultMood")]
public string DefaultMood { get; set; } = "modern";
[JsonPropertyName("autoPreview")]
public string AutoPreview { get; set; } = "off";
[JsonPropertyName("maxAgentIterations")]
public int MaxAgentIterations { get; set; } = 25;
[JsonPropertyName("maxRetryOnError")]
public int MaxRetryOnError { get; set; } = 3;
[JsonPropertyName("maxTestFixIterations")]
public int MaxTestFixIterations { get; set; } = 5;
[JsonPropertyName("agentLogLevel")]
public string AgentLogLevel { get; set; } = "simple";
[JsonPropertyName("enableParallelTools")]
public bool EnableParallelTools { get; set; } = false;
[JsonPropertyName("enableMultiPassDocument")]
public bool EnableMultiPassDocument { get; set; } = false;
[JsonPropertyName("enableCoworkVerification")]
public bool EnableCoworkVerification { get; set; } = false;
[JsonPropertyName("enableFilePathHighlight")]
public bool EnableFilePathHighlight { get; set; } = true;
[JsonPropertyName("multiPassThresholdPages")]
public int MultiPassThresholdPages { get; set; } = 3;
[JsonPropertyName("lastConversationIds")]
public Dictionary<string, string> LastConversationIds { get; set; } = new Dictionary<string, string>();
[JsonPropertyName("folderDataUsage")]
public string FolderDataUsage { get; set; } = "active";
[JsonPropertyName("agentDecisionLevel")]
public string AgentDecisionLevel { get; set; } = "detailed";
[JsonPropertyName("planMode")]
public string PlanMode { get; set; } = "off";
[JsonPropertyName("enableProjectRules")]
public bool EnableProjectRules { get; set; } = true;
[JsonPropertyName("fallbackModels")]
public List<string> FallbackModels { get; set; } = new List<string>();
[JsonPropertyName("maxSubAgents")]
public int MaxSubAgents { get; set; } = 3;
[JsonPropertyName("pdfExportPath")]
public string PdfExportPath { get; set; } = "";
[JsonPropertyName("enableAuditLog")]
public bool EnableAuditLog { get; set; } = true;
[JsonPropertyName("enableAgentMemory")]
public bool EnableAgentMemory { get; set; } = true;
[JsonPropertyName("maxMemoryEntries")]
public int MaxMemoryEntries { get; set; } = 100;
[JsonPropertyName("enableImageInput")]
public bool EnableImageInput { get; set; } = true;
[JsonPropertyName("maxImageSizeKb")]
public int MaxImageSizeKb { get; set; } = 5120;
[JsonPropertyName("enableAutoRouter")]
public bool EnableAutoRouter { get; set; } = false;
[JsonPropertyName("autoRouterConfidence")]
public double AutoRouterConfidence { get; set; } = 0.7;
[JsonPropertyName("modelCapabilities")]
public List<ModelCapability> ModelCapabilities { get; set; } = new List<ModelCapability>();
[JsonPropertyName("mcpServers")]
public List<McpServerEntry> McpServers { get; set; } = new List<McpServerEntry>();
[JsonPropertyName("enableChatRainbowGlow")]
public bool EnableChatRainbowGlow { get; set; } = false;
[JsonPropertyName("notifyOnComplete")]
public bool NotifyOnComplete { get; set; } = false;
[JsonPropertyName("showTips")]
public bool ShowTips { get; set; } = false;
[JsonPropertyName("tipDurationSeconds")]
public int TipDurationSeconds { get; set; } = 5;
[JsonPropertyName("devMode")]
public bool DevMode { get; set; } = false;
[JsonPropertyName("devModeStepApproval")]
public bool DevModeStepApproval { get; set; } = false;
[JsonPropertyName("workflowVisualizer")]
public bool WorkflowVisualizer { get; set; } = false;
[JsonPropertyName("freeTierMode")]
public bool FreeTierMode { get; set; } = false;
[JsonPropertyName("freeTierDelaySeconds")]
public int FreeTierDelaySeconds { get; set; } = 4;
[JsonPropertyName("showTotalCallStats")]
public bool ShowTotalCallStats { get; set; } = false;
[JsonPropertyName("blockedPaths")]
public List<string> BlockedPaths { get; set; } = new List<string> { "*\\Windows\\*", "*\\Program Files\\*", "*\\Program Files (x86)\\*", "*\\System32\\*", "*\\AppData\\Local\\*", "*Documents*" };
[JsonPropertyName("blockedExtensions")]
public List<string> BlockedExtensions { get; set; } = new List<string> { ".exe", ".dll", ".sys", ".msi", ".reg", ".vbs", ".com", ".scr", ".pif" };
[JsonPropertyName("customPresets")]
public List<CustomPresetEntry> CustomPresets { get; set; } = new List<CustomPresetEntry>();
[JsonPropertyName("customMoods")]
public List<CustomMoodEntry> CustomMoods { get; set; } = new List<CustomMoodEntry>();
[JsonPropertyName("disabledTools")]
public List<string> DisabledTools { get; set; } = new List<string>();
[JsonPropertyName("toolPermissions")]
public Dictionary<string, string> ToolPermissions { get; set; } = new Dictionary<string, string>();
[JsonPropertyName("enableToolHooks")]
public bool EnableToolHooks { get; set; } = true;
[JsonPropertyName("toolHookTimeoutMs")]
public int ToolHookTimeoutMs { get; set; } = 10000;
[JsonPropertyName("agentHooks")]
public List<AgentHookEntry> AgentHooks { get; set; } = new List<AgentHookEntry>();
[JsonPropertyName("enableSkillSystem")]
public bool EnableSkillSystem { get; set; } = true;
[JsonPropertyName("skillsFolderPath")]
public string SkillsFolderPath { get; set; } = "";
[JsonPropertyName("slashPopupPageSize")]
public int SlashPopupPageSize { get; set; } = 7;
[JsonPropertyName("favoriteSlashCommands")]
public List<string> FavoriteSlashCommands { get; set; } = new List<string>();
[JsonPropertyName("enableDragDropAiActions")]
public bool EnableDragDropAiActions { get; set; } = true;
[JsonPropertyName("dragDropAutoSend")]
public bool DragDropAutoSend { get; set; } = false;
[JsonPropertyName("code")]
public CodeSettings Code { get; set; } = new CodeSettings();
}

View File

@@ -0,0 +1,10 @@
namespace AxCopilot.Models;
public class McpParameterDef
{
public string Type { get; set; } = "string";
public string Description { get; set; } = "";
public bool Required { get; set; } = false;
}

View File

@@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class McpServerEntry
{
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("command")]
public string Command { get; set; } = "";
[JsonPropertyName("args")]
public List<string> Args { get; set; } = new List<string>();
[JsonPropertyName("env")]
public Dictionary<string, string> Env { get; set; } = new Dictionary<string, string>();
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;
[JsonPropertyName("transport")]
public string Transport { get; set; } = "stdio";
[JsonPropertyName("url")]
public string? Url { get; set; }
}

View File

@@ -0,0 +1,14 @@
using System.Collections.Generic;
namespace AxCopilot.Models;
public class McpToolDefinition
{
public string Name { get; set; } = "";
public string Description { get; set; } = "";
public string ServerName { get; set; } = "";
public Dictionary<string, McpParameterDef> Parameters { get; set; } = new Dictionary<string, McpParameterDef>();
}

View File

@@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ModelCapability
{
[JsonPropertyName("service")]
public string Service { get; set; } = "";
[JsonPropertyName("model")]
public string Model { get; set; } = "";
[JsonPropertyName("alias")]
public string Alias { get; set; } = "";
[JsonPropertyName("scores")]
public Dictionary<string, double> Scores { get; set; } = new Dictionary<string, double>();
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;
}

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class PluginEntry
{
[JsonPropertyName("path")]
public string Path { get; set; } = "";
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = true;
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class PromptTemplate
{
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("content")]
public string Content { get; set; } = "";
[JsonPropertyName("icon")]
public string Icon { get; set; } = "\ue8bd";
}

View File

@@ -0,0 +1,33 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class RegisteredModel
{
[JsonPropertyName("alias")]
public string Alias { get; set; } = "";
[JsonPropertyName("encryptedModelName")]
public string EncryptedModelName { get; set; } = "";
[JsonPropertyName("service")]
public string Service { get; set; } = "ollama";
[JsonPropertyName("endpoint")]
public string Endpoint { get; set; } = "";
[JsonPropertyName("apiKey")]
public string ApiKey { get; set; } = "";
[JsonPropertyName("authType")]
public string AuthType { get; set; } = "bearer";
[JsonPropertyName("cp4dUrl")]
public string Cp4dUrl { get; set; } = "";
[JsonPropertyName("cp4dUsername")]
public string Cp4dUsername { get; set; } = "";
[JsonPropertyName("cp4dPassword")]
public string Cp4dPassword { get; set; } = "";
}

View File

@@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ReminderSettings
{
[JsonPropertyName("enabled")]
public bool Enabled { get; set; } = false;
[JsonPropertyName("corner")]
public string Corner { get; set; } = "bottom-right";
[JsonPropertyName("intervalMinutes")]
public int IntervalMinutes { get; set; } = 60;
[JsonPropertyName("displaySeconds")]
public int DisplaySeconds { get; set; } = 15;
[JsonPropertyName("enabledCategories")]
public List<string> EnabledCategories { get; set; } = new List<string> { "motivational" };
}

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class ScreenCaptureSettings
{
[JsonPropertyName("prefix")]
public string Prefix { get; set; } = "cap";
[JsonPropertyName("globalHotkeyEnabled")]
public bool GlobalHotkeyEnabled { get; set; } = false;
[JsonPropertyName("globalHotkey")]
public string GlobalHotkey { get; set; } = "PrintScreen";
[JsonPropertyName("globalHotkeyMode")]
public string GlobalHotkeyMode { get; set; } = "screen";
[JsonPropertyName("scrollDelayMs")]
public int ScrollDelayMs { get; set; } = 120;
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class SnippetEntry
{
[JsonPropertyName("key")]
public string Key { get; set; } = "";
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("content")]
public string Content { get; set; } = "";
}

View File

@@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class SystemCommandSettings
{
[JsonPropertyName("showLock")]
public bool ShowLock { get; set; } = true;
[JsonPropertyName("showSleep")]
public bool ShowSleep { get; set; } = true;
[JsonPropertyName("showRestart")]
public bool ShowRestart { get; set; } = true;
[JsonPropertyName("showShutdown")]
public bool ShowShutdown { get; set; } = true;
[JsonPropertyName("showHibernate")]
public bool ShowHibernate { get; set; } = false;
[JsonPropertyName("showLogout")]
public bool ShowLogout { get; set; } = true;
[JsonPropertyName("showRecycleBin")]
public bool ShowRecycleBin { get; set; } = true;
[JsonPropertyName("commandAliases")]
public Dictionary<string, List<string>> CommandAliases { get; set; } = new Dictionary<string, List<string>>();
}

View File

@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class WindowRect
{
[JsonPropertyName("x")]
public int X { get; set; }
[JsonPropertyName("y")]
public int Y { get; set; }
[JsonPropertyName("width")]
public int Width { get; set; }
[JsonPropertyName("height")]
public int Height { get; set; }
}

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class WindowSnapshot
{
[JsonPropertyName("exe")]
public string Exe { get; set; } = "";
[JsonPropertyName("title")]
public string Title { get; set; } = "";
[JsonPropertyName("rect")]
public WindowRect Rect { get; set; } = new WindowRect();
[JsonPropertyName("showCmd")]
public string ShowCmd { get; set; } = "Normal";
[JsonPropertyName("monitor")]
public int Monitor { get; set; } = 0;
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace AxCopilot.Models;
public class WorkspaceProfile
{
[JsonPropertyName("name")]
public string Name { get; set; } = "";
[JsonPropertyName("windows")]
public List<WindowSnapshot> Windows { get; set; } = new List<WindowSnapshot>();
[JsonPropertyName("createdAt")]
public DateTime CreatedAt { get; set; } = DateTime.Now;
}