CODEX_ADK/BACKEND/Codex.Dal/Entities/AgentTool.cs
Svrnty 229a0698a3 Initial commit: CODEX_ADK monorepo
Multi-agent AI laboratory with ASP.NET Core 8.0 backend and Flutter frontend.
Implements CQRS architecture, OpenAPI contract-first API design.

BACKEND: Agent management, conversations, executions with PostgreSQL + Ollama
FRONTEND: Cross-platform UI with strict typing and Result-based error handling

Co-Authored-By: Jean-Philippe Brule <jp@svrnty.io>
2025-10-26 23:12:32 -04:00

73 lines
1.9 KiB
C#

using System.Text.Json;
using Codex.Dal.Enums;
namespace Codex.Dal.Entities;
/// <summary>
/// Represents a tool or API integration available to an agent.
/// One-to-many relationship: each agent has its own tool configurations.
/// </summary>
public class AgentTool
{
/// <summary>
/// Unique identifier for this tool instance
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// Foreign key to the owning agent
/// </summary>
public Guid AgentId { get; set; }
/// <summary>
/// Name of the tool (e.g., "file_reader", "code_executor", "github_api")
/// </summary>
public string ToolName { get; set; } = string.Empty;
/// <summary>
/// Type of tool
/// </summary>
public ToolType Type { get; set; }
/// <summary>
/// Tool-specific configuration stored as JSON (e.g., API endpoints, file paths, MCP server URLs)
/// </summary>
public JsonDocument? Configuration { get; set; }
/// <summary>
/// MCP server URL (if Type is McpServer)
/// </summary>
public string? McpServerUrl { get; set; }
/// <summary>
/// Encrypted authentication token for MCP server (if required)
/// </summary>
public string? McpAuthTokenEncrypted { get; set; }
/// <summary>
/// Base URL for REST API (if Type is RestApi)
/// </summary>
public string? ApiBaseUrl { get; set; }
/// <summary>
/// Encrypted API key for REST API (if required)
/// </summary>
public string? ApiKeyEncrypted { get; set; }
/// <summary>
/// Whether this tool is enabled for use
/// </summary>
public bool IsEnabled { get; set; } = true;
/// <summary>
/// When this tool was added to the agent
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
// Navigation properties
/// <summary>
/// The agent that owns this tool
/// </summary>
public Agent Agent { get; set; } = null!;
}