-
Notifications
You must be signed in to change notification settings - Fork 846
Closed
Labels
area-integrationsIssues pertaining to Aspire Integrations packagesIssues pertaining to Aspire Integrations packagesarea-polyglotIssues related to polyglot apphostsIssues related to polyglot apphosts
Milestone
Description
Epic: TypeScript AppHost - Complete Integration Support
Summary
Enable TypeScript AppHosts to use all Aspire integrations by adding [AspireExport] attributes across the entire integration surface and filling gaps in core framework type capabilities.
Background
The TypeScript AppHost infrastructure is complete:
- ✅ ATS capability scanner discovers
[AspireExport]attributes - ✅ JSON-RPC protocol for guest/host communication
- ✅ TypeScript code generation, runtime SDK, fluent async chaining
- ✅ Reference expressions, callbacks, handle registry, collection wrappers
- ✅ CLI integration (
aspire new/init --language typescript,aspire run, hot reload) - ✅ Core integrations: Redis, PostgreSQL, JavaScript already exported
Remaining work:
- ~40 integrations are inaccessible to TypeScript AppHosts (no
[AspireExport]) - Core framework types have gaps (IConfiguration, IServiceProvider limited)
- No documentation for TypeScript AppHost developers
Part 2: Core Framework Types (Gaps)
IConfiguration
-
getSection(key)→ returnsIConfigurationSectionhandle -
getChildren()→ returns array of section keys -
exists(key)→ boolean check - Export
IConfigurationSectiontype with properties
IHostEnvironment
-
contentRootPath,applicationNameproperty getters -
isProduction(),isStaging(),isEnvironment(name)capabilities
IServiceProvider
- Expand
s_serviceTypesdictionary with common services -
hasService(typeId)capability
Logging
- Export
ILogger/ILoggerFactory -
logInformation,logWarning,logErrorcapabilities
Eventing
-
subscribeBeforeStart,subscribeAfterResourcesCreated,subscribeBeforeResourceStartedcallbacks - Resolve IServiceProvider callback exposure blocker
User secrets management
-
dotnet user-secrets initfor instance is documented Warn when persistent containers lack user secrets configuration #14491 (comment)
Part 3: Integration Exports
Per-Integration Checklist
For each integration:
- Add
[AspireExport]to allAdd*,With*,Run*/As*extension methods - Add
[AspireExport]to resource types - Add
[AspireDto]to options/configuration classes - Handle method overloads with unique IDs
- Test TypeScript code generation
Phase 1: High Priority (>500K Downloads)
- Aspire.Hosting.PostgreSQL (3.0M) - Add polyglot exports for PostgreSQL #14777
- Aspire.Hosting.SqlServer (2.6M) — Create Aspire.Hosting.SqlServer exports #14239
- Aspire.Hosting.Azure.Storage (1.9M) — Add AspireExport coverage for Aspire.Hosting.Azure.Storage #14420
- Aspire.Hosting.RabbitMQ (1.1M) — Add AspireExport attributes to Aspire.Hosting.RabbitMQ #14433
- Aspire.Hosting.Azure.KeyVault (886K) Add AspireExport coverage for Azure KeyVault hosting integration #14439
- Aspire.Hosting.Azure.ServiceBus (585K) Add AspireExport coverage for Aspire.Hosting.Azure.ServiceBus #14665
- Aspire.Hosting.Azure.Functions (510K) Add polyglot exports for Azure Functions #14672
- Aspire.Hosting.Azure.OperationalInsights (507K) Add polyglot support for Azure OperationalInsights #14701
Phase 2: Medium-High Priority (200K-500K Downloads)
- Aspire.Hosting.Azure.CosmosDB (473K) Add polyglot support for CosmosDB #14711
- Aspire.Hosting.Azure.CognitiveServices (414K) Add polyglot exports for CognitiveServices #14709
- Aspire.Hosting.Kafka (387K) Add polyglot exports for Kafka #14750
- Aspire.Hosting.Azure.ApplicationInsights (387K) Add polyglot exports for ApplicationInsights #14751
- Aspire.Hosting.MongoDB (324K) Add polyglot exports for MongoDB #14752
- Aspire.Hosting.Azure.AppContainers (327K) Add polyglot exports for AppContainers #14758
- Aspire.Hosting.Azure.Sql (317K) Add polyglot exports for Azure Sql #14782
- Aspire.Hosting.Azure.PostgreSQL (230K) Add polyglot exports for Azure PostgreSQL #14787
- Aspire.Hosting.Azure.Redis (227K) Add polyglot exports for Aspire.Hosting.Azure.Redis #14889
Phase 3: Medium Priority (100K-200K Downloads)
- Aspire.Hosting.Seq (194K) Add polyglot exports for Aspire.Hosting.Seq #14890
- Aspire.Hosting.Orleans (172K) Add polyglot exports for Aspire.Hosting.Orleans #14891
- Aspire.Hosting.Azure.AppConfiguration (161K) Add polyglot exports for Aspire.Hosting.Azure.AppConfiguration #14892
- Aspire.Hosting.MySql (154K) Add polyglot exports for Aspire.Hosting.MySql #14893
- Aspire.Hosting.Azure.EventHubs (141K) Add polyglot exports for Aspire.Hosting.Azure.EventHubs #14894
- Aspire.Hosting.Valkey (140K) Add polyglot exports for Aspire.Hosting.Valkey #14895
- Aspire.Hosting.Azure.Search (125K) Add polyglot exports for Aspire.Hosting.Azure.Search #14896
- Aspire.Hosting.Python (118K) Add polyglot exports for Aspire.Hosting.Python #14960
Phase 4: Lower Priority (50K-100K Downloads)
- Aspire.Hosting.Qdrant (89K) Add polyglot exports for Aspire.Hosting.Qdrant #14899
- Aspire.Hosting.Azure.SignalR (84K) Add polyglot exports for Aspire.Hosting.Azure.SignalR #14900
- Aspire.Hosting.Yarp (72K) Add polyglot exports for Aspire.Hosting.Yarp #14901
- Aspire.Hosting.Nats (53K) Add polyglot exports for Aspire.Hosting.Nats #14902
Phase 5: Lowest Priority (<50K Downloads)
- Aspire.Hosting.Azure.ContainerRegistry (48K) Add polyglot exports for Aspire.Hosting.Azure.ContainerRegistry #14903
- Aspire.Hosting.Garnet (43K) Add polyglot exports for Aspire.Hosting.Garnet #14904
- Aspire.Hosting.DevTunnels (42K) Add polyglot exports for Aspire.Hosting.DevTunnels #14905
- Aspire.Hosting.Oracle (30K) Add polyglot exports for Aspire.Hosting.Oracle #14906
- Aspire.Hosting.Azure.WebPubSub (20K) Add polyglot exports for Aspire.Hosting.Azure.WebPubSub #14907
- Aspire.Hosting.OpenAI (16K) Add polyglot exports for Aspire.Hosting.OpenAI #14908
- Aspire.Hosting.Milvus (8K) Add polyglot exports for Aspire.Hosting.Milvus #14909
- Aspire.Hosting.GitHub.Models (7K) Add polyglot exports for Aspire.Hosting.GitHub.Models #14910
Part 3: Documentation
- Getting started guide for TypeScript AppHost
- TypeScript AppHost API reference
- Integration usage examples (per-integration TypeScript samples)
- Migration guide from C# AppHost to TypeScript
- Troubleshooting / FAQ for TypeScript AppHost
Part 4: Extensibility for Integration Authors
- ATS capability scanner detects
[AspireExport]by attribute name (not just type), so third-party authors don't need a package reference Switch ATS attribute discovery to name-based matching for third-party support #14977 -
[AspireExport]and[AspireDto]attributes available in a public NuGet package - Documentation for integration authors on how to annotate their APIs
- SDK generation works for third-party integration libraries (not just built-in)
- End-to-end sample: custom integration with
[AspireExport]→ TypeScript SDK generated → used in TypeScript AppHost
Part 5: Polyglot-Compatible Integration Discovery
- NuGet package metadata / marker that identifies a package as polyglot-compatible (has
[AspireExport]coverage) -
aspire addfilters and surfaces only polyglot-compatible integrations when used in a TypeScript AppHost - Clear indication in CLI output when an integration is not available for TypeScript
Success Criteria
- All Phase 1-3 integrations (25 packages) have full
[AspireExport]coverage - Core framework types are fully usable from TypeScript
- Can install the Aspire CLI and use a TypeScript AppHost without .NET SDK installed
-
aspire runworks end-to-end with TypeScript AppHost -
aspire doworks end-to-end with TypeScript AppHost -
aspire publishworks end-to-end with TypeScript AppHost -
aspire deployworks end-to-end with TypeScript AppHost - Sample TypeScript AppHost apps demonstrate all major integrations Type script app host dotnet/eShop#974
Out of Scope
- Testing support for TypeScript AppHosts — Spec:
docs/specs/polyglot-apphost-testing.md
Related
- Proposal: Generic AppHost Architecture and Guest/Host API Decoupling #11562 — Proposal: Generic AppHost Architecture and Guest/Host API Decoupling
- aspire-managed unified binary + native certificate management #14441 — aspire-managed unified binary + native certificate management
- Spec:
docs/specs/polyglot-apphost.md
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area-integrationsIssues pertaining to Aspire Integrations packagesIssues pertaining to Aspire Integrations packagesarea-polyglotIssues related to polyglot apphostsIssues related to polyglot apphosts