// Copyright (c) Microsoft. All rights reserved. using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Agents.AI; /// /// Configuration options for file-based skill sources. /// /// /// Use this class to configure file-based skill discovery without relying on /// positional constructor or method parameters. New options can be added here /// without breaking existing callers. /// [Experimental(DiagnosticIds.Experiments.AgentsAIExperiments)] public sealed class AgentFileSkillsSourceOptions { /// /// Gets or sets the allowed file extensions for skill resources. /// When , defaults to .md, .json, .yaml, /// .yml, .csv, .xml, .txt. /// public IEnumerable? AllowedResourceExtensions { get; set; } /// /// Gets or sets the allowed file extensions for skill scripts. /// When , defaults to .py, .js, .sh, /// .ps1, .cs, .csx. /// public IEnumerable? AllowedScriptExtensions { get; set; } /// /// Gets or sets relative directory paths to scan for script files within each skill directory. /// Values may be single-segment names (e.g., "scripts") or multi-segment relative /// paths (e.g., "sub/scripts"). Use "." to include files directly at the /// skill root. Leading "./" prefixes, trailing separators, and backslashes are /// normalized automatically; paths containing ".." segments or absolute paths are /// rejected. /// When , defaults to scripts (per the /// Agent Skills specification). /// When set, replaces the defaults entirely. /// public IEnumerable? ScriptDirectories { get; set; } /// /// Gets or sets relative directory paths to scan for resource files within each skill directory. /// Values may be single-segment names (e.g., "references") or multi-segment relative /// paths (e.g., "sub/resources"). Use "." to include files directly at the /// skill root. Leading "./" prefixes, trailing separators, and backslashes are /// normalized automatically; paths containing ".." segments or absolute paths are /// rejected. /// When , defaults to references and assets (per the /// Agent Skills specification). /// When set, replaces the defaults entirely. /// public IEnumerable? ResourceDirectories { get; set; } }