diff --git a/.github/workflows/integration-codeowner.yml b/.github/workflows/integration-codeowner.yml index 4562423b0..826a24d41 100644 --- a/.github/workflows/integration-codeowner.yml +++ b/.github/workflows/integration-codeowner.yml @@ -19,8 +19,6 @@ jobs: uses: actions/github-script@v9.0.0 with: script: | - const core = require('@actions/core'); - const pr = context.payload.pull_request; const files = await github.paginate(github.rest.pulls.listFiles, { owner: context.repo.owner, @@ -101,8 +99,6 @@ jobs: uses: actions/github-script@v9.0.0 with: script: | - const core = require('@actions/core'); - const comment = context.payload.comment; const command = comment.body.trim(); const accepted = command === '/codeowner-accept'; diff --git a/.github/workflows/readme-integrations-check.yml b/.github/workflows/readme-integrations-check.yml new file mode 100644 index 000000000..91f64b9d4 --- /dev/null +++ b/.github/workflows/readme-integrations-check.yml @@ -0,0 +1,24 @@ +name: README Integrations Check + +on: + pull_request: + paths: + - README.md + - src/**/CommunityToolkit.Aspire*.csproj + - src/CommunityToolkit.Aspire*/README.md + - eng/scripts/generate-readme-integrations.cs + - .github/workflows/readme-integrations-check.yml + +jobs: + validate-readme-integrations: + name: Validate integrations table + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Verify README integrations table is up to date + run: dotnet run eng/scripts/generate-readme-integrations.cs -- --check diff --git a/README.md b/README.md index 3abed65fe..2eebe2f8f 100644 --- a/README.md +++ b/README.md @@ -12,55 +12,81 @@ All features are contributed by you, our amazing Aspire community, and maintaine This repository contains the source code for the Aspire Community Toolkit, a collection of community created Integrations and extensions for [Aspire](https://aka.ms/dotnet/aspire). -| Package | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| - **Learn More**: [`Hosting.Golang`][golang-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Golang][golang-shields]][golang-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Golang][golang-shields-preview]][golang-nuget-preview] | A hosting integration Golang apps. | -| - **Learn More**: [`Hosting.Java`][java-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Java][java-shields]][java-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Java][java-shields-preview]][java-nuget-preview] | An integration for running Java code in Aspire either using the local JDK or using a container. | -| - **Learn More**: [`Hosting.K3s`][k3s-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.K3s][k3s-shields]][k3s-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.K3s][k3s-shields-preview]][k3s-nuget-preview] | An Aspire hosting integration for [k3s](https://k3s.io/), a lightweight Kubernetes distribution by Rancher. | -| - **Learn More**: [`Hosting.NodeJS.Extensions`][nodejs-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.NodeJS.Extensions][nodejs-ext-shields]][nodejs-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.JavaScript.Extensions][nodejs-ext-shields-preview]][nodejs-ext-nuget-preview] | An integration that contains some additional extensions for running Node.js applications | -| - **Learn More**: [`Hosting.Ollama`][ollama-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Ollama][ollama-shields]][ollama-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Ollama][ollama-shields-preview]][ollama-nuget-preview] | An Aspire hosting integration leveraging the [Ollama](https://ollama.com) container with support for downloading a model on startup. | -| - **Learn More**: [`OllamaSharp`][ollama-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.OllamaSharp][ollamasharp-shields]][ollamasharp-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.OllamaSharp][ollamasharp-shields-preview]][ollamasharp-nuget-preview] | An Aspire client integration for the [OllamaSharp](https://github.com/awaescher/OllamaSharp) package. | -| - **Learn More**: [`Hosting.Meilisearch`][meilisearch-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Meilisearch][meilisearch-shields]][meilisearch-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Meilisearch][meilisearch-shields-preview]][meilisearch-nuget-preview] | An Aspire hosting integration leveraging the [Meilisearch](https://meilisearch.com) container. | -| - **Learn More**: [`Meilisearch`][meilisearch-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Meilisearch][meilisearch-client-shields]][meilisearch-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Meilisearch][meilisearch-client-shields-preview]][meilisearch-client-nuget-preview] | An Aspire client integration for the [Meilisearch](https://github.com/meilisearch/meilisearch-dotnet) package. | -| - **Learn More**: [`Hosting.Azure.DataApiBuilder`][dab-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder][dab-shields]][dab-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder][dab-shields-preview]][dab-nuget-preview] | A hosting integration for the [Azure Data API builder](https://learn.microsoft.com/en-us/azure/data-api-builder/overview). | -| - **Learn More**: [`Hosting.Deno`][deno-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Deno][deno-shields]][deno-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Deno][deno-shields-preview]][deno-nuget-preview] | A hosting integration for the Deno apps. | -| - **Learn More**: [`Hosting.SqlDatabaseProjects`][sql-database-projects-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects][sql-database-projects-shields]][sql-database-projects-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects][sql-database-projects-shields-preview]][sql-database-projects-nuget-preview] | A hosting integration for the SQL Databases Projects. | -| - **Learn More**: [`Hosting.Rust`][rust-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Rust][rust-shields]][rust-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Rust][rust-shields-preview]][rust-nuget-preview] | A hosting integration for the Rust apps. | -| - **Learn More**: [`Hosting.Bun`][bun-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Bun][bun-shields]][bun-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Bun][bun-shields-preview]][bun-nuget-preview] | **Deprecated**: use the core `Aspire.Hosting.JavaScript` `AddBunApp(...)` integration. | -| - **Learn More**: [`Hosting.Bitwarden.SecretManager`][bitwarden-secret-manager-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager][bitwarden-secret-manager-hosting-shields]][bitwarden-secret-manager-hosting-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager][bitwarden-secret-manager-hosting-shields-preview]][bitwarden-secret-manager-hosting-nuget-preview] | A hosting integration for Bitwarden Secrets Manager projects and managed secrets. | -| - **Learn More**: [`Bitwarden.SecretManager`][bitwarden-secret-manager-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Bitwarden.SecretManager][bitwarden-secret-manager-client-shields]][bitwarden-secret-manager-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Bitwarden.SecretManager][bitwarden-secret-manager-client-shields-preview]][bitwarden-secret-manager-client-nuget-preview] | A client integration for authenticating and using the Bitwarden Secrets Manager SDK from Aspire applications. | -| - **Learn More**: [`Hosting.Perl`][perl-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Perl][perl-shields]][perl-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Perl][perl-shields-preview]][perl-nuget-preview] | A hosting integration for Perl scripts and APIs. | -| - **Learn More**: [`Hosting.Python.Extensions`][python-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Python.Extensions][python-ext-shields]][python-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Python.Extensions][python-ext-shields-preview]][python-ext-nuget-preview] | An integration that contains some additional extensions for running python applications | -| - **Learn More**: [`Hosting.KurrentDB`][kurrentdb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.KurrentDB][kurrentdb-shields]][kurrentdb-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.KurrentDB][kurrentdb-shields-preview]][kurrentdb-nuget-preview] | An Aspire hosting integration leveraging the [KurrentDB](https://www.kurrent.io) container. | -| - **Learn More**: [`KurrentDB`][kurrentdb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.KurrentDB][kurrentdb-client-shields]][kurrentdb-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.KurrentDB][kurrentdb-client-shields-preview]][kurrentdb-client-nuget-preview] | An Aspire client integration for the [KurrentDB](https://github.com/kurrent-io/KurrentDB-Client-Dotnet) package. | -| - **Learn More**: [`Hosting.Flagd`][flagd-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Flagd][flagd-shields]][flagd-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Flagd][flagd-shields-preview]][flagd-nuget-preview] | An Aspire hosting integration for [flagd](https://flagd.dev), a feature flag evaluation engine. | -| - **Learn More**: [`Hosting.ActiveMQ`][activemq-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.ActiveMQ][activemq-shields]][activemq-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.ActiveMQ][activemq-shields-preview]][activemq-nuget-preview] | An Aspire hosting integration leveraging the [ActiveMq](https://activemq.apache.org) container. | -| - **Learn More**: [`Hosting.Sqlite`][sqlite-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Sqlite][sqlite-shields]][sqlite-hosting-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Sqlite][sqlite-shields-preview]][sqlite-hosting-nuget-preview] | An Aspire hosting integration to setup a SQLite database with optional SQLite Web as a dev UI. | -| - **Learn More**: [`Microsoft.Data.Sqlite`][sqlite-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Microsoft.Data.Sqlite][sqlite-shields]][sqlite-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Microsoft.Data.Sqlite][sqlite-shields-preview]][sqlite-nuget-preview] | An Aspire client integration for the Microsoft.Data.Sqlite NuGet package. | -| - **Learn More**: [`Microsoft.EntityFrameworkCore.Sqlite`][sqlite-ef-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite][sqlite-ef-shields]][sqlite-ef-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite][sqlite-ef-shields-preview]][sqlite-ef-nuget-preview] | An Aspire client integration for the Microsoft.EntityFrameworkCore.Sqlite NuGet package. | -| - **Learn More**: [`Hosting.Dapr`][dapr-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Dapr][dapr-shields]][dapr-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Dapr][dapr-shields-preview]][dapr-nuget-preview] | An Aspire hosting integration for Dapr. | -| - **Learn More**: [`Hosting.Azure.Dapr.Redis`][dapr-azureredis-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis][dapr-azureredis-shields]][dapr-azureredis-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis][dapr-azureredis-shields-preview]][dapr-azureredis-nuget-preview] | An extension for the Dapr hosting integration for using Dapr with Azure Redis cache. | -| - **Learn More**: [`Hosting.RavenDB`][ravendb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB][ravendb-shields]][ravendb-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB][ravendb-shields-preview]][ravendb-nuget-preview] | An Aspire integration leveraging the [RavenDB](https://ravendb.net/) container. | -| - **Learn More**: [`RavenDB.Client`][ravendb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.RavenDB.Client][ravendb-client-shields]][ravendb-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.RavenDB.Client][ravendb-client-shields-preview]][ravendb-client-nuget-preview] | An Aspire client integration for the [RavenDB.Client](https://www.nuget.org/packages/RavenDB.client) package. | -| - **Learn More**: [`Hosting.GoFeatureFlag`][go-feature-flag-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag][go-feature-flag-shields]][go-feature-flag-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag][go-feature-flag-shields-preview]][go-feature-flag-nuget-preview] | An Aspire hosting integration leveraging the [GoFeatureFlag](https://gofeatureflag.org/) container. | -| - **Learn More**: [`GoFeatureFlag`][go-feature-flag-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields]][go-feature-flag-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields-preview]][go-feature-flag-client-nuget-preview] | An Aspire client integration for the [GoFeatureFlag](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Providers.GOFeatureFlag) package. | -| - **Learn More**: [`Hosting.MongoDB.Extensions`][mongodb-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.MongoDB.Extensions][mongodb-ext-shields]][mongodb-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MongoDB.Extensions][mongodb-ext-shields-preview]][mongodb-ext-nuget-preview] | An integration that contains some additional extensions for hosting MongoDB container. | -| - **Learn More**: [`Hosting.PostgreSQL.Extensions`][postgres-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.PostgreSQL.Extensions][postgres-ext-shields]][postgres-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions][postgres-ext-shields-preview]][postgres-ext-nuget-preview] | An integration that contains some additional extensions for hosting PostgreSQL container. | -| - **Learn More**: [`Hosting.Redis.Extensions`][redis-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Redis.Extensions][redis-ext-shields]][redis-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Redis.Extensions][redis-ext-shields-preview]][redis-ext-nuget-preview] | An integration that contains some additional extensions for hosting Redis container. | -| - **Learn More**: [`Hosting.SqlServer.Extensions`][sqlserver-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.SqlServer.Extensions][sqlserver-ext-shields]][sqlserver-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SqlServer.Extensions][sqlserver-ext-shields-preview]][sqlserver-ext-nuget-preview] | An integration that contains some additional extensions for hosting SqlServer container. | -| - **Learn More**: [`Hosting.LavinMQ`][lavinmq-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ][lavinmq-shields]][lavinmq-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ][lavinmq-shields-preview]][lavinmq-nuget-preview] | An Aspire hosting integration for [LavinMQ](https://www.lavinmq.com). | -| - **Learn More**: [`Hosting.MailPit`][mailpit-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.MailPit][mailpit-ext-shields]][mailpit-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MailPit][mailpit-ext-shields-preview]][mailpit-ext-nuget-preview] | An Aspire integration leveraging the [MailPit](https://mailpit.axllent.org/) container. | -| - **Learn More**: [`Hosting.k6`][k6-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.k6][k6-shields]][k6-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.k6][k6-shields-preview]][k6-nuget-preview] | An Aspire integration leveraging the [Grafana k6](https://k6.io/) container. | -| - **Learn More**: [`Hosting.MySql.Extensions`][mysql-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.MySql.Extensions][mysql-ext-shields]][mysql-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MySql.Extensions][mysql-ext-shields-preview]][mysql-ext-nuget-preview] | An integration that contains some additional extensions for hosting MySql container. | -| - **Learn More**: [`Hosting.MinIO`][minio-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Minio][minio-hosting-shields]][minio-hosting-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Minio][minio-hosting-shields-preview]][minio-hosting-nuget-preview] | An Aspire hosting integration to setup a [MinIO S3](https://min.io/) storage. | -| - **Learn More**: [`MinIO.Client`][minio-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Minio.Client][minio-client-shields]][minio-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Client.Minio][minio-client-shields-preview]][minio-client-nuget-preview] | An Aspire client integration for the [MinIO](https://github.com/minio/minio-dotnet) package. | -| - **Learn More**: [`Hosting.RustFs`][rustfs-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.RustFs][rustfs-hosting-shields]][rustfs-hosting-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.RustFs][rustfs-hosting-shields-preview]][rustfs-hosting-nuget-preview] | An Aspire hosting integration to setup a [RustFs](https://github.com/rustfs/rustfs) S3-compatible storage. | -| - **Learn More**: [`Hosting.SurrealDb`][surrealdb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SurrealDb][surrealdb-shields]][surrealdb-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SurrealDb][surrealdb-shields-preview]][surrealdb-nuget-preview] | An Aspire hosting integration leveraging the [SurrealDB](https://surrealdb.com/) container. | -| - **Learn More**: [`SurrealDb`][surrealdb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.SurrealDb][surrealdb-client-shields]][surrealdb-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.SurrealDb][surrealdb-client-shields-preview]][surrealdb-client-nuget-preview] | An Aspire client integration for the [SurrealDB](https://github.com/surrealdb/surrealdb.net/) package. | -| - **Learn More**: [`Hosting.Elasticsearch.Extensions`][elasticsearch-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions][elasticsearch-ext-shields]][elasticsearch-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions][elasticsearch-ext-shields-preview]][elasticsearch-ext-nuget-preview] | An integration that contains some additional extensions for hosting Elasticsearch container. | -| - **Learn More**: [`Hosting.Umami`][umami-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Umami][umami-shields]][umami-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Umami][umami-shields-preview]][umami-nuget-preview] | An Aspire hosting integration leveraging the [Umami](https://umami.is/) container. | -| - **Learn More**: [`Hosting.Azure.Extensions`][azure-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Azure.Extensions][azure-ext-shields]][azure-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Extensions][azure-ext-shields-preview]][azure-ext-nuget-preview] | An integration that contains some additional extensions for hosting Azure container. | -| - **Learn More**: [`Hosting.Squad`][squad-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Squad][squad-shields]][squad-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Squad][squad-shields-preview]][squad-nuget-preview] | An Aspire hosting integration that models a [Squad](https://github.com/bradygaster/squad) AI-agent team as a first-class resource. | + +| Package | Description | +| --- | --- | +| - **Learn More**: [`Bitwarden.SecretManager`](src/CommunityToolkit.Aspire.Bitwarden.SecretManager/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Bitwarden.SecretManager](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Bitwarden.SecretManager)](https://nuget.org/packages/CommunityToolkit.Aspire.Bitwarden.SecretManager/)
- Preview 📦: [![CommunityToolkit.Aspire.Bitwarden.SecretManager](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Bitwarden.SecretManager?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Bitwarden.SecretManager/absoluteLatest) | An Aspire client integration for Bitwarden Secrets Manager. | +| - **Learn More**: [`DuckDB.NET.Data`](src/CommunityToolkit.Aspire.DuckDB.NET.Data/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.DuckDB.NET.Data](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.DuckDB.NET.Data)](https://nuget.org/packages/CommunityToolkit.Aspire.DuckDB.NET.Data/)
- Preview 📦: [![CommunityToolkit.Aspire.DuckDB.NET.Data](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.DuckDB.NET.Data?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.DuckDB.NET.Data/absoluteLatest) | An Aspire client integration for the DuckDB.NET.Data package. | +| - **Learn More**: [`GoFeatureFlag`](src/CommunityToolkit.Aspire.GoFeatureFlag/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.GoFeatureFlag](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.GoFeatureFlag)](https://nuget.org/packages/CommunityToolkit.Aspire.GoFeatureFlag/)
- Preview 📦: [![CommunityToolkit.Aspire.GoFeatureFlag](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.GoFeatureFlag?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.GoFeatureFlag/absoluteLatest) | A GO Feature Flag client that integrates with Aspire, including health checks, logging, and telemetry. | +| - **Learn More**: [`Hosting.ActiveMQ`](src/CommunityToolkit.Aspire.Hosting.ActiveMQ/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.ActiveMQ](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.ActiveMQ)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.ActiveMQ/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.ActiveMQ](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.ActiveMQ?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.ActiveMQ/absoluteLatest) | An Aspire hosting package for hosting ActiveMQ. | +| - **Learn More**: [`Hosting.Adminer`](src/CommunityToolkit.Aspire.Hosting.Adminer/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Adminer](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Adminer)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Adminer/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Adminer](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Adminer?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Adminer/absoluteLatest) | An Aspire hosting integration for the Adminer database management container. | +| - **Learn More**: [`Hosting.Azure.Dapr`](src/CommunityToolkit.Aspire.Hosting.Azure.Dapr/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.Dapr)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Dapr/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Azure.Dapr?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Dapr/absoluteLatest) | Azure Dapr support for Aspire. | +| - **Learn More**: [`Hosting.Azure.Dapr.Redis`](src/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Dapr.Redis/absoluteLatest) | An Aspire hosting integration for configuring Azure Cache for Redis as a Dapr state store or pub/sub component in your AppHost. | +| - **Learn More**: [`Hosting.Azure.DataApiBuilder`](src/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/absoluteLatest) | An Aspire component leveraging the Data API Builder container. | +| - **Learn More**: [`Hosting.Azure.Extensions`](src/CommunityToolkit.Aspire.Hosting.Azure.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Azure.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Azure.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Azure.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Azure.Extensions/absoluteLatest) | Azure extensions support for Aspire. | +| - **Learn More**: [`Hosting.Bitwarden.SecretManager`](src/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager/absoluteLatest) | An Aspire hosting integration for Bitwarden Secrets Manager. | +| - **Learn More**: [`Hosting.Bun`](src/CommunityToolkit.Aspire.Hosting.Bun/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Bun](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Bun)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Bun/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Bun](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Bun?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Bun/absoluteLatest) | ⚠️ **Deprecated** — An Aspire integration for hosting Bun apps. DEPRECATED: Use Aspire.Hosting.JavaScript and builder.AddBunApp(...) instead. This package will be removed in a future release. | +| - **Learn More**: [`Hosting.Dapr`](src/CommunityToolkit.Aspire.Hosting.Dapr/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Dapr](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Dapr)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Dapr/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Dapr](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Dapr?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Dapr/absoluteLatest) | Dapr support for Aspire. | +| - **Learn More**: [`Hosting.DbGate`](src/CommunityToolkit.Aspire.Hosting.DbGate/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.DbGate](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.DbGate)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.DbGate/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.DbGate](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.DbGate?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.DbGate/absoluteLatest) | An Aspire hosting integration for the DbGate database management container. | +| - **Learn More**: [`Hosting.Dbx`](src/CommunityToolkit.Aspire.Hosting.Dbx/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Dbx](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Dbx)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Dbx/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Dbx](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Dbx?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Dbx/absoluteLatest) | An Aspire hosting integration for the Dbx database management container. | +| - **Learn More**: [`Hosting.Deno`](src/CommunityToolkit.Aspire.Hosting.Deno/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Deno](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Deno)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Deno/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Deno](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Deno?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Deno/absoluteLatest) | An Aspire integration for hosting Deno apps. | +| - **Learn More**: [`Hosting.DuckDB`](src/CommunityToolkit.Aspire.Hosting.DuckDB/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.DuckDB](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.DuckDB)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.DuckDB/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.DuckDB](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.DuckDB?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.DuckDB/absoluteLatest) | An Aspire hosting integration for providing a DuckDB database connection. | +| - **Learn More**: [`Hosting.Elasticsearch.Extensions`](src/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/absoluteLatest) | An Aspire hosting integration for extending Elasticsearch resources with additional management tooling. | +| - **Learn More**: [`Hosting.Flagd`](src/CommunityToolkit.Aspire.Hosting.Flagd/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Flagd](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Flagd)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Flagd/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Flagd](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Flagd?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Flagd/absoluteLatest) | flagd is a feature flag evaluation engine. Think of it as a ready-made, open source, OpenFeature-compliant feature flag backend system. | +| - **Learn More**: [`Hosting.Flyway`](src/CommunityToolkit.Aspire.Hosting.Flyway/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Flyway](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Flyway)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Flyway/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Flyway](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Flyway?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Flyway/absoluteLatest) | An Aspire integration for Flyway database migration tool. | +| - **Learn More**: [`Hosting.GoFeatureFlag`](src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.GoFeatureFlag)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.GoFeatureFlag?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/absoluteLatest) | GO Feature Flag support for Aspire. | +| - **Learn More**: [`Hosting.Golang`](src/CommunityToolkit.Aspire.Hosting.Golang/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Golang](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Golang)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Golang](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Golang?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Golang/absoluteLatest) | An Aspire integration for hosting Golang apps. | +| - **Learn More**: [`Hosting.Java`](src/CommunityToolkit.Aspire.Hosting.Java/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Java](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Java)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Java/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Java](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Java?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Java/absoluteLatest) | An Aspire integration for hosting Java apps using either the Java executable or container image. | +| - **Learn More**: [`Hosting.JavaScript.Extensions`](src/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.JavaScript.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.JavaScript.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.JavaScript.Extensions/absoluteLatest) | An Aspire integration for hosting NodeJS apps using Vite, Yarn, PNPM, or NPM. | +| - **Learn More**: [`Hosting.K3s`](src/CommunityToolkit.Aspire.Hosting.K3s/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.K3s](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.K3s)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.K3s/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.K3s](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.K3s?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.K3s/absoluteLatest) | An Aspire hosting integration for k3s. Provides AddK3sCluster, AddHelmRelease (via alpine/helm), AddK8sManifest with Kustomize support (via alpine/kubectl), and AddServiceEndpoint for in-process WebSocket port-forwarding. No host-side kubectl or helm required. | +| - **Learn More**: [`Hosting.k6`](src/CommunityToolkit.Aspire.Hosting.k6/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.k6](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.k6)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.k6/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.k6](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.k6?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.k6/absoluteLatest) | Grafana k6 support for Aspire. | +| - **Learn More**: [`Hosting.Keycloak.Extensions`](src/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Keycloak.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Keycloak.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Keycloak.Extensions/absoluteLatest) | Aspire hosting extensions for Keycloak (includes PostgreSQL integration). | +| - **Learn More**: [`Hosting.KurrentDB`](src/CommunityToolkit.Aspire.Hosting.KurrentDB/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.KurrentDB](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.KurrentDB)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.KurrentDB/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.KurrentDB](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.KurrentDB?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.KurrentDB/absoluteLatest) | KurrentDB support for Aspire. | +| - **Learn More**: [`Hosting.LavinMQ`](src/CommunityToolkit.Aspire.Hosting.LavinMQ/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.LavinMQ)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.LavinMQ/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.LavinMQ?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.LavinMQ/absoluteLatest) | An Aspire hosting package for hosting LavinMQ. | +| - **Learn More**: [`Hosting.Listmonk`](src/CommunityToolkit.Aspire.Hosting.Listmonk/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Listmonk](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Listmonk)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Listmonk/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Listmonk](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Listmonk?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Listmonk/absoluteLatest) | listmonk support for Aspire. | +| - **Learn More**: [`Hosting.Logto`](src/CommunityToolkit.Aspire.Hosting.Logto/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Logto](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Logto)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Logto/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Logto](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Logto?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Logto/absoluteLatest) | .NET Aspire hosting extensions for Logto (includes PostgreSQL and Redis integration). | +| - **Learn More**: [`Hosting.MailPit`](src/CommunityToolkit.Aspire.Hosting.MailPit/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.MailPit](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.MailPit)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MailPit/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MailPit](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.MailPit?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MailPit/absoluteLatest) | An Aspire component leveraging the MailPit container. | +| - **Learn More**: [`Hosting.McpInspector`](src/CommunityToolkit.Aspire.Hosting.McpInspector/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.McpInspector](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.McpInspector)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.McpInspector/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.McpInspector](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.McpInspector?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.McpInspector/absoluteLatest) | An Aspire hosting integration to run the MCP Inspector against a Model Context Protocol (MCP) server. | +| - **Learn More**: [`Hosting.Meilisearch`](src/CommunityToolkit.Aspire.Hosting.Meilisearch/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Meilisearch](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Meilisearch)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Meilisearch/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Meilisearch](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Meilisearch?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Meilisearch/absoluteLatest) | Meilisearch support for Aspire. | +| - **Learn More**: [`Hosting.Minio`](src/CommunityToolkit.Aspire.Hosting.Minio/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Minio](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Minio)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Minio/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Minio](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Minio?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Minio/absoluteLatest) | ⚠️ **Deprecated** — An Aspire hosting integration for MinIO. DEPRECATED: The MinIO OSS project has been archived and is no longer maintained. This integration is deprecated and will be removed in a future version. | +| - **Learn More**: [`Hosting.MongoDB.Extensions`](src/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.MongoDB.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MongoDB.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MongoDB.Extensions/absoluteLatest) | An Aspire hosting integration for extending MongoDB resources with additional management tooling. | +| - **Learn More**: [`Hosting.MySql.Extensions`](src/CommunityToolkit.Aspire.Hosting.MySql.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.MySql.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.MySql.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MySql.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MySql.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.MySql.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MySql.Extensions/absoluteLatest) | An Aspire hosting integration for extending MySQL resources with additional management tooling. | +| - **Learn More**: [`Hosting.Ngrok`](src/CommunityToolkit.Aspire.Hosting.Ngrok/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Ngrok](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Ngrok)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ngrok/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Ngrok](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Ngrok?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ngrok/absoluteLatest) | An Aspire integration for exposing hosted applications via secure, public URLs using ngrok. | +| - **Learn More**: [`Hosting.Ollama`](src/CommunityToolkit.Aspire.Hosting.Ollama/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Ollama](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Ollama)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ollama/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Ollama](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Ollama?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Ollama/absoluteLatest) | An Aspire integration leveraging the Ollama container with support for downloading a model on startup. | +| - **Learn More**: [`Hosting.OpenTelemetryCollector`](src/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.OpenTelemetryCollector/absoluteLatest) | An Aspire hosting integration to add an OpenTelemetry Collector into the OTLP pipeline. | +| - **Learn More**: [`Hosting.PapercutSmtp`](src/CommunityToolkit.Aspire.Hosting.PapercutSmtp/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.PapercutSmtp](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.PapercutSmtp)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PapercutSmtp/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.PapercutSmtp](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.PapercutSmtp?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PapercutSmtp/absoluteLatest) | An Aspire component leveraging Papercut SMTP container. | +| - **Learn More**: [`Hosting.Perl`](src/CommunityToolkit.Aspire.Hosting.Perl/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Perl](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Perl)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Perl/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Perl](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Perl?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Perl/absoluteLatest) | An Aspire hosting integration for hosting Perl apps. | +| - **Learn More**: [`Hosting.PostgreSQL.Extensions`](src/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions/absoluteLatest) | An Aspire hosting integration for extending PostgreSQL resources with additional management tooling. | +| - **Learn More**: [`Hosting.PowerShell`](src/CommunityToolkit.Aspire.Hosting.PowerShell/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.PowerShell](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.PowerShell)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PowerShell/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.PowerShell](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.PowerShell?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.PowerShell/absoluteLatest) | Run powershell scripts in-process with your Aspire AppHost, injecting aspire resources and/or object instances as variables, using the command lines tools of your choice like azure cli, azd, or any other terminal tools. | +| - **Learn More**: [`Hosting.Python.Extensions`](src/CommunityToolkit.Aspire.Hosting.Python.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Python.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Python.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Python.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Python.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Python.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Python.Extensions/absoluteLatest) | ⚠️ **Deprecated** — An Aspire integration for hosting Uvicorn apps. | +| - **Learn More**: [`Hosting.RavenDB`](src/CommunityToolkit.Aspire.Hosting.RavenDB/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.RavenDB)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RavenDB/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.RavenDB?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RavenDB/absoluteLatest) | An Aspire integration leveraging the RavenDB container. | +| - **Learn More**: [`Hosting.Redis.Extensions`](src/CommunityToolkit.Aspire.Hosting.Redis.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Redis.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Redis.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Redis.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Redis.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Redis.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Redis.Extensions/absoluteLatest) | An Aspire hosting integration for extending Redis resources with additional management tooling. | +| - **Learn More**: [`Hosting.Rust`](src/CommunityToolkit.Aspire.Hosting.Rust/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Rust](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Rust)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Rust/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Rust](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Rust?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Rust/absoluteLatest) | An Aspire integration for hosting Rust apps. | +| - **Learn More**: [`Hosting.RustFs`](src/CommunityToolkit.Aspire.Hosting.RustFs/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.RustFs](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.RustFs)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RustFs/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.RustFs](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.RustFs?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RustFs/absoluteLatest) | An Aspire hosting integration for the RustFS S3-compatible object storage container. | +| - **Learn More**: [`Hosting.SeaweedFS`](src/CommunityToolkit.Aspire.Hosting.SeaweedFS/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SeaweedFS](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.SeaweedFS)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SeaweedFS/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SeaweedFS](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.SeaweedFS?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SeaweedFS/absoluteLatest) | Provides extension methods and resource definitions for the Aspire AppHost to support running SeaweedFS containers with an S3-compatible API. | +| - **Learn More**: [`Hosting.Sftp`](src/CommunityToolkit.Aspire.Hosting.Sftp/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Sftp](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Sftp)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Sftp/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Sftp](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Sftp?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Sftp/absoluteLatest) | Aspire hosting integration for the atmoz SFTP container image. | +| - **Learn More**: [`Hosting.Solr`](src/CommunityToolkit.Aspire.Hosting.Solr/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Solr](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Solr)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Solr/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Solr](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Solr?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Solr/absoluteLatest) | An Aspire hosting integration for Apache Solr. | +| - **Learn More**: [`Hosting.SqlDatabaseProjects`](src/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects/absoluteLatest) | An Aspire hosting integration capable of deploying SQL Server Database Projects as part of your AppHost. | +| - **Learn More**: [`Hosting.Sqlite`](src/CommunityToolkit.Aspire.Hosting.Sqlite/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Sqlite](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Sqlite)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Sqlite/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Sqlite](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Sqlite?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Sqlite/absoluteLatest) | An Aspire hosting integration for providing a Sqlite database connection. | +| - **Learn More**: [`Hosting.SqlServer.Extensions`](src/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SqlServer.Extensions](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SqlServer.Extensions](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SqlServer.Extensions/absoluteLatest) | An Aspire hosting integration for extending SQL Server resources with additional management tooling. | +| - **Learn More**: [`Hosting.Squad`](src/CommunityToolkit.Aspire.Hosting.Squad/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Squad](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Squad)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Squad/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Squad](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Squad?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Squad/absoluteLatest) | An Aspire hosting integration for Squad AI-agent teams. Models a `.squad/` workspace as a first-class Aspire resource that auto-discovers the team roster and exposes it via WithReference for downstream services. | +| - **Learn More**: [`Hosting.Stripe`](src/CommunityToolkit.Aspire.Hosting.Stripe/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Stripe](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Stripe)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Stripe/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Stripe](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Stripe?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Stripe/absoluteLatest) | An Aspire integration for the Stripe CLI for local webhook forwarding and testing. | +| - **Learn More**: [`Hosting.SurrealDb`](src/CommunityToolkit.Aspire.Hosting.SurrealDb/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.SurrealDb](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.SurrealDb)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SurrealDb/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.SurrealDb](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.SurrealDb?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.SurrealDb/absoluteLatest) | SurrealDB support for Aspire. | +| - **Learn More**: [`Hosting.Umami`](src/CommunityToolkit.Aspire.Hosting.Umami/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Umami](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Umami)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Umami/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Umami](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Umami?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Umami/absoluteLatest) | Umami support for Aspire. | +| - **Learn More**: [`Hosting.Zitadel`](src/CommunityToolkit.Aspire.Hosting.Zitadel/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.Zitadel](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.Zitadel)](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Zitadel/)
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Zitadel](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.Zitadel?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.Zitadel/absoluteLatest) | An Aspire hosting integration for the ZITADEL identity and access management container. | +| - **Learn More**: [`KurrentDB`](src/CommunityToolkit.Aspire.KurrentDB/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.KurrentDB](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.KurrentDB)](https://nuget.org/packages/CommunityToolkit.Aspire.KurrentDB/)
- Preview 📦: [![CommunityToolkit.Aspire.KurrentDB](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.KurrentDB?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.KurrentDB/absoluteLatest) | A KurrentDB client that integrates with Aspire, including health checks, logging, and telemetry. | +| - **Learn More**: [`Logto.Client`](src/CommunityToolkit.Aspire.Logto.Client/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Logto.Client](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Logto.Client)](https://nuget.org/packages/CommunityToolkit.Aspire.Logto.Client/)
- Preview 📦: [![CommunityToolkit.Aspire.Logto.Client](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Logto.Client?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Logto.Client/absoluteLatest) | An Aspire client integration for Logto that registers OpenID Connect (OIDC) or JWT authentication services in the dependency injection container. | +| - **Learn More**: [`MassTransit.RabbitMQ`](src/CommunityToolkit.Aspire.MassTransit.RabbitMQ/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.MassTransit.RabbitMQ](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.MassTransit.RabbitMQ)](https://nuget.org/packages/CommunityToolkit.Aspire.MassTransit.RabbitMQ/)
- Preview 📦: [![CommunityToolkit.Aspire.MassTransit.RabbitMQ](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.MassTransit.RabbitMQ?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.MassTransit.RabbitMQ/absoluteLatest) | An Aspire client integration for MassTransit RabbitMQ. | +| - **Learn More**: [`Meilisearch`](src/CommunityToolkit.Aspire.Meilisearch/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Meilisearch](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Meilisearch)](https://nuget.org/packages/CommunityToolkit.Aspire.Meilisearch/)
- Preview 📦: [![CommunityToolkit.Aspire.Meilisearch](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Meilisearch?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Meilisearch/absoluteLatest) | A Meilisearch client that integrates with Aspire, including health checks, logging, and telemetry. | +| - **Learn More**: [`Microsoft.Data.Sqlite`](src/CommunityToolkit.Aspire.Microsoft.Data.Sqlite/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Microsoft.Data.Sqlite](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Microsoft.Data.Sqlite)](https://nuget.org/packages/CommunityToolkit.Aspire.Microsoft.Data.Sqlite/)
- Preview 📦: [![CommunityToolkit.Aspire.Microsoft.Data.Sqlite](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Microsoft.Data.Sqlite?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Microsoft.Data.Sqlite/absoluteLatest) | An Aspire client integration for the Microsoft.Data.Sqlite.Core package. | +| - **Learn More**: [`Microsoft.EntityFrameworkCore.Sqlite`](src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite)](https://nuget.org/packages/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/)
- Preview 📦: [![CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/absoluteLatest) | An Aspire client integration for the Microsoft.EntityFrameworkCore.Sqlite package. | +| - **Learn More**: [`Minio.Client`](src/CommunityToolkit.Aspire.Minio.Client/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Minio.Client](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Minio.Client)](https://nuget.org/packages/CommunityToolkit.Aspire.Minio.Client/)
- Preview 📦: [![CommunityToolkit.Aspire.Minio.Client](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Minio.Client?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Minio.Client/absoluteLatest) | ⚠️ **Deprecated** — An Aspire client integration for MinIO. DEPRECATED: The MinIO OSS project has been archived and is no longer maintained. This integration is deprecated and will be removed in a future version. | +| - **Learn More**: [`OllamaSharp`](src/CommunityToolkit.Aspire.OllamaSharp/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.OllamaSharp](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.OllamaSharp)](https://nuget.org/packages/CommunityToolkit.Aspire.OllamaSharp/)
- Preview 📦: [![CommunityToolkit.Aspire.OllamaSharp](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.OllamaSharp?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.OllamaSharp/absoluteLatest) | An Aspire client integration for the OllamaSharp library. | +| - **Learn More**: [`RavenDB.Client`](src/CommunityToolkit.Aspire.RavenDB.Client/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.RavenDB.Client](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.RavenDB.Client)](https://nuget.org/packages/CommunityToolkit.Aspire.RavenDB.Client/)
- Preview 📦: [![CommunityToolkit.Aspire.RavenDB.Client](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.RavenDB.Client?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.RavenDB.Client/absoluteLatest) | An Aspire client integration for the RavenDB.Client library. | +| - **Learn More**: [`SeaweedFS.Client`](src/CommunityToolkit.Aspire.SeaweedFS.Client/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.SeaweedFS.Client](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.SeaweedFS.Client)](https://nuget.org/packages/CommunityToolkit.Aspire.SeaweedFS.Client/)
- Preview 📦: [![CommunityToolkit.Aspire.SeaweedFS.Client](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.SeaweedFS.Client?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.SeaweedFS.Client/absoluteLatest) | An Aspire client integration for SeaweedFS using the AWSSDK.S3 client. | +| - **Learn More**: [`Sftp`](src/CommunityToolkit.Aspire.Sftp/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.Sftp](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Sftp)](https://nuget.org/packages/CommunityToolkit.Aspire.Sftp/)
- Preview 📦: [![CommunityToolkit.Aspire.Sftp](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Sftp?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.Sftp/absoluteLatest) | An SFTP client that integrates with Aspire, including health checks, logging, and telemetry. | +| - **Learn More**: [`SurrealDb`](src/CommunityToolkit.Aspire.SurrealDb/README.md)
- Stable 📦: [![CommunityToolkit.Aspire.SurrealDb](https://img.shields.io/nuget/v/CommunityToolkit.Aspire.SurrealDb)](https://nuget.org/packages/CommunityToolkit.Aspire.SurrealDb/)
- Preview 📦: [![CommunityToolkit.Aspire.SurrealDb](https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.SurrealDb?label=nuget%20(preview))](https://nuget.org/packages/CommunityToolkit.Aspire.SurrealDb/absoluteLatest) | A SurrealDB client that integrates with Aspire, including health checks, logging, and telemetry. | + ## 🙌 Getting Started diff --git a/eng/scripts/generate-readme-integrations.cs b/eng/scripts/generate-readme-integrations.cs new file mode 100644 index 000000000..5c1248f3a --- /dev/null +++ b/eng/scripts/generate-readme-integrations.cs @@ -0,0 +1,229 @@ +using System.Diagnostics; +using System.Text; +using System.Text.RegularExpressions; +using System.Xml.Linq; + +const string TableStart = ""; +const string TableEnd = ""; + +bool checkOnly = args.Contains("--check", StringComparer.OrdinalIgnoreCase); +string repoRoot = FindRepoRoot(); +string readmePath = Path.Combine(repoRoot, "README.md"); + +List integrations = LoadIntegrations(repoRoot); +string table = RenderTable(integrations); + +string existing = File.ReadAllText(readmePath); +string updated = UpdateReadme(existing, table); + +if (checkOnly) +{ + if (!string.Equals(existing, updated, StringComparison.Ordinal)) + { + Console.WriteLine("README integrations table is out of date."); + Console.WriteLine("Run: dotnet run eng/scripts/generate-readme-integrations.cs"); + Console.WriteLine(CreateDiff(existing, updated)); + return 1; + } + + Console.WriteLine("README integrations table is up to date."); + return 0; +} + +if (!string.Equals(existing, updated, StringComparison.Ordinal)) +{ + File.WriteAllText(readmePath, updated); + Console.WriteLine("Updated README integrations table."); +} +else +{ + Console.WriteLine("README integrations table already up to date."); +} + +return 0; + +static string FindRepoRoot() +{ + string? current = Directory.GetCurrentDirectory(); + + while (current is not null) + { + if (File.Exists(Path.Combine(current, "README.md")) && + Directory.Exists(Path.Combine(current, "src"))) + { + return current; + } + + DirectoryInfo? parent = Directory.GetParent(current); + current = parent?.FullName; + } + + throw new InvalidOperationException("Unable to locate repository root."); +} + +static List LoadIntegrations(string repoRoot) +{ + List integrations = []; + Regex deprecationRegex = new(@"\bdeprecation notice\b|\bthis (?:package|integration) is deprecated(?:\b| as of)", RegexOptions.IgnoreCase); + + IEnumerable projectFiles = Directory.EnumerateFiles( + Path.Combine(repoRoot, "src"), + "CommunityToolkit.Aspire*.csproj", + SearchOption.AllDirectories); + + foreach (string projectPath in projectFiles.OrderBy(static path => path, StringComparer.OrdinalIgnoreCase)) + { + XDocument project = XDocument.Load(projectPath); + string packageId = ReadProperty(project, "PackageId") ?? Path.GetFileNameWithoutExtension(projectPath); + string? description = ReadProperty(project, "Description"); + if (string.IsNullOrWhiteSpace(description)) + { + continue; + } + + string readmePath = Path.Combine(Path.GetDirectoryName(projectPath)!, "README.md"); + string readmeRelativePath = File.Exists(readmePath) + ? Path.GetRelativePath(repoRoot, readmePath).Replace('\\', '/') + : string.Empty; + + bool deprecated = false; + if (File.Exists(readmePath)) + { + string readmeText = File.ReadAllText(readmePath); + deprecated = deprecationRegex.IsMatch(readmeText); + } + + string normalizedDescription = description.Replace("|", "\\|", StringComparison.Ordinal); + if (deprecated) + { + normalizedDescription = $"⚠️ **Deprecated** — {normalizedDescription}"; + } + + string shortName = packageId.StartsWith("CommunityToolkit.Aspire.", StringComparison.Ordinal) + ? packageId["CommunityToolkit.Aspire.".Length..] + : packageId; + + integrations.Add(new Integration(packageId, shortName, normalizedDescription, readmeRelativePath)); + } + + return integrations.OrderBy(static integration => integration.PackageId, StringComparer.OrdinalIgnoreCase).ToList(); +} + +static string? ReadProperty(XDocument project, string propertyName) +{ + foreach (XElement element in project.Descendants()) + { + if (string.Equals(element.Name.LocalName, propertyName, StringComparison.Ordinal)) + { + string value = element.Value.Trim(); + if (!string.IsNullOrEmpty(value)) + { + return value; + } + } + } + + return null; +} + +static string RenderTable(List integrations) +{ + StringBuilder lines = new(); + lines.Append("| Package | Description |\n"); + lines.Append("| --- | --- |"); + + foreach (Integration integration in integrations) + { + string docsLink = string.IsNullOrEmpty(integration.ReadmePath) ? "#" : integration.ReadmePath; + string package = integration.PackageId; + string cell = string.Join("
", new[] + { + $"- **Learn More**: [`{integration.ShortName}`]({docsLink})", + $"- Stable 📦: [![{package}](https://img.shields.io/nuget/v/{package})](https://nuget.org/packages/{package}/)", + $"- Preview 📦: [![{package}](https://img.shields.io/nuget/vpre/{package}?label=nuget%20(preview))](https://nuget.org/packages/{package}/absoluteLatest)" + }); + + lines.Append('\n'); + lines.Append($"| {cell} | {integration.Description} |"); + } + + return lines.ToString(); +} + +static string UpdateReadme(string content, string table) +{ + string block = $"{TableStart}\n{table}\n{TableEnd}"; + + if (content.Contains(TableStart, StringComparison.Ordinal) && content.Contains(TableEnd, StringComparison.Ordinal)) + { + Regex pattern = new($"{Regex.Escape(TableStart)}.*?{Regex.Escape(TableEnd)}", RegexOptions.Singleline); + return pattern.Replace(content, block, 1); + } + + int tableStart = content.IndexOf("| Package", StringComparison.Ordinal); + int sectionStart = content.IndexOf("\n## 🙌 Getting Started", StringComparison.Ordinal); + if (tableStart < 0) + { + throw new InvalidOperationException("Unable to locate '| Package' header in README.md"); + } + + if (sectionStart < 0) + { + throw new InvalidOperationException("Unable to locate '## 🙌 Getting Started' section in README.md"); + } + + if (sectionStart <= tableStart) + { + throw new InvalidOperationException("Integrations table appears after the getting started section in README.md"); + } + + return string.Concat(content.AsSpan(0, tableStart), block, "\n", content.AsSpan(sectionStart)); +} + +static string CreateDiff(string existing, string updated) +{ + string tempDirectory = Path.Combine(Path.GetTempPath(), "readme-integrations-diff-" + Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(tempDirectory); + + string existingPath = Path.Combine(tempDirectory, "README.md"); + string generatedPath = Path.Combine(tempDirectory, "README.generated.md"); + File.WriteAllText(existingPath, existing); + File.WriteAllText(generatedPath, updated); + + try + { + ProcessStartInfo startInfo = new() + { + FileName = "git", + ArgumentList = { "diff", "--no-index", "--", existingPath, generatedPath }, + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false + }; + + using Process? process = Process.Start(startInfo); + if (process is null) + { + return "(Unable to create diff output.)"; + } + + string output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + if (string.IsNullOrWhiteSpace(output)) + { + string fallback = process.StandardError.ReadToEnd(); + return string.IsNullOrWhiteSpace(fallback) ? "(Unable to create diff output.)" : fallback; + } + + return output + .Replace(existingPath, "README.md", StringComparison.Ordinal) + .Replace(generatedPath, "README.md (generated)", StringComparison.Ordinal); + } + finally + { + Directory.Delete(tempDirectory, recursive: true); + } +} + +internal sealed record Integration(string PackageId, string ShortName, string Description, string ReadmePath);