Introduces the InboxProcessorRetryBackoffFactor option to allow configuration of the initial retry delay for the inbox processor when using the RetryLater failure policy. Updates documentation and logic to use this factor for exponential backoff, providing more flexibility in handling event retries.
Introduces a ProviderName property to IRepository and related base classes, requiring repositories to specify their provider via constructor. Adds provider constants for EF Core, MemoryDb, and MongoDB, and updates repository implementations and tests accordingly. Also refactors EntityName to a public property and renames WithEntityName extension to SetEntityName.
Refactored repository interfaces and implementations to replace SetCustomEntityName and CustomEntityName with SetEntityName and EntityName for consistency and clarity. Updated related extension methods and tests to use the new naming.
Moved the primitive type conversion logic from HasExtraPropertiesExtensions.GetProperty<TProperty> to a new TypeHelper.ChangeTypePrimitiveExtended<TProperty> method. This centralizes and simplifies type conversion, improving code maintainability and reuse.
Introduces the ability to set a custom entity name for repositories by adding a SetCustomEntityName method to IRepository and BasicRepositoryBase. Updates EfCoreRepository to use the custom entity name when accessing DbSet, and extends IEfCoreDbContext with an overload of Set<T> that accepts a name. Test stubs are updated to implement the new method.
Wrapped event processing in a try-catch block to log errors when processing individual events fails. This prevents one failed event from interrupting the processing of subsequent events and improves reliability.
Added DateOnly and TimeOnly to TypeHelper.IsPrimitiveExtended for .NET Core. Also updated MethodInvocationValidator to allow nulls for nullable parameter types, improving validation logic for modern .NET types.
Added new classes: WorkspaceConfiguration, WorkspaceConfigurationDictionary, and TypedKernelAccessor. These classes facilitate workspace-specific configurations and provide a typed access mechanism for the kernel service. Removed the previous implementation of WorkspaceConfiguration and its dictionary to streamline the configuration process.
Changed ChatClient and Kernel properties in WorkspaceConfiguration to be non-nullable and initialized by default. Removed null checks and redundant instantiation logic in configuration methods for improved code clarity and safety.
Updated WorkspaceConfiguration to include a Name property and refactored service registration to use workspaceConfig.Name instead of nested ChatClient/Kernel names. Simplified ChatClientConfiguration and KernelConfiguration by removing the Name property and constructors, and added fluent configuration methods to WorkspaceConfiguration for improved usability.
Replaces separate ChatClient and Kernel configuration dictionaries with a unified WorkspaceConfigurationDictionary. Removes related collection classes and extensions, updates service registration logic, and renames IKernel to IKernelAccessor. This change simplifies configuration and improves extensibility for managing multiple AI workspaces.
Introduced the Volo.Abp.AI.Abstractions project with a new ChatClientWithSystemMessage delegate and related extension methods. Updated the solution and AbpAIModule to include and reference the new abstractions, supporting enhanced AI chat client extensibility.