From 12fff90d3a31bce0d2846577f282d7f77f60a0b2 Mon Sep 17 00:00:00 2001 From: Charles Xu Date: Wed, 2 Apr 2025 15:56:48 +0800 Subject: [PATCH 1/2] 1. Decouple IArtifact and current Aevatar.Core.Abstractions 2. Update test code --- samples/MessagingGAgent.Client/Program.cs | 10 +- .../PluginGAgent.Silo.csproj | 1 + .../Aevatar.Agent.Abstractions.csproj | 13 +++ .../IGAgentEventBase.cs | 7 ++ .../IGAgentEventBaseCollection.cs | 7 ++ .../IGAgentState.cs | 9 ++ .../Aevatar.Core.Abstractions.csproj | 5 + src/Aevatar.Core.Abstractions/IArtifact.cs | 9 -- .../IArtifactGAgent.cs | 2 + .../IGAgentFactory.cs | 2 + src/Aevatar.Core.Abstractions/StateBase.cs | 6 +- .../StateLogEventBase.cs | 12 ++- .../Aevatar.Core.GAgentState.csproj | 13 +++ src/Aevatar.Core.GAgentState/IArtifact.cs | 13 +++ src/Aevatar.Core/Aevatar.Core.csproj | 2 + src/Aevatar.Core/ArtifactGAgent.cs | 6 +- src/Aevatar.Core/GAgentBase.Subscribe.cs | 5 +- src/Aevatar.Core/GAgentBase.cs | 7 +- src/Aevatar.Core/GAgentFactory.cs | 1 + src/Aevatar.Core/StateProjectionGAgentBase.cs | 1 + src/Aevatar.Plugins/Aevatar.Plugins.csproj | 1 + .../GAgents/PluginCodeStorageGAgent.cs | 3 +- .../GAgents/TenantPluginCodeGAgent.cs | 3 +- test/Aevatar.Core.Tests/IArtifactTest.cs | 97 +++++++++++++++++++ .../TestArtifacts/MyArtifact.cs | 6 +- .../TestGAgents/GroupGAgent.cs | 3 +- .../TestGAgents/SampleAIGAgent.cs | 3 +- .../TestGAgents/TestStateProjectionGAgent.cs | 3 +- .../TestGAgents/TokenUsageProjectionGAgent.cs | 3 +- 29 files changed, 219 insertions(+), 34 deletions(-) create mode 100644 src/Aevatar.Agent.Abstractions/Aevatar.Agent.Abstractions.csproj create mode 100644 src/Aevatar.Agent.Abstractions/IGAgentEventBase.cs create mode 100644 src/Aevatar.Agent.Abstractions/IGAgentEventBaseCollection.cs create mode 100644 src/Aevatar.Agent.Abstractions/IGAgentState.cs delete mode 100644 src/Aevatar.Core.Abstractions/IArtifact.cs create mode 100644 src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj create mode 100644 src/Aevatar.Core.GAgentState/IArtifact.cs create mode 100644 test/Aevatar.Core.Tests/IArtifactTest.cs diff --git a/samples/MessagingGAgent.Client/Program.cs b/samples/MessagingGAgent.Client/Program.cs index 73d8f472..8e74dd7c 100644 --- a/samples/MessagingGAgent.Client/Program.cs +++ b/samples/MessagingGAgent.Client/Program.cs @@ -26,7 +26,7 @@ var parentAgent = client.GetGrain(parentId); List messagingAgents = []; -var maxAgents = 400; +var maxAgents = 10; for(var i = 0; i < maxAgents; ++i) { var messagingAgentId = Guid.NewGuid(); @@ -42,8 +42,8 @@ await publisher.PublishEventAsync(new SendEvent() { Message = "Hello, World!" }); - -await Task.Delay(600000); +Console.WriteLine("Published event. Waiting for agents to receive messages..."); +await Task.Delay(maxAgents * 1000); var completed = 0; foreach (var agent in messagingAgents) @@ -52,7 +52,7 @@ await publisher.PublishEventAsync(new SendEvent() if (receivedMessages != maxAgents) { Console.ForegroundColor = ConsoleColor.Red; - Console.Write("Agent did not receive the expected number of messages. " + receivedMessages); + Console.WriteLine("Agent did not receive the expected number of messages. " + receivedMessages); continue; } @@ -60,6 +60,6 @@ await publisher.PublishEventAsync(new SendEvent() } Console.ForegroundColor = ConsoleColor.Green; -Console.Write("Completed: " + completed); +Console.WriteLine("Completed: " + completed); await host.StopAsync(); \ No newline at end of file diff --git a/samples/PluginGAgent/PluginGAgent.Silo/PluginGAgent.Silo.csproj b/samples/PluginGAgent/PluginGAgent.Silo/PluginGAgent.Silo.csproj index 74fb39db..758be183 100644 --- a/samples/PluginGAgent/PluginGAgent.Silo/PluginGAgent.Silo.csproj +++ b/samples/PluginGAgent/PluginGAgent.Silo/PluginGAgent.Silo.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Aevatar.Agent.Abstractions/Aevatar.Agent.Abstractions.csproj b/src/Aevatar.Agent.Abstractions/Aevatar.Agent.Abstractions.csproj new file mode 100644 index 00000000..f4561c4b --- /dev/null +++ b/src/Aevatar.Agent.Abstractions/Aevatar.Agent.Abstractions.csproj @@ -0,0 +1,13 @@ + + + + net9.0 + enable + enable + + + + + + + diff --git a/src/Aevatar.Agent.Abstractions/IGAgentEventBase.cs b/src/Aevatar.Agent.Abstractions/IGAgentEventBase.cs new file mode 100644 index 00000000..c2748665 --- /dev/null +++ b/src/Aevatar.Agent.Abstractions/IGAgentEventBase.cs @@ -0,0 +1,7 @@ +namespace Aevatar.Agent.Abstractions; + +public interface IGAgentEventBase +{ + Guid Id { get; set; } + DateTime Ctime { get; set; } +} diff --git a/src/Aevatar.Agent.Abstractions/IGAgentEventBaseCollection.cs b/src/Aevatar.Agent.Abstractions/IGAgentEventBaseCollection.cs new file mode 100644 index 00000000..fcf7ed1d --- /dev/null +++ b/src/Aevatar.Agent.Abstractions/IGAgentEventBaseCollection.cs @@ -0,0 +1,7 @@ +namespace Aevatar.Agent.Abstractions; + +public interface IGAgentEventBase : IGAgentEventBase + where T : IGAgentEventBase +{ + +} diff --git a/src/Aevatar.Agent.Abstractions/IGAgentState.cs b/src/Aevatar.Agent.Abstractions/IGAgentState.cs new file mode 100644 index 00000000..c8cbf7fe --- /dev/null +++ b/src/Aevatar.Agent.Abstractions/IGAgentState.cs @@ -0,0 +1,9 @@ +namespace Aevatar.Agent.Abstractions; + +public interface IGAgentState +{ + List Children{get;set;} + GrainId? Parent{get;set;} + string? GAgentCreator{get;set;} + +} diff --git a/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj b/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj index b338c6e8..9a3fa9f1 100644 --- a/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj +++ b/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj @@ -22,4 +22,9 @@ + + + + + diff --git a/src/Aevatar.Core.Abstractions/IArtifact.cs b/src/Aevatar.Core.Abstractions/IArtifact.cs deleted file mode 100644 index cce004a7..00000000 --- a/src/Aevatar.Core.Abstractions/IArtifact.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Aevatar.Core.Abstractions; - -public interface IArtifact - where TState : StateBase - where TStateLogEvent : StateLogEventBase -{ - void TransitionState(TState state, StateLogEventBase stateLogEvent); - string GetDescription(); -} \ No newline at end of file diff --git a/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs b/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs index 0b2a92cd..8bae7faa 100644 --- a/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs +++ b/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs @@ -1,3 +1,5 @@ +using Aevatar.Core.GAgentState; + namespace Aevatar.Core.Abstractions; public interface IArtifactGAgent : IGAgent diff --git a/src/Aevatar.Core.Abstractions/IGAgentFactory.cs b/src/Aevatar.Core.Abstractions/IGAgentFactory.cs index c17a809f..331c4614 100644 --- a/src/Aevatar.Core.Abstractions/IGAgentFactory.cs +++ b/src/Aevatar.Core.Abstractions/IGAgentFactory.cs @@ -1,3 +1,5 @@ +using Aevatar.Core.GAgentState; + namespace Aevatar.Core.Abstractions; public interface IGAgentFactory diff --git a/src/Aevatar.Core.Abstractions/StateBase.cs b/src/Aevatar.Core.Abstractions/StateBase.cs index f476b423..b1d44e08 100644 --- a/src/Aevatar.Core.Abstractions/StateBase.cs +++ b/src/Aevatar.Core.Abstractions/StateBase.cs @@ -1,13 +1,15 @@ +using Aevatar.Agent.Abstractions; + namespace Aevatar.Core.Abstractions; [GenerateSerializer] -public abstract class StateBase +public abstract class StateBase : IGAgentState { [Id(0)] public List Children { get; set; } = []; [Id(1)] public GrainId? Parent { get; set; } [Id(2)] public string? GAgentCreator { get; set; } - public void Apply(StateLogEventBase @stateLogEvent) + public void Apply(IGAgentEventBase @stateLogEvent) { // Just to avoid exception on GAgentBase.TransitionState. } diff --git a/src/Aevatar.Core.Abstractions/StateLogEventBase.cs b/src/Aevatar.Core.Abstractions/StateLogEventBase.cs index 70547432..d2fa51db 100644 --- a/src/Aevatar.Core.Abstractions/StateLogEventBase.cs +++ b/src/Aevatar.Core.Abstractions/StateLogEventBase.cs @@ -1,12 +1,18 @@ +using Aevatar.Agent.Abstractions; + namespace Aevatar.Core.Abstractions; [GenerateSerializer] -public abstract class StateLogEventBase +public abstract class StateLogEventBase : IGAgentEventBase { [Id(0)] public virtual Guid Id { get; set; } [Id(1)] public DateTime Ctime { get; set; } } [GenerateSerializer] -public abstract class StateLogEventBase : StateLogEventBase - where T:StateLogEventBase; \ No newline at end of file +public abstract class StateLogEventBase : StateLogEventBase,IGAgentEventBase + where T : StateLogEventBase; + + + + diff --git a/src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj b/src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj new file mode 100644 index 00000000..b4b4eeec --- /dev/null +++ b/src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj @@ -0,0 +1,13 @@ + + + + + + + + net9.0 + enable + enable + + + diff --git a/src/Aevatar.Core.GAgentState/IArtifact.cs b/src/Aevatar.Core.GAgentState/IArtifact.cs new file mode 100644 index 00000000..f1b71820 --- /dev/null +++ b/src/Aevatar.Core.GAgentState/IArtifact.cs @@ -0,0 +1,13 @@ +using Aevatar.Agent.Abstractions; + +namespace Aevatar.Core.GAgentState; + +public interface IArtifact + where TState : IGAgentState + where TStateLogEvent : IGAgentEventBase +{ + void TransitionState(IGAgentState state, IGAgentEventBase stateLogEvent); + string GetDescription(); +} + +public interface IArtifactGAgent; diff --git a/src/Aevatar.Core/Aevatar.Core.csproj b/src/Aevatar.Core/Aevatar.Core.csproj index ca990046..89f77bd3 100644 --- a/src/Aevatar.Core/Aevatar.Core.csproj +++ b/src/Aevatar.Core/Aevatar.Core.csproj @@ -22,6 +22,8 @@ + + diff --git a/src/Aevatar.Core/ArtifactGAgent.cs b/src/Aevatar.Core/ArtifactGAgent.cs index 8b09528f..7d3e5948 100644 --- a/src/Aevatar.Core/ArtifactGAgent.cs +++ b/src/Aevatar.Core/ArtifactGAgent.cs @@ -1,6 +1,8 @@ using System.Reflection; using Aevatar.Core.Abstractions; using Aevatar.Core.Abstractions.Exceptions; +using Aevatar.Core.GAgentState; +using Aevatar.Agent.Abstractions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -81,7 +83,7 @@ await base.OnGAgentActivateAsync(cancellationToken) protected override void GAgentTransitionState( TState state, - StateLogEventBase @event) + IGAgentEventBase @event) { ValidateParameters(state, @event); try @@ -134,7 +136,7 @@ private void ValidateOperationStatus() private static void ValidateParameters( TState state, - StateLogEventBase @event) + IGAgentEventBase @event) { if (state == null) throw new ArgumentNullException(nameof(state), diff --git a/src/Aevatar.Core/GAgentBase.Subscribe.cs b/src/Aevatar.Core/GAgentBase.Subscribe.cs index e13af7a6..613c8baf 100644 --- a/src/Aevatar.Core/GAgentBase.Subscribe.cs +++ b/src/Aevatar.Core/GAgentBase.Subscribe.cs @@ -1,11 +1,12 @@ using Aevatar.Core.Abstractions; using Microsoft.Extensions.Logging; +using Aevatar.Agent.Abstractions; namespace Aevatar.Core; public abstract partial class GAgentBase { - protected sealed override void TransitionState(TState state, StateLogEventBase @event) + protected sealed override void TransitionState(TState state, IGAgentEventBase @event) { switch (@event) { @@ -42,7 +43,7 @@ protected sealed override void TransitionState(TState state, StateLogEventBase @event) + protected virtual void GAgentTransitionState(TState state, IGAgentEventBase @event) { // Derived classes can override this method. } diff --git a/src/Aevatar.Core/GAgentBase.cs b/src/Aevatar.Core/GAgentBase.cs index 5429fe65..3a1b87a6 100644 --- a/src/Aevatar.Core/GAgentBase.cs +++ b/src/Aevatar.Core/GAgentBase.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using Aevatar.Agent.Abstractions; using Aevatar.Core.Abstractions; using Aevatar.Core.Abstractions.Projections; using Microsoft.Extensions.DependencyInjection; @@ -35,8 +36,8 @@ public abstract class [StorageProvider(ProviderName = "PubSubStore")] [LogConsistencyProvider(ProviderName = "LogStorage")] public abstract partial class - GAgentBase - : JournaledGrain>, IStateGAgent, IExtGAgent + GAgentBase + : JournaledGrain>, IStateGAgent, IExtGAgent where TState : StateBase, new() where TStateLogEvent : StateLogEventBase where TEvent : EventBase @@ -349,7 +350,7 @@ protected sealed override async void RaiseEvent(T @event) }, Logger); } - private async Task InternalRaiseEventAsync(T raisedStateLogEvent) where T : StateLogEventBase + private async Task InternalRaiseEventAsync(T raisedStateLogEvent) where T : IGAgentEventBase { await HandleRaiseEventAsync(); } diff --git a/src/Aevatar.Core/GAgentFactory.cs b/src/Aevatar.Core/GAgentFactory.cs index 06331bef..6106cdad 100644 --- a/src/Aevatar.Core/GAgentFactory.cs +++ b/src/Aevatar.Core/GAgentFactory.cs @@ -1,4 +1,5 @@ using Aevatar.Core.Abstractions; +using Aevatar.Core.GAgentState; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Orleans.Streams; diff --git a/src/Aevatar.Core/StateProjectionGAgentBase.cs b/src/Aevatar.Core/StateProjectionGAgentBase.cs index 0f9d0ffb..f0618d8a 100644 --- a/src/Aevatar.Core/StateProjectionGAgentBase.cs +++ b/src/Aevatar.Core/StateProjectionGAgentBase.cs @@ -1,5 +1,6 @@ using System.Reflection; using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; using Orleans.Streams; namespace Aevatar.Core; diff --git a/src/Aevatar.Plugins/Aevatar.Plugins.csproj b/src/Aevatar.Plugins/Aevatar.Plugins.csproj index c9beec08..065ed2bd 100644 --- a/src/Aevatar.Plugins/Aevatar.Plugins.csproj +++ b/src/Aevatar.Plugins/Aevatar.Plugins.csproj @@ -18,6 +18,7 @@ + diff --git a/src/Aevatar.Plugins/GAgents/PluginCodeStorageGAgent.cs b/src/Aevatar.Plugins/GAgents/PluginCodeStorageGAgent.cs index 87d3081c..2a9bfcd3 100644 --- a/src/Aevatar.Plugins/GAgents/PluginCodeStorageGAgent.cs +++ b/src/Aevatar.Plugins/GAgents/PluginCodeStorageGAgent.cs @@ -1,5 +1,6 @@ using Aevatar.Core; using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; namespace Aevatar.Plugins.GAgents; @@ -36,7 +37,7 @@ public override Task GetDescriptionAsync() } protected override void GAgentTransitionState(PluginCodeStorageGAgentState state, - StateLogEventBase @event) + IGAgentEventBase @event) { switch (@event) { diff --git a/src/Aevatar.Plugins/GAgents/TenantPluginCodeGAgent.cs b/src/Aevatar.Plugins/GAgents/TenantPluginCodeGAgent.cs index 9718f167..b3a3ec01 100644 --- a/src/Aevatar.Plugins/GAgents/TenantPluginCodeGAgent.cs +++ b/src/Aevatar.Plugins/GAgents/TenantPluginCodeGAgent.cs @@ -1,5 +1,6 @@ using Aevatar.Core; using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; namespace Aevatar.Plugins.GAgents; @@ -32,7 +33,7 @@ public override Task GetDescriptionAsync() } protected override void GAgentTransitionState(TenantPluginCodeGAgentState state, - StateLogEventBase @event) + IGAgentEventBase @event) { switch (@event) { diff --git a/test/Aevatar.Core.Tests/IArtifactTest.cs b/test/Aevatar.Core.Tests/IArtifactTest.cs new file mode 100644 index 00000000..00251d9d --- /dev/null +++ b/test/Aevatar.Core.Tests/IArtifactTest.cs @@ -0,0 +1,97 @@ +using Aevatar.Core.GAgentState; +using Aevatar.Agent.Abstractions; +using Moq; +using Xunit; +using Aevatar.Core.Abstractions; + +namespace Aevatar.Core.GAgentState.Tests; + +public class MockState : IGAgentState +{ + public List Children { get; set; } = new List(); + public GrainId? Parent { get; set; } + public string? GAgentCreator { get; set; } = default!; + public Guid Id { get; set; } + public DateTime Ctime { get; set; } +} + +[GenerateSerializer] +public abstract class MockStateLogEventBase : IGAgentEventBase +{ + [Id(0)] public virtual Guid Id { get; set; } + [Id(1)] public DateTime Ctime { get; set; } +} + +[GenerateSerializer] +public abstract class MockStateLogEventBase : MockStateLogEventBase,IGAgentEventBase + where T : MockStateLogEventBase; + +[GenerateSerializer] +public class MockArtifactState : MockState; + +[GenerateSerializer] +public class MockArtifactStateLogEventBase : MockStateLogEventBase; + +[GenerateSerializer] +public class MockArtifact: IArtifact +{ + public virtual void TransitionState(IGAgentState state, IGAgentEventBase stateLogEvent) + { + + } + + public virtual string GetDescription() + { + return "Test Description"; + } +} + +public class IArtifactTests +{ + [Fact] + public void TransitionState_ShouldInvokeWithCorrectParameters() + { + // Arrange + var mockState = new Mock(); + var mockEvent = new Mock(); + var mockArtifact = new Mock(); + + // Act + mockArtifact.Object.TransitionState(mockState.Object, mockEvent.Object); + + // Assert + mockArtifact.Verify(a => a.TransitionState(mockState.Object, mockEvent.Object), Times.Once); + } + + [Fact] + public void GetDescription_ShouldReturnExpectedValue() + { + // Arrange + var expectedDescription = "Test Description"; + var mockState = new Mock(); + var mockArtifact = new Mock(); + mockArtifact.Setup(a => a.GetDescription()).Returns(expectedDescription); + + // Act + var description = mockArtifact.Object.GetDescription(); + + // Assert + Assert.Equal(expectedDescription, description); + } + + [Fact] + public void ArtifactClassType_ShouldNotInheritBaseClassesInCoreAbstractNamespace() + { + // Arrange + var mockState = new Mock(); + var mockEvent = new Mock(); + var mockArtifact = new Mock(); + + + Console.WriteLine(mockArtifact.Object.GetType().Name); + //Assert + Assert.True(mockArtifact.Object is IArtifact); + Assert.False(mockState.Object is StateBase); + Assert.False(mockEvent.Object is StateLogEventBase); + } +} \ No newline at end of file diff --git a/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs b/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs index 1c89fe8d..32c32bdc 100644 --- a/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs +++ b/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs @@ -1,4 +1,6 @@ -using Aevatar.Core.Abstractions; +using Aevatar.Core.GAgentState; +using Aevatar.Agent.Abstractions; +using Aevatar.Core.Abstractions; namespace Aevatar.Core.Tests.TestArtifacts; @@ -34,7 +36,7 @@ public string TestMethod() return "Test"; } - public void TransitionState(MyArtifactGAgentState state, StateLogEventBase stateLogEvent) + public void TransitionState(IGAgentState state, IGAgentEventBase stateLogEvent) { /* custom logic */ } diff --git a/test/Aevatar.Core.Tests/TestGAgents/GroupGAgent.cs b/test/Aevatar.Core.Tests/TestGAgents/GroupGAgent.cs index 7f6e049d..802d0703 100644 --- a/test/Aevatar.Core.Tests/TestGAgents/GroupGAgent.cs +++ b/test/Aevatar.Core.Tests/TestGAgents/GroupGAgent.cs @@ -1,4 +1,5 @@ using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; namespace Aevatar.Core.Tests.TestGAgents; @@ -33,7 +34,7 @@ protected override Task OnUnregisterAgentAsync(GrainId agentGuid) return Task.CompletedTask; } - protected override void GAgentTransitionState(GroupGAgentState state, StateLogEventBase @event) + protected override void GAgentTransitionState(GroupGAgentState state, IGAgentEventBase @event) { if (@event is IncrementStateLogEvent) { diff --git a/test/Aevatar.Core.Tests/TestGAgents/SampleAIGAgent.cs b/test/Aevatar.Core.Tests/TestGAgents/SampleAIGAgent.cs index f38162d3..90eb7120 100644 --- a/test/Aevatar.Core.Tests/TestGAgents/SampleAIGAgent.cs +++ b/test/Aevatar.Core.Tests/TestGAgents/SampleAIGAgent.cs @@ -1,4 +1,5 @@ using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; using Microsoft.Extensions.Logging; namespace Aevatar.Core.Tests; @@ -40,7 +41,7 @@ public async Task PretendingChatAsync(string message) } protected override void GAgentTransitionState(SampleAIGAgentState state, - StateLogEventBase @event) + IGAgentEventBase @event) { if (@event is TokenUsageStateLogEvent tokenUsageStateLogEvent) { diff --git a/test/Aevatar.Core.Tests/TestGAgents/TestStateProjectionGAgent.cs b/test/Aevatar.Core.Tests/TestGAgents/TestStateProjectionGAgent.cs index 2b194bbc..9c55eea7 100644 --- a/test/Aevatar.Core.Tests/TestGAgents/TestStateProjectionGAgent.cs +++ b/test/Aevatar.Core.Tests/TestGAgents/TestStateProjectionGAgent.cs @@ -1,4 +1,5 @@ using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; namespace Aevatar.Core.Tests.TestGAgents; @@ -29,7 +30,7 @@ protected override async Task HandleStateAsync(StateWrapper pr await ConfirmEvents(); } - protected override void GAgentTransitionState(TestStateProjectionGAgentState state, StateLogEventBase @event) + protected override void GAgentTransitionState(TestStateProjectionGAgentState state, IGAgentEventBase @event) { if (@event is CallStateHandlerStateLogEvent) { diff --git a/test/Aevatar.Core.Tests/TestGAgents/TokenUsageProjectionGAgent.cs b/test/Aevatar.Core.Tests/TestGAgents/TokenUsageProjectionGAgent.cs index e05ddae3..c9ec252a 100644 --- a/test/Aevatar.Core.Tests/TestGAgents/TokenUsageProjectionGAgent.cs +++ b/test/Aevatar.Core.Tests/TestGAgents/TokenUsageProjectionGAgent.cs @@ -1,4 +1,5 @@ using Aevatar.Core.Abstractions; +using Aevatar.Agent.Abstractions; namespace Aevatar.Core.Tests; @@ -31,7 +32,7 @@ protected override async Task HandleStateAsync(StateWrapper await ConfirmEvents(); } - protected override void GAgentTransitionState(TokenUsageProjectionGAgentState state, StateLogEventBase @event) + protected override void GAgentTransitionState(TokenUsageProjectionGAgentState state, IGAgentEventBase @event) { if (@event is TokenUsageStateLogEvent tokenUsageStateLogEvent) { From 92c1e31edffc1a91a8e7c526549f207e208708fd Mon Sep 17 00:00:00 2001 From: Charles Xu Date: Wed, 2 Apr 2025 18:05:40 +0800 Subject: [PATCH 2/2] rename Aevatar.Core.GAgentState to Aevatar.Core.Artifact --- .../Aevatar.Core.Abstractions.csproj | 2 +- src/Aevatar.Core.Abstractions/IArtifactGAgent.cs | 2 +- src/Aevatar.Core.Abstractions/IGAgentFactory.cs | 2 +- .../Aevatar.Core.Artifact.csproj} | 0 .../IArtifact.cs | 2 +- src/Aevatar.Core/Aevatar.Core.csproj | 2 +- src/Aevatar.Core/ArtifactGAgent.cs | 2 +- src/Aevatar.Core/GAgentFactory.cs | 2 +- test/Aevatar.Core.Tests/IArtifactTest.cs | 4 ++-- test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) rename src/{Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj => Aevatar.Core.Artifact/Aevatar.Core.Artifact.csproj} (100%) rename src/{Aevatar.Core.GAgentState => Aevatar.Core.Artifact}/IArtifact.cs (90%) diff --git a/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj b/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj index 9a3fa9f1..da582ab2 100644 --- a/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj +++ b/src/Aevatar.Core.Abstractions/Aevatar.Core.Abstractions.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs b/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs index 8bae7faa..98087e78 100644 --- a/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs +++ b/src/Aevatar.Core.Abstractions/IArtifactGAgent.cs @@ -1,4 +1,4 @@ -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; namespace Aevatar.Core.Abstractions; diff --git a/src/Aevatar.Core.Abstractions/IGAgentFactory.cs b/src/Aevatar.Core.Abstractions/IGAgentFactory.cs index 331c4614..2af6dc08 100644 --- a/src/Aevatar.Core.Abstractions/IGAgentFactory.cs +++ b/src/Aevatar.Core.Abstractions/IGAgentFactory.cs @@ -1,4 +1,4 @@ -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; namespace Aevatar.Core.Abstractions; diff --git a/src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj b/src/Aevatar.Core.Artifact/Aevatar.Core.Artifact.csproj similarity index 100% rename from src/Aevatar.Core.GAgentState/Aevatar.Core.GAgentState.csproj rename to src/Aevatar.Core.Artifact/Aevatar.Core.Artifact.csproj diff --git a/src/Aevatar.Core.GAgentState/IArtifact.cs b/src/Aevatar.Core.Artifact/IArtifact.cs similarity index 90% rename from src/Aevatar.Core.GAgentState/IArtifact.cs rename to src/Aevatar.Core.Artifact/IArtifact.cs index f1b71820..32443db5 100644 --- a/src/Aevatar.Core.GAgentState/IArtifact.cs +++ b/src/Aevatar.Core.Artifact/IArtifact.cs @@ -1,6 +1,6 @@ using Aevatar.Agent.Abstractions; -namespace Aevatar.Core.GAgentState; +namespace Aevatar.Core.Artifact; public interface IArtifact where TState : IGAgentState diff --git a/src/Aevatar.Core/Aevatar.Core.csproj b/src/Aevatar.Core/Aevatar.Core.csproj index 89f77bd3..2284faec 100644 --- a/src/Aevatar.Core/Aevatar.Core.csproj +++ b/src/Aevatar.Core/Aevatar.Core.csproj @@ -23,7 +23,7 @@ - + diff --git a/src/Aevatar.Core/ArtifactGAgent.cs b/src/Aevatar.Core/ArtifactGAgent.cs index 7d3e5948..f24c003b 100644 --- a/src/Aevatar.Core/ArtifactGAgent.cs +++ b/src/Aevatar.Core/ArtifactGAgent.cs @@ -1,7 +1,7 @@ using System.Reflection; using Aevatar.Core.Abstractions; using Aevatar.Core.Abstractions.Exceptions; -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; using Aevatar.Agent.Abstractions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/src/Aevatar.Core/GAgentFactory.cs b/src/Aevatar.Core/GAgentFactory.cs index 6106cdad..60bbfb11 100644 --- a/src/Aevatar.Core/GAgentFactory.cs +++ b/src/Aevatar.Core/GAgentFactory.cs @@ -1,5 +1,5 @@ using Aevatar.Core.Abstractions; -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Orleans.Streams; diff --git a/test/Aevatar.Core.Tests/IArtifactTest.cs b/test/Aevatar.Core.Tests/IArtifactTest.cs index 00251d9d..280117e5 100644 --- a/test/Aevatar.Core.Tests/IArtifactTest.cs +++ b/test/Aevatar.Core.Tests/IArtifactTest.cs @@ -1,10 +1,10 @@ -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; using Aevatar.Agent.Abstractions; using Moq; using Xunit; using Aevatar.Core.Abstractions; -namespace Aevatar.Core.GAgentState.Tests; +namespace Aevatar.Core.Artifact.Tests; public class MockState : IGAgentState { diff --git a/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs b/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs index 32c32bdc..fe1ea65e 100644 --- a/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs +++ b/test/Aevatar.Core.Tests/TestArtifacts/MyArtifact.cs @@ -1,4 +1,4 @@ -using Aevatar.Core.GAgentState; +using Aevatar.Core.Artifact; using Aevatar.Agent.Abstractions; using Aevatar.Core.Abstractions;