-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAgentProviderKindExtensions.cs
More file actions
91 lines (84 loc) · 3.46 KB
/
AgentProviderKindExtensions.cs
File metadata and controls
91 lines (84 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using ManagedCode.GeminiSharpSDK.Models;
namespace DotPilot.Core.Providers;
internal static class AgentProviderKindExtensions
{
public static string GetCommandName(this AgentProviderKind kind)
{
return kind switch
{
AgentProviderKind.Debug => "debug",
AgentProviderKind.Codex => "codex",
AgentProviderKind.ClaudeCode => "claude",
AgentProviderKind.GitHubCopilot => "copilot",
AgentProviderKind.Gemini => "gemini",
AgentProviderKind.Onnx => "onnx",
AgentProviderKind.LlamaSharp => "llamasharp",
_ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null),
};
}
public static string GetDefaultModelName(this AgentProviderKind kind)
{
return kind switch
{
AgentProviderKind.Debug => "debug-echo",
AgentProviderKind.Codex => "gpt-5",
AgentProviderKind.ClaudeCode => "claude-sonnet-4-5",
AgentProviderKind.GitHubCopilot => "gpt-5",
AgentProviderKind.Gemini => GeminiModels.Gemini25Pro,
AgentProviderKind.Onnx => "phi-4-mini-instruct",
AgentProviderKind.LlamaSharp => "llama-3.2-3b-instruct",
_ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null),
};
}
public static string GetDisplayName(this AgentProviderKind kind)
{
return kind switch
{
AgentProviderKind.Debug => "Debug Provider",
AgentProviderKind.Codex => "Codex",
AgentProviderKind.ClaudeCode => "Claude Code",
AgentProviderKind.GitHubCopilot => "GitHub Copilot",
AgentProviderKind.Gemini => "Gemini",
AgentProviderKind.Onnx => "ONNX Runtime GenAI",
AgentProviderKind.LlamaSharp => "LLamaSharp",
_ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null),
};
}
public static string GetInstallCommand(this AgentProviderKind kind)
{
return kind switch
{
AgentProviderKind.Debug => "built-in",
AgentProviderKind.Codex => "npm install -g @openai/codex",
AgentProviderKind.ClaudeCode => "npm install -g @anthropic-ai/claude-code",
AgentProviderKind.GitHubCopilot => "npm install -g @github/copilot",
AgentProviderKind.Gemini => "npm install -g @google/gemini-cli",
AgentProviderKind.Onnx => kind.GetModelPathSetupCommand(),
AgentProviderKind.LlamaSharp => kind.GetModelPathSetupCommand(),
_ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null),
};
}
public static IReadOnlyList<string> GetSupportedModelNames(this AgentProviderKind kind)
{
return kind switch
{
AgentProviderKind.Debug => [kind.GetDefaultModelName()],
AgentProviderKind.Codex => [],
AgentProviderKind.ClaudeCode => [],
AgentProviderKind.GitHubCopilot => [],
AgentProviderKind.Gemini =>
[
GeminiModels.Gemini25Pro,
GeminiModels.Gemini25Flash,
GeminiModels.Gemini25FlashLite,
],
AgentProviderKind.Onnx => [],
AgentProviderKind.LlamaSharp => [],
_ => throw new ArgumentOutOfRangeException(nameof(kind), kind, null),
};
}
public static bool IsBuiltIn(this AgentProviderKind kind)
{
return kind == AgentProviderKind.Debug;
}
}