// 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; }
}