Initial commit to new repository
This commit is contained in:
119
.decompiledproj/AxCopilot/Services/Agent/HashTool.cs
Normal file
119
.decompiledproj/AxCopilot/Services/Agent/HashTool.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AxCopilot.Services.Agent;
|
||||
|
||||
public class HashTool : IAgentTool
|
||||
{
|
||||
public string Name => "hash_tool";
|
||||
|
||||
public string Description => "Compute hash digests for text or files. Supports MD5, SHA1, SHA256, SHA512. Use 'text' mode for inline text or 'file' mode for file path.";
|
||||
|
||||
public ToolParameterSchema Parameters
|
||||
{
|
||||
get
|
||||
{
|
||||
ToolParameterSchema toolParameterSchema = new ToolParameterSchema();
|
||||
Dictionary<string, ToolProperty> dictionary = new Dictionary<string, ToolProperty>();
|
||||
ToolProperty obj = new ToolProperty
|
||||
{
|
||||
Type = "string",
|
||||
Description = "Input mode"
|
||||
};
|
||||
int num = 2;
|
||||
List<string> list = new List<string>(num);
|
||||
CollectionsMarshal.SetCount(list, num);
|
||||
Span<string> span = CollectionsMarshal.AsSpan(list);
|
||||
span[0] = "text";
|
||||
span[1] = "file";
|
||||
obj.Enum = list;
|
||||
dictionary["mode"] = obj;
|
||||
dictionary["input"] = new ToolProperty
|
||||
{
|
||||
Type = "string",
|
||||
Description = "Text to hash or file path"
|
||||
};
|
||||
ToolProperty obj2 = new ToolProperty
|
||||
{
|
||||
Type = "string",
|
||||
Description = "Hash algorithm (default: sha256)"
|
||||
};
|
||||
num = 4;
|
||||
List<string> list2 = new List<string>(num);
|
||||
CollectionsMarshal.SetCount(list2, num);
|
||||
Span<string> span2 = CollectionsMarshal.AsSpan(list2);
|
||||
span2[0] = "md5";
|
||||
span2[1] = "sha1";
|
||||
span2[2] = "sha256";
|
||||
span2[3] = "sha512";
|
||||
obj2.Enum = list2;
|
||||
dictionary["algorithm"] = obj2;
|
||||
toolParameterSchema.Properties = dictionary;
|
||||
num = 2;
|
||||
List<string> list3 = new List<string>(num);
|
||||
CollectionsMarshal.SetCount(list3, num);
|
||||
Span<string> span3 = CollectionsMarshal.AsSpan(list3);
|
||||
span3[0] = "mode";
|
||||
span3[1] = "input";
|
||||
toolParameterSchema.Required = list3;
|
||||
return toolParameterSchema;
|
||||
}
|
||||
}
|
||||
|
||||
public Task<ToolResult> ExecuteAsync(JsonElement args, AgentContext context, CancellationToken ct = default(CancellationToken))
|
||||
{
|
||||
string text = args.GetProperty("mode").GetString() ?? "text";
|
||||
string text2 = args.GetProperty("input").GetString() ?? "";
|
||||
JsonElement value;
|
||||
string text3 = (args.TryGetProperty("algorithm", out value) ? (value.GetString() ?? "sha256") : "sha256");
|
||||
try
|
||||
{
|
||||
byte[] array;
|
||||
string value2;
|
||||
if (text == "file")
|
||||
{
|
||||
string text4 = (Path.IsPathRooted(text2) ? text2 : Path.Combine(context.WorkFolder, text2));
|
||||
if (!File.Exists(text4))
|
||||
{
|
||||
return Task.FromResult(ToolResult.Fail("File not found: " + text4));
|
||||
}
|
||||
array = File.ReadAllBytes(text4);
|
||||
value2 = Path.GetFileName(text4);
|
||||
}
|
||||
else
|
||||
{
|
||||
array = Encoding.UTF8.GetBytes(text2);
|
||||
value2 = $"text ({array.Length} bytes)";
|
||||
}
|
||||
if (1 == 0)
|
||||
{
|
||||
}
|
||||
HashAlgorithm hashAlgorithm = text3 switch
|
||||
{
|
||||
"md5" => MD5.Create(),
|
||||
"sha1" => SHA1.Create(),
|
||||
"sha256" => SHA256.Create(),
|
||||
"sha512" => SHA512.Create(),
|
||||
_ => SHA256.Create(),
|
||||
};
|
||||
if (1 == 0)
|
||||
{
|
||||
}
|
||||
using HashAlgorithm hashAlgorithm2 = hashAlgorithm;
|
||||
byte[] array2 = hashAlgorithm2.ComputeHash(array);
|
||||
string value3 = BitConverter.ToString(array2).Replace("-", "").ToLowerInvariant();
|
||||
return Task.FromResult(ToolResult.Ok($"{text3.ToUpperInvariant()}({value2}):\n{value3}"));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Task.FromResult(ToolResult.Fail("해시 오류: " + ex.Message));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user