diff --git a/.github/workflow-gen/Program.cs b/.github/workflow-gen/Program.cs index 4a716aa32..af73a335c 100644 --- a/.github/workflow-gen/Program.cs +++ b/.github/workflow-gen/Program.cs @@ -17,6 +17,11 @@ var products = new Product[] "bff", ["Bff.Tests"], ["Hosts.Tests"]), + new("docs-mcp", + "docs-mcp.slnf", + "dmcp", + [], + []), new("identity-server", "identity-server.slnf", "is", diff --git a/.github/workflows/aspnetcore-authentication-jwtbearer-ci.yml b/.github/workflows/aspnetcore-authentication-jwtbearer-ci.yml index 09ceffd82..1bc2136ea 100644 --- a/.github/workflows/aspnetcore-authentication-jwtbearer-ci.yml +++ b/.github/workflows/aspnetcore-authentication-jwtbearer-ci.yml @@ -128,8 +128,7 @@ jobs: fetch-depth: 0 codeql: name: CodeQL analyze - # Remove once https://github.com/github/codeql-action/issues/3207#issuecomment-3405956414 has been resolved - if: false && ((github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch')) + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') runs-on: group: large labels: [ubuntu-latest-x64-16core] @@ -148,7 +147,6 @@ jobs: languages: csharp build-mode: manual db-location: ~/.codeql/databases - debug: true - name: List .net sdks run: dotnet --list-sdks - name: Setup Dotnet @@ -161,7 +159,7 @@ jobs: - name: Restore run: dotnet restore aspnetcore-authentication-jwtbearer.slnf - name: Build - run: dotnet build aspnetcore-authentication-jwtbearer.slnf --no-restore --no-incremental -c Release + run: dotnet build aspnetcore-authentication-jwtbearer.slnf --no-restore -c Release - name: Perform CodeQL Analysis if: ${{ env.DISABLE_CODEQL_ANALYSIS != 'true' }} uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 diff --git a/.github/workflows/docs-mcp-ci.yml b/.github/workflows/docs-mcp-ci.yml new file mode 100644 index 000000000..1f4cf98e6 --- /dev/null +++ b/.github/workflows/docs-mcp-ci.yml @@ -0,0 +1,211 @@ +# This was generated by tool. Edits will be overwritten. + +name: docs-mcp/ci +on: + workflow_dispatch: + push: + paths: + - .config/dotnet-tools.json + - .github/workflows/docs-mcp-** + - docs-mcp/** + - .editorconfig + - Directory.Packages.props + - global.json + - src.props + - test.props + pull_request: + paths: + - .config/dotnet-tools.json + - .github/workflows/docs-mcp-** + - docs-mcp/** + - .editorconfig + - Directory.Packages.props + - global.json + - src.props + - test.props +env: + DOTNET_NOLOGO: true + DOTNET_CLI_TELEMETRY_OPTOUT: true +jobs: + verify-formatting: + name: Verify formatting + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') + runs-on: + group: large + labels: [ubuntu-latest-x64-16core] + permissions: + contents: read + defaults: + run: + shell: bash + working-directory: docs-mcp + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: Restore + run: dotnet restore docs-mcp.slnf + - name: Verify Formatting + run: dotnet format docs-mcp.slnf --verify-no-changes --no-restore + build: + name: Build and test (unit) + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') + runs-on: ubuntu-latest + permissions: + actions: read + checks: write + contents: read + packages: write + defaults: + run: + shell: bash + working-directory: docs-mcp + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: Restore + run: dotnet restore docs-mcp.slnf + - name: Build + run: dotnet build docs-mcp.slnf --no-restore -c Release + - name: Dotnet devcerts + run: dotnet dev-certs https --trust + playwright: + name: Playwright tests + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') + runs-on: + group: large + labels: [ubuntu-latest-x64-16core] + permissions: + actions: read + checks: write + contents: read + defaults: + run: + shell: bash + working-directory: docs-mcp + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + codeql: + name: CodeQL analyze + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') + runs-on: + group: large + labels: [ubuntu-latest-x64-16core] + defaults: + run: + shell: bash + working-directory: docs-mcp + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Initialize CodeQL + uses: github/codeql-action/init@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 + with: + languages: csharp + build-mode: manual + db-location: ~/.codeql/databases + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: Restore + run: dotnet restore docs-mcp.slnf + - name: Build + run: dotnet build docs-mcp.slnf --no-restore -c Release + - name: Perform CodeQL Analysis + if: ${{ env.DISABLE_CODEQL_ANALYSIS != 'true' }} + uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 + with: + category: /language:csharp + pack: + name: Pack, sign and push + if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) || (github.event_name == 'push') || (github.event_name == 'workflow_dispatch') + needs: + - verify-formatting + - build + - playwright + - codeql + runs-on: + group: large + labels: [ubuntu-latest-x64-16core] + permissions: + actions: read + contents: read + packages: write + defaults: + run: + shell: bash + working-directory: docs-mcp + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: Tool restore + run: dotnet tool restore + - name: Pack docs-mcp.slnf + run: dotnet pack -c Release docs-mcp.slnf -o artifacts + - name: Sign packages + if: github.event == 'push' + run: |- + for file in artifacts/*.nupkg; do + dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning + done + - name: Push packages to GitHub + if: github.ref == 'refs/heads/main' + run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Artifacts + if: github.ref == 'refs/heads/main' + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 + with: + name: artifacts + path: docs-mcp/artifacts/*.nupkg + overwrite: true + retention-days: 15 diff --git a/.github/workflows/docs-mcp-release.yml b/.github/workflows/docs-mcp-release.yml new file mode 100644 index 000000000..502327540 --- /dev/null +++ b/.github/workflows/docs-mcp-release.yml @@ -0,0 +1,118 @@ +# This was generated by tool. Edits will be overwritten. + +name: docs-mcp/release +on: + workflow_dispatch: + inputs: + version: + description: 'Version in format X.Y.Z, X.Y.Z-preview.N, or X.Y.Z-rc.N' + type: string + required: true + default: '0.0.0' + branch: + description: '(Optional) the name of the branch to release from' + type: string + required: false + default: 'main' + remove-tag-if-exists: + description: 'If set, will remove the existing tag. Use this if you have issues with the previous release action' + type: boolean + required: false + default: false +env: + DOTNET_NOLOGO: true + DOTNET_CLI_TELEMETRY_OPTOUT: true +jobs: + tag: + name: Tag and Pack + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + defaults: + run: + shell: bash + working-directory: docs-mcp + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Validate Version Input + run: echo '${{ github.event.inputs.version }}' | grep -P '^\d+\.\d+\.\d+(-preview\.\d+|-rc\.\d+)?$' || (echo 'Invalid version format' && exit 1) + - name: Checkout target branch + if: github.event.inputs.branch != 'main' + run: git checkout ${{ github.event.inputs.branch }} + - name: Git Config + run: |- + git config --global user.email "github-bot@duendesoftware.com" + git config --global user.name "Duende Software GitHub Bot" + - name: Git Config + if: github.event.inputs['remove-tag-if-exists'] == 'true' + run: |- + if git rev-parse dmcp-${{ github.event.inputs.version }} >/dev/null 2>&1; then + git tag -d dmcp-${{ github.event.inputs.version }} + git push --delete origin dmcp-${{ github.event.inputs.version }} + else + echo 'Tag dmcp-${{ github.event.inputs.version }} does not exist.' + fi + - name: Git Config + run: |- + git tag -a dmcp-${{ github.event.inputs.version }} -m "Release v${{ github.event.inputs.version }}" + git push origin dmcp-${{ github.event.inputs.version }} + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: Pack docs-mcp.slnf + run: dotnet pack -c Release docs-mcp.slnf -o artifacts + - name: Tool restore + run: dotnet tool restore + - name: Sign packages + run: |- + for file in artifacts/*.nupkg; do + dotnet NuGetKeyVaultSignTool sign "$file" --file-digest sha256 --timestamp-rfc3161 http://timestamp.digicert.com --azure-key-vault-url https://duendecodesigninghsm.vault.azure.net/ --azure-key-vault-client-id 18e3de68-2556-4345-8076-a46fad79e474 --azure-key-vault-tenant-id ed3089f0-5401-4758-90eb-066124e2d907 --azure-key-vault-client-secret ${{ secrets.SignClientSecret }} --azure-key-vault-certificate NuGetPackageSigning + done + - name: Push packages to GitHub + run: dotnet nuget push artifacts/*.nupkg --source https://nuget.pkg.github.com/DuendeSoftware/index.json --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Artifacts + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 + with: + name: artifacts + path: docs-mcp/artifacts/*.nupkg + overwrite: true + retention-days: 15 + publish: + name: Publish to nuget.org + needs: + - tag + runs-on: ubuntu-latest + environment: + name: nuget.org + steps: + - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 + with: + name: artifacts + path: artifacts + - name: List .net sdks + run: dotnet --list-sdks + - name: Setup Dotnet + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 + with: + dotnet-version: |- + 8.0.x + 9.0.203 + 10.0.100-rc.2.25502.107 + - name: List files + run: tree + shell: bash + - name: Push packages to nuget.org + run: dotnet nuget push artifacts/*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_ORG_API_KEY }} --skip-duplicate diff --git a/docs-mcp/Duende.Documentation.Mcp.sln b/docs-mcp/Duende.Documentation.Mcp.sln deleted file mode 100644 index f1b919720..000000000 --- a/docs-mcp/Duende.Documentation.Mcp.sln +++ /dev/null @@ -1,29 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duende.Documentation.Mcp.Server", "src\Duende.Documentation.Mcp.Server\Duende.Documentation.Mcp.Server.csproj", "{77ABDCC6-CE90-48DB-92F9-C5196A4A703A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_", "_", "{043ECBC2-3F36-41B3-97FA-B89C91ECEEF8}" - ProjectSection(SolutionItems) = preProject - README.md = README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".config", ".config", "{67AE9E59-B4E8-4D11-BA48-2228BFB217D6}" - ProjectSection(SolutionItems) = preProject - .config\dotnet-tools.json = .config\dotnet-tools.json - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {77ABDCC6-CE90-48DB-92F9-C5196A4A703A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {77ABDCC6-CE90-48DB-92F9-C5196A4A703A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {77ABDCC6-CE90-48DB-92F9-C5196A4A703A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {77ABDCC6-CE90-48DB-92F9-C5196A4A703A}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {67AE9E59-B4E8-4D11-BA48-2228BFB217D6} = {043ECBC2-3F36-41B3-97FA-B89C91ECEEF8} - EndGlobalSection -EndGlobal diff --git a/docs-mcp/docs-mcp.slnf b/docs-mcp/docs-mcp.slnf new file mode 100644 index 000000000..8109abb80 --- /dev/null +++ b/docs-mcp/docs-mcp.slnf @@ -0,0 +1,9 @@ +{ + "solution": { + "path": "..\\products.slnx", + "projects": [ + ".github\\workflow-gen\\workflow-gen.csproj", + "docs-mcp\\src\\Documentation.Mcp\\Documentation.Mcp.csproj" + ] + } +} diff --git a/docs-mcp/src/Directory.Build.props b/docs-mcp/src/Directory.Build.props index a8d593a3e..41038d22a 100644 --- a/docs-mcp/src/Directory.Build.props +++ b/docs-mcp/src/Directory.Build.props @@ -7,7 +7,7 @@ All OAuth 2.0;OpenID Connect;Security;Identity;IdentityServer;ASP.NET Core Duende Documentation MCP Server - mcp- + dmcp- 1.0 diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSBlogArticle.cs b/docs-mcp/src/Documentation.Mcp/Database/FTSBlogArticle.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSBlogArticle.cs rename to docs-mcp/src/Documentation.Mcp/Database/FTSBlogArticle.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSDocsArticle.cs b/docs-mcp/src/Documentation.Mcp/Database/FTSDocsArticle.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSDocsArticle.cs rename to docs-mcp/src/Documentation.Mcp/Database/FTSDocsArticle.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSSampleProject.cs b/docs-mcp/src/Documentation.Mcp/Database/FTSSampleProject.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/FTSSampleProject.cs rename to docs-mcp/src/Documentation.Mcp/Database/FTSSampleProject.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/McpDb.cs b/docs-mcp/src/Documentation.Mcp/Database/McpDb.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/McpDb.cs rename to docs-mcp/src/Documentation.Mcp/Database/McpDb.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/20250828191400_Initial.Designer.cs b/docs-mcp/src/Documentation.Mcp/Database/Migrations/20250828191400_Initial.Designer.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/20250828191400_Initial.Designer.cs rename to docs-mcp/src/Documentation.Mcp/Database/Migrations/20250828191400_Initial.Designer.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/20250828191400_Initial.cs b/docs-mcp/src/Documentation.Mcp/Database/Migrations/20250828191400_Initial.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/20250828191400_Initial.cs rename to docs-mcp/src/Documentation.Mcp/Database/Migrations/20250828191400_Initial.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/McpDbModelSnapshot.cs b/docs-mcp/src/Documentation.Mcp/Database/Migrations/McpDbModelSnapshot.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/Migrations/McpDbModelSnapshot.cs rename to docs-mcp/src/Documentation.Mcp/Database/Migrations/McpDbModelSnapshot.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Database/State.cs b/docs-mcp/src/Documentation.Mcp/Database/State.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Database/State.cs rename to docs-mcp/src/Documentation.Mcp/Database/State.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Duende.Documentation.Mcp.Server.csproj b/docs-mcp/src/Documentation.Mcp/Documentation.Mcp.csproj similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Duende.Documentation.Mcp.Server.csproj rename to docs-mcp/src/Documentation.Mcp/Documentation.Mcp.csproj diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Infrastructure/TemporaryFileStream.cs b/docs-mcp/src/Documentation.Mcp/Infrastructure/TemporaryFileStream.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Infrastructure/TemporaryFileStream.cs rename to docs-mcp/src/Documentation.Mcp/Infrastructure/TemporaryFileStream.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Program.cs b/docs-mcp/src/Documentation.Mcp/Program.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Program.cs rename to docs-mcp/src/Documentation.Mcp/Program.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Properties/launchSettings.json b/docs-mcp/src/Documentation.Mcp/Properties/launchSettings.json similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Properties/launchSettings.json rename to docs-mcp/src/Documentation.Mcp/Properties/launchSettings.json diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Blog/BlogArticleIndexer.cs b/docs-mcp/src/Documentation.Mcp/Sources/Blog/BlogArticleIndexer.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Blog/BlogArticleIndexer.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Blog/BlogArticleIndexer.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Blog/BlogSearchTool.cs b/docs-mcp/src/Documentation.Mcp/Sources/Blog/BlogSearchTool.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Blog/BlogSearchTool.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Blog/BlogSearchTool.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Docs/DocsArticleIndexer.cs b/docs-mcp/src/Documentation.Mcp/Sources/Docs/DocsArticleIndexer.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Docs/DocsArticleIndexer.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Docs/DocsArticleIndexer.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Docs/DocsSearchTool.cs b/docs-mcp/src/Documentation.Mcp/Sources/Docs/DocsSearchTool.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Docs/DocsSearchTool.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Docs/DocsSearchTool.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Samples/SamplesIndexer.cs b/docs-mcp/src/Documentation.Mcp/Sources/Samples/SamplesIndexer.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Samples/SamplesIndexer.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Samples/SamplesIndexer.cs diff --git a/docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Samples/SamplesSearchTool.cs b/docs-mcp/src/Documentation.Mcp/Sources/Samples/SamplesSearchTool.cs similarity index 100% rename from docs-mcp/src/Duende.Documentation.Mcp.Server/Sources/Samples/SamplesSearchTool.cs rename to docs-mcp/src/Documentation.Mcp/Sources/Samples/SamplesSearchTool.cs diff --git a/products.slnx b/products.slnx index f73fdc757..e4a060213 100644 --- a/products.slnx +++ b/products.slnx @@ -74,7 +74,7 @@ - +