<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Nodinite.Agent.Mule</name>
    </assembly>
    <members>
        <member name="T:Nodinite.Agent.Mule.Controllers.ActionsController">
            <summary>
            Actions endpoint for executing agent operations and diagnostics
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ActionsController.ValidateAIDiagnosticsConfiguration(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel)">
            <summary>
            
            </summary>
            <param name="settings"></param>
            <returns></returns>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ActionsController.ParseAIAnalysis(System.String)">
            <summary>
            Parses the AI analysis string into structured components.
            </summary>
            <param name="analysis"></param>
            <returns></returns>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ActionsController.SetSection(System.String,System.String,System.String@,System.String@,System.String@)">
            <summary>
            Sets the content for a specific section of the AI diagnostics analysis.
            </summary>
            <param name="section"></param>
            <param name="content"></param>
            <param name="whatWentWrong"></param>
            <param name="whyItMatters"></param>
            <param name="nextSteps"></param>
        </member>
        <member name="T:Nodinite.Agent.Mule.Controllers.ConfigurationController">
            <summary>
            Configuration management endpoint for remote configuration
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ConfigurationController.Get(Microsoft.Extensions.Options.IOptionsSnapshot{Nodinite.Libraries.Agent.Settings.VersionSettingsModel},Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
            <summary>
            Get current agent configuration
            </summary>
            <returns>Current agent configuration in API collection format</returns>
            <response code="200">Returns the current configuration</response>
            <response code="500">If an error occurs while reading the configuration</response>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ConfigurationController.SaveConfiguration(System.String,Microsoft.AspNetCore.Hosting.IWebHostEnvironment,Nodinite.Libraries.SettingsProtection.ISaveProtectedSettingsService,Microsoft.Extensions.Options.IOptionsSnapshot{Nodinite.Libraries.Agent.Settings.VersionSettingsModel},Microsoft.Extensions.DependencyInjection.IServiceScopeFactory)">
            <summary>
            Save agent configuration
            </summary>
            <param name="settings">JSON configuration settings</param>
            <param name="webHostEnvironment">Web host environment service</param>
            <param name="saveSettingsService">Settings protection service</param>
            <param name="versionModel">Version settings</param>
            <param name="serviceScopeFactory">Service scope factory</param>
            <returns>Saved configuration in API collection format</returns>
            <response code="200">Configuration saved successfully</response>
            <response code="400">If validation fails</response>
            <response code="500">If an error occurs while saving</response>
        </member>
        <member name="M:Nodinite.Agent.Mule.Controllers.ConfigurationController.ValidateSettingsBeforeSaving(System.String,System.Collections.Generic.List{Nodinite.Libraries.Agent.Dtos.ApiCollection.ErrorDto}@)">
            <summary>
            Validates settings before saving
            Matches legacy SettingsModel.IsValidConfiguration method
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ProcessAllDiagnosticLogFilesAsync(System.Threading.Channels.ChannelWriter{Nodinite.Agent.Mule.DataPipelines.MonitorUnionType},Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.DateTime,System.Threading.CancellationToken)">
            <summary>
            Reads new entries from all files matching "diagnostic.log*.json".
            Merges them by their JSON "Timestamp" property into one chronologically ordered list,
            filters by severity ≥ Warning, hashes them, and—if changed—sends to the LLM.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ReadNewLinesFromFileAsync(System.String,System.Threading.CancellationToken)">
            <summary>
            Reads only newly appended lines from one file (using a persisted offset).
            If the file was truncated (rotated), resets offset to 0.
            Returns only those lines whose "Level" ≥ "warning," wrapped with their Timestamp.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.AnalyzeInChunksAsync(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.Collections.Generic.List{System.String},System.Threading.CancellationToken)">
            <summary>
            Recursively attempts to send "entries" (a list of JSON-lines) in one batch.
            Starts optimistically by trying to send more entries, then falls back to smaller chunks
            when hitting actual token limits. This adaptive approach learns the real model limits.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.CreateOptimisticChunks(System.Collections.Generic.List{System.String},System.Int32)">
            <summary>
            Creates optimistic chunks that try to fit more log entries together.
            If these fail due to token limits, ProcessChunkWithFallback will split them down.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ProcessChunkWithFallback(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.Collections.Generic.List{System.String},System.Threading.CancellationToken)">
            <summary>
            Processes a chunk, with automatic fallback to smaller chunks if token limits are exceeded.
            This adaptive approach learns the actual model limits through real API calls.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ProcessSingleLineChunk(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.String,System.Threading.CancellationToken)">
            <summary>
            Handles single-line chunks with fallback to snippet if too large
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.IsTokenLimitException(System.Exception)">
            <summary>
            Checks if an exception indicates a token limit was exceeded
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.CombinePartialSummariesAsync(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.Collections.Generic.List{System.String},System.Threading.CancellationToken)">
            <summary>
            Combines multiple partial summaries into a single concise report (under 300 words),
            by calling the LLM with a "merge" prompt.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.AnalyzeWithAiAsync(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.String,System.Threading.CancellationToken)">
            <summary>
            Constructs the system+user messages and calls IChatClient.GetResponseAsync().
            Gets chat client from factory using current settings for each request.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.CreateFallbackSummaryAsync(System.String)">
            <summary>
            If a single JSON line is still too large for the model, return a short snippet of up to 200 chars.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.DetermineHighestSeverityFromLogs(System.Collections.Generic.List{Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.LogEntryWrapper})">
            <summary>
            Determines the highest severity level from the actual log entries
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.DetermineStatus(System.String,Nodinite.Libraries.Agent.Dtos.Monitoring.ResourceStatusCodeDto)">
            <summary>
            Enhanced status determination: 
            1. First checks for STATUS_ERROR/STATUS_WARNING at the start of AI response
            2. Falls back to using the highest severity from actual log entries
            3. As last resort, uses keyword-based detection
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.IsSeverityAtOrAbove(System.String,System.String)">
            <summary>
            Returns true if logLevel (e.g. "Error", "Warning") ≥ minLevel.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ComputeHash(System.String)">
            <summary>
            Base64-encoded SHA-256 hash of a string (to detect if content changed).
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.DelayWithJitter(System.TimeSpan,System.Threading.CancellationToken)">
            <summary>
            Delays by "baseDelay ±10% jitter" so multiple instances don't fire in lockstep.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.AiDiagnosticsMonitoringDataCollector.ValidateConfiguration(Nodinite.Libraries.Agent.Settings.AiDiagnosticsSettingsModel,System.String)">
            <summary>
            Validates AI Diagnostics configuration based on the selected provider
            </summary>
        </member>
        <member name="P:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.Models.AIDiagnosticsResult.IsPersistentError">
            <summary>
            Indicates if this error state is "sticky" (requires manual clear)
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.Models.LogEntry">
            <summary>
            Represents one line of your JSON‐formatted log.
            Fields match Serilog.JsonFormatter output.
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.DataPipelines.AiDiagnostics.Monitoring.Models.LogProperties">
            <summary>
            Matches the "Properties" object in your JSON log.
            You can add more fields here if you enrich logs with other structured values.
            </summary>
        </member>
        <member name="P:Nodinite.Agent.Mule.DataPipelines.MonitorUnionType.AIDiagnosticsType">
            <summary>
            The source of the Folder Configuration
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Extensions.IChatClientFactory">
            <summary>
            Factory interface for getting the appropriate chat client based on current settings
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Extensions.ChatClientFactory">
            <summary>
            Factory that resolves the appropriate chat client from DI based on provider configuration
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Helpers.MuleResourcesStatus.GetMuleApplicationStatus(System.String,System.Boolean,System.String)">
            <summary>
            Get Mule 4.x application status from status string
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Helpers.MuleResourcesStatus.GetMuleServerStatus(System.String)">
            <summary>
            Get Mule server status from status string
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Models.CloudHubs.CloudHub2ApplicationsResponse">
            <summary>
            Response model for CloudHub 2.0 applications endpoint
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Models.CloudHubs.CloudHub2ApplicationItem">
            <summary>
            Represents a single application from the CloudHub 2.0 API
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Models.Settings.Mule4ObjectComparer.Equals(Nodinite.Agent.Mule.Models.Settings.Mule4Object,Nodinite.Agent.Mule.Models.Settings.Mule4Object)">
            <summary>
            The equals method determines if the provided Mules are equal
            </summary>
            <param name="x">the left Mules in comparison</param>
            <param name="y">the right Mules in comparison</param>
            <returns>True if equal, otherwise false.</returns>                    
        </member>
        <member name="M:Nodinite.Agent.Mule.Models.Settings.Mule4ObjectComparer.GetHashCode(Nodinite.Agent.Mule.Models.Settings.Mule4Object)">
            <summary>
            Returns the unique hash code of the object instance
            </summary>
            <param name="obj">The object</param>
            <returns>The unique hash as int</returns>        
        </member>
        <member name="M:Nodinite.Agent.Mule.Models.Settings.MuleObject.MuleObjectComparer.Equals(Nodinite.Agent.Mule.Models.Settings.MuleObject,Nodinite.Agent.Mule.Models.Settings.MuleObject)">
            <summary>
            The equals method determines if the provided Mules are equal
            </summary>
            <param name="x">the left Mules in comparison</param>
            <param name="y">the right Mules in comparison</param>
            <returns>True if equal</returns>                    
        </member>
        <member name="M:Nodinite.Agent.Mule.Models.Settings.MuleObject.MuleObjectComparer.GetHashCode(Nodinite.Agent.Mule.Models.Settings.MuleObject)">
            <summary>
            Returns the unique hash code of the object instance
            </summary>
            <param name="obj">The object</param>
            <returns>The unique hash as int</returns>        
        </member>
        <member name="P:Nodinite.Agent.Mule.Models.Settings.MuleObjectBase.PollingInterval">
            <summary>
            Polling interval in seconds
            </summary>
        </member>
        <member name="F:Nodinite.Agent.Mule.Services.MuleHelperService.s_defaultJsonOptions">
            <summary>
            Use this port to get data from fake service
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Services.RuntimeStateStore">
            <summary>
            Thread-safe singleton that holds runtime state populated by data collectors
            during monitoring cycles.
            
            Lifecycle:
            - On startup the store is empty — controller lookups return null until the first collector cycle.
            - Each environment writes its own slot immediately after collecting data and writing to the channel.
              This means the state for an environment is never wiped by a throttled (skipped) cycle.
            - When config is reloaded (mule config added/removed), collectors call RemoveStaleEntries
              to prune entries for mule configs that no longer exist.
            
            Multiple collectors (CloudHub, Hybrid) may iterate over the same Mules4 config list.
            Each collector writes to a separate source+environment keyed slot so they never overwrite each other.
            Lookup methods aggregate across all slots for a given mule name.
            </summary>
        </member>
        <member name="F:Nodinite.Agent.Mule.Services.RuntimeStateStore._states">
            <summary>
            Mule 4.x runtime state keyed by (MuleName, Source, Environment).
            Each environment processed by a collector gets its own independent slot.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.RemoveStaleEntries(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Remove entries for mule configs that are no longer present in settings.
            Called by collectors on Reload() to prevent stale entries from accumulating.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.FindMule4NameByApplication(System.String)">
            <summary>
            Find the Mule4 config name that owns an application with the given name.
            Searches across all sources and environments.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.FindMule4NameByServer(System.String)">
            <summary>
            Find the Mule4 config name that owns a server with the given resource name.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.GetApplicationId(System.String,System.String)">
            <summary>
            Get the MuleApplicationId for a given application name within a Mule4 config.
            Searches across all sources and environments for the given mule name.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.GetCloudhub2ApplicationId(System.String,System.String)">
            <summary>
            Get the MuleCloudhub2 ApplicationId for a given application name within a Mule4 config.
            Searches across all sources and environments for the given mule name.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.GetServerId(System.String,System.String)">
            <summary>
            Get the MuleResourceId for a server within a Mule4 config.
            </summary>
        </member>
        <member name="M:Nodinite.Agent.Mule.Services.RuntimeStateStore.GetFlowId(System.String,System.String)">
            <summary>
            Get the MuleResourceId for a flow within a Mule4 config.
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Services.Mule4RuntimeState">
            <summary>
            Runtime state for a single (MuleName, Source, Environment) slot.
            Replaced wholesale each time that environment is collected — deleted resources are automatically cleaned up.
            </summary>
        </member>
        <member name="T:Nodinite.Agent.Mule.Services.RuntimeStateSource">
            <summary>
            Source identifiers for the different collector types that populate RuntimeStateStore.
            </summary>
        </member>
        <member name="P:Nodinite.Agent.Mule.Settings.OldSettingsModelSchemaBeforeDevKit.MuleObjectBase18.PollingInterval">
            <summary>
            Polling interval in seconds
            </summary>
        </member>
        <member name="T:Program">
            <summary>
            Auto-generated public partial Program class for top-level statement apps.
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.CreateDocumentationId(System.Type)">
            <summary>
            Generates a documentation comment ID for a type.
            Example: T:Namespace.Outer+Inner`1 becomes T:Namespace.Outer.Inner`1
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.CreateDocumentationId(System.Reflection.PropertyInfo)">
            <summary>
            Generates a documentation comment ID for a property.
            Example: P:Namespace.ContainingType.PropertyName or for an indexer P:Namespace.ContainingType.Item(System.Int32)
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.CreateDocumentationId(System.Type,System.String)">
            <summary>
            Generates a documentation comment ID for a property given its container type and property name.
            Example: P:Namespace.ContainingType.PropertyName
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.CreateDocumentationId(System.Reflection.MethodInfo)">
            <summary>
            Generates a documentation comment ID for a method (or constructor).
            For example:
              M:Namespace.ContainingType.MethodName(ParamType1,ParamType2)~ReturnType
              M:Namespace.ContainingType.#ctor(ParamType)
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.GetTypeDocId(System.Type,System.Boolean,System.Boolean)">
            <summary>
            Generates a documentation ID string for a type.
            This method handles nested types (replacing '+' with '.'),
            generic types, arrays, pointers, by-ref types, and generic parameters.
            The <paramref name="includeGenericArguments"/> flag controls whether
            constructed generic type arguments are emitted, while <paramref name="omitGenericArity"/>
            controls whether the generic arity marker (e.g. "`1") is appended.
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.OpenApi.Generated.DocumentationCommentIdHelper.NormalizeDocId(System.String)">
            <summary>
            Normalizes a documentation comment ID to match the compiler-style format.
            Strips the return type suffix for ordinary methods but retains it for conversion operators.
            </summary>
            <param name="docId">The documentation comment ID to normalize.</param>
            <returns>The normalized documentation comment ID.</returns>
        </member>
    </members>
</doc>
