* interim stash * interim stash * interim checkpoint * broken stash * whoops * merge sln files * fix a bunch of refactoring errors * moving more to core vs samples * interim * fixup the devteam sample * fix ci * fixup soln file * trying to fix ci * trying to fix ci * adding back * still trying * recreate * next step * adding it back * trying to fix * Rename Autogen -> AutoGen (#567) * Add transparency faqs (#566) * remove Autogen * add AutoGen back --------- Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com> --------- Co-authored-by: Xiaoyun Zhang <xiaoyuz@microsoft.com> Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>tags/v0.4.0.dev0
| @@ -1,4 +1,4 @@ | |||||
| name: '[AGNext nuget] Build and test' | |||||
| name: '[AutoGen nuget] Build and test' | |||||
| on: | on: | ||||
| workflow_call: | workflow_call: | ||||
| @@ -24,8 +24,8 @@ jobs: | |||||
| - name: Install .NET Aspire workload | - name: Install .NET Aspire workload | ||||
| run: dotnet workload install aspire | run: dotnet workload install aspire | ||||
| - name: Restore dependencies | - name: Restore dependencies | ||||
| run: dotnet restore | |||||
| run: dotnet restore AutoGen.sln | |||||
| - name: Build | - name: Build | ||||
| run: dotnet build --no-restore | |||||
| run: dotnet build AutoGen.sln | |||||
| - name: Test | - name: Test | ||||
| run: dotnet test --no-build --verbosity normal | |||||
| run: dotnet test --no-build --verbosity normal AutoGen.sln | |||||
| @@ -1,4 +1,4 @@ | |||||
| name: '[AGNext nuget] Publish nuget package' | |||||
| name: '[AutoGen nuget] Publish nuget package' | |||||
| on: | on: | ||||
| workflow_call: | workflow_call: | ||||
| @@ -31,5 +31,5 @@ jobs: | |||||
| - name: Publish package | - name: Publish package | ||||
| run: | | run: | | ||||
| cd dotnet/src/${{ inputs.path }} | cd dotnet/src/${{ inputs.path }} | ||||
| dotnet pack -o packages /p:PackageVersion=${{ inputs.version-prefix }}-alpha.${{ inputs.version-suffix }} | |||||
| dotnet pack -o packages /p:PackageVersion=${{ inputs.version-prefix }}-alpha.${{ inputs.version-suffix }} | |||||
| dotnet nuget push $GITHUB_WORKSPACE/dotnet/src/${{ inputs.path }}/packages/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json | dotnet nuget push $GITHUB_WORKSPACE/dotnet/src/${{ inputs.path }}/packages/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json | ||||
| @@ -1,4 +1,4 @@ | |||||
| name: '[AGNext nuget] Publish all packages' | |||||
| name: '[AutoGen nuget] Publish all packages' | |||||
| on: | on: | ||||
| push: | push: | ||||
| @@ -3,19 +3,19 @@ Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
| # Visual Studio Version 17 | # Visual Studio Version 17 | ||||
| VisualStudioVersion = 17.0.31903.59 | VisualStudioVersion = 17.0.31903.59 | ||||
| MinimumVisualStudioVersion = 10.0.40219.1 | MinimumVisualStudioVersion = 10.0.40219.1 | ||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B}" | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DC5E7967-F187-4E42-9B71-835E79501288}" | |||||
| EndProject | EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Client", "src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj", "{38494BE5-9E87-47E3-8439-D828FBAB0C7A}" | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Client", "src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj", "{687DA41E-83A6-418A-918B-8E2C20C6D1E3}" | |||||
| EndProject | EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Server", "src\Microsoft.AutoGen.Agents.Worker.Server\Microsoft.AutoGen.Agents.Worker.Server.csproj", "{6D11A33E-644C-47FC-B0C5-4697B9AE598E}" | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Server", "src\Microsoft.AutoGen.Agents.Worker.Server\Microsoft.AutoGen.Agents.Worker.Server.csproj", "{D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09}" | |||||
| EndProject | EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents", "src\Microsoft.AutoGen.Agents\Microsoft.AutoGen.Agents.csproj", "{A2864CB0-C745-4B59-8219-74AD403BC68F}" | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents", "src\Microsoft.AutoGen.Agents\Microsoft.AutoGen.Agents.csproj", "{E6171E39-6DE2-46C9-9978-E2F946530CBA}" | |||||
| EndProject | EndProject | ||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.AutoGen.Agents.Extensions", "Microsoft.AutoGen.Agents.Extensions", "{2AFA283F-345A-4E3D-BF60-FBD727B841BE}" | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.AutoGen.Agents.Extensions", "Microsoft.AutoGen.Agents.Extensions", "{2CF811BD-3513-4A1B-8020-645C0315CDB4}" | |||||
| EndProject | EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.CloudEvents", "src\Microsoft.AutoGen.Agents.Extensions\CloudEvents\Microsoft.AutoGen.Agents.Extensions.CloudEvents.csproj", "{286218DA-7A24-4EA1-9073-20B2E266511F}" | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.CloudEvents", "src\Microsoft.AutoGen.Agents.Extensions\CloudEvents\Microsoft.AutoGen.Agents.Extensions.CloudEvents.csproj", "{351CFFFB-6418-4C81-A697-BA24D1D43307}" | |||||
| EndProject | EndProject | ||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.SemanticKernel", "src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj", "{32E844CB-C1C5-4C44-9105-34A24EF76EE7}" | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.SemanticKernel", "src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj", "{2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9}" | |||||
| EndProject | EndProject | ||||
| Global | Global | ||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| @@ -26,33 +26,34 @@ Global | |||||
| HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
| EndGlobalSection | EndGlobalSection | ||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {687DA41E-83A6-418A-918B-8E2C20C6D1E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {687DA41E-83A6-418A-918B-8E2C20C6D1E3}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {687DA41E-83A6-418A-918B-8E2C20C6D1E3}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {687DA41E-83A6-418A-918B-8E2C20C6D1E3}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {E6171E39-6DE2-46C9-9978-E2F946530CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {E6171E39-6DE2-46C9-9978-E2F946530CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {E6171E39-6DE2-46C9-9978-E2F946530CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {E6171E39-6DE2-46C9-9978-E2F946530CBA}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {351CFFFB-6418-4C81-A697-BA24D1D43307}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {351CFFFB-6418-4C81-A697-BA24D1D43307}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {351CFFFB-6418-4C81-A697-BA24D1D43307}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {351CFFFB-6418-4C81-A697-BA24D1D43307}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| EndGlobalSection | EndGlobalSection | ||||
| GlobalSection(NestedProjects) = preSolution | GlobalSection(NestedProjects) = preSolution | ||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {2AFA283F-345A-4E3D-BF60-FBD727B841BE} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F} = {2AFA283F-345A-4E3D-BF60-FBD727B841BE} | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7} = {2AFA283F-345A-4E3D-BF60-FBD727B841BE} | |||||
| {687DA41E-83A6-418A-918B-8E2C20C6D1E3} = {DC5E7967-F187-4E42-9B71-835E79501288} | |||||
| {D4EC36E1-E197-47C2-A45A-CAAFEB6B9F09} = {DC5E7967-F187-4E42-9B71-835E79501288} | |||||
| {E6171E39-6DE2-46C9-9978-E2F946530CBA} = {DC5E7967-F187-4E42-9B71-835E79501288} | |||||
| {2CF811BD-3513-4A1B-8020-645C0315CDB4} = {DC5E7967-F187-4E42-9B71-835E79501288} | |||||
| {351CFFFB-6418-4C81-A697-BA24D1D43307} = {2CF811BD-3513-4A1B-8020-645C0315CDB4} | |||||
| {2E6E731B-2CFE-4F74-B3C4-EE0E2EF02FB9} = {2CF811BD-3513-4A1B-8020-645C0315CDB4} | |||||
| EndGlobalSection | EndGlobalSection | ||||
| EndGlobal | EndGlobal | ||||
| @@ -0,0 +1,181 @@ | |||||
| | |||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
| # Visual Studio Version 17 | |||||
| VisualStudioVersion = 17.0.31903.59 | |||||
| MinimumVisualStudioVersion = 10.0.40219.1 | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Client", "src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj", "{38494BE5-9E87-47E3-8439-D828FBAB0C7A}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Worker.Server", "src\Microsoft.AutoGen.Agents.Worker.Server\Microsoft.AutoGen.Agents.Worker.Server.csproj", "{6D11A33E-644C-47FC-B0C5-4697B9AE598E}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents", "src\Microsoft.AutoGen.Agents\Microsoft.AutoGen.Agents.csproj", "{A2864CB0-C745-4B59-8219-74AD403BC68F}" | |||||
| EndProject | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.AutoGen.Agents.Extensions", "Microsoft.AutoGen.Agents.Extensions", "{2AFA283F-345A-4E3D-BF60-FBD727B841BE}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.CloudEvents", "src\Microsoft.AutoGen.Agents.Extensions\CloudEvents\Microsoft.AutoGen.Agents.Extensions.CloudEvents.csproj", "{286218DA-7A24-4EA1-9073-20B2E266511F}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.AutoGen.Agents.Extensions.SemanticKernel", "src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj", "{32E844CB-C1C5-4C44-9105-34A24EF76EE7}" | |||||
| EndProject | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{65402BF3-B027-429E-9333-1473364928FF}" | |||||
| EndProject | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Greeter", "Greeter", "{74E89843-2FEA-4ED9-98C7-98771BA6F616}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greeter.AgentHost", "samples\Greeter\Greeter.AgentHost\Greeter.AgentHost.csproj", "{9B57C2B2-3395-4393-BB9F-702A9C8B0F67}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greeter.AgentWorker", "samples\Greeter\Greeter.AgentWorker\Greeter.AgentWorker.csproj", "{8D3D4AD7-9B0B-4BC7-B301-858B74F77D32}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greeter.AppHost", "samples\Greeter\Greeter.AppHost\Greeter.AppHost.csproj", "{5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Greeter.ServiceDefaults", "samples\Greeter\Greeter.ServiceDefaults\Greeter.ServiceDefaults.csproj", "{CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9}" | |||||
| EndProject | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HelloAgents", "HelloAgents", "{DB196600-333E-41F8-B441-3DF86F644551}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents", "samples\HelloAgents\HelloAgents.Agents\HelloAgents.csproj", "{573B378C-462D-4E00-91AB-F154E07763E8}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents.ApiService", "samples\HelloAgents\HelloAgents.ApiService\HelloAgents.ApiService.csproj", "{437B9B23-9D3D-45CF-A0C8-20506B6F8601}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents.AppHost", "samples\HelloAgents\HelloAgents.AppHost\HelloAgents.AppHost.csproj", "{7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents.ServiceDefaults", "samples\HelloAgents\HelloAgents.ServiceDefaults\HelloAgents.ServiceDefaults.csproj", "{B0120BE5-E934-4F25-ACDE-BE9570F8C8B0}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents.Web", "samples\HelloAgents\HelloAgents.Web\HelloAgents.Web.csproj", "{8F2D989B-D302-4DE4-8574-BBB525ACCB28}" | |||||
| EndProject | |||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dev-team", "dev-team", "{8CE37D11-9221-4274-98C0-F63F8E4CB711}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.AgentHost", "samples\dev-team\DevTeam.AgentHost\DevTeam.AgentHost.csproj", "{CEB2FAE6-4260-4DC9-8557-AAD982B41365}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.Agents", "samples\dev-team\DevTeam.Agents\DevTeam.Agents.csproj", "{ECD961B6-88D7-467E-AEAA-7530835C7551}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.AppHost", "samples\dev-team\DevTeam.AppHost\DevTeam.AppHost.csproj", "{E9E4500B-FE22-482C-AA70-FECDFB298891}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.Backend", "samples\dev-team\DevTeam.Backend\DevTeam.Backend.csproj", "{E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.ServiceDefaults", "samples\dev-team\DevTeam.ServiceDefaults\DevTeam.ServiceDefaults.csproj", "{4E6C9624-39E7-41B7-B40A-6C70190CE87A}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTeam.Shared", "samples\dev-team\DevTeam.Shared\DevTeam.Shared.csproj", "{388CDF50-75E6-40D7-B843-74FD853C4DCB}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "seed-memory", "samples\dev-team\seed-memory\seed-memory.csproj", "{4A74F7F1-989F-4740-BE2E-B04D9B288946}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Any CPU = Debug|Any CPU | |||||
| Release|Any CPU = Release|Any CPU | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {9B57C2B2-3395-4393-BB9F-702A9C8B0F67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {9B57C2B2-3395-4393-BB9F-702A9C8B0F67}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {9B57C2B2-3395-4393-BB9F-702A9C8B0F67}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {9B57C2B2-3395-4393-BB9F-702A9C8B0F67}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {8D3D4AD7-9B0B-4BC7-B301-858B74F77D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {8D3D4AD7-9B0B-4BC7-B301-858B74F77D32}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {8D3D4AD7-9B0B-4BC7-B301-858B74F77D32}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {8D3D4AD7-9B0B-4BC7-B301-858B74F77D32}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {573B378C-462D-4E00-91AB-F154E07763E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {573B378C-462D-4E00-91AB-F154E07763E8}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {573B378C-462D-4E00-91AB-F154E07763E8}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {573B378C-462D-4E00-91AB-F154E07763E8}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {437B9B23-9D3D-45CF-A0C8-20506B6F8601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {437B9B23-9D3D-45CF-A0C8-20506B6F8601}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {437B9B23-9D3D-45CF-A0C8-20506B6F8601}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {437B9B23-9D3D-45CF-A0C8-20506B6F8601}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {B0120BE5-E934-4F25-ACDE-BE9570F8C8B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {B0120BE5-E934-4F25-ACDE-BE9570F8C8B0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {B0120BE5-E934-4F25-ACDE-BE9570F8C8B0}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {B0120BE5-E934-4F25-ACDE-BE9570F8C8B0}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {8F2D989B-D302-4DE4-8574-BBB525ACCB28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {8F2D989B-D302-4DE4-8574-BBB525ACCB28}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {8F2D989B-D302-4DE4-8574-BBB525ACCB28}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {8F2D989B-D302-4DE4-8574-BBB525ACCB28}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {CEB2FAE6-4260-4DC9-8557-AAD982B41365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {CEB2FAE6-4260-4DC9-8557-AAD982B41365}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {CEB2FAE6-4260-4DC9-8557-AAD982B41365}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {CEB2FAE6-4260-4DC9-8557-AAD982B41365}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {ECD961B6-88D7-467E-AEAA-7530835C7551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {ECD961B6-88D7-467E-AEAA-7530835C7551}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {ECD961B6-88D7-467E-AEAA-7530835C7551}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {ECD961B6-88D7-467E-AEAA-7530835C7551}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {E9E4500B-FE22-482C-AA70-FECDFB298891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {E9E4500B-FE22-482C-AA70-FECDFB298891}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {E9E4500B-FE22-482C-AA70-FECDFB298891}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {E9E4500B-FE22-482C-AA70-FECDFB298891}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {4E6C9624-39E7-41B7-B40A-6C70190CE87A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {4E6C9624-39E7-41B7-B40A-6C70190CE87A}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {4E6C9624-39E7-41B7-B40A-6C70190CE87A}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {4E6C9624-39E7-41B7-B40A-6C70190CE87A}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {388CDF50-75E6-40D7-B843-74FD853C4DCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {388CDF50-75E6-40D7-B843-74FD853C4DCB}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {388CDF50-75E6-40D7-B843-74FD853C4DCB}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {388CDF50-75E6-40D7-B843-74FD853C4DCB}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {4A74F7F1-989F-4740-BE2E-B04D9B288946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {4A74F7F1-989F-4740-BE2E-B04D9B288946}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {4A74F7F1-989F-4740-BE2E-B04D9B288946}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {4A74F7F1-989F-4740-BE2E-B04D9B288946}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| EndGlobalSection | |||||
| GlobalSection(NestedProjects) = preSolution | |||||
| {38494BE5-9E87-47E3-8439-D828FBAB0C7A} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {6D11A33E-644C-47FC-B0C5-4697B9AE598E} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {A2864CB0-C745-4B59-8219-74AD403BC68F} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {2AFA283F-345A-4E3D-BF60-FBD727B841BE} = {9CFC5A2B-AE61-4840-9E1B-FC490EF4C99B} | |||||
| {286218DA-7A24-4EA1-9073-20B2E266511F} = {2AFA283F-345A-4E3D-BF60-FBD727B841BE} | |||||
| {32E844CB-C1C5-4C44-9105-34A24EF76EE7} = {2AFA283F-345A-4E3D-BF60-FBD727B841BE} | |||||
| {74E89843-2FEA-4ED9-98C7-98771BA6F616} = {65402BF3-B027-429E-9333-1473364928FF} | |||||
| {9B57C2B2-3395-4393-BB9F-702A9C8B0F67} = {74E89843-2FEA-4ED9-98C7-98771BA6F616} | |||||
| {8D3D4AD7-9B0B-4BC7-B301-858B74F77D32} = {74E89843-2FEA-4ED9-98C7-98771BA6F616} | |||||
| {5DC6D4E4-BBFD-4F92-8DC8-4793DF2F34BE} = {74E89843-2FEA-4ED9-98C7-98771BA6F616} | |||||
| {CC1CF4B0-05D6-464A-A3BA-F5D0076D7AA9} = {74E89843-2FEA-4ED9-98C7-98771BA6F616} | |||||
| {DB196600-333E-41F8-B441-3DF86F644551} = {65402BF3-B027-429E-9333-1473364928FF} | |||||
| {573B378C-462D-4E00-91AB-F154E07763E8} = {DB196600-333E-41F8-B441-3DF86F644551} | |||||
| {437B9B23-9D3D-45CF-A0C8-20506B6F8601} = {DB196600-333E-41F8-B441-3DF86F644551} | |||||
| {7F9B6CF5-4BFA-429B-A0FC-C66C488F33E3} = {DB196600-333E-41F8-B441-3DF86F644551} | |||||
| {B0120BE5-E934-4F25-ACDE-BE9570F8C8B0} = {DB196600-333E-41F8-B441-3DF86F644551} | |||||
| {8F2D989B-D302-4DE4-8574-BBB525ACCB28} = {DB196600-333E-41F8-B441-3DF86F644551} | |||||
| {8CE37D11-9221-4274-98C0-F63F8E4CB711} = {65402BF3-B027-429E-9333-1473364928FF} | |||||
| {CEB2FAE6-4260-4DC9-8557-AAD982B41365} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {ECD961B6-88D7-467E-AEAA-7530835C7551} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {E9E4500B-FE22-482C-AA70-FECDFB298891} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {E546DC7E-E4F1-430A-8B4C-F40D1FAF3CF0} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {4E6C9624-39E7-41B7-B40A-6C70190CE87A} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {388CDF50-75E6-40D7-B843-74FD853C4DCB} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| {4A74F7F1-989F-4740-BE2E-B04D9B288946} = {8CE37D11-9221-4274-98C0-F63F8E4CB711} | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,53 @@ | |||||
| using Microsoft.AutoGen.Agents.Abstractions; | |||||
| using Microsoft.AutoGen.Agents.Worker.Client; | |||||
| using Microsoft.SemanticKernel; | |||||
| using Microsoft.SemanticKernel.Memory; | |||||
| namespace HelloAgents.Agents; | |||||
| [TopicSubscription("HelloAgents")] | |||||
| public class HelloAgent(IAgentContext context, Kernel kernel, ISemanticTextMemory memory, [FromKeyedServices("EventTypes")] EventTypes typeRegistry, ILogger<HelloAgent> logger) | |||||
| : AiAgent<HelloAgentState>(context, memory, kernel, typeRegistry), ISayHello, | |||||
| IHandle<NewMessageReceived>, | |||||
| IHandle<ConversationClosed> | |||||
| { | |||||
| public async Task Handle(NewMessageReceived item) | |||||
| { | |||||
| var response = await SayHello(item.Message); | |||||
| var evt = new ResponseGenerated | |||||
| { | |||||
| Response = response | |||||
| }.ToCloudEvent(this.AgentId.Key); | |||||
| await PublishEvent(evt); | |||||
| } | |||||
| public async Task Handle(ConversationClosed item) | |||||
| { | |||||
| //TODO: Get msg from state | |||||
| var goodbye = ""; // _state.State.History.Last().Message | |||||
| var evt = new GoodBye | |||||
| { | |||||
| Message = goodbye | |||||
| }.ToCloudEvent(this.AgentId.Key); | |||||
| await PublishEvent(evt); | |||||
| } | |||||
| public async Task<string> SayHello(string ask) | |||||
| { | |||||
| try | |||||
| { | |||||
| var context = new KernelArguments { ["input"] = AppendChatHistory(ask) }; | |||||
| return await CallFunction(HelloSkills.Greeting, context); | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| logger.LogError(ex, "Error generating code"); | |||||
| return ""; | |||||
| } | |||||
| } | |||||
| } | |||||
| public interface ISayHello | |||||
| { | |||||
| public Task<string> SayHello(string ask); | |||||
| } | |||||
| @@ -0,0 +1,19 @@ | |||||
| namespace HelloAgents.Agents; | |||||
| public static class HelloSkills | |||||
| { | |||||
| public const string Greeting = """ | |||||
| You are a Hello Agent. | |||||
| Please output a greeting message that you would like to send to the user. | |||||
| Try to include a pun in your greeting. | |||||
| You may incorporate the user's input into your reply if you wish. | |||||
| Input: {{$input}} | |||||
| """; | |||||
| public const string Farewell = """ | |||||
| You are a Hello Agent. | |||||
| Please output a farewell message that you would like to send to the user. | |||||
| Try to include a quote related to goodbyes. | |||||
| You may incorporate the user's input into your reply if you wish. | |||||
| Input: {{$input}} | |||||
| """; | |||||
| } | |||||
| @@ -0,0 +1,18 @@ | |||||
| using HelloAgents.Agents; | |||||
| using Microsoft.AutoGen.Agents.Worker.Client; | |||||
| using Microsoft.AutoGen.Agents.Extensions.SemanticKernel; | |||||
| var builder = WebApplication.CreateBuilder(args); | |||||
| builder.AddServiceDefaults(); | |||||
| builder.ConfigureSemanticKernel(); | |||||
| builder.AddAgentWorker(builder.Configuration["AGENT_HOST"]!) | |||||
| .AddAgent<HelloAgent>(nameof(HelloAgent)); | |||||
| var app = builder.Build(); | |||||
| app.MapDefaultEndpoints(); | |||||
| app.Run(); | |||||
| @@ -0,0 +1,25 @@ | |||||
| syntax = "proto3"; | |||||
| package helloagents; | |||||
| option csharp_namespace = "HelloAgents.Agents"; | |||||
| message NewMessageReceived { | |||||
| string message = 1; | |||||
| } | |||||
| message ResponseGenerated { | |||||
| string response = 1; | |||||
| } | |||||
| message GoodBye { | |||||
| string message = 1; | |||||
| } | |||||
| message MessageStored { | |||||
| string message = 1; | |||||
| } | |||||
| message ConversationClosed { | |||||
| string user_id = 1; | |||||
| string user_message = 2; | |||||
| } | |||||
| @@ -0,0 +1,9 @@ | |||||
| syntax = "proto3"; | |||||
| package devteam; | |||||
| option csharp_namespace = "HelloAgents.Agents"; | |||||
| message HelloAgentState { | |||||
| string understanding = 1; | |||||
| } | |||||
| @@ -0,0 +1,36 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | |||||
| <PropertyGroup> | |||||
| <TargetFramework>net8.0</TargetFramework> | |||||
| <Nullable>enable</Nullable> | |||||
| <ImplicitUsings>enable</ImplicitUsings> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <PackageReference Include="Azure.AI.OpenAI" /> | |||||
| <PackageReference Include="Microsoft.SemanticKernel" /> | |||||
| <PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" /> | |||||
| <PackageReference Include="Microsoft.SemanticKernel.Plugins.Memory" /> | |||||
| <PackageReference Include="Google.Protobuf" /> | |||||
| <PackageReference Include="Grpc.Tools" PrivateAssets="All" /> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <Protobuf Include="Agents\Protos\messages.proto" Link="Protos\messages.proto" /> | |||||
| <Protobuf Include="Agents\Protos\states.proto" Link="Protos\states.proto" /> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <ProjectReference Include="..\HelloAgents.ServiceDefaults\HelloAgents.ServiceDefaults.csproj" /> | |||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj" /> | |||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents\Microsoft.AutoGen.Agents.csproj" /> | |||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj" /> | |||||
| </ItemGroup> | |||||
| </Project> | |||||
| @@ -0,0 +1,13 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | |||||
| <PropertyGroup> | |||||
| <TargetFramework>net8.0</TargetFramework> | |||||
| <ImplicitUsings>enable</ImplicitUsings> | |||||
| <Nullable>enable</Nullable> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <ProjectReference Include="..\HelloAgents.ServiceDefaults\HelloAgents.ServiceDefaults.csproj" /> | |||||
| </ItemGroup> | |||||
| </Project> | |||||
| @@ -0,0 +1,43 @@ | |||||
| var builder = WebApplication.CreateBuilder(args); | |||||
| // Add service defaults & Aspire components. | |||||
| builder.AddServiceDefaults(); | |||||
| // Add services to the container. | |||||
| builder.Services.AddProblemDetails(); | |||||
| var app = builder.Build(); | |||||
| // Configure the HTTP request pipeline. | |||||
| app.UseExceptionHandler(); | |||||
| var summaries = new[] | |||||
| { | |||||
| "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" | |||||
| }; | |||||
| app.MapGet("/agents", () => | |||||
| { | |||||
| // here is where we call an agent | |||||
| var result = Enumerable.Range(1, 5).Select(index => | |||||
| new AgentOutputRecord | |||||
| ( | |||||
| Date: DateTime.Now.AddDays(index), | |||||
| Content: $"AgentResult {DateTime.Now.AddDays(index):d}", | |||||
| Summary: summaries[DateTime.Now.AddDays(index).DayOfYear % summaries.Length] | |||||
| )) | |||||
| .ToArray(); | |||||
| return result; | |||||
| }); | |||||
| app.MapDefaultEndpoints(); | |||||
| app.Run(); | |||||
| public record AgentOutputRecord(DateTime Date, string Content, string? Summary) | |||||
| { | |||||
| public string DisplayDate => Date.ToString("d"); | |||||
| public string DisplayContent => Content; | |||||
| public string DisplaySummary => Summary ?? "No summary"; | |||||
| } | |||||
| @@ -0,0 +1,25 @@ | |||||
| { | |||||
| "$schema": "https://json.schemastore.org/launchsettings.json", | |||||
| "profiles": { | |||||
| "http": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "launchUrl": "/agents", | |||||
| "applicationUrl": "http://localhost:5538", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development" | |||||
| } | |||||
| }, | |||||
| "https": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "launchUrl": "/agents", | |||||
| "applicationUrl": "https://localhost:7348;http://localhost:5538", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development" | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| { | |||||
| "Logging": { | |||||
| "LogLevel": { | |||||
| "Default": "Information", | |||||
| "Microsoft.AspNetCore": "Warning" | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,21 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk"> | |||||
| <PropertyGroup> | |||||
| <OutputType>Exe</OutputType> | |||||
| <TargetFramework>net8.0</TargetFramework> | |||||
| <ImplicitUsings>enable</ImplicitUsings> | |||||
| <Nullable>enable</Nullable> | |||||
| <IsAspireHost>true</IsAspireHost> | |||||
| <UserSecretsId>5b7c44a7-fac9-4b18-910e-e580c1c63f8a</UserSecretsId> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <ProjectReference Include="..\HelloAgents.ApiService\HelloAgents.ApiService.csproj" /> | |||||
| <ProjectReference Include="..\HelloAgents.Web\HelloAgents.Web.csproj" /> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <PackageReference Include="Aspire.Hosting.AppHost"/> | |||||
| </ItemGroup> | |||||
| </Project> | |||||
| @@ -0,0 +1,9 @@ | |||||
| var builder = DistributedApplication.CreateBuilder(args); | |||||
| var apiService = builder.AddProject<Projects.HelloAgents_ApiService>("apiservice"); | |||||
| builder.AddProject<Projects.HelloAgents_Web>("webfrontend") | |||||
| .WithExternalHttpEndpoints() | |||||
| .WithReference(apiService); | |||||
| builder.Build().Run(); | |||||
| @@ -0,0 +1,29 @@ | |||||
| { | |||||
| "$schema": "https://json.schemastore.org/launchsettings.json", | |||||
| "profiles": { | |||||
| "https": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "applicationUrl": "https://localhost:17060;http://localhost:15238", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development", | |||||
| "DOTNET_ENVIRONMENT": "Development", | |||||
| "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21245", | |||||
| "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22191" | |||||
| } | |||||
| }, | |||||
| "http": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "applicationUrl": "http://localhost:15238", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development", | |||||
| "DOTNET_ENVIRONMENT": "Development", | |||||
| "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19231", | |||||
| "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20141" | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| { | |||||
| "Logging": { | |||||
| "LogLevel": { | |||||
| "Default": "Information", | |||||
| "Microsoft.AspNetCore": "Warning" | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,111 @@ | |||||
| using Microsoft.AspNetCore.Builder; | |||||
| using Microsoft.AspNetCore.Diagnostics.HealthChecks; | |||||
| using Microsoft.Extensions.DependencyInjection; | |||||
| using Microsoft.Extensions.Diagnostics.HealthChecks; | |||||
| using Microsoft.Extensions.Logging; | |||||
| using OpenTelemetry; | |||||
| using OpenTelemetry.Metrics; | |||||
| using OpenTelemetry.Trace; | |||||
| namespace Microsoft.Extensions.Hosting; | |||||
| // Adds common .NET Aspire services: service discovery, resilience, health checks, and OpenTelemetry. | |||||
| // This project should be referenced by each service project in your solution. | |||||
| // To learn more about using this project, see https://aka.ms/dotnet/aspire/service-defaults | |||||
| public static class Extensions | |||||
| { | |||||
| public static IHostApplicationBuilder AddServiceDefaults(this IHostApplicationBuilder builder) | |||||
| { | |||||
| builder.ConfigureOpenTelemetry(); | |||||
| builder.AddDefaultHealthChecks(); | |||||
| builder.Services.AddServiceDiscovery(); | |||||
| builder.Services.ConfigureHttpClientDefaults(http => | |||||
| { | |||||
| // Turn on resilience by default | |||||
| http.AddStandardResilienceHandler(); | |||||
| // Turn on service discovery by default | |||||
| http.AddServiceDiscovery(); | |||||
| }); | |||||
| return builder; | |||||
| } | |||||
| public static IHostApplicationBuilder ConfigureOpenTelemetry(this IHostApplicationBuilder builder) | |||||
| { | |||||
| builder.Logging.AddOpenTelemetry(logging => | |||||
| { | |||||
| logging.IncludeFormattedMessage = true; | |||||
| logging.IncludeScopes = true; | |||||
| }); | |||||
| builder.Services.AddOpenTelemetry() | |||||
| .WithMetrics(metrics => | |||||
| { | |||||
| metrics.AddAspNetCoreInstrumentation() | |||||
| .AddHttpClientInstrumentation() | |||||
| .AddRuntimeInstrumentation(); | |||||
| }) | |||||
| .WithTracing(tracing => | |||||
| { | |||||
| tracing.AddAspNetCoreInstrumentation() | |||||
| // Uncomment the following line to enable gRPC instrumentation (requires the OpenTelemetry.Instrumentation.GrpcNetClient package) | |||||
| //.AddGrpcClientInstrumentation() | |||||
| .AddHttpClientInstrumentation(); | |||||
| }); | |||||
| builder.AddOpenTelemetryExporters(); | |||||
| return builder; | |||||
| } | |||||
| private static IHostApplicationBuilder AddOpenTelemetryExporters(this IHostApplicationBuilder builder) | |||||
| { | |||||
| var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]); | |||||
| if (useOtlpExporter) | |||||
| { | |||||
| builder.Services.AddOpenTelemetry().UseOtlpExporter(); | |||||
| } | |||||
| // Uncomment the following lines to enable the Azure Monitor exporter (requires the Azure.Monitor.OpenTelemetry.AspNetCore package) | |||||
| //if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"])) | |||||
| //{ | |||||
| // builder.Services.AddOpenTelemetry() | |||||
| // .UseAzureMonitor(); | |||||
| //} | |||||
| return builder; | |||||
| } | |||||
| public static IHostApplicationBuilder AddDefaultHealthChecks(this IHostApplicationBuilder builder) | |||||
| { | |||||
| builder.Services.AddHealthChecks() | |||||
| // Add a default liveness check to ensure app is responsive | |||||
| .AddCheck("self", () => HealthCheckResult.Healthy(), ["live"]); | |||||
| return builder; | |||||
| } | |||||
| public static WebApplication MapDefaultEndpoints(this WebApplication app) | |||||
| { | |||||
| // Adding health checks endpoints to applications in non-development environments has security implications. | |||||
| // See https://aka.ms/dotnet/aspire/healthchecks for details before enabling these endpoints in non-development environments. | |||||
| if (app.Environment.IsDevelopment()) | |||||
| { | |||||
| // All health checks must pass for app to be considered ready to accept traffic after starting | |||||
| app.MapHealthChecks("/health"); | |||||
| // Only health checks tagged with the "live" tag must pass for app to be considered alive | |||||
| app.MapHealthChecks("/alive", new HealthCheckOptions | |||||
| { | |||||
| Predicate = r => r.Tags.Contains("live") | |||||
| }); | |||||
| } | |||||
| return app; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,22 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk"> | |||||
| <PropertyGroup> | |||||
| <TargetFramework>net8.0</TargetFramework> | |||||
| <ImplicitUsings>enable</ImplicitUsings> | |||||
| <Nullable>enable</Nullable> | |||||
| <IsAspireSharedProject>true</IsAspireSharedProject> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <FrameworkReference Include="Microsoft.AspNetCore.App" /> | |||||
| <PackageReference Include="Microsoft.Extensions.Http.Resilience"/> | |||||
| <PackageReference Include="Microsoft.Extensions.ServiceDiscovery"/> | |||||
| <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol"/> | |||||
| <PackageReference Include="OpenTelemetry.Extensions.Hosting"/> | |||||
| <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore"/> | |||||
| <PackageReference Include="OpenTelemetry.Instrumentation.Http"/> | |||||
| <PackageReference Include="OpenTelemetry.Instrumentation.Runtime"/> | |||||
| </ItemGroup> | |||||
| </Project> | |||||
| @@ -0,0 +1,31 @@ | |||||
| namespace HelloAgents.Web; | |||||
| public class AgentAPIClient(HttpClient httpClient) | |||||
| { | |||||
| public async Task<AgentOutputRecord[]> GetAgentResultAsync(int maxItems = 10, CancellationToken cancellationToken = default) | |||||
| { | |||||
| List<AgentOutputRecord>? forecasts = null; | |||||
| await foreach (var forecast in httpClient.GetFromJsonAsAsyncEnumerable<AgentOutputRecord>("/agents", cancellationToken)) | |||||
| { | |||||
| if (forecasts?.Count >= maxItems) | |||||
| { | |||||
| break; | |||||
| } | |||||
| if (forecast is not null) | |||||
| { | |||||
| forecasts ??= []; | |||||
| forecasts.Add(forecast); | |||||
| } | |||||
| } | |||||
| return forecasts?.ToArray() ?? []; | |||||
| } | |||||
| } | |||||
| public record AgentOutputRecord(DateTime Date, string Content, string? Summary) | |||||
| { | |||||
| public string DisplayDate => Date.ToString("d"); | |||||
| public string DisplayContent => Content; | |||||
| public string DisplaySummary => Summary ?? "No summary"; | |||||
| } | |||||
| @@ -0,0 +1,20 @@ | |||||
| <!DOCTYPE html> | |||||
| <html lang="en"> | |||||
| <head> | |||||
| <meta charset="utf-8" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <base href="/" /> | |||||
| <link rel="stylesheet" href="bootstrap/bootstrap.min.css" /> | |||||
| <link rel="stylesheet" href="app.css" /> | |||||
| <link rel="stylesheet" href="HelloAgents.Web.styles.css" /> | |||||
| <link rel="icon" type="image/png" href="favicon.png" /> | |||||
| <HeadOutlet /> | |||||
| </head> | |||||
| <body> | |||||
| <Routes /> | |||||
| <script src="_framework/blazor.web.js"></script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,23 @@ | |||||
| @inherits LayoutComponentBase | |||||
| <div class="page"> | |||||
| <div class="sidebar"> | |||||
| <NavMenu /> | |||||
| </div> | |||||
| <main> | |||||
| <div class="top-row px-4"> | |||||
| <a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a> | |||||
| </div> | |||||
| <article class="content px-4"> | |||||
| @Body | |||||
| </article> | |||||
| </main> | |||||
| </div> | |||||
| <div id="blazor-error-ui"> | |||||
| An unhandled error has occurred. | |||||
| <a href="" class="reload">Reload</a> | |||||
| <a class="dismiss">🗙</a> | |||||
| </div> | |||||
| @@ -0,0 +1,96 @@ | |||||
| .page { | |||||
| position: relative; | |||||
| display: flex; | |||||
| flex-direction: column; | |||||
| } | |||||
| main { | |||||
| flex: 1; | |||||
| } | |||||
| .sidebar { | |||||
| background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); | |||||
| } | |||||
| .top-row { | |||||
| background-color: #f7f7f7; | |||||
| border-bottom: 1px solid #d6d5d5; | |||||
| justify-content: flex-end; | |||||
| height: 3.5rem; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| .top-row ::deep a, .top-row ::deep .btn-link { | |||||
| white-space: nowrap; | |||||
| margin-left: 1.5rem; | |||||
| text-decoration: none; | |||||
| } | |||||
| .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { | |||||
| text-decoration: underline; | |||||
| } | |||||
| .top-row ::deep a:first-child { | |||||
| overflow: hidden; | |||||
| text-overflow: ellipsis; | |||||
| } | |||||
| @media (max-width: 640.98px) { | |||||
| .top-row { | |||||
| justify-content: space-between; | |||||
| } | |||||
| .top-row ::deep a, .top-row ::deep .btn-link { | |||||
| margin-left: 0; | |||||
| } | |||||
| } | |||||
| @media (min-width: 641px) { | |||||
| .page { | |||||
| flex-direction: row; | |||||
| } | |||||
| .sidebar { | |||||
| width: 250px; | |||||
| height: 100vh; | |||||
| position: sticky; | |||||
| top: 0; | |||||
| } | |||||
| .top-row { | |||||
| position: sticky; | |||||
| top: 0; | |||||
| z-index: 1; | |||||
| } | |||||
| .top-row.auth ::deep a:first-child { | |||||
| flex: 1; | |||||
| text-align: right; | |||||
| width: 0; | |||||
| } | |||||
| .top-row, article { | |||||
| padding-left: 2rem !important; | |||||
| padding-right: 1.5rem !important; | |||||
| } | |||||
| } | |||||
| #blazor-error-ui { | |||||
| background: lightyellow; | |||||
| bottom: 0; | |||||
| box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); | |||||
| display: none; | |||||
| left: 0; | |||||
| padding: 0.6rem 1.25rem 0.7rem 1.25rem; | |||||
| position: fixed; | |||||
| width: 100%; | |||||
| z-index: 1000; | |||||
| } | |||||
| #blazor-error-ui .dismiss { | |||||
| cursor: pointer; | |||||
| position: absolute; | |||||
| right: 0.75rem; | |||||
| top: 0.5rem; | |||||
| } | |||||
| @@ -0,0 +1,29 @@ | |||||
| <div class="top-row ps-3 navbar navbar-dark"> | |||||
| <div class="container-fluid"> | |||||
| <a class="navbar-brand" href="">HelloAgents</a> | |||||
| </div> | |||||
| </div> | |||||
| <input type="checkbox" title="Navigation menu" class="navbar-toggler" /> | |||||
| <div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()"> | |||||
| <nav class="flex-column"> | |||||
| <div class="nav-item px-3"> | |||||
| <NavLink class="nav-link" href="" Match="NavLinkMatch.All"> | |||||
| <span class="bi bi-house-door-fill" aria-hidden="true"></span> Home | |||||
| </NavLink> | |||||
| </div> | |||||
| <div class="nav-item px-3"> | |||||
| <NavLink class="nav-link" href="counter"> | |||||
| <span class="bi bi-plus-square-fill" aria-hidden="true"></span> Counter | |||||
| </NavLink> | |||||
| </div> | |||||
| <div class="nav-item px-3"> | |||||
| <NavLink class="nav-link" href="agents"> | |||||
| <span class="bi bi-list-nested" aria-hidden="true"></span> Agents | |||||
| </NavLink> | |||||
| </div> | |||||
| </nav> | |||||
| </div> | |||||
| @@ -0,0 +1,102 @@ | |||||
| .navbar-toggler { | |||||
| appearance: none; | |||||
| cursor: pointer; | |||||
| width: 3.5rem; | |||||
| height: 2.5rem; | |||||
| color: white; | |||||
| position: absolute; | |||||
| top: 0.5rem; | |||||
| right: 1rem; | |||||
| border: 1px solid rgba(255, 255, 255, 0.1); | |||||
| background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1); | |||||
| } | |||||
| .navbar-toggler:checked { | |||||
| background-color: rgba(255, 255, 255, 0.5); | |||||
| } | |||||
| .top-row { | |||||
| height: 3.5rem; | |||||
| background-color: rgba(0,0,0,0.4); | |||||
| } | |||||
| .navbar-brand { | |||||
| font-size: 1.1rem; | |||||
| } | |||||
| .bi { | |||||
| display: inline-block; | |||||
| position: relative; | |||||
| width: 1.25rem; | |||||
| height: 1.25rem; | |||||
| margin-right: 0.75rem; | |||||
| top: -1px; | |||||
| background-size: cover; | |||||
| } | |||||
| .bi-house-door-fill { | |||||
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); | |||||
| } | |||||
| .bi-plus-square-fill { | |||||
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); | |||||
| } | |||||
| .bi-list-nested { | |||||
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); | |||||
| } | |||||
| .nav-item { | |||||
| font-size: 0.9rem; | |||||
| padding-bottom: 0.5rem; | |||||
| } | |||||
| .nav-item:first-of-type { | |||||
| padding-top: 1rem; | |||||
| } | |||||
| .nav-item:last-of-type { | |||||
| padding-bottom: 1rem; | |||||
| } | |||||
| .nav-item ::deep a { | |||||
| color: #d7d7d7; | |||||
| border-radius: 4px; | |||||
| height: 3rem; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| line-height: 3rem; | |||||
| } | |||||
| .nav-item ::deep a.active { | |||||
| background-color: rgba(255,255,255,0.37); | |||||
| color: white; | |||||
| } | |||||
| .nav-item ::deep a:hover { | |||||
| background-color: rgba(255,255,255,0.1); | |||||
| color: white; | |||||
| } | |||||
| .nav-scrollable { | |||||
| display: none; | |||||
| } | |||||
| .navbar-toggler:checked ~ .nav-scrollable { | |||||
| display: block; | |||||
| } | |||||
| @media (min-width: 641px) { | |||||
| .navbar-toggler { | |||||
| display: none; | |||||
| } | |||||
| .nav-scrollable { | |||||
| /* Never collapse the sidebar for wide screens */ | |||||
| display: block; | |||||
| /* Allow sidebar to scroll for tall menus */ | |||||
| height: calc(100vh - 3.5rem); | |||||
| overflow-y: auto; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,47 @@ | |||||
| @page "/agents" | |||||
| @attribute [StreamRendering(true)] | |||||
| @attribute [OutputCache(Duration = 5)] | |||||
| @inject AgentAPIClient AgentApi | |||||
| <PageTitle>Agents</PageTitle> | |||||
| <h1>Agents</h1> | |||||
| <p>This component demonstrates showing data loaded from a backend API service.</p> | |||||
| @if (results == null) | |||||
| { | |||||
| <p><em>Loading...</em></p> | |||||
| } | |||||
| else | |||||
| { | |||||
| <table class="table"> | |||||
| <thead> | |||||
| <tr> | |||||
| <th>Date</th> | |||||
| <th>Temp. (F)</th> | |||||
| <th>Summary</th> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| @foreach (var result in results) | |||||
| { | |||||
| <tr> | |||||
| <td>@result.Date.ToShortDateString()</td> | |||||
| <td>@result.Summary</td> | |||||
| <td>@result.Content</td> | |||||
| </tr> | |||||
| } | |||||
| </tbody> | |||||
| </table> | |||||
| } | |||||
| @code { | |||||
| private AgentOutputRecord[]? results; | |||||
| protected override async Task OnInitializedAsync() | |||||
| { | |||||
| results = await AgentApi.GetAgentResultAsync(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,19 @@ | |||||
| @page "/counter" | |||||
| @rendermode InteractiveServer | |||||
| <PageTitle>Counter</PageTitle> | |||||
| <h1>Counter</h1> | |||||
| <p role="status">Current count: @currentCount</p> | |||||
| <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> | |||||
| @code { | |||||
| private int currentCount = 0; | |||||
| private void IncrementCount() | |||||
| { | |||||
| currentCount++; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,38 @@ | |||||
| @page "/Error" | |||||
| @using System.Diagnostics | |||||
| <PageTitle>Error</PageTitle> | |||||
| <h1 class="text-danger">Error.</h1> | |||||
| <h2 class="text-danger">An error occurred while processing your request.</h2> | |||||
| @if (ShowRequestId) | |||||
| { | |||||
| <p> | |||||
| <strong>Request ID:</strong> <code>@requestId</code> | |||||
| </p> | |||||
| } | |||||
| <h3>Development Mode</h3> | |||||
| <p> | |||||
| Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred. | |||||
| </p> | |||||
| <p> | |||||
| <strong>The Development environment shouldn't be enabled for deployed applications.</strong> | |||||
| It can result in displaying sensitive information from exceptions to end users. | |||||
| For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong> | |||||
| and restarting the app. | |||||
| </p> | |||||
| @code{ | |||||
| [CascadingParameter] | |||||
| public HttpContext? HttpContext { get; set; } | |||||
| private string? requestId; | |||||
| private bool ShowRequestId => !string.IsNullOrEmpty(requestId); | |||||
| protected override void OnInitialized() | |||||
| { | |||||
| requestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,7 @@ | |||||
| @page "/" | |||||
| <PageTitle>Home</PageTitle> | |||||
| <h1>Hello, world!</h1> | |||||
| Welcome to your new app. | |||||
| @@ -0,0 +1,6 @@ | |||||
| <Router AppAssembly="@typeof(Program).Assembly"> | |||||
| <Found Context="routeData"> | |||||
| <RouteView RouteData="@routeData" DefaultLayout="@typeof(Layout.MainLayout)" /> | |||||
| <FocusOnNavigate RouteData="@routeData" Selector="h1" /> | |||||
| </Found> | |||||
| </Router> | |||||
| @@ -0,0 +1,11 @@ | |||||
| @using System.Net.Http | |||||
| @using System.Net.Http.Json | |||||
| @using Microsoft.AspNetCore.Components.Forms | |||||
| @using Microsoft.AspNetCore.Components.Routing | |||||
| @using Microsoft.AspNetCore.Components.Web | |||||
| @using static Microsoft.AspNetCore.Components.Web.RenderMode | |||||
| @using Microsoft.AspNetCore.Components.Web.Virtualization | |||||
| @using Microsoft.AspNetCore.OutputCaching | |||||
| @using Microsoft.JSInterop | |||||
| @using HelloAgents.Web | |||||
| @using HelloAgents.Web.Components | |||||
| @@ -0,0 +1,13 @@ | |||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | |||||
| <PropertyGroup> | |||||
| <TargetFramework>net8.0</TargetFramework> | |||||
| <ImplicitUsings>enable</ImplicitUsings> | |||||
| <Nullable>enable</Nullable> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <ProjectReference Include="..\HelloAgents.ServiceDefaults\HelloAgents.ServiceDefaults.csproj" /> | |||||
| </ItemGroup> | |||||
| </Project> | |||||
| @@ -0,0 +1,43 @@ | |||||
| using HelloAgents.Web; | |||||
| using HelloAgents.Web.Components; | |||||
| var builder = WebApplication.CreateBuilder(args); | |||||
| // Add service defaults & Aspire components. | |||||
| builder.AddServiceDefaults(); | |||||
| // Add services to the container. | |||||
| builder.Services.AddRazorComponents() | |||||
| .AddInteractiveServerComponents(); | |||||
| builder.Services.AddOutputCache(); | |||||
| builder.Services.AddHttpClient<AgentAPIClient>(client => | |||||
| { | |||||
| // This URL uses "https+http://" to indicate HTTPS is preferred over HTTP. | |||||
| // Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes. | |||||
| client.BaseAddress = new("https+http://apiservice"); | |||||
| }); | |||||
| var app = builder.Build(); | |||||
| if (!app.Environment.IsDevelopment()) | |||||
| { | |||||
| app.UseExceptionHandler("/Error", createScopeForErrors: true); | |||||
| // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. | |||||
| app.UseHsts(); | |||||
| } | |||||
| app.UseHttpsRedirection(); | |||||
| app.UseStaticFiles(); | |||||
| app.UseAntiforgery(); | |||||
| app.UseOutputCache(); | |||||
| app.MapRazorComponents<App>() | |||||
| .AddInteractiveServerRenderMode(); | |||||
| app.MapDefaultEndpoints(); | |||||
| app.Run(); | |||||
| @@ -0,0 +1,23 @@ | |||||
| { | |||||
| "$schema": "https://json.schemastore.org/launchsettings.json", | |||||
| "profiles": { | |||||
| "http": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "applicationUrl": "http://localhost:5277", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development" | |||||
| } | |||||
| }, | |||||
| "https": { | |||||
| "commandName": "Project", | |||||
| "dotnetRunMessages": true, | |||||
| "launchBrowser": true, | |||||
| "applicationUrl": "https://localhost:7170;http://localhost:5277", | |||||
| "environmentVariables": { | |||||
| "ASPNETCORE_ENVIRONMENT": "Development" | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| { | |||||
| "Logging": { | |||||
| "LogLevel": { | |||||
| "Default": "Information", | |||||
| "Microsoft.AspNetCore": "Warning" | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,47 @@ | |||||
| html, body { | |||||
| font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; | |||||
| } | |||||
| a, .btn-link { | |||||
| color: #006bb7; | |||||
| } | |||||
| .btn-primary { | |||||
| color: #fff; | |||||
| background-color: #1b6ec2; | |||||
| border-color: #1861ac; | |||||
| } | |||||
| .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { | |||||
| box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; | |||||
| } | |||||
| .content { | |||||
| padding-top: 1.1rem; | |||||
| } | |||||
| h1:focus { | |||||
| outline: none; | |||||
| } | |||||
| .valid.modified:not([type=checkbox]) { | |||||
| outline: 1px solid #26b050; | |||||
| } | |||||
| .invalid { | |||||
| outline: 1px solid #e52770; | |||||
| } | |||||
| .validation-message { | |||||
| color: #e52770; | |||||
| } | |||||
| .blazor-error-boundary { | |||||
| background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; | |||||
| padding: 1rem 1rem 1rem 3.7rem; | |||||
| color: white; | |||||
| } | |||||
| .blazor-error-boundary::after { | |||||
| content: "An error has occurred." | |||||
| } | |||||
| @@ -0,0 +1,48 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
| # Visual Studio Version 17 | |||||
| VisualStudioVersion = 17.8.0.0 | |||||
| MinimumVisualStudioVersion = 17.8.0.0 | |||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloAgents.AppHost", "HelloAgents.AppHost\HelloAgents.AppHost.csproj", "{657F8F19-A8AC-4975-B482-0C84EC768F3A}" | |||||
| EndProject | |||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloAgents.ServiceDefaults", "HelloAgents.ServiceDefaults\HelloAgents.ServiceDefaults.csproj", "{FD396CED-A3EF-45C0-8466-FA34648BF876}" | |||||
| EndProject | |||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloAgents.ApiService", "HelloAgents.ApiService\HelloAgents.ApiService.csproj", "{D725EA30-B236-4F6E-B1FD-20BBB957EA06}" | |||||
| EndProject | |||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HelloAgents.Web", "HelloAgents.Web\HelloAgents.Web.csproj", "{15F80A30-7FF8-4D0B-A0FA-CB67FBD827A9}" | |||||
| EndProject | |||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloAgents", "HelloAgents.Agents\HelloAgents.csproj", "{2425E34B-7B18-4E04-ABBC-510638806FD7}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Any CPU = Debug|Any CPU | |||||
| Release|Any CPU = Release|Any CPU | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {657F8F19-A8AC-4975-B482-0C84EC768F3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {657F8F19-A8AC-4975-B482-0C84EC768F3A}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {657F8F19-A8AC-4975-B482-0C84EC768F3A}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {657F8F19-A8AC-4975-B482-0C84EC768F3A}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {FD396CED-A3EF-45C0-8466-FA34648BF876}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {FD396CED-A3EF-45C0-8466-FA34648BF876}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {FD396CED-A3EF-45C0-8466-FA34648BF876}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {FD396CED-A3EF-45C0-8466-FA34648BF876}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {D725EA30-B236-4F6E-B1FD-20BBB957EA06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {D725EA30-B236-4F6E-B1FD-20BBB957EA06}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {D725EA30-B236-4F6E-B1FD-20BBB957EA06}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {D725EA30-B236-4F6E-B1FD-20BBB957EA06}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {15F80A30-7FF8-4D0B-A0FA-CB67FBD827A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {15F80A30-7FF8-4D0B-A0FA-CB67FBD827A9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {15F80A30-7FF8-4D0B-A0FA-CB67FBD827A9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {15F80A30-7FF8-4D0B-A0FA-CB67FBD827A9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| {2425E34B-7B18-4E04-ABBC-510638806FD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
| {2425E34B-7B18-4E04-ABBC-510638806FD7}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
| {2425E34B-7B18-4E04-ABBC-510638806FD7}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
| {2425E34B-7B18-4E04-ABBC-510638806FD7}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| GlobalSection(ExtensibilityGlobals) = postSolution | |||||
| SolutionGuid = {678186CE-9E7C-44FE-B1A4-33271ACDFCC5} | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -11,6 +11,7 @@ | |||||
| <ProjectReference Include="..\DevTeam.ServiceDefaults\DevTeam.ServiceDefaults.csproj" /> | <ProjectReference Include="..\DevTeam.ServiceDefaults\DevTeam.ServiceDefaults.csproj" /> | ||||
| <ProjectReference Include="..\DevTeam.Shared\DevTeam.Shared.csproj" /> | <ProjectReference Include="..\DevTeam.Shared\DevTeam.Shared.csproj" /> | ||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj" /> | <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Worker.Client\Microsoft.AutoGen.Agents.Worker.Client.csproj" /> | ||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| </Project> | </Project> | ||||
| @@ -1,5 +1,5 @@ | |||||
| using Microsoft.AutoGen.Agents.Worker.Client; | using Microsoft.AutoGen.Agents.Worker.Client; | ||||
| using DevTeam; | |||||
| using Microsoft.AutoGen.Agents.Extensions.SemanticKernel; | |||||
| using DevTeam.Agents; | using DevTeam.Agents; | ||||
| var builder = WebApplication.CreateBuilder(args); | var builder = WebApplication.CreateBuilder(args); | ||||
| @@ -31,6 +31,7 @@ | |||||
| <ItemGroup> | <ItemGroup> | ||||
| <ProjectReference Include="..\DevTeam.ServiceDefaults\DevTeam.ServiceDefaults.csproj" /> | <ProjectReference Include="..\DevTeam.ServiceDefaults\DevTeam.ServiceDefaults.csproj" /> | ||||
| <ProjectReference Include="..\DevTeam.Shared\DevTeam.Shared.csproj" /> | <ProjectReference Include="..\DevTeam.Shared\DevTeam.Shared.csproj" /> | ||||
| <ProjectReference Include="..\..\..\src\Microsoft.AutoGen.Agents.Extensions\SemanticKernel\Microsoft.AutoGen.Agents.Extensions.SemanticKernel.csproj" /> | |||||
| </ItemGroup> | </ItemGroup> | ||||
| </Project> | </Project> | ||||
| @@ -1,13 +1,13 @@ | |||||
| using Microsoft.AutoGen.Agents.Worker.Client; | using Microsoft.AutoGen.Agents.Worker.Client; | ||||
| using DevTeam; | |||||
| using Microsoft.AutoGen.Agents.Extensions.SemanticKernel; | |||||
| using Microsoft.AI.DevTeam; | using Microsoft.AI.DevTeam; | ||||
| using DevTeam.Backend; | using DevTeam.Backend; | ||||
| using Octokit.Webhooks; | using Octokit.Webhooks; | ||||
| using Microsoft.Extensions.Options; | using Microsoft.Extensions.Options; | ||||
| using DevTeam.Options; | |||||
| using Microsoft.Extensions.Azure; | using Microsoft.Extensions.Azure; | ||||
| using Azure.Identity; | using Azure.Identity; | ||||
| using Octokit.Webhooks.AspNetCore; | using Octokit.Webhooks.AspNetCore; | ||||
| using DevTeam.Options; | |||||
| var builder = WebApplication.CreateBuilder(args); | var builder = WebApplication.CreateBuilder(args); | ||||
| @@ -1,30 +0,0 @@ | |||||
| using System.ComponentModel.DataAnnotations; | |||||
| namespace DevTeam.Options; | |||||
| public class OpenAIOptions | |||||
| { | |||||
| // Embeddings | |||||
| [Required] | |||||
| public required string EmbeddingsEndpoint { get; set; } | |||||
| [Required] | |||||
| public required string EmbeddingsApiKey { get; set; } | |||||
| [Required] | |||||
| public required string EmbeddingsDeploymentOrModelId { get; set; } | |||||
| // Chat | |||||
| [Required] | |||||
| public required string ChatEndpoint { get; set; } | |||||
| [Required] | |||||
| public required string ChatApiKey { get; set; } | |||||
| [Required] | |||||
| public required string ChatDeploymentOrModelId { get; set; } | |||||
| // TextToImage | |||||
| [Required] | |||||
| public required string ImageEndpoint { get; set; } | |||||
| [Required] | |||||
| public required string ImageApiKey { get; set; } | |||||
| // When using OpenAI, this is not required. | |||||
| public required string ImageDeploymentOrModelId { get; set; } | |||||
| } | |||||
| @@ -1,11 +0,0 @@ | |||||
| using System.ComponentModel.DataAnnotations; | |||||
| namespace DevTeam.Options; | |||||
| public class QdrantOptions | |||||
| { | |||||
| [Required] | |||||
| public required string Endpoint { get; set; } | |||||
| [Required] | |||||
| public required int VectorSize { get; set; } | |||||
| public string ApiKey { get; set; } = ""; | |||||
| } | |||||
| @@ -1,108 +0,0 @@ | |||||
| // Copyright (c) Microsoft. All rights reserved. | |||||
| using System.Text.Json; | |||||
| using Azure.AI.OpenAI; | |||||
| using DevTeam.Options; | |||||
| using Microsoft.Extensions.Configuration; | |||||
| using Microsoft.Extensions.DependencyInjection; | |||||
| using Microsoft.Extensions.Hosting; | |||||
| using Microsoft.Extensions.Logging; | |||||
| using Microsoft.Extensions.Options; | |||||
| using Microsoft.SemanticKernel; | |||||
| using Microsoft.SemanticKernel.Connectors.OpenAI; | |||||
| using Microsoft.SemanticKernel.Connectors.Qdrant; | |||||
| using Microsoft.SemanticKernel.Memory; | |||||
| namespace DevTeam; | |||||
| public static class SemanticKernelHostingExtensions | |||||
| { | |||||
| public static IHostApplicationBuilder ConfigureSemanticKernel(this IHostApplicationBuilder builder) | |||||
| { | |||||
| builder.Services.Configure<OpenAIOptions>(o => | |||||
| { | |||||
| o.EmbeddingsEndpoint = o.ImageEndpoint = o.ChatEndpoint = builder.Configuration["OpenAI:Endpoint"] ?? throw new InvalidOperationException("Ensure that OpenAI:Endpoint is set in configuration"); | |||||
| o.EmbeddingsApiKey = o.ImageApiKey = o.ChatApiKey = builder.Configuration["OpenAI:Key"]!; | |||||
| o.EmbeddingsDeploymentOrModelId = "text-embedding-3-large"; | |||||
| o.ImageDeploymentOrModelId = "dall-e-3"; | |||||
| o.ChatDeploymentOrModelId = "gpt-4o"; | |||||
| }); | |||||
| builder.Services.Configure<OpenAIClientOptions>(o => | |||||
| { | |||||
| o.Retry.NetworkTimeout = TimeSpan.FromMinutes(5); | |||||
| }); | |||||
| builder.Services.AddOptions<QdrantOptions>().Bind(builder.Configuration.GetSection("Qdrant")) | |||||
| .ValidateDataAnnotations() | |||||
| .ValidateOnStart(); | |||||
| builder.Services.Configure<JsonSerializerOptions>(options => | |||||
| { | |||||
| options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; | |||||
| }); | |||||
| builder.Services.AddTransient(CreateKernel); | |||||
| builder.Services.AddTransient(CreateMemory); | |||||
| return builder; | |||||
| } | |||||
| static ISemanticTextMemory CreateMemory(IServiceProvider provider) | |||||
| { | |||||
| var qdrantConfig = provider.GetRequiredService<IOptions<QdrantOptions>>().Value; | |||||
| var openAiConfig = provider.GetRequiredService<IOptions<OpenAIOptions>>().Value; | |||||
| var qdrantHttpClient = new HttpClient(); | |||||
| if (!string.IsNullOrEmpty(qdrantConfig.ApiKey)) { | |||||
| qdrantHttpClient.DefaultRequestHeaders.Add("api-key", qdrantConfig.ApiKey); | |||||
| } | |||||
| var loggerFactory = provider.GetRequiredService<ILoggerFactory>(); | |||||
| var memoryBuilder = new MemoryBuilder(); | |||||
| return memoryBuilder.WithLoggerFactory(loggerFactory) | |||||
| .WithQdrantMemoryStore(qdrantHttpClient, qdrantConfig.VectorSize, qdrantConfig.Endpoint) | |||||
| .WithAzureOpenAITextEmbeddingGeneration(openAiConfig.EmbeddingsDeploymentOrModelId, openAiConfig.EmbeddingsEndpoint, openAiConfig.EmbeddingsApiKey) | |||||
| .Build(); | |||||
| } | |||||
| static Kernel CreateKernel(IServiceProvider provider) | |||||
| { | |||||
| OpenAIOptions openAiConfig = provider.GetRequiredService<IOptions<OpenAIOptions>>().Value; | |||||
| var builder = Kernel.CreateBuilder(); | |||||
| // Chat | |||||
| if (openAiConfig.ChatEndpoint.Contains(".azure", StringComparison.OrdinalIgnoreCase)) | |||||
| { | |||||
| var openAIClient = new OpenAIClient(new Uri(openAiConfig.ChatEndpoint), new Azure.AzureKeyCredential(openAiConfig.ChatApiKey)); | |||||
| builder.Services.AddAzureOpenAIChatCompletion(openAiConfig.ChatDeploymentOrModelId, openAIClient); | |||||
| } | |||||
| else | |||||
| { | |||||
| var openAIClient = new OpenAIClient(openAiConfig.ChatApiKey); | |||||
| builder.Services.AddOpenAIChatCompletion(openAiConfig.ChatDeploymentOrModelId, openAIClient); | |||||
| } | |||||
| // Text to Image | |||||
| if (openAiConfig.ImageEndpoint.Contains(".azure", StringComparison.OrdinalIgnoreCase)) | |||||
| { | |||||
| ArgumentException.ThrowIfNullOrEmpty(openAiConfig.ImageDeploymentOrModelId); | |||||
| var openAIClient = new OpenAIClient(new Uri(openAiConfig.ImageEndpoint), new Azure.AzureKeyCredential(openAiConfig.ImageApiKey)); | |||||
| builder.Services.AddAzureOpenAITextToImage(openAiConfig.ImageDeploymentOrModelId, openAIClient); | |||||
| } | |||||
| else | |||||
| { | |||||
| builder.Services.AddOpenAITextToImage(openAiConfig.ImageApiKey, modelId: openAiConfig.ImageDeploymentOrModelId); | |||||
| } | |||||
| // Embeddings | |||||
| if (openAiConfig.EmbeddingsEndpoint.Contains(".azure", StringComparison.OrdinalIgnoreCase)) | |||||
| { | |||||
| var openAIClient = new OpenAIClient(new Uri(openAiConfig.EmbeddingsEndpoint), new Azure.AzureKeyCredential(openAiConfig.EmbeddingsApiKey)); | |||||
| builder.Services.AddAzureOpenAITextEmbeddingGeneration(openAiConfig.EmbeddingsDeploymentOrModelId, openAIClient); | |||||
| } | |||||
| else | |||||
| { | |||||
| var openAIClient = new OpenAIClient(openAiConfig.EmbeddingsApiKey); | |||||
| builder.Services.AddOpenAITextEmbeddingGeneration(openAiConfig.EmbeddingsDeploymentOrModelId, openAIClient); | |||||
| } | |||||
| return builder.Build(); | |||||
| } | |||||
| } | |||||
| @@ -1,21 +0,0 @@ | |||||
| using System.ComponentModel.DataAnnotations; | |||||
| namespace Microsoft.AutoGen.Agents.Extensions.SemanticKernel; | |||||
| public class AzureOptions | |||||
| { | |||||
| [Required] | |||||
| public required string SubscriptionId { get; set; } | |||||
| [Required] | |||||
| public required string Location { get; set; } | |||||
| [Required] | |||||
| public required string ContainerInstancesResourceGroup { get; set; } | |||||
| [Required] | |||||
| public required string FilesShareName { get; set; } | |||||
| [Required] | |||||
| public required string FilesAccountName { get; set; } | |||||
| [Required] | |||||
| public required string FilesAccountKey { get; set; } | |||||
| [Required] | |||||
| public required string SandboxImage { get; set; } | |||||
| } | |||||
| @@ -1,14 +0,0 @@ | |||||
| using System.ComponentModel.DataAnnotations; | |||||
| namespace Microsoft.AutoGen.Agents.Extensions.SemanticKernel; | |||||
| public class GithubOptions | |||||
| { | |||||
| [Required] | |||||
| public required string AppKey { get; set; } | |||||
| [Required] | |||||
| public int AppId { get; set; } | |||||
| [Required] | |||||
| public long InstallationId { get; set; } | |||||
| [Required] | |||||
| public required string WebhookSecret { get; set; } | |||||
| } | |||||
| @@ -4,10 +4,10 @@ | |||||
| <TargetFramework>net8.0</TargetFramework> | <TargetFramework>net8.0</TargetFramework> | ||||
| <ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
| <Nullable>enable</Nullable> | <Nullable>enable</Nullable> | ||||
| <PackageId>AGNext.Worker.Client</PackageId> | |||||
| <PackageId>AutoGen.Worker.Client</PackageId> | |||||
| <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | ||||
| <Authors>Microsoft</Authors> | <Authors>Microsoft</Authors> | ||||
| <Description>AGNext Worker Client Library</Description> | |||||
| <Description>AutoGen Worker Client Library</Description> | |||||
| <Tags>ai-agents;event-driven-agents</Tags> | <Tags>ai-agents;event-driven-agents</Tags> | ||||
| </PropertyGroup> | </PropertyGroup> | ||||
| @@ -4,10 +4,10 @@ | |||||
| <TargetFramework>net8.0</TargetFramework> | <TargetFramework>net8.0</TargetFramework> | ||||
| <ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
| <Nullable>enable</Nullable> | <Nullable>enable</Nullable> | ||||
| <PackageId>AGNext.Worker.Server</PackageId> | |||||
| <PackageId>AutoGen.Worker.Server</PackageId> | |||||
| <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | ||||
| <Authors>Microsoft</Authors> | <Authors>Microsoft</Authors> | ||||
| <Description>AGNext Worker Server Library</Description> | |||||
| <Description>AutoGen Worker Server Library</Description> | |||||
| <Tags>ai-agents;event-driven-agents</Tags> | <Tags>ai-agents;event-driven-agents</Tags> | ||||
| </PropertyGroup> | </PropertyGroup> | ||||
| @@ -4,10 +4,10 @@ | |||||
| <TargetFramework>net8.0</TargetFramework> | <TargetFramework>net8.0</TargetFramework> | ||||
| <ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
| <Nullable>enable</Nullable> | <Nullable>enable</Nullable> | ||||
| <PackageId>AGNext.Core</PackageId> | |||||
| <PackageId>AutoGennnnnnn.Core</PackageId> | |||||
| <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | <PackageProjectUrl>https://github.com/microsoft/agnext</PackageProjectUrl> | ||||
| <Authors>Microsoft</Authors> | <Authors>Microsoft</Authors> | ||||
| <Description>AGNext Core Library</Description> | |||||
| <Description>AutoGenn Core Library</Description> | |||||
| </PropertyGroup> | </PropertyGroup> | ||||
| <ItemGroup> | <ItemGroup> | ||||